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

📄 pm_enter_newautopo2.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 3 页
字号:
unit Pm_Enter_NewAutoPo2;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Entry_Body, Db, ActnList, AdODB, Grids, DBGridEh, StdCtrls,
  ExtCtrls, ComCtrls, ToolWin, Mask, ExtPrintReport, linkedit, jpeg;

Type
  TFrm_Pm_Enter_NewAutoPo2 = Class(TFrm_Base_Entry_Body)
    AdoQry_Head1: TAdoQuery;
    DBGridEh1: TDBGridEh;
    AdoQry_BodyPONO: TStringField;
    AdoQry_BodyPOLINENo: TIntegerField;
    AdoQry_BodyItemCode: TStringField;
    AdoQry_BodyPOLineDATE: TDateTimeField;
    AdoQry_BodyPOQTY: TFloatField;
    AdoQry_BodyPONoFinishQty: TFloatField;
    AdoQry_BodyPOREFERENCEDPRICE: TIntegerField;
    AdoQry_BodyPOLINESTATUS: TIntegerField;
    AdoQry_BodyPoNoTaxPrice: TFloatField;
    AdoQry_BodyPONoTaxAmount: TBCDField;
    AdoQry_BodyPoTaxPrice: TFloatField;
    AdoQry_BodyPoTaxAmount: TBCDField;
    AdoQry_BodyPOStArtWorkDate: TDateTimeField;
    AdoQry_BodyItemName: TStringField;
    AdoQry_BodyUomName: TStringField;
    AdoQry_Temp: TAdoQuery;
    Label8: TLabel;
    Lbl_LineNo: TLabel;
    Label13: TLabel;
    Lbl_ItemFlag: TLabel;
    Label15: TLabel;
    Lbl_PoQty: TLabel;
    AdoQry_BodyMaxQty: TFloatField;
    AdoQry_BodyLimItOut: TIntegerField;
    AdoQry_BodySsId: TIntegerField;
    AdoQry_BodySsQty: TFloatField;
    Label1: TLabel;
    Edt_PoNo: TEdit;
    Label2: TLabel;
    MEdt_PoDate: TMaskEdit;
    Label3: TLabel;
    Edt_PcNo: TLinkEdit;
    Label9: TLabel;
    Edt_Potax: TEdit;
    Label5: TLabel;
    Cmbx_PoType: TComboBox;
    Edt_CurrencyName: TEdit;
    Edt_CurrencyCode: TEdit;
    Label7: TLabel;
    Edt_BuyerName: TEdit;
    Edt_EmployeeCode: TLinkEdit;
    Label6: TLabel;
    Label4: TLabel;
    Edt_VendorCode: TEdit;
    Edt_VendorName: TEdit;
    Label11: TLabel;
    Edt_PoRemArk: TEdit;
    edt_rno: TEdit;
    Label12: TLabel;
    procedure Act_QuitExecute(Sender: TObject);
    procedure Act_SaveExecute(Sender: TObject);
    procedure Edt_MoRemArkExit(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Act_DeleteLineExecute(Sender: TObject);
    procedure Act_PrintExecute(Sender: TObject);
    procedure Act_PreviewExecute(Sender: TObject);
    procedure PcCodeCheck(Sender: TObject);
    procedure Edt_PcNoExit(Sender: TObject);
    procedure Edt_PcNoKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edt_EmployeeCodeExit(Sender: TObject);
    procedure DataSourceDataChange(Sender: TObject; Field: TField);
    procedure Act_ExcelExecute(Sender: TObject);
    procedure Act_InsertLineExecute(Sender: TObject);
    procedure Act_ModifyExecute(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormActivate(Sender: TObject);
    procedure Edt_PcNoButtonClick(Sender: TObject);
  private
    CurrentPcNo:String;//当前采购价格单号
    CurrentFormStatus:String;//当前窗体状态
    Function SavePoHistory(Status:String):Boolean;//保存历史记录
    Function SavePoLineHistory(Status:String):Boolean;//保存历史记录
    function updatessreMainqty(ItemCode:string;sid,eid:integer;poqty:real;istmp:integer):boolean;
    function updatec_Ss4reMainqty(ItemCode:string;sid,eid:integer;poqty:real):boolean;
    { Private declarations }
  public
    procedure InitControls; Override;
    procedure SetFormParam(FrmParam1,FrmParam2,FrmParam3,FrmParam4,FrmParam5,FrmParam6:String);Override;
    procedure InitForm(AdOConnection:TAdOConnection;FormStatus:String;
      AdoQuery:TAdoQuery);Override;
    procedure SetStatus(CurrentStatus:String;var AnswerStatus,EnableControls:String);Override;
      { Public declarations }
  end;

var
  Frm_Pm_Enter_NewAutoPo2: TFrm_Pm_Enter_NewAutoPo2;

implementation

uses  Sys_Global, Pm_Enter_AutoPo_D, Pm_Enter_Po_P, Pm_Enter_NewSsPoInfo,
  Pm_Enter_NewSsPoInfo1, Pm_Enter_NewSsPoInfo2, Pm_Enter_NewSsPoInfo3,
  Pm_Enter_NewSsPoInfo4, Mrp_Global;

{$R *.DFM}
procedure TFrm_Pm_Enter_NewAutoPo2.SetStatus(CurrentStatus:String;var AnswerStatus,EnableControls:String);
begin
  Inherited;
  if Currentstatus='Add' then
  begin
    AnswerStatus:='Add';
    EnableControls:=' MEdt_PoDate,Edt_PcNo,edt_rno,Cmbx_PoType,Edt_EmployeeCode,Edt_PoRemArk,';
  end;
  If Pos('Edit',Currentstatus)>0 then
  begin
    AnswerStatus:='PArtEdit';
    EnableControls:='MEdt_PoDate,Edt_EmployeeCode,edt_rno,Edt_PoRemArk,';
  end;
end;


function checksymbol(Source:string;disptext:string):boolean;   //检查输入中是否有单引号
var
  i:integer;
  s:string;
begin
  s:=Trim(Source);
  for i:=1 to length(s) do
    if s[i]='''' then
    begin
      DispInfo(disptext+'中不能使用单引号!',1);
      Result:=False;
      exit;
    end;
  Result:=True;
end;

Function TFrm_Pm_Enter_NewAutoPo2.SavePoHistory(Status:String):Boolean;
var
  SqlText:String;
begin
  Try
    SqlText:='Insert PoHistory '
            +' (PoNo,VendorCode,PcNO,referenceno,POType,PODate,'
            +'  POTaxRate_Percent,CurrencyCode,EmployeeCode, PoSpecial,PORemArk,PoChgEmployeeCode,PoChgTime,PoChgType)'
            +'  Values('
            +''''+Trim(Edt_PoNo.Text)+''''+','
            +''''+Trim(Edt_VendorCode.Text)+''''+','
            +''''+Trim(Edt_PcNo.Text)+''''+','
            +quotedstr(Trim(edt_rno.text))+','
            +''''+IntToStr(Cmbx_PoType.ItemIndex)+''''+','
            +''''+Medt_PoDate.Text+''''+','
            +''''+Trim(Edt_PoTax.Text)+''''+','
            +''''+Trim(Edt_CurrencyCode.Text)+''''+','
            +''''+Trim(Edt_EmployeeCode.Text)+''''+','
            +''''+'0'+''''+','
            +''''+Trim(Edt_PoReMArk.Text)+''''+','
            +''''+UserCode+''''+','
            +'GetDate(),';
    IF Status='Add' Then
      SqlText:=SqlText+''''+'增加'+''''+')'
    Else
      SqlText:=SqlText+''''+'修改'+''''+')';
    AdoQry_Tmp.Close;
    AdoQry_Tmp.Sql.Text:=Sqltext;
    AdoQry_Tmp.ExecsQl;
    Result:=True;
  Except
    Result:=False;
  end;
end;

Function TFrm_Pm_Enter_NewAutoPo2.SavePoLineHistory(Status:String):Boolean;
var
  SqlText:String;
begin
  Try
    SqlText:='Insert PoLineHistory '
            +' (PoNo,PoLineNo,ItemCode,POLineDate,PoStArtWorkDate,POQty,POTaxPrice,POTaxAmount,PONoTaxPrice,'
            +' PONoTaxAmount,PONoFinishQty,POReferencedPrice,POLineStatus,PolChgEmployeeCode,PolChgTime,PolChgType)'
            +'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)+''''+','
            +''''+IntToStr(AdoQry_Body.fieldbyname('POLineStatus').AsInteger)+''''+','
            +''''+UserCode+''''+','
            +'GetDate(),';
      IF Status='Add' Then
         SqlText:=SqlText+''''+'增加'+''''+')'
      Else
        SqlText:=SqlText+''''+'修改'+''''+')';
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:=SqlText;
    AdoQry_Tmp.ExecSQL;
    Result:=True;
  Except
    Result:=False;
  end;
end;


procedure TFrm_Pm_Enter_NewAutoPo2.InitForm(AdOConnection:TAdOConnection;FormStatus:String;AdoQuery:TAdoQuery);
var
  SqlText:String;
  I:Integer;
begin
  Inherited;
  PriceFields:='PoNoTaxPrice,PONoTaxAmount,PoTaxPrice,PoTaxAmount,';
  SqlText:='Select Top 0 Poline.*,Poline.SsQty as maxQty,Item.LimItOut as Ssid,Item.GreateOut as endSsid,Item.ItemName,Uom.UomName '
          +' From PoLine '
          +' Join Item On Poline.ItemCode=Item.ItemCode '
          +' Left Join Uom On Item.UomCode=Uom.UomCode';
  AdoQry_Body.Close;
  AdoQry_Body.SQL.Text:=SqlText;
  AdoQry_Body.Open;
  AdoQuery.First;
  I:=1;
  While Not AdoQuery.Eof Do
  begin
    If AdoQuery.fieldbyname('SScheck').AsInteger=1  Then
    begin
      Edt_EmployeeCode.Text := AdoQuery.fieldbyname('EmployeeCode').AsString;
      Edt_BuyerName.Text := AdoQuery.fieldbyname('EmployeeName').AsString;
      AdoQry_Body.Append;
      AdoQry_Body.fieldbyname('PoLineNo').AsInteger:=I;
      AdoQry_Body.fieldbyname('Ssid').AsInteger:=AdoQuery.fieldbyname('SsId').AsInteger;
      AdoQry_Body.fieldbyname('endSsid').AsInteger:=AdoQuery.fieldbyname('endSsId').AsInteger;
      AdoQry_Body.fieldbyname('ItemCode').AsString:=AdoQuery.fieldbyname('ItemCode').AsString;
      AdoQry_Body.fieldbyname('ItemName').AsString:=AdoQuery.fieldbyname('ItemName').AsString;
      AdoQry_Body.fieldbyname('UomName').AsString:=AdoQuery.fieldbyname('UomName').AsString;
      AdoQry_Body.fieldbyname('SsQty').AsFloat:=AdoQuery.fieldbyname('ReMainQty').AsFloat;
      AdoQry_Body.fieldbyname('MaxQty').AsFloat:=AdoQuery.fieldbyname('ReMainQty').AsFloat;
      AdoQry_Body.fieldbyname('PoQty').AsFloat:=AdoQuery.fieldbyname('ReMainQty').AsFloat;
      AdoQry_Body.fieldbyname('PoNoFinishQty').AsFloat:=AdoQuery.fieldbyname('ReMainQty').AsFloat;
      AdoQry_Body.fieldbyname('PoLineStatus').AsInteger:=5;
      if AdoQuery.fieldbyname('ssDate').AsDateTime > date() then
        AdoQry_Body.fieldbyname('PoLineDate').AsDateTime:=AdoQuery.fieldbyname('ssDate').AsDateTime
      else
        AdoQry_Body.fieldbyname('PoLineDate').AsDateTime:= date();
      if AdoQuery.fieldbyname('DueDate').AsDateTime > date() then
        AdoQry_Body.fieldbyname('PoStArtWorkDate').AsDateTime:=AdoQuery.fieldbyname('DueDate').AsDateTime
      else
        AdoQry_Body.fieldbyname('PoStArtWorkDate').AsDateTime:=Date();
      AdoQry_Body.fieldbyname('PoTaxPrice').AsFloat:=0;
      AdoQry_Body.fieldbyname('PoNoTaxPrice').AsFloat:=0;
      AdoQry_Body.fieldbyname('PoReferencedPrice').AsFloat:=0;
      AdoQry_Body.fieldbyname('PoTaxAmount').AsFloat:=0;
      AdoQry_Body.fieldbyname('PoNoTaxAmount').AsFloat:=0;
      AdoQry_Body.Post;
      I:=I+1;
    end;
    AdoQuery.Next;
  end;
  DataSource.DataSet:=AdoQry_Body;
  If FormStatus='Add' Then
  begin
    CurrentFormStatus:='Add';
    SetFocus_Control:=MEdt_PoDate;
  end;
end;


procedure TFrm_Pm_Enter_NewAutoPo2.InitControls;
begin
  If Status='Add' Then
  begin
    SetFocus_Control:=MEdt_PoDate;
  end;
  inherited;
  Edt_PoNo.Enabled:=False;
  If Status='Add' Then
    MEdt_Podate.Text:=Formatdatetime('yyyy.mm.dd',date);
  Edt_PoNo.Enabled:=False;
  edt_rno.Enabled:=True;
  Edt_VendorCode.Enabled:=False;
  Edt_CurrencyCode.Enabled:=False;
  Edt_CurrencyName.Enabled:=False;  
  Edt_Potax.Enabled:=False;
  Act_Preview.Enabled:=False;
  Act_Print.Enabled:=False;

  Cmbx_PoType.Enabled:=True;
  Act_Save.Enabled:=True;

  Edt_BuyerName.Enabled:=False;
  Edt_VendorName.Enabled:=False;
  Edt_PcNo.Enabled:=True;
end;


procedure TFrm_Pm_Enter_NewAutoPo2.Act_QuitExecute(Sender: TObject);
begin
  Close;
end;

procedure TFrm_Pm_Enter_NewAutoPo2.Act_SaveExecute(Sender: TObject);
var
  SqlText,PoNo,BookMArk:String;
  I:Integer;
  TemppoQty:double;
begin
  Edt_PcNo.OnExit(Edt_PcNo);
  Edt_EmployeeCode.OnExit(Edt_EmployeeCode);
  If AdoQry_Body.RecordCount=0 Then
  begin
    DispInfo('没有行数据,不能保存!',3);
    Abort;
  end;
  AdoQry_Body.DisableControls;
  AdoQry_Body.First;
  I:=1;
  While Not AdoQry_Body.Eof Do
  begin
    If StrToFloat(FormatFloat('##0.##',AdoQry_Body.fieldbyname('PoQty').AsFloat))<=0 Then
    begin
      DispInfo('第'+IntToStr(I)+'行数据的约定交货量小于等于了0,不能保存!',3);
      AdoQry_Body.EnableControls;

⌨️ 快捷键说明

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