mrp_enter_newautomo.pas
来自「一个MRPII系统源代码版本」· PAS 代码 · 共 884 行 · 第 1/3 页
PAS
884 行
+' 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;
// showmessage(floattostr(AdoQry_Body.fieldbyname('moqty').asfloat));
// showmessage(floattostr(AdoQry_Body.fieldbyname('ssqty').asfloat));
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_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_NewAutoMo.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_NewAutoMo.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;
procedure TFrm_Mrp_Enter_NewAutoMo.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;
procedure TFrm_Mrp_Enter_NewAutoMo.DateCheck(Sender: TObject);
begin
If (ActiveControl.Name='DBGridEh1') Or (ActiveControl.Name='ControlBar') Then
Exit;
inherited;
end;
procedure TFrm_Mrp_Enter_NewAutoMo.Act_DeleteLineExecute(Sender: TObject);
var
BookmArk:String;
tmPMoLineno:integer;
tmpno:integer;
i : integer;
begin
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?