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

📄 imstexp.pas

📁 一个仓库管理软件包括,仓库入库,仓库出库,库存信息,单据审核,反审核等功能.
💻 PAS
字号:
unit ImSTExp;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, dxCntner, dxEditor, dxExEdtr, dxEdLib, Grids, DBGridEh,
  StdCtrls, ExtCtrls, ComCtrls, ToolWin, DB, ADODB;

type
  TFrmImSTExp = class(TForm)
    CoolBar1: TCoolBar;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    btnFresh: TToolButton;
    ToolButton2: TToolButton;
    btnNew: TToolButton;
    btnEdit: TToolButton;
    btnDelete: TToolButton;
    ToolButton6: TToolButton;
    btnExit: TToolButton;
    ToolButton3: TToolButton;
    Panel1: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton7: TToolButton;
    DBGridEh1: TDBGridEh;
    dtpDateEnd: TdxDateEdit;
    Label2: TLabel;
    dtpDateStart: TdxDateEdit;
    Label3: TLabel;
    DataSource1: TDataSource;
    ADOQuery1: TADOQuery;
    StatusBar1: TStatusBar;
    qurfree: TADOQuery;
    qurfree2: TADOQuery;
    procedure btnNewClick(Sender: TObject);
    procedure btnEditClick(Sender: TObject);
    procedure btnExitClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure btnFreshClick(Sender: TObject);
    procedure btnDeleteClick(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure ToolButton7Click(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure Check(BillNo:String);
    procedure UnCheck(BillNo:String);
  end;

var
  FrmImSTExp: TFrmImSTExp;

implementation

uses database, ImST, ExSTExp, MyMath;

{$R *.dfm}

procedure TFrmImSTExp.btnNewClick(Sender: TObject);
begin
  if assigned(FrmImST)=false then
    FrmImST:=TFrmImST.Create(self);
  FrmImST.FormStyle:=fsMDIChild;
  FrmImST.Show;
  FrmImST.IniImST;
  FrmImST.BringToFront;
end;

procedure TFrmImSTExp.btnEditClick(Sender: TObject);
begin
  if  adoquery1.fieldbyname('入库单号').IsNull then begin
    Infook('没有可用数据!');
    exit;
  end;

  if assigned(FrmImST)=false then
    FrmImST:=TFrmImST.Create(self);
  FrmImST.FormStyle:=fsMDIChild;
  FrmImST.Show;
  FrmImST.EditImST(adoquery1.fieldbyname('入库单号').AsString);
  FrmImST.BringToFront;
end;

procedure TFrmImSTExp.btnExitClick(Sender: TObject);
begin
  Close;
end;

procedure TFrmImSTExp.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FrmImSTExp:=NIl;
  Action:=cafree;
end;

procedure TFrmImSTExp.FormShow(Sender: TObject);
begin
  if dtpDateStart.Date=-700000 then
    dtpDateStart.Date := date-100;
  if dtpDateEnd.Date=-700000 then
    dtpDateEnd.Date := date;

  FrmImSTExp.Height:=544;
  FrmImSTExp.Width:=751;

  FrmImSTExp.Top:=0;
  FrmImSTExp.Left:=0;

  btnFreshClick(Sender);
end;

procedure TFrmImSTExp.btnFreshClick(Sender: TObject);
begin
  edit1.Clear;
  OpenSQL(FrmImSTExp,adoquery1,'select * from 物品入库主表  '
  +' where  制单日期>=#'+dtpDateStart.Text+'# and 制单日期<=#'+dtpDateEnd.Text+'# ');
end;

procedure TFrmImSTExp.btnDeleteClick(Sender: TObject);
begin
  if  (adoquery1.fieldbyname('入库单号').IsNull) or (adoquery1.IsEmpty) then begin
    Infook('没有可用数据!');
    exit;
  end;
  if QueryDlg('确定删除单据<'+adoquery1.FieldByName('入库单号').AsString+'>?')=false then exit;

  Datamod.ExecSQL('delete from 物品入库主表 where 入库单号='''+adoquery1.FieldByName('入库单号').AsString+''' ');
  Datamod.ExecSQL('delete from 物品入库明细表 where 入库单号='''+adoquery1.FieldByName('入库单号').AsString+''' ');
  btnFreshClick(Sender);
  Infook('删除成功!');

end;

procedure TFrmImSTExp.Edit1Change(Sender: TObject);
begin
  OpenSQL(FrmImSTExp,adoquery1,'select * from 物品入库主表 where 单据状态 like ''%'+Edit1.text+'%'' '
  +' or 制单人 like ''%'+Edit1.text+'%'' or 制单日期 like ''%'+Edit1.text+'%'' '
  +' or 审核人 like ''%'+Edit1.text+'%'' or 审核日期 like ''%'+Edit1.text+'%'' '
  +' or 备注 like ''%'+Edit1.text+'%''   or 入库单号 like ''%'+Edit1.text+'%'' ');
end;

procedure TFrmImSTExp.ToolButton7Click(Sender: TObject);
begin
  if adoquery1.FieldByName('单据状态').AsString='审核' then begin
    Infook('该单据已审核!');
    exit;
  end;
  if QueryDlg('确定审核单据<'+adoquery1.FieldByName('入库单号').AsString+'>?')=false then exit;
  Check (adoquery1.FieldByName('入库单号').AsString);
  btnFreshClick(Sender);
end;


procedure TFrmImSTExp.ToolButton5Click(Sender: TObject);
begin
  if adoquery1.FieldByName('单据状态').AsString='制单' then begin
    Infook('该单据未审核!');
    exit;
  end;
  if QueryDlg('确定反审核单据<'+adoquery1.FieldByName('入库单号').AsString+'>?')=false then exit;
  UnCheck (adoquery1.FieldByName('入库单号').AsString);
  btnFreshClick(Sender);
end;

procedure TFrmImSTExp.Check(BillNo: String);
begin
  OpenSQL(FrmImSTExp,qurfree,'select * from 物品入库明细表 where 入库单号='''+BillNo+''' ');
  qurfree.First;
  while Not qurfree.Eof do begin
    OpenSQL(FrmImSTExp,qurfree2,'select 数据编码 from 仓库信息 where 物品名称= '''+qurfree.FieldByName('物品名称').AsString+''' ');
    if qurfree2.RecordCount<1 then
      Datamod.ExecSQL('insert into 仓库信息(物品名称,物品编码,物品单价,物品数量) values '
      +'('''+qurfree.FieldByName('物品名称').AsString+''' , '
      +' '''+qurfree.FieldByName('物品名称').AsString+''' , '
      +'   '+FloattoStr(qurfree.FieldByName('物品单价').AsFloat)+' , '
      +'   '+InttoStr(qurfree.FieldByName('物品数量').AsInteger)+') ')
    else
      Datamod.ExecSQL('update 仓库信息 set 物品数量 = 物品数量 + '+InttoStr(qurfree.FieldByName('物品数量').AsInteger)+' '
      +' where 物品名称= '''+qurfree.FieldByName('物品名称').AsString+''' ');
    qurfree.Next;
  end;
  Datamod.ExecSQL('update 物品入库主表 set 单据状态=''审核'',审核人='''+gLoginName+''',审核日期='''+datetostr(date)+''' where 入库单号='''+BillNo+''' ');
  Infook('审核成功');
end;

procedure TFrmImSTExp.UnCheck(BillNo: String);
begin
  OpenSQL(FrmImSTExp,qurfree,'select * from 物品入库明细表 where 入库单号='''+BillNo+''' ');
  qurfree.First;
  while Not qurfree.Eof do begin
    OpenSQL(FrmImSTExp,qurfree2,'select 数据编码 from 仓库信息 where 物品名称= '''+qurfree.FieldByName('物品名称').AsString+''' ');
    if qurfree2.RecordCount<1 then begin
      Datamod.ExecSQL('insert into 仓库信息(物品名称,物品编码,物品单价,物品数量) values '
      +'('''+qurfree.FieldByName('物品名称').AsString+''' , '
      +' '''+qurfree.FieldByName('物品编码').AsString+''' , 0, '
      +' 0 - '+inttostr(qurfree.FieldByName('物品数量').AsInteger)+') ');

    end
    else
      Datamod.ExecSQL('update 仓库信息 set 物品数量 = 物品数量 - '+InttoStr(qurfree.FieldByName('物品数量').AsInteger)+' '
      +' where 物品名称= '''+qurfree.FieldByName('物品名称').AsString+''' ');
    qurfree.Next;
  end;
  Datamod.ExecSQL('update 物品入库主表 set 单据状态=''制单'',审核人=NULL ,审核日期=NULL  where 入库单号='''+BillNo+''' ');
  Infook('反审核成功');
end;

end.

⌨️ 快捷键说明

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