📄 buygoodsunit.pas
字号:
unit BuyGoodsUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, ComCtrls, ExtCtrls, DB, DBTables;
type
TBuyGoodsForm = class(TForm)
P_back: TPanel;
P_main: TPanel;
Panel_down: TPanel;
Bevel_bass: TBevel;
L_count: TLabel;
Panel_button: TPanel;
OKBtn: TButton;
CancelBtn: TButton;
PageScroller_input: TPageScroller;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
DTP_date: TDateTimePicker;
CB_ywy: TComboBox;
CB_depot: TComboBox;
IMPSG_DATA: TStringGrid;
Query_data: TQuery;
function User_save:boolean;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure OKBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure Panel_downClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
BuyGoodsForm: TBuyGoodsForm;
implementation
Uses FunctionUnit,MainUnit;
{$R *.dfm}
procedure TBuyGoodsForm.FormCreate(Sender: TObject);
begin
self.Caption :='商场进货数据录入';
// impsg_data.ColWidths[6]:=-1;
// impsg_data.ColWidths[8]:=-1;
end;
procedure TBuyGoodsForm.FormShow(Sender: TObject);
begin
with query_data do
begin
close;
sql.Clear ;
sql.Text :='select name from depot where and type="外部"';
open;
cb_depot.Items.Clear ;
cb_depot.Style:=csDropDownList;
while not eof do
begin
CB_depot.Items.add(fieldbyname('name').asstring);
next;
end;
close;
end;
end;
procedure TBuyGoodsForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
var
T_temp:TModalResult;
begin
inherited;
if OKBtn.Enabled then
begin
T_temp:=messagedlg(Askmsg0001,mtConfirmation,mbYesnoCancel,0);
if T_temp=mrYes then
begin
if not user_save then
begin
messagedlg('【'+cb_depot.text+'】的进货'+Infmsg0004,mtError,[mbok],0);
canclose:=false;
end
else
begin
messagedlg(Infmsg0001,mtInformation,[mbok],0);
canclose:=true;
end;
end
else if T_temp=mrNo then
canclose:=true
else
canclose:=false;
end
else
canclose:=true;
end;
procedure TBuyGoodsForm.OKBtnClick(Sender: TObject);
var
T_temp:TModalResult;
begin
T_temp:=messagedlg(Askmsg0002+' - 【'+cb_depot.text+'】的进货数据',mtConfirmation,mbOKCancel,0);
if T_temp=mrOk then
begin
if not user_save then
begin
messagedlg('【'+cb_depot.text+'】的进货'+Infmsg0004,mtError,[mbok],0);
end
else
begin
messagedlg(Infmsg0001,mtInformation,[mbok],0);
okbtn.Enabled :=false;
self.close;
end;
end;
end;
procedure TBuyGoodsForm.CancelBtnClick(Sender: TObject);
begin
self.close;
end;
function TBuyGoodsForm.User_save:boolean;
var
I_errordb,I_temp,I_count,I_number,I_recordcount:integer;
S_depotid,S_tempid,S_id:string;
begin
I_errordb:=0;
I_count:=0;
S_depotid:='';
if not Checkrights(USERRIGHTS,'增加') then
begin
messagedlg(Errormsg0006+'0007',mterror,[mbok],0);
result:=false;
exit;
end;
if CB_depot.Text ='' then
begin
messagedlg(Errormsg0002+'0002',mtwarning,[mbok],0);
cb_depot.SetFocus ;
result:=false;
end
else
result:=true;
if result then
begin
for I_temp:=1 to 99 do //逐行检测进货记录是否有效
begin
if IMPSG_DATA.Cells[1,I_temp]<>'' then //有效记录
begin
inc(I_count);
if (IMPSG_DATA.cells[4,I_temp]='') or (IMPSG_DATA.cells[5,I_temp]='') then
begin
messagedlg('第'+inttostr(I_temp)+
'行记录的'+Errormsg0002+'0015',mtError,[mbok],0);
IMPSG_DATA.Row :=I_temp;
IMPSG_DATA.Col :=4;
IMPSG_DATA.SetFocus ;
result:=false;
exit;
end;
try
strtofloat(IMPSG_DATA.Cells[4,I_temp]);
strtofloat(IMPSG_DATA.Cells[5,I_temp]);
except
messagedlg('第'+inttostr(I_temp)+
'行记录的'+Errormsg0002+'0015',mtError,[mbok],0);
IMPSG_DATA.Row :=I_temp;
IMPSG_DATA.Col :=4;
IMPSG_DATA.SetFocus ;
result:=false;
exit;
end;
end;
end;
if I_count<1 then
begin
result:=false;
messagedlg(Errormsg0008,mtwarning,[mbok],0);
end;
end;
if result then
begin
with Query_data do
begin
try
close;
sql.Clear ;
sql.Text :='select id from depot where name="'+ cb_depot.Text+'"';
open;
S_depotid:=fieldbyname('id').AsString ;
close;
//检查主仓库是否有库存,即外部仓库数量是否合法
for I_temp:=1 to 99 do
begin
if IMPSG_DATA.Cells[1,I_temp]<>'' then //有效记录
begin
I_errordb:=1;
close;
sql.Clear ;
sql.text:='select id,number from kccount where depotid=(select Id from depot'
+' where type="内部") and goodsid="'+ IMPSG_DATA.Cells[1,I_temp]+'"';
open;
S_id:=fieldbyname('id').asstring;
I_number:=fieldbyname('number').AsInteger-strtoint(IMPSG_DATA.cells[4,I_temp]);
if (recordcount<= 0) or (s_id='') then //本行商品没有进货记录
begin
messagedlg('在【内部仓库(主仓库)】内'+Errormsg0009,mtwarning,[mbok],0);
impsg_data.Row :=I_temp;
impsg_data.Col :=1;
result:=false;
close;
exit;
end
else if I_number<0 then //进货数量小于销售数量
begin
messagedlg('在【内部仓库(主仓库)】内'+Errormsg0010,mtwarning,[mbok],0);
impsg_data.Row :=I_temp;
impsg_data.Col :=4;
result:=false;
close;
exit;
end;
end;
end;
for I_temp:=1 to 99 do
begin
if IMPSG_DATA.Cells[1,I_temp]<>'' then //有效记录
begin
I_errordb:=2;
close;
sql.clear;
//记录进货记录
sql.text:='insert into stockrecord (depotid,goodsid,number,mydate,id,memo,price)'+
'values ("'+S_depotid+'","'+IMPSG_DATA.Cells[1,I_temp]+'",'
+IMPSG_DATA.cells[4,I_temp]+',"'+formatdatetime('yyyy-mm-dd',DTP_date.DateTime)
+'","'+Nowindex+'-'+inttostr(I_temp)+'","'
+ IMPSG_DATA.cells[9,i_temp]+'",'+IMPSG_DATA.cells[5,I_temp]+')';
execsql;
close;
I_errordb:=1;
sql.clear;
sql.text:='select id,number from kccount where depotid='''+
S_depotid+''' and goodsid='''+ IMPSG_DATA.Cells[1,I_temp]+'''';
open;
//进货仓库统计
S_tempid:=fieldbyname('id').asstring;
I_count:=fieldbyname('number').AsInteger+strtoint(IMPSG_DATA.cells[4,I_temp]);
I_recordcount:=recordcount;
close;
sql.Clear ;
sql.Text :='select id,number from kccount where depotid=(select Id from depot'
+' where type="内部") and goodsid="'+ IMPSG_DATA.Cells[1,I_temp]+'"';
open;
//主仓库统计
S_id:=fieldbyname('id').AsString ;
I_number:=fieldbyname('number').AsInteger-strtoint(IMPSG_DATA.cells[4,I_temp]);
close;
//更新数据
I_errordb:=3;
sql.Clear ;
if (I_recordcount>0) and (S_tempid<> '') then
sql.text:='update kccount set number='+inttostr(I_count)+',price='+IMPSG_DATA.cells[5,I_temp]
+' where id='''+s_tempid+''''
else
sql.text:='insert into kccount (depotid,goodsid,number,price,id,memo)'
+' values ("'+S_depotid+'","'
+IMPSG_DATA.Cells[1,I_temp]+'",'+IMPSG_DATA.cells[4,I_temp]+','
+IMPSG_DATA.cells[5,I_temp]+',"'+Nowindex+'-'+inttostr(I_temp)+'","'
+ IMPSG_DATA.cells[9,i_temp]+'")';
execsql;
close;
sql.clear;
sql.Text :='update kccount set number='+inttostr(I_number)
+' where id="'+S_id+'"';
execsql;
close;
I_errordb:=4;
sql.Clear ;
sql.Text :='update goodsmessage set price='+IMPSG_DATA.cells[5,I_temp]+' where id='''+IMPSG_DATA.Cells[1,I_temp]+'''';
execsql;
close;
end;
end;
except
result:=false;
if I_errordb=1 then
messagedlg(Errormsg0001+'0019',mtwarning,[mbok],0)
else if I_errordb=2 then
messagedlg(Errormsg0004+'0021',mtwarning,[mbok],0)
else if I_errordb=3 then
messagedlg(Errormsg0004+'0016',mtwarning,[mbok],0)
else if I_errordb=4 then
messagedlg(Errormsg0004+'0013',mtwarning,[mbok],0)
else
messagedlg(Errormsg0001+'0000',mtwarning,[mbok],0);
close;
exit;
end;
close;
end;
end;
end;
procedure TBuyGoodsForm.Panel_downClick(Sender: TObject);
begin
//Okbtn.Enabled:=Not okbtn.Enabled;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -