📄 mrp_enter_mo_d.pas
字号:
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 + -