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

📄 pm_enter_autopo1.pas

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

Interface

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

Type
  TFrm_Pm_Enter_AutoPo1 = Class(TFrm_Base_Entry_Body)
    AdoQry_Head1: TAdoQuery;
    Label1: TLabel;
    Edt_PoNo: TEdit;
    Label2: TLabel;
    MEdt_PoDate: TMaskEdit;
    Label3: TLabel;
    Edt_PcNo: TEdit;
    Label4: TLabel;
    Edt_VendorCode: TEdit;
    Label5: TLabel;
    Label6: TLabel;
    Edt_EmployeeCode: TEdit;
    Label7: TLabel;
    Edt_CurrencyCode: TEdit;
    Label9: TLabel;
    Edt_Potax: TEdit;
    Label10: TLabel;
    Label11: TLabel;
    Edt_PoRemArk: TEdit;
    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;
    Cmbx_PoType: TComboBox;
    AdoQry_Temp: TAdoQuery;
    Label8: TLabel;
    Lbl_LineNo: TLabel;
    Label13: TLabel;
    Lbl_ItemFlag: TLabel;
    Label15: TLabel;
    Lbl_PoQty: TLabel;
    Label12: TLabel;
    Label14: TLabel;
    Edt_BuyerName: TEdit;
    Edt_VendorName: TEdit;
    AdoQry_BodySsQty: TFloatField;
    AdoQry_BodyLimItOut: TIntegerField;
    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);
  private
    CurrentPcNo:String;//当前采购价格单号
    CurrentFormStatus:String;//当前窗体状态
    Function SavePoHistory(Status:String):Boolean;//保存历史记录
    Function SavePoLineHistory(Status:String):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;
      { Public declarations }
  end;

var
  Frm_Pm_Enter_AutoPo1: TFrm_Pm_Enter_AutoPo1;

implementation

uses  Sys_Global, Pm_Enter_AutoPo_D, Pm_Enter_Po_P, Pm_Enter_SsPoInfo,
  Pm_Enter_SsPoInfo1, Pm_Enter_SsPoInfo2, Pm_Enter_SsPoInfo3;

{$R *.DFM}
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_AutoPo1.SavePoHistory(Status:String):Boolean;
var
  SqlText:String;
begin
  Try
    SqlText:='Insert PoHistory '
            +' (PoNo,VendorCode,PcNO,POType,PODate,'
            +'  POTaxRate_Percent,CurrencyCode,EmployeeCode, PoSpecial,PORemArk,PoChgEmployeeCode,PoChgTime,PoChgType)'
            +'  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'+''''+','
            +''''+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_AutoPo1.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_AutoPo1.InitForm(AdOConnection:TAdOConnection;FormStatus:String;AdoQuery:TAdoQuery);
var
  SqlText:String;
  I:Integer;
begin
  Inherited;
  PriceFields:='PoNoTaxPrice,PONoTaxAmount,PoTaxPrice,PoTaxAmount,';
  try
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text := 'Drop table #POLINE1';
    AdoQry_Tmp.ExecSQL;
  except
  end;
  SqlText:=' CREATE TABLE [#POLINE1] ('
          +' [LimItOut] [int] ,'
          +' [ItemCode] [varchAr] (50) ,'
          +' [ItemName] [varchAr] (80)  , '
          +' [UomName] [varchAr] (20)  , '
	  +' [SSQty] [float]  ,'
	  +' [POQTY] [float]  ,'
          +' [PONoFinishQty] [float]  ,'
          +' [POLINESTATUS] [int]  ,'
	  +' [POLineDATE] [datetime] ,'
          +' [POStArtWorkDate] [datetime]  ,'
	  +' [PoTaxPrice] [float]  ,'
          +' [PoNoTaxPrice] [float]  ,'
          +' [POREFERENCEDPRICE] [int]  ,'
          +' [PoTaxAmount] [float] ,'
          +' [PONoTaxAmount] [float]  )';
  AdoQry_tmp.Close;
  AdoQry_Tmp.SQL.Text:=SqlText;
  AdoQry_Tmp.ExecSQL;

  SqlText:='Select Top 0 Poline.*,Item.LimItOut,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;
  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;
      SqlText:='insert #POLINE1(LimItOut,ItemCode,ItemName,UomName,'
              +' SsQty,PoQty,PoNoFinishQty,PoLineStatus,PoLineDate,PoStArtWorkDate,'
              +' PoTaxPrice,PoNoTaxPrice,PoReferencedPrice,PoTaxAmount,PoNoTaxAmount )'
              +' Values '
              +' ('''+inttostr(AdoQuery.fieldbyname('SsId').AsInteger)+''','
              +' '''+AdoQuery.fieldbyname('ItemCode').AsString+''','
              +' '''+AdoQuery.fieldbyname('ItemName').AsString+''','
              +' '''+AdoQuery.fieldbyname('UomName').AsString+''','
              +''''+floattostr(AdoQuery.fieldbyname('ssReMainQty').AsFloat)+''','
              +''''+floattostr(AdoQuery.fieldbyname('ssReMainQty').AsFloat)+''','
              +''''+floattostr(AdoQuery.fieldbyname('ssReMainQty').AsFloat)+''', '
              +' 5 ,'
              +' '''+DatetimeToStr(AdoQuery.fieldbyname('ssDate').AsDateTime)+''','
              +' '''+DatetimeToStr(AdoQuery.fieldbyname('DueDate').AsDateTime)+''',0,0,0,0,0)';
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:= SqlText;
      AdoQry_Tmp.ExecSQL;
    end;
    AdoQuery.next;
  end;
    SqlText:='select ItemCode,ItemName,UomName,'
              +' sum(SsQty) as SsQty,sum(PoQty) as PoQty,sum(PoNoFinishQty) PoNoFinishQty,'
              +' min(PoLineDate) as PoLineDate,min(PoStArtWorkDate) as PoStArtWorkDate '
              +' from  #POLINE1 '
              +' group by ItemCode,ItemName,UomName ' ;
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:=SqlText;
    AdoQry_Tmp.Open;
    I:=1;
    while not AdoQry_Tmp.eof do
    begin
      AdoQry_Body.Append;
      AdoQry_Body.fieldbyname('PoLineNo').AsInteger:=I;
//      AdoQry_Body.fieldbyname('LimItOut').AsInteger:=AdoQry_Tmp.fieldbyname('SsId').AsInteger;
      AdoQry_Body.fieldbyname('ItemCode').AsString:=AdoQry_Tmp.fieldbyname('ItemCode').AsString;
      AdoQry_Body.fieldbyname('ItemName').AsString:=AdoQry_Tmp.fieldbyname('ItemName').AsString;
      AdoQry_Body.fieldbyname('UomName').AsString:=AdoQry_Tmp.fieldbyname('UomName').AsString;
      AdoQry_Body.fieldbyname('SsQty').AsFloat:=AdoQry_Tmp.fieldbyname('SsQty').AsFloat;
      AdoQry_Body.fieldbyname('PoQty').AsFloat:=AdoQry_Tmp.fieldbyname('PoQty').AsFloat;
      AdoQry_Body.fieldbyname('PoNoFinishQty').AsFloat:=AdoQry_Tmp.fieldbyname('PoNoFinishQty').AsFloat;
      AdoQry_Body.fieldbyname('PoLineStatus').AsInteger:=5;
      if AdoQry_Tmp.fieldbyname('PoLineDate').AsDateTime > date() then
        AdoQry_Body.fieldbyname('PoLineDate').AsDateTime:=AdoQry_Tmp.fieldbyname('PoLineDate').AsDateTime
      else
         AdoQry_Body.fieldbyname('PoLineDate').AsDateTime:=Date();
      if AdoQry_Tmp.fieldbyname('PoStArtWorkDate').AsDateTime > date() then
        AdoQry_Body.fieldbyname('PoStArtWorkDate').AsDateTime:=AdoQry_Tmp.fieldbyname('PoStArtWorkDate').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;
      AdoQry_Tmp.Next;
   end;
  DataSource.DataSet:=AdoQry_Body;
  If FormStatus='Add' Then
  begin
    CurrentFormStatus:='Add';
    SetFocus_Control:=MEdt_PoDate;
  end;
end;


procedure TFrm_Pm_Enter_AutoPo1.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_VendorCode.Enabled:=False;
  Edt_CurrencyCode.Enabled:=False;
  Edt_Potax.Enabled:=False;

⌨️ 快捷键说明

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