📄 p_ck.pas
字号:
unit p_ck;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,p_mc, DBCtrls, SUIDBCtrls, SUIEdit, Mask, Buttons, ExtCtrls,
Grids, DBGrids, StdCtrls, SUIComboBox, ComCtrls;
type
Tf_ck = class(Tf_mc)
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
DT: TDateTimePicker;
CKDH: TEdit;
Memo1: TMemo;
cb_jbr: TsuiComboBox;
cb_ck: TsuiComboBox;
GroupBox2: TGroupBox;
b_edit: TBitBtn;
b_add: TBitBtn;
b_del: TBitBtn;
DBGrid1: TDBGrid;
b_save: TBitBtn;
b_cancel: TBitBtn;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Pan: TPanel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label15: TLabel;
Label3: TLabel;
Label16: TLabel;
b_sp: TSpeedButton;
sl: TsuiDBEdit;
suiDBMemo1: TsuiDBMemo;
GroupBox3: TGroupBox;
Label11: TLabel;
Label12: TLabel;
c: TsuiDBEdit;
hcl: TsuiDBEdit;
GroupBox4: TGroupBox;
Label13: TLabel;
Label14: TLabel;
szmd: TsuiDBEdit;
sph: TsuiDBEdit;
spm: TsuiEdit;
spxh: TsuiEdit;
Label10: TLabel;
KH: TEdit;
Label17: TLabel;
Label18: TLabel;
ZJJE: TEdit;
YFJE: TEdit;
SpeedButton1: TSpeedButton;
Label19: TLabel;
suiDBEdit1: TsuiDBEdit;
suiDBEdit2: TsuiDBEdit;
JG: TsuiDBEdit;
procedure SpeedButton1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure b_spClick(Sender: TObject);
procedure b_addClick(Sender: TObject);
procedure b_delClick(Sender: TObject);
procedure b_saveClick(Sender: TObject);
procedure b_editClick(Sender: TObject);
procedure b_cancelClick(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure ckdbh;
procedure BitBtn1Click(Sender: TObject);
procedure JGKeyPress(Sender: TObject; var Key: Char);
procedure slKeyPress(Sender: TObject; var Key: Char);
procedure YFJEKeyPress(Sender: TObject; var Key: Char);
procedure YFJEExit(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
f_ck: Tf_ck;
implementation
uses p_dm,p_gl,p_gh,P_FFRY,p_xzsp;
{$R *.dfm}
procedure tf_ck.ckdbh;
var
i,j:integer;
s:string;
begin
i:=0;
DT.Date:=NOW;
with dm do
begin
query.SQL.Clear;
query.SQL.Add('select * from crkd_info where ddh like :ddh');
query.Parameters[0].Value:='ck'+formatdatetime('yyyymmdd',dt.Date)+'%';
query.Open;
if query.RecordCount=0 then //==============
begin
s:='000'+inttostr(i+1);
ckdh.Text:='ck'+formatdatetime('yyyymmdd',dt.Date)+s;
end else
begin
query.Last;
s:=copy(query['ddh'],11,4);
i:=strtoint(s);
s:=inttostr(i+1);
for j:=1 to 4-length(s) do //=============
s:='0'+s;
Ckdh.Text:='ck'+formatdatetime('yyyymmdd',dt.Date)+s;
end; //if ... end
query.Close;
end; //with .. end
end;
procedure Tf_ck.SpeedButton1Click(Sender: TObject);
begin
inherited;
application.CreateForm(tf_gh,f_gh);
sjkh:=true;
f_gh.b_exit.Caption:='选择';
f_gh.Height:=530;
f_gh.ShowModal;
sjkh:=false;
kh.Text:=pkhm;
end;
procedure Tf_ck.FormCreate(Sender: TObject);
begin
inherited;
WITH DM DO
BEGIN
f_ck.ckdbh;
zjje.Text:='0';
yfje.Text:='0';
query.SQL.Clear;
query.SQL.add('delete from tempck_info');
query.ExecSQL;
T_TEMPCK.Open;
t_ffry.Open;
t_ffry.Filtered:=false;
if t_ffry.RecordCount=0 then
begin
application.MessageBox('没有本公司人员信息,请输入!','信息',mb_ok+mb_iconinformation);
application.CreateForm(tf_ffry,f_ffry);
f_ffry.ShowModal;
end;
t_ffry.First;
while not t_ffry.Eof do
begin
cb_jbr.Items.Add(t_ffry['xm']);
t_ffry.Next;
end;
cb_jbr.ItemIndex:=0;
if t_tempCk.RecordCount=0 then exit;
dbgrid1.OnCellClick(dbgrid1.Columns.Items[dbgrid1.SelectedRows.count]);
END; //WITH .. END
end;
procedure Tf_ck.DBGrid1CellClick(Column: TColumn);
begin
inherited;
b_cancel.OnClick(self);
with dm do
begin
if t_tempCk.RecordCount=0 then exit;
query.SQL.Clear;
query.SQL.Add('select sp_info.spm,spxh_info.xhm from spxh_info,sp_info where sp_info.sph=:a and spxh_info.xhh=sp_info.xhh');
query.Parameters[0].Value:=sph.Text;
query.Open;
spm.Text:=query['spm'];
spxh.text:=query['xhm'];
end;
end;
procedure Tf_ck.b_spClick(Sender: TObject);
begin
inherited;
application.CreateForm(tf_xzsp,f_xzsp);
f_xzsp.ShowModal;
with dm do
begin
query1.SQL.Clear;
query1.SQL.Add('select * from tempck_info where rkdh=:ddh and sph=:sph and c=:c and hcl=:hcl and szmd=:szmd and ysx=:ysx');
query1.Parameters[0].Value:=QUERY['ddh'];
query1.Parameters[1].Value:=QUERY['sph'];
query1.Parameters[2].value:=QUERY['c'];
query1.Parameters[3].value:=QUERY['hcl'];
query1.Parameters[4].value:=QUERY['szmd'];
query1.Parameters[5].value:=QUERY['ysx'];
query1.open;
if query1.RecordCount<>0 then
begin
application.MessageBox('已有该批商品,请重新选择商品或修改该商品!','提示',mb_ok+mb_iconstop);
b_cancel.OnClick(self);
t_tempck.Requery;
exit;
end;
end;
if dm.Query.RecordCount=0 then
begin
application.MessageBox('没有库存信息!','提示',mb_ok+mb_iconinformation);
b_cancel.OnClick(self);
dm.t_tempck.Requery;
exit;
end;
with dm do
begin
t_tempck['sph']:=query['sph'];
t_tempck['rkdh']:=query['ddh'];
t_tempck['c']:=query['c'];
t_tempck['hcl']:=query['hcl'];
t_tempck['szmd']:=query['szmd'];
t_tempck['ysx']:=query['ysx'];
t_tempck['dw']:=query['dw'];
spm.Text:=query['spm'];
spxh.Text:=query['xhm'];
kc00:=query['sl'];
query.Close;
end; //with .. end
end;
procedure Tf_ck.b_addClick(Sender: TObject);
begin
inherited;
with dm do
begin
t_tempck.Append;
b_sp.OnClick(self);
//if query.RecordCount=0 then exit;
if query1.RecordCount<>0 then exit;
dbgrid1.Enabled:=false;
//dbgrid1.ReadOnly:=false;
b_sp.Enabled:=true;
b_add.Enabled:=false;
b_edit.Enabled:=false;
b_del.Enabled:=false;
b_save.Enabled:=true;
b_cancel.Enabled:=true;
pan.Enabled:=true;
b_sp.Enabled:=true;
pan.Font.Color:=$00990000;
end; //with .. end
sl.SetFocus;
end;
procedure Tf_ck.b_delClick(Sender: TObject);
begin
inherited;
if application.MessageBox('您确认删除该记录吗?','提问',mb_yesno+mb_iconquestion)=idno then
begin
exit;
end;
try
dm.T_tempck.Delete;
except
application.MessageBox('数据库删除不成功!','数据删除失败',mb_ok+mb_iconstop);
end;
dm.Query.SQL.Clear;
dm.Query.SQL.Add('select sum(cj*sl) as sl from tempck_info');
dm.Query.Open;
if dm.Query['SL']=NULL then
zjje.Text:='0'
else zjje.Text:=dm.Query['sl'];
dm.T_tempck.Filtered:=false;
dbgrid1.OnCellClick(dbgrid1.Columns.Items[dbgrid1.SelectedRows.count]);
end;
procedure Tf_ck.b_saveClick(Sender: TObject);
begin
inherited;
if (trim(sph.Text)='')or(trim(sl.Text)='')or(trim(sl.Text)='0')or(trim(jg.Text)='')or(trim(jg.Text)='0') then
begin
application.MessageBox('商品名称、数量、价格必须输入!','提示',mb_ok+mb_iconinformation);
exit;
end;
//==================检测库存中该商品数量是否能满足
with dm do
begin
{query.SQL.Clear;
query.SQL.Add('select * from rk_info where ddh=:ddh and sph=:sph');
query.Parameters[0].Value:=t_tempck['rkdh'];
query.Parameters[1].Value:=t_tempck['sph'];
query.Open;
sl1:=query['sl'];
query.SQL.Clear;
query.SQL.Add('select sum(sl) as sl from ck_info where rkdh=:rkdh and sph=:sph');
query.Parameters[0].Value:=t_tempck['rkdh'];
query.Parameters[1].Value:=t_tempck['sph'];
query.Open;
if query['sl']=null then
sl2:=0
else sl2:=query['sl'];
if (t_tempck['sl']>(sl1-sl2))or(sl1-sl2<=0) then }
if (kc00<strtofloat(sl.Text))or(kc00<=0) then
begin
application.MessageBox(pchar('商品数量不足,库存数量为:'+floattostr(kc00-strtofloat(sl.Text))+',请修改数量!'),'提示',mb_ok+mb_iconwarning);
sl.SetFocus;
exit;
end;
end;
//==============================
try
dm.T_TEMPCK['scsl']:=trim(sl.Text);
dm.T_tempck.post;
except
application.MessageBox('数据库增加或修改不成功!','提交数据失败',mb_ok+mb_iconstop);
end;
dm.Query.SQL.Clear;
dm.Query.SQL.Add('select sum(cj*sl) as sl from tempck_info');
dm.Query.Open;
zjje.Text:=dm.Query['sl'];
dbgrid1.Enabled:=true;
//dbgrid1.ReadOnly:=true;
b_add.Enabled:=true;
b_edit.Enabled:=true;
b_del.Enabled:=true;
b_save.Enabled:=false;
b_cancel.Enabled:=false;
pan.Enabled:=false;
b_sp.Enabled:=false;
pan.Font.Color:=clwindowtext;
dbgrid1.OnCellClick(dbgrid1.Columns.Items[dbgrid1.SelectedRows.count]);
end;
procedure Tf_ck.b_editClick(Sender: TObject);
begin
inherited;
dm.T_tempck.edit;
dbgrid1.Enabled:=false;
//dbgrid1.ReadOnly:=false;
b_sp.Enabled:=false;
b_edit.Enabled:=false;
b_add.Enabled:=false;
b_del.Enabled:=false;
b_save.Enabled:=true;
b_cancel.Enabled:=true;
pan.Enabled:=true;
b_sp.Enabled:=true;
pan.Font.Color:=$00990000;
sl.SetFocus;
end;
procedure Tf_ck.b_cancelClick(Sender: TObject);
begin
inherited;
dbgrid1.Enabled:=true;
//dbgrid1.ReadOnly:=true;
dm.T_tempck.cancel;
b_add.Enabled:=true;
b_edit.Enabled:=true;
b_del.Enabled:=true;
b_save.Enabled:=false;
b_cancel.Enabled:=false;
pan.Enabled:=false;
b_sp.Enabled:=false;
pan.Font.Color:=clwindowtext;
end;
procedure Tf_ck.BitBtn2Click(Sender: TObject);
begin
inherited;
close;
end;
procedure Tf_ck.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
dm.T_TEMPCK.Cancel;
dm.T_TEMPCK.Close;
dm.T_ffry.Close;
end;
procedure Tf_ck.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
inherited;
// if b_save.Enabled then b_save.OnClick(self);
{ if b_save.Enabled then
if application.MessageBox('是否要保存该记录?','保存',mb_yesno+mb_iconquestion)=idno then
b_cancel.OnClick(self)
else b_save.OnClick(self); }
end;
procedure Tf_ck.BitBtn1Click(Sender: TObject);
begin
inherited;
if (trim(kh.Text)='')or(trim(cb_jbr.Text)='')or(trim(zjje.Text)='')or(trim(zjje.Text)='0') then
begin
application.MessageBox('客户名称、总计金额、经办人必须输入!','输入',mb_ok+mb_iconinformation);
exit;
end;
if dm.T_TEMPCK.RecordCount=0 then
begin
application.MessageBox('请输入出库明细!','输入',mb_ok+mb_iconinformation);
exit;
end;
with dm do
begin
query.SQL.Clear;
query.SQL.Add('insert into crkd_info(ddh,ddrq,khh,zjje,yfje,jbr,ck,bz) values(:ddh,:ddrq,:khh,:zjje,:yfje,:jbr,:ck,:bz)');
query.Parameters[0].Value:=trim(ckdh.Text);
query.Parameters[1].Value:=formatdatetime('yyyy.mm.dd',dt.Date);
query.Parameters[2].Value:=pkhh;
query.Parameters[3].Value:=trim(zjje.Text);
query.Parameters[4].Value:=trim(yfje.Text);
query.Parameters[5].Value:=trim(cb_jbr.Text);
query.Parameters[6].Value:=trim(cb_ck.Text);
query.Parameters[7].Value:=trim(memo1.Text);
query.ExecSQL;
query.SQL.Clear;
query.SQL.Add('update tempck_info set ddh=:ddh,cklx=:cklx,ckrq=:ckrq');
query.Parameters[0].Value:=trim(ckdh.Text);
query.Parameters[1].Value:='出库';
query.Parameters[2].Value:=formatdatetime('yyyy.mm.dd',dt.Date);
query.ExecSQL;
t_tempck.Requery;
t_tempck.First;
while not t_tempck.Eof do
begin
query.SQL.Clear;
query.SQL.Add('update kc_info set sl=sl-:cksl where ddh=:ddh and sph=:sph and c=:c and hcl=:hcl and szmd=:szmd and ysx=:ysx');
query.Parameters[0].Value:=t_tempck['sl'];
query.Parameters[1].value:=t_tempck['rkdh'];
query.Parameters[2].value:=t_tempck['sph'];
query.Parameters[3].value:=t_tempck['c'];
query.Parameters[4].value:=t_tempck['hcl'];
query.Parameters[5].value:=t_tempck['szmd'];
query.Parameters[6].value:=t_tempck['ysx'];
query.ExecSQL;
t_tempck.Next;
end;
query.SQL.Clear;
query.SQL.Add('insert into ck_info select * from tempck_info');
query.ExecSQL;
f_ck.ckdbh;
query.SQL.Clear;
query.SQL.Add('delete from tempck_info');
query.ExecSQL;
spm.Text:='';
spxh.Text:='';
zjje.Text:='0';
yfje.Text:='0';
t_tempck.Requery;
end; //with .. end
end;
procedure Tf_ck.JGKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if not(key in['0'..'9',#8,'.']) then
begin
key:=#0;
end;
end;
procedure Tf_ck.slKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if not(key in['0'..'9',#8,'.']) then
begin
key:=#0;
end;
end;
procedure Tf_ck.YFJEKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if not(key in['0'..'9',#8,'.']) then
begin
key:=#0;
end;
end;
procedure Tf_ck.YFJEExit(Sender: TObject);
begin
inherited;
if yfje.Text='' then
begin
yfje.Text:='0';
exit;
end;
try
strtofloat(trim(yfje.Text))
except
application.MessageBox('已付金额输入不合法,请重新输入!','错误',mb_ok+mb_iconstop);
yfje.SetFocus;
exit;
end;
yfje.Text:=floattostr(strtofloat(trim(yfje.Text)));
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -