📄 mrp_enter_newautomo2.pas
字号:
If Trim(Edt_MoNo.Text)='' then
begin
DispInfo('请输入订单号!',1);
if Edt_MoNo.CanFocus then Edt_MoNo.SetFocus;
abort;
end;
If AdoQry_Body.RecordCount=0 Then
begin
DispInfo('没有行数据,不能保存!',3);
Abort;
end;
AdoQry_Body.DisableControls;
AdoQry_Body.First;
I:=0;
While Not AdoQry_Body.Eof Do
begin
I:=I+1;
{ SqlText:=' Select * '
+' From Item '
+' Where (ItemCode='''+Trim(AdoQry_Body.fieldbyname('ItemCode').AsString)+''''
+' )And (PmCode In (0,3))';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
If AdoQry_Tmp.Eof Then
begin
DispInfo('第'+IntToStr(I)+'行物料代码不是制造物料,不能保存!',1);
AdoQry_Body.EnableControls;
Abort;
end;//在采购合同中不存在时的处理
}
If (AdoQry_Body.fieldbyname('MoQty').AsFloat<=0) And (Status='Add') Then
begin
DispInfo('第'+IntToStr(AdoQry_Body.RecNo)+'行数据约定交货量必须大于0,请修改!',1);
AdoQry_Body.EnableControls;
Abort;
end;
If (AdoQry_Body.fieldbyname('MostArtworkDate').AsDateTime<Date()) Then
begin
DispInfo('第'+IntToStr(AdoQry_Body.RecNo)+'行数据约定开工日小于了系统工作日,请修改!',1);
AdoQry_Body.EnableControls;
Abort;
end;
If (AdoQry_Body.fieldbyname('MoLineDate').AsDateTime<Date()) Then
begin
DispInfo('第'+IntToStr(AdoQry_Body.RecNo)+'行数据约定交货日小于了系统工作日,请修改!',1);
AdoQry_Body.EnableControls;
Abort;
end;
SqlText:=' Select MrpParamValuen '
+' 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;
AdoQry_Body.Next;
end; //校验数据
DbConnect.beginTrans;
Try
AdoQry_Body.First;
while not AdoQry_Body.Eof do
begin
updatessreMainqty(AdoQry_Body.fieldbyname('ItemCode').asstring,AdoQry_Body.fieldbyname('limitout').asinteger,AdoQry_Body.fieldbyname('essid').asinteger,AdoQry_Body.fieldbyname('moqty').asfloat,0);
updatessreMainqty(AdoQry_Body.fieldbyname('ItemCode').asstring,AdoQry_Body.fieldbyname('limitout').asinteger,AdoQry_Body.fieldbyname('essid').asinteger,AdoQry_Body.fieldbyname('moqty').asfloat,1);
updatec_Ss4reMainqty(AdoQry_Body.fieldbyname('ItemCode').asstring,AdoQry_Body.fieldbyname('limitout').asinteger,AdoQry_Body.fieldbyname('essid').asinteger,AdoQry_Body.fieldbyname('moqty').asfloat);
AdoQry_Body.Next;
end;
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 //自动产生领料单
Abort;
AdoQry_Body.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('tMpssReMainQty').AsFloat-AdoQry_Body.fieldbyname('ssQty').AsFloat>=0 then
AdoQry_Head1.fieldbyname('tMpssReMainQty').AsFloat:=AdoQry_Head1.fieldbyname('tMpssReMainQty').AsFloat-AdoQry_Body.fieldbyname('ssQty').AsFloat
else AdoQry_Head1.fieldbyname('tMpssReMainQty').AsFloat:=0;
AdoQry_Head1.fieldbyname('SScheck').AsInteger:=0;
AdoQry_Head1.Post;
end;
AdoQry_Body.Next;
end;
DbConnect.CommitTrans;
Act_Save.Enabled:=False;
if Frm_Mrp_Enter_NewMrpInfo<>nil 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 Frm_Mrp_Enter_NewMrpInfo1<>nil 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 Frm_Mrp_Enter_NewMrpInfo2<>nil 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 Frm_Mrp_Enter_NewMrpInfo3<>nil then
begin
Executesql(AdoQry_tmp,'update #ssInfoResult set tMpssreMainqty=case ss.reMainqty when 0 then null else ss.reMainqty end from #ssInfoResult,ss where #ssInfoResult.ssid=ss.ssid ',1);
BookmArk:=Frm_Mrp_Enter_NewMrpInfo3.AdoQry_Main.BookmArk;
Frm_Mrp_Enter_NewMrpInfo3.AdoQry_Main.ReQuery;
Frm_Mrp_Enter_NewMrpInfo3.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_NewAutoMo2.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_NewAutoMo2.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('否');
Cmbx_StandardFlag.Items.Add('是');
end;
procedure TFrm_Mrp_Enter_NewAutoMo2.SetStatus(CurrentStatus: String;
var AnswerStatus, EnableControls: String);
begin
inherited;
Enablecontrols:='Edt_MoNo,Edt_DeptCode,edt_rno,Medt_Modate,Edt_MoRemArk,Edt_SysParamCode,Cmbx_StandardFlag,';
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -