📄 mrp_enter_newmrpinfo.pas
字号:
end;
if noandlineno=quotedstr('zzzzzzzzzzzzzzzzzzzzzzzz') then exit;
If Frm_Mrp_Enter_CloseMo1=Nil Then
begin
Frm_Mrp_Enter_CloseMo1:=TFrm_Mrp_Enter_CloseMo1.Create(Self);
Frm_Mrp_Enter_CloseMo1.SetSysParam(userCode,ModuleCode,menuid,DatetimeToStr(Now));
Frm_Mrp_Enter_CloseMo1.Ordernoandlineno:=noandlineno;
Frm_Mrp_Enter_CloseMo1.nowmono:=mono;
Frm_Mrp_Enter_CloseMo1.nowMoLineno:=MoLineno;
Frm_Mrp_Enter_CloseMo1.InitForm(dbconnect,False);
end
Else
Frm_Mrp_Enter_CloseMo1.Show;
finally
AdoQry_Main.BookmArk:=BookmArk;
activecontrol:=dbgrideh;
end;
end;
procedure TFrm_Mrp_Enter_NewMrpInfo.DataSourceDataChange(Sender: TObject;
Field: TField);
var i:integer;
begin
inherited;
try
i:=strtoint(copy(AdoQry_Main.fieldbyname('ssflag').asstring,1,1))
except
if ShowAnimate<>nil then ShowAnimate.Free;
if ShowPanel<>nil then ShowPanel.Free;
abort;
end;
case strtoint(copy(AdoQry_Main.fieldbyname('ssflag').asstring,1,1)) of
1: label3.Caption:='';
2: label3.Caption:='应取消原因:父项需求发生改变,当前数量的订单没有父项需求';
3: label3.Caption:='应关闭原因:订单生产完毕';
4: begin
if ((AdoQry_Main.fieldbyname('duedate').asdatetime<date()) or (AdoQry_Main.fieldbyname('ssdate').asdatetime<date())) then
label3.Caption:='应重排原因:订单的约定开工日或约定交货日小于Mrp展开运算的日期'
else
if AdoQry_Main.fieldbyname('canuseonhand').asfloat=0 then
label3.Caption:='应重排原因:订单的约定交货日大于物料毛需求的需求日期 '
end;
5: label3.Caption:='应减少原因:物料的供应量大于需求量';
6: label3.Caption:='应提前到'+AdoQry_Main.fieldbyname('realreleasedate').asstring;
end;
end;
procedure TFrm_Mrp_Enter_NewMrpInfo.Button3Click(Sender: TObject);
begin
inherited;
if AdoQry_Main.RecordCount=0 then
begin
activecontrol:=dbgrideh;
exit;
end;
try
Frm_Bas_Qry_MultiBomSViewMaster:=TFrm_Bas_Qry_MultiBomSViewMaster.Create(self);
Frm_Bas_Qry_MultiBomSViewMaster.InitForm(AdoQry_Tmp.Connection);
Frm_Bas_Qry_MultiBomSViewMaster.ExpandBom(AdoQry_Main.fieldbyname('ItemCode').asstring);
finally
activecontrol:=dbgrideh;
end;
end;
procedure TFrm_Mrp_Enter_NewMrpInfo.DBGridEhGetCellParams(Sender: TObject;
Column: TColumnEh; AFont: TFont; var Background: TColor;
State: TGridDrawState);
var i:integer;
begin
inherited;
if AdoQry_Main.RecordCount=0 then exit;
try
i:=strtoint(copy(AdoQry_Main.fieldbyname('ssflag').asstring,1,1))
except
if ShowAnimate<>nil then ShowAnimate.Free;
if ShowPanel<>nil then ShowPanel.Free;
abort;
end;
case strtoint(copy(AdoQry_Main.fieldbyname('ssflag').asstring,1,1)) of
2: begin
afont.Color:=clred;
end;
4: begin
afont.Color:=clred;
end;
end;
end;
procedure TFrm_Mrp_Enter_NewMrpInfo.Button4Click(Sender: TObject);
var noandlineno:string;
BookmArk:string;
mono:string;
MoLineno:integer;
tmpQry,tmpQry1:TAdoQuery;
sqltext:string;
tmPmoqty:string;
begin
inherited;
{try
BookmArk:=AdoQry_Main.BookmArk;
mono:=AdoQry_Main.fieldbyname('Orderno').asstring;
MoLineno:=AdoQry_Main.fieldbyname('Orderlineno').asinteger;
noandlineno:=quotedstr('zzzzzzzzzzzzzzzzzzzzzzzz');
AdoQry_Main.First;
while not AdoQry_Main.Eof do
begin
if AdoQry_Main.fieldbyname('ssSysInfoflag').asinteger=4 then
noandlineno:=noandlineno+','+quotedstr(AdoQry_Main.fieldbyname('Orderno').asstring+inttostr(AdoQry_Main.fieldbyname('Orderlineno').asinteger));
AdoQry_Main.Next;
end;
if noandlineno=quotedstr('zzzzzzzzzzzzzzzzzzzzzzzz') then exit;
If Frm_Mrp_Enter_NewEditPassMo1=Nil Then
begin
Frm_Mrp_Enter_NewEditPassMo1:=TFrm_Mrp_Enter_NewEditPassMo1.Create(Self);
Frm_Mrp_Enter_NewEditPassMo1.SetSysParam(userCode,ModuleCode,menuid,DatetimeToStr(Now));
Frm_Mrp_Enter_NewEditPassMo1.Ordernoandlineno:=noandlineno;
Frm_Mrp_Enter_NewEditPassMo1.nowmono:=mono;
Frm_Mrp_Enter_NewEditPassMo1.nowMoLineno:=MoLineno;
Frm_Mrp_Enter_NewEditPassMo1.InitForm(dbconnect,False);
end
Else
Frm_Mrp_Enter_NewEditPassMo1.Show;
finally
AdoQry_Main.BookmArk:=BookmArk;
activecontrol:=dbgrideh;
end; }
try
if (AdoQry_Main.fieldbyname('ssSysInfoflag').asinteger<>4)
and (AdoQry_Main.fieldbyname('ssSysInfoflag').asinteger<>5)
and (AdoQry_Main.fieldbyname('ssSysInfoflag').asinteger<>6)
then exit;
BookmArk:=AdoQry_Main.BookmArk;
mono:=AdoQry_Main.fieldbyname('Orderno').asstring;
MoLineno:=AdoQry_Main.fieldbyname('Orderlineno').asinteger;
noandlineno:=quotedstr('zzzzzzzzzzzzzzzzzzzzzzzz');
tmpQry:=TAdoQuery.Create(self);
tmpQry.Connection:=dbconnect;
tmpQry1:=TAdoQuery.Create(self);
tmpQry1.Connection:=dbconnect;
sqltext:='Select MoLine.*,Mo.*,Dept.DeptName,Item.ItemName,Uom.UomName,'
+' Item.ItemCode+'''+' '+'''+Item.ItemName As ItemFlag,'
+' Item.Pla_EmployeeCode+'' ''+Employee.EmployeeName as plaflag,'
+' Item.Pla_EmployeeCode, '
+' Dept.DeptCode+'''+' '+'''+Dept.DeptName As DeptFlag '
+' From MoLine '
+' Join Mo On MoLine.MoNo=Mo.MoNo '
+' Join Item On MoLine.ItemCode=Item.ItemCode '
+' left join Employee on Item.Pla_EmployeeCode=Employee.EmployeeCode '
+' left Join Dept On Mo.DeptCode=Dept.DeptCode '
+' left Join Uom On Item.UomCode=Uom.UomCode '
+' where MoLine.MoNo='+quotedstr(mono)
+' and MoLine.MoLineno='+inttostr(MoLineno);
Executesql(tmpQry,sqltext,0) ;
if tmpQry.RecordCount=0 then exit;
sqltext:='select sum(isnull(MoRealqty,0)) as MoRealqty from mnItemList'
+' where mono='+quotedstr(mono)
+' and MoLineno='+inttostr(MoLineno);
Executesql(tmpQry1,sqltext,0);
{if getstatus(AdoQry_Head.fieldbyname('mono').asstring,AdoQry_Head.fieldbyname('MoLineno').asinteger)<>5 then
begin
DispInfo('该生产订单行不是准备状态,不可修改!',5);
abort;
end; }
Frm_Mrp_Enter_PassMo_D := TFrm_Mrp_Enter_PassMo_D.Create(self);
try
with Frm_Mrp_Enter_PassMo_D do
begin
AdoQry_tmp.Connection:=dbconnect;
edtmono.Text:=tmpQry.fieldbyname('mono').asstring;
edtMoLineno.Text:=tmpQry.fieldbyname('MoLineno').asstring;
Extedt_ItemCode.Text:=tmpQry.fieldbyname('ItemCode').asstring;
lbl_ItemName.Caption:=tmpQry.fieldbyname('ItemName').asstring;
Extedt_ItemName.Text:=tmpQry.fieldbyname('ItemName').asstring;
medt_Modate.Text:=tmpQry.fieldbyname('MoLinedate').asstring;
medt_MostArtworkdate.Text:=tmpQry.fieldbyname('mostArtworkdate').asstring;
edt_qty.Text:=tmpQry.fieldbyname('moqty').asstring;
tmPmoqty:=edt_qty.Text;
edtMoNoFinishqty.Text:=tmpQry.fieldbyname('MoNoFinishqty').asstring;
btn_ok.Enabled:=False;
if getstatus(tmpQry.fieldbyname('mono').asstring,tmpQry.fieldbyname('MoLineno').asinteger)=5 then
edt_qty.Enabled:=True;
if (getstatus(mono,MoLineno)=6 )
and (tmpQry1.fieldbyname('MoRealqty').asfloat<=0)
and (tmpQry.fieldbyname('MoRealinqty').asfloat<=0)
and (tmpQry.fieldbyname('MoInqty').asfloat<=0)then
edt_qty.Enabled:=True;
showmodal;
// medt_Modate.SetFocus;
if modalResult=mrok then
begin
try
dbconnect.beginTrans;
saveMoLineHistory(dbconnect,tmpQry.fieldbyname('mono').asstring,tmpQry.fieldbyname('MoLineno').asinteger,userCode,1);
updateMoLine(tmpQry.fieldbyname('mono').asstring,tmpQry.fieldbyname('MoLineno').asinteger,medt_Modate.Text,medt_MostArtworkdate.Text,strtofloat(edt_qty.text),strtofloat(edt_qty.text),edt_qty.Text<>tmPmoqty);
if ((tmpQry.fieldbyname('byProduct').asinteger<>1) and (tmpQry.fieldbyname('MoLinestatus').asinteger=5)) then
begin
Executesql(AdoQry_tmp,'delete from mnItemList where mono='+quotedstr(tmpQry.fieldbyname('mono').asstring)+' and MoLineno='+inttostr(tmpQry.fieldbyname('MoLineno').asinteger),1);
If Not (AutoBuildOrder(DbConnect,tmpQry.fieldbyname('mono').asstring,Trim(tmpQry.fieldbyname('ItemCode').AsString),
IntToStr(tmpQry.fieldbyname('MoLineNo').AsInteger),'Add','Mo',tmpQry.fieldbyname('MoQty').AsFloat)) Then //自动产生领料单
Abort;
end;
operationmopo(AdoQry_tmp,
tmpQry.fieldbyname('ItemCode').asstring,
'mo',
4,
tmpQry.fieldbyname('mono').asstring,
// Trim(edt_Mono.text),
tmpQry.fieldbyname('MoLineno').asinteger,
tmpQry.fieldbyname('MoLinestatus').asinteger,
0,
strtofloat(edt_qty.text),
strtofloat(edt_qty.text),
medt_Modate.Text,
medt_MostArtworkdate.Text,
getPmCode(dbconnect,tmpQry.fieldbyname('ItemCode').asstring),
tmpQry.fieldbyname('DeptCode').asstring);
dbconnect.CommitTrans;
except
dbconnect.RollBackTrans;
end;
end;
end;
finally
Frm_Mrp_Enter_PassMo_D.Free;
end;
finally
tmpQry.Free;
tmpQry1.Free;
AdoQry_Main.BookmArk:=BookmArk;
activecontrol:=dbgrideh;
end;
end;
function TFrm_Mrp_Enter_NewMrpInfo.getstatus(mono: string;
MoLineno: integer): integer;
begin
Result:=999;
Executesql(AdoQry_tmp,'select MoLinestatus from MoLine where mono='+quotedstr(mono)+' and MoLineno='+inttostr(MoLineno),0);
Result:=AdoQry_tmp.fieldbyname('MoLinestatus').asinteger;
end;
procedure TFrm_Mrp_Enter_NewMrpInfo.Act_CopyExecute(Sender: TObject);
var
I:Boolean;
BookmArk:String;
begin
inherited;
If AdoQry_Main.RecordCount=0 Then
begin
Abort;
end;
BookmArk:=AdoQry_Main.BookmArk;
// I:=False;
AdoQry_Main.First;
While Not AdoQry_Main.Eof do
begin
If AdoQry_Main.fieldbyname('sScheck').AsInteger>0 Then
begin
I:=True;
Break;
end;
AdoQry_Main.Next;
end;
try
// If I=True Then
begin
Frm_Mrp_Enter_NewAutoMo1:=TFrm_Mrp_Enter_NewAutoMo1.Create(Application);
Frm_Mrp_Enter_NewAutoMo1.SetSysParam(UserCode,ModuleCode,MenuId,DateTimeToStr(Now));
Frm_Mrp_Enter_NewAutoMo1.edt_DeptCode.Text:=AdoQry_Main.fieldbyname('DeptCode').asstring;
Frm_Mrp_Enter_NewAutoMo1.edt_DeptName.Text:=AdoQry_Main.fieldbyname('DeptName').asstring;
reMainqty:=AdoQry_Main.fieldbyname('reMainqty').asfloat;
Frm_Mrp_Enter_NewAutoMo1.flag:=0;
Frm_Mrp_Enter_NewAutoMo1.GetConnect(AdoQry_Main);
Frm_Mrp_Enter_NewAutoMo1.ShowModal;
end;
finally
AdoQry_Main.BookmArk:=BookmArk;
end;
end;
procedure TFrm_Mrp_Enter_NewMrpInfo.Act_SumExecute(Sender: TObject);
var
I:Boolean;
BookMArk:String;
begin
inherited;
If AdoQry_Main.RecordCount=0 Then
begin
Abort;
end;
I:=False;
BookMArk:=AdoQry_Main.BookmArk ;
AdoQry_Main.First;
While Not AdoQry_Main.Eof do
begin
If AdoQry_Main.fieldbyname('ssSysInfoflag').Asinteger=1 Then
begin
I:=True;
BookMArk:=AdoQry_Main.BookmArk ;
Break;
end;
AdoQry_Main.Next;
end;
If I=True Then
begin
Frm_Mrp_Enter_NewMrpInfo3:=TFrm_Mrp_Enter_NewMrpInfo3.Create(Application);
Frm_Mrp_Enter_NewMrpInfo3_C:=TFrm_Mrp_Enter_NewMrpInfo3_C.Create(Application);
Frm_Mrp_Enter_NewMrpInfo3_C.InitForm(DbConnect,'Add',AdoQry_Main);
// Frm_Mrp_Enter_NewMrpInfo3_C.SetFormParam(PcNo,IntToStr(PmCode),'','','','');
Frm_Mrp_Enter_NewMrpInfo3_C.SetSysParam(UserCode,ModuleCode,MenuId,LoginDate);
Frm_Mrp_Enter_NewMrpInfo3_C.ShowModal;
Frm_Mrp_Enter_NewMrpInfo3_C.Free;
Frm_Mrp_Enter_NewMrpInfo3.InitForm(Dbconnect,False);
// Frm_Mrp_Enter_NewMrpInfo3.SetFormParam(PcNo,IntToStr(PmCode),'','','','');
Frm_Mrp_Enter_NewMrpInfo3.SetSysParam(UserCode,ModuleCode,MenuId,LoginDate);
Frm_Mrp_Enter_NewMrpInfo3.Show;
end
Else
begin
AdoQry_Main.BookmArk:=BookMArk;
DispInfo('没有建议下达的记录,不能执行汇总操作!',3);
Abort;
end;
AdoQry_Main.BookmArk:=BookMArk;
end;
procedure TFrm_Mrp_Enter_NewMrpInfo.AdoQry_MainAfterPost(
DataSet: TDataSet);
begin
inherited;
Executesql(AdoQry_tmp,'update #tMpssInfoResult set sScheck='+inttostr(AdoQry_Main.fieldbyname('sScheck').asinteger)+' where ssid='+inttostr(AdoQry_Main.fieldbyname('ssid').asinteger),1);
end;
procedure TFrm_Mrp_Enter_NewMrpInfo.Button5Click(Sender: TObject);
begin
inherited;
If AdoQry_Main.RecordCount=0 then exit;
Frm_Bas_BomQry:=TFrm_Bas_BomQry.Create(self);
Frm_Bas_BomQry.SetSysParam(userCode,ModuleCode,menuid,datetimetostr(now));
Frm_Bas_BomQry.Ite_ItemCode := AdoQry_Main.fieldbyname('ItemCode').AsString;
Frm_Bas_BomQry.Lbl_ItemCode.Caption:=AdoQry_Main.fieldbyname('ItemCode').AsString;
Frm_Bas_BomQry.InitForm(dbconnect,True);
Frm_Bas_BomQry.Show;
end;
procedure TFrm_Mrp_Enter_NewMrpInfo.FormKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
inherited;
if key = vk_Space then
begin
AdoQry_Main.Edit;
AdoQry_Main.fieldbyname('sScheck').AsInteger:=iifinteger(AdoQry_Main.fieldbyname('sScheck').AsInteger=0,1,0);
AdoQry_Main.Post;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -