📄 ar_enter_noinvoiceshiporder_d.pas
字号:
if (Add) and (CheckAllTypeOrderNoSet(DbConnect,3)) then
Edt_InvBillNo.Text := GetAllTypeOrderNo(DbConnect,3); {自动获得单据号}
try
dbconnect.beginTrans;
if Add then
//新增
SqlText:='Insert InvOutBill '
+' (InvBillNo,InvBillDate,InvBillMonth,InvBillCreateTime,Sal_EmployeeCode,SaleEmployeeCode,DeptCode, '
+' CustomerCode,WhCode,WhPositionCode,ShipAddresSCode,ShipModeCode,SaleType,BillTypeCode,CurrencyCode,'
+' PayTermCode,InvBillTaxRate, ExchRate ,TotalInvBillNoTaxAmount,TotalInvBillNoTaxAmountC,TotalInvBillAmount, TotalInvBillAmountC, '
+' InvBillWhChCk,RemArk1,RemArk)'
+' Values('
+''''+Trim(Edt_InvBillNo.Text)+''','
+''''+Trim(MEdt_InvBillDate.Text)+''','
+QuotedStr(Copy(MEdt_InvBillDate.Text,1,7))+','
+''''+Trim(MEdt_InvBillDate.Text)+''','
+''''+UserCode+''','
+''''+Trim(Edt_SaleEmployeeCode.Text)+''','
+iifstring(Trim(edt_DeptCode.Text)='','null',quotedstr(Trim(Edt_DeptCode.Text)))+','
+iifstring(Trim(edt_CustomerCode.Text)='','null',quotedstr(Trim(Edt_CustomerCode.Text)))+','
+Quotedstr(Edt_WhCode.Text)+','
+QuotedStr(Edt_WhPositionCode.Text)+','
+''''+Trim(Edt_ShipAddresSCode.Text)+''','
+''''+Trim(Edt_ShipModeCode.Text)+''','
+''''+Trim(Edt_SaleTypeCode.Text)+''','
+QuotedStr('0204')+','
+iifstring(Trim(edt_CurrencyCode.Text)='','null',quotedstr(Trim(Edt_CurrencyCode.Text)))+','
+iifString(Trim(Edt_PayTermCode.Text)='','null',quotedstr(Trim(Edt_PayTermCode.Text)))+','
+''''+Trim(Edt_Rate.Text)+''','
+FloatToStr(ExchRate)+','
+FormatFloat('#####0.##',StrToFloat(Edt_InvBillNoTaxAmount.Text))+','
+FormatFloat('#####0.##',StrToFloat(Edt_InvBillNoTaxAmountC.Text))+','
+FormatFloat('#####0.##',StrToFloat(Trim(Edt_InvBillAmount.Text)))+','
+FormatFloat('#####0.##',StrToFloat(Edt_InvBillAmountC.Text))+','
+' 0,'
+''''+Trim(Edt_RemArk1.Text)+''','
+''''+Trim(Edt_RemArk.Text)+''')'
else
SqlText:='Update InvOutBill '
+' Set InvBillNo='''+Trim(Edt_InvBillNo.Text)+''','
+' InvBillCreateTime= '''+Trim(MEdt_CreateDate.Text)+''','
+' SaleEmployeeCode= '''+Trim(Edt_SaleEmployeeCode.Text)+''','
+' DeptCode= '+iifstring(Trim(edt_DeptCode.Text)='','null',quotedstr(Trim(Edt_DeptCode.Text)))+','
+' ShipAddresSCode= '''+Trim(Edt_ShipAddresSCode.Text)+''','
+' ShipModeCode= '''+Trim(Edt_ShipModeCode.Text)+''','
+' SaleType= '''+Trim(Edt_SaleTypeCode.Text)+''','
+' CurrencyCode= ' +iifstring(Trim(edt_CurrencyCode.Text)='','null',quotedstr(Trim(Edt_CurrencyCode.Text)))+','
+' PayTermCode= '''+Trim(Edt_PayTermCode.Text)+''','
+' InvBillTaxRate= '''+Trim(Edt_Rate.Text)+''','
+' ExchRate = ' +FloatToStr(ExchRate)+','
+' TotalInvBillNoTaxAmount= '+FormatFloat('#####0.##',StrToFloat(Trim(Edt_InvBillNoTaxAmount.Text)))+','
+' TotalInvBillAmount= '+FormatFloat('######0.##',StrToFloat(Trim(Edt_InvBillAmount.Text)))+','
+' TotalInvBillNoTaxAmountC= '+FormatFloat('#####0.##',StrToFloat(Trim(Edt_InvBillNoTaxAmountC.Text)))+','
+' TotalInvBillAmountC= '+FormatFloat('#####0.##',StrToFloat(Trim(Edt_InvBillAmountC.Text)))+','
+' InvBillRemArk = '+QuotedStr(Edt_RemArk.Text)+','
+' RemArk= '''+Trim(Edt_RemArk1.Text)+''','
+' RemArk1= '''+Trim(Edt_RemArk2.Text)+''','
+' CustomerCode='+iifstring(Trim(edt_CustomerCode.Text)='','null',quotedstr(Trim(Edt_CustomerCode.Text)))
+' Where InvBillNo='''+Trim(Edt_InvBillNo.Text)+'''';
ExecuteSql(AdoQry,SqlText,1);
if Assigned(AdoQry) then AdoQry.Free;
dbconnect.CommitTrans;
with AdoQry_Maintain do
begin
fieldbyname('InvBillNo').asstring:=Trim(edt_InvBillNo.text);
fieldbyname('InvBilldate').asstring:=medt_InvBilldate.Text;
fieldbyname('InvBillMonth').AsString := Medt_InvBillMonth.Text;
fieldbyname('customerCode').asstring:=Trim(edt_CustomerCode.text);
fieldbyname('customerName').asstring:=Trim(edt_CustomerName.text);
fieldbyname('currencyCode').asstring:=Trim(edt_CurrencyCode.text);
fieldbyname('currencyName').asstring:=Trim(edt_CurrencyName.text);
fieldbyname('WhCode').AsString := Edt_WhCode.Text;
fieldbyname('WhName').AsString := Edt_WhName.Text;
fieldbyname('WhPositionCode').AsString := Edt_WhPositionCode.Text;
fieldbyname('WhPositionName').AsString := Edt_WhPositionName.Text;
fieldbyname('SaleType').AsString := Edt_SaleTypeCode.Text;
fieldbyname('SaleTypeName').AsString := Edt_SaleTypeName.Text;
fieldbyname('ShipAddresSCode').AsString := Edt_ShipAddresSCode.Text;
fieldbyname('ShipAddressName').AsString := Edt_ShipAddressName.Text;
fieldbyname('ShipModeCode').AsString := Edt_ShipModeCode.Text;
fieldbyname('ShipModeName').AsString := Edt_ShipModeName.Text;
fieldbyname('PayTermCode').AsString := Edt_PayTermCode.Text;
fieldbyname('PayTermCode').AsString := Edt_PayTermName.Text;
fieldbyname('InvBillTaxRate').asfloat:=strtofloat(Trim(edt_Rate.text));
fieldbyname('TotalInvBillAmount').asfloat:=strtofloat( FormatFloat('######0.##',StrToFloat(Trim(edt_InvBillAmount.text))));
fieldbyname('TotalInvBillAmountC').asfloat:=strtofloat( FormatFloat('######0.##',StrToFloat(Trim(edt_InvBillAmountC.text))));
fieldbyname('TotalInvBillNoTaxAmount').asfloat:=strtofloat( FormatFloat('######0.##',StrToFloat(Trim(edt_InvBillNoTaxAmount.text))));
fieldbyname('TotalInvBillNoTaxAmountC').asfloat:=strtofloat( FormatFloat('######0.##',StrToFloat(Trim(edt_InvBillNoTaxAmountC.text))));
fieldbyname('DeptCode').asstring:=Trim(edt_DeptCode.text);
fieldbyname('DeptName').asstring:=Trim(edt_DeptName.text);
fieldbyname('SaleEmployeeCode').asstring:=Trim(edt_SaleEmployeeCode.text);
fieldbyname('EmployeeName').asstring:=Trim(edt_SaleEmployeeName.text);
fieldbyname('Sal_EmployeeCode').asstring:=Trim(edt_CreateEmployeeCode.text);
fieldbyname('createEmployeeName').asstring:=Trim(edt_CreateEmployeeName.text);
fieldbyname('InvBillCreateTime').asstring:=medt_Createdate.Text;
fieldbyname('InvBillRemArk').asstring:=Trim(edt_remArk.text);
fieldbyname('RemArk').AsString := Trim(Edt_RemArk1.Text);
fieldbyname('RemArk1').AsString := Trim(Edt_RemArk2.Text);
post;
end;
except
if dbconnect.InTransaction then
dbconnect.RollBackTrans;
if Assigned(AdoQry) then AdoQry.Free;
abort;
end;
end;
procedure TFrm_Ar_Enter_NoInvoiceShipOrder_D.SetStatus(CurrentStatus: String;
var EnableControls: String);
begin
inherited;
end;
procedure TFrm_Ar_Enter_NoInvoiceShipOrder_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_NoInvoiceShipOrder_D.edt_SaleEmployeeCodeExit(
Sender: TObject);
begin
inherited;
if Trim(Edt_SaleEmployeeCode.Text)='' then exit;
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_NoInvoiceShipOrder_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_NoInvoiceShipOrder_D.edt_DeptCodeExit(Sender: TObject);
begin
inherited;
if Trim(edt_DeptCode.text)='' then exit;
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_NoInvoiceShipOrder_D.edt_CustomerCodeExit(Sender: TObject);
var sqltext:string;
begin
inherited;
if Trim(Edt_CustomerCode.Text)='' then exit;
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(edt_CustomerCode).SetFocus;
Abort;
end;
edt_CustomerName.Text:=fieldbyname('customerName').asstring;
end;
if Add then
begin
SqlText:=' Select CustomerTaxRate_Percent,CustomerShipModeCode,ShipModeName,CustomerCurrencyCode,CurrencyName,'
+' CustomerPayTermCode,PayTermName,CustomerSaleTypeCode,SaleTypeName,'
+' CustomerSaleDeptCode,DeptName,CustomerSaleEmployeeCode,EmployeeName '
+' From Customer '
+' Left Join ShipMode '
+' On Customer.CustomerShipModeCode=ShipMode.ShipModeCode'
+' Left Join Currency '
+' On Customer.CustomerCurrencyCode=Currency.CurrencyCode '
+' Left Join PayTerm '
+' On Customer.CustomerPayTermCode=PayTerm.PayTermCode '
+' Left Join SaleType'
+' On Customer.CustomerSaleTypeCode=SaleType.SaleTypeCode '
+' Left Join Dept '
+' On Customer.CustomerSaleDeptCode=Dept.DeptCode '
+' Left Join Employee '
+' On Customer.CustomerSaleEmployeeCode=Employee.EmployeeCode '
+' Where CustomerCode='''+Edt_CustomerCode.Text+''' ';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.text:=SqlText;
AdoQry_Tmp.Open;
With AdoQry_Tmp do
begin
if Trim(Edt_DeptCode.Text)='' then
begin
Edt_DeptCode.Text := fieldbyname('CustomerSaleDeptCode').asstring;
Edt_DeptName.Text := fieldbyname('DeptName').asstring;
end;
if Trim(Edt_ShipModeCode.Text)='' then
begin
Edt_ShipModeCode.Text := fieldbyname('CustomerShipModeCode').asstring;
Edt_ShipModeName.Text := fieldbyname('ShipModeName').asstring;
end;
if Trim(Edt_SaleTypeCode.Text)='' then
begin
Edt_SaleTypeCode.Text := fieldbyname('CustomerSaleTypeCode').asstring;
Edt_SaleTypeName.Text :=fieldbyname('SaleTypeName').AsString;
end;
if Trim(Edt_SaleEmployeeCode.Text)=''then
begin
Edt_SaleEmployeeCode.Text := fieldbyname('CustomerSaleEmployeeCode').asstring;
Edt_SaleEmployeeName.Text := fieldbyname('EmployeeName').asstring;
end;
if Trim(Edt_PayTermCode.Text)='' then
begin
Edt_PayTermCode.Text := fieldbyname('CustomerPayTermCode').asstring;
Edt_PayTermName.Text := fieldbyname('PayTermName').asstring;
end;
if Trim(Edt_CurrencyCode.Text)='' then
begin
Edt_CurrencyCode.Text := fieldbyname('CustomerCurrencyCode').asstring;
Edt_CurrencyName.Text := fieldbyname('CurrencyName').asstring;
end;
edt_rate.Text:=FloatToStr(AdoQry_tmp.fieldbyname('CUSTOMERTAXRATE_PERCENT').AsFloat);
edt_rate.Text := iifString(edt_rate.text='0','17',edt_rate.Text);
end;
SqlText:=' Select ShipAddresSCode,ShipAddressName From CustomerShipAddress '
+' Where CustomerCode='''+Edt_CustomerCode.Text+''' ';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.text:=SqlText;
AdoQry_Tmp.Open;
with AdoQry_Tmp do
begin
if Trim(Edt_ShipAddresSCode.Text)='' then
begin
Edt_ShipAddresSCode.Text := fieldbyname('ShipAddresSCode').asstring;
Edt_ShipAddressName.Text := fieldbyname('ShipAddressName').asstring;
end;
end;
end;
end;
procedure TFrm_Ar_Enter_NoInvoiceShipOrder_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;
end;
end;
procedure TFrm_Ar_Enter_NoInvoiceShipOrder_D.edt_CurrencyCodeExit(Sender: TObject);
begin
inherited;
IF Trim(Edt_CurrencyCode.Text)<>'' Then
CurrencyCodeCheck(Sender);
ExchRate := 1;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.Text:=' Select CurrencyCode,CurrencyName,IsMaster from Currency '
+' where CurrencyCode= '''+Edt_CurrencyCode.Text+''' ';
AdoQry_Tmp.Open;
Edt_CurrencyName.Text := AdoQry_Tmp.fieldbyname('CurrencyName').AsString;
If AdoQry_Tmp.fieldbyname('IsMaster').AsInteger=1 then Exit;{如果是本位币则不用判断是否有外币汇率资料}
ExecuteSql(AdoQry_Tmp,' select * from ExchRate '
+ ' where CurrencyCode= '+QuotedStr(Edt_CurrencyCode.Text)
+ ' and ExchMonth= '+QuotedStr(copy(Medt_CreateDate.Text,1,7)),0);
if AdoQry_tmp.RecordCount=0 then
begin
DispInfo('没有该货币'+Copy(Medt_CreateDate.Text,1,7)+'月的外币汇率!',3);
If Edt_CurrencyCode.CanFocus then Edt_CurrencyCode.SetFocus;
Abort;
end;
ExchRate := AdoQry_Tmp.fieldbyname('ExchRate').AsFloat;
end;
procedure TFrm_Ar_Enter_NoInvoiceShipOrder_D.edt_BtCodeButtonClick(Sender: TObject);
begin
inherited;
CommonHint(Sender,AdoQry_Tmp,'BalanceTypeName','结算方式名称','BalanceTypeCode','结算方式代码','BalanceType');
end;
procedure TFrm_Ar_Enter_NoInvoiceShipOrder_D.edt_BtCodeChange(Sender: TObject);
begin
inherited;
btn_ok.Enabled:=True;
end;
procedure TFrm_Ar_Enter_NoInvoiceShipOrder_D.Edt_WhCodeKeyDown(
Sender: TObject; var Key: Word; Shift: TShiftState);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -