📄 pm_pc_entry_b1.pas
字号:
unit Pm_Pc_Entry_B1;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Entry_Body, Db, ActnList, AdODB, Grids, DBGridEh, StdCtrls,
ExtCtrls, ComCtrls, ToolWin, ExtEdit, DBCtrls, Mask, ExtPrintReport,
linkedit, jpeg;
Type
TFrm_Pm_Pc_Entry_B1 = Class(TFrm_Base_Entry_Body)
Label2: TLabel;
Label3: TLabel;
Label5: TLabel;
Edt_RemArk: TEdit;
Label7: TLabel;
DBTxt_ItemName: TDBText;
Label8: TLabel;
Lbl_Currency: TLabel;
ActionList1: TActionList;
Label9: TLabel;
MEdt_BillDate: TMaskEdit;
Lbl_TaxRate: TLabel;
ExtEdt_VendorCode: TLinkEdit;
Lbl_VendorName: TLabel;
Edt_VendorName: TEdit;
Edt_CurrencyName: TEdit;
Edt_TaxRate: TEdit;
Edt_CurrencyCode: TEdit;
procedure FormCreate(Sender: TObject);
procedure Act_DeleteLineExecute(Sender: TObject);
procedure ExtEdt_VendorCodeChange(Sender: TObject);
procedure IntegerCheck(Sender: TObject);
procedure AdoQueryAfterOpen(DataSet: TDataSet);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Act_PreviewExecute(Sender: TObject);
procedure DBGridEhGetCellParams(Sender: TObject; Column: TColumnEh;
AFont: TFont; var Background: TColor; State: TGridDrawState);
procedure Act_SaveExecute(Sender: TObject);
procedure Act_ModifyExecute(Sender: TObject);
procedure Act_InsertLineExecute(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Act_FilterExecute(Sender: TObject);
private
deleteflag:boolean;
{ Private declarations }
public
status1:string;
{ Public declarations }
procedure InitReport; Override;
procedure SetStatus(CurrentStatus:String;var AnswerStatus,
EnableControls:String); Override;//设置各种状态下那些控件Enable
procedure InitControls; Override;//初始化Form上所有控件
procedure SaveHeadData; Override;//把表头控件值写入缓存,不要Post
procedure SaveData; Override;//把表头控件写入缓存,不要Post
end;
var
Frm_Pm_Pc_Entry_B1: TFrm_Pm_Pc_Entry_B1;
implementation
uses Pm_Pc_Entry_D,Sys_Global;
{$R *.DFM}
{ TFrm_Pm_Pc_Entry_D }
procedure TFrm_Pm_Pc_Entry_B1.InitControls;
var
Bill_ID:String;
begin
status1:=status;
if (showflag=False) and (status1<>'Query') then
begin
deleteflag:=True;
try
if deleteflag then
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Drop Table #PcLine';
AdoQry_Tmp.ExecSQL;
end;
except
end;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Create Table #PcLine ('
+' [PcNo] [varchAr] (16) NULL'
+',[ItemCode] [varchAr] (16) NULL'
+',[PcTaxPrice] [float] NULL'
+',[PcNoTaxPrice] [float] NULL'
+',[PcStArtDate] [smalldatetime] NULL'
+',[PcendDate] [smalldatetime] NULL'
+',[PcStArtQty] [float] NULL'
+',[PcendQty] [float] NULL'
+',[PcPriceType] [int] NULL'
// +',[PCReferencedPrice] [int] NULL'
+',[PcTaxPrice_Formal] [float] NULL'
+',[PcNoTaxPrice_Formal] [float] NULL'
+',[ReferencePricePass] [int] NULL'
+',[FormalPricePass] [int] NULL'
+')';
AdoQry_Tmp.ExecSQL;
end;
if status='Edit' then status1:='Add';
if Status1='Add' then
SetFocus_Control:=MEdt_BillDate//ExtEdt_VendorCode
else
SetFocus_Control:=Edt_RemArk;
ExtendCaption:=False;
inherited;
if Status1='ReadOnly' then
begin
Caption:='采购价格表查询';
Pnl_Title.Caption:='采购价格表查询';
end
else
begin
deleteflag:=True;
Caption:='采购价格表';
Pnl_Title.Caption:='采购价格表';
end;
if Status<>'Add' then
Bill_ID:=AdoQry_Head.fieldbyname('PcNo').AsString
else
Bill_ID:='';
PriceFields:='PcTaxPrice,PcNoTaxPrice,';
AdoQry_Body.Close;
AdoQry_Body.SQL.Text:='Select pcline.PcNo'
+',PcLine.PcLineId'
+',PcLine.ItemCode'
+',Item.ItemName'
+',PcLine.PcLineStatus'
+',Uom.UomName'
+',PcLine.PcTaxPrice'
+',PcLine.PcNoTaxPrice'
+',PcLine.PcStArtDate'
+',PcLine.PcendDate'
+',PcLine.PcStArtQty'
+',PcLine.PcendQty'
+',PcLine.PcPriceType'
+',PcLine.PcTaxPrice_Formal '
+',PcLine.PcNoTaxPrice_Formal '
+',PcLine.ReferencePricePass '
+',PcLine.FormalPricePass '
// +',PcLine.PCReferencedPrice'
+' From PcLine left Join Item On PcLine.ItemCode=Item.ItemCode'
+' Left Outer Join Uom On Item.UomCode=Uom.UomCode'
+' Where PcLine.PcNo='''+Bill_ID+''''
// +iifstring(chb_Overdue.Checked,'',' and pcline.pcenddate>=getdate() ');
;
AdoQry_Body.Open;
AdoQry_Body.Sort:='ItemCode,PcStArtDate,PcStArtQty';
// Bill_id:='';
// status1:='Add';
with AdoQry_Head do
begin
// Edt_PcNo.Text:=Bill_ID;
// if status1='Add' then edt_Pcno.Text:='';
ExtEdt_VendorCode.Text:=fieldbyname('VendorCode').AsString;
Lbl_VendorName.Caption:=fieldbyname('VendorName').AsString;
Edt_VendorName.Text :=fieldbyname('VendorName').AsString;
if Status1='Add' then
MEdt_BillDate.Text:=FormatDateTime('yyyy.mm.dd',Now)
else
MEdt_BillDate.Text:=fieldbyname('PCDate').AsString;
Lbl_Currency.Caption:=fieldbyname('CurrencyCode').AsString+' '
+fieldbyname('CurrencyName').AsString;
Lbl_TaxRate.Caption:=fieldbyname('PCTaxRate_Percent').AsString;
Edt_CurrencyName.Text := fieldbyname('CurrencyName').AsString;
Edt_TaxRate.Text :=fieldbyname('PCTaxRate_Percent').AsString;
Edt_RemArk.Text:=fieldbyname('RemArk').AsString;
end;
try
if deleteflag then
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Delete #PcLine';
AdoQry_Tmp.ExecSQL;
end;
except
end;
if status<>'ReadOnly' then
begin
// edt_Pcno.Enabled:=True;
medt_Billdate.Enabled:=True;
edt_remArk.Enabled:=True;
end;
Edt_VendorName.Enabled := False;
Edt_CurrencyCode.Enabled := False;
Edt_CurrencyName.Enabled := False;
Edt_TaxRate.Enabled := False;
end;
procedure TFrm_Pm_Pc_Entry_B1.SaveHeadData;
begin
inherited;
with AdoQry_Head do
begin
fieldbyname('VendorCode').AsString:=ExtEdt_VendorCode.Text;
fieldbyname('VendorName').AsString:=Edt_VendorName.Text;
fieldbyname('PCTaxRate_Percent').AsString:=Edt_TaxRate.Text;
fieldbyname('CurrencyCode').AsString:=GetCode(Lbl_Currency.Caption);
fieldbyname('CurrencyName').AsString:=GetName(Lbl_Currency.Caption);
fieldbyname('RemArk').AsString:=Edt_RemArk.Text;
fieldbyname('PCDate').AsString:=MEdt_BillDate.Text;
end;
end;
procedure TFrm_Pm_Pc_Entry_B1.SetStatus(CurrentStatus: String;
var AnswerStatus, EnableControls: String);
begin
inherited;
EnableControls:='Edt_RemArk,';
end;
procedure TFrm_Pm_Pc_Entry_B1.FormCreate(Sender: TObject);
begin
inherited;
Frm_Pm_Pc_Entry_D:=TFrm_Pm_Pc_Entry_D.Create(Self);
Frm_Entry_Detail:=Frm_Pm_Pc_Entry_D;//设置弹出Detail
end;
procedure TFrm_Pm_Pc_Entry_B1.SaveData;
var
Bill_No,ItemCode,DispStr,StatusStr:String;
StArtQty,endQty:Double;
StArtDate,endDate:TDateTime;
begin
inherited;
If AdoQry_Body.RecordCount=0 Then
begin
DispInfo('没有行数据,不能保存!',1);
Abort;
end;
DBConnect.beginTrans;
DispStr:=' 保存失败,请重试 ';
try
if(Status<>'Add')then
begin
Bill_No:=AdoQry_Head.fieldbyname('PcNo').AsString;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Delete From PcLine Where PcNo='''+Bill_No+'''';
AdoQry_Tmp.ExecSQL;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Update Pc Set'
+' VendorCode='''+AdoQry_Head.fieldbyname('VendorCode').AsString+''''
+',RemArk='''+AdoQry_Head.fieldbyname('RemArk').AsString+''''
+' Where PcNo='''+Bill_No+'''';
AdoQry_Tmp.ExecSQL;
end
else
begin
Bill_No:=GetNo(DBConnect,FormatDateTime('yymm',Now),'Pc');
AdoQry_Head.fieldbyname('PcNo').AsString:=Bill_No;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Insert pc'+
'(PcNo,VendorCode,PCTaxRate_Percent,RemArk,CurrencyCode,PCDate)'+
'Values('''+Bill_No+''''
+','''+AdoQry_Head.fieldbyname('VendorCode').AsString+''''
+','+AdoQry_Head.fieldbyname('PCTaxRate_Percent').AsString+''
+','''+AdoQry_Head.fieldbyname('RemArk').AsString+''''
+','''+AdoQry_Head.fieldbyname('CurrencyCode').AsString+''''
+','''+AdoQry_Head.fieldbyname('PcDate').AsString+''''
+')';
AdoQry_Tmp.ExecSQL;
end;
AdoQry_Body.First;
while(not AdoQry_Body.Eof)do
begin
if ItemCode=AdoQry_Body.fieldbyname('ItemCode').AsString then
begin
if(StArtDate=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime)
and(endDate=AdoQry_Body.fieldbyname('PcendDate').AsDateTime)then
begin
if endQty=0 then
begin
DispStr:='同一时间段 重复的输入';
Abort;
end
else if AdoQry_Body.fieldbyname('PcStArtQty').AsFloat<>endQty then
begin
DispStr:='起始数量不能跟上面的衔接';
Abort;
end
else
begin
StArtQty:=AdoQry_Body.fieldbyname('PcStArtQty').AsFloat;
endQty:=AdoQry_Body.fieldbyname('PcendQty').AsFloat;
end;
end
else if (FormatDateTime('yyyymmdd',AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime)
=FormatDateTime('yyyymmdd',endDate+1)) then
begin
if AdoQry_Body.fieldbyname('PcStArtQty').AsFloat<>0 then
begin
DispStr:='新的日期时段起始数量必须从零开始!';
Abort;
end
else
begin
StArtDate:=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime;
endDate:=AdoQry_Body.fieldbyname('PcendDate').AsDateTime;
StArtQty:=AdoQry_Body.fieldbyname('PcStArtQty').AsFloat;
endQty:=AdoQry_Body.fieldbyname('PcendQty').AsFloat;
end;
end
else
begin
if(StArtDate=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime)then
DispStr:='终止日期不能跟上面的衔接'
else
DispStr:='起始日期不能跟上面的衔接';
Abort;
end;
end
else
begin
if AdoQry_Body.fieldbyname('PcStArtQty').AsFloat<>0 then
begin
DispStr:='新的日期时段起始数量必须从零开始!';
Abort;
end
else
begin
ItemCode:=AdoQry_Body.fieldbyname('ItemCode').AsString;
StArtDate:=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime;
endDate:=AdoQry_Body.fieldbyname('PcendDate').AsDateTime;
StArtQty:=AdoQry_Body.fieldbyname('PcStArtQty').AsFloat;
endQty:=AdoQry_Body.fieldbyname('PcendQty').AsFloat;
end;
end;
AdoQry_Tmp.Close;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -