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

📄 ufpublish_chmnt.pas

📁 一个功能较全的图书进销存软件,功能还算完备
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{**********************************************

Copyright (C) 2004 hill
<Written By> 刘山
<Unit>   进货单元
<What>   实现发行站出库功能
<When>   2004-01-06
**********************************************}
unit ufPublish_ChMnt;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, DBCtrls, Mask, Buttons, Grids, DBGrids, DB,ADODB;

type
  TfPublish_ChMnt = class(TForm)
    dsCK: TDataSource;
    dsshare: TDataSource;
    gbCK: TGroupBox;
    StaticText1: TStaticText;
    StaticText2: TStaticText;
    StaticText3: TStaticText;
    stat: TStaticText;
    StaticText4: TStaticText;
    StaticText5: TStaticText;
    StaticText6: TStaticText;
    StaticText9: TStaticText;
    StaticText10: TStaticText;
    StaticText11: TStaticText;
    StaticText17: TStaticText;
    StaticText7: TStaticText;
    StaticText8: TStaticText;
    StaticText12: TStaticText;
    StaticText13: TStaticText;
    StaticText14: TStaticText;
    cbxMName: TComboBox;
    cbxPinyin: TComboBox;
    dgrdBook: TDBGrid;
    StaticText15: TStaticText;
    StaticText16: TStaticText;
    StaticText18: TStaticText;
    cbxMdis: TComboBox;
    edtdis: TEdit;
    edtInp: TEdit;
    StaticText19: TStaticText;
    edtqty: TEdit;
    edtmoney: TEdit;
    dcbxMID: TComboBox;
    txtope_ID: TStaticText;
    txtDAte: TStaticText;
    txtOpe: TStaticText;
    edtBarcode: TEdit;
    edtcnname: TEdit;
    edtprice: TEdit;
    edtgetid: TEdit;
    edtope: TEdit;
    edtNote: TEdit;
    cbxtype: TComboBox;
    cbxISsale: TComboBox;
    chkstatus: TCheckBox;
    Panel2: TPanel;
    InsertBtn: TBitBtn;
    SaveBtn: TBitBtn;
    CancelBtn: TBitBtn;
    SearchBtn: TBitBtn;
    QuitBtn: TBitBtn;
    Panel1: TPanel;
    Panel3: TPanel;
    DBGrid1: TDBGrid;
    Splitter1: TSplitter;
    Splitter2: TSplitter;
    procedure QuitBtnClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure InsertBtnClick(Sender: TObject);
    procedure CancelBtnClick(Sender: TObject);
    procedure cbxMNameChange(Sender: TObject);
    procedure cbxMNameExit(Sender: TObject);
    procedure cbxPinyinChange(Sender: TObject);
    procedure cbxPinyinExit(Sender: TObject);
    procedure dgrdBookCellClick(Column: TColumn);
    procedure dedtCnnameKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure SaveBtnClick(Sender: TObject);
    procedure dedtNoteKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edtdisExit(Sender: TObject);
    procedure edtInpExit(Sender: TObject);
    procedure edtqtyExit(Sender: TObject);
    procedure edtBarcodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edtBarcodeExit(Sender: TObject);
    procedure cbxISsaleExit(Sender: TObject);
    procedure cbxtypeExit(Sender: TObject);
    procedure edtNoteKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure SearchBtnClick(Sender: TObject);
  private
    //存当前日期
    CurrenTDate:string;
    //设置控件状态
    procedure SetStatus(status:boolean);
    //设置按钮状态
    procedure SetBstatus(status:boolean);
    //处理条形码
    procedure OperateBarcode;
    //查看记录输入是否完全
    function check():Boolean;
    //查看库存数量是否不足
    function GetQty():Boolean;
    //处理折扣,售价,金额三者之间的互动关系
    procedure OperateMoney;
    //清空控件
    procedure ClearStatus;
    { Private declarations }
  public
    { Public declarations }
  end;
const
  Ope='张三';
  TypeMem='会员';
  TypeGue='普通顾客';
var
  fPublish_ChMnt: TfPublish_ChMnt;

implementation

uses udmpublish, Uglobal, ufbookinfo_qr;

{$R *.dfm}

procedure TfPublish_ChMnt.QuitBtnClick(Sender: TObject);
begin
 close;
end;

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

procedure TfPublish_ChMnt.FormCreate(Sender: TObject);
begin
  //打开表
  if c_getid2(dmpublish.adsShare,'Value','dict',' Class=''服务类型'' and Parent=''服务类型'' and Status',cbxType)
      and  c_getMid(dmpublish.adsShare,'ID','Enterprise_NAME','PInyin_NAME','Discount','MEMBER_INFO','STATUS',dcbxMID,cbxMName,cbxPinyin,cbxMdis)
  then
  begin
    with dmpublish do
    begin
      if adschtemp.Active then
        adschtemp.Active:=false;
      if adspubbook.Active then
        adspubbook.Active:=false;
      { TODO : 打开相关表 }
      if not adschtemp.Active then
      begin
        adschtemp.commandtext:='select * from publish_storage_out where STATUS=''1''';
        adschtemp.Active:=true;
      end;
      if not adspubbook.Active then
      begin
        adspubbook.commandtext:='select * from PUBLISH_BOOK where STATUS=''1''';
        adspubbook.Active:=true;
      end;
    end;
      //取数据库时间
    with dmpublish.l_store do
    begin
      procedurename:='geddate;1';
      parameters.Clear;
      parameters.CreateParameter('@out',ftDatetime,pdoutput,0,Unassigned);
      Prepared;
      execproc;
      if parameters[0].Value<>null then
      begin
        CurrentDate:=FormatDateTime('YYYYMMDD',parameters[0].Value);
      end
      else
        CurrentDate:=FormatDateTime('YYYYMMDD',Now());
    end;

  end
  else
  begin
    MSG('加入外码出错,请检查数据库!','W');
  end;

end;

procedure TfPublish_ChMnt.FormShow(Sender: TObject);
begin
  //重新查询一遍
  dmpublish.adschtemp.Requery();
  dmpublish.adsPubBook.Requery();
  //置控件状态为无效
  SetStatus(false);
  ClearStatus;

  //置按钮状态
  SetBstatus(true);
  //将选择书籍dbgrid的指向置空
    dgrdbook.DataSource:=nil;
    dgrdbook.Columns.Clear;
end;

procedure TfPublish_ChMnt.SetStatus(status: boolean);
begin
  edtbarcode.Enabled:=status;
  edtcnname.Enabled:=status;
  edtprice.Enabled:=status;
  cbxtype.Enabled:=status;
  cbxmname.Enabled:=status;
  cbxpinyin.Enabled:=status;
  edtgetid.Enabled:=status;
  edtope.Enabled:=status;
  edtnote.Enabled:=status;
  dgrdBook.Enabled:=status;
  cbxissale.Enabled:=status;

  edtdis.Enabled:=status;
  edtinp.Enabled:=status;
  edtqty.Enabled:=status;
end;

procedure TfPublish_ChMnt.SetBstatus(status: boolean);
begin
  Insertbtn.Enabled:=status;
  cancelbtn.Enabled:=not status;
  quitbtn.Enabled:=status;
  savebtn.Enabled:=not status;
end;

procedure TfPublish_ChMnt.InsertBtnClick(Sender: TObject);
begin
  //置控件状态为有效
  SetStatus(true);
  //置按钮状态
  SetBstatus(false);
  //将控件清空
  ClearStatus;
  chkStatus.Checked:=true;
  edtdis.Text:='100.0';
  edtqty.Text:='0';
  edtmoney.Text:='0';
  txtOpe.Caption:=Ope;
  edtBarcode.SetFocus;
end;

procedure TfPublish_ChMnt.CancelBtnClick(Sender: TObject);
begin
 if Msg('确定要取消操作吗?','Q')then
  begin
    dmpublish.adsChtemp.CancelUpdates;
    formshow(fPublish_chMnt);
  end;
end;

procedure TfPublish_ChMnt.cbxMNameChange(Sender: TObject);
begin
if cbxmname.ItemIndex<>-1 then
begin
  cbxpinyin.ItemIndex:=cbxmname.ItemIndex;
  dcbxmid.ItemIndex:=cbxmname.ItemIndex;
  cbxMdis.ItemIndex:=cbxmname.ItemIndex;
  OperateMoney;
end;
end;

procedure TfPublish_ChMnt.cbxMNameExit(Sender: TObject);
begin
if trim(cbxMName.Text)<>'' then
begin
  if cbxMName.Items.IndexOf(trim(cbxMName.Text))<>-1 then
  begin
    cbxpinyin.ItemIndex:=cbxmname.ItemIndex;
    dcbxmid.ItemIndex:=cbxmname.ItemIndex;
    cbxMdis.ItemIndex:=cbxmname.ItemIndex;
    OperateMoney;
  end
  else
  begin
    MSG('输入的会员名称不存在,请重新输入!','E');
    cbxMName.SetFocus;
  end;
end;
end;

procedure TfPublish_ChMnt.cbxPinyinChange(Sender: TObject);
begin
if cbxpinyin.ItemIndex<>-1 then
begin
  cbxmname.ItemIndex:=cbxpinyin.ItemIndex;
  dcbxmid.ItemIndex:=cbxpinyin.ItemIndex;
  cbxMdis.ItemIndex:=cbxPinyin.ItemIndex;
  OperateMoney;
end;
end;

procedure TfPublish_ChMnt.cbxPinyinExit(Sender: TObject);
begin
if trim(cbxPinyin.Text)<>'' then
begin
  if cbxPinyin.Items.IndexOf(trim(cbxPinyin.Text))<>-1 then
  begin
    cbxmname.ItemIndex:=cbxpinyin.ItemIndex;
    dcbxmid.ItemIndex:=cbxpinyin.ItemIndex;
    cbxMdis.ItemIndex:=cbxpinyin.ItemIndex;
    OperateMoney;
  end
  else
  begin
    MSG('输入的会员拼音字头不存在,请重新输入!','E');
    cbxPinyin.SetFocus;
  end;
end;
end;

procedure TfPublish_ChMnt.OperateBarcode;
begin
  { TODO : 
在Publish_Book表里查找是否存在
包含有该条形码的有效记录(状态为1) }
  if dmpublish.adsPubBook.Locate('book_barcode;status',varArrayOF([trim(edtbarcode.Text),'1']),[loCaseInsensitive]) then
  begin        //存在   ---1
  { TODO :
将Publish_BOOK表里包含该barcode字段
的记录提取出来,将这些记录的书名和
标价做一个列表,让用户选择 }
    with dmpublish.adsShare do
    begin
      if Active then
        Active := False;
        CommandText := 'select * from publish_book where status=''1'' and book_barcode='''+trim(edtbarcode.Text)+'''';
        Active := True;
      end;
    { TODO : 操作书籍浏览框 }
    dgrdbook.DataSource:=dsshare;   //dbgrid的指向分配
    with dgrdbook.Columns do
    begin
      clear;
      add;
      Items[0].FieldName:='cn_name';
      items[0].Title.caption:='书籍名称';
      items[0].Width:=95;
      Add;
      Items[1].FieldName:='show_price';
      items[1].Title.caption:='标价';
      items[1].Width:=60;
    end;
    if dmpublish.adsShare.RecordCount=1 then  //若只有一条记录
    begin
    { TODO : 系统自动将该记录的信息填入对话框中 }
    edtcnname.Text:=dmpublish.adsShare.Fieldbyname('cn_name').AsString;
    edtprice.Text:=dmpublish.adsShare.fieldbyname('show_price').AsString;
    edtinp.Text:=dmpublish.adsShare.fieldbyname('show_price').AsString;
    edtmoney.Text:=dmpublish.adsShare.fieldbyname('show_price').AsString;
    edtbarcode.Enabled:=false;
    edtcnname.Enabled:=false;
    edtprice.Enabled:=false;
    cbxtype.SetFocus;
    end
    else begin  //若为多条,需要用户自己选择
      dgrdbook.Enabled:=true;
      dgrdbook.SetFocus; 
    end;
  end  //---1
  else begin     //---1
    MSG('该记录不存在,请重新输入!','W');
    edtbarcode.SelectAll;
    edtbarcode.SetFocus;

⌨️ 快捷键说明

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