📄 ap110.~pas
字号:
unit AP110;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
MasterDetail, Menus, Db, DBTables, Grids, DBGrids, Buttons, ExtCtrls,
StdCtrls, Mask, DBCtrls;
type
TfmAP110 = class(TfmMasterDetail)
qyMasterCompanyID: TStringField;
qyMasterDiscount: TBCDField;
qyMasterRemittance: TBCDField;
qyMasterOthers: TBCDField;
qyMasterTotalBalance: TBCDField;
qyMasterCreateMan: TStringField;
qyMasterCreateDate: TStringField;
qyMasterCreateTime: TStringField;
qyMasterModifyMan: TStringField;
qyMasterModifyDate: TStringField;
qyMasterModifyTime: TStringField;
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
Label3: TLabel;
ED2: TDBEdit;
DBEdit3: TDBEdit;
Label5: TLabel;
ED3: TDBEdit;
Label6: TLabel;
ED4: TDBEdit;
Label7: TLabel;
ED5: TDBEdit;
Label8: TLabel;
ED6: TDBEdit;
Label9: TLabel;
ED7: TDBEdit;
Label10: TLabel;
ED8: TDBEdit;
Label11: TLabel;
DBEdit10: TDBEdit;
Label12: TLabel;
DBEdit11: TDBEdit;
sbSupplierID: TSpeedButton;
qyDetailBalance: TBCDField;
sbPayDate: TSpeedButton;
qyPurchaseMaster: TQuery;
edPurchaseID: TDBEdit;
qyMasterSupplierAttribName: TStringField;
qyMasterSupplierID: TStringField;
qyMasterPaymentID: TStringField;
qyMasterPayDate: TStringField;
qyMasterPayCash: TBCDField;
qyMasterPayCheck: TBCDField;
qyMasterPrepaid: TBCDField;
qyDetailPaymentID: TStringField;
qyDetailPurchaseID: TStringField;
qyDetailPaid: TBCDField;
qyDetailAccountPayable: TBCDField;
qyDetailUnPaid: TFloatField;
qyDetailCompanyID: TStringField;
qyPurchaseMasterPurchaseID: TStringField;
qyPurchaseMasterPurchaseDate: TStringField;
qyPurchaseMasterAccountPayable: TBCDField;
qyPurchaseMasterPaid: TBCDField;
qyMasterPayAmount: TBCDField;
procedure FormCreate(Sender: TObject);
procedure qyMasterBeforeOpen(DataSet: TDataSet);
procedure qyMasterNewRecord(DataSet: TDataSet);
procedure qyMasterBeforePost(DataSet: TDataSet);
procedure qyDetailBeforeOpen(DataSet: TDataSet);
procedure qyDetailNewRecord(DataSet: TDataSet);
procedure qyDetailBeforePost(DataSet: TDataSet);
procedure qyDetailCalcFields(DataSet: TDataSet);
procedure sbPayDateClick(Sender: TObject);
procedure sbSupplierIDClick(Sender: TObject);
procedure dsMasterStateChange(Sender: TObject);
procedure gdDetailEditButtonClick(Sender: TObject);
procedure qyPurchaseMasterBeforeOpen(DataSet: TDataSet);
procedure qyMasterUpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure qyDetailUpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure qyDetailBeforeInsert(DataSet: TDataSet);
procedure qyDetailBeforeEdit(DataSet: TDataSet);
procedure qyMasterSupplierIDValidate(Sender: TField);
procedure qyDetailPurchaseIDValidate(Sender: TField);
procedure sbSelectClick(Sender: TObject);
private
{ Private declarations }
procedure GetPurchaseInformation;
public
{ Public declarations }
AStartPeriodDate, AEndPeriodDate : String;
AStartSupplierID, AEndSupplierID : String;
ReData : Boolean;
procedure OpenDB; override;
procedure CalcAmount; override;
end;
var
fmAP110: TfmAP110;
implementation
uses Main, DataModule, PublicFunction, CheckData, GetData, ChinaCalendar,
BaseSearch, AP110Select, Loading;
var
fTempAccountPayable, fTempPaid : Extended;
sTempPurchaseID : String;
fPrevBalance : Extended;
{$R *.DFM}
{ TfmAP110 }
procedure TfmAP110.FormCreate(Sender: TObject);
begin
AStartPeriodDate := sStartPeriodDate;
AEndPeriodDate := sEndPeriodDate;
AStartSupplierID := '00000000';
AEndSupplierID := 'ZZZZZZZZ';
ReData := False;
inherited;
fTempAccountPayable := 0;
fTempPaid := 0;
sTempPurchaseID := '';
fPrevBalance := 0;
end;
procedure TfmAP110.OpenDB;
begin
qyMaster.Close;
OrderBySQL := 'M.PaymentID';
qyMaster.SQL.Text := SQLText;
qyMaster.Open;
end;
procedure TfmAP110.CalcAmount;
var
fBalance : Extended;
PrevRecord : TBookmark;
begin
PrevRecord := qyDetail.GetBookmark;
qyDetail.DisableControls;
try
fBalance := 0;
qyDetail.First;
while not qyDetail.Eof do
begin
fBalance := fBalance + qyDetail.FieldByName('Balance').AsFloat;
qyDetail.Next;
end;
qyMaster.FieldByName('TotalBalance').AsFloat := fBalance;
finally
qyDetail.EnableControls;
if PrevRecord <> nil then
begin
qyDetail.GotoBookmark(PrevRecord);
qyDetail.FreeBookmark(PrevRecord);
end;
end;
end;
procedure TfmAP110.qyMasterBeforeOpen(DataSet: TDataSet);
begin
inherited;
with qyMaster do
begin
ParamByName('StartPeriodDate').AsString := AStartPeriodDate;
ParamByName('EndPeriodDate').AsString := AEndPeriodDate;
ParamByName('StartSupplierID').AsString := AStartSupplierID;
ParamByName('EndSupplierID').AsString := AEndSupplierID;
end;
end;
procedure TfmAP110.qyMasterNewRecord(DataSet: TDataSet);
begin
inherited;
with qyMaster do
begin
FieldByName('PaymentID').AsString := Space(10);
FieldByName('PayDate').AsString := Today;
FieldByName('SupplierID').AsString := Space(10);
FieldByName('PayCash').AsFloat := 0;
FieldByName('PayCheck').AsFloat := 0;
FieldByName('Discount').AsFloat := 0;
FieldByName('Remittance').AsFloat := 0;
FieldByName('Prepaid').AsFloat := 0;
FieldByName('Others').AsFloat := 0;
FieldByName('PayAmount').AsFloat := 0;
FieldByName('TotalBalance').AsFloat := 0;
end;
end;
procedure TfmAP110.qyMasterBeforePost(DataSet: TDataSet);
begin
inherited;
if qyMaster.State = dsInsert then
begin
if not CheckDate(qyMaster.FieldByName('PayDate').AsString) then
begin
ED1.SetFocus;
Abort;
end;
if not CheckSupplierID(qyMaster.FieldByName('SupplierID').AsString) then
begin
ED2.SetFocus;
Abort;
end;
qyMaster.FieldByName('PaymentID').AsString :=
IDGen('AP', qyMaster.FieldByName('PayDate').AsString,
'PaymentID', 'AccountPayableMaster');
end;
qyMaster.FieldByName('PayAmount').AsFloat :=
qyMaster.FieldByName('PayCash').AsFloat +
qyMaster.FieldByName('PayCheck').AsFloat +
qyMaster.FieldByName('Discount').AsFloat +
qyMaster.FieldByName('Remittance').AsFloat -
qyMaster.FieldByName('Prepaid').AsFloat -
qyMaster.FieldByName('Others').AsFloat;
end;
procedure TfmAP110.qyDetailBeforeOpen(DataSet: TDataSet);
begin
inherited;
qyDetail.ParamByName('PaymentID').AsString := qyMaster.FieldByName('PaymentID').AsString;
end;
procedure TfmAP110.qyDetailNewRecord(DataSet: TDataSet);
begin
inherited;
with qyDetail do
begin
FieldByName('PaymentID').AsString := qyMaster.FieldByName('PaymentID').AsString;
FieldByName('PurchaseID').AsString := Space(10);
FieldByName('Balance').AsFloat := 0;
end;
end;
procedure TfmAP110.qyDetailBeforePost(DataSet: TDataSet);
var
fPaid : Extended;
begin
inherited;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -