?? sy_fhdsc.pas
字號:
{*******************************************************}
{ }
{ 發(fā)貨單生成 }
{ }
{ 中軟金馬公司版權所有。2002.12前 }
{ }
{ 編制:中軟金馬項目開發(fā)組 }
{ }
{ }
{*******************************************************}
(*
本模塊在省級集郵票管理、省級市場購入票管理、省級集郵品管理、省級零枚票管理、
地市集郵票管理、地市集郵品管理、地市市場購入票管理 七個模塊調(diào)用
修改記錄
1。發(fā)貨單生成時,按照排序碼生成發(fā)貨單 by jhshao 2003.05.07
2。將發(fā)貨單單調(diào)整為常用打印紙大小——打印邊界 by jhshao 2003.05.07
*)
unit SY_FHDSC;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
FORMBASE, ExtCtrls, ModiPanel, StdCtrls, Mask, DBCtrls, Grids, DBGrids,
ToolEdit, RXDBCtrl, Db, DBTables, Spin, RXCtrls, SqlStrings;
type
TfrmSY_FHD = class(TFFormBase)
ModiPanel1: TModiPanel;
Panel1: TPanel;
DBG_fhd: TDBGrid;
Panel2: TPanel;
DBG_ckpp: TDBGrid;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
DBEdit2: TDBEdit;
DBEdit4: TDBEdit;
Label7: TLabel;
DBEdit7: TDBEdit;
Label8: TLabel;
ComboBox1: TComboBox;
Qry_TMP: TQuery;
StoredProc1: TStoredProc;
DS_fhd: TDataSource;
Qry_FHD: TQuery;
Qry_CKPP: TQuery;
DS_ckpp: TDataSource;
Panel3: TPanel;
XttxTitle: TRxLabel;
DWMC: TLabel;
Label1: TLabel;
DBEdit1: TDBEdit;
DBEdit3: TDBEdit;
Label6: TLabel;
SEd_Y: TSpinEdit;
SEd_M: TSpinEdit;
Label9: TLabel;
Qry_tmp1: TQuery;
Qry_CKPPFHDH: TStringField;
Qry_CKPPPPDM: TStringField;
Qry_CKPPKFDM: TStringField;
Qry_CKPPKWH: TStringField;
Qry_CKPPZH: TStringField;
Qry_CKPPTMC: TStringField;
Qry_CKPPSL: TFloatField;
Qry_CKPPXJ: TFloatField;
Qry_CKPPJJ: TFloatField;
Qry_CKPPJSJ: TFloatField;
Qry_CKPPZK: TFloatField;
Qry_CKPPFXRQ: TDateTimeField;
Qry_CKPPJSJE: TFloatField;
Sqls_FKD: TSqlStrings;
Sqls_CKPP: TSqlStrings;
procedure ModiPanel1BtnClick(Index: TBtnVisible);
procedure FormCreate(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
procedure SEd_YChange(Sender: TObject);
procedure Qry_FHDAfterScroll(DataSet: TDataSet);
private
{ Private declarations }
io_Type: TIO_TYPE;
FDtState: TDataState;
procedure SetState(Value: TdataState);
function Save: Boolean;
function DoAPPCKD: boolean;
procedure FHDPrint(ALXDY, AXZ, ATD: boolean);
public
{ Public declarations }
queding: boolean;
yjdh: string;
BYorXY: integer; //本月出庫單(0)or下月(1)
vg_s_ckjhd, vg_s_ckjhpp, vg_s_fhd, vg_s_ckpp, vg_s_prc: string;
end;
function ExeSY_FHD(io_typ: TIO_TYPE; ATag: Integer): Boolean;
var
frmSY_FHD: TfrmSY_FHD;
implementation
{$R *.DFM}
uses datas, pub, Choose_FPD, SJ_FHDDY0, SJ_RICHEDIT, SJ_FHDDYDLG;
function ExeSY_FHD(io_typ: TIO_TYPE; ATag: Integer): Boolean;
procedure DoSetTOTYP;
begin
with frmSY_FHD do
case io_type of
io_jyp:
begin
vg_s_ckjhd := 'tys_jyckjhdb';
vg_s_ckjhpp := 'tys_jyckjhdppb';
vg_s_fhd := 'tks_jyfhd';
vg_s_ckpp := 'tks_jyckpp';
vg_s_prc := 'J';
end;
io_txp:
begin
vg_s_ckjhd := 'TYS_TXPCKJHDB';
vg_s_ckjhpp := 'TYS_TXCKJHDPPB';
vg_s_fhd := 'tks_txfhd';
vg_s_ckpp := 'tks_txckpp';
vg_s_prc := 'T';
// DBG_ckpp.Columns[3].Title.Caption := '面值';
// DBG_ckpp.Columns[4].Title.Caption := '售價';
end;
io_yp:
begin
vg_s_ckjhd := 'TYS_YPCKJHDB';
vg_s_ckjhpp := 'TYS_YPCKJHDPPB';
vg_s_fhd := 'tks_ypfhd';
vg_s_ckpp := 'tks_ypckpp';
vg_s_prc := 'P';
end;
io_grp:
begin
vg_s_ckjhd := 'TYS_GRPCKJHDB';
vg_s_ckjhpp := 'TYS_GRPCKJHDPPB';
vg_s_fhd := 'tks_grpfhd';
vg_s_ckpp := 'tks_grpckpp';
vg_s_prc := 'G';
end;
end;
end;
begin
Application.CreateForm(TfrmSY_FHD, frmSY_FHD);
with frmSY_FHD do
try
Tag := ATag;
Caption := '郵資票品管理信息系統(tǒng)——' + pCaption[integer(io_typ)] + '業(yè)務';
if CheckRight(frmSY_FHD, [Modipanel1]) then
begin
io_type := io_typ;
DoSetTOTYP;
Qry_FHD.SQL := Sqls_FKD.FSqlText[io_typ];
Qry_CKPP.SQL := Sqls_CKPP.FSqlText[io_typ];
SEd_Y.OnChange := nil;
SEd_M.OnChange := nil;
SEd_Y.Value := VG_Year;
SEd_M.Value := VG_Month;
SEd_Y.OnChange := SEd_YChange;
SEd_M.OnChange := SEd_YChange;
SEd_YChange(nil);
result := ShowModal = MB_OK;
end;
finally
Free;
end;
end;
function TfrmSY_FHD.DoAPPCKD: boolean;
const
{發(fā)貨單生成時,按照排序碼生成發(fā)貨單(SQL語句中增加關系單位表的關聯(lián)和依據(jù)單位表的排序碼進行排序) by jhshao 2003.05.07}
c_s_ckpp = 'select distinct a.ckjhdh,a.dwdm,b.ckxz,c.pxm from %s a, %s b, TGS_GXDWSJB c where a.dwdm=c.dwdm and a.ckjhdh=b.ckjhdh(+) and a.CKJHDH=''%s'' order by c.pxm';
// c_s_ckpp = 'select distinct a.ckjhdh,a.dwdm,b.ckxz from %s a, %s b where a.ckjhdh=b.ckjhdh(+) and a.CKJHDH=''%s''';
var
v_sql: string;
fhdh: string;
begin
Result := false;
data.DM.StartTransaction;
try
Open_Sql(Qry_tmp1, format(c_s_ckpp, [vg_s_ckjhpp, vg_s_ckjhd, yjdh]));
while not Qry_tmp1.Eof do
begin
with StoredProc1 do
begin
ParamByName('BILLID').Asstring := 's_fhd';
ParamByName('SORTCODE').Asstring := vg_s_prc;
ParamByName('DEPARTMENT').Asstring := Qry_tmp1.fieldbyname('dwdm').asstring;
ParamByName('CYEAR').AsInteger := BYorXY;
ExecProc;
fhdh := Params[0].asstring;
end;
v_sql := 'insert into ' + vg_s_fhd + '(FHDH,YJDH,CKXZ,FHDW,QXDW,KDRQ,ZTZT,JSZT,ZBR) values(''' + fhdh + ''',''' + yjdh + ''',''' + Qry_tmp1.fieldbyname('ckxz').asstring + ''',''' + VG_UnitID + ''',''' + Qry_tmp1.fieldbyname('dwdm').asstring + ''',trunc(sysdate),''0'',''0'',''' + VG_UserName + ''')';
AssignSqlStr(qry_tmp, v_sql);
qry_tmp.ExecSQL;
case io_type of
io_jyp, io_yp, io_grp:
v_sql := 'insert into ' + vg_s_ckpp + '(FHDH,PPDM,JJ,KFDM,SL,YJ,XJ,JSJ,ZK) select ''' + fhdh + ''', PPDM, JJ, KFDM, sum(FPSL), YJ, XJ, JSJ, ZK from ' + vg_s_ckjhpp + ' where CKJHDH=''' + yjdh + ''' and DWDM = ''' + Qry_tmp1.fieldbyname('dwdm').asstring + ''' group by PPDM, KFDM, JJ,YJ,XJ,JSJ,ZK';
io_txp:
v_sql := 'insert into ' + vg_s_ckpp + '(FHDH,TUDM,KFDM,SL,JJ,XJ,ZK,JSJ) select ''' + fhdh + ''', PPDM, KFDM, sum(FPSL), JJ, XJ, ZK, JSJ from ' + vg_s_ckjhpp + ' where CKJHDH=''' + yjdh + ''' and DWDM = ''' + Qry_tmp1.fieldbyname('dwdm').asstring + ''' group by PPDM, KFDM, JJ, XJ,JSJ,ZK';
end;
AssignSqlStr(qry_tmp, v_sql);
qry_tmp.ExecSQL;
Qry_tmp1.Next;
end;
v_sql := 'update ' + vg_s_ckjhd + ' set zt=''' + CG_YCL + ''' where ckjhdh=''' + yjdh + '''';
Exec_Sql(Qry_TMP, v_sql);
Result := true;
data.DM.Commit;
except
data.DM.Rollback;
end;
end;
procedure TfrmSY_FHD.SetState(Value: TdataState);
begin
FDtState := Value;
ModiPanel1.ChangeMode(FDtState = dtBrowse);
end;
function TfrmSY_FHD.Save: Boolean;
begin
end;
procedure TfrmSY_FHD.ModiPanel1BtnClick(Index: TBtnVisible); //add、print
var
vb_LXDY, vb_XZ, vb_TD: boolean; //連續(xù)打印、小紙、套打
begin
inherited;
case index of
bnAdd:
begin
queding := false;
ExeSY_FPD(io_type);
if queding then
if CHQMsgBox('確定要生成發(fā)貨單嗎', 2) = mrYes then
begin
if DoAPPCKD then
if SEd_M.Value = VG_Month then
begin
SEd_YChange(nil);
ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(yjdh);
ComboBox1Click(nil);
end;
end;
end;
bnDelete:
if Qry_FHD.IsEmpty then
begin
CHQMsgBox('沒有可刪除的數(shù)據(jù)!');
exit;
end;
bnEdit:
;
bnSave:
;
bnCancel:
;
bnPrint: {print}
begin
if Qry_fhd.IsEmpty then
exit;
queding := false;
SelFHDDYGS(vb_LXDY, vb_XZ, vb_TD);
if not queding then
exit;
if vb_LXDY then
begin
Qry_FHD.First;
while not Qry_FHD.Eof do
begin
FHDPrint(vb_LXDY, vb_XZ, vb_TD);
Qry_FHD.Next;
end;
end
else
FHDPrint(vb_LXDY, vb_XZ, vb_TD);
end;
bnClose:
Close;
end;
end;
procedure TfrmSY_FHD.FHDPrint(ALXDY, AXZ, ATD: boolean);
var
jycx: string;
begin
FrmK_JYFHDDY0 := TFrmK_JYFHDDY0.Create(Application);
Application.CreateForm(TFrm_RichEdit, Frm_RichEdit);
with FrmK_JYFHDDY0, Frm_richEdit do
try
QRLabel1.caption := pCaption[integer(io_type)] + ' 發(fā)貨通知單';
QRLabel25.Caption := Qry_fhd.fieldbyName('qxdw').AsString;
QRLabel14.Caption := '制表人:' + DBEdit4.Text;
case IO_type of
io_yp: jycx := 'select a.zh,a.mc tmc,''套''as dw,b.xj/100 xj,b.sl,b.xj*b.sl/100 zjje,decode(b.zk,0,b.jsj/100,b.zk) zk, b.JSJ/100 JSJ, b.SL*(b.xj*nvl(b.zk/100, 0)+nvl(b.jsj,0))/100 jsje,a.fxrq from tb_jyptxxb a ,tks_ypckpp b where a.tdm(+)=b.ppdm and b.fhdh=''' + DBEdit1.text + '''';
io_jyp: jycx := 'select a.zh,a.tmc,''套''as dw,b.xj/100 xj,b.sl,b.xj*b.sl/100 zjje,decode(b.zk,0,b.jsj/100,b.zk) zk,b.SL*(b.xj*nvl(b.zk/100, 0)+nvl(b.jsj,0))/100 jsje,a.fxrq,b.fhdh from tb_yzpptxxb a ,tks_jyckpp b where a.tdm(+)=b.ppdm and b.fhdh=''' + DBEdit1.text + '''';
io_txp: jycx := 'select a.zh,a.tmc,''枚''as dw,b.xj/100 xj,b.sl,b.xj*b.sl/100 zjje,decode(b.zk,0,b.jsj/100,b.zk) zk,b.SL*(b.xj*nvl(b.zk/100, 0)+nvl(b.jsj,0))/100 jsje,a.fxrq from tb_yzppxxb a ,tks_txckpp b where a.tdm=b.tudm and b.fhdh=''' + DBEdit1.text + '''';
io_grp: jycx := 'select a.zh,(a.tmc) tmc,b.dw,b.xj/100 xj,b.sl, b.xj*b.sl/100 zjje, decode(b.zk,0,b.jsj/100,b.zk) zk, b.SL*(b.xj*nvl(b.zk/100, 0)+nvl(b.jsj,0))/100 jsje,a.fxrq from tb_yzppxxb a, tks_grpckpp b where a.tdm=b.ppdm and b.fhdh=''' + DBEdit1.text + '''';
end;
Datacount := 0;
Qry_ckdayin.close;
Qry_ckdayin.sql.clear;
Qry_ckdayin.sql.add(jycx);
Qry_ckdayin.open;
DataCount := Qry_ckdayin.RecordCount;
sumzj := 0;
sumjsj := 0;
DetailLines := 0;
QRLabel8.Caption := DBEdit1.text;
QRLabel11.Caption := FormatDateTime('yyyy"年"mm"月"dd"日"', StrToDate(dbedit2.Text));
if ATD then
Tao_Print_Flag := True
else
Tao_Print_Flag := False;
if AXZ then
begin
{ Page.LeftMargin := 10;
Page.TopMargin := 20;
Page.RightMargin := 9;
Page.Length := 127;
Page.Width := 210;
Page.BottomMargin := 10;
SmallFlag := True}
Page.LeftMargin := 28;
Page.TopMargin := 19;
Page.RightMargin := 28;
Page.Length := 139.7;
Page.Width := 241.3;
Page.BottomMargin := 11;
SmallFlag := True;
PageFooterBand1.Height := 127;
end
else
begin
{將發(fā)貨單單調(diào)整為常用打印紙大小——打印邊界 by jhshao 2003.05.07
Page.LeftMargin := 10;
Page.TopMargin := 19;
Page.RightMargin := 9;
Page.Length := 305;
Page.Width := 210;
Page.BottomMargin := 10;
SmallFlag := False;}
Page.LeftMargin := 28;
Page.TopMargin := 19;
Page.RightMargin := 28;
Page.Length := 279.3;
Page.Width := 241.3;
Page.BottomMargin := 10;
SmallFlag := False;
PageFooterBand1.Height := 121;
end;
Prepare;
try
TotalPageCount := QRPrinter.PageCount;
finally
QRPrinter.Free;
end;
QRPrinter := nil;
if ALXDY then
FrmK_JYFHDDY0.Print
else
FrmK_JYFHDDY0.preview;
finally
FrmK_JYFHDDY0.Destroy;
Frm_RichEdit.Destroy;
end;
end;
procedure TfrmSY_FHD.FormCreate(Sender: TObject);
begin
inherited;
DWMC.Caption := '使用單位:' + VG_UnitName;
SetState(dtBrowse);
end;
procedure TfrmSY_FHD.ComboBox1Click(Sender: TObject);
var
fhdh: string;
begin
inherited;
with Qry_fhd do
begin
Close;
Params[0].AsString := combobox1.Text;
Open;
end;
if Qry_fhd.IsEmpty then
Qry_fhdAfterScroll(nil);
end;
procedure TfrmSY_FHD.SEd_YChange(Sender: TObject);
var
yjdh: string;
function Get2Mon(const AMon: string): string;
begin
result := AMon;
if Length(result) = 1 then
result := '0' + result;
end;
begin
inherited;
yjdh := 'select distinct YJDH from ' + vg_s_fhd + ' where to_char(KDRQ,''YYYYMM'')=''' + SEd_Y.Text + Get2Mon(SEd_M.Text) + '''';
InitList(combobox1.items, yjdh);
combobox1.ItemIndex := 0;
ComboBox1Click(self);
end;
procedure TfrmSY_FHD.Qry_FHDAfterScroll(DataSet: TDataSet);
var
ckpp: string;
begin
inherited;
if Qry_fhd.IsEmpty then
ckpp := 'zrjm'
else
ckpp := Qry_fhd.fieldbyname('fhdh').asstring;
with Qry_ckpp do
begin
Close;
Params[0].AsString := ckpp;
Open;
end;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -