📄 cgjh.pas
字号:
begin
settab(na,pjcenter,Azdkd[Cols*i+l],0,boxlineall,0);
if l=m-1 then
tab(na,-2,-2,-2,10)
else
tab(na,Na,-2,-2,10);
Print(Azdmc[Cols*i+l]);
end;
end
else
begin
For l := 1 to Cols-1 do
begin
settab(na,pjcenter,Azdkd[Cols*i+l],0,boxlineall,0);
if l=cols-1 then
tab(na,-2,-2,-2,10)
else
tab(na,na,-2,-2,10);
Print(Azdmc[Cols*i+l]);
end;
end;
end;
ClearTabs;
setFont('宋体',10);
settab(zbj,pjLeft,Azdkd[Cols*i],0,boxlineall,0);
if Cols<>1 then
if m=0 then //折行时最后一行字段数等于指定的字段数
begin
For l:=1 to Cols-1 do
begin
settab(na,pjLeft,Azdkd[Cols*i+l],0,boxlineall,0);
end;
end
else //折行时最后一行字段数不等于指定的字段数
begin
if i= n-1 then //最后一行
begin
if m>1 then
For l :=1 to m-1 do
settab(na,pjLeft,Azdkd[Cols*i+l],0,boxlineall,0);
end
else
begin
For l := 1 to Cols-1 do
settab(na,pjLeft,Azdkd[Cols*i+l],0,boxlineall,0);
end;
end;
println('');
For r:=1 to bg.RowCount-1 do
begin
if m = 0 then
begin
For l:=0 to Cols-1 do
begin
if l=0 then//第一列
if Cols<>1 then
Tab(-2,na,na,na,0)
else
Tab(-2,-2,na,na,0)
else if l=Cols-1 then //最后一列
Tab(na,-2,na,na,0)
else
Tab(na,na,na,na,0);
Print(bg.Cells[i*Cols+l,r]);
end;
end
else
begin
if i = n-1 then
begin
For l :=0 to m-1 do
begin
if l=0 then //第一列
if m>1 then
Tab(-2,na,na,na,0)
else
Tab(-2,-2,na,na,0)
else if l=m-1 then //最后一列
Tab(na,-2,na,na,0)
else
Tab(na,na,na,na,0);
Print(bg.Cells[i*Cols+l,r]);
end;
end
else
begin
For l :=0 to Cols-1 do
begin
if l=0 then //第一列
Tab(-2,na,na,na,0)
else if l=Cols-1 then //最后一列
Tab(na,-2,na,na,0)
else
Tab(na,na,na,na,0);
Print(bg.Cells[i*Cols+l+1,r]);
end;
end;
end;
Println('');
end;
end;
Println('');
printLeft('进货小计: '+Trim(jhxj.Text),zbj);
printcenter('进货折让: '+Trim(jhzr.Text)+' 进货税额: '+ Trim(jhse.Text),(pageWidth)/2);
printright('总计: '+Trim(zj.Text),zbj+Rowzdkd);
end;
end;
procedure Tf_cgjh.dyClick(Sender: TObject);
begin
Rprinter.Execute;
end;
procedure Tf_cgjh.tjClick(Sender: TObject);
var
s,m: String;
i: integer;
begin
s:= 'PH'+ FormatDateTime('yyyymmdd',sj.Date);
With Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select max(cgph) as ss From t_cgph where sj>=:a and sj <:b');
ParamByName('a').AsDate := Trunc(sj.Date);
ParamByName('b').AsDate := Trunc(sj.Date)+1;
Open;
end;
If Data.Query1.FieldByName('ss').Value = null then
s := s + '001'
else
begin
m:= Trim(Data.Query1.FieldByName('ss').Value) ;
i:= StrToInt(Trim(Copy(m,11,8))) ;
if i<9 then
s:= s + '00'+ InttoStr(i +1)
else if i<99 then
s:= s + '0'+ InttoStr(i +1)
else
s:= s +InttoStr(i +1);
end;
cgph.Text := s;
if cs.Enabled = True then
cs.SetFocus;
sj.Enabled := False;
end;
procedure Tf_cgjh.bcClick(Sender: TObject);
var
r: Integer;
hsgx: Integer;//采购单位与基本单位的换算关系
KcNum: Integer;//记录库存数量
kcsx: Integer;//记录库存上限
begin
if EditIsNull = False then
if GridIsNull = False then
begin
Try
For r := 0 to bg.RowCount-1 do //判断采购商品是否超出库存上限
begin
With Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from t_kc where kcmc = :a and spdm = :b');
ParamByName('a').AsString := Trim(bg.Cells[ckmc,r]);
ParamByName('b').AsString := Trim(bg.Cells[spdm,r]);
Open;
end;
if Data.Query1.RecordCount>0 then
begin
kcsx := Data.Query1.FieldByName('kcsx').AsInteger;
Kcnum := Data.Query1.FieldByName('kcsl').AsInteger;
if kcsx >0 then //设置了库存上限
if GroupSum(Trim(bg.Cells[spdm,r]))+ kcnum >kcsx then
if Application.MessageBox(pchar('商品代码为'+bg.Cells[spdm,r]+'的商品超出库存数量,还要进货吗?'),'提示',mb_YesNo)<>ID_Yes then
Exit;
end;
end;
Data.Database.StartTransaction;
With Data.Query1 do //向采购票号表中插入数据
begin
Close;
SQL.Clear;
SQL.Add('insert t_cgph values(:a,:b,:c,:d,:e,:f,:g,:h,:i,:j)');
ParamByName('a').AsString := Trim(cgph.Text);
ParamByName('b').AsString := Trim(ksb.Text);
ParamByName('c').AsString := Trim(fktj.Text);
ParamByName('d').AsString := Trim(cgy.Text);
ParamByName('e').AsFloat := StrToFloat(jhxj.Text);
ParamByName('f').AsFloat:= StrToFloat(jhzr.Text);
ParamByName('g').AsFloat :=StrToFloat(jhse.Text);
ParamByName('h').AsFloat := StrToFloat(zj.Text);
ParamByName('i').AsString := Trim(cs.Text);
ParamByName('j').AsDate := sj.Date;
ExecSQL;
end;
For r :=1 to bg.RowCount-1 do
begin
With Data.Query2 do
begin
Close;
SQL.Clear;
SQL.Add('select hsgx from t_spjcxx where spdm = :a');
ParamByName('a').AsString := Trim(bg.Cells[spdm,r]);
Open;
hsgx := Fields[0].AsInteger;
end;
With Data.Query1 do //向采购明细表中插入数据
begin
Close;
SQL.Clear;
SQL.Add('insert t_cgmx values (:a,:b,:c,:d,:e,:f,:g,:h,:i,:j,:k,:l)');
ParamByName('a').AsString := Trim(cgph.Text);
ParamByName('b').AsString := Trim(bg.Cells[ckmc,r]);
ParamByName('c').AsString := Trim(bg.Cells[spdm,r]);
ParamByName('d').AsString := Trim(bg.Cells[cgdw,r]);
ParamByName('e').AsInteger := StrToInt(bg.Cells[num,r])*hsgx;
ParamByName('f').AsFloat := StrToFloat(bg.Cells[dj,r]);
ParamByName('g').AsFloat := StrToFloat(bg.Cells[zk,r]);
ParamByName('h').AsFloat := StrToFloat(bg.Cells[sl,r]);
ParamByName('i').AsFloat := StrToFloat(bg.Cells[se,r]);
ParamByName('j').AsFloat := StrToFloat(bg.Cells[wzrje,r]);
ParamByName('k').AsFloat := StrToFloat(bg.Cells[je,r]);
ParamByName('l').AsDate := StrToDateTime(bg.Cells[bzq,r]);
ExecSQL;
end;
with Data.Query1 do //向库存表插入数据
begin
Close;
SQL.Clear;
SQL.Add('select * from t_kc where kcmc = :a and spdm = :b');
ParamByName('a').AsString := Trim(bg.Cells[ckmc,r]);
paramByName('b').AsString := Trim(bg.Cells[spdm,r]);
Open;
end;
if Data.Query1.RecordCount<1 then
begin
with Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('insert t_kc values(:a,:b,:c,default,default)');
ParamByName('a').AsString := Trim(bg.Cells[ckmc,r]);
paramByName('b').AsString := Trim(bg.Cells[spdm,r]);
ParamByName('c').AsInteger:= StrToInt(bg.Cells[num,r])*hsgx;
ExecSQL;
end;
end
else
begin
with Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('update t_kc set kcsl = kcsl +:a where kcmc = :b and spdm = :c');
ParamByName('b').AsString := Trim(bg.Cells[ckmc,r]);
paramByName('c').AsString := Trim(bg.Cells[spdm,r]);
ParamByName('a').AsInteger:= StrToInt(bg.Cells[Num,r])*hsgx;
ExecSQL;
end;
end;
With Data.Query1 do //向商品入库记录表中插入数据
begin
Close;
SQL.Clear;
SQL.Add('select * from t_sprkjl where kcmc = :a and spdm = :b and bzq >=:c and bzq<= :d');
ParamByName('a').AsString := Trim(bg.Cells[ckmc,r]);
ParamByName('b').AsString := Trim(bg.Cells[spdm,r]);
ParamByName('c').AsDate := Trunc(StrToDateTime(bg.Cells[bzq,r]));
ParamByName('d').AsDate := Trunc(StrToDateTime(bg.Cells[bzq,r]))+1;
Open;
end;
if Data.Query1.RecordCount>0 then
begin
With Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('update t_sprkjl set sl = sl + :a,je = je+:f where kcmc =:b and spdm = :c and bzq >=:d and bzq <=:e');
ParamByName('a').AsInteger := StrToInt(bg.Cells[num,r])*hsgx;
ParamByName('b').AsString := Trim(bg.Cells[ckmc,r]);
ParamByName('c').AsString := Trim(bg.Cells[spdm,r]);
//交易金额
if Trim(ksb.Text)='应税内含' then
ParamByName('f').AsFloat := StrToFloat(bg.Cells[je,r])
else
ParamByName('f').AsFloat := StrToFloat(bg.Cells[je,r])+StrToFloat(bg.Cells[se,r]) ;
ParamByName('d').AsDate := Trunc(StrToDateTime(bg.Cells[bzq,r]));
ParamByName('e').AsDate := Trunc(StrToDateTime(bg.Cells[bzq,r]))+1;
ExecSQL;
end;
end
else
begin
With Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('insert t_sprkjl values(:a,:b,:c,:d, :e,default)');
ParamByName('a').AsString := Trim(bg.Cells[ckmc,r]);
ParamByName('b').AsString := Trim(bg.Cells[spdm,r]);
ParamByName('c').AsDate := StrToDateTime(bg.Cells[bzq,r]);
ParamByName('d').AsInteger := StrToInt(bg.Cells[num,r])*hsgx;
if Trim(ksb.Text)='应税内含' then
ParamByName('e').AsFloat := StrToFloat(bg.Cells[je,r])
else
ParamByName('e').AsFloat := StrToFloat(bg.Cells[je,r])+StrToFloat(bg.Cells[se,r]) ;
ExecSQL;
end;
end;
end;
With Data.Query1 do //修改厂商结款
begin
Close;
SQL.Clear;
SQL.Add('select * from t_csjk where csmc = :a');
ParamByName('a').AsString := Trim(cs.Text);
Open;
end;
if Data.Query1.RecordCount>0 then
begin
With Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('update t_csjk set yfje = yfje + :a where csmc = :b');
ParamByName('a').AsFloat := StrToFloat(zj.Text);
ParamByName('b').AsString := Trim(cs.Text);
ExecSQL;
end;
end
else
begin
With Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('Insert t_csjk values(:a,:b)');
ParamByName('a').AsString := Trim(cs.Text);
ParamByName('b').AsFloat := StrToFloat(zj.Text);
ExecSQL;
end;
end;
Data.Database.Commit;
Application.MessageBox('操作成功.','提示',64);
self.qxClick(Sender);
Except
Data.Database.Rollback;
Application.MessageBox('操作失败.','提示',64);
end;
end
else
Application.MessageBox('表格数据不能为空.','提示',64)
else
Application.MessageBox('数据项不能为空.','提示',64);
end;
procedure Tf_cgjh.bgDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
CellRect: TRect;
zdmc: String;
zdwidth,zdheight,i: integer;
begin
timer.Visible := False;
if Arow = 0 then
begin
zdheight:= 12;
For i := 0 to bg.ColCount-1 do
begin
CellRect := bg.CellRect(i,0);
Case i of
ckmc: zdmc := '仓库名称';
cklb: zdmc := '仓库类别';
spdm: zdmc := '商品代码';
spmc: zdmc := '商品名称';
jbdw: zdmc := '基本单位';
cgdw: zdmc := '采购单位';
num: zdmc := '数量';
zk: zdmc := '折扣';
dj: zdmc := '单价';
sl: zdmc := '税率';
se: zdmc := '税额';
wzrje: zdmc := '无折让金额';
je: zdmc := '交易金额';
bzq: zdmc := '保质期';
end;
zdwidth := length(Trim(zdmc));
bg.Canvas.Font.Color := clRed;
bg.Canvas.Brush.Color := bg.FixedColor;
if CellRect.Right <>0 then
begin
bg.Canvas.FillRect(CellRect);
bg.Canvas.TextOut(CellRect.Left+Trunc((bg.ColWidths[i]-zdwidth*6)/2),CellRect.Top+Trunc((bg.RowHeights[0] -zdheight)/2),zdmc );
end;
end;
end;
end;
procedure Tf_cgjh.bgClick(Sender: TObject);
begin
bg.Repaint;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -