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

📄 unitstockin.~pas

📁 仓储系统
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
unit UnitStockIn;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, _GClass, AbCBitBt, RXCtrls, Grids, DBGrids, CurrEdit, Mask,
  ToolEdit, StdCtrls, Buttons, DBCtrls, ExtCtrls, ComCtrls, DB, ADODB;

type
  TfrmStockIn = class(TForm)
    Panel2: TPanel;
    Panel3: TPanel;
    DBNavigator1: TDBNavigator;
    btnadd: TBitBtn;
    btnErase: TBitBtn;
    btnMod: TBitBtn;
    btnSave: TBitBtn;
    btncancel: TBitBtn;
    btnclose: TBitBtn;
    Panel1: TPanel;
    DBGrid1: TDBGrid;
    RxLabel1: TRxLabel;
    RxLabel2: TRxLabel;
    btnMx: TAbColBitBtn;
    btnGz: TAbColBitBtn;
    edtStockNum: TRxCalcEdit;
    edtStockZJ: TCurrencyEdit;
    dsCgRk: TDataSource;
    lblRkdh: TLabel;
    lblHtdh: TLabel;
    lblJhbh: TLabel;
    lblGys: TLabel;
    lblDept: TLabel;
    lblBz: TLabel;
    lblLb: TLabel;
    lblLbName: TLabel;
    lblJsr: TLabel;
    lblJyr: TLabel;
    lblZdr: TLabel;
    lblIn_date: TLabel;
    lblWlmc: TLabel;
    lblType: TLabel;
    lblBm: TLabel;
    sbtncode: TSpeedButton;
    lblNum: TLabel;
    lblDj: TLabel;
    Label3: TLabel;
    edtRkdh: TEdit;
    edtHtbh: TEdit;
    edtJhbh: TEdit;
    cbbGys: TComboBox;
    cbbDept: TComboBox;
    edtJsr: TEdit;
    edtJyr: TEdit;
    edtzdr: TEdit;
    edtBz: TEdit;
    edtWlmc: TEdit;
    edtType: TEdit;
    edtWlbm: TEdit;
    edtNum: TRxCalcEdit;
    edtPrice: TCurrencyEdit;
    edtTotalPrice: TCurrencyEdit;
    cbbKf: TComboBox;
    Label9: TLabel;
    cbbKw: TComboBox;
    Label12: TLabel;
    dtpRk: TDateTimePicker;
    ADOQuery_sql: TADOQuery;
    qry_Jhbh: TADOQuery;
    lblJhNum: TLabel;
    edtJhNum: TRxCalcEdit;
    procedure Clear(form:TForm);
    procedure btnMxClick(Sender: TObject);
    procedure btncloseClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnaddClick(Sender: TObject);
    procedure btnEraseClick(Sender: TObject);
    procedure btnModClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
    procedure btncancelClick(Sender: TObject);
    procedure edtRkdhKeyPress(Sender: TObject; var Key: Char);
    procedure edtBzKeyPress(Sender: TObject; var Key: Char);
    procedure sbtncodeClick(Sender: TObject);
    procedure edtWlbmExit(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure dsCgRkDataChange(Sender: TObject; Field: TField);
    procedure cbbKwEnter(Sender: TObject);
    procedure cbbKfExit(Sender: TObject);
    procedure edtRkdhExit(Sender: TObject);
    procedure btnGzClick(Sender: TObject);
    procedure edtPriceExit(Sender: TObject);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure FormShow(Sender: TObject);
    procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    procedure edtNumExit(Sender: TObject);
  private
    { Private declarations }
    listDept,listDeptName:array of string;
    listGys,listGysName:array of string;
    listKf,listKfmc:array of string;                  //库房代码、库房名称
    listKw,listKwmc:array of string;                  //库位代码、库位名称
  public
    { Public declarations }
  end;

var
  frmStockIn: TfrmStockIn;
  isAdd,isMod:boolean;
  RecNo:TBookMark;
implementation

uses UnitMain, UnitInStockList, UnitDm, UnitSelectCodeNameType,
  UnitMateBasic, UnitProcess;

{$R *.dfm}

procedure TfrmStockIn.btnMxClick(Sender: TObject);
begin
//
end;

procedure TfrmStockIn.btncloseClick(Sender: TObject);
begin
  close;
end;

procedure TfrmStockIn.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  frmStockIn:=nil;
  action:=cafree;
end;

procedure TfrmStockIn.Clear(form:TForm);
var
  i:integer;
begin
  for i:=0 to TForm(form).ComponentCount-1 do
  begin
    if form.Components[i] is TEdit then
      TEdit(form.Components[i]).Text:=''
    else if form.Components[i] is TComboBox then
    begin
      TComboBox(form.Components[i]).ItemIndex:=-1;
      TComboBox(form.Components[i]).text:='';
    end
    else if form.Components[i] is TMemo then
      TMemo(form.Components[i]).Lines.Text:='';
  end;
end;


procedure TfrmStockIn.btnaddClick(Sender: TObject);
begin
  isAdd:=true;
  isMod:=false;
  if btnAdd.caption='增加(&A)' then
  begin
    btnAdd.enabled:=false;
    btnErase.enabled:=false;
    btnMod.enabled:=false;
    btnSave.enabled:=true;
    btnCancel.enabled:=true;
    panel2.enabled:=true;
    Clear(frmStockIn);
    dtpRk.date:=now;

    edtNum.text:='';
    edtzdr.text:=frmMain.StrOperat;
    edtWlmc.Enabled:=false;
    edtType.Enabled:=false;
    
    edtzdr.enabled:=false;
    edtRkdh.setfocus;
  end;
end;

procedure TfrmStockIn.btnEraseClick(Sender: TObject);
var
   seltotal:integer;
begin
  if dm.qry_CgRk.RecordCount=0 then exit;

  seltotal:=DBGrid1.SelectedRows.Count;

  with ADOQuery_sql do
  begin
    close;
    sql.clear;
    sql.add('select * from Mate_CgRk where (Mate_Code='''+edtWlbm.text+''') and (In_Post=''Y'') ');
    open;
  end;
  if ADOQuery_sql.RecordCount>0 then
  begin
    application.MessageBox('该单据已经过帐,不能被删除!','提示',mb_ok+mb_iconwarning);
    exit;
    btnErase.setfocus;
  end;

  if application.MessageBox('确信删除当前记录?','警告',mb_okcancel+mb_iconwarning)=IDOK then
  begin
    //这里删除基础物料存储过程          MateBasic_Erase
    with dm.sp_CgRk do
    begin
      ProcedureName:='CgRk_Erase;1';
      Parameters.Refresh;
      Parameters.ParamByName('@rkdh').value:=edtRkdh.text;
      ExecProc;
    end;
    dm.qry_CgRk.Close;
    dm.qry_CgRk.Open;
  end;
end;

procedure TfrmStockIn.btnModClick(Sender: TObject);
var
  str:string;
begin
  if dm.qry_CgRk.RecordCount=0 then exit;
  dm.qry_CgRk.DisableControls;
  DBGrid1.Options:=DBGrid1.Options - [dgmultiselect];
  //获得当前的记录位置
  Recno:=dm.qry_CgRk.GetBookmark;
  //关闭与表的联系-------------
  isMod:=true;
  isAdd:=false;

  if isMod then
  begin
    with dm.qry_CgRkGz do
    begin
      close;
      sql.Clear;
      sql.Add('select * from mate_CgRk where (in_bill='''+trim(edtRkdh.text)+''')  and (in_post=''Y'') ');
      open;
    end;
    if dm.qry_CgRkGz.recordcount>0 then
    begin
      application.MessageBox('过帐后的单据,不能再修改!','警告',mb_ok+mb_iconwarning);
      exit;
    end;
    dm.qry_CgRk.EnableControls;
  end;

  btnAdd.Enabled:=false;
  btnErase.Enabled:=false;
  btnMod.Enabled:=false;
  btnSave.Enabled:=true;
  btnCancel.Enabled:=true;

  panel2.enabled:=true;
  edtZdr.Enabled:=false;
  edtWlmc.Enabled:=false;
  edtType.Enabled:=false;
  edtHtbh.setfocus;
end;

procedure TfrmStockIn.btnSaveClick(Sender: TObject);
var
  position:integer;
begin
  if edtRkdh.text='' then
  begin
    application.MessageBox('注意:'+#13+'  入库单号不能为空!','警告',mb_ok+mb_iconwarning);
    edtRkdh.setfocus;
    exit;
  end;

  if isAdd then
  begin
    dm.sp_CgRk.ProcedureName:='CgRk_Add;1';
    //dm.qry_CgRk.enableControls;
  end;
  if isMod then
  begin
    dm.sp_CgRk.ProcedureName:='CgRk_Mod;1';
    //dm.qry_CgRk.enableControls;
  end;
  with dm.sp_CgRk do
  begin
    Parameters.Refresh;
    Parameters.ParamByName('@rkdh').value:=trim(edtRkdh.Text);
    Parameters.ParamByName('@ht').value:=trim(edtHtbh.text);
    Parameters.ParamByName('@jhbh').value:=trim(edtJhbh.text);

    Parameters.ParamByName('@wlbm').value:=trim(edtWlbm.Text);

    Parameters.ParamByName('@rq').value:=formatdatetime('yyyy-mm-dd',dtpRk.Date);

    Parameters.Parambyname('@Lb').value:='CGR';//出入库类别---->采购入库

    Parameters.ParamByName('@Num').value:=trim(edtNum.text);
    Parameters.ParamByName('@dj').value:=trim(edtPrice.Text);
    Parameters.ParamByName('@zj').value:=trim(edtTotalPrice.text);  //这里可直接存储数据,在过帐中也可更新入库总价,没影响
    Parameters.ParamByName('@PostMark').value:='N';

    Parameters.ParamByName('@jsr').value:=trim(edtJsr.text);
    Parameters.ParamByName('@jyr').value:=trim(edtJyr.text);
    Parameters.ParamByName('@zdr').value:=trim(edtZdr.text);
    Parameters.ParamByName('@zy').value:=trim(edtBz.text);

    //---防止部门代码为空-----------------------
    if cbbDept.text='' then
    begin
      application.MessageBox('注意:'+#13#10+'  请输入入库部门!','警告',mb_ok+mb_iconwarning);
      cbbDept.setfocus;
      exit;
    end else
    begin
      //查找中间的空格
      if pos(' ',trim(cbbDept.text))>0 then
      begin
        position:=cbbDept.items.indexof(cbbDept.text);
        if position <> -1 then
           Parameters.ParamByName('@bm').value:=listDept[position]
        else
           Parameters.ParamByName('@bm').value:=trim(cbbDept.text);
      end else
       Parameters.ParamByName('@bm').value:=trim(cbbDept.text);
    end;
    //---防止供应商代码为空-----------------------
    if cbbGys.text='' then
    begin
      application.MessageBox('注意:'+#13#10+'  请输入供应商!','警告',mb_ok+mb_iconwarning);
      cbbGys.setfocus;
      exit;
    end else
    begin
      //查找中间的空格
      if pos(' ',trim(cbbGys.text))>0 then
      begin
        position:=cbbgys.items.indexof(cbbGys.text);
        if position <> -1 then
           Parameters.ParamByName('@gys').value:=listgys[position]
        else
           Parameters.ParamByName('@gys').value:=trim(cbbGys.text);
      end else
        Parameters.ParamByName('@gys').value:=trim(cbbGys.text);
    end;
    //
    if cbbkf.text='' then
    begin
      application.MessageBox('注意:'+#13#10+'  请输入库房代码!','警告',mb_ok+mb_iconwarning);
      cbbkf.setfocus;
      exit;
    end;
    Parameters.ParamByName('@kf').value:=listkf[cbbkf.itemindex];//库房代码
    if cbbkw.text='' then
       Parameters.ParamByName('@kw').value:=''
    else
    begin
      Parameters.ParamByName('@kw').value:=listkw[cbbkw.itemindex];//库位代码
    end;

    ExecProc;
  end;
  //---------------------------------------
  if isAdd then isAdd:=false;
  if isMod then isMod:=false;

  Panel2.Enabled:=false;

  btnadd.enabled:=true;
  btnadd.SetFocus;
  btnErase.enabled:=true;
  btnMod.enabled:=true;
  btnSave.enabled:=false;
  btnCancel.enabled:=false;

  Dm.qry_CgRk.EnableControls;
  Dm.qry_CgRk.close;
  Dm.qry_CgRk.open;
end;

procedure TfrmStockIn.btncancelClick(Sender: TObject);
begin
  if isAdd then isadd:=false;
  if isMod then isMod:=false;

  dm.qry_CgRk.enableControls;

  if btnCancel.caption='取消(&C)' then
  begin
    panel2.enabled:=false;
    edtStockNum.Enabled:=false;
    edtStockZJ.Enabled:=false;
    btnMx.Enabled:=true;
    btnGz.Enabled:=true;

    btnAdd.enabled:=true;
    btnErase.enabled:=true;
    btnMod.enabled:=true;
    btnSave.enabled:=false;
    btnCancel.enabled:=false;
  end;
  DM.qry_CgRk.EnableControls;

  DM.qry_CgRk.close;
  DM.qry_CgRk.open;
end;

procedure TfrmStockIn.edtRkdhKeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
  begin
    key:=#0;
    perform(cm_dialogkey,vk_tab,0);
  end;
end;

procedure TfrmStockIn.edtBzKeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
  begin
    key:=#0;
    btnSave.setfocus;
  end;
end;

procedure TfrmStockIn.sbtncodeClick(Sender: TObject);
begin
  frmSelectCodeNameType:=TfrmSelectCodeNameType.create(self);
  frmSelectCodeNameType.show;
end;

procedure TfrmStockIn.edtWlbmExit(Sender: TObject);
begin
  if btnCancel.Focused then
  begin
    btnCancel.onclick(sender);
    exit;
  end;
  if btnClose.focused   then
  begin
     btnClose.OnClick(Sender);
     exit;
  end;

⌨️ 快捷键说明

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