📄 sal_enter_saleorder.pas
字号:
end;
IF Trim(Edt_CustomerCode.Text)='' Then
begin
DispInfo('销售客户不能为空!',3);
Edt_CustomerCode.SetFocus;
Abort;
end;
IF Trim(MEdt_CreateDate.Text)='' Then
begin
DispInfo('下单日期不能为空!',3);
MEdt_CreateDate.SetFocus;
Abort;
end;
IF Trim(Edt_TaxRate_Percent.Text)='' Then
begin
DispInfo('销售税率不能为空!',3);
Edt_TaxRate_Percent.SetFocus;
Abort;
end;
IF Trim(Edt_CurrencyCode.Text)='' Then
begin
DispInfo('货币不能为空!',3);
Edt_CurrencyCode.SetFocus;
Abort;
end;
IF (CurrentFormStatus='Add') then
begin
SqlText:= 'Select SloNo '+
'From Sa_SaleOrder '+
'Where SloNo='''+Edt_SloNo.Text+'''';
ExecuteSql(AdoQry_Tmp,SqlText,0);
IF Not AdoQry_Tmp.Eof Then
begin
DispInfo('销售订单号重复!',3);
Edt_SloNo.SetFocus;
Abort;
end;
end;
IF AdoQry_Body.RecordCount=0 Then
begin
DispInfo('没有行数据,不能保存!',1);
Abort;
end;
AdoQry_Body.First;
While Not AdoQry_Body.Eof Do
begin
IF (AdoQry_Body.fieldbyname('SloQty').AsFloat<=0) And (Status='Add') Then
begin
DispInfo('第'+IntToStr(AdoQry_Body.RecNo)+'行数据约定交货量必须大于0,请修改!',1);
Abort;
end;
AdoQry_Body.Next;
end; //校验数据
DbConnect.beginTrans;
Try
AdoQry_Tmp.Close;
If CurrentFormStatus='Add' Then
begin
Application.ProcessMessages;
SqlText:='Insert Sa_SaleOrder '
+' (SloNo,CreateDate,EditDate,CreateEmployeeCode,EdItEmployeeCode,SaleEmployeeCode,SaleDeptCode, '
+' CustomerCode,ShipAddresSCode,ShipModeCode,SaleTypeCode,CurrencyCode,'
+' PayTermCode,ExchRate,TaxRate_Percent,TotalNoTaxAmount,TotalTaxAmount,TotalNoTaxAmountC,TotalTaxAmountC, '
+' RemArk1,RemArk,customerPmno,referenceno)'
+' Values('
+''''+Trim(Edt_SloNo.Text)+''','
+''''+Trim(MEdt_CreateDate.Text)+''','
+''''+Trim(MEdt_CreateDate.Text)+''','
+''''+UserCode+''','
+''''+UserCode+''','
+iifstring(Trim(Edt_SaleEmployeeCode.Text)='','null',quotedstr(Trim(Edt_SaleEmployeeCode.Text)))+','
+iifstring(Trim(Edt_SaleDeptCode.Text)='','null',quotedstr(Trim(Edt_SaleDeptCode.Text)))+','
+iifstring(Trim(Edt_CustomerCode.Text)='','null',quotedstr(Trim(Edt_CustomerCode.Text)))+','
+iifstring(Trim(Edt_ShipAddresSCode.Text)='','null',quotedstr(Trim(Edt_ShipAddresSCode.Text)))+','
+iifstring(Trim(Edt_ShipModeCode.Text)='','null',quotedstr(Trim(Edt_ShipModeCode.Text)))+','
+iifstring(Trim(Edt_SaleTypeCode.Text)='','null',quotedstr(Trim(Edt_SaleTypeCode.Text)))+','
+iifstring(Trim(Edt_CurrencyCode.Text)='','null',quotedstr(Trim(Edt_CurrencyCode.Text)))+','
+iifstring(Trim(Edt_PayTermCode.Text)='','null',quotedstr(Trim(Edt_PayTermCode.Text)))+','
+FloatToStr(ExchRate)+','
+''''+Trim(Edt_TaxRate_Percent.Text)+''','
+''''+Trim(Edt_TotalNoTaxAmount.Text)+''','
+''''+Trim(Edt_TotalTaxAmount.Text)+''','
+FloatToStr(StrToFloat(Edt_TotalNoTaxAmount.Text)*ExchRate)+','
+FloatToStr(StrToFloat(Edt_TotalTaxAmount.Text)*ExchRate)+','
+''''+Trim(Edt_RemArk1.Text)+''','
+''''+Trim(Edt_RemArk.Text)+''','
+quotedstr(Trim(edt_CustomerPmno.text))+','+quotedstr(Trim(edt_referenceno.text))+')';
ExecuteSql(AdoQry_Tmp,SqlText,1); // Insert Sa_SaleOrder Table
SaveSaleOrderHistory(dbconnect,Trim(edt_SloNo.text),userCode,0);
sqltext:='update customer with(rowlock) '
+' set SaleOrderSumTotal=IsNull(SaleOrderSumTotal,0)+'+edt_TotaltaxAmount.Text
+' where CustomerCode='+quotedstr(Edt_CustomerCode.Text);
ExecuteSql(AdoQry_Tmp,sqltext,1);
AdoQry_Body.First;
While Not AdoQry_Body.Eof Do
begin
{Select SloNo,SloLineNo,ItemCode,SloQty,ShipQty,PrepareShipQty,LastOperationTime,SloCheck,NoTaxPrice,NoTaxAmount,TaxPrice,
TaxAmount,SloLineDate,SloLineStatus,DiSCountRate,DiSCountAmount,SloLineRemArk
from Sa_SaleOrderLine }
SqlText:='Insert Sa_SaleOrderLine '
+' (SloNo,SloLineNo,ItemCode,SloQty,Shipdays,NoTaxPrice,NoTaxAmount,TaxPrice,'
+' ShipQty,PrepareShipQty,LastOperationTime,'
+' TaxAmount,NoTaxAmountC,TaxAmountC,SloLineDate,SloLineStatus,DiSCountRate,DiSCountAmount,SloLineRemArk,SloCheck)'
+'Values('
+''''+Trim(Edt_SloNo.Text)+''','
+''''+IntToStr(AdoQry_Body.fieldbyname('SloLineNo').AsInteger)+''','
+''''+AdoQry_Body.fieldbyname('ItemCode').AsString+''','
+''''+AdoQry_Body.fieldbyname('SloQty').AsString+''','
+inttostr(AdoQry_Body.fieldbyname('Shipdays').asinteger)+','
+''''+AdoQry_Body.fieldbyname('NoTaxPrice').AsString+''','
+''''+FloatToStr(AdoQry_Body.fieldbyname('NoTaxAmount').AsFloat)+''','
+''''+FloatToStr(AdoQry_Body.fieldbyname('TaxPrice').AsFloat)+''','
+''''+FloatToStr(AdoQry_Body.fieldbyname('ShipQty').AsFloat)+''','
+'0,'
+''''+FormatDateTime('yyyy.mm.dd',Date())+''','
+''''+AdoQry_Body.fieldbyname('TaxAmount').AsString+''''+','
+FloatToStr(AdoQry_Body.fieldbyname('NoTaxAmount').AsFloat*ExchRate)+','
+FloatToStr(AdoQry_Body.fieldbyname('TaxAmount').AsFloat*ExchRate)+','
+''''+AdoQry_Body.fieldbyname('SloLineDate').AsString+''''+','
+''''+AdoQry_Body.fieldbyname('SloLineStatus').AsString+''''+','
+''''+AdoQry_Body.fieldbyname('DiSCountRate').AsString+''''+','
+''''+AdoQry_Body.fieldbyname('DiSCountAmount').AsString+''''+','
+''''+AdoQry_Body.fieldbyname('SloLineRemArk').AsString+''''+','
+'0)';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
SaveSaleOrderLineHistory(dbconnect,Trim(edt_SloNo.text),AdoQry_Body.fieldbyname('SloLineNo').asinteger,userCode,0);
AdoQry_Body.Next;
end;
end;
If CurrentFormStatus='PArtEdit' Then
begin
SaveSaleOrderHistory(dbconnect,Trim(edt_SloNo.text),userCode,1);
SqlText:='Update Sa_SaleOrder '
+' Set SloNo='''+Trim(Edt_SloNo.Text)+''','
+' CreateDate= '''+Trim(MEdt_CreateDate.Text)+''','
+' SaleEmployeeCode= '+iifstring(Trim(Edt_SaleEmployeeCode.Text)='','null',quotedstr(Trim(Edt_SaleEmployeeCode.Text)))+','
+' SaleDeptCode= '+iifstring(Trim(Edt_SaleDeptCode.Text)='','null',quotedstr(Trim(Edt_SaleDeptCode.Text)))+','
+' ShipAddresSCode= '+iifstring(Trim(Edt_ShipAddresSCode.Text)='','null',quotedstr(Trim(Edt_ShipAddresSCode.Text)))+','
+' ShipModeCode= '+iifstring(Trim(Edt_ShipModeCode.Text)='','null',quotedstr(Trim(Edt_ShipModeCode.Text)))+','
+' SaleTypeCode= '+iifstring(Trim(Edt_SaleTypeCode.Text)='','null',quotedstr(Trim(Edt_SaleTypeCode.Text)))+','
+' CurrencyCode= '+iifstring(Trim(Edt_CurrencyCode.Text)='','null',quotedstr(Trim(Edt_CurrencyCode.Text)))+','
+' PayTermCode= '+iifstring(Trim(Edt_PayTermCode.Text)='','null',quotedstr(Trim(Edt_PayTermCode.Text)))+','
+' TaxRate_Percent= '''+Trim(Edt_TaxRate_Percent.Text)+''','
+' TotalNoTaxAmount= '''+Trim(Edt_TotalNoTaxAmount.Text)+''','
+' TotalTaxAmount= '''+Trim(Edt_TotalTaxAmount.Text)+''','
+' TotalNoTaxAmountC=ExchRate*('+Edt_TotalNoTaxAmount.Text+'),'
+' TotalTaxAmountC=ExchRate*('+Edt_TotalTaxAmount.Text+'),'
+' RemArk= '''+Trim(Edt_RemArk.Text)+''','
+' RemArk1= '''+Trim(Edt_RemArk1.Text)+''','
+' referenceno='+quotedstr(Trim(edt_referenceno.text))+','
+' customerPmno='+quotedstr(Trim(edt_CustomerPmno.text))+','
+' EditDate= '''+FormatDateTime('yyyy.mm.dd',Date())+''','
+' EdItEmployeeCode= '''+UserCode+''','
+' CustomerCode='''+Edt_CustomerCode.Text+''''
+' Where SloNo='''+AdoQry_Head.fieldbyname('SloNo').AsString+'''';
ExecuteSql(AdoQry_Tmp,SqlText,1);
SqlText:='Update Customer with(rowlock)'
+' Set SaleOrderSumTotal=IsNull(SaleOrderSumTotal,0)+'+Edt_TotalTaxAmount.Text+'-('+TmpTaxAmount+')'
+' Where CustomerCode='+QuotedStr(Edt_CustomerCode.text);
ExecuteSql(AdoQry_Tmp,SqlText,1) ;
AdoQry_Body.First;
While Not AdoQry_Body.Eof Do
begin
If AdoQry_Body.fieldbyname('SloCheck').AsInteger = 0 then
begin
SaveSaleOrderLineHistory(dbconnect,Trim(edt_SloNo.text),AdoQry_Body.fieldbyname('SloLineNo').asinteger,userCode,1);
ExecuteSql(AdoQry_Tmp,'select ExchRate from Sa_SaleOrder where SloNo='+QuotedStr(Edt_SloNo.Text),0) ;
SqlText:=' UpDate Sa_SaleOrderLine '
+' Set '
+' SloNo='''+AdoQry_Body.fieldbyname('SloNo').AsString+''','
+' SloLineNo='''+IntToStr(AdoQry_Body.fieldbyname('SloLineNo').AsInteger)+''','
+' ItemCode='''+AdoQry_Body.fieldbyname('ItemCode').AsString+''','
+' Shipdays='+inttostr(AdoQry_Body.fieldbyname('Shipdays').asinteger)+','
+' SloQty='''+AdoQry_Body.fieldbyname('SloQty').AsString+''','
+' NoTaxPrice='''+AdoQry_Body.fieldbyname('NoTaxPrice').AsString+''','
+' NoTaxAmount='''+FloatToStr(AdoQry_Body.fieldbyname('NoTaxAmount').AsFloat)+''','
+' NoTaxAmountC='+FloatToStr(AdoQry_Tmp.fieldbyname('ExchRate').AsFloat)+'*('+FloatToStr(AdoQry_Body.fieldbyname('NoTaxAmount').AsFloat)+'),'
+' TaxPrice='''+FloatToStr(AdoQry_Body.fieldbyname('TaxPrice').AsFloat)+''','
+' SloLineDate='''+AdoQry_Body.fieldbyname('SloLineDate').AsString+''','
+' SloLineStatus='''+AdoQry_Body.fieldbyname('SloLineStatus').AsString+''','
+' DiSCountRate='''+AdoQry_Body.fieldbyname('DiSCountRate').AsString+''','
+' DiSCountAmount='''+AdoQry_Body.fieldbyname('DiSCountAmount').AsString+''','
+' SloLineRemArk='''+AdoQry_Body.fieldbyname('SloLineRemArk').AsString+''','
+' ShipQty='''+AdoQry_Body.fieldbyname('ShipQty').AsString+''','
+' PrepareShipQty='''+AdoQry_Body.fieldbyname('PrepareShipQty').AsString+''','
+' LastOperationTime='''+FormatDateTime('yyyy.mm.dd',date())+''', '
+' TaxAmountC='+FloatToStr(AdoQry_Tmp.fieldbyname('ExchRate').AsFloat)+'*('+FloatToStr(AdoQry_Body.fieldbyname('TaxAmount').AsFloat)+'),'
+' TaxAmount='''+AdoQry_Body.fieldbyname('TaxAmount').AsString+''''
+' Where SloNo='''+AdoQry_Body.fieldbyname('SloNo').AsString+''''
+' And SloLineNo='''+AdoQry_Body.fieldbyname('SloLineNo').AsString+'''';
ExecuteSql(AdoQry_Tmp,SqlText,1)
end
else begin
SqlText:='Insert Sa_SaleOrderLine '
+' (SloNo,SloLineNo,ItemCode,SloQty,Shipdays,NoTaxPrice,NoTaxAmount,TaxPrice,'
+' ShipQty,PrepareShipQty,LastOperationTime,'
+' TaxAmount,NoTaxAmountC,TaxAmountC,SloLineDate,SloLineStatus,DiSCountRate,DiSCountAmount,SloLineRemArk,SloCheck)'
+'Values('
+''''+Trim(Edt_SloNo.Text)+''','
+''''+IntToStr(AdoQry_Body.fieldbyname('SloLineNo').AsInteger)+''','
+''''+AdoQry_Body.fieldbyname('ItemCode').AsString+''','
+''''+AdoQry_Body.fieldbyname('SloQty').AsString+''','
+inttostr(AdoQry_Body.fieldbyname('Shipdays').asinteger)+','
+''''+AdoQry_Body.fieldbyname('NoTaxPrice').AsString+''','
+''''+FloatToStr(AdoQry_Body.fieldbyname('NoTaxAmount').AsFloat)+''','
+''''+FloatToStr(AdoQry_Body.fieldbyname('TaxPrice').AsFloat)+''','
+''''+FloatToStr(AdoQry_Body.fieldbyname('ShipQty').AsFloat)+''','
+'0,'
+''''+FormatDateTime('yyyy.mm.dd',Date())+''','
+''''+AdoQry_Body.fieldbyname('TaxAmount').AsString+''''+','
+FloatToStr(AdoQry_Body.fieldbyname('NoTaxAmount').AsFloat*ExchRate)+','
+FloatToStr(AdoQry_Body.fieldbyname('TaxAmount').AsFloat*ExchRate)+','
+''''+AdoQry_Body.fieldbyname('SloLineDate').AsString+''''+','
+''''+AdoQry_Body.fieldbyname('SloLineStatus').AsString+''''+','
+''''+AdoQry_Body.fieldbyname('DiSCountRate').AsString+''''+','
+''''+AdoQry_Body.fieldbyname('DiSCountAmount').AsString+''''+','
+''''+AdoQry_Body.fieldbyname('SloLineRemArk').AsString+''''+','
+'0)';
ExecuteSql(AdoQry_Tmp,SqlText,1);
SaveSaleOrderLineHistory(dbconnect,Trim(edt_SloNo.text),AdoQry_Body.fieldbyname('SloLineNo').asinteger,userCode,0);
end;
AdoQry_Body.Next;
end;
SqlText := 'Delete from Sa_SaleOrderLine '
+' where SloNo+'':''+Convert(varchAr,SloLineNo) In ('+DeletedSloLIne+')';
ExecuteSql(AdoQry_Tmp,SqlText,1);
end;
DbConnect.CommitTrans;
Act_Save.Enabled:=False;
DispInfo('数据保存成功!',3);
Except
on e:exception do
begin
DbConnect.RollBackTrans;
recOrderror(self,AdoQry_tmp,e.message);
Edt_SloNo.Text:='';
DispInfo('保存数据失败,请重试!',1);
Abort;
end;
end;
with AdoQry_Head do
begin
fieldbyname('SloNo').AsString:=Edt_SloNo.Text;
fieldbyname('CustomerCode').AsString:=Edt_CustomerCode.Text;
fieldbyname('CustomerName').AsString:=Edt_CustomerName.text;
fieldbyname('TotalNoTaxAmount').AsString:=Edt_TotalNoTaxAmount.Text ;
fieldbyname('TotalTaxAmount').AsString:=Edt_TotalTaxAmount.Text ;
fieldbyname('referenceno').asstring:=Trim(edt_referenceno.text);
fieldbyname('customerPmno').asstring:=Trim(edt_CustomerPmno.text);
if Status='Add' Then
begin
fieldbyname('CreateEmployeeCode').AsString:=UserCode;
fieldbyname('CreateDate').Asstring:=MEdt_CreateDate.Text;
end
else
begin
end;
fieldbyname('SaleDeptCode').AsString:=Edt_SaleDeptCode.Text;
fieldbyname('DeptName').AsString:=Lab_SaleDeptName.Caption;
// fieldbyname('SaleDeptFalg').AsString:=Edt_SaleDeptCode.Text+' '+Lab_SaleDeptName.Caption;
fieldbyname('SaleTypeCode').AsString:=Edt_SaleTypeCode.Text;
fieldbyname('SaleEmployeeCode').AsString:=Edt_SaleEmployeeCode.Text;
fieldbyname('EmployeeName').AsString:= Lab_SaleEmployeeName.Caption;
// fieldbyname('SaleEmployeeFalg').AsString:=Edt_SaleEmployeeCode.Text+' '+Lab_SaleEmployeeName.Caption;
fieldbyname('CurrencyCode').AsString:=Edt_CurrencyCode.Text;
fieldbyname('CurrencyName').AsString:=Lab_CurrencyName.Caption;
// fieldbyname('CurrencyFalg').AsString:=Edt_CurrencyCode.Text+' '+Lab_CurrencyName.Caption;
fieldbyname('TaxRate_Percent').AsString:=Edt_TaxRate_Percent.Text;
fieldbyname('ShipModeCode').AsString:=Edt_ShipModeCode.Text;
fieldbyname('ShipModeName').AsString:=edt_ShipModeName.text;
// fieldbyname('ShipModeFalg').AsString:=Edt_ShipModeCode.Text+' '+Lab_ShipModeName.Caption;
fieldbyname('ShipAddresSCode').AsString:=Edt_ShipAddresSCode.Text;
fieldbyname('ShipAddressName').AsString:=Lab_ShipAddressName.Caption;
// fieldbyname('ShipAddressFalg').AsString:=Edt_ShipAddresSCode.Text+' '+Lab_ShipAddressName.Caption;
fieldbyname('PayTermCode').AsString:=Edt_PayTermCode.Text;
fieldbyname('PayTermName').AsString:=Lab_SaleTermName.Caption;
//fieldbyname('SaleTermFalg').AsString:=Edt_PayTermCode.Text+' '+Lab_SaleTermName.Caption;
fieldbyname('RemArk').AsString:=Edt_RemArk.Text;
fieldbyname('RemArk1').AsString:=Edt_RemArk1.Text;
end;
TmpTaxAmount:=Edt_TotalTaxAmount.Text;
end;
procedure TFrm_Sal_Enter_SaleOrder.SetStatus(CurrentStatus: String;
var AnswerStatus, EnableControls: String);
begin
inherited;
If Status<>'Add' then
begin
CurrentFormStatus:='PArtEdit';
SetFocus_Control:=Edt_CustomerCode;
end
Else
begin
CurrentFormStatus:='Add';
SetFocus_Control:=Edt_SloNo;
end;
if Currentstatus='Add' then
begin
AnswerStatus:='Add';
EnableControls:='Edt_SloNo,Edt_CustomerCode,Edt_CreateEmployeeCode,'
+' MEdt_CreateDate, Edt_SaleDeptCode, Edt_SaleTypeCode,'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -