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

📄 inv_opmonthsumqry_c.pas

📁 一个MRPII系统源代码版本
💻 PAS
字号:
unit Inv_OpMonthSumQry_C;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Condition, Db, AdODB, StdCtrls, Mask, ExtEdit;

Type
  TFrm_Inv_OpMonthSumQry_C = Class(TFrm_Base_Condition)
    Label2: TLabel;
    MEdt_Month: TMaskEdit;
    CkBx_ItemClass: TCheckBox;
    procedure btn_okClick(Sender: TObject);
    procedure MonthCheck(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Frm_Inv_OpMonthSumQry_C: TFrm_Inv_OpMonthSumQry_C;

implementation

uses Sys_Global,Inv_Global;

{$R *.DFM}

procedure TFrm_Inv_OpMonthSumQry_C.btn_okClick(Sender: TObject);
var
  i:integer;
  zzz:string;
begin
  inherited;
  zzz:='zzzzzzzzzzzzzzzzzzzz';
  // 按月份、物料代码汇总 数量、金额,再计算出单价(当数量<>0时,否则单价=0)
  if  CkBx_ItemClass.Checked then
  begin
  {
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:=' select ItemCode,ItemName from Item '
                        +' where ClassCode Is Null or ClassCode=''''';
    AdoQry_Tmp.open;
    if not AdoQry_Tmp.eof then
    begin
       DispInfo('物料:'+AdoQry_Tmp.fieldbyname('ItemCode').asstring+' '+
               AdoQry_Tmp.fieldbyname('ItemName').asstring+' 没有进行存货分类定义!',1);
       exit;
    end;
   }

    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:='Delete #InvOpMonthSum';
    AdoQry_Tmp.ExecSQL;
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:='Insert #InvOpMonthSum'
      +' Select OpMonthSum.ItemCode'
      +',Item.ItemName'
      +',OpMonthSum.ItemCode+'' ''+Item.ItemName As ItemCodeName,0 flag'
      +','''''
      +',Item.ClassCode'
      +',0'
      +',Uom.UomName'
      +',OpMonthSum.InvLmAmount'
      +',OpMonthSum.InvInAmount'
      +',OpMonthSum.InvOutAmount'
      +',OpMonthSum.InvtzAmount'
      +',OpMonthSum.InvBlncAmount'
      +',OpMonthSum.InvLmQty'
      +',OpMonthSum.InvInQty'
      +',OpMonthSum.InvOutQty'
      +',OpMonthSum.InvtzQty'
      +',OpMonthSum.InvBlncQty'
      +',OpMonthSum.InvLmPrice'
      +',OpMonthSum.InvInPrice'
      +',OpMonthSum.InvOutPrice'
      +',OpMonthSum.InvBlncPrice'
      +' From OpMonthSum Join Item On OpMonthSum.ItemCode=Item.ItemCode'
      +' and Item.ClassCode is not null and Item.ClassCode<>'''''
      +' Join Uom On Item.UomCode=Uom.UomCode'
      +' Where OpMonthSum.InvMonth='''+MEdt_Month.Text+'''';
    AdoQry_Tmp.ExecSQL;

    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:='Insert #InvOpMonthSum'
      +' Select #InvOpMonthSum.ClassCode'
      +',ItemClass.ClassName'
      +',#InvOpMonthSum.ClassCode+'' ''+ItemClass.ClassName+'' 合计'' As ClassCodeName,1 flag'
      +','''''
      +',#InvOpMonthSum.ClassCode'
      +',1'
      +','''''
      +',Sum(#InvOpMonthSum.InvLmAmount)'
      +',Sum(#InvOpMonthSum.InvInAmount)'
      +',Sum(#InvOpMonthSum.InvOutAmount)'
      +',Sum(#InvOpMonthSum.InvtzAmount)'
      +',Sum(#InvOpMonthSum.InvBlncAmount)'
      +',Sum(#InvOpMonthSum.InvLmQty)'
      +',Sum(#InvOpMonthSum.InvInQty)'
      +',Sum(#InvOpMonthSum.InvOutQty)'
      +',Sum(#InvOpMonthSum.InvtzQty)'
      +',Sum(#InvOpMonthSum.InvBlncQty)'
      +',case when Sum(#InvOpMonthSum.InvLmQty)<>0 then '
      +' Sum(#InvOpMonthSum.InvLmAmount)/Sum(#InvOpMonthSum.InvLmQty) else 0 end '
      +',case when Sum(#InvOpMonthSum.InvInQty)<>0 then '
      +' Sum(#InvOpMonthSum.InvInAmount)/Sum(#InvOpMonthSum.InvInQty) else 0 end '
      +',case when Sum(#InvOpMonthSum.InvOutQty)<>0 then '
      +' Sum(#InvOpMonthSum.InvOutAmount)/Sum(#InvOpMonthSum.InvOutQty) else 0 end '
      +',case when Sum(#InvOpMonthSum.InvBlncQty)<>0 then '
      +' Sum(#InvOpMonthSum.InvBlncAmount)/Sum(#InvOpMonthSum.InvBlncQty) else 0 end '
      +' From #InvOpMonthSum Join ItemClass On #InvOpMonthSum.ClassCode=ItemClass.ClassCode'
      +' Where #InvOpMonthSum.OrderInt=0'
      +' Group By #InvOpMonthSum.ClassCode,ItemClass.ClassName';
    AdoQry_Tmp.ExecSQL;

    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:='Select ItemClass.PClassCode'
      +' From ItemClass'
      +' Where ItemClass.PClassCode<>'''''
      +' And ItemClass.ClassCode In'
      +' (Select #InvOpMonthSum.ClassCode'
      +' From #InvOpMonthSum'
      +' Where #InvOpMonthSum.OrderInt=1)';
    AdoQry_Tmp.Open;
    i:=2;
    while not AdoQry_Tmp.IsEmpty do
    begin
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:='Insert #InvOpMonthSum'
        +' Select ItemClass.PClassCode'
        +',p.ClassName'
        +',ItemClass.PClassCode+'' ''+p.ClassName+'' 合计'' As ClassCodeName,1 flag'
        +','''''
        +',ItemClass.PClassCode'
        +','+IntToStr(i)
        +','''''
        +',Sum(#InvOpMonthSum.InvLmAmount)'
        +',Sum(#InvOpMonthSum.InvInAmount)'
        +',Sum(#InvOpMonthSum.InvOutAmount)'
        +',Sum(#InvOpMonthSum.InvtzAmount)'
        +',Sum(#InvOpMonthSum.InvBlncAmount)'
        +',Sum(#InvOpMonthSum.InvLmQty)'
        +',Sum(#InvOpMonthSum.InvInQty)'
        +',Sum(#InvOpMonthSum.InvOutQty)'
        +',Sum(#InvOpMonthSum.InvtzQty)'
        +',Sum(#InvOpMonthSum.InvBlncQty)'
        +',Sum(#InvOpMonthSum.InvLmPrice)'
        +',Sum(#InvOpMonthSum.InvInPrice)'
        +',Sum(#InvOpMonthSum.InvOutPrice)'
        +',Sum(#InvOpMonthSum.InvBlncPrice)'
        +' From #InvOpMonthSum Join ItemClass On #InvOpMonthSum.ClassCode=ItemClass.ClassCode'
        +' Join ItemClass p On ItemClass.PClassCode=p.ClassCode'
        +' Where #InvOpMonthSum.OrderInt='+IntToStr(i-1)
        +' and ItemClass.PClassCode<>'''' and ItemClass.PClassCode is not null'
        +' Group By ItemClass.PClassCode,p.ClassName';
      AdoQry_Tmp.ExecSQL;
  {
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:='Update #InvOpMonthSum Set'
        +' #InvOpMonthSum.ClassCodeOrder=ItemClass.PClassCode+#InvOpMonthSum.ClassCodeOrder'
        +' From #InvOpMonthSum Join ItemClass On #InvOpMonthSum.ClassCode=ItemClass.ClassCode';
      AdoQry_Tmp.ExecSQL;
   }
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:='Select ItemClass.PClassCode'
        +' From ItemClass'
        +' Where ItemClass.PClassCode<>'''' and ItemClass.pClassCode is not null'
        +' And ItemClass.ClassCode In'
        +' (Select #InvOpMonthSum.ClassCode'
        +' From #InvOpMonthSum'
        +' Where #InvOpMonthSum.OrderInt='+IntToStr(i)+')';
      AdoQry_Tmp.Open;
      Inc(i);
    end;

    i:=1;
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:='update #InvOpMonthSum set ClassCodeOrder=ClassCode';
    AdoQry_Tmp.ExecSQL;
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:='Select ItemClass.PClassCode'
        +' From ItemClass'
        +' Where ItemClass.PClassCode<>'''' and ItemClass.pClassCode is not null'
        +' And ItemClass.ClassCode In'
        +' (Select #InvOpMonthSum.ClassCode'
        +' From #InvOpMonthSum)';
    AdoQry_Tmp.open;
    while not AdoQry_Tmp.IsEmpty do
    begin
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:='Update #InvOpMonthSum Set'
        +' #InvOpMonthSum.ClassCodeOrder=#InvOpMonthSum.ClassCodeOrder+left('+quotedstr(zzz)+',Orderint)'
        +' From ItemClass where #InvOpMonthSum.ClassCode=ItemClass.ClassCode '
        +' and (ItemClass.pClassCode='''' or ItemClass.pClassCode is null) '
        +' and (#InvOpMonthSum.ClassCode<>'''' or #InvOpMonthSum.ClassCode is not null)';
      AdoQry_Tmp.ExecSQL;

      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:='Update #InvOpMonthSum Set'
        +' #InvOpMonthSum.ClassCodeOrder=ItemClass.PClassCode+left('+quotedstr(zzz)+',1)+#InvOpMonthSum.ClassCodeOrder+left('+quotedstr(zzz)+',Orderint)'
        +' From ItemClass where #InvOpMonthSum.ClassCode=ItemClass.ClassCode'
        +' and ItemClass.pClassCode<>'''' and ItemClass.pClassCode is not null '
        +' and #InvOpMonthSum.ClassCode<>'''' and #InvOpMonthSum.ClassCode is not null';
      AdoQry_Tmp.ExecSQL;
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:='Update #InvOpMonthSum Set'
        +' #InvOpMonthSum.ClassCode=ItemClass.PClassCode '
        +' From ItemClass where #InvOpMonthSum.ClassCode=ItemClass.ClassCode ';
      AdoQry_Tmp.ExecSQL;
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:='Select ItemClass.PClassCode'
        +' From ItemClass'
        +' Where ItemClass.PClassCode<>'''' and ItemClass.PClassCode is not null '
        +' And ItemClass.ClassCode In'
        +' (Select #InvOpMonthSum.ClassCode'
        +' From #InvOpMonthSum where ClassCode<>'''' and ClassCode is not null)';
      AdoQry_Tmp.open;
    end;

    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:='Insert #InvOpMonthSum'
      +' Select OpMonthSum.ItemCode'
      +',Item.ItemName'
      +',OpMonthSum.ItemCode+'' ''+Item.ItemName As ItemCodeName,0 flag'
      +',''zzzzzzzzzzzzzzz'''
      +',Item.ClassCode'
      +',0'
      +',Uom.UomName'
      +',OpMonthSum.InvLmAmount'
      +',OpMonthSum.InvInAmount'
      +',OpMonthSum.InvOutAmount'
      +',OpMonthSum.InvtzAmount'
      +',OpMonthSum.InvBlncAmount'
      +',OpMonthSum.InvLmQty'
      +',OpMonthSum.InvInQty'
      +',OpMonthSum.InvOutQty'
      +',OpMonthSum.InvtzQty'
      +',OpMonthSum.InvBlncQty'
      +',OpMonthSum.InvLmPrice'
      +',OpMonthSum.InvInPrice'
      +',OpMonthSum.InvOutPrice'
      +',OpMonthSum.InvBlncPrice'
      +' From OpMonthSum Join Item On OpMonthSum.ItemCode=Item.ItemCode'
      +' and (Item.ClassCode is null or Item.ClassCode='''')'
      +' Join Uom On Item.UomCode=Uom.UomCode'
      +' Where OpMonthSum.InvMonth='''+MEdt_Month.Text+'''';
    AdoQry_Tmp.ExecSQL;


    Condition:='Select ClassCodeOrder'
      +',ItemCode'
      +',ItemName'
      +',ItemCodeName,flag'
      +',UomName'
      +',InvLMQty'
      +',InvLMPrice'
      +',InvLMAmount'
      +',InvInQty'
      +',InvInPrice'
      +',InvInAmount'
      +',InvOutQty'
      +',InvOutPrice'
      +',InvOutAmount'
      +',InvtzQty'
      +',InvtzAmount'
      +',InvBlncQty'
      +',InvBlncPrice'
      +',InvBlncAmount'
      +' From #InvOpMonthSum'
      +' where (InvLMQty<>0 or InvLMAmount<>0 or InvInQty<>0 or InvInAmount<>0 '
      +' or InvOutQty<>0 or InvOutAmount<>0 or InvBlncQty<>0 or InvBlncAmount<>0)'
      +' Order By ClassCodeOrder';
  end
  else
  begin
    Condition:='select * from(Select OpMonthSum.ItemCode'
      +',Item.ItemName'
      +',OpMonthSum.ItemCode+'' ''+Item.ItemName As ItemCodeName,0 flag'
      +',Uom.UomName'
      +',Sum(OpMonthSum.InvLMQty) As InvLMQty'
      +',case when Sum(OpMonthSum.InvLMQty)<>0 '
      +' then Sum(OpMonthSum.InvLMAmount)/Sum(OpMonthSum.InvLMQty) end As InvLMPrice'
      +',Sum(OpMonthSum.InvLMAmount) As InvLMAmount'
      +',Sum(OpMonthSum.InvInQty) As InvInQty'
      +',case when Sum(OpMonthSum.InvInQty)<>0 '
      +' then Sum(OpMonthSum.InvInAmount)/Sum(OpMonthSum.InvInQty) end As InvInPrice'
      +',Sum(OpMonthSum.InvInAmount) As InvInAmount'
      +',Sum(OpMonthSum.InvOutQty) As InvOutQty'
      +',case when Sum(OpMonthSum.InvOutQty)<>0 '
      +' then Sum(OpMonthSum.InvOutAmount)/Sum(OpMonthSum.InvOutQty) end As InvOutPrice'
      +',Sum(OpMonthSum.InvOutAmount) As InvOutAmount'
      +',Sum(OpMonthSum.InvtzQty) As InvtzQty'
      +',Sum(OpMonthSum.InvtzAmount) As InvtzAmount'
      +',Sum(OpMonthSum.InvBlncQty) As InvBlncQty'
      +',case when Sum(OpMonthSum.InvBlncQty)<>0 '
      +' then Sum(OpMonthSum.InvBlncAmount)/Sum(OpMonthSum.InvBlncQty) end As InvBlncPrice'
      +',Sum(OpMonthSum.InvBlncAmount) As InvBlncAmount'
      +' From OpMonthSum Join Item On OpMonthSum.ItemCode=Item.ItemCode'
      +' Join Uom On Item.UomCode=Uom.UomCode'
      +' where (InvLMQty<>0 or InvLMAmount<>0 or InvInQty<>0 or InvInAmount<>0 or Invtzqty<>0 '
      +' or InvtzAmount<>0 or InvOutQty<>0 or InvOutAmount<>0 or InvBlncQty<>0 or InvBlncAmount<>0) '
      +' and OpMonthSum.InvMonth='''+MEdt_Month.Text+''''
      +' Group By OpMonthSum.ItemCode,Item.ItemName,Uom.UomName ) a Order by ItemCode' ;
//      +' where Invlmqty<>0 or InvInqty<>0 or Invoutqty<>0 or Invblncqty<>0 ';
  end;
  ConditionHint:='月份:'+MEdt_Month.Text;
  ModalResult:=mrOk;
end;

procedure TFrm_Inv_OpMonthSumQry_C.MonthCheck(Sender: TObject);
begin
  inherited;
  InvDataChangeCheck(AdoQry_Tmp,TEdit(Sender).Text);
end;

procedure TFrm_Inv_OpMonthSumQry_C.FormCreate(Sender: TObject);
begin
  inherited;
  MEdt_Month.Text:=FormatDateTime('yyyy.mm',Now);
end;

end.

⌨️ 快捷键说明

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