mrp_qry_halfrunmrp_d.pas

来自「一个MRPII系统源代码版本」· PAS 代码 · 共 143 行

PAS
143
字号
unit Mrp_Qry_HalfRunMrp_D;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Qry, Menus, ExtPrintReport, Db, ActnList, AdODB, Grids, DBGridEh,
  StdCtrls, ExtCtrls, ComCtrls, ToolWin;

Type
  TFrm_Mrp_Qry_HalfRunMrp_D = Class(TFrm_Base_Qry)
    AdoQry_MainItemflag: TStringField;
    AdoQry_MainUomName: TStringField;
    AdoQry_Maingrossqty: TFloatField;
    AdoQry_MainAssignedqty: TFloatField;
    AdoQry_MainCurrentoncheckqty: TFloatField;
    AdoQry_Mainonhandqty: TFloatField;
    AdoQry_Mainlessqty: TFloatField;
    Label1: TLabel;
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure AdoQry_MainAfterScroll(DataSet: TDataSet);
  private
    { Private declarations }
  public
   ite_ItemCode:string;
   ite_grossqty:real;
   procedure InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);Override;
    { Public declarations }
  end;

var
  Frm_Mrp_Qry_HalfRunMrp_D: TFrm_Mrp_Qry_HalfRunMrp_D;

implementation
uses Sys_Global;
{$R *.DFM}

{ TFrm_Mrp_Qry_HalfRunMrp_D }

procedure TFrm_Mrp_Qry_HalfRunMrp_D.InitForm(AdOConnection: TAdOConnection;
  ReadOnly: Boolean);
var sqltext:string; tMpsqltext:string;
begin
Application.ProcessMessages;
  inherited;
  tMpsqltext:='select ItemCode,sum(isnull(grossqty,0)) as grossqty into #tMpsonItem from #tMpson group by ItemCode';
  Executesql(AdoQry_tmp,tMpsqltext,1);
  tMpsqltext:='Select ItemCode,    '
              +'        MoLine.MONo As OrderNo,    '
              +'        MoLineNo As OrderLineNo,   '
              +'        MoNoFinishQty As OrderQty,  '
              +'        MoQty As Qty,               '
              +'        MoLineStatus As OrderLineStatus,  '
              +'        Mo.DeptCode As DeptVendorCode,    '
              +'        0 As PmCode,        '
              +'        MoStArtWorkDate As DueDate,  '
              +'        MoLineDate As ReleaseDate    '
              +' Into #TmPmoPo  '
             +'  From MoLine    '
              +' Join Mo On MoLine.MoNo=Mo.MoNo   '
              +' Where MoLineStatus<7   '
             +'  And MoNoFinishQty>0     '
             +'  and ItemCode in(select ItemCode from Item where PmCode=0 or PmCode=3) '
             +'  And MoLine.MoNo Not In   '
             +'    (Select MoNo           '
             +'  From Mo              '
            +'   Where MoSpecial=1) '
            +' Create Index ItemCode On #TmPmoPo(ItemCode,ReleaseDate) ';
   Executesql(AdoQry_tmp,tMpsqltext,1);
  sqltext:='select Itemflag=#tMpsonItem.ItemCode+'' ''+Item.ItemName, '
           +'      #tMpsonItem.ItemCode, '
           +'      Uom.UomName, '
           +'      #tMpsonItem.grossqty, '
           +'      convert(float,0) as Assignedqty, '
           +'      Item.CurrentonCheckInv as Currentoncheckqty, '
           +'      Item.CurrentonhandInv  as onhandqty, '
           +'      convert(float,0) as lessqty '
           +' into #grossResult  '
           +' from #tMpsonItem'
           +'  join Item on #tMpsonItem.ItemCode=Item.ItemCode '
           +'  left outer join Uom on Item.UomCode=Uom.UomCode ';
  Executesql(AdoQry_Main,sqltext,1);
  sqltext:='Update #grossResult   '
                 +' Set Assignedqty=TmpInvOutBillLine.InvBillQty   '
                +' From (Select InvOutBillLine.ItemCode,   '
                +'              InvBillQty*#TmPmOPo.OrderQty/#TmPmOPo.Qty As InvBillQty  '
                +'        From InvOutBillLine                                            '
                +'        Join #TmPmOPo on InvOutBillLine.PONo= #TmPmOPo.OrderNo         '
                +'                  And InvOutBillLine.POLineNo= #TmPmoPo.OrderLineNo    '
                +'        Where InvOutBillLine.PONo Is Not Null                '
                +'          And #TmPmOPo.OrderLineStatus=6                     '
                +'          And #TmPmOPo.Qty>0 ) TmpInvOutBillLine             '
                +' Where #grossResult.ItemCode=TmpInvOutBillLine.ItemCode          '
               +' Update #grossResult    '
               +'     Set Assignedqty=Assignedqty+TmpInvOutBillLine.InvBillQty   '
               +'   From (Select InvOutBillLine.ItemCode,              '
               +'                InvBillQty*#TmPmOPo.OrderQty/#TmPmOPo.Qty As InvBillQty '
               +'         From InvOutBillLine                                      '
               +'         Join #TmPmOPo on InvOutBillLine.MONo= #TmPmOPo.OrderNo   '
               +'          And InvOutBillLine.MoLineNo=#TmPmoPo.OrderLineNo        '
               +'        Where InvOutBillLine.MONo Is Not Null                     '
               +'          And #TmPmOPo.OrderLineStatus=6                          '
               +'          And #TmPmOPo.Qty>0 ) TmpInvOutBillLine                  '
               +'   Where #grossResult.ItemCode=TmpInvOutBillLine.ItemCode             ';
               
 Executesql(AdoQry_Main,sqltext,1);
 sqltext:='update #grossResult'
          +' set lessqty=case when onhandqty+Currentoncheckqty+Assignedqty-grossqty>0 then null '
                        +' else onhandqty+Currentoncheckqty+Assignedqty-grossqty '
                        +' end';
 Executesql(AdoQry_Main,sqltext,1);
 selectfromsql:='select * from #grossResult';
  Executesql(AdoQry_Main,'select * from #grossResult Order by ItemCode',0);
end;

procedure TFrm_Mrp_Qry_HalfRunMrp_D.FormDestroy(Sender: TObject);
begin
  inherited;
 Frm_Mrp_Qry_HalfRunMrp_D:=nil;
end;

procedure TFrm_Mrp_Qry_HalfRunMrp_D.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  try
  Executesql(AdoQry_tmp,'drop table #tMpson,#tMpsonItem,#tmPmopo,#grossResult',1);
  except
  end;
end;

procedure TFrm_Mrp_Qry_HalfRunMrp_D.AdoQry_MainAfterScroll(
  DataSet: TDataSet);
begin
  inherited;
if AdoQry_Main.fieldbyname('lessqty').asfloat<0 then
  label1.Visible:=True
else label1.Visible:=False;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?