📄 ap110.~pas
字号:
GetPurchaseInformation;
if sTempPurchaseID = '' then
begin
NotFoundWarning('进货单单号', qyDetail.FieldByName('PurchaseID').AsString);
gdDetail.SelectedField := qyDetailPurchaseID;
Abort;
end;
if fTempAccountPayable = fTempPaid then
begin
MyWarning('进货单单号:[' +
qyDetail.FieldByName('PurchaseID').AsString + ']' + #10#13 +
'已经冲销完毕,请重新输入!');
gdDetail.SelectedField := qyDetailPurchaseID;
Abort;
end;
if qyDetail.FieldByName('Balance').AsFloat = 0 then
begin
MyWarning('本次冲款不可为0,请重新输入!');
gdDetail.SelectedField := qyDetailBalance;
Abort;
end;
fPaid := qyDetail.FieldByName('Paid').AsFloat +
qyDetail.FieldByName('Balance').AsFloat -
fPrevBalance;
if ((fTempAccountPayable < 0) and (fPaid < fTempAccountPayable)) or
((fTempAccountPayable > 0) and (fPaid > fTempAccountPayable)) then
begin
MyWarning('本次冲款金额不可大于未冲销余额,请重新输入!');
gdDetail.SelectedField := qyDetailBalance;
Abort;
end;
qyDetail.FieldByName('Paid').AsFloat := fPaid;
end;
procedure TfmAP110.qyDetailCalcFields(DataSet: TDataSet);
begin
inherited;
qyDetail.FieldByName('UnPaid').AsFloat :=
qyDetail.FieldByName('AccountPayable').AsFloat -
qyDetail.FieldByName('Paid').AsFloat;
end;
procedure TfmAP110.sbPayDateClick(Sender: TObject);
begin
inherited;
MyCalendar(ED1);
end;
procedure TfmAP110.sbSupplierIDClick(Sender: TObject);
begin
inherited;
SearchData(ED2, DM.qySupplier);
end;
procedure TfmAP110.dsMasterStateChange(Sender: TObject);
begin
inherited;
ED2.ReadOnly := (qyMaster.State <> dsInsert);
sbPayDate.Enabled := (qyMaster.State = dsInsert);
sbSupplierID.Enabled := (qyMaster.State = dsInsert);
end;
procedure TfmAP110.gdDetailEditButtonClick(Sender: TObject);
begin
inherited;
if (gdDetail.SelectedField.FieldName = 'PurchaseID') and
(qyDetail.State in [dsInsert, dsEdit]) then
qyDetail.FieldByName('PurchaseID').AsString := SearchData(edPurchaseID, qyPurchaseMaster);
end;
procedure TfmAP110.qyPurchaseMasterBeforeOpen(DataSet: TDataSet);
begin
inherited;
with qyPurchaseMaster do
begin
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('SupplierID').AsString := qyMaster.FieldByName('SupplierID').AsString;
end;
end;
procedure TfmAP110.qyMasterUpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
var
fOldPrepaid, fNewPrepaid : Extended;
sSupplierID : String;
begin
inherited;
fOldPrepaid := 0;
fNewPrepaid := 0;
case UpdateKind of
ukInsert :
begin
fNewPrepaid := DataSet.FieldByName('Prepaid').NewValue;
fOldPrepaid := 0;
sSupplierID := DataSet.FieldByName('SupplierID').NewValue;
end;
ukModify :
begin
fNewPrepaid := DataSet.FieldByName('Prepaid').NewValue;
fOldPrepaid := DataSet.FieldByName('Prepaid').OldValue;
sSupplierID := DataSet.FieldByName('SupplierID').OldValue;
end;
ukDelete :
begin
fNewPrepaid := DataSet.FieldByName('Prepaid').OldValue;
fOldPrepaid := DataSet.FieldByName('Prepaid').OldValue;
sSupplierID := DataSet.FieldByName('SupplierID').OldValue;
end;
end;
with qyTemp do
begin
Close;
SQL.Clear;
SQL.Add('UPDATE Supplier SET Prepaid = Prepaid + :Prepaid ');
SQL.Add('WHERE CompanyID = :CompanyID AND SupplierID = :SupplierID ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('SupplierID').AsString := sSupplierID;
ParamByName('Prepaid').AsFloat := fNewPrepaid - fOldPrepaid;
ExecSQL;
end;
end;
procedure TfmAP110.qyDetailUpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure UpdatePurchaseMasterPaid(PurchaseID: String; Paid: Extended);
begin
with qyTemp do
begin
Close;
SQL.Clear;
SQL.Add('UPDATE PurchaseMaster SET Paid = Paid + :Paid ');
SQL.Add('WHERE CompanyID = :CompanyID AND PurchaseID = :PurchaseID ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('PurchaseID').AsString := PurchaseID;
ParamByName('Paid').AsFloat := Paid;
ExecSQL;
end;
end;
var
fOldBalance, fNewBalance : Extended;
fOldPurchaseID, fNewPurchaseID : String;
begin
inherited;
fNewBalance := 0;
fOldBalance := 0;
fNewPurchaseID := '';
fOldPurchaseID := '';
case UpdateKind of
ukInsert :
begin
fNewBalance := DataSet.FieldByName('Balance').NewValue;
fOldBalance := 0;
fNewPurchaseID := DataSet.FieldByName('PurchaseID').NewValue;
fOldPurchaseID := DataSet.FieldByName('PurchaseID').NewValue;
end;
ukModify :
begin
fNewBalance := DataSet.FieldByName('Balance').NewValue;
fOldBalance := DataSet.FieldByName('Balance').OldValue;
fNewPurchaseID := DataSet.FieldByName('PurchaseID').NewValue;
fOldPurchaseID := DataSet.FieldByName('PurchaseID').OldValue;
end;
ukDelete :
begin
fNewBalance := 0;
fOldBalance := DataSet.FieldByName('Balance').OldValue;
fNewPurchaseID := DataSet.FieldByName('PurchaseID').OldValue;
fOldPurchaseID := DataSet.FieldByName('PurchaseID').OldValue;
end;
end;
UpdatePurchaseMasterPaid(fOldPurchaseID, fOldBalance * -1);
UpdatePurchaseMasterPaid(fNewPurchaseID, fNewBalance);
end;
procedure TfmAP110.GetPurchaseInformation;
begin
with qyTemp do
begin
Close;
SQL.Clear;
SQL.Add('SELECT PurchaseID, AccountPayable, Paid ');
SQL.Add('FROM PurchaseMaster ');
SQL.Add('WHERE CompanyID = :CompanyID AND PurchaseID = :PurchaseID ');
SQL.Add('AND SupplierID = :SupplierID ');
SQL.Add('AND (PurchaseProperty IN (''5'', ''6'')) ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('PurchaseID').AsString := qyDetail.FieldByName('PurchaseID').AsString;
ParamByName('SupplierID').AsString := qyMaster.FieldByName('SupplierID').AsString;
Open;
end;
fTempAccountPayable := qyTemp.FieldByName('AccountPayable').AsFloat;
fTempPaid := qyTemp.FieldByName('Paid').AsFloat;
sTempPurchaseID := qyTemp.FieldByName('PurchaseID').AsString;
end;
procedure TfmAP110.qyDetailBeforeInsert(DataSet: TDataSet);
begin
inherited;
fPrevBalance := 0;
end;
procedure TfmAP110.qyDetailBeforeEdit(DataSet: TDataSet);
begin
inherited;
fPrevBalance := qyDetail.FieldByName('Balance').AsFloat;
end;
procedure TfmAP110.qyMasterSupplierIDValidate(Sender: TField);
begin
inherited;
qyMaster.FieldByName('SupplierAttribName').AsString :=
GetSupplierAttribName(qyMaster.FieldByName('SupplierID').AsString);
end;
procedure TfmAP110.qyDetailPurchaseIDValidate(Sender: TField);
begin
inherited;
GetPurchaseInformation;
qyDetail.FieldByName('Paid').AsFloat := fTempPaid;
qyDetail.FieldByName('AccountPayable').AsFloat := fTempAccountPayable;
qyDetail.FieldByName('Balance').AsFloat := fTempAccountPayable - fTempPaid;
end;
procedure TfmAP110.sbSelectClick(Sender: TObject);
begin
inherited;
ReData := False;
qyMaster.DisableControls;
try
fmAP110Select := TfmAP110Select.Create(Application);
fmAP110Select.ShowModal;
if ReData then begin
try
fmLoading := TfmLoading.Create(Application);
fmLoading.Show;
fmLoading.Update;
qyMaster.Close;
qyMaster.Open;
finally
fmLoading.Hide;
fmLoading.Free;
end;
end;
finally
qyMaster.EnableControls;
fmAP110Select.Free;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -