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

📄 pm_enter_po.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 3 页
字号:
            +' And PoLine.PoNo='+''''+Trim(AdoQry_Head.fieldbyname('Pono').AsString)+''''
            +' Join Uom On Item.UomCode=Uom.UomCode '
            +' Order By PoLineNo ';
  AdoQry_Body.Close;
  AdoQry_Body.SQL.Text:=SqlText;
  AdoQry_Body.Open;
  Edt_Pono.Enabled:=False;
  Edt_VendorCode.Enabled:=False;
  Edt_Potax.Enabled:=False;
  Edt_CurrencyCode.Enabled:=False;
  Edt_BuyerName.Enabled:=False;
  Edt_VendorName.Enabled:=False;
end;


procedure TFrm_Pm_Enter_Po.SaveData;
var
  SqlText,CurrencyName,VendorName,EmployeeName,PoNo:String;
  I:Integer;
begin
  inherited;
  IF (AdoQry_Body.RecordCount=0) And (status='Add')  Then
  begin
    DispInfo('没有订单行数据,不能保存!',1);
    Abort;
  end;
  AdoQry_Body.First;
  I:=1;
  While Not AdoQry_Body.Eof Do
  begin
    SqlText:=' Select PcLine.PcTaxPrice,PcLine.PcNoTaxPrice,PcLine.PcReferencedPrice '
            +' From PcLine '
            +' Where (ItemCode='''+Trim(AdoQry_Body.fieldbyname('ItemCode').AsString)+''''
            +' )And (PcNo='''+Trim(Edt_PcNo.Text)+''')'
            +' And (PcLine.PcLineStatus=1)';
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:=SqlText;
    AdoQry_Tmp.Open;
    If AdoQry_Tmp.Eof Then
    begin
      If DispInfo('第'+IntToStr(I)+'行物料代码在相应的采购合同中找不到或不在批准状态,是否删除?',2)='y' Then
      begin
        AdoQry_Body.Delete;
        Continue;
      end
      Else
        Abort;
    end//在采购合同中不存在时的处理
    Else
    begin
      SqlText:=' Select PcLine.PcTaxPrice,PcLine.PcNoTaxPrice,PcLine.PcReferencedPrice '
              +' From PcLine '
              +' Where ('''+DateTimeToStr(AdoQry_Body.fieldbyname('PoLineDate').AsDateTime) +''' >= PcStArtDate '
              +' And '''+DateTimeToStr(AdoQry_Body.fieldbyname('PoLineDate').AsDateTime) +'''<=PcendDate) '
              +' And (('''+FloatToStr(AdoQry_Body.fieldbyname('PoQty').AsFloat)+'''>=PcStArtQty '
              +' And '''+FloatToStr(AdoQry_Body.fieldbyname('PoQty').AsFloat)+'''<PcendQty)'
              +' Or (PcStArtqty=0 And PcendQty=0)) '
              +' And (ItemCode='''+Trim(AdoQry_Body.fieldbyname('ItemCode').AsString)+''''
              +' )And (PcNo='''+Trim(Edt_PcNo.Text)+''') '
              +' And (PcLine.PcLineStatus=1)';
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:=SqlText;
      AdoQry_Tmp.Open;
      With AdoQry_Body Do
      begin
        Edit;
        fieldbyname('POREFERENCEDPRICE').AsInteger:=AdoQry_Tmp.fieldbyname('PcReferencedPrice').AsInteger;
        fieldbyname('PoNoTaxPrice').AsFloat:=AdoQry_Tmp.fieldbyname('PcNoTaxPrice').AsFloat;
        fieldbyname('PONoTaxAmount').AsFloat:=AdoQry_Tmp.fieldbyname('PcNoTaxPrice').AsFloat*fieldbyname('PoQty').AsFloat;
        fieldbyname('PoTaxPrice').AsFloat:=AdoQry_Tmp.fieldbyname('PcTaxPrice').AsFloat;
        fieldbyname('PoTaxAmount').AsFloat:=AdoQry_Tmp.fieldbyname('PcTaxPrice').AsFloat*fieldbyname('PoQty').AsFloat;
        Post;
      end;
    end;//存在时的处理
    If (AdoQry_Body.fieldbyname('PoQty').AsFloat<=0)
         And (Status='Add') Then
    begin
      DispInfo('第'+IntToStr(AdoQry_Body.RecNo)+'行约定交货量小于等于0,请修改!',1);
      Abort;
    end;
    AdoQry_Body.Next;
    I:=I+1;
  end; //校验数据
  IF (AdoQry_Body.RecordCount=0) And (status='Add')  Then
  begin
    DispInfo('没有行数据,不能保存!',1);
    Abort;
  end;
  DbConnect.beginTrans;
  Try
    AdoQry_Tmp.Close;
    If CurrentFormStatus='Add' Then
    begin
      PoNO:='P'+Trim(Copy(FormatDateTime('yyyy.mm.dd',Now),3,2))+Trim(Copy(FormatDateTime('yyyy.mm.dd',Now),6,2));
      Edt_PoNo.Text:=GetNo(DbConnect,PoNo,'Po');
      if edt_Pono.Text='' then
       abort;
      Application.ProcessMessages;
      SqlText:='Insert Po '
              +' (PoNo,VendorCode,PcNO,POType,PODate,'
              +'  POTaxRate_Percent,CurrencyCode,EmployeeCode, PoSpecial,CreateEmpolyeeCode,PORemArk)'
              +'  Values('
              +''''+Trim(Edt_PoNo.Text)+''','
              +''''+Trim(Edt_VendorCode.Text)+''','
              +''''+Trim(Edt_PcNo.Text)+''','
              +''''+IntToStr(Cmbx_PoType.ItemIndex)+''','
              +''''+Medt_PoDate.Text+''','
              +''''+Trim(Edt_PoTax.Text)+''','
              +''''+Trim(Edt_CurrencyCode.Text)+''','
              +''''+Trim(Edt_EmployeeCode.Text)+''','
              +'0,'
              +''''+UserCode+''','
              +''''+Trim(Edt_PoReMArk.Text)+''')';
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:=SqlText;
      AdoQry_Tmp.ExecSQL;   // Insert Po Table
      If Not SavePoHistory('Add') Then
        Abort;
      AdoQry_Body.First;
      While Not AdoQry_Body.Eof Do
      begin
        SqlText:='Insert PoLine '
                +' (PoNo,PoLineNo,ItemCode,POLineDate,PoStArtWorkDate,POQty,POTaxPrice, '
                +' POTaxAmount,PONoTaxPrice,PONoTaxAmount,PONoFinishQty,POReferencedPrice,POLineStatus )'
                +'Values('
                +''''+Trim(Edt_PoNo.Text)+''','
                +''''+IntToStr(AdoQry_Body.fieldbyname('PoLineNo').AsInteger)+''','
                +''''+AdoQry_Body.fieldbyname('ItemCode').AsString+''','
                +''''+DatetimeToStr(AdoQry_Body.fieldbyname('PoLineDate').AsDateTime)+''','
                +''''+DatetimeToStr(AdoQry_Body.fieldbyname('PoStArtWorkDate').AsDateTime)+''','
                +''''+FloatToStr(AdoQry_Body.fieldbyname('PoQty').AsFloat)+''','
                +''''+FloatToStr(AdoQry_Body.fieldbyname('POTaxPrice').AsFloat)+''','
                +''''+FloatToStr(AdoQry_Body.fieldbyname('POTaxAmount').AsFloat)+''','
                +''''+FloatToStr(AdoQry_Body.fieldbyname('PONoTaxPrice').AsFloat)+''','
                +''''+FloatToStr(AdoQry_Body.fieldbyname('PONoTaxAmount').AsFloat)+''','
                +''''+FloatToStr(AdoQry_Body.fieldbyname('PONoFinishQty').AsFloat)+''','
                +''''+IntToStr(AdoQry_Body.fieldbyname('POReferencedPrice').Asinteger)+''','
                +'5)';
        AdoQry_Tmp.Close;
        AdoQry_Tmp.SQL.Text:=SqlText;
        AdoQry_Tmp.ExecSQL;
        If Not  SavePoLineHistory('Add') Then //保存历史记录
          Abort;
        If Cmbx_PoType.ItemIndex=1 Then //委外加工
        begin
          IF Not AutoBuildopListOrder(DbConnect,Trim(Edt_PoNo.Text),Trim(AdoQry_Body.fieldbyname('ItemCode').AsString),IntToStr(AdoQry_Body.fieldbyname('PoLineNo').AsInteger),
             'Add','Po',AdoQry_Body.fieldbyname('PoQty').Asfloat) Then  //自动产生领料单
           Abort;
        end;
        AdoQry_Body.Next;
      end;
    end;
    If (CurrentFormStatus='PArtEdit') Then
    begin
     for  I:=0  to strinGlist.Count-1 do
     begin
       sqltext:=' Select * from  PoLine where pono+convert(varchAr,polineno)='''+strinGlist.Strings[i]+'''';
       AdoQry_Tmp.Close;
       AdoQry_Tmp.SQL.Text:=SqlText;
       AdoQry_Tmp.open;
       if not AdoQry_Tmp.Eof then
         If Not  SavePoLineHistory1('Delete',AdoQry_Tmp) Then //保存历史记录
           Abort;
       sqltext:=' Delete PoLine where pono+convert(varchAr,polineno)='''+strinGlist.Strings[i]+'''';
       AdoQry_Tmp.Close;
       AdoQry_Tmp.SQL.Text:=SqlText;
       AdoQry_Tmp.ExecSQL;

       sqltext:=' Delete opItemList where pono+convert(varchAr,polineno)='''+strinGlist.Strings[i]+'''';
       AdoQry_Tmp.Close;
       AdoQry_Tmp.SQL.Text:=SqlText;
       AdoQry_Tmp.ExecSQL;
     end;
     strinGlist.clear;

      SqlText:='Update Po '
              +' Set PoNo='''+AdoQry_Head.fieldbyname('PoNo').AsString+''','
              +' VendorCode= '''+Trim(Edt_VendorCode.Text)+''','
              +' PcNo='''+Trim(Edt_PcNo.Text)+''','
              +' POType='''+IntToStr(Cmbx_PoType.ItemIndex)+''','
              +' PoDate='''+MEdt_PoDate.Text+''','
              +' POTaxRate_Percent='''+Trim(Edt_PoTax.Text)+''','
              +' CurrencyCode= '''+Trim(Edt_CurrencyCode.Text)+''','
              +' EmployeeCode= '''+Trim(Edt_EmployeeCode.Text)+''','
              +' PoSpecial= 0,'
              +' PoReMArk= '''+Trim(Edt_PoRemArk.Text)+''''
              +' Where PoNo='''+AdoQry_Head.fieldbyname('PoNo').AsString+'''';
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:=SqlText;
      AdoQry_Tmp.ExecSQL;
      If Not  SavePoHistory('Edit') Then
         Abort;
      AdoQry_Body.First;
      While Not AdoQry_Body.Eof Do
      begin
        SqlText:=' UpDate PoLine '
                  +' Set PoNo='+''''+AdoQry_Head.fieldbyname('PoNo').AsString+''''+','
                  +' PoLineNo='+''''+IntToStr(AdoQry_Body.fieldbyname('POLineNo').AsInteger)+''''+','
                  +' ItemCode='+''''+AdoQry_Body.fieldbyname('ItemCode').AsString+''''+','
                  +' PoLineDate='+''''+DateTimeToStr(AdoQry_Body.fieldbyname('PoLineDate').AsDateTime)+''''+','
                  +' PostArtworkdate='''+DateTimeToStr(AdoQry_Body.fieldbyname('PostArtworkdate').AsDateTime)+''''+','
                  +' PoQty='+''''+FloatToStr(AdoQry_Body.fieldbyname('PoQty').AsFloat)+''''+','
                  +' PoNoFinishQty='+''''+FloatToStr(AdoQry_Body.fieldbyname('PoNoFinishQty').AsFloat)+''''+','
                  +' POTaxPrice='+''''+FloatToStr(AdoQry_Body.fieldbyname('POTaxPrice').AsFloat)+''''+','
                  +' POTaxAmount='+''''+FloatToStr(AdoQry_Body.fieldbyname('POTaxAmount').AsFloat)+''''+','
                  +' PONoTaxPrice='+''''+FloatToStr(AdoQry_Body.fieldbyname('PONoTaxPrice').AsFloat)+''''+','
                  +' PONoTaxAmount='+''''+FloatToStr(AdoQry_Body.fieldbyname('PONoTaxAmount').AsFloat)+''''+','
                  +' POReferencedPrice='''+IntToStr(AdoQry_Body.fieldbyname('POReferencedPrice').Asinteger)+''''
                  +' Where PoNo='+''''+AdoQry_Head.fieldbyname('PoNo').AsString+''''
                  +' And PoLineNo='+''''+AdoQry_Body.fieldbyname('PoLineNO').AsString+'''';
          AdoQry_Tmp.Close;
          AdoQry_Tmp.SQL.Text:=SqlText;
          AdoQry_Tmp.ExecSQL;
          If Not  SavePoLineHistory('Edit') Then
            Abort;
          If ((Cmbx_PoType.ItemIndex=1) and (AdoQry_Body.fieldbyname('polinestatus').asinteger=5)) Then //委外加工
          begin
//            Executesql(AdoQry_tmp,'delete from opItemList where pono='+quotedstr(Trim(edt_Pono.text))+' and polineno='+IntToStr(AdoQry_Body.fieldbyname('PoLineNo').AsInteger),1);
            IF Not AutoBuildopListOrder(DbConnect,Trim(Edt_PoNo.Text),Trim(AdoQry_Body.fieldbyname('ItemCode').AsString),IntToStr(AdoQry_Body.fieldbyname('PoLineNo').AsInteger),
                'Edit','Po',AdoQry_Body.fieldbyname('PoQty').Asfloat) Then  //自动产生领料单
              Abort;
          end;
        AdoQry_Body.Next;
      end; //end while
    end;  //end if

    DbConnect.CommitTrans;
    Act_Save.Enabled:=False;
    DispInfo('数据保存成功!',3);
  Except
    on e:Exception do
    begin
      If DbConnect.InTransaction Then
        DbConnect.RollBackTrans;
        Edt_Pono.Text:='';
        RecOrderror(Self,AdoQry_tmp,E.message);
        DispInfo('保存数据失败,请重试!',1);
        Abort;
    end ;
  end;
  SqlText:=' Select Employee.EmployeeName '
          +' From Buyer '
          +' Left Outer Join Employee On Buyer.EmployeeCode=Employee.EmployeeCode '
          +' Where Buyer.EmployeeCode='''+Trim(Edt_EmployeeCode.Text)+'''';
   AdoQry_Tmp.Close;
   AdoQry_Tmp.SQL.Text:=SqlText;
   AdoQry_Tmp.Open;
   If Not AdoQry_Tmp.Eof Then
     EmployeeName:=AdoQry_Tmp.fieldbyname('EmployeeName').AsString
   Else
     EmployeeName:='';
  SqlText:=' Select CurrencyName '
          +' From Currency '
          +' Where CurrencyCode='''+Trim(Edt_CurrencyCode.Text)+'''';
  AdoQry_Tmp.Close;
  AdoQry_Tmp.SQL.Text:=SqlText;
  AdoQry_Tmp.Open;
  If Not AdoQry_Tmp.Eof Then
    CurrencyName:=AdoQry_Tmp.fieldbyname('CurrencyName').AsString
  Else
    CurrencyName:='';
  SqlText:=' Select VendorName '
          +' From Vendor '
          +' Where VendorCode='''+Trim(Edt_VendorCode.Text)+'''';
  AdoQry_Tmp.Close;
  AdoQry_Tmp.SQL.Text:=SqlText;
  AdoQry_Tmp.Open;
  If Not AdoQry_Tmp.Eof Then
    VendorName:=AdoQry_Tmp.fieldbyname('VendorName').AsString
  Else
    VendorName:='';
  With AdoQry_Head Do
  begin
    AdoQry_Head.edit;
    fieldbyname('PoNo').AsString:=Trim(Edt_PoNo.Text);
    fieldbyname('PoDate').AsDateTime:=StrToDateTime(MEdt_PoDate.Text);
    fieldbyname('PcNo').AsString:=Edt_PcNo.Text;
    fieldbyname('VendorCode').AsString:=Edt_VendorCode.Text;
    fieldbyname('PoType').AsInteger:=Cmbx_PoType.ItemIndex;
    fieldbyname('EmployeeCode').AsString:=Edt_EmployeeCode.Text;
    fieldbyname('CurrencyCode').AsString:=Edt_CurrencyCode.Text;
    fieldbyname('PoSpecial').AsInteger:=0;
    fieldbyname('POTaxRate_Percent').AsInteger:=StrToInt(Edt_PoTax.Text);
    fieldbyname('PoRemArk').AsString:=Edt_PoRemArk.Text;
    fieldbyname('CurrencyName').AsString:=CurrencyName;
    fieldbyname('VendorName').AsString:=VendorName;
    fieldbyname('EmployeeName').AsString:=EmployeeName;
    AdoQry_Head.Post; 
  end;//更新缓存
  Act_DeleteLine.Enabled := False;
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -