📄 mrp_qry_newinformaluprightmrp_d.pas
字号:
unit Mrp_Qry_NewInformalUpRightMrp_D;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Qry, Menus, ExtPrintReport, Db, ActnList, AdODB, Grids, DBGridEh,
StdCtrls, ExtCtrls, ComCtrls, ToolWin, jpeg;
Type
TFrm_Mrp_Qry_NewInformalUpRightMrp_D = Class(TFrm_Base_Qry)
AdoQry_MainItemCode: TStringField;
AdoQry_Mainreleasedate: TDateTimeField;
AdoQry_MaInOrdernoandlineno: TStringField;
AdoQry_Maingrossqty: TFloatField;
AdoQry_MaInOrderqty: TFloatField;
AdoQry_Mainonhand: TFloatField;
AdoQry_Mainnetqty: TFloatField;
AdoQry_Mainordinal: TIntegerField;
AdoQry_Maintrace: TStringField;
AdoQry_MaInPlanqty: TFloatField;
AdoQry_MainPmCode: TIntegerField;
Label1: TLabel;
lbl_ItemCode: TLabel;
Label2: TLabel;
lbl_UomName: TLabel;
Label4: TLabel;
lbl_Preparetime: TLabel;
Label5: TLabel;
lbl_runlt: TLabel;
Label6: TLabel;
lbl_Qclt: TLabel;
Label12: TLabel;
lbl_oncehck: TLabel;
Label13: TLabel;
lbl_minqty: TLabel;
Label11: TLabel;
lbl_onhand: TLabel;
Label10: TLabel;
lbl_Batchstrat: TLabel;
Label9: TLabel;
lbl_PmBatch: TLabel;
Label8: TLabel;
lbl_PmCode: TLabel;
Label7: TLabel;
lbl_ItemName: TLabel;
Label14: TLabel;
lbl_Assignedqty: TLabel;
AdoQry_Mainrealreleasedate: TDateTimeField;
AdoQry_Mainpeggingno: TStringField;
AdoQry_MainssInfo: TStringField;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Act_LookExecute(Sender: TObject);
procedure Act_ShowGridExecute(Sender: TObject);
private
{ Private declarations }
public
procedure InitForm(AdOConnection:TAdOConnection;ShowExtendColumn:Boolean);Override;
// function existsMpsandmo(ItemCode:string;requiredate:string):integer;
// function ifexistsiteItemCode(ItemCode:string;date,Qclt:string):boolean;{ Private declarations }
function existsfArItemCode(ItemCode:string):boolean;
function getlt(ItemCode:string;ltType:integer):integer;
// function existsMps(ItemCode:string;date,Qclt:string):boolean;
function isAdjust(ItemCode:string):boolean;
function getserverdate:string;
{ Public declarations }
end;
var
Frm_Mrp_Qry_NewInformalUpRightMrp_D: TFrm_Mrp_Qry_NewInformalUpRightMrp_D;
ItemCode,ItemName,Orderno,Preparelt,runlt,Qclt,Orderlineno,PmCode,minqty,Batchstrat,requiredate:string;
traceType:integer;ItemPmCode:integer;
implementation
uses Mrp_Qry_NewInformalUpRightMrp, Mrp_Qry_InformalUpRightMrp_D_Po,
Mrp_Qry_InformalUpRightMrp_D_vd,Sys_Global,
Mrp_Qry_InformalUpRightMrp_D_Mo, Mrp_Qry_InformalUpRightMrp_D_NewMps,
Mrp_Qry_InformalUpRightMrp_D_NewParentMo,Mrp_Global,
Mrp_Qry_UpRightMrp_D_MpsandMo,Mrp_Qry_UpRightMrp_D_NewMossParent,
Mrp_Qry_SaleOrder;
{$R *.DFM}
{ TFrm_Mrp_Qry_InformalUpRightMrp_D }
procedure TFrm_Mrp_Qry_NewInformalUpRightMrp_D.InitForm(
AdOConnection: TAdOConnection; ShowExtendColumn: Boolean);
var sqltext1,sqltext2,sqltext3,sqltext4,sqltext5,tMpstr,tmpreleasedate,trace:string;
tmpQry:TAdoQuery;
tmponhand,tmpgrossqty:real; tmpordinal:integer;
success:integer;
tMpstring:string;
begin
inherited;
ItemCode:=Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('ItemCode').asstring;
ItemName:=Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('ItemName').asstring;
Uom:=Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('UomName').asstring;
ldtime:=floattostr(Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('ldtime').asfloat);
Preparelt:=floattostr(Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('Preparelt').asfloat);
runlt:=floattostr(Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('runlt').asfloat);
Qclt:=floattostr(Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('Qclt').asfloat);
PmBatch:=floattostr(Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('PmBatch').asfloat);
ItemPmCode:=Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('PmCode').asinteger;
CurrentInv:=floattostr(Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('CurrentonhandInv').asfloat);
Assignedqty:=floattostr(Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('Assignedqty').asfloat);
oncheckqty:=floattostr(Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('oncheckqty').asfloat);
if Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('PmCode').asinteger=0 then
PmCode:='0 制造';
if Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('PmCode').asinteger=1 then
PmCode:='1 采购';
if Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('PmCode').asinteger=2 then
PmCode:='2 委外加工';
if Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('PmCode').asinteger=3 then
PmCode:='3 既制造又委外';
minqty:=floattostr(Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('minqty').asfloat);
if Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('Batchstrat').asinteger=0 then
Batchstrat:='直接批量法';
if Frm_Mrp_Qry_NewInformalUpRightMrp.AdoQry_Head.fieldbyname('Batchstrat').asinteger=1 then
Batchstrat:='固定批量法';
// lbl_Condition.Caption:=' 物料代码:'+ItemCode+' 单 位:'+Uom+' 提前期:'+ldtime+' 准备提前期:'+Preparelt+' 运行提前期:'+runlt+' 质检提前期:'+Qclt+#13+' 物料描述:'+ItemName+' 制购码:'+PmCode+' 批量:'+PmBatch+' 批量策略:'+Batchstrat+#13+' 当前可用库存:'+CurrentInv+' 当前待检库存:'+oncheckqty+' 安全库存:'+minqty;
lbl_ItemCode.Caption:=ItemCode;
lbl_UomName.Caption:=Uom;
// lbl_ldtime.Caption:=ldtime;
lbl_Preparetime.Caption:=Preparelt;
lbl_runlt.Caption:=runlt;
lbl_Qclt.Caption:=Qclt;
lbl_ItemName.Caption:=ItemName;
lbl_PmCode.Caption:=PmCode;
lbl_PmBatch.Caption:=PmBatch;
lbl_ItemCode.Caption:=ItemCode;
lbl_ItemCode.Caption:=ItemCode;
lbl_Batchstrat.Caption:=Batchstrat;
lbl_oncehck.Caption:=oncheckqty;
lbl_minqty.Caption:=minqty;
tmpQry:=TAdoQuery.Create(dbconnect);
tmpQry.EnableBCD:=False;
tmpQry.Connection:=dbconnect;
// success:=TemporArilyRunMrp(dbconnect,'select ItemCode from InformalMrpResult where ItemCode='+quotedstr(ItemCode)+' and ordinal=1 ',0);
{ sqltext1:='select ItemCode, '
+#13+' PmCode,'
// +#13+' ''建议下达'' as SysInfo, '
+#13+' releasedate, '
+#13+' realreleasedate, '
+' duedate, '
+#13+' Ordernoandlineno=Orderno+''-''+convert(varchAr,Orderlineno),'
+#13+' Orderlinestatus, '
+#13+' canuseonhand, '
+#13+' grossqty, '
+#13+' Orderqty, '
+' realOrderqty, '
+#13+' onhand, '
+#13+' netqty, '
// +#13+' getdate() as requiredate, '
+#13+' ordinal, '
+#13+' pegging as trace, '
+#13+' peggingno, '
+#13+' ''sdffffffffffffffffffffffffffffffffffffffffffdsffdsdfsdsffd'' as ssInfo,'
+#13+' convert(float(8),0) as Planqty, '
+' reMainqty, '
+' Assignedqty '
+#13+' into #tmpInformalMrpResult '
+#13+' from InformalMrpResult'
+#13+' where ItemCode='''+ItemCode+''''
+' Order by InformalMrpResult.releasedate,InformalMrpResult.ordinal ';
sqltext2:='create table #tmpResult '
+' (ItemCode varchAr(16) null, '
+' PmCode int null,'
//+' SysInfo varchAr(10) null, '
+' releasedate datetime null, '
+' realreleasedate datetime null, '
+' Ordernoandlineno varchAr(50) null, '
+' ssInfo varchAr(300) null, '
+' grossqty float(8) null, '
+' Orderqty float(8) null, '
+' onhand float(8) null, '
+' netqty float(8) null, '
// +' requiredate datetime null, '
+' ordinal int null, '
+' trace varchAr(20) null, '
+' peggingno varchAr(50) null, '
+' Planqty float(8) null,'
+' Assignedqty float(8) null) ';
with AdoQry_tmp do
begin
Close;
sql.clear;
sql.Add(sqltext2);
Prepared;
try
execsql;
except
end;
end;
selectfromsql:='select * from #tmpResult';
with tmpQry do
begin
Close;
sql.clear;
sql.Add(sqltext1);
Prepared;
try
execsql;
except
end;
AdoQry_tmp.Close;
AdoQry_tmp.SQL.clear;
AdoQry_tmp.sql.Add('select CurrentonhandInv from Item where ItemCode='+quotedstr(ItemCode));
AdoQry_tmp.Open;
// AdoQry_tmp.First;
tmponhand:=AdoQry_tmp.fieldbyname('CurrentonhandInv').asfloat;
// lbl_Assignedqty.Caption:=floattostr(tmpQry.fieldbyname('Assignedqty').asfloat);
AdoQry_tmp.Close;
AdoQry_tmp.SQL.clear;
AdoQry_tmp.sql.Add('select CurrentonCheckInv from Item where ItemCode='+quotedstr(ItemCode));
AdoQry_tmp.Open;
// AdoQry_tmp.First;
oncheckqty:=floattostr(AdoQry_tmp.fieldbyname('CurrentonCheckInv').asfloat);
// lbl_onhand.Caption:=floattostr(tmpQry.fieldbyname('onhand').asfloat-tmpQry.fieldbyname('Assignedqty').asfloat);
// tmponhand:=strtofloat(CurrentInv);
Close;
sql.clear;
sql.Add('select * from #tmpInformalMrpResult');
Prepared;
try
open;
except
end;
First;
while not eof do
begin
tmpordinal:=fieldbyname('ordinal').asinteger;
case tmpordinal of
0: with AdoQry_tmp do
begin
sqltext3:='insert into #tmpResult '
+#13+' Values('+quotedstr(tmpQry.fieldbyname('ItemCode').asstring)+','+quotedstr(inttostr(tmpQry.fieldbyname('PmCode').asinteger))+','
+#13+'null'+','+'null,'
+#13+quotedstr(tmpQry.fieldbyname('Ordernoandlineno').asstring)+','
+#13+'null,null,null,'
+#13+CurrentInv+','
+#13+'null,'+inttostr(tmpQry.fieldbyname('ordinal').asinteger)+','
+#13+quotedstr(tmpQry.fieldbyname('trace').asstring)+','
+quotedstr(tmpQry.fieldbyname('peggingno').asstring)+','
+floattostr(tmponhand)+',0)';
Close;
sql.clear;
sql.Add(sqltext3);
try
execsql;
except
end;
//tmponhand:=tmponhand+tmpQry.fieldbyname('onhand').asfloat;
end;
1: with AdoQry_tmp do
begin
sqltext3:='insert into #tmpResult '
+#13+' Values('+quotedstr(tmpQry.fieldbyname('ItemCode').asstring)+','+quotedstr(inttostr(tmpQry.fieldbyname('PmCode').asinteger))+','
+#13+'null,null,'
+#13+quotedstr(tmpQry.fieldbyname('Ordernoandlineno').asstring)+','
+#13+'null,null,'+oncheckqty+','
+#13+'null,'
+#13+'null,'+inttostr(tmpQry.fieldbyname('ordinal').asinteger)+','
+#13+quotedstr(tmpQry.fieldbyname('trace').asstring)+','
+quotedstr(tmpQry.fieldbyname('peggingno').asstring)+','
+floattostr(strtofloat(oncheckqty)+tmponhand)+',0)';
Close;
sql.clear;
sql.Add(sqltext3);
try
execsql;
except
end;
tmponhand:=tmponhand+strtofloat(oncheckqty);
end;
2: if ((tmpQry.fieldbyname('onhand').asfloat>=0) and (tmpQry.fieldbyname('Orderlinestatus').asinteger<7)) then
with AdoQry_tmp do
begin
tMpstring:=' ';
if (Trim(tmpQry.fieldbyname('trace').asstring)='待定订单') and (tmpQry.fieldbyname('duedate').asdatetime<=strtodatetime(getserverdate)) and (isAdjust(tmpQry.fieldbyname('ItemCode').asstring)=True) then
tMpstring:='订单应下达'
else if (Trim(tmpQry.fieldbyname('trace').asstring)='下达订单') and (tmpQry.fieldbyname('realOrderqty').asfloat<=0) then
tMpstring:='订单应关闭';
if (tmpQry.fieldbyname('Orderlinestatus').asinteger=5)
and (tmpQry.fieldbyname('onhand').asfloat>0)
and ( (tmpQry.fieldbyname('releasedate').asdatetime<strtodatetime(formatdatetime('yyyy.mm.dd',strtodatetime(GetServerDateTime(dbconnect)))))
or (tmpQry.fieldbyname('duedate').asdatetime<strtodatetime(formatdatetime('yyyy.mm.dd',strtodatetime(GetServerDateTime(dbconnect)))) ))then
tMpstring:=iifstring(tMpstring=' ','应重排',tMpstring+'/应重排');
if tmpQry.fieldbyname('canuseonhand').asinteger=1 then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -