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

📄 pm_enter_freepo.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 3 页
字号:
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.DisableControls;
  AdoQry_Body.First;
  I:=1;
  While Not AdoQry_Body.Eof Do
  begin
    SqlText:=' Select Case when PcLine.FormalPricePass=1 then PcLine.PcTaxPrice_Formal '
              +'             else PcLine.PcTaxPrice   '
              +'        end as PcTaxPrice, '
              +'        Case When PcLine.FormalPricePass=1 then PcLine.PcNoTaxPrice_Formal '
              +'             else PcLine.PcNoTaxPrice '
              +'        end as PcNoTaxPrice, '
              +'        Case When PcLine.FormalPricePass=1 then 0 '
              +'             else  1 end as PcReferencedPrice '
            +' From PcLine '
            +' Where (ItemCode='''+Trim(AdoQry_Body.fieldbyname('ItemCode').AsString)+''''
            +' )And (PcNo='+QuotedStr(CurrentPcNo)+')'
            +' 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 Case when PcLine.FormalPricePass=1 then PcLine.PcTaxPrice_Formal '
              +'             else PcLine.PcTaxPrice   '
              +'        end as PcTaxPrice, '
              +'        Case When PcLine.FormalPricePass=1 then PcLine.PcNoTaxPrice_Formal '
              +'             else PcLine.PcNoTaxPrice '
              +'        end as PcNoTaxPrice, '
              +'        Case When PcLine.FormalPricePass=1 then 0 '
              +'             else  1 end as 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='+QuotedStr(CurrentPcNo)+')'
              +' 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)+'行数据有错,请修改!',1);
      AdoQry_Body.EnableControls;
      Abort;
    end;
    AdoQry_Body.Next;
    I:=I+1;
  end; //校验数据
  IF (AdoQry_Body.RecordCount=0) And (status='Add')  Then
  begin
    DispInfo('没有行数据,不能保存!',1);
      AdoQry_Body.EnableControls;
    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');
      Application.ProcessMessages;
      SqlText:='Insert Po '
              +' (PoNo,VendorCode,PcNO,referenceno,POType,PODate,'
              +'  POTaxRate_Percent,CurrencyCode,EmployeeCode, PoSpecial,CreateEmpolyeeCode,PORemArk)'
              +'  Values('
              +''''+Trim(Edt_PoNo.Text)+''''+','
              +''''+Trim(Edt_VendorCode.Text)+''''+','
              +QuotedStr(CurrentPcNo)+','
              +quotedstr(Trim(edt_rno.text))+','
              +''''+IntToStr(Cmbx_PoType.ItemIndex)+''''+','
              +''''+Medt_PoDate.Text+''''+','
              +''''+Trim(Edt_PoTax.Text)+''''+','
              +''''+Trim(Edt_CurrencyCode.Text)+''''+','
              +''''+Trim(Edt_EmployeeCode.Text)+''''+','
              +''''+'1'+''''+','
              +''''+UserCode+''','
              +''''+Trim(Edt_PoReMArk.Text)+''''+')';
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:=SqlText;
      AdoQry_Tmp.ExecSQL;   // Insert Po Table
      If Not  SavePoHistory1('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  SavePoLineHistory1('Add') Then
          Abort;
        If Cmbx_PoType.ItemIndex=1 Then //委外加工
{          IF Not AutoBuildOrder(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  //自动产生领料单
}
          IF Not NewAutoBuildopListOrder(DbConnect,Trim(Edt_PoNo.Text),IntToStr(AdoQry_Body.fieldbyname('PoLineNo').AsInteger),Trim(AdoQry_Body.fieldbyname('ItemCode').AsString),
             0,AdoQry_Body.fieldbyname('PoQty').Asfloat) Then  //自动产生领料单
             Abort;
        AdoQry_Body.Next;
      end;
    end;
    If CurrentFormStatus='PArtEdit' Then
    begin
      for  I:=0  to strinGlist.Count-1 do
      begin
        AdoQry_Temp.Connection := Dbconnect;
        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
           SavePoLineHistory(dbconnect,AdoQry_tmp.fieldbyname('pono').asstring,AdoQry_tmp.fieldbyname('polineno').asinteger,userCode,2); //保存历史记录
           

        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='+QuotedStr(CurrentPcNo)+','
              +' referenceno='+quotedstr(Trim(edt_rno.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= '+''''+'1'+''''+','
              +' 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  SavePoHistory1('Edit') Then
         Abort;
      AdoQry_Body.First;
      While Not AdoQry_Body.Eof Do
      begin
        If AdoQry_Body.fieldbyname('PoLineCheck').AsInteger = 1 then
        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'+''''+')'
        else         
        SqlText:=' UpDate PoLine '
                  +' Set PoNo='+''''+AdoQry_Head.fieldbyname('PoNo').AsString+''''+','
                  +' PoLineNo='+''''+IntToStr(AdoQry_Body.fieldbyname('POLineNo').AsInteger)+''''+','
                  +' polinestatus='+AdoQry_Body.fieldbyname('polinestatus').asstring+','
                  +' 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)+''''+','
                  +iifstring(AdoQry_Body.fieldbyname('polinestatus').asinteger=6,' ',' 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(POReferencedPrice)+''''
                  +' 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  SavePoLineHistory1('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  //自动产生领料单
}
          IF Not NewAutoBuildopListOrder(DbConnect,Trim(Edt_PoNo.Text),IntToStr(AdoQry_Body.fieldbyname('PoLineNo').AsInteger),Trim(AdoQry_Body.fieldbyname('ItemCode').AsString),
             1,AdoQry_Body.fieldbyname('PoQty').Asfloat) Then  //自动产生领料单
              Abort;
          end;
        AdoQry_Body.Next;
      end;
    end;
    DbConnect.CommitTrans;
    Act_Save.Enabled:=False;
    AdoQry_Body.EnableControls;
    DispInfo('数据保存成功!',3);
  Except
    on e:Exception do
    begin
      If DbConnect.InTransaction Then
        DbConnect.RollBackTrans;
        Edt_Pono.Text:='';
        RecOrderror(Self,AdoQry_tmp,E.message);
        AdoQry_Body.EnableControls;
        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
    fieldbyname('PoNo').AsString:=Trim(Edt_PoNo.Text);
    fieldbyname('PoDate').AsDateTime:=StrToDateTime(MEdt_PoDate.Text);
    fieldbyname('PcNo').AsString:=CurrentPcNo;
    fieldbyname('referenceno').asstring:=Trim(edt_rno.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:=1;
    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;
  end;//更新缓存
end;

⌨️ 快捷键说明

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