⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sal_enter_saleorder.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 4 页
字号:
  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 + -