📄 ar110.~pas
字号:
unit AR110;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
MasterDetail, Menus, Db, DBTables, Grids, DBGrids, Buttons, ExtCtrls,
StdCtrls, Mask, DBCtrls;
type
TfmAR110 = class(TfmMasterDetail)
qyMasterCustomerAttribName: TStringField;
qyMasterCompanyID: TStringField;
qyMasterCustomerID: TStringField;
qyMasterReceiveID: TStringField;
qyMasterReceiveDate: TStringField;
qyMasterReceiveCash: TBCDField;
qyMasterReceiveCheck: TBCDField;
qyMasterDiscount: TBCDField;
qyMasterRemittance: TBCDField;
qyMasterAdvance: 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;
sbCustomerID: TSpeedButton;
qyDetailCompanyID: TStringField;
qyDetailReceiveID: TStringField;
qyDetailDeliveryID: TStringField;
qyDetailBalance: TBCDField;
qyDetailReceived: TBCDField;
qyDetailUnReceived: TFloatField;
sbReceiveDate: TSpeedButton;
qyDeliveryMaster: TQuery;
edDeliveryID: TDBEdit;
qyMasterReceiveAmount: TBCDField;
qyDeliveryMasterDeliveryID: TStringField;
qyDeliveryMasterDeliveryDate: TStringField;
qyDeliveryMasterReceived: TBCDField;
qyDeliveryMasterAccountReceivable: TBCDField;
qyDetailAccountReceivable: 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 qyMasterCustomerIDValidate(Sender: TField);
procedure sbReceiveDateClick(Sender: TObject);
procedure sbCustomerIDClick(Sender: TObject);
procedure dsMasterStateChange(Sender: TObject);
procedure gdDetailEditButtonClick(Sender: TObject);
procedure qyDeliveryMasterBeforeOpen(DataSet: TDataSet);
procedure qyMasterUpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure qyDetailUpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure qyDetailDeliveryIDValidate(Sender: TField);
procedure qyDetailBeforeInsert(DataSet: TDataSet);
procedure qyDetailBeforeEdit(DataSet: TDataSet);
procedure sbSelectClick(Sender: TObject);
private
{ Private declarations }
procedure GetDeliveryInformation;
public
{ Public declarations }
AStartPeriodDate, AEndPeriodDate : String;
AStartCustomerID, AEndCustomerID : String;
ReData : Boolean;
procedure OpenDB; override;
procedure CalcAmount; override;
end;
var
fmAR110: TfmAR110;
implementation
uses Main, DataModule, PublicFunction, CheckData, GetData, ChinaCalendar,
BaseSearch, AR110Select, Loading;
var
fTempAccountReceivable, fTempReceived : Extended;
sTempDeliveryID : String;
fPrevBalance : Extended;
{$R *.DFM}
{ TfmAR110 }
procedure TfmAR110.FormCreate(Sender: TObject);
begin
AStartPeriodDate := sStartPeriodDate;
AEndPeriodDate := sEndPeriodDate;
AStartCustomerID := '00000000';
AEndCustomerID := 'ZZZZZZZZ';
ReData := False;
inherited;
fTempAccountReceivable := 0;
fTempReceived := 0;
sTempDeliveryID := '';
fPrevBalance := 0;
end;
procedure TfmAR110.OpenDB;
begin
qyMaster.Close;
OrderBySQL := 'M.ReceiveID';
qyMaster.SQL.Text := SQLText;
qyMaster.Open;
end;
procedure TfmAR110.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 TfmAR110.qyMasterBeforeOpen(DataSet: TDataSet);
begin
inherited;
with qyMaster do
begin
ParamByName('StartPeriodDate').AsString := AStartPeriodDate;
ParamByName('EndPeriodDate').AsString := AEndPeriodDate;
ParamByName('StartCustomerID').AsString := AStartCustomerID;
ParamByName('EndCustomerID').AsString := AEndCustomerID;
end;
end;
procedure TfmAR110.qyMasterNewRecord(DataSet: TDataSet);
begin
inherited;
with qyMaster do
begin
FieldByName('ReceiveID').AsString := Space(10);
FieldByName('ReceiveDate').AsString := Today;
FieldByName('CustomerID').AsString := Space(10);
FieldByName('ReceiveCash').AsFloat := 0;
FieldByName('ReceiveCheck').AsFloat := 0;
FieldByName('Discount').AsFloat := 0;
FieldByName('Remittance').AsFloat := 0;
FieldByName('Advance').AsFloat := 0;
FieldByName('Others').AsFloat := 0;
FieldByName('ReceiveAmount').AsFloat := 0;
FieldByName('TotalBalance').AsFloat := 0;
end;
end;
procedure TfmAR110.qyMasterBeforePost(DataSet: TDataSet);
begin
inherited;
if qyMaster.State = dsInsert then
begin
if not CheckDate(qyMaster.FieldByName('ReceiveDate').AsString) then
begin
ED1.SetFocus;
Abort;
end;
if not CheckCustomerID(qyMaster.FieldByName('CustomerID').AsString) then
begin
ED2.SetFocus;
Abort;
end;
qyMaster.FieldByName('ReceiveID').AsString :=
IDGen('AR', qyMaster.FieldByName('ReceiveDate').AsString,
'ReceiveID', 'AccountReceivableMaster');
end;
qyMaster.FieldByName('ReceiveAmount').AsFloat :=
qyMaster.FieldByName('ReceiveCash').AsFloat +
qyMaster.FieldByName('ReceiveCheck').AsFloat +
qyMaster.FieldByName('Discount').AsFloat +
qyMaster.FieldByName('Remittance').AsFloat -
qyMaster.FieldByName('Advance').AsFloat -
qyMaster.FieldByName('Others').AsFloat;
end;
procedure TfmAR110.qyDetailBeforeOpen(DataSet: TDataSet);
begin
inherited;
qyDetail.ParamByName('ReceiveID').AsString := qyMaster.FieldByName('ReceiveID').AsString;
end;
procedure TfmAR110.qyDetailNewRecord(DataSet: TDataSet);
begin
inherited;
with qyDetail do
begin
FieldByName('ReceiveID').AsString := qyMaster.FieldByName('ReceiveID').AsString;
FieldByName('DeliveryID').AsString := Space(10);
FieldByName('Balance').AsFloat := 0;
end;
end;
procedure TfmAR110.qyDetailBeforePost(DataSet: TDataSet);
var
fReceived : Extended;
begin
inherited;
GetDeliveryInformation;
if sTempDeliveryID = '' then
begin
NotFoundWarning('出货单单号', qyDetail.FieldByName('DeliveryID').AsString);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -