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

📄 inv310_01.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
字号:
unit Inv310_01;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Bas200_11, dxExEdtr, DB, ADODB, ActnList, Menus, dxCntner, dxTL,
  dxDBCtrl, dxDBGrid, ExtCtrls, ComCtrls, ToolWin, StdCtrls,
  wwdbdatetimepicker, Buttons, dxDBTLCl, dxGrClms;

type
  TInv310_01Form = class(TBas200_11Form)
    lblDate: TLabel;
    lblWhs: TLabel;
    sbSearch: TSpeedButton;
    edtFromDate: TwwDBDateTimePicker;
    edtToDate: TwwDBDateTimePicker;
    cbWhs: TComboBox;
    lblItem: TLabel;
    edtItemID: TEdit;
    sbItem: TSpeedButton;
    qryInv500: TADOQuery;
    qryInv150: TADOQuery;
    adsLists: TADODataSet;
    adsListsFNo: TIntegerField;
    adsListsFName: TStringField;
    adsListsFParent: TIntegerField;
    ADODataSet1FDate: TDateTimeField;
    ADODataSet1FBillNo: TStringField;
    ADODataSet1FType: TStringField;
    ADODataSet1FWhsID: TStringField;
    ADODataSet1FWhsName: TStringField;
    ADODataSet1FLocID: TStringField;
    ADODataSet1FLocName: TStringField;
    ADODataSet1FRemark: TStringField;
    ADODataSet1FInQty: TFloatField;
    ADODataSet1FOutQty: TFloatField;
    ADODataSet1FInvQty: TFloatField;
    dxDBGrid1FDate: TdxDBGridDateColumn;
    dxDBGrid1FBillNo: TdxDBGridMaskColumn;
    dxDBGrid1FType: TdxDBGridMaskColumn;
    dxDBGrid1FRemark: TdxDBGridMaskColumn;
    dxDBGrid1FInQty: TdxDBGridMaskColumn;
    dxDBGrid1FOutQty: TdxDBGridMaskColumn;
    dxDBGrid1FInvQty: TdxDBGridMaskColumn;
    dxDBGrid1FWhsName: TdxDBGridMaskColumn;
    dxDBGrid1FLocName: TdxDBGridMaskColumn;
    ADODataSet1FTypeNo: TIntegerField;
    qryInv150I150_001: TAutoIncField;
    qryInv150I150_002: TWideStringField;
    qryInv150I150_003: TWideStringField;
    qryInv150I140_003: TWideStringField;
    adsInv100: TADODataSet;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure sbSearchClick(Sender: TObject);
    procedure sbItemClick(Sender: TObject);
    procedure edtItemIDExit(Sender: TObject);
    procedure dxDBGrid1FWhsNameDrawSummaryFooter(Sender: TObject;
      ACanvas: TCanvas; ARect: TRect; var AText: String;
      var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
      var ADone: Boolean);
    procedure ActPrintExecute(Sender: TObject);
  private
    { Private declarations }
  public
    procedure OpenData(AWhsNo,AItemNo:Integer;AFromDate,AToDate:TDateTime);
    procedure SetInterface; override;
    procedure BrowseEvent; override;
    procedure RefreshEvent; override;
    procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
    { Public declarations }
  end;

var
  Inv310_01Form: TInv310_01Form;

implementation

uses SYSDATA, CommFun, InvComm, Inv500_02, Inv510_02, HwSelData;

{$R *.dfm}

procedure TInv310_01Form.OpenData(AWhsNo,AItemNo:Integer;AFromDate,AToDate:TDateTime);
begin
  adsLists.Locate('FNo',AWhsNo,[]);
  cbWhs.Text:=adsLists.FieldByName('FName').AsString;
  qryInv150.Locate('I150_001',AItemNo,[]);
  edtItemID.Text:=qryInv150.FieldByName('I150_002').AsString;
  edtFromDate.Date:=AFromDate;
  edtToDate.Date:=AToDate;
  sbSearch.Click;
end;

procedure TInv310_01Form.SetInterface;
begin
  inherited;
  Caption:=GetDBString('INV31001001');  //仓库状况查询
  lblWhs.Caption:=GetDBString('INV31001002');  //仓库
  lblItem.Caption:=GetDBString('INV31001003');  //料品
  lblDate.Caption:=GetDBString('INV31001004');  //日期
  sbSearch.Caption:=GetDBString('INV31001005');  //查询
  ADODataSet1FWhsID.DisplayLabel:=GetDBString('INV31001006');  //仓库编号
  ADODataSet1FWhsName.DisplayLabel:=GetDBString('INV31001007');  //仓库名称
  ADODataSet1FLocID.DisplayLabel:=GetDBString('INV31001008');  //库位编号
  ADODataSet1FLocName.DisplayLabel:=GetDBString('INV31001009');  //库位名称
  ADODataSet1FDate.DisplayLabel:=GetDBString('INV31001010');  //进出日期
  ADODataSet1FBillNo.DisplayLabel:=GetDBString('INV31001011');  //单据编号
  ADODataSet1FType.DisplayLabel:=GetDBString('INV31001012');  //操作类型
  ADODataSet1FRemark.DisplayLabel:=GetDBString('INV31001013');  //摘要说明
  ADODataSet1FInQty.DisplayLabel:=GetDBString('INV31001014');  //入库数量
  ADODataSet1FOutQty.DisplayLabel:=GetDBString('INV31001015');  //出库数量
  ADODataSet1FInvQty.DisplayLabel:=GetDBString('INV31001016');  //库存数量
end;

procedure TInv310_01Form.FormCreate(Sender: TObject);
var
  ADate:TDateTime;
begin
  inherited;
  ADate:=GetServerDate;
  edtFromDate.Date:=GetMonthFirstDate(ADate);
  edtToDate.Date:=GetMonthEndDate(ADate);
  //取得所有仓库库位列表
  adsLists.Close;
  adsLists.CreateDataSet;
  GetAllWhs(adsLists,cbWhs);
  qryInv150.Open;
  edtItemID.Text:=qryInv150.FieldByName('I150_002').AsString;
  sbSearch.Click;
end;

procedure TInv310_01Form.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  adsLists.Close;
  qryInv150.Close;
end;

procedure TInv310_01Form.RefreshEvent;
begin
  inherited;
  sbSearch.Click;
end;

procedure TInv310_01Form.ReportGetValue(const ParName: String;
  var ParValue: Variant);
begin
  inherited;

end;

//取得所有仓库和库位列表
procedure GetAllWhs(ADataSet: TADODataSet; AWhsNo,ALocNo:Integer);
var
  S:String;
begin
  ADataSet.Close;
  ADataSet.CreateDataSet;
  ADataSet.DisableControls;
  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  //取得所要的数据
//  if ASuper then
//  begin
    SYSDM.qryQuery.SQL.Add('select * from INV100 A left join INV110 B on A.I100_001=B.I110_002');
    if AWhsNo<>0 then S:='where A.I100_001='+IntToStr(AWhsNo);
    if ALocNo<>0 then
      if S='' then S:='where B.I110_001='+IntToStr(ALocNo) else S:=S+' and B.I110_001='+IntToStr(ALocNo);
{  end else
  begin
    SYSDM.qryQuery.SQL.Add('select * from SYS500C, INV100');
    SYSDM.qryQuery.SQL.Add('where S500C_002=I100_001 and ');
    SYSDM.qryQuery.SQL.Add('  S500C_003=''WHS'' and S500C_004='+GetBoolean(True));
    SYSDM.qryQuery.SQL.Add('  and S500C_001='+IntToStr(AUserID));
    SYSDM.qryQuery.SQL.Add('order by I100_002');
  end; }
  SYSDM.qryQuery.Open;
  while not SYSDM.qryQuery.Eof do
  begin
    ADataSet.Append;
    ADataSet.FieldByName('I100_001').Value:=SYSDM.qryQuery.FieldByName('I100_001').Value;
    ADataSet.FieldByName('I100_002').Value:=SYSDM.qryQuery.FieldByName('I100_002').Value;
    ADataSet.FieldByName('I100_003').Value:=SYSDM.qryQuery.FieldByName('I100_003').Value;
    ADataSet.FieldByName('I110_001').Value:=SYSDM.qryQuery.FieldByName('I110_001').Value;
    ADataSet.FieldByName('I110_003').Value:=SYSDM.qryQuery.FieldByName('I110_003').Value;
    ADataSet.FieldByName('I110_004').Value:=SYSDM.qryQuery.FieldByName('I110_004').Value;
    SYSDM.qryQuery.Next;
  end;
  ADataSet.First;
  ADataSet.EnableControls;
end;

procedure TInv310_01Form.sbSearchClick(Sender: TObject);
var
  AWhsNo,ALocNo,AItemNo:Integer;
  AFromDate,AToDate:TDateTime;
  ABanlance,APrice,AAmount:Double;
begin
  inherited;
  if adsLists.IsEmpty then Exit;
  adsLists.Locate('FName',cbWhs.Text,[]);
  AWhsNo:=adsLists.FieldByName('FNo').AsInteger;
  ALocNo:=0;
  if AWhsNo<0 then
    AWhsNo:=AWhsNo*-1
  else if AWhsNo>0 then
  begin
    ALocNo:=AWhsNo;
    AWhsNo:=0;
  end;

  if not qryInv150.Locate('I150_002',edtItemID.Text,[]) then
  begin
    ShowMsg('UMS10000460');  //输入的料品编号无效,请重新输入
    edtItemID.SetFocus;
    Abort;
  end;
  AItemNo:=qryInv150.FieldByName('I150_001').Value;

  if (edtFromDate.Text='') or (edtToDate.Text='') then
  begin
    ShowMsg('UMS10000319');  //起止日期不可为空
    if edtFromDate.Text='' then edtFromDate.SetFocus else edtToDate.SetFocus;
    Abort;
  end;
  if edtFromDate.Date>edtToDate.Date then
  begin
    ShowMsg('UMS10000320');  //结束日期不能小于起始日期
    edtToDate.SetFocus;
    Abort;
  end;
  AFromDate:=edtFromDate.Date;
  AToDate:=edtToDate.Date;

  try
    Screen.Cursor:=crHourGlass;
    ADODataSet1.DisableControls;
    ADODataSet1.Close;
    ADODataSet1.CreateDataSet;

    //取得所有进出仓记录
    qryInv500.Close;
    qryInv500.SQL.Clear;
    qryInv500.SQL.Add('select A.*,B.I550_002,B.I550_003,C.I100_002,C.I100_003,D.I110_003,D.I110_004');
    qryInv500.SQL.Add('from (((INV500 A left join INV550 B on A.I500_003=B.I550_001)');
    qryInv500.SQL.Add('        left join INV100 C on A.I500_007=C.I100_001)');
    qryInv500.SQL.Add('        left join INV110 D on A.I500_008=D.I110_001)');
    qryInv500.SQL.Add('where I500_009='+IntToStr(AItemNo));
    if AWhsNo<>0 then qryInv500.SQL.Add(' and I500_007='+IntToStr(AWhsNo));
    if ALocNo<>0 then qryInv500.SQL.Add(' and I500_008='+IntToStr(ALocNo));
    qryInv500.SQL.Add('and I500_005>='+GetDateString(AFromDate)+' and I500_005<='+GetDateString(AToDate)+' and I500_004<>0');
    qryInv500.SQL.Add('order by I100_002,I110_003,I500_005,I500_017,I500_001');
    qryInv500.Open;
    while not qryInv500.Eof do
    begin
      ADODataSet1.Append;
      ADODataSet1.FieldByName('FDate').Value:=qryInv500.FieldByName('I500_005').Value;  //进出日期
      ADODataSet1.FieldByName('FBillNo').Value:=qryInv500.FieldByName('I500_001').Value;  //单据编号
      ADODataSet1.FieldByName('FTypeNo').Value:=qryInv500.FieldByName('I500_003').Value;  //操作类型电脑编号
      ADODataSet1.FieldByName('FType').Value:=qryInv500.FieldByName('I550_003').Value;  //操作类型
      ADODataSet1.FieldByName('FWhsID').Value:=qryInv500.FieldByName('I100_002').Value;  //仓库编号
      ADODataSet1.FieldByName('FWhsName').Value:='['+qryInv500.FieldByName('I100_002').Value+']'+qryInv500.FieldByName('I100_003').Value;  //仓库名称
      ADODataSet1.FieldByName('FLocID').Value:=qryInv500.FieldByName('I110_003').Value;  //库位编号
      ADODataSet1.FieldByName('FLocName').Value:='['+qryInv500.FieldByName('I110_003').Value+']'+qryInv500.FieldByName('I110_004').Value;  //库位名称
      ADODataSet1.FieldByName('FRemark').Value:=qryInv500.FieldByName('I500_006').Value;  //摘要说明
      case qryInv500.FieldByName('I500_004').AsInteger of
        0:ADODataSet1.FieldByName('FInQty').Value:=qryInv500.FieldByName('I500_011').Value;  //期初建账
        1:ADODataSet1.FieldByName('FInQty').Value:=qryInv500.FieldByName('I500_011').Value;  //入仓数量
        2:ADODataSet1.FieldByName('FOutQty').Value:=qryInv500.FieldByName('I500_011').Value;  //出仓数量
        3:ADODataSet1.FieldByName('FInQty').Value:=qryInv500.FieldByName('I500_011').Value;  //调整数量
      end;
      ADODataSet1.FieldByName('FInvQty').Value:=qryInv500.FieldByName('I500_014').Value;  //库存数量
      ADODataSet1.Post;
      qryInv500.Next;
    end;

    //取得仓库的期初余额
    GetAllWhs(adsInv100,AWhsNo,ALocNo);
    while not adsInv100.Eof do
    begin
      AWhsNo:=adsInv100.FieldByName('I100_001').AsInteger;
      ALocNo:=adsInv100.FieldByName('I110_001').AsInteger;
      GetItemOpenValue(AWhsNo,ALocNo,AItemNo,AFromDate,ABanlance,APrice,AAmount);
      if (ADODataSet1.Locate('FWhsID;FLocID',VarArrayOf([adsInv100.FieldByName('I100_002').Value,adsInv100.FieldByName('I110_003').Value]),[])) or (ABanlance<>0) then
      begin
        ADODataSet1.Append;
        ADODataSet1.FieldByName('FWhsID').Value:=adsInv100.FieldByName('I100_002').Value;  //仓库编号
        ADODataSet1.FieldByName('FWhsName').Value:='['+adsInv100.FieldByName('I100_002').Value+']'+adsInv100.FieldByName('I100_003').Value;  //仓库名称
        ADODataSet1.FieldByName('FLocID').Value:=adsInv100.FieldByName('I110_003').Value;  //库位编号
        ADODataSet1.FieldByName('FLocName').Value:='['+adsInv100.FieldByName('I110_003').Value+']'+adsInv100.FieldByName('I110_004').Value;  //库位名称
        ADODataSet1.FieldByName('FRemark').Value:='期初余额';
        ADODataSet1.FieldByName('FInvQty').Value:=ABanlance;
        ADODataSet1.Post;
      end;
      adsInv100.Next;
    end;

  finally
    ADODataSet1.EnableControls;
    Screen.Cursor:=crDefault;
  end;
  ARecordCount:=GetDataSetCount(ADODataSet1);
end;

procedure TInv310_01Form.BrowseEvent;
begin
  inherited;
  if ADODataSet1FBillNo.AsString='' then Exit;
  if ADODataSet1.FieldByName('FTypeNo').AsInteger=15 then  //转仓
  begin
    Inv510_02Form:=TInv510_02Form.Create(Application);
    Inv510_02Form.OpenData(ADODataSet1FBillNo.AsString);
    Inv510_02Form.ShowModal;
  end else
  begin
    Inv500_02Form:=TInv500_02Form.Create(Application);
    Inv500_02Form.OpenData(ADODataSet1FBillNo.AsString);
    Inv500_02Form.ShowModal;
  end;
end;

procedure TInv310_01Form.sbItemClick(Sender: TObject);
begin
  inherited;
//料品资料
  if not edtItemID.Focused then edtItemID.SetFocus;
  HwSelDataForm:=THwSelDataForm.Create(Application);
  HwSelDataForm.OpenSelData(qryInv150,nil);
  if HwSelDataForm.ShowModal=1 then
  begin
    edtItemID.Text:=qryInv150.FieldByName('I150_002').AsString;
  end;
end;

procedure TInv310_01Form.edtItemIDExit(Sender: TObject);
begin
  inherited;
//料品编号
  if trim(edtItemID.Text)='' then Exit;
  if qryInv150.Locate('I150_002',edtItemID.Text,[]) then
  begin
    edtItemID.Text:=qryInv150.FieldByName('I150_002').AsString;
  end else
  begin
    edtItemID.Text:='';
    ShowMsg('UMS10000460');  //输入的料品编号无效,请重新输入
    edtItemID.SetFocus;
    Abort;
  end;
end;

procedure TInv310_01Form.dxDBGrid1FWhsNameDrawSummaryFooter(
  Sender: TObject; ACanvas: TCanvas; ARect: TRect; var AText: String;
  var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
  var ADone: Boolean);
begin
  inherited;
  AColor:=clWhite;
  AText:=GetDBString('COM00004002')+IntToStr(ARecordCount);  //记录总数:
end;

procedure TInv310_01Form.ActPrintExecute(Sender: TObject);
begin
  inherited;

end;

initialization
  RegisterClass(TInv310_01Form);

finalization
  UnRegisterClass(TInv310_01Form);

end.

⌨️ 快捷键说明

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