mrp_enter_newautomo3.pas
来自「一个MRPII系统源代码版本」· PAS 代码 · 共 835 行 · 第 1/3 页
PAS
835 行
begin
DispInfo('第'+inttostr(AdoQry_CopyBody.recno)+'行数据约定交货量大于系统建议余量,请修改!',1);
abort;
end;
// showmessage(floattostr(AdoQry_CopyBody.fieldbyname('moqty').asfloat));
// showmessage(floattostr(AdoQry_CopyBody.fieldbyname('ssqty').asfloat));
AdoQry_CopyBody.Next;
end; //校验数据
SetDisableControls;
DbGrideh1.Enabled:=False;
CreatePanel(2,DbGrideh1);
Application.ProcessMessages;
DbConnect.beginTrans;
AdoQry_CopyBody.DisableControls;
Try
AdoQry_CopyBody.First;
i:=0;
While Not AdoQry_CopyBody.Eof Do
begin
i:=i+1;
if AdoQry_CopyBody.fieldbyname('byProduct').asinteger=1 then
begin
AdoQry_CopyBody.Next;
continue;
end;
AdoQry_CopyBody.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_CopyBody.First;
While Not AdoQry_CopyBody.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_CopyBody.fieldbyname('MoLineNo').AsInteger)+''','
+inttostr(AdoQry_CopyBody.fieldbyname('byProduct').asinteger)+','
+inttostr(AdoQry_CopyBody.fieldbyname('ParentMoLineno').asinteger)+','
+inttostr(AdoQry_CopyBody.fieldbyname('Backflush').asinteger)+','
+''''+AdoQry_CopyBody.fieldbyname('ItemCode').AsString+''','
+quotedstr(AdoQry_CopyBody.fieldbyname('remArk').asstring)+','
+''''+DatetimeToStr(AdoQry_CopyBody.fieldbyname('MoLineDate').AsDateTime)+''','
+''''+DatetimeToStr(AdoQry_CopyBody.fieldbyname('MOStArtWorkDate').AsDateTime)+''',';
If AdoQry_CopyBody.fieldbyname('MoQty').AsFloat<=AdoQry_CopyBody.fieldbyname('SsQty').AsFloat Then
SqlText:=SqlText+''''+FloatToStr(AdoQry_CopyBody.fieldbyname('MoQty').AsFloat)+''','
Else
SqlText:=SqlText+''''+FloatToStr(AdoQry_CopyBody.fieldbyname('SsQty').AsFloat)+''',';
SqlText:=SqlText+''''+FloatToStr(AdoQry_CopyBody.fieldbyname('MOQty').AsFloat)+''','
+''''+FloatToStr(AdoQry_CopyBody.fieldbyname('MoNoFinishQty').AsFloat)+''','
+'5)';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
saveMoLineHistory(dbconnect,Trim(edt_Mono.text),AdoQry_CopyBody.fieldbyname('MoLineno').asinteger,userCode,0);
operationmopo(AdoQry_tmp,
AdoQry_CopyBody.fieldbyname('ItemCode').asstring,
'mo',
1,
Trim(edt_Mono.text),
AdoQry_CopyBody.fieldbyname('MoLineno').asinteger,
5,
0,
AdoQry_CopyBody.fieldbyname('moqty').asfloat,
AdoQry_CopyBody.fieldbyname('MoNoFinishqty').asfloat,
AdoQry_CopyBody.fieldbyname('mostArtworkdate').asstring,
AdoQry_CopyBody.fieldbyname('MoLinedate').asstring,
getPmCode(dbconnect,AdoQry_CopyBody.fieldbyname('ItemCode').asstring),
Trim(edt_DeptCode.text));
If Cmbx_StandardFlag.ItemIndex=1 then
If Not (NewAutoBuildOrder(DbConnect,Trim(Edt_MoNo.Text),
IntToStr(AdoQry_CopyBody.fieldbyname('MoLineNo').AsInteger),Trim(AdoQry_CopyBody.fieldbyname('ItemCode').AsString),AdoQry_CopyBody.fieldbyname('MoQty').AsFloat)) Then //自动产生领料单
Abort;
AdoQry_CopyBody.Next;
Application.ProcessMessages;
end;
//开始保存数据到MrpResult中
//*****************************
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=' Select ItemCode,Sum(TMpssReMainQty) As SSQty From #tMpssInfoResult Group By ItemCode';
AdoQry_Tmp.Open;
While Not AdoQry_Tmp.Eof Do
begin
Qty:=AdoQry_Tmp.fieldbyname('SSQTy').AsFloat;
AdoQry_Temp.Close;
AdoQry_Temp.SQL.Text:=' Select ItemCode,Sum(ReMainQty) As ReMainQty From MrpResult '
+' Where Ordinal=3 And ReleaseDate>='''+FormatDateTime('YYYY.MM.DD',D3)+''''
+' And ReleaseDate<='''+FormatDateTime('YYYY.MM.DD',D4)+''''
+' And ItemCode='''+Trim(AdoQry_Tmp.fieldbyname('ItemCode').AsString)+''''
+' Group By ItemCode ';
AdoQry_Temp.Open;
If AdoQry_Temp.fieldbyname('ReMainQty').AsFloat=Qty Then
begin
AdoQry_Temp.Close;
AdoQry_Temp.SQL.Text:=' Update MrpResult Set ReMainQty=0 '
+' Where Ordinal=3 And ReleaseDate>='''+FormatDateTime('YYYY.MM.DD',D3)+''''
+' And ReleaseDate<='''+FormatDateTime('YYYY.MM.DD',D4)+''''
+' And ItemCode='''+Trim(AdoQry_Tmp.fieldbyname('ItemCode').AsString)+'''';
AdoQry_Temp.ExecSQL;
end //等于时,用户未修改
Else If AdoQry_Temp.fieldbyname('ReMainQty').AsFloat>Qty Then
begin
AdoQry_Temp.Close;
AdoQry_Temp.SQL.Text:=' Select MrpResultID,ReMainQty From MrpResult '
+' Where Ordinal=3 And ReleaseDate>='''+FormatDateTime('YYYY.MM.DD',D3)+''''
+' And ReleaseDate<='''+FormatDateTime('YYYY.MM.DD',D4)+''''
+' And ItemCode='''+Trim(AdoQry_Tmp.fieldbyname('ItemCode').AsString)+'''';
AdoQry_Temp.Open;
While (Not AdoQry_Temp.Eof) And (Qty>0) Do
begin
If AdoQry_Temp.fieldbyname('ReMainQty').AsFloat=Qty Then
begin
AdoQry_Update.Close;
AdoQry_Update.SQL.Text:=' Update MrpResult Set ReMainQty=0 '
+' Where MrpResultID='+IntTOStr(AdoQry_Temp.fieldbyname('MrpResultID').AsInteger);
AdoQry_Update.ExecSQL;
Qty:=0;
Break;
end
Else If AdoQry_Temp.fieldbyname('ReMainQty').AsFloat>Qty Then
begin
AdoQry_Update.Close;
AdoQry_Update.SQL.Text:=' Update MrpResult Set ReMainQty=ReMainQty-('+FloatTOStr(Qty)+')'
+' Where MrpResultID='+IntTOStr(AdoQry_Temp.fieldbyname('MrpResultID').AsInteger);
AdoQry_Update.ExecSQL;
Qty:=0;
Break;
end
Else
begin
AdoQry_Update.Close;
AdoQry_Update.SQL.Text:=' Update MrpResult Set ReMainQty=0'
+' Where MrpResultID='+IntTOStr(AdoQry_Temp.fieldbyname('MrpResultID').AsInteger);
AdoQry_Update.ExecSQL;
Qty:=Qty-AdoQry_Temp.fieldbyname('ReMainQty').AsFloat;
end;
AdoQry_Temp.Next;
end;
end //用户减少了建议量
Else
begin //用户增加了建议量
AdoQry_Update.Close;
AdoQry_Update.SQL.Text:=' Update MrpResult Set ReMainQty=0 '
+' Where Ordinal=3 And ReleaseDate>='''+FormatDateTime('YYYY.MM.DD',D3)+''''
+' And ReleaseDate<='''+FormatDateTime('YYYY.MM.DD',D4)+''''
+' And ItemCode='''+Trim(AdoQry_Tmp.fieldbyname('ItemCode').AsString)+'''';
AdoQry_Update.ExecSQL;
Qty:=Qty-AdoQry_Temp.fieldbyname('ReMainQty').AsFloat;
AdoQry_Temp.Close;
AdoQry_Temp.SQL.Text:=' Select MrpResultID,ReMainQty From MrpResult '
+' Where Ordinal=3 '
+' And ItemCode='''+Trim(AdoQry_Tmp.fieldbyname('ItemCode').AsString)+''''
// +' And ((ReleaseDate>='''+FormatDateTime('yyyy.mm.dd',D1)+''''
// +' And ReleaseDate<'''+FormatDateTime('yyyy.mm.dd',D3)+''')'
+' And (ReleaseDate>'''+FormatDateTime('yyyy.mm.dd',D4)+''''
+' And ReleaseDate<='''+FormatDateTime('yyyy.mm.dd',D2)+''')' ;
AdoQry_Temp.Open;
While (Not AdoQry_Temp.Eof) And (Qty>0) Do
begin
If AdoQry_Temp.fieldbyname('ReMainQty').AsFloat=Qty Then
begin
AdoQry_Update.Close;
AdoQry_Update.SQL.Text:=' Update MrpResult Set ReMainQty=0 '
+' Where MrpResultID='+IntTOStr(AdoQry_Temp.fieldbyname('MrpResultID').AsInteger);
AdoQry_Update.ExecSQL;
Qty:=0;
Break;
end
Else If AdoQry_Temp.fieldbyname('ReMainQty').AsFloat>Qty Then
begin
AdoQry_Update.Close;
AdoQry_Update.SQL.Text:=' Update MrpResult Set ReMainQty=ReMainQty-('+FloatTOStr(Qty)+')'
+' Where MrpResultID='+IntTOStr(AdoQry_Temp.fieldbyname('MrpResultID').AsInteger);
AdoQry_Update.ExecSQL;
Qty:=0;
Break;
end
Else
begin
AdoQry_Update.Close;
AdoQry_Update.SQL.Text:=' Update MrpResult Set ReMainQty=0'
+' Where MrpResultID='+IntTOStr(AdoQry_Temp.fieldbyname('MrpResultID').AsInteger);
AdoQry_Update.ExecSQL;
Qty:=Qty-AdoQry_Temp.fieldbyname('ReMainQty').AsFloat;
end;
AdoQry_Temp.Next;
end; //分配余量
end;
AdoQry_Tmp.Next;
end;
//*****************************
//开始更新暂存量
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=' Select * From #tMpssInfoResult Order By ItemCode ';
AdoQry_Tmp.Open;
While Not AdoQry_Tmp.Eof Do
begin
AdoQry_Temp.Close;
AdoQry_Temp.SQL.Text:=' Update SSMoLine Set MoQty=Case When MoQty>'+FloatToStr(AdoQry_Tmp.fieldbyname('TMpssReMainQty').AsFloat)
+' Then MoQty-'+FloatToStr(AdoQry_Tmp.fieldbyname('TMpssReMainQty').AsFloat)
+' Else 0 end '
+' Where ItemCode='''+Trim(AdoQry_Tmp.fieldbyname('ItemCode').AsString)+''''
+' And ReleaseDate='''+FormatDateTime('yyyy.mm.dd',AdoQry_Tmp.fieldbyname('SSDate').Asdatetime)+'''';
AdoQry_Temp.ExecSQL;
AdoQry_Tmp.Next;
end;
AdoQry_tmp.Close;
AdoQry_Tmp.SQL.Text:=' Delete SSMoLine Where MoQty<=0 ';
AdoQry_Tmp.ExecSQL;
AdoQry_CopyBody.EnableControls;
DbConnect.CommitTrans;
Act_Save.Enabled:=False;
SetEnableControls;
if ShowAnimate<>nil then ShowAnimate.Free;
if ShowPanel<>nil then ShowPanel.Free;
DbGrideh1.Enabled:=True;
Application.ProcessMessages;
DispInfo('数据保存完毕!',3);
Except
on e:exception do
begin
SetEnableControls;
DbGrideh1.Enabled:=True;
AdoQry_CopyBody.EnableControls;
Frm_Public_Show.Visible:=False;
Frm_Public_Show.Release;
Application.ProcessMessages;
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
recOrderror(self,AdoQry_tmp,e.message);
Edt_MoNo.Text:='';
DispInfo('保存数据失败,请重试!',1);
Abort;
end;
end;
Pnl_Head.Enabled:=False;
Frm_Mrp_Enter_OblongSsMo.Saved:=True;
end;
procedure TFrm_Mrp_Enter_NewAutoMo3.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_NewAutoMo3.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 是');
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?