📄 mrp_enter_freepassmo.pas
字号:
if ishaveInv=0 then
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('有子项库存不够!',1);
abort;
end;
if strwhName<>'strwhName' then
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo(strwhName+'没有设拉式领料货位!',1);
abort;
end;
end;
if not createstallmoveBill(TmPmono,tmPMoLineno)then
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('建立货位移动单出错!',1);
abort;
end;
end;
saveMoLineHistory(dbconnect,AdoQry_Head.fieldbyname('mono').asstring,AdoQry_Head.fieldbyname('MoLineno').asinteger,userCode,3);
//保存本单历史操作信息
PassMoLine(tmPmono,tmPMoLineno);
//批准本单
If ((AdoQry_Head.fieldbyname('Standardflag').asinteger=1) and (AdoQry_Head.fieldbyname('byProduct').asinteger<>1)) Then
begin
if IsBomChange(AdoQry_Head.fieldbyname('ItemCode').AsString,AdoQry_Head.fieldbyname('MoDate').AsString) then
begin
deletemnList(AdoQry_Head.fieldbyname('mono').asstring,AdoQry_Head.fieldbyname('MoLineno').asinteger);
{ If Not (AutoBuildOrder(DbConnect,AdoQry_Head.fieldbyname('mono').asstring,Trim(AdoQry_Head.fieldbyname('ItemCode').AsString),
IntToStr(AdoQry_Head.fieldbyname('MoLineNo').AsInteger),'Add','Mo',AdoQry_Head.fieldbyname('MoQty').AsFloat)) Then //自动产生领料单
}
If Not (NewAutoBuildOrder(DbConnect,AdoQry_Head.fieldbyname('MoNo').AsString,
IntToStr(AdoQry_Head.fieldbyname('MoLineNo').AsInteger),Trim(AdoQry_Head.fieldbyname('ItemCode').AsString),AdoQry_Head.fieldbyname('MoQty').AsFloat)) Then //自动产生领料单
Abort; //自动产生生产领料单
end;
end;
savebyProducthistory(tmPmono,tmPMoLineno);
//保存本单之副产品历史操作信息
PassbyProductMoLine(tmPmono,tmPMoLineno);
//批准本单之副产品
AdoQry_Head.Edit;
AdoQry_Head.fieldbyname('MoLineStatus').AsInteger:=6;
AdoQry_Head.fieldbyname('MoLineCheck').AsInteger:=0;
AdoQry_Head.Post;
DbConnect.CommitTrans;
end;
AdoQry_Head.Next;
end;
Except
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('更改数据时发生错误,数据未更改,请重试!',1);
AdoQry_Head.BookMArk:=BookmArk;
Abort;
end;
end;
// AdoQry_Head.ReQuery;
AdoQry_Head.BookMArk:=BookmArk;
Flag:=Not Flag;
end;
procedure TFrm_Mrp_Enter_FreePassMo.Act_CancelCheckExecute(Sender: TObject);
var
SqlText,BookMArk:String;
I:Integer;
tmPmono:string;
tmPMoLineno:integer;
tmpbeforeedit:Tdatasetnotifyevent;
begin
inherited;
If AdoQry_Head.RecordCount=0 Then
Abort;
BookMArk:=AdoQry_Head.BookmArk;
If DispInfo('确认取消批准选定独立生产订单吗?',2)='y' Then
begin
I:=1;
Try
AdoQry_Head.First;
While Not AdoQry_Head.Eof Do
begin
DbConnect.beginTrans;
{If AdoQry_Head.fieldbyname('MoNoFinishQTY').AsFloat<AdoQry_Head.fieldbyname('MOQTY').AsFloat Then
begin
AdoQry_Head.Next;
I:=I+1;
Continue;
end; }
If (AdoQry_Head.fieldbyname('MoLineCheck').AsInteger=1) And (AdoQry_Head.fieldbyname('MoLineStatus').AsInteger=6) Then
begin
tmPmono:=AdoQry_Head.fieldbyname('mono').asstring;
tmPMoLineno:=AdoQry_Head.fieldbyname('MoLineno').asinteger;
SqlText:=' Select * From MoLine '
+' Where MoNo='''+AdoQry_Head.fieldbyname('MoNo').AsString+''''
+' And MoLineNo='''+IntToStr(AdoQry_Head.fieldbyname('MoLineNo').AsInteger)+''''
+' And MoLineStatus=6 and MoNoFinishqty=moqty';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
If AdoQry_Tmp.Eof Then
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('选定的第'+IntToStr(I)+'条独立生产订单行状态已被其它用户修改,请刷新!',3);
Abort;
end;
if AdoQry_Head.fieldbyname('Backflush').asinteger=1 then
begin
If DbConnect.InTransaction Then
DbConnect.rollBackTrans;
AdoQry_Head.Next;
continue;
end;
if beenProducted(tmPmono,tmPMoLineno) then
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('选定的第'+IntToStr(I)+'条独立生产订单行未结量不等于下单量,不可取消批准!',3);
exit;
end;
if beendilivered(tmPmono,tmPMoLineno) then
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('选定的第'+IntToStr(I)+'条生产订单行已生产领料,不可取消批准!',3);
exit;
end;
if beenbuildBill(tmPmono,tmPMoLineno) then
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
if DispInfo('选定的第'+IntToStr(I)+'条生产订单行已领料制单,是否取消批准?',2)='n' then
exit;
if not dbconnect.InTransaction then
dbconnect.beginTrans;
sqltext:='delete from InvOutBillline '
+' where exists(select * from InvOutBill '
+' where InvOutBillline.InvBillid=InvOutBill.InvBillid '
+' and InvOutBill.mono='+quotedstr(tmPmono)
+' and InvOutBill.InvBillwhchck=0 '
+' and InvOutBill.BillTypeCode=''0201'')';
Executesql(AdoQry_tmp,sqltext,1);
sqltext:='delete from InvOutBill '
+' where InvOutBill.mono='+quotedstr(tmPmono)
+' and InvOutBill.MoLineno='+inttostr(tmPMoLineno)
+' and InvOutBill.InvBillwhchck=0 '
+' and InvOutBill.BillTypeCode=''0201'' ';
Executesql(AdoQry_tmp,sqltext,1);
end;
saveMoLineHistory(dbconnect,AdoQry_Head.fieldbyname('mono').asstring,AdoQry_Head.fieldbyname('MoLineno').asinteger,userCode,4);
SqlText:=' Update MoLine '
+' set MoLineStatus=5,'
+' PassEmployeeCode=null '
+' Where MoNo='''+AdoQry_Head.fieldbyname('MoNo').AsString+''''
+' And MoLineNo='''+AdoQry_Head.fieldbyname('MoLineNo').AsString+''''
+' And MoLineStatus=6 and MoNoFinishqty=moqty';
AdoQry_tmp.Close;
AdoQry_tmp.SQL.Text:=SqlText;
AdoQry_tmp.ExecSQL;
SqlText:=' select * from MoLine '
+' Where MoNo='''+AdoQry_Head.fieldbyname('MoNo').AsString+''''
+' And ParentMoLineNo='''+AdoQry_Head.fieldbyname('MoLineNo').AsString+''''
+' And MoLineStatus=6 '
+' and byProduct=1 ';
AdoQry_tmp.Close;
AdoQry_tmp.SQL.Text:=SqlText;
AdoQry_tmp.open;
while not AdoQry_tmp.Eof do
begin
saveMoLineHistory(dbconnect,AdoQry_tmp.fieldbyname('mono').asstring,AdoQry_tmp.fieldbyname('MoLineno').asinteger,userCode,4);
AdoQry_tmp.next;
end;
SqlText:=' Update MoLine '
+' set MoLineStatus=5,'
+' PassEmployeeCode=null '
+' Where MoNo='''+AdoQry_Head.fieldbyname('MoNo').AsString+''''
+' And ParentMoLineNo='''+AdoQry_Head.fieldbyname('MoLineNo').AsString+''''
+' And MoLineStatus=6 and MoNoFinishqty=moqty '
+' and byProduct=1 ';
AdoQry_tmp.Close;
AdoQry_tmp.SQL.Text:=SqlText;
AdoQry_tmp.ExecSQL;
AdoQry_Head.Edit;
AdoQry_Head.fieldbyname('MoLineStatus').AsInteger:=5;
AdoQry_Head.fieldbyname('MoLineCheck').AsInteger:=0;
AdoQry_Head.Post;
I:=I+1;
end
Else
begin
if AdoQry_Head.fieldbyname('byProduct').asinteger=1 then
begin
if (AdoQry_Head.fieldbyname('mono').asstring=tmPmono) and (AdoQry_Head.fieldbyname('ParentMoLineno').asinteger=tmPMoLineno) then
begin
SqlText:=' Update MoLine '
+' set MoLineStatus=5,'
+' PassEmployeeCode=null '
+' Where MoNo='''+AdoQry_Head.fieldbyname('MoNo').AsString+''''
+' And MoLineNo='''+AdoQry_Head.fieldbyname('MoLineNo').AsString+''''
+' And MoLineStatus=6 '
+' and byProduct=1 ';
AdoQry_tmp.Close;
AdoQry_tmp.SQL.Text:=SqlText;
AdoQry_tmp.ExecSQL;
Tmpbeforeedit:=AdoQry_Head.BeforeEdit;
AdoQry_Head.BeforeEdit:=nil;
AdoQry_Head.Edit;
AdoQry_Head.fieldbyname('MoLineStatus').AsInteger:=5;
AdoQry_Head.fieldbyname('MoLineCheck').AsInteger:=0;
AdoQry_Head.Post;
AdoQry_Head.BeforeEdit:=Tmpbeforeedit;
end;
end;
I:=I+1;
end;
DbConnect.CommitTrans;
AdoQry_Head.Next;
end;
Except
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('更改数据时发生错误,数据未更改,请重试!',1);
AdoQry_Head.BookMArk:=BookmArk;
Abort;
end;
end;
AdoQry_Head.BookMArk:=BookmArk;
Flag:=Not Flag;
end;
procedure TFrm_Mrp_Enter_FreePassMo.DBGridEhDblClick(Sender: TObject);
begin
inherited;
If AdoQry_Head.RecordCount=0 Then
Abort;
If AdoQry_Head.fieldbyname('MoLineStatus').AsInteger=5 then
Act_CheckExecute(Act_Check)
Else
Act_CancelCheckExecute(Act_CancelCheck);
end;
procedure TFrm_Mrp_Enter_FreePassMo.DBGridEhTitleClick(Column: TColumnEh);
var
BookMArk:String;
begin
inherited;
If Trim(Column.Title.Caption)<>'标记' Then
Abort;
If AdoQry_Head.RecordCount=0 Then
Abort;
BookMArk:=AdoQry_Head.BookmArk;
If Not Flag Then
begin
AdoQry_Head.First;
While Not AdoQry_Head.Eof Do
begin
AdoQry_Head.Edit;
AdoQry_Head.fieldbyname('MoLineCheck').AsInteger:=1;
AdoQry_Head.Post;
AdoQry_Head.Next;
end;
end
Else
begin
AdoQry_Head.First;
While Not AdoQry_Head.Eof Do
begin
AdoQry_Head.Edit;
AdoQry_Head.fieldbyname('MoLineCheck').AsInteger:=0;
AdoQry_Head.Post;
AdoQry_Head.Next;
end;
end;
AdoQry_Head.BookmArk:=BookMArk;
Flag:=Not Flag;
end;
procedure TFrm_Mrp_Enter_FreePassMo.FormCreate(Sender: TObject);
begin
inherited;
Flag:=False;
end;
procedure TFrm_Mrp_Enter_FreePassMo.AdoQry_HeadBeforeInsert(
DataSet: TDataSet);
begin
inherited;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -