pm_enter_newfreepo.pas

来自「一个MRPII系统源代码版本」· PAS 代码 · 共 752 行 · 第 1/2 页

PAS
752
字号
    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,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)+''''+','
              +''''+'1'+''''+','
              +''''+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;
        OperationMOPO(AdoQry_Tmp,Trim(AdoQry_Body.fieldbyname('ItemCode').AsString),'po',1,
                     Trim(Edt_PoNo.Text),AdoQry_Body.fieldbyname('PoLineNo').AsInteger,AdoQry_Body.fieldbyname('POLINESTATUS').AsInteger,
                     0,AdoQry_Body.fieldbyname('PoQty').Asfloat,
                     AdoQry_Body.fieldbyname('PONoFinishQty').Asfloat,AdoQry_Body.fieldbyname('POStArtWorkDate').AsString,
                     AdoQry_Body.fieldbyname('POLineDATE').AsString,Cmbx_PoType.ItemIndex,Edt_VendorCode.text );
        If Not  SavePoLineHistory('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  //自动产生领料单
             Abort;
        AdoQry_Body.Next;
      end;
    end;
    If CurrentFormStatus='PArtEdit' Then
    begin
      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= '+''''+'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  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(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;
          OperationMOPO(AdoQry_Tmp,Trim(AdoQry_Body.fieldbyname('ItemCode').AsString),'po',2,
                        Trim(Edt_PoNo.Text),AdoQry_Body.fieldbyname('PoLineNo').AsInteger,AdoQry_Body.fieldbyname('POLINESTATUS').AsInteger,
                        0,AdoQry_Body.fieldbyname('PoQty').Asfloat,
                        AdoQry_Body.fieldbyname('PONoFinishQty').Asfloat,AdoQry_Body.fieldbyname('POStArtWorkDate').AsString,
                        AdoQry_Body.fieldbyname('POLineDATE').AsString,Cmbx_PoType.ItemIndex,Edt_VendorCode.text );

          If Not  SavePoLineHistory('Edit') Then
            Abort;
          If Cmbx_PoType.ItemIndex=1 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 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  //自动产生领料单
              Abort;
          end;
        AdoQry_Body.Next;
      end;
    end;
    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
    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:=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;


procedure TFrm_Pm_Enter_NewFreePo.FormCreate(Sender: TObject);
begin
  inherited;
  ExtendCaption:=False;
  Cmbx_PoType.Items.clear;
  Cmbx_PoType.Items.Add('0 普通采购');
  Cmbx_PoType.Items.Add('1 委外加工');
  Cmbx_PoType.Items.Add('2 进口采购');
  Cmbx_PoType.ItemIndex:=0;
  MEdt_PoDate.Text:=FormatDateTime('yyyy.mm.dd',Date);
  Frm_Entry_Detail:=TFrm_Pm_Enter_Po_D.Create(Self);
end;

procedure TFrm_Pm_Enter_NewFreePo.Act_SaveExecute(Sender: TObject);
begin
  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('PoQty').AsFloat<=0) And (Status='Add') Then
    begin
      DispInfo('记录'+IntToStr(AdoQry_Body.RecNo)+'的约定交货量小于等于了0,请修改!',1);
      Abort;
    end;
    AdoQry_Body.Next;
  end;
  inherited;

end;

procedure TFrm_Pm_Enter_NewFreePo.Act_PrintExecute(Sender: TObject);
begin
  Frm_Pm_Enter_Po_P:=TFrm_Pm_Enter_Po_P.Create(Application);
  Frm_Pm_Enter_Po_P.GetDataSource(DbConnect,Trim(Edt_PoNo.Text),'Print',MenuId);
end;

procedure TFrm_Pm_Enter_NewFreePo.Act_PreviewExecute(Sender: TObject);
begin
  Frm_Pm_Enter_Po_P:=TFrm_Pm_Enter_Po_P.Create(Application);
  Frm_Pm_Enter_Po_P.GetDataSource(DbConnect,Trim(Edt_PoNo.Text),'Preview',MenuId);
end;

procedure TFrm_Pm_Enter_NewFreePo.Edt_PcNoKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  If (key=120) Then
      CommOnHint(Sender,AdoQry_Body,'VendorName','供应商名称','PcNo',
             '采购价格单号',' Pc,Vendor ',' Pc.VendorCode=Vendor.VendorCode And Pc.PCNo In (Select PcNo From PcLine where pclinestatus=1) ');
end;

procedure TFrm_Pm_Enter_NewFreePo.Edt_PcNoExit(Sender: TObject);
var
  SqlText:String;
begin
  Frm_Entry_Detail.SetFormParam(Trim(Edt_PcNo.Text),IntToStr(Cmbx_PoType.ItemIndex),'','','','');
  If (ActiveControl.Name='DBGridEh') Or (ActiveControl.Name='ControlBar')  Then
    Exit;
  If Trim(TEdit(Sender).Text)='' Then
  begin
    DispInfo('采购价格单号不能为空!',1);
    TWincontrol(Sender).SetFocus;
    Abort;
  end;
  SqlText:=' Select Pc.*,Vendor.VendorName,Currency.CurrencyName '
            +' From PC,Vendor,Currency '
            +' Where PcNo='+''''+Trim(TEdit(Sender).Text)+''''
            +' And Currency.CurrencyCode=Pc.CurrencyCode '
            +' And Pc.VendorCode=Vendor.VendorCode And Pc.PcNo In (Select PcNo From PcLine Where PclineStatus=1) ';
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:=SqlText;
    AdoQry_Tmp.Open;
    If  AdoQry_Tmp.Eof Then
    begin
      DispInfo('采购价格单号错误,请重新输入!',1);
      TWincontrol(Sender).SetFocus;
      Abort;
    end;
    Edt_VendorName.Text:=AdoQry_Tmp.fieldbyname('VendorName').AsString;
    Edt_VendorCode.Text:=AdoQry_Tmp.fieldbyname('VendorCode').AsString;
    Edt_CurrencyCode.Text:=AdoQry_Tmp.fieldbyname('CurrencyCode').AsString;
    Edt_CurrencyName.Text:=AdoQry_Tmp.fieldbyname('CurrencyName').AsString;
    Edt_PoTax.Text:=IntToStr(AdoQry_Tmp.fieldbyname('PcTaxRate_Percent').AsInteger);
    Edt_PoRemArk.Text:=AdoQry_Tmp.fieldbyname('RemArk').AsString;
    CurrentPcNo:=Trim(Edt_PcNo.Text);
end;

procedure TFrm_Pm_Enter_NewFreePo.DataSourceDataChange(Sender: TObject;
  Field: TField);
begin
  inherited;
  Lbl_ItemFlag.Caption:=AdoQry_Body.fieldbyname('ItemCode').AsString+' '+AdoQry_Body.fieldbyname('ItemName').AsString;
  If (Status='Add') And (AdoQry_Body.RecordCount>0) Then
  begin
    Cmbx_PoType.Enabled:=False;
    Edt_PcNo.Enabled:=False;
  end;
  If (Status='Add') And (AdoQry_Body.RecordCount=0) Then
  begin
    Cmbx_PoType.Enabled:=True;
    Edt_PcNo.Enabled:=True;
  end;  
end;

procedure TFrm_Pm_Enter_NewFreePo.Act_ExcelExecute(Sender: TObject);
begin
  inherited;
  DbGridEhToExcel(DbGridEh);
end;

procedure TFrm_Pm_Enter_NewFreePo.Act_InsertLineExecute(Sender: TObject);
begin
  Frm_Entry_Detail.SetFormParam(Trim(Edt_PcNo.Text),IntToStr(Cmbx_PoType.ItemIndex),'','','','');
  inherited;
  If (Status='Add') And (AdoQry_Body.RecordCount>0) Then
  begin
    Cmbx_PoType.Enabled:=False;
    Edt_PcNo.Enabled:=False;
  end;
  If (Status='Add') And (AdoQry_Body.RecordCount=0) Then
  begin
    Cmbx_PoType.Enabled:=True;
    Edt_PcNo.Enabled:=True;
  end;  
end;

procedure TFrm_Pm_Enter_NewFreePo.Act_ModifyExecute(Sender: TObject);
begin
{  If (AdoQry_Body.fieldbyname('PoLineStatus').AsInteger<>5) Or
     (AdoQry_Body.fieldbyname('PoQty').AsFloat<>AdoQry_Body.fieldbyname('PoNoFinishQty').AsFloat) Then
  begin
    DispInfo('本条记录不可以修改',3);
    Abort;
  end;  }
  If (AdoQry_Body.fieldbyname('PoLineStatus').AsInteger=7) then
  begin
    DispInfo('本条记录处于关闭状态不可以修改',3);
    Abort;
  end;
  Frm_Entry_Detail.SetFormParam(Trim(Edt_PcNo.Text),IntToStr(Cmbx_PoType.ItemIndex),'','','','');
  inherited;

end;

procedure TFrm_Pm_Enter_NewFreePo.Act_DeleteLineExecute(Sender: TObject);
var
  BookMArk:String;
begin
  Inherited;
  If AdoQry_Body.RecordCount=0 Then
    Abort
  Else
    BookMArk:=AdoQry_Body.BookmArk;
  AdoQry_Body.First;
  While Not AdoQry_Body.Eof Do
  begin
    AdoQry_Body.Edit;
    AdoQry_Body.fieldbyname('PoLineNo').AsInteger:=AdoQry_Body.RecNo;
    AdoQry_Body.Post;
    AdoQry_Body.Next;
  end;
  AdoQry_Body.BookMArk:=BookmArk;
end;

procedure TFrm_Pm_Enter_NewFreePo.Vw_BuyerCodeCheck(Sender: TObject);
var
  SqlText:String;
begin
  inherited;
  SqlText:='Select EmployeeName From Employee Where EmployeeCode='''+Edt_EmployeeCode.Text+'''';
  AdoQry_Tmp.Close;
  AdoQry_Tmp.SQL.Text:=SqlText;
  AdoQry_Tmp.Open;
  Edt_BuyerName.Text:=AdoQry_Tmp.fieldbyname('EmployeeName').AsString;
end;

procedure TFrm_Pm_Enter_NewFreePo.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
 If AdoQry_Body.RecordCount =0 Then
  Act_Save.Enabled:=False;
 inherited;

end;

end.

⌨️ 快捷键说明

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