📄 pfm_pfdmx.pas
字号:
unit pfm_pfdmx;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, Grids, DBGrids, StdCtrls, Mask, DBCtrls, Buttons, ComCtrls,
pfm_pfdsel, ExtCtrls, ADODB, pvar_lib;
type
Tfm_pfdmx = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
GroupBox1: TGroupBox;
Label4: TLabel;
Label12: TLabel;
Label13: TLabel;
Label18: TLabel;
Label23: TLabel;
Label24: TLabel;
Label25: TLabel;
Label26: TLabel;
Label27: TLabel;
Label28: TLabel;
Label29: TLabel;
Label30: TLabel;
Label31: TLabel;
Label32: TLabel;
Label33: TLabel;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit12: TDBEdit;
DBEdit13: TDBEdit;
DBEdit18: TDBEdit;
DBEdit23: TDBEdit;
DBEdit24: TDBEdit;
DBEdit25: TDBEdit;
DBEdit26: TDBEdit;
DBEdit27: TDBEdit;
DBEdit28: TDBEdit;
DBEdit29: TDBEdit;
DBEdit30: TDBEdit;
DBEdit31: TDBEdit;
DBEdit32: TDBEdit;
GroupBox2: TGroupBox;
Label1: TLabel;
Label5: TLabel;
Label16: TLabel;
Label11: TLabel;
Label21: TLabel;
Label20: TLabel;
Label22: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Query3: TQuery;
Query3spbm: TStringField;
Query3sptxm: TStringField;
Query3spmc: TStringField;
Query3ggxh: TStringField;
Query3dengji: TStringField;
Query3zhuangtai: TStringField;
Query3baozhuangdw: TStringField;
Query3baozhuangsl: TStringField;
Query3hh: TStringField;
Query3gysmc: TStringField;
Query3cd: TStringField;
Query3xsfs: TStringField;
Query3wsjj: TFloatField;
Query3jhsl: TFloatField;
Query3wsdj: TFloatField;
Query3xssl: TFloatField;
Query3yhl: TFloatField;
Query3splb: TStringField;
DataSource3: TDataSource;
BitBtn_quit: TBitBtn;
BBtn_yskcl: TBitBtn;
GroupBox3: TGroupBox;
LView1: TListView;
Panel1: TPanel;
Edit11: TEdit;
Label2: TLabel;
Label3: TLabel;
Edit12: TEdit;
Label6: TLabel;
Edit13: TEdit;
Query1: TQuery;
Label15: TLabel;
Edit7: TEdit;
Label14: TLabel;
Edit5: TEdit;
Label17: TLabel;
Edit6: TEdit;
lbltishi: TLabel;
BBtnpfd: TBitBtn;
BBtncancel: TBitBtn;
BBtnSave: TBitBtn;
BBtndel: TBitBtn;
Edit14: TEdit;
Label7: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BBtn_yskclClick(Sender: TObject);
procedure Edit11KeyPress(Sender: TObject; var Key: Char);
procedure Edit12KeyPress(Sender: TObject; var Key: Char);
procedure Edit13KeyPress(Sender: TObject; var Key: Char);
procedure Edit7KeyPress(Sender: TObject; var Key: Char);
procedure Edit5KeyPress(Sender: TObject; var Key: Char);
procedure Edit6KeyPress(Sender: TObject; var Key: Char);
procedure BBtndelClick(Sender: TObject);
procedure BBtnpfdClick(Sender: TObject);
procedure BBtncancelClick(Sender: TObject);
procedure BBtnSaveClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Edit14KeyPress(Sender: TObject; var Key: Char);
procedure LView1Click(Sender: TObject);
private
{ Private declarations }
function MyCheckData():boolean;
function GetSpxx(spcode:string):boolean;
public
{ Public declarations }
end;
var
fm_pfdmx: Tfm_pfdmx;
implementation
uses pfm_yfkcl;
{$R *.DFM}
procedure Tfm_pfdmx.FormCreate(Sender: TObject);
var
i:integer;
lvcol:TListColumn;
begin
lvcol:=lview1.Columns.Add();
lvcol.Caption:='商品编码';
lvcol.width:=60;
lvcol:=lview1.Columns.Add();
lvcol.Caption:='商品条形码';
lvcol.width:=110;
lvcol:=lview1.Columns.Add();
lvcol.Caption:='商品名称';
lvcol.width:=120;
lvcol:=lview1.Columns.Add();
lvcol.Caption:='商品数量';
lvcol.width:=80;
lvcol:=lview1.Columns.Add();
lvcol.Caption:='批发价';
lvcol.width:=80;
lvcol:=lview1.Columns.Add();
lvcol.Caption:='折扣';
lvcol.width:=80;
lvcol:=lview1.Columns.Add();
lvcol.Caption:='合同号';
lvcol.width:=100;
lvcol:=lview1.Columns.Add();
lvcol.Caption:='单据号';
lvcol.width:=100;
lvcol:=lview1.Columns.Add();
lvcol.Caption:='发票号';
lvcol.width:=100;
for i:= 0 to componentcount-1 do
begin
if components[i].ClassName='TEdit' then
begin
(components[i] as tedit).text:='';
end;
end;
end;
function Tfm_pfdmx.MyCheckData():boolean;
begin
myCheckData:=true;
end;
procedure Tfm_pfdmx.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=caFree;
end;
procedure Tfm_pfdmx.BBtn_yskclClick(Sender: TObject);
begin
if application.MessageBox('是否进货明细单录入完成,#13填写应付款单','注意',MB_YESNO)=ID_NO then
begin
exit;
end;
fm_yfkcl:=tfm_yfkcl.create(application);
fm_yfkcl.Edit1.Text:=edit1.text;
fm_yfkcl.edit2.text:=edit2.text;
fm_yfkcl.showmodal;
end;
procedure Tfm_pfdmx.Edit11KeyPress(Sender: TObject; var Key: Char);
var
ListItem:Tlistitem;
begin
//商品编码或条形码
if key<>#13 then exit;
if getspxx(edit11.text)=false then
begin
edit11.text:='';
lbltishi.caption:='没有这个商品';
exit;
end;
if not query3.eof then
begin
ListItem:=LView1.items.Insert(0);
ListItem.Caption:=query3.fieldbyname('spbm').asstring;
LIstItem.SubItems.add(query3.fieldbyname('sptxm').asstring);
LIstItem.SubItems.add(query3.fieldbyname('spmc').asstring);
LIstItem.SubItems.add('1');// 2-进货数量
LIstItem.SubItems.add(query3.fieldbyname('wsdj').asstring);//3-无税单价
LIstItem.SubItems.add('100');//4-折扣
LIstItem.SubItems.add(edit7.text);//5-合同号
LIstItem.SubItems.add(edit5.text);//6-单据号
LIstItem.SubItems.add(edit6.text);//7-发票号
ListItem.selected:=true;
edit12.text:='1';
edit13.Text:=query3.fieldbyname('wsdj').asstring;
edit12.SetFocus;
end
else
begin
edit11.text:='';
lbltishi.caption:='没有这个商品';
end;
end;
function Tfm_pfdmx.GetSpxx(spcode:string):boolean;
var
spcodelen:integer;
tmpstr:string;
begin
spcodelen:=length(spcode);
if spcodelen<=6 then
begin
tmpstr:='000000'+spcode;
spcode:=copy(tmpstr,spcodelen+1,6);
spcodelen:=6;
end
else if spcodelen<>13 then //输入的编码位数>6但不是13位
begin
GetSpxx:=false;
exit;
end;
edit11.text:=spcode;
query3.close;
query3.sql.clear;
if spcodelen=6 then
begin
query3.sql.add('select * from t_spxx where spbm='''+spcode+'''');
end
else
begin
query3.sql.add('select * from t_spxx where sptxm='''+spcode+'''');
end;
query3.open;
GetSpxx:=true;
end;
procedure Tfm_pfdmx.Edit12KeyPress(Sender: TObject; var Key: Char);
var
retcode,num:integer;
begin
if key<>#13 then exit;
if lview1.SelCount=0 then exit;
val((sender as Tedit).text,num,retcode);
if retcode=0 then
begin
lview1.Selected.SubItems.strings[2]:=(sender as Tedit).text;
lbltishi.caption:='请输入商品的进货单价';
edit13.SetFocus;
end
else
begin
lbltishi.caption:='请输入整数';
(sender as tedit).text:='';
end;
end;
procedure Tfm_pfdmx.Edit13KeyPress(Sender: TObject; var Key: Char);
begin
if key<>#13 then exit;
if lview1.SelCount=0 then exit;
try
strtofloat((sender as tedit).text);
lview1.Selected.SubItems.strings[3]:=(sender as tedit).text;
lbltishi.caption:='请输入折扣率';
edit14.setfocus;
except
on EConvertError do
begin
lbltishi.caption:='你输入的不是数字';
end;
end;
end;
procedure Tfm_pfdmx.Edit7KeyPress(Sender: TObject; var Key: Char);
begin
if key<>#13 then exit;
if lview1.SelCount=0 then exit;
lview1.Selected.SubItems.strings[5]:=(sender as tedit).text;
edit5.setfocus;
lbltishi.caption:='请输入单据号码';
end;
procedure Tfm_pfdmx.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
if key<>#13 then exit;
if lview1.SelCount=0 then exit;
lview1.Selected.SubItems.strings[6]:=(sender as tedit).text;
edit6.setfocus;
lbltishi.caption:='请输入发票号';
end;
procedure Tfm_pfdmx.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
if key<>#13 then exit;
if lview1.SelCount=0 then exit;
lview1.Selected.SubItems.strings[7]:=(sender as tedit).text;
edit1.setfocus;
lbltishi.caption:='请输入商品编码或条形码';
edit11.setfocus;
end;
procedure Tfm_pfdmx.BBtndelClick(Sender: TObject);
begin
if lview1.SelCount=0 then exit;
if application.MessageBox(pchar('确定要删除选中进货记录'),pchar('警告'),mb_YESNO)<>IDYES then exit;
lview1.Selected.Delete;
end;
procedure Tfm_pfdmx.BBtnpfdClick(Sender: TObject);
begin
fm_pfdsel:=Tfm_pfdsel.create(self);
if fm_pfdsel.showmodal=IdOK then
begin
edit3.text:=datetimetostr(fm_pfdsel.mDateTime);
edit1.text:=inttostr(fm_pfdsel.mLsh);
edit2.text:=fm_pfdsel.mpfdw;
edit4.text:=fm_pfdsel.mkhmc;
edit8.text:=fm_pfdsel.mJbrm;
edit9.text:=fm_pfdsel.mShrm;
edit10.text:=fm_pfdsel.mCzym;
end;
fm_pfdsel.free;
end;
procedure Tfm_pfdmx.BBtncancelClick(Sender: TObject);
begin
close;
end;
procedure Tfm_pfdmx.BBtnSaveClick(Sender: TObject);
var
insertsql:string;
lsh,pfdw,rq,khmc,jbrm,shrm,czym:string;
spbm,sptxm,pfnum,pfdj,djhm,yhl,hthm,fph:string;
i:integer;
begin
if application.MessageBox(pchar('保存后而退出?'),pchar('警告'),mb_YESNO)<>IDYES then exit;
if edit1.text='' then
begin
showmessage('还未填写批发单');
exit;
end;
if lview1.Items.Count<1 then
begin
showmessage('尚未录入批发单明细记录');
exit;
end;
lsh:=edit1.text;
pfdw:=edit2.text;
datetimetostring(rq,'yyyy-mm-dd',strtodatetime(edit3.text));
khmc:=edit4.text;
jbrm:=edit8.text;
shrm:=edit9.text;
czym:=edit10.text;
query1.Active:=false;
query1.sql.clear;
insertsql:='insert into tb_pfd(lsh,pfdw,khmc,rq,czym,jbrm,shrm) values(';
query1.sql.add(insertsql);
insertsql:=lsh+','''+pfdw+''','''+khmc+''','''+rq+''','''+czym+''','''+jbrm+''','''+shrm+''')';
query1.sql.add(insertsql);
query1.ExecSQL;
for i:=0 to lview1.items.count-1 do
begin
spbm:=lview1.items[i].caption;
sptxm:=lview1.items[i].subitems[0];
pfnum:=lview1.items[i].subitems[2];
pfdj:=lview1.items[i].subitems[3];
yhl:=lview1.items[i].subitems[4];
hthm:=lview1.items[i].subitems[5];
djhm:=lview1.items[i].subitems[6];
fph:=lview1.items[i].subitems[7];
query1.sql.clear;
query1.sql.add('insert into tb_pfdmx(lsh,spbm,sptxm,pfnum,pfdj,yhl,djhm,hthm,fph) values(');
query1.sql.add(lsh+','''+spbm+''','''+sptxm+''','+pfnum+','+pfdj+','+yhl+','''+djhm+''','''+hthm+''','''+fph+''')');
query1.ExecSQL;
end;
lview1.Items.Clear;
AddOptRecord('生成批发单:流水号('+lsh+'),仓库代码('+pfdw+'),客户代码('+khmc+')');
close;
end;
procedure Tfm_pfdmx.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if lview1.Items.count=0 then exit;
if application.MessageBox(pchar('不保存而退出?'),pchar('警告'),mb_YESNO)<>IDYES then
canclose:=false;
end;
procedure Tfm_pfdmx.Edit14KeyPress(Sender: TObject; var Key: Char);
var
retcode,num:integer;
begin
if key<>#13 then exit;
if lview1.SelCount=0 then exit;
val((sender as Tedit).text,num,retcode);
if retcode=0 then
begin
lview1.Selected.SubItems.strings[4]:=(sender as Tedit).text;
if (num<0) or (num>=100) then
begin
lbltishi.caption:='折扣必须在0~100之间';
(sender as tedit).text:='';
exit;
end;
lbltishi.caption:='请输入合同号';
edit7.SetFocus;
end
else
begin
lbltishi.caption:='请输入整数';
(sender as tedit).text:='';
end;
end;
procedure Tfm_pfdmx.LView1Click(Sender: TObject);
var
i:integer;
begin
if lview1.SelCount>0 then
begin
i:=lview1.Selected.Index;
edit11.text:=lview1.items[i].caption;//spbm
//sptxm:=lview1.items[i].subitems[0];
edit12.text:=lview1.items[i].subitems[2];//pfnum
edit13.text:=lview1.items[i].subitems[3];//pfdj
edit14.text:=lview1.items[i].subitems[4];//yhl
edit7.text:=lview1.items[i].subitems[5];//hthm
edit5.text:=lview1.items[i].subitems[6];//hthm
edit6.text:=lview1.items[i].subitems[7];//fph
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -