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

📄 mrp_enter_mo_d.pas

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

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Entry_Detail, Db, AdODB, ExtCtrls, StdCtrls, Mask, ExtEdit, linkedit;

Type
  TFrm_Mrp_Enter_Mo_D = Class(TFrm_Base_Entry_Detail)
    Edt_Qty: TEdit;
    Label4: TLabel;
    Label3: TLabel;
    medt_Modate: TMaskEdit;
    Label2: TLabel;
    Label1: TLabel;
    MEdt_MoStArtWorkDate: TMaskEdit;
    Label5: TLabel;
    Label6: TLabel;
    cmbBackflush: TComboBox;
    Extedt_ItemCode: TLinkEdit;
    edt_ItemName: TEdit;
    Label7: TLabel;
    edt_remArk: TEdit;
    procedure DateCheck(Sender: TObject);
    procedure btn_okClick(Sender: TObject);
    procedure ExtEdt_ItemCodeExit(Sender: TObject);
    procedure ExtEdt_ItemCodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure medt_ModateExit(Sender: TObject);
    procedure FloatCheck(Sender: TObject);
    procedure Extedt_ItemCodeButtonClick(Sender: TObject);
  private
    UomName:String;  //记录当前单位
    MnldTime:Integer;//记录制造提前期
    runlt:integer;
//    LineNo:Integer;//行号
    MoStArtWorkDate:String;//当前开工日期
    { Private declarations }
  public
    permitBackflush:integer;
    linestatus:integer;
    tmPmoqty:string;
    LineNo : Integer;
    procedure InitControls; Override;
    procedure SaveBodyData; Override;
    procedure SetStatus(CurrentStatus:String;var EnableControls:String);Override;
    function existSalterson(ItemCode:string):boolean;
  end;

var
  Frm_Mrp_Enter_Mo_D: TFrm_Mrp_Enter_Mo_D;

implementation

uses Sys_Global;

{$R *.DFM}

procedure TFrm_Mrp_Enter_Mo_D.InitControls;
var
  SqlText:String;
begin
  If (status='Add') Then
    SetFocus_Control:=ExtEdt_ItemCode
  Else
    begin
    SetFocus_Control:=medt_Modate;
    end;
  Inherited;
  if status<>'Add' then
   begin
    medt_Modate.SetFocus;
    medt_Modate.SelectAll;
   end;
  with AdoQry_Body do
  begin
    ExtEdt_ItemCode.Text:=fieldbyname('ItemCode').AsString;
    edt_ItemName.text:=fieldbyname('ItemName').AsString;
    UomName:=fieldbyname('UomName').AsString;
    If (Status='Add') then
    begin
      LineNo:=LineNo+1;
      Medt_MoDate.Text:=Formatdatetime('yyyy.mm.dd',date);
      MEdt_MoStArtWorkDate.Text:=FormatDateTime('yyyy.mm.dd',Date);
      MoStArtWorkDate:=FormatDateTime('yyyy.mm.dd',Date);
      cmbBackflush.ItemIndex:=0;
    end
    else
    begin
      SqlText:=' Select Item.MnldTime,runlt,Uom.UomName '
              +' From Item '
              +' Left Outer Join Uom On Item.UomCode=Uom.UomCode '
              +' Where ItemCode='+''''+Trim(ExtEdt_ItemCode.Text)+''''
              +' And PmCode In (0,3)';
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:=SqlText;
      AdoQry_Tmp.Open;
      UomName:=AdoQry_Tmp.fieldbyname('UomName').AsString;
      MnldTime:=AdoQry_Tmp.fieldbyname('MnldTime').AsInteger;
      runlt:=AdoQry_tmp.fieldbyname('runlt').asinteger;
      ExtEdt_ItemCode.Enabled:=False;
      LineNo:=fieldbyname('MoLineNo').AsInteger;
      mEdt_MoStArtWorkDate.Text:=FormatDateTime('yyyy.mm.dd',fieldbyname('MoStArtWorkDate').AsDateTime);
      Medt_MoDate.Text:=FormatDateTime('yyyy.mm.dd',fieldbyname('MoLineDate').Asdatetime);
      MoStArtWorkDate:=FormatDateTime('yyyy.mm.dd',fieldbyname('MoStArtWorkDate').AsDateTime);
      cmbBackflush.ItemIndex:=fieldbyname('Backflush').asinteger;
    end;
    Edt_Qty.Text:=FormatFloat('##0.####',fieldbyname('MoQty').AsFloat);
    tmPmoqty:=edt_qty.Text;
    edt_remArk.Text:=fieldbyname('remArk').asstring;
{    if linestatus=6 then 
     edt_qty.Enabled:=False;
} end;
end;


procedure TFrm_Mrp_Enter_Mo_D.SaveBodyData;
var tMpsqltext:string;
    ParentMoLineno:integer;
begin
  If Status='Add' Then
    AdoQry_Body.Append
  Else
    AdoQry_Body.Edit;
  with AdoQry_Body do
  begin
    fieldbyname('MoLineCheck').AsInteger := 0;
    If Status='Add' Then
    fieldbyname('MoLineCheck').AsInteger := 1;
    fieldbyname('MoLineNo').Asinteger:=LineNo;
    fieldbyname('ItemCode').AsString:=Trim(ExtEdt_ItemCode.Text);
    fieldbyname('ItemName').AsString:=edt_ItemName.text;
    fieldbyname('MoLineDate').Asdatetime:=strtodatetime(Medt_MoDate.Text);
    fieldbyname('MoStArtWorkDate').Asdatetime:=strtodatetime(Medt_MoStArtWorkDate.Text);
    fieldbyname('MoQty').AsFloat:=StrtoFloat(Edt_Qty.Text);
    fieldbyname('MoNoFinishQty').AsFloat:=strtofloat(Edt_Qty.Text);
    fieldbyname('Backflush').asinteger:=cmbBackflush.ItemIndex;
    fieldbyname('remArk').asstring:=Trim(edt_remArk.text);
    If (Status='Add') Then
      fieldbyname('MoLineStatus').AsInteger:=5;
    if (fieldbyname('MoLinestatus').asinteger=6) and (edt_qty.Enabled=True ) and (edt_qty.Text<>tmPmoqty) then
    begin
      fieldbyname('MoLinestatus').asinteger:=5;
    end;
      
    fieldbyname('UomName').AsString:=UomName;
    Post;
  end;
  ParentMoLineno:=lineno;
  tMpsqltext:='select Bom.ItemCode,    '
              +'        Item.ItemName, '
              +'        Bom.Bomqty,   '
              +'        Uom.UomName  '
              +' from Bom '
              +' join Item on Bom.ItemCode=Item.ItemCode '
              +' left outer join Uom on Item.UomCode=Uom.UomCode '
              +' where ite_ItemCode='+quotedstr(Trim(ExtEdt_ItemCode.Text))
               +' and BomItemType=4';
  Executesql(AdoQry_tmp,tMpsqltext,0);
  if AdoQry_tmp.RecordCount=0 then exit;
   with AdoQry_tmp do
     begin
       First;
       while not eof do
         begin
             If Status='Add' Then
              begin
               lineno:=AdoQry_Body.RecordCount+1;
               AdoQry_Body.Append;
                    AdoQry_Body.fieldbyname('MoLineNo').Asinteger:=LineNo;
                    AdoQry_Body.fieldbyname('ItemCode').AsString:=fieldbyname('ItemCode').AsString;
                    AdoQry_Body.fieldbyname('ItemName').AsString:=fieldbyname('ItemName').AsString;
                    AdoQry_Body.fieldbyname('MoLineDate').Asdatetime:=strtodatetime(Medt_MoDate.Text);
                    AdoQry_Body.fieldbyname('MoStArtWorkDate').Asdatetime:=strtodatetime(Medt_MoStArtWorkDate.Text);
                    AdoQry_Body.fieldbyname('MoQty').AsFloat:=StrtoFloat(Edt_Qty.Text)*fieldbyname('Bomqty').asfloat;
                    AdoQry_Body.fieldbyname('MoNoFinishQty').AsFloat:=strtofloat(Edt_Qty.Text)*fieldbyname('Bomqty').asfloat;
                    AdoQry_Body.fieldbyname('byProduct').asinteger:=1;
                    AdoQry_Body.fieldbyname('ParentMoLineno').asinteger:=ParentMoLineno;
                   If (Status='Add') Then
                   begin
                     AdoQry_Body.fieldbyname('MoLineStatus').AsInteger:=5;
                     AdoQry_Body.fieldbyname('MoLineCheck').AsInteger := 1;
                   end;
                    AdoQry_Body.fieldbyname('UomName').AsString:=fieldbyname('UomName').asstring;
                   AdoQry_Body.Post;
               end
               else
                 begin
                   AdoQry_Body.First;
                   while not AdoQry_Body.Eof do
                     begin
                       if AdoQry_Body.fieldbyname('ParentMoLineno').asinteger=lineno then
                         begin
                          AdoQry_Body.Edit;
                          AdoQry_Body.fieldbyname('mostArtworkdate').asdatetime:=strtodatetime(Medt_MoStArtWorkDate.Text);
                          AdoQry_Body.fieldbyname('MoLineDate').Asdatetime:=strtodatetime(Medt_MoDate.Text);
                          AdoQry_Body.fieldbyname('MoQty').AsFloat:=StrtoFloat(Edt_Qty.Text)*fieldbyname('Bomqty').asfloat;
                          AdoQry_Body.fieldbyname('MoNoFinishQty').AsFloat:=strtofloat(Edt_Qty.Text)*fieldbyname('Bomqty').asfloat;
                          AdoQry_Body.Post;
                         end;
                       AdoQry_Body.next;
                     end;
                     AdoQry_Body.First;
                 end;
            next;
         end;
     end;
end;

procedure TFrm_Mrp_Enter_Mo_D.SetStatus(CurrentStatus: String;
  var EnableControls: String);
var sqltext:string;
begin
  inherited;
  if(CurrentStatus='Add')then
    if permitBackflush=1 then
      EnableControls:='Extedt_ItemCode,medt_Modate,edt_remArk,Edt_Qty,MEdt_MoStArtWorkDate,cmbBackflush,'
    else EnableControls:='Extedt_ItemCode,medt_Modate,Edt_Qty,edt_remArk,MEdt_MoStArtWorkDate,'
  Else
    if permitBackflush=1 then
      EnableControls:='medt_Modate,edt_remArk,MEdt_MoStArtWorkDate,cmbBackflush,'
    else      EnableControls:='medt_Modate,edt_remArk,'+iifstring(linestatus=6,' ','Edt_Qty,')+'MEdt_MoStArtWorkDate,';
  if CurrentStatus<>'Add' then
   begin
      if AdoQry_Body.fieldbyname('MoRealinqty').asfloat>0 then 

⌨️ 快捷键说明

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