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

📄 u_goodsinstock.pas

📁 河南师范大学餐饮进销存软件,只要控制库存的数据。
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit u_GoodsInStock;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls, DB, ADODB, Menus;

type
  TfrmGoodsInStock = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    edtDate: TLabeledEdit;
    EdtGoodsInBH: TLabeledEdit;
    lvMain: TListView;
    Panel2: TPanel;
    edtGoodsBH: TLabeledEdit;
    edtGoodsName: TLabeledEdit;
    edtGoodsSpec: TLabeledEdit;
    edtGoodsModel: TLabeledEdit;
    edtGoodsPrice: TLabeledEdit;
    edtGoodsAmount: TLabeledEdit;
    btnAdd: TBitBtn;
    btnDelete: TBitBtn;
    Panel3: TPanel;
    Label2: TLabel;
    edtTotal: TEdit;
    Label3: TLabel;
    edtPayMent: TEdit;
    btnOK: TBitBtn;
    btnClose: TBitBtn;
    btnEdit: TBitBtn;
    btnCancel: TBitBtn;
    btnSave: TBitBtn;
    popGetSysTime: TADOStoredProc;
    popGetGoodsInBH: TADOStoredProc;
    pipGoodsInMaster: TADOStoredProc;
    pipSupAccount: TADOStoredProc;
    pipGoodsInDetail: TADOStoredProc;
    btnAbandon: TBitBtn;
    PopupMenu1: TPopupMenu;
    PmDel: TMenuItem;
    chkCheck: TCheckBox;
    cmbSupply: TEdit;
    sp_GetSupNo: TADOStoredProc;
    chkPrint: TCheckBox;
    InRepQry: TADOQuery;
    procedure InitEdt();
    procedure InitShowADD();
    procedure InitShowSave();
    function  CheckEdt() :Boolean;
    procedure btnCloseClick(Sender: TObject);
    procedure edtGoodsBHDblClick(Sender: TObject);
    procedure btnAddClick(Sender: TObject);
    procedure edtGoodsBHKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure lvMainDblClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
    procedure btnEditClick(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
    procedure btnDeleteClick(Sender: TObject);
    procedure lvMainSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure edtGoodsAmountKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure cmbSupplyKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure btnOKClick(Sender: TObject);
    procedure edtPayMentKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edtGoodsPriceKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure btnAbandonClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure PmDelClick(Sender: TObject);
    procedure edtGoodsBHExit(Sender: TObject);
    procedure cmbSupplyExit(Sender: TObject);
    procedure AddSup();
    procedure cmbSupplyDblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Flag   : Integer;
    Total  : Real;
    itemid : Integer;
  end;

var
  frmGoodsInStock: TfrmGoodsInStock;
  function CheckInt(Data : String) : Boolean;

implementation

uses u_DataCtrl, u_ChooseGoodsInfo, Math, u_ShareFun, u_GoodsOutStock,
  u_SupSearch, u_GoodsOutRep, u_GoodsInRep;

{$R *.dfm}

function  CheckInt(Data : String) : Boolean;
var
  code : Integer;
  r    :Integer;
begin
  Val(Data,r,code);
  if code = 0 then
    Result := True
  else
    Result := False;
end;


procedure TfrmGoodsInStock.btnCloseClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmGoodsInStock.edtGoodsBHDblClick(Sender: TObject);
begin
  frmChooseGoodsInfo.ShowModal;
end;

procedure TfrmGoodsInStock.InitEdt;
begin
  edtGoodsBH.Clear;
  edtGoodsName.Clear;
  edtGoodsSpec.Clear;
  edtGoodsModel.Clear;
  edtGoodsPrice.Clear;
  edtGoodsAmount.Clear;
end;


procedure TfrmGoodsInStock.InitShowADD();
begin
  BtnAdd.Show;
  BtnEdit.Show;
  BtnSave.Hide;
  BtnCancel.Hide;
  edtGoodsBh.SetFocus;
end;

procedure TfrmGoodsInStock.InitShowSave();
begin
  BtnAdd.Hide;
  BtnEdit.Hide;
  BtnSave.Show;
  BtnCancel.Show;
  edtGoodsBh.SetFocus;
end;

function TfrmGoodsInStock.CheckEdt: Boolean;
begin
  if trim(edtGoodsBH.Text) = '' then
  begin
    Application.MessageBox('请输入商品编码','警告',MB_OK);
    edtGoodsBH.SetFocus;
    Result := False;
    Exit;
  end;
  if trim(edtGoodsName.Text) = '' then
  begin
    Application.MessageBox('名称不能为空,请重新输入!','警告',MB_OK);
    Result := False;
    Exit;
  end ;
  if Not IsNumeric(edtGoodsPrice.Text) then
  begin
     Application.MessageBox('单价输入有误,请重新输入!','警告',MB_OK);
     edtGoodsPrice.SetFocus;
     Result :=False;
     Exit;
  end;
  if Not CheckInt(edtGoodsAmount.Text) then
  begin
    Application.MessageBox('数量输入有误,请重新输入','警告',MB_OK);
    edtGoodsAmount.SetFocus;
    Result :=False;
    Exit;
  end
  else
    Result := True;
end;

procedure TfrmGoodsInStock.btnAddClick(Sender: TObject);
begin
  Flag := 1;
  InitEdt;
  InitShowSave;
end;

procedure TfrmGoodsInStock.edtGoodsBHKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
var
  TempSql : String;
  TempQuery   : TADOQuery;
begin
  if (key = VK_RETURN) and (trim(edtGoodsBH.Text)='') then
    begin
      Application.MessageBox('请输入编码','警告',MB_OK);
      Exit;
    end ;
  if (key = VK_RETURN) and (trim(edtGoodsBH.Text)<>'') then
    begin
      TempSql := 'select * from vw_GoodsInfo where GoodsBH='+QuotedStr(edtGoodsBH.Text);
      TempQuery := frmDataCtrl.ReturnQuery(TempSql);
      if TempQuery.RecordCount > 0 then
      begin
        edtGoodsName.Text   := TempQuery.FieldValues['GoodsName'];
        edtGoodsSpec.Text   := TempQuery.FieldValues['GoodsSpec'];
        edtGoodsModel.Text  := TempQuery.FieldValues['GoodsModel'];
        edtGoodsPrice.Text  := TempQuery.fieldbyname('GoodsInPrice').AsString ;
        TempQuery.Free;
        edtGoodsPrice.SetFocus;
      end
      else
        begin
          showmessage('没有此商品,请重新输入!');
          edtGoodsBH.SetFocus;
          exit;
        end;
    end;
end;

procedure TfrmGoodsInStock.lvMainDblClick(Sender: TObject);
var
  i : Integer;
begin
  if lvMain.SelCount<1 then
  begin
    Application.MessageBox('请选择记录','警告',MB_OK);
    InitEdt;
    Exit;
  end;
  with LvMain.Items do
  begin
    Flag := 2;
    i := LvMain.Selected.Index;
    itemid := i;
    edtGoodsBH.Text:=item[i].Caption;
    edtGoodsName.Text:=item[i].SubItems.Strings[0];
    edtGoodsSpec.Text:=Item[i].SubItems.Strings[1];
    edtGoodsModel.Text:=Item[i].SubItems.Strings[2];
    edtGoodsPrice.Text:=Item[i].SubItems.Strings[3];
    edtGoodsAmount.Text:=Item[i].SubItems.Strings[4];
    InitShowSave;
  end;
end;

procedure TfrmGoodsInStock.btnSaveClick(Sender: TObject);
var
  i : Integer;
begin
  if CheckEdt() = False then
    Exit;
  if Flag = 1 then
  begin
    with lvMain.Items.Insert(0) do
    begin
      caption := edtGoodsBH.Text;
      SubItems.Add(edtGoodsName.Text);
      SubItems.Add(edtGoodsSpec.Text);
      SubItems.Add(edtGoodsModel.Text);
      SubItems.Add(edtGoodsPrice.Text);
      SubItems.Add(edtGoodsAmount.Text);
      SubItems.Add(FloatToStr(StrToFloat(edtGoodsPrice.Text) * StrToInt(edtGoodsAmount.Text)));
    end;
    BtnAdd.Click;
  end;
  if Flag = 2 then
  begin
    with lvMain.Items do
    begin
      Item[itemid].Caption             := EdtGoodsBH.Text;
      Item[itemid].SubItems.Strings[0] := edtGoodsName.Text;
      Item[itemid].SubItems.Strings[1] := edtGoodsSpec.Text;
      Item[itemid].SubItems.Strings[2] := edtGoodsModel.Text;
      Item[itemid].SubItems.Strings[3] := edtGoodsPrice.Text;
      Item[itemid].SubItems.Strings[4] := edtGoodsAmount.Text;
      Item[itemid].SubItems.Strings[5] := FloatToStr(StrToFloat(edtGoodsPrice.Text)*StrToInt(edtGoodsAmount.Text));
    end;
    BtnAdd.Click;
  end;
  Total:=0;
  with lvMain.Items  do
    begin
    if count>0 then
    begin
      for i:=0 to count-1 do
        Total:=Total+strtofloat(Item[i].SubItems.Strings[5]);
      edtTotal.Text := FloatToStr(Total);
    end;
  end;
end;
procedure TfrmGoodsInStock.btnEditClick(Sender: TObject);
begin
  if lvMain.SelCount < 1 then
  begin
    Application.MessageBox('请选择记录','提示',MB_OK);
    Exit;
  end;
  itemid := lvMain.Selected.Index;
  lvMain.OnDblClick(self);
  Flag := 2;
end;

procedure TfrmGoodsInStock.btnCancelClick(Sender: TObject);
begin
  BtnAdd.Click;
end;

procedure TfrmGoodsInStock.btnDeleteClick(Sender: TObject);
var
  i : Integer;
begin
  if lvMain.SelCount<1 then
    begin
      Application.MessageBox('请选择记录','警告',MB_OK);
      InitEdt;
      Exit;
    end;
  itemid := lvMain.Selected.Index;
  if itemid>=0 then
    begin
      lvMain.Items.Item[itemid].Delete;
      InitEdt;
    end;
  Total:=0;
  with lvMain.Items  do
    if count>0 then
      begin
        for i:=0 to count-1 do
          Total:=Total+strtofloat(Item[i].SubItems.Strings[5]);
        edtTotal.Text := FloatToStr(Total);

⌨️ 快捷键说明

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