📄 ar110.~pas
字号:
gdDetail.SelectedField := qyDetailDeliveryID;
Abort;
end;
if fTempAccountReceivable = fTempReceived then
begin
MyWarning('出货单单号' +
qyDetail.FieldByName('DeliveryID').AsString + ']' + #10#13 +
'已经冲销完毕,请重新输入');
gdDetail.SelectedField := qyDetailDeliveryID;
Abort;
end;
if qyDetail.FieldByName('Balance').AsFloat = 0 then
begin
MyWarning('本次冲款不可为0,请重新输入');
gdDetail.SelectedField := qyDetailBalance;
Abort;
end;
fReceived := qyDetail.FieldByName('Received').AsFloat +
qyDetail.FieldByName('Balance').AsFloat -
fPrevBalance;
if ((fTempAccountReceivable < 0) and (fReceived < fTempAccountReceivable)) or
((fTempAccountReceivable > 0) and (fReceived > fTempAccountReceivable)) then
begin
MyWarning('本次冲款金额不可大于未冲销余额,请重新输入');
gdDetail.SelectedField := qyDetailBalance;
Abort;
end;
qyDetail.FieldByName('Received').AsFloat := fReceived;
end;
procedure TfmAR110.qyDetailCalcFields(DataSet: TDataSet);
begin
inherited;
qyDetail.FieldByName('UnReceived').AsFloat :=
qyDetail.FieldByName('AccountReceivable').AsFloat -
qyDetail.FieldByName('Received').AsFloat;
end;
procedure TfmAR110.qyMasterCustomerIDValidate(Sender: TField);
begin
inherited;
qyMaster.FieldByName('CustomerAttribName').AsString :=
GetCustomerAttribName(qyMaster.FieldByName('CustomerID').AsString);
end;
procedure TfmAR110.sbReceiveDateClick(Sender: TObject);
begin
inherited;
MyCalendar(ED1);
end;
procedure TfmAR110.sbCustomerIDClick(Sender: TObject);
begin
inherited;
SearchData(ED2, DM.qyCustomerMaster);
end;
procedure TfmAR110.dsMasterStateChange(Sender: TObject);
begin
inherited;
ED2.ReadOnly := (qyMaster.State <> dsInsert);
sbReceiveDate.Enabled := (qyMaster.State = dsInsert);
sbCustomerID.Enabled := (qyMaster.State = dsInsert);
end;
procedure TfmAR110.gdDetailEditButtonClick(Sender: TObject);
begin
inherited;
if (gdDetail.SelectedField.FieldName = 'DeliveryID') and
(qyDetail.State in [dsInsert, dsEdit]) then
qyDetail.FieldByName('DeliveryID').AsString := SearchData(edDeliveryID, qyDeliveryMaster);
end;
procedure TfmAR110.qyDeliveryMasterBeforeOpen(DataSet: TDataSet);
begin
inherited;
with qyDeliveryMaster do
begin
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('CustomerID').AsString := qyMaster.FieldByName('CustomerID').AsString;
end;
end;
procedure TfmAR110.qyMasterUpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
var
fOldAdvance, fNewAdvance : Extended;
fOldTotalBalance, fNewTotalBalance : Extended;
sCustomerID : String;
begin
inherited;
fNewAdvance := 0;
fOldAdvance := 0;
fNewTotalBalance := 0;
fOldTotalBalance := 0;
sCustomerID := '';
case UpdateKind of
ukInsert :
begin
fNewAdvance := DataSet.FieldByName('Advance').NewValue;
fOldAdvance := 0;
fNewTotalBalance := DataSet.FieldByName('TotalBalance').NewValue;
fOldTotalBalance := 0;
sCustomerID := DataSet.FieldByName('CustomerID').NewValue;
end;
ukModify :
begin
fNewAdvance := DataSet.FieldByName('Advance').NewValue;
fOldAdvance := DataSet.FieldByName('Advance').OldValue;
fNewTotalBalance := DataSet.FieldByName('TotalBalance').NewValue;
fOldTotalBalance := DataSet.FieldByName('TotalBalance').OldValue;
sCustomerID := DataSet.FieldByName('CustomerID').OldValue;
end;
ukDelete :
begin
fNewAdvance := DataSet.FieldByName('Advance').OldValue;
fOldAdvance := DataSet.FieldByName('Advance').OldValue;
fNewTotalBalance := DataSet.FieldByName('TotalBalance').OldValue;
fOldTotalBalance := DataSet.FieldByName('TotalBalance').OldValue;
sCustomerID := DataSet.FieldByName('CustomerID').OldValue;
end;
end;
with qyTemp do
begin
Close;
SQL.Clear;
SQL.Add('UPDATE CustomerMaster SET Advance = Advance + :Advance, ');
SQL.Add('CreditBalance = CreditBalance + :CreditBalance ');
SQL.Add('WHERE CompanyID = :CompanyID AND CustomerID = :CustomerID ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('CustomerID').AsString := sCustomerID;
ParamByName('Advance').AsFloat := fNewAdvance - fOldAdvance;
ParamByName('CreditBalance').AsFloat := fNewTotalBalance - fOldTotalBalance;
ExecSQL;
end;
end;
procedure TfmAR110.qyDetailUpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure UpdateDeliveryMasterReceived(DeliveryID: String; Received: Extended);
begin
with qyTemp do
begin
Close;
SQL.Clear;
SQL.Add('UPDATE DeliveryMaster SET Received = Received + :Received ');
SQL.Add('WHERE CompanyID = :CompanyID AND DeliveryID = :DeliveryID ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('DeliveryID').AsString := DeliveryID;
ParamByName('Received').AsFloat := Received;
ExecSQL;
end;
end;
var
fOldBalance, fNewBalance : Extended;
fOldDeliveryID, fNewDeliveryID : String;
begin
inherited;
fNewBalance := 0;
fOldBalance := 0;
fNewDeliveryID := '';
fOldDeliveryID := '';
case UpdateKind of
ukInsert :
begin
fNewBalance := DataSet.FieldByName('Balance').NewValue;
fOldBalance := 0;
fNewDeliveryID := DataSet.FieldByName('DeliveryID').NewValue;
fOldDeliveryID := DataSet.FieldByName('DeliveryID').NewValue;
end;
ukModify :
begin
fNewBalance := DataSet.FieldByName('Balance').NewValue;
fOldBalance := DataSet.FieldByName('Balance').OldValue;
fNewDeliveryID := DataSet.FieldByName('DeliveryID').NewValue;
fOldDeliveryID := DataSet.FieldByName('DeliveryID').OldValue;
end;
ukDelete :
begin
fNewBalance := 0;
fOldBalance := DataSet.FieldByName('Balance').OldValue;
fNewDeliveryID := DataSet.FieldByName('DeliveryID').OldValue;
fOldDeliveryID := DataSet.FieldByName('DeliveryID').OldValue;
end;
end;
UpdateDeliveryMasterReceived(fOldDeliveryID, fOldBalance * -1);
UpdateDeliveryMasterReceived(fNewDeliveryID, fNewBalance);
end;
procedure TfmAR110.qyDetailDeliveryIDValidate(Sender: TField);
begin
inherited;
GetDeliveryInformation;
qyDetail.FieldByName('Received').AsFloat := fTempReceived;
qyDetail.FieldByName('AccountReceivable').AsFloat := fTempAccountReceivable;
qyDetail.FieldByName('Balance').AsFloat := fTempAccountReceivable - fTempReceived;
end;
procedure TfmAR110.GetDeliveryInformation;
begin
with qyTemp do
begin
Close;
SQL.Clear;
SQL.Add('SELECT DeliveryID, AccountReceivable, Received ');
SQL.Add('FROM DeliveryMaster ');
SQL.Add('WHERE CompanyID = :CompanyID AND DeliveryID = :DeliveryID ');
SQL.Add('AND CustomerID = :CustomerID ');
SQL.Add('AND (DeliveryProperty IN (''1'', ''2'')) ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('DeliveryID').AsString := qyDetail.FieldByName('DeliveryID').AsString;
ParamByName('CustomerID').AsString := qyMaster.FieldByName('CustomerID').AsString;
Open;
end;
fTempAccountReceivable := qyTemp.FieldByName('AccountReceivable').AsFloat;
fTempReceived := qyTemp.FieldByName('Received').AsFloat;
sTempDeliveryID := qyTemp.FieldByName('DeliveryID').AsString;
end;
procedure TfmAR110.qyDetailBeforeInsert(DataSet: TDataSet);
begin
inherited;
fPrevBalance := 0;
end;
procedure TfmAR110.qyDetailBeforeEdit(DataSet: TDataSet);
begin
inherited;
fPrevBalance := qyDetail.FieldByName('Balance').AsFloat;
end;
procedure TfmAR110.sbSelectClick(Sender: TObject);
begin
inherited;
ReData := False;
qyMaster.DisableControls;
try
fmAR110Select := TfmAR110Select.Create(Application);
fmAR110Select.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;
fmAR110Select.Free;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -