📄 ufpublish_chmnt.pas
字号:
{**********************************************
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 + -