📄 mrp_enter_newautomo1.pas
字号:
+' From MrpParam '
+' Where MrpParamCode=''receiveOrder''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
if AdoQry_tmp.fieldbyname('MrpParamValuen').asfloat<0.1 then
if AdoQry_Body.fieldbyname('moqty').asfloat>AdoQry_Body.fieldbyname('MoInqty').asfloat then
begin
DispInfo('第'+inttostr(AdoQry_Body.recno)+'行数据约定交货量大于系统建议余量,请修改!',1);
AdoQry_Body.EnableControls;
abort;
end;
// showmessage(floattostr(AdoQry_Body.fieldbyname('moqty').asfloat));
// showmessage(floattostr(AdoQry_Body.fieldbyname('ssqty').asfloat));
AdoQry_Body.Next;
end; //校验数据
//-------------------------------------------
AdoQry_Body.First;
While Not AdoQry_Body.Eof Do
begin
TemPmoQty:=AdoQry_Body.fieldbyname('moQty').AsFloat;
SqlText := ' Select * from #MoLine1 '
+' where ItemCode='''+AdoQry_Body.fieldbyname('ItemCode').AsString+''' '
+' Order by MoLinedate' ;
Executesql(AdoQry_tmp,sqltext,0);
While not AdoQry_Tmp.Eof do
begin
if TemPmoQty>=AdoQry_Tmp.fieldbyname('moqty').AsFloat then
begin
TemPmoQty:=TemPmoQty-AdoQry_Tmp.fieldbyname('moqty').AsFloat;
end
else
begin
if TemPmoQty > 0 then
begin
AdoQry_Tmp.Edit;
AdoQry_Tmp.fieldbyname('moqty').AsFloat:= TemPmoQty;
AdoQry_Tmp.fieldbyname('MoNoFinishQty').AsFloat:= TemPmoQty;
TemPmoQty:=TemPmoQty-AdoQry_Tmp.fieldbyname('moqty').AsFloat;
AdoQry_Tmp.Post;
end
else
begin
AdoQry_Tmp.Edit ;
AdoQry_Tmp.fieldbyname('moqty').AsFloat:= 0;
AdoQry_Tmp.fieldbyname('MoNoFinishQty').AsFloat:= 0;
AdoQry_Tmp.Post;
end;
end;
AdoQry_Tmp.next;
end;
AdoQry_Body.next;
end;
//-------------------------------------------
DbConnect.beginTrans;
Try
AdoQry_Body.First;
i:=0;
While Not AdoQry_Body.Eof Do
begin
i:=i+1;
if AdoQry_Body.fieldbyname('byProduct').asinteger=1 then
begin
AdoQry_Body.Next;
continue;
end;
AdoQry_Body.Next;
end;
// MoNO:='M'+Trim(Copy(FormatDateTime('yyyy.mm.dd',Now),3,2))+Trim(Copy(FormatDateTime('yyyy.mm.dd',Now),6,2));
// Edt_MoNo.Text:=GetNo(DbConnect,MoNo,'Mo');
if CheckAllTypeOrderNoSet(DbConnect,6) then
Edt_MoNo.Text := GetAllTypeOrderNo(DbConnect,6);
if edt_Mono.Text='' then abort;
Application.ProcessMessages;
AdoQry_Tmp.Close;
SqlText:='Insert Mo '
+' (MoNo,DeptCode,MoDate,referenceno,MoReMArk,SaleType,StandardFlag)'
+' Values('
+''''+Trim(Edt_MoNo.Text)+''''+','
+''''+Trim(Edt_DeptCode.Text)+''''+','
+''''+Trim(MEdt_MoDate.Text)+''''+','
+quotedstr(Trim(edt_rno.text))+','
+''''+Trim(Edt_MoReMArk.Text)+''''+','
+''''+Trim(Edt_SysParamCode.Text)+''''+','
+''''+IntToStr(Cmbx_StandardFlag.ItemIndex)+''')';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL; // Insert Mo Table
savemohistory(dbconnect,Trim(edt_Mono.text),userCode,0);
AdoQry_Body.First;
While Not AdoQry_Body.Eof Do
begin
SqlText:='Insert MoLine '
+' (MoNo,MoLineNo,byProduct,ParentMoLineno,Backflush,ItemCode,remArk,MoLineDate,MOStArtWorkDate,SsQty,MOQty,MoNoFinishQty,MoLineStatus)'
+'Values('
+''''+Trim(Edt_MoNo.Text)+''','
+''''+IntToStr(AdoQry_Body.fieldbyname('MoLineNo').AsInteger)+''','
+inttostr(AdoQry_Body.fieldbyname('byProduct').asinteger)+','
+inttostr(AdoQry_Body.fieldbyname('ParentMoLineno').asinteger)+','
+inttostr(AdoQry_Body.fieldbyname('Backflush').asinteger)+','
+''''+AdoQry_Body.fieldbyname('ItemCode').AsString+''','
+quotedstr(AdoQry_Body.fieldbyname('remArk').asstring)+','
+''''+DatetimeToStr(AdoQry_Body.fieldbyname('MoLineDate').AsDateTime)+''','
+''''+DatetimeToStr(AdoQry_Body.fieldbyname('MOStArtWorkDate').AsDateTime)+''',';
If AdoQry_Body.fieldbyname('MoQty').AsFloat<=AdoQry_Body.fieldbyname('SsQty').AsFloat Then
SqlText:=SqlText+''''+FloatToStr(AdoQry_Body.fieldbyname('MoQty').AsFloat)+''','
Else
SqlText:=SqlText+''''+FloatToStr(AdoQry_Body.fieldbyname('SsQty').AsFloat)+''',';
SqlText:=SqlText+''''+FloatToStr(AdoQry_Body.fieldbyname('MOQty').AsFloat)+''','
+''''+FloatToStr(AdoQry_Body.fieldbyname('MoNoFinishQty').AsFloat)+''','
+'5)';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
saveMoLineHistory(dbconnect,Trim(edt_Mono.text),AdoQry_Body.fieldbyname('MoLineno').asinteger,userCode,0);
operationmopo(AdoQry_tmp,
AdoQry_Body.fieldbyname('ItemCode').asstring,
'mo',
1,
Trim(edt_Mono.text),
AdoQry_Body.fieldbyname('MoLineno').asinteger,
5,
0,
AdoQry_Body.fieldbyname('moqty').asfloat,
AdoQry_Body.fieldbyname('MoNoFinishqty').asfloat,
AdoQry_Body.fieldbyname('mostArtworkdate').asstring,
AdoQry_Body.fieldbyname('MoLinedate').asstring,
getPmCode(dbconnect,AdoQry_Body.fieldbyname('ItemCode').asstring),
Trim(edt_DeptCode.text));
If Cmbx_StandardFlag.ItemIndex=1 then
{ If Not (AutoBuildOrder(DbConnect,Trim(Edt_MoNo.Text),Trim(AdoQry_Body.fieldbyname('ItemCode').AsString),
IntToStr(AdoQry_Body.fieldbyname('MoLineNo').AsInteger),'Add','Mo',AdoQry_Body.fieldbyname('MoQty').AsFloat)) Then //自动产生领料单
}
If Not (NewAutoBuildOrder(DbConnect,Trim(Edt_MoNo.Text),
IntToStr(AdoQry_Body.fieldbyname('MoLineNo').AsInteger),Trim(AdoQry_Body.fieldbyname('ItemCode').AsString),AdoQry_Body.fieldbyname('MoQty').AsFloat)) Then //自动产生领料单
begin
AdoQry_Body.EnableControls;
Abort;
end;
AdoQry_Body.Next;
end;
//***********************************************************
AdoQry_Temp.Connection := dbconnect;
SqlText:='Select * from #MoLine1';
Executesql(AdoQry_Temp,sqltext,0);
AdoQry_Temp.First;
While Not AdoQry_Temp.Eof Do
begin
If AdoQry_Temp.fieldbyname('moQty').AsFloat<=AdoQry_Temp.fieldbyname('SsQty').AsFloat Then
begin
AdoQry_Temp.Edit;
AdoQry_Temp.fieldbyname('SsQty').AsFloat:=AdoQry_Temp.fieldbyname('moQty').AsFloat;
AdoQry_Temp.Post;
end;
SqlText:='Update MrpResult '
+'Set ReMainQty=ReMainQty-'''+(FloatToStr(AdoQry_Temp.fieldbyname('SsQty').AsFloat))+''''
+'where MrpResultid='''+IntToStr(AdoQry_Temp.fieldbyname('LimItOut').AsInteger)+'''';
Executesql(AdoQry_tmp,sqltext,1);
If AdoQry_Head1.Locate('SsId',AdoQry_Temp.fieldbyname('LimItOut').AsInteger,[loCaseInsensitive]) Then
begin
BookmArk:=AdoQry_Head1.BookmArk;
AdoQry_Head1.edit;
if AdoQry_Head1.fieldbyname('ReMainQty').AsFloat-AdoQry_Temp.fieldbyname('ssQty').AsFloat>=0 then
AdoQry_Head1.fieldbyname('ReMainQty').AsFloat:=AdoQry_Head1.fieldbyname('ReMainQty').AsFloat-AdoQry_Temp.fieldbyname('ssQty').AsFloat
else AdoQry_Head1.fieldbyname('ReMainQty').AsFloat:=0;
AdoQry_Head1.fieldbyname('SScheck').AsInteger:=0;
AdoQry_Head1.Post;
end;
AdoQry_Temp.Next;
end;//更新表头数据
//----------------------------------------------------------------
{ AdoQry_Body.First;
While Not AdoQry_Body.Eof Do
begin
If AdoQry_Body.fieldbyname('MoQty').AsFloat<=AdoQry_Body.fieldbyname('SsQty').AsFloat Then
begin
AdoQry_Body.Edit;
AdoQry_Body.fieldbyname('SsQty').AsFloat:=AdoQry_Body.fieldbyname('MoQty').AsFloat;
AdoQry_Body.Post;
end;
SqlText:='Update MrpResult '
+'Set ReMainQty=case when ReMainQty-('+FloatToStr(AdoQry_Body.fieldbyname('ssQty').AsFloat)+')'+'>=0 '
+' then ReMainQty-('+FloatToStr(AdoQry_Body.fieldbyname('ssQty').AsFloat)+')'
+' else 0 end '
+'where MrpResultid='''+IntToStr(AdoQry_Body.fieldbyname('LimItOut').AsInteger)+'''';
AdoQry_Tmp.Close;
// showmessage(sqltext);
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
If AdoQry_Head1.Locate('SsId',AdoQry_Body.fieldbyname('LimItOut').AsInteger,[loCaseInsensitive]) Then
{ IF (AdoQry_Body.fieldbyname('MoQty').AsFloat>=AdoQry_Head1.fieldbyname('ReMainQty').AsFloat) Then
begin
AdoQry_Head1.Delete;
AdoQry_Body.Next;
end
Else
begin
begin
AdoQry_Head1.edit;
if AdoQry_Head1.fieldbyname('ReMainQty').AsFloat-AdoQry_Body.fieldbyname('ssQty').AsFloat>=0 then
AdoQry_Head1.fieldbyname('ReMainQty').AsFloat:=AdoQry_Head1.fieldbyname('ReMainQty').AsFloat-AdoQry_Body.fieldbyname('ssQty').AsFloat
else AdoQry_Head1.fieldbyname('ReMainQty').AsFloat:=0;
AdoQry_Head1.fieldbyname('SScheck').AsInteger:=0;
AdoQry_Head1.Post;
end;
AdoQry_Body.Next;
end;}
DbConnect.CommitTrans;
Act_Save.Enabled:=False;
if flag=0 then
begin
Executesql(AdoQry_tmp,'update #tMpssInfoResult set tMpssreMainqty=case MrpResult.reMainqty when 0 then null else MrpResult.reMainqty end from #tMpssInfoResult,MrpResult where #tMpssInfoResult.ssid=MrpResult.MrpResultid ',1);
BookmArk:=Frm_Mrp_Enter_NewMrpInfo.AdoQry_Main.BookmArk;
Frm_Mrp_Enter_NewMrpInfo.AdoQry_Main.ReQuery;
Frm_Mrp_Enter_NewMrpInfo.AdoQry_Main.BookmArk:=BookmArk;
end;
if flag=1 then
begin
Executesql(AdoQry_tmp,'update #tMpssInfoResult1 set tMpssreMainqty=case MrpResult.reMainqty when 0 then null else MrpResult.reMainqty end from #tMpssInfoResult1,MrpResult where #tMpssInfoResult1.ssid=MrpResult.MrpResultid ',1);
BookmArk:=Frm_Mrp_Enter_NewMrpInfo1.AdoQry_Main.BookmArk;
Frm_Mrp_Enter_NewMrpInfo1.AdoQry_Main.ReQuery;
Frm_Mrp_Enter_NewMrpInfo1.AdoQry_Main.BookmArk:=BookmArk;
end;
if flag=2 then
begin
Executesql(AdoQry_tmp,'update #tMpssInfoResult2 set tMpssreMainqty=case MrpResult.reMainqty when 0 then null else MrpResult.reMainqty end from #tMpssInfoResult2,MrpResult where #tMpssInfoResult2.ssid=MrpResult.MrpResultid ',1);
BookmArk:=Frm_Mrp_Enter_NewMrpInfo2.AdoQry_Main.BookmArk;
Frm_Mrp_Enter_NewMrpInfo2.AdoQry_Main.ReQuery;
Frm_Mrp_Enter_NewMrpInfo2.AdoQry_Main.BookmArk:=BookmArk;
end;
if flag=3 then
begin
Executesql(AdoQry_tmp,'update #tmpdynssInfoResult set tMpssreMainqty=case ss.reMainqty when 0 then null else ss.reMainqty end from #tmpdynssInfoResult,ss where #tmpdynssInfoResult.ssid=ss.ssid ',1);
BookmArk:=Frm_Mrp_Qry_DynamicMrpInfo.AdoQry_Main.BookmArk;
Frm_Mrp_Qry_DynamicMrpInfo.AdoQry_Main.ReQuery;
Frm_Mrp_Qry_DynamicMrpInfo.AdoQry_Main.BookmArk:=BookmArk;
end;
AdoQry_Body.EnableControls;
DispInfo('数据保存完毕!',3);
Except
on e:exception do
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
recOrderror(self,AdoQry_tmp,e.message);
Edt_MoNo.Text:='';
AdoQry_Body.EnableControls;
DispInfo('保存数据失败,请重试!',1);
Abort;
end;
end;
InitForm(DBConnect,'ReadOnly',AdoQry_Head);
InitControls;
if(Status='Add')then
begin
if ExtendCaption then
begin
Caption:=FormCaption+'新增';
Pnl_Title.Caption:=FormCaption+'新增';
end;
AdoQry_Head.Append;
end
else if(Status='PArtEdit')or(Status='AllEdit')then
begin
if ExtendCaption then
begin
Caption:=FormCaption+'修改';
Pnl_Title.Caption:=FormCaption+'修改';
end;
AdoQry_Head.Edit;
end
else if(Status='ReadOnly')then
begin
if ExtendCaption then
begin
Caption:=FormCaption+'查询';
Pnl_Title.Caption:=FormCaption+'查询';
end;
end;
Act_Save.Enabled:=False;
finally
AdoQry_Body.BookmArk:=bodymArk;
end;
end;
procedure TFrm_Mrp_Enter_NewAutoMo1.FormActivate(Sender: TObject);
begin
inherited;
MEdt_MoDate.Text:=FormatDateTime('yyyy.mm.dd',Date);
if CheckAllTypeOrderNoSet(DbConnect,6) then
Edt_MoNo.Enabled := False
else begin
Edt_MoNo.Enabled := True;
Edt_MoNo.SetFocus;
end;
end;
procedure TFrm_Mrp_Enter_NewAutoMo1.FormCreate(Sender: TObject);
begin
inherited;
ExtendCaption:=False;
Frm_Entry_Detail:=TFrm_Mrp_Enter_AutoMo_D.Create(Self);
SetFocus_Control:=medt_Modate;
Cmbx_StandardFlag.clear;
Cmbx_StandardFlag.Items.Add('0 否');
Cmbx_StandardFlag.Items.Add('1 是');
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -