📄 ar_enter_gathering_d.pas
字号:
ExchRate := GetCurrencyRate(dbconnect,Trim(Edt_CurrencyCode.Text),Copy(MEdt_GatherDate.Text,1,7));
if Add then
//新增
sqltext:='insert into Ar_Gathering(Gatheringno,BalanceTypeCode,'
+' Gatheringdate,customerCode,actSubjectCode,currencyCode, '
+' ExchangeRate,Billno,customerbank,customerbankactno, '
+' SaleDeptCode,SaleEmployeeCode,TotaltaxAmount, TotalTaxAmountC,'
+' TotalCancelAmount,createdate,createEmployeeCode,remArk)'
+' Values('+quotedstr(Trim(edt_gatherno.text))+','
+quotedstr(Trim(edt_BtCode.text))+','
+quotedstr(medt_gatherdate.text)+','
+quotedstr(Trim(edt_CustomerCode.text))+','
+quotedstr(Trim(edt_actCode.text))+','
+quotedstr(Trim(edt_CurrencyCode.text))+','
+Trim(edt_rate.text)+','
+quotedstr(Trim(edt_Billno.text))+','
+quotedstr(Trim(edt_Bank.text))+','
+quotedstr(Trim(edt_Bankaccno.text))+','
+quotedstr(Trim(edt_DeptCode.text))+','
+quotedstr(Trim(edt_SaleEmployeeCode.text))+','
+Trim(edt_Amount.text)+','
+FloatToStr(StrToFloat(Trim(Edt_Amount.Text))*StrToFloat(Edt_Rate.Text))+','
+'0,'
+quotedstr(medt_Createdate.text)+','
+quotedstr(Trim(edt_CreateEmployeeCode.text))+','
+quotedstr(Trim(edt_remArk.text))+')'
else
sqltext:='update Ar_Gathering'
+' set BalanceTypeCode='+quotedstr(Trim(edt_BtCode.text))+','
+' Gatheringdate='+quotedstr(medt_gatherdate.text)+','
+' customerCode='+quotedstr(edt_CustomerCode.text)+','
+' actSubjectCode='+quotedstr(Trim(edt_actCode.text))+','
+' currencyCode='+quotedstr(Trim(edt_CurrencyCode.text))+','
+' ExchangeRate='+Trim(edt_rate.text)+','
+' Billno='+quotedstr(Trim(edt_Billno.text))+','
+' customerbank='+quotedstr(Trim(edt_Bank.text))+','
+' customerbankactno='+quotedstr(Trim(edt_Bankaccno.text))+','
+' TotaltaxAmount='+Trim(edt_Amount.text)+','
+' TotalTaxAmountC = '+FloatToStr(StrToFloat(Trim(Edt_Amount.Text))*StrToFloat(Edt_Rate.Text))+','
+' SaleDeptCode='+quotedstr(Trim(edt_DeptCode.text))+','
+' SaleEmployeeCode='+quotedstr(Trim(edt_SaleEmployeeCode.text))+','
+' createEmployeeCode='+quotedstr(Trim(edt_CreateEmployeeCode.text))+','
+' createdate='+quotedstr(medt_Createdate.text)+','
+' remArk='+quotedstr(Trim(edt_remArk.text))
+'where Gatheringno='+quotedstr(Trim(edt_gatherno.text));
if Add then
begin
Executesql(AdoQry_tmp,sqltext,1);
saveGatheringhistory(dbconnect,Trim(edt_gatherno.text),userCode,0);
Sqltext:='Update customer with(Rowlock)'
+' set TakeBackMoneyTotal=IsNull(TakeBackMoneyTotal,0)+'+Edt_Amount.text
+' Where CustomerCode='+QuotedStr(Edt_CustomerCode.text);
ExecuteSql(AdoQry_Tmp,sqltext,1) ;
CancelGathering(edt_gatherno.text);
end
else
begin
saveGatheringhistory(dbconnect,Trim(edt_gatherno.text),userCode,1);
Executesql(AdoQry_tmp,sqltext,1);
Sqltext:='Update customer with(Rowlock)'
+' set TakeBackMoneyTotal=IsNull(TakeBackMoneyTotal,0)+'+Edt_Amount.text +'-('+TmpAmount+')'
+' Where CustomerCode='+QuotedStr(Edt_CustomerCode.text);
ExecuteSql(AdoQry_Tmp,sqltext,1) ;
CancelGathering(edt_gatherno.text); {修改后再重新核销该收款单据}
end;
if Assigned(AdoQry) then AdoQry.Free;
dbconnect.CommitTrans;
with AdoQry_Maintain do
begin
fieldbyname('Gatheringno').asstring:=Trim(edt_gatherno.text);
fieldbyname('BalanceTypeCode').asstring:=Trim(edt_BtCode.text);
fieldbyname('BalanceTypeName').asstring:=Trim(edt_BtName.text);
fieldbyname('Gatheringdate').asstring:=medt_gatherdate.Text;
fieldbyname('customerCode').asstring:=Trim(edt_CustomerCode.text);
fieldbyname('customerName').asstring:=Trim(edt_CustomerName.text);
fieldbyname('actSubjectCode').asstring:=Trim(edt_actCode.text);
fieldbyname('currencyCode').asstring:=Trim(edt_CurrencyCode.text);
fieldbyname('currencyName').asstring:=Trim(edt_CurrencyName.text);
fieldbyname('ExchangeRate').asfloat:=strtofloat(Trim(edt_rate.text));
fieldbyname('Billno').asstring:=Trim(edt_Billno.text);
fieldbyname('customerbank').asstring:=Trim(edt_Bank.text);
fieldbyname('customerbankactno').asstring:=Trim(edt_Bankaccno.text);
fieldbyname('TotaltaxAmount').asfloat:=strtofloat(Trim(edt_Amount.text));
fieldbyname('SaleDeptCode').asstring:=Trim(edt_DeptCode.text);
fieldbyname('DeptName').asstring:=Trim(edt_DeptName.text);
fieldbyname('SaleEmployeeCode').asstring:=Trim(edt_SaleEmployeeCode.text);
fieldbyname('SalEmployeeName').asstring:=Trim(edt_SaleEmployeeName.text);
fieldbyname('createEmployeeCode').asstring:=Trim(edt_CreateEmployeeCode.text);
fieldbyname('createrName').asstring:=Trim(edt_CreateEmployeeName.text);
fieldbyname('createdate').asstring:=medt_Createdate.Text;
fieldbyname('remArk').asstring:=Trim(edt_remArk.text);
post;
end;
except
if dbconnect.InTransaction then
dbconnect.RollBackTrans;
if Assigned(AdoQry) then AdoQry.Free;
abort;
end;
end;
procedure TFrm_Ar_Enter_Gathering_D.SetStatus(CurrentStatus: String;
var EnableControls: String);
begin
inherited;
end;
procedure TFrm_Ar_Enter_Gathering_D.edt_BtCodeKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
inherited;
if(Key=120)then
CommonHint(Sender,AdoQry_Tmp,'BalanceTypeName','结算方式名称','BalanceTypeCode','结算方式代码','BalanceType');
end;
procedure TFrm_Ar_Enter_Gathering_D.edt_SaleEmployeeCodeExit(
Sender: TObject);
begin
inherited;
if ActiveControl.Name='btn_Cancel' then
exit;
with AdoQry_Tmp do
begin
Close;
SQL.clear;
SQL.Add('Select EmployeeCode,EmployeeName From Employee Where EmployeeCode='''+TEdit(Sender).Text+'''');
Open;
if eof then
begin
DispInfo('该人员代码不存在!',1);
TWinControl(Sender).SetFocus;
Abort;
end;
edt_SaleEmployeeName.Text:=fieldbyname('EmployeeName').asstring;
end;
end;
procedure TFrm_Ar_Enter_Gathering_D.edt_CreateEmployeeCodeExit(
Sender: TObject);
begin
inherited;
if ActiveControl.Name='btn_Cancel' then
exit;
with AdoQry_Tmp do
begin
Close;
SQL.clear;
SQL.Add('Select EmployeeCode,EmployeeName From Employee Where EmployeeCode='''+TEdit(Sender).Text+'''');
Open;
if eof then
begin
DispInfo('该人员代码不存在!',1);
TWinControl(Sender).SetFocus;
Abort;
end;
edt_CreateEmployeeName.Text:=fieldbyname('EmployeeName').asstring;
end;
end;
procedure TFrm_Ar_Enter_Gathering_D.edt_DeptCodeExit(Sender: TObject);
begin
inherited;
if ActiveControl.Name='btn_Cancel' then
exit;
with AdoQry_Tmp do
begin
Close;
SQL.clear;
SQL.Add('Select DeptCode,DeptName From Dept Where DeptCode='''+TEdit(Sender).Text+'''');
Open;
if eof then
begin
DispInfo('该部门代码不存在!',1);
TWinControl(Sender).SetFocus;
Abort;
end;
edt_DeptName.Text:=fieldbyname('DeptName').asstring;
end;
end;
procedure TFrm_Ar_Enter_Gathering_D.edt_CustomerCodeExit(Sender: TObject);
var sqltext:string;
tmpYear,tmPMonth:integer;
begin
inherited;
if ActiveControl.Name='btn_Cancel' then
exit;
with AdoQry_Tmp do
begin
Close;
SQL.clear;
SQL.Add('Select customerCode,customerName From customer Where customerCode='''+TEdit(Sender).Text+'''');
Open;
if eof then
begin
DispInfo('该客户代码不存在!',1);
TWinControl(Sender).SetFocus;
Abort;
end;
edt_CustomerName.Text:=fieldbyname('customerName').asstring;
end;
sqltext:='select * from customer where customerCode='+quotedstr(Trim(edt_CustomerCode.text));
Executesql(AdoQry_tmp,sqltext,0) ;
edt_CurrencyCode.Text:=AdoQry_tmp.fieldbyname('customercurrencyCode').asstring;
sqltext:='select * from Gl_Accountperiod where Currentperiod=1';
Executesql(AdoQry_tmp,sqltext,0);
tmpYear:=AdoQry_tmp.fieldbyname('AccountperiodYear').asinteger;
tmPMonth:=AdoQry_tmp.fieldbyname('AccountperiodMonth').asinteger;
sqltext:='select * from Gl_ForeignCurrencyRate '
+' where convert(int,substring(Accountperiod,1,4))='+inttostr(tmpYear)
+' and convert(int,substring(Accountperiod,6,2))='+inttostr(tmPMonth)
+' and currencyCode='+quotedstr(Trim(edt_CurrencyCode.text));
Executesql(AdoQry_tmp,sqltext,0);
edt_rate.Text:=AdoQry_tmp.fieldbyname('ForeignRate').asstring;
end;
procedure TFrm_Ar_Enter_Gathering_D.edt_BtCodeExit(Sender: TObject);
begin
inherited;
if ActiveControl.Name='btn_Cancel' then
exit;
with AdoQry_Tmp do
begin
Close;
SQL.clear;
SQL.Add('Select BalanceTypeCode,BalanceTypeName From BalanceType Where BalanceTypeCode='''+TEdit(Sender).Text+'''');
Open;
if eof then
begin
DispInfo('该结算方式代码不存在!',1);
TWinControl(Sender).SetFocus;
Abort;
end;
edt_BtName.Text:=fieldbyname('BalanceTypeName').asstring;
end;
end;
procedure TFrm_Ar_Enter_Gathering_D.edt_CurrencyCodeExit(Sender: TObject);
begin
inherited;
if ActiveControl.Name='btn_Cancel' then
exit;
with AdoQry_Tmp do
begin
Close;
SQL.clear;
SQL.Add('Select currencyCode,currencyName,IsMaster From currency Where currencyCode='''+TEdit(Sender).Text+'''');
Open;
if eof then
begin
DispInfo('该货币代码不存在!',1);
TWinControl(Sender).SetFocus;
Abort;
end;
edt_CurrencyName.Text:=fieldbyname('currencyName').asstring;
Edt_Rate.Text := FloatToStr(GetCurrencyRate(dbconnect,Edt_CurrencyCode.Text,Copy(medt_GatherDate.Text,1,7)));
Edt_Rate.Enabled := IifValue(fieldbyname('IsMaster').AsInteger=1,False,True);
end;
end;
procedure TFrm_Ar_Enter_Gathering_D.edt_BtCodeButtonClick(Sender: TObject);
begin
inherited;
CommonHint(Sender,AdoQry_Tmp,'BalanceTypeName','结算方式名称','BalanceTypeCode','结算方式代码','BalanceType');
end;
procedure TFrm_Ar_Enter_Gathering_D.edt_BtCodeChange(Sender: TObject);
begin
inherited;
btn_ok.Enabled:=True;
end;
procedure TFrm_Ar_Enter_Gathering_D.btn_okClick(Sender: TObject);
var sqltext:string;
begin
if not Add then
begin
sqltext:='select isnull(TotalCancelAmount,0)-('+Trim(edt_Amount.text)+') as ss from Ar_Gathering '
+' where Gatheringno='+quotedstr(Trim(edt_gatherno.text));
Executesql(AdoQry_tmp,sqltext,0) ;
if AdoQry_tmp.fieldbyname('ss').asfloat>0 then
begin
DispInfo('更改后的金额不能小于该收款单据已核销金额,请修改!',3);
edt_Amount.SetFocus;
abort;
end;
end;
inherited;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -