⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mrp_qry_newinformaluprightmrp_d.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 3 页
字号:
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 + -