📄 ushd_lr.pas
字号:
dbedit5.SetFocus;
exit;
end;
if (trim(dbedit18.Text)<>'') and (dbedit19.text='') then
begin
showmessage('该单需要报关,您没有填写报关重量');
dbedit19.SetFocus;
exit;
end;
if (trim(dbedit18.Text)<>'') and (dbedit20.text='') then
begin
showmessage('该单需要报关,您没有填写报关数量');
dbedit19.SetFocus;
exit;
end;
if jcsfsc then exit;
IF ADOQUERY2.State IN [dsinsert] then
begin
qz:='SHDH'+formatdatetime('yy',now)+
formatdatetime('mm',now)+formatdatetime('dd',date);
strsql:='select * from shd_main where shdh like'+''''+qz+'%'+''''+'order by shdh asc';
adoexect(adoquery3,strsql);
dbedit1.Text:=creatdh(adoquery3,11,qz);
end;
if (cgdd<>trim(dbedit3.Text)) and (adoquery2.State in[dsedit]) then
begin //如果订单号码没有发生变化
strsql:='select * from shd_detail where shdh='+''''+trim(dbedit1.Text)+''''+ //则不需要运行下面的代码
'and sssl>0';
adoexect(adoquery3,strsql);
if not (adoquery3.Recordset.EOF and adoquery3.Recordset.BOF) then
begin
if messagebox(handle,'该收货单已收有物料,是否要将物料还原重新收货?','询问',mb_yesno+mb_iconquestion)=idyes then
begin
try
strsql:='exec p_shd_del '+''''+trim(dbedit1.Text)+''''+','+''''+trim(dbedit3.Text)+
''''+','+''''+trim(dbedit6.Text)+''''+','+''''+trim(username)+'''';
adodel(adoquery3,strsql);
except
showmessage('收货单还原失败!');
adoquery3.Close;
end;
end else begin
exit;
end
end;
end;
{
if (adoquery2.State in[dsinsert]) or ((cgdd<>trim(dbedit3.Text)) and (adoquery2.State in[dsedit])) then
begin
try
strsql:='exec p_shd_lr '+''''+trim(dbedit1.Text)+''''+','+''''+trim(dbedit3.Text)+
''''+','+''''+trim(dbedit6.Text)+''''+','+''''+trim(username)+'''';
adodel(adoquery3,strsql);
except
showmessage('收货单重新生成失败!');
end;
end;
}
adoquery3.Close;
cgdd:='';
adoquery2.Post;
adoquery1.Close;
adoquery1.Open;
isedit:=false;
isactive;
RzBitBtn1.Enabled:=true;
RzBitBtn2.Enabled:=true;
RzBitBtn3.Enabled:=false;
DBEdit2.ReadOnly:=true;
DBEdit3.ReadOnly:=true;
DBEdit5.ReadOnly:=true;
DBEdit6.ReadOnly:=true;
DBEdit7.ReadOnly:=true;
dbmemo1.ReadOnly:=true;
end;
procedure Tfrmshd_lr.RzBitBtn8Click(Sender: TObject);
begin
adoquery2.CancelUpdates;
isedit:=false;
isactive;
RzBitBtn1.Enabled:=true;
RzBitBtn2.Enabled:=true;
RzBitBtn3.Enabled:=false;
DBEdit2.ReadOnly:=true;
DBEdit3.ReadOnly:=true;
DBEdit5.ReadOnly:=true;
DBEdit6.ReadOnly:=true;
DBEdit7.ReadOnly:=true;
dbmemo1.ReadOnly:=true;
end;
procedure Tfrmshd_lr.TabSheet2Enter(Sender: TObject);
begin
if adoquery1.Recordset.EOF and adoquery1.Recordset.BOF then exit;
edit1.Text:=adoquery1.fieldbyname('实收数量').AsString;
edit3.Text:=adoquery1.fieldbyname('应收数量').AsString;
edit2.Text:=adoquery1.fieldbyname('单价').AsString;
edit1.SetFocus;
end;
procedure Tfrmshd_lr.RzBitBtn9Click(Sender: TObject);
begin
if jcsfsc then exit;
if (adoquery1.FieldByName('实收数量').value>strtofloat(edit1.Text)) and (trim(dbedit8.text)<>datetostr(date)) then
begin
showmessage('该订单所送的货品已经用于生产,'+#13#10+'不能进行更改!');
RzPageControl1.ActivePageIndex:=0;
exit;
end;
if strtofloat(edit1.Text)>adoquery1.FieldByName('应收数量').Value*1.1 then
begin
if messagebox(handle,'实收数量超过订购数量10%,是否继续收货?','询问',mb_yesno+mb_iconquestion)=idno then
begin
edit1.SetFocus;
exit;
end;
end;
strsql:='select * from shd_detail where shdh='+''''+trim(adoquery1.fieldbyname('收货单号').AsString)+''''+
'and wldm='+''''+trim(adoquery1.fieldbyname('物料代码').AsString)+'''';
adoexect(adoquery3,strsql);
adoquery3.Edit;
adoquery3.FieldByName('sssl').Value:=strtofloat(edit1.Text);
adoquery3.FieldByName('dj').Value:=strtofloat(edit2.Text);
adoquery3.Post;
adoquery1.Close;
adoquery1.Open;
RzPageControl1.ActivePageIndex:=0;
end;
procedure Tfrmshd_lr.RzBitBtn10Click(Sender: TObject);
begin
RzPageControl1.ActivePageIndex:=0;
end;
procedure Tfrmshd_lr.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in['0'..'9',#46,#8] ) then
key:=#0;
end;
procedure Tfrmshd_lr.RzToolbarButton2Click(Sender: TObject);
begin
if (not(adoquery2.State in [dsinsert])) and (not(adoquery2.State in [dsedit])) then exit;
title:='';
lbname:='';
bgwl:='';
danwei:='';
frmgyslb:=tfrmgyslb.Create(self);
frmgyslb.ShowModal;
dbedit5.Text:=lbname;
dbedit6.Text:=title;
dbedit18.Text:=bgwl;
dbedit21.Text:=danwei;
if bgwl='' then
begin
dbedit19.Enabled:=false;
dbedit20.Enabled:=false;
end else begin
dbedit19.Enabled:=true;
dbedit20.Enabled:=true;
end
end;
procedure Tfrmshd_lr.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in['0'..'9',#46,#8] ) then
key:=#0;
end;
procedure Tfrmshd_lr.DBGridEh1DblClick(Sender: TObject);
begin
RzPageControl1.ActivePageIndex:=1;
end;
procedure Tfrmshd_lr.RzBitBtn7Click(Sender: TObject);
begin
close;
end;
procedure Tfrmshd_lr.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if (adoquery2.State in[dsinsert]) or (adoquery2.State in[dsedit]) then
begin
if messagebox(handle,'该单尚在编辑状态,是否放弃编辑?','询问',mb_yesno+mb_iconquestion)=idyes then
begin
RzBitBtn3Click(self);
end else begin
RzBitBtn8Click(self);
end;
end;
action:=cafree;
end;
procedure Tfrmshd_lr.RzBitBtn4Click(Sender: TObject);
begin
if jcsfsc and not (adoquery1.Recordset.eof and adoquery1.Recordset.BOF) then
begin
showmessage('该订单送的货物已经用于生产,不能删除');
exit;
end;
if not qxjc(userid,'shd_del') and (username<>trim(dbedit4.Text)) then exit;
if jcsj then exit;
if messagebox(handle,'是否真的要取消该送货单,并将该单上的所有物料还原?','询问',mb_yesno+mb_iconquestion)=idno then
begin
exit;
end;
try
strsql:='exec p_shd_del '+''''+trim(dbedit1.Text)+''''+','+''''+trim(dbedit3.Text)+
''''+','+''''+trim(dbedit6.Text)+''''+','+''''+trim(username)+'''';
adodel(adoquery3,strsql);
adoquery2.Delete;
except
showmessage('删除收货单'+trim(dbedit1.Text)+'出错!');
end;
adoquery3.Close;
adoquery1.close;
adoquery1.Open;
end;
procedure Tfrmshd_lr.RzBitBtn5Click(Sender: TObject);
begin
frmcx:=tfrmcx.Create(self);
frmcx.adocx:=adoquery2;
frmcx.ShowModal;
adoquery2:=frmcx.adocx;
ADOquery2.Requery();
end;
procedure Tfrmshd_lr.N1Click(Sender: TObject);
begin
if jcsfsc and (trim(dbedit8.text)<>datetostr(date)) then
begin
showmessage('该订单所送的货品已经用于生产,不能进行更改!');
exit;
end;
if not qxjc(userid,'shd_edit') and (username<>trim(dbedit4.Text)) then exit;
if checksffp('del') then exit;
strsql:='delete from shd_detail where shdh='+''''+trim(adoquery1.fieldbyname('收货单号').AsString)+
''''+'and wldm='+''''+trim(adoquery1.fieldbyname('物料代码').AsString)+'''';
adodel(adoquery3,strsql);
adoquery3.Close;
adoquery1.Close;
adoquery1.Open;
end;
procedure Tfrmshd_lr.N2Click(Sender: TObject);
var
a:string;
begin
if jcsfsc then exit;
if not qxjc(userid,'shd_edit') and (username<>trim(dbedit4.Text)) then exit;
if (adoquery2.State in[dsinsert]) or (adoquery2.State in[dsedit]) then exit;
if adoquery2.Recordset.eof and adoquery2.Recordset.BOF then exit;
ddhm:=trim(dbedit3.Text);
frmddwl:=tfrmddwl.Create(self);
frmddwl.ShowModal;
if wldm='' then exit;
strsql:='select * from shd_detail where shdh='+''''+trim(dbedit1.Text)+''''+
'and wldm='+''''+wldm+'''';
adoexect(adoquery3,strsql);
if adoquery3.Recordset.BOF and adoquery3.Recordset.EOF then
begin
strsql:='select * from cgdd_detail where ddhm='+''''+ddhm+''''+
'and wldm='+''''+wldm+'''';
adoexect(adoquery4,strsql);
adoquery3.Append;
adoquery3.FieldByName('shdh').AsString:=trim(dbedit1.Text);
adoquery3.FieldByName('wldm').AsString:=wldm;
adoquery3.FieldByName('yssl').Value:=adoquery4.fieldbyname('wssl').Value;
adoquery3.FieldByName('sssl').value:=adoquery4.fieldbyname('wssl').Value;
adoquery3.FieldByName('dj').value:=adoquery4.fieldbyname('dj').Value;
adoquery3.Post;
end else begin
showmessage('物料'+wldm+'已经存在');
exit;
end;
adoquery4.Close;
adoquery3.Close;
adoquery1.Close;
adoquery1.Open;
adoquery1.First;
RzPageControl1.ActivePageIndex:=1;
wldm:='';
end;
procedure Tfrmshd_lr.RzBitBtn6Click(Sender: TObject);
begin
if adoquery5.Active then adoquery5.Close;
adoquery5.Parameters.ParamByName('shdh').Value:=trim(dbedit1.Text);
frReport1.DoublePass := True;
frReport1.Clear;
frReport1.LoadFromFile(strpath+'/report/shd.frf');
frVariables['username']:=username;
frreport1.ShowReport;
end;
procedure Tfrmshd_lr.DBComboBox1Change(Sender: TObject);
begin
if trim(dbcombobox1.Text)='人民币' then
dbedit13.Text:='¥';
if trim(dbcombobox1.Text)='美圆' then
dbedit13.Text:='US$';
if trim(dbcombobox1.Text)='港币' then
dbedit13.Text:='HK$';
end;
procedure Tfrmshd_lr.RzToolbarButton3Click(Sender: TObject);
begin
if (not(adoquery2.State in [dsinsert])) and (not(adoquery2.State in [dsedit])) then exit;
emplyer:='';
frmemplyer_lb:=tfrmemplyer_lb.create(self);
frmemplyer_lb.showmodal;
dbedit14.Text:=emplyer;
end;
procedure Tfrmshd_lr.DBGridEh1TitleClick(Column: TColumnEh);
begin
Compositor(adoquery1,Column);
end;
procedure Tfrmshd_lr.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if gdselected in state then//如果当前区域是被选区域
begin
//设置被选区域颜色
tDBGridEh(sender).Canvas.Brush.Color:=clinfobk;
//设置被选区域字体颜色
tDBGridEh(sender).Canvas.Font.Color:=clfuchsia;
end
else //如果是当前区域不是被选择区域
begin
//如果是偶数行,则背景颜色为 clskyblue
if adoquery1.FieldByName('应收数量').value<>adoquery1.FieldByName('实收数量').value then
tDBGridEh(sender).Canvas.Brush.Color:=clyellow
else
//如果是奇数行,则背景颜色为 clinactivecaptiontext
tDBGridEh(sender).Canvas.Brush.Color:=clWhite;
end;
//调用默认的绘图函数
tDBGridEh(sender).DefaultDrawColumnCell(rect,datacol,column,state);
end;
procedure Tfrmshd_lr.RzPageControl1Change(Sender: TObject);
begin
if not qxjc(userid,'shd_edit') and (username<>trim(dbedit4.Text)) then
RzPageControl1.ActivePageIndex:=0;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -