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

📄 imst.pas

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

interface

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

type
  TFrmImST = class(TForm)
    cntTitleBar: TControlBar;
    ToolBar2: TToolBar;
    ToolButton2: TToolButton;
    btnSave: TToolButton;
    btnNew: TToolButton;
    btnDelete: TToolButton;
    ToolButton7: TToolButton;
    btnCheck: TToolButton;
    btnUnCheck: TToolButton;
    ToolButton9: TToolButton;
    btnQuit: TToolButton;
    ToolButton10: TToolButton;
    Panel1: TPanel;
    dtpBillDate: TdxDateEdit;
    Label5: TLabel;
    edtBillNo: TdxEdit;
    Label6: TLabel;
    Panel2: TPanel;
    StatusBar1: TStatusBar;
    DBGridEh1: TDBGridEh;
    Label2: TLabel;
    edtcontext: TdxMemo;
    qurfree: TADOQuery;
    DataSource1: TDataSource;
    qurDetail: TADOQuery;
    Label1: TLabel;
    procedure DBGridEh1Columns0EditButtonClick(Sender: TObject;
      var Handled: Boolean);
    procedure btnDeleteClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
    procedure btnQuitClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnNewClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure DBGridEh1KeyPress(Sender: TObject; var Key: Char);
    procedure DBGridEh1Columns3UpdateData(Sender: TObject;
      var Text: String; var Value: Variant; var UseText, Handled: Boolean);
    procedure btnCheckClick(Sender: TObject);
    procedure btnUnCheckClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    gEdit:Boolean;
    gBillNo:String;
    Procedure IniImST;
    procedure EditImST(BillNo:String);
  end;

var
  FrmImST: TFrmImST;

implementation

uses database, BomExp, Select, MyMath, ExST, ImSTExp;

{$R *.dfm}

{ TFrmImST }

procedure TFrmImST.IniImST;
var s:string;
begin
  edtBillNo.Clear;
  Label1.Visible:=false;
  dtpBillDate.Enabled:=true;
  dtpBillDate.Date:=date;
  btnCheck.Enabled:=false;
  btnUnCheck.Enabled:=false;
  btnDelete.Enabled:=true;
  edtcontext.Enabled:=true;
  DBGridEh1.ReadOnly:=false;
  DBGridEh1.Columns[0].ButtonStyle:=cbsDropDown;
  DBGridEh1.Columns[1].ButtonStyle:=cbsDropDown;

  s:='WPLK'+FormatDateTime('yymmdd',date);

  qurfree.Close;
  qurfree.SQL.Clear;
  qurfree.sql.Add('select max(入库单号) as a from 物品入库主表 where 入库单号 like '''+s+'%'' ');
  qurfree.Open;

  if  qurfree.fieldbyname('a').IsNull then
    edtBillNo.Text:=S+'0001'
  else
    edtBillNo.Text:=s+FormatFloat('0000',strtoint(rightstr(qurfree.fieldbyname('a').AsString,4))+1);
  qurDetail.Close;
  qurDetail.SQL.Clear;
  qurDetail.SQL.Add('select 入库单号,物品编码,物品名称,物品单价,物品数量,金额 from 物品入库明细表 where 入库单号=''aaaa''');
  qurDetail.Open;
  gBillNo:=edtBillNo.Text;
  gEdit:=False;
end;

procedure TFrmImST.DBGridEh1Columns0EditButtonClick(Sender: TObject;
  var Handled: Boolean);
var
  s: string;
begin

  s :=' select 物品编码,物品名称,物品单价 from 仓库信息 ';
  try
    frmselect:=Tfrmselect.create(self);
    frmselect.ClickCreate(s, DBGridEh1.InplaceEditor);
    with frmselect do
    begin
      frmselect.Width := 240;
      selectgrid.Columns[0].MaxWidth := 120;
      selectgrid.Columns[1].MaxWidth := 120;
      selectgrid.Columns[2].Visible:=False;
      selectgrid.Columns[3].Visible:=False;
    end;
    if frmselect.ShowModal=mrok then
    begin
      qurDetail.Edit;
      qurDetail.FieldByName('物品编码').AsString := frmselect.qurselect.fieldbyname('物品编码').AsString;
      qurDetail.FieldByName('物品名称').AsString := frmselect.qurselect.fieldbyname('物品名称').AsString;
      qurDetail.FieldByName('物品单价').AsString := frmselect.qurselect.fieldbyname('物品单价').AsString;
      qurDetail.Post;
      DBGridEh1.SelectedIndex:=3;
    end;
  finally
    frmselect.Free;
  end;
end;

procedure TFrmImST.EditImST(BillNo:String);
begin
  QurFree.Close;
  QurFree.SQL.Clear;
  QurFree.SQL.Add('SELECT * FROM 物品入库主表 where 入库单号='''+BillNo+'''');
  QurFree.Open;

  Label1.Visible:=false;
  if qurfree.FieldByName('单据状态').AsString='审核' then begin
    dtpBillDate.Enabled:=false;
    btnDelete.Enabled:=false;
    edtcontext.Enabled:=false;
    DBGridEh1.ReadOnly:=true;
    DBGridEh1.Columns[0].ButtonStyle:=cbsNone;
    DBGridEh1.Columns[1].ButtonStyle:=cbsNone;
    btnCheck.Enabled:=false;
    btnunCheck.Enabled:=true;
    Label1.Visible:=true;
  end;
  if qurfree.FieldByName('单据状态').AsString='制单' then begin
    dtpBillDate.Enabled:=true;
    btnDelete.Enabled:=true;
    edtcontext.Enabled:=true;
    DBGridEh1.ReadOnly:=false;
    DBGridEh1.Columns[0].ButtonStyle:=cbsDropDown;
    DBGridEh1.Columns[1].ButtonStyle:=cbsDropDown;
    btnCheck.Enabled:=true;
    btnunCheck.Enabled:=false;
  end;

  edtBillNo.Text:= qurfree.fieldbyname('入库单号').asstring;
  dtpBillDate.Date:=qurfree.fieldbyname('制单日期').AsDateTime;
  edtcontext.Text:=qurfree.fieldbyname('备注').asstring;

  qurDetail.Close;
  qurDetail.SQL.Clear;
  qurDetail.SQL.Add('select * from 物品入库明细表 where 入库单号='''+BillNo+'''');
  qurDetail.Open;

  gBillNo:=BillNo;
  gEdit:=True;
end;

procedure TFrmImST.btnDeleteClick(Sender: TObject);
begin
  if not qurDetail.IsEmpty then  qurDetail.Delete;
end;

procedure TFrmImST.btnSaveClick(Sender: TObject);
begin
  if  QueryDlg('是否保存!')=false then exit;
  if  qurDetail.IsEmpty then begin
    infook('数据不能为空');
    exit;
  end;
  if gEdit=false then
  begin
    Datamod.ExecSQL('insert into 物品入库主表(入库单号,制单人,制单日期,备注,单据状态) '
                  +' values('''+edtBillNo.text+''','''+gLoginName+''','''+dtpBillDate.text+''','''+edtcontext.text+''',''制单'') ');
  end
  else
  begin
    Datamod.ExecSQL('update 物品入库主表 set 备注='''+edtcontext.text+''' where 入库单号='''+gBillNo+''' ');
  end;

  qurDetail.DisableControls;
  qurDetail.First;
  while not qurDetail.Eof do
  begin
    qurDetail.Edit;
    qurDetail.FieldByName('入库单号').AsString :=edtBillNo.text;
    qurDetail.Post;
    if (qurDetail.FieldByName('物品编码').isNull=True ) and
       (qurDetail.FieldByName('物品名称').isNull=True ) then  qurDetail.Delete;
    qurDetail.Next;
  end;
  qurDetail.EnableControls;

  with Datamod do
  begin
    try
      dbmain.BeginTrans;
      qurDetail.UpdateBatch();
      dbmain.CommitTrans;
      InfoOk('保存成功');
    except
      dbmain.RollbackTrans;
      InfoOk('保存失败');
      exit;
    end;
  end;
  EditImST(gBillNo);
  FrmImSTExp.btnFreshClick(Sender);
end;

procedure TFrmImST.btnQuitClick(Sender: TObject);
begin

  close;
end;

procedure TFrmImST.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FrmImST:=Nil;
  Action:=Cafree;
end;

procedure TFrmImST.btnNewClick(Sender: TObject);
begin
 if  QueryDlg('确定新增入库单!')=True then iniImST;
end;

procedure TFrmImST.FormShow(Sender: TObject);
begin
  FrmImST.Top:=0;
  FrmImST.Left:=0;
  FrmImST.Width:=630;
  FrmImST.Height:=455;
end;

procedure TFrmImST.DBGridEh1KeyPress(Sender: TObject; var Key: Char);
begin
  if key =#13 then begin
    if dbgrideh1.SelectedIndex =0 then
      begin
        dbgrideh1.SelectedIndex :=1;
        exit ;
      end;
    if dbgrideh1.SelectedIndex=1 then
      begin
        dbgrideh1.SelectedIndex:=3;
        exit;
      end;
    if  dbgrideh1.SelectedIndex=3 then
    begin
      qurdetail.Append;
      dbgrideh1.SelectedIndex :=0 ;
      exit;
    end;
  end;
end;

procedure TFrmImST.DBGridEh1Columns3UpdateData(Sender: TObject;
  var Text: String; var Value: Variant; var UseText, Handled: Boolean);
begin
  qurDetail.FieldByName('金额').AsFloat:=
  qurDetail.FieldByName('物品单价').AsFloat*strtoint(text)
end;

procedure TFrmImST.btnCheckClick(Sender: TObject);
begin
  if QueryDlg('确定审核单据<'+gBillNo+'>?')=false then exit;
  FrmImSTExp.Check (gBillNo);
  EditImST(gBillNo);
  FrmImSTExp.btnFreshClick(Sender);
end;

procedure TFrmImST.btnUnCheckClick(Sender: TObject);
begin
  if QueryDlg('确定反审核单据<'+gBillNo+'>?')=false then exit;
  FrmImSTExp.UnCheck (gBillNo);
  EditImST(gBillNo);
  FrmImSTExp.btnFreshClick(Sender);
end;

end.

⌨️ 快捷键说明

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