📄 ss_jypljzcsh.pas
字号:
{*******************************************************}
{ }
{ 集邮票明细帐累计值初始化 }
{ }
{ 中软金马公司版权所有。2002.12前 }
{ }
{ 编制:中软金马邮资票品项目开发组 }
{ }
{ }
{*******************************************************}
(*
本模块在省级系统管理模块里的集邮票,集邮品,零枚,购入票里面调用。
*)
{[与零枚票对照]
表对照
A 零枚票品库存 -> 集邮票品库存
B 包号版本号表(库存) -> 集邮包号版本号表(库存)
C 集邮票明细分类帐(库管员) +
D 零枚票明细分类帐 -> 集邮票明细分类帐
E 邮资票品图信息表 -> 邮资票品套信息表
字段对照
A
图代码 -> 票品代码
售价 -> 销价
面值 -
原价 +
进价 +
有关表:
集邮票品库存、集邮包号版本号表(库存)、集邮票明细分类帐(库管员)、集邮票明细分类帐
邮资票品套信息表、库房表
数据来源:
库房号: 库房表
列表1:集邮票品库存(按志号排序)
列表2:包号版本号表(库存)
功能:
算法:
集邮票品库存
票品代码:邮资票品图信息表.票品代码
库房代码:库房下拉框中选择
库位号:?
进价:?
原价:?
销价:?
库存总数:?
预付库存:?
待销毁库存:?
包号版本号表(库存)
起始版号:?
终止版号:?
集邮票明细分类帐
票品代码:集邮票品库存.票品代码
进价:集邮票品库存.进价
出入库单:'SYSTEM'
字:'初'
日期:系统启用日期
原价:集邮票品库存.原价
销价:集邮票品库存.销价
折扣: 1
原价余额:集邮票品库存.库存总数 * 集邮票品库存.原价
进价余额:集邮票品库存.库存总数 * 集邮票品库存.进价
销价余额:集邮票品库存.库存总数 * 集邮票品库存.销价
集邮票明细分类帐(库管员)
票品代码: 集邮票品库存.票品代码
库房号: 集邮票品库存.库房号
出入库单: 'SYSTEM'
字: '初'
日期: 系统启用日期
单位代码: 'SYSTEM'
结存数量: 集邮票品库存.库存总数
以上都必需在一个事务中完成。
更新有关表:
集邮票品库存、包号版本号表(库存)、集邮票总帐表、集邮票明细分类帐
备注:
初始化完成后不能再修改,通过初始化杂表判断是否完成
}
unit SS_JYPLJZCSH;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
FORMBASE, ExtCtrls, ModiPanel, StdCtrls, Mask, ToolEdit, Grids, DBGrids,
RXDBCtrl, Db, DBTables, Buttons, RxQuery, sqlstrings, RXCtrls,
Menus, DBGridExport;
type
Tfrm_JYPLJZCSH = class(TFFormBase)
ModiPanel1: TModiPanel;
RxDBGrid1: TRxDBGrid;
Panel1: TPanel;
Edit1: TEdit;
Label3: TLabel;
UpdateSQL1: TUpdateSQL;
DataSource1: TDataSource;
qryYZPPTXXB: TRxQuery;
UpdateSQL2: TUpdateSQL;
UpdateSQL3: TUpdateSQL;
UpdateSQL4: TUpdateSQL;
SqlStrings: TSqlStrings;
Panel11: TPanel;
RxLabel1: TRxLabel;
DWMC: TLabel;
Label1: TLabel;
procedure ModiPanel1BtnClick(Index: TBtnVisible);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure cmbKFHChange(Sender: TObject);
procedure qryYZPPTXXBAfterOpen(DataSet: TDataSet);
procedure qryYZPPTXXBUpdateError(DataSet: TDataSet; E: EDatabaseError;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
private
{ Private declarations }
FDtState: TDataState;
procedure SetState(Value: TdataState);
function Save: Boolean;
procedure InitData;
procedure SLFldChg(Sender: TField); //计算字段——增加、减少金额
public
{ Public declarations }
end;
function Show_JYPLJZCSH(t_typ: TIO_TYPE; const SenderTag: Integer): Boolean;
var
frm_JYPLJZCSH: Tfrm_JYPLJZCSH;
implementation
uses datas,Pub;
{$R *.DFM}
var
l_typ: TIO_TYPE;
function Show_JYPLJZCSH(t_typ: TIO_TYPE; const SenderTag: Integer): Boolean;
begin
result := False;
l_typ := t_typ;
Application.CreateForm(Tfrm_JYPLJZCSH, frm_JYPLJZCSH); {TFFormBase1, FFormBase1}
with frm_JYPLJZCSH do {FFormBase1}
try
Tag := SenderTag;
if CheckRight(frm_JYPLJZCSH, [ModiPanel1]) then
begin
Caption := CYZPPTIT;
DWMC.Caption := '使用单位:' + VG_UnitName;
RxLabel1.Caption := pCaption[integer(l_typ)] + '明细帐累计值初始化';
result := ShowModal = MB_OK;
end;
finally
Free;
end;
end;
procedure Tfrm_JYPLJZCSH.SetState(Value: TdataState);
procedure SetControls;
begin
RxDBGrid1.ReadOnly := (FDtState = dtBrowse);
ModiPanel1.FButtons[bnEdit].Enabled := (FDtState = dtBrowse) and not (InitOver(l_typ, 1) = 1);
ModiPanel1.FButtons[bnDelete].Enabled := not (FDtState = dtBrowse);
end;
begin
FDtState := Value;
ModiPanel1.ChangeMode(FDtState = dtBrowse);
SetControls;
with qryYZPPTXXB do
case FDtstate of
dtBrowse: ;
dtinsert: Append; {append}
dtedit: Edit; {edit}
end;
end;
function Tfrm_JYPLJZCSH.Save: Boolean;
begin
with qryYZPPTXXB do
begin
Database.StartTransaction;
try
ApplyUpdates;
Database.Commit;
except
if Database.InTransaction then Database.RollBack;
if errMsg = '' then
raise
else
raise exception.Create(errMsg);
end;
SetState(dtBrowse);
result := True;
end;
end;
procedure Tfrm_JYPLJZCSH.ModiPanel1BtnClick(Index: TBtnVisible);
begin
inherited;
case index of
bnEdit:
if not qryYZPPTXXB.IsEmpty then
SetState(dtEdit);
bnSave: Save;
bnCancel:
if CHQMsgBox('取消编辑, 确定吗?', 2) = IDYES then
begin
qryYZPPTXXB.Cancelupdates; {query}
SetState(dtBrowse);
end;
bnPrint:
PrintDBGrid(RxDBGrid1, RxLabel1.Caption);
bnClose: Close;
end;
end;
procedure Tfrm_JYPLJZCSH.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
if (FDtstate in [dtInsert, dtEdit]) then
case CHQMsgBox(MSG_EXITSAVE, 3) of
IDYES:
if not Save then Action := caNone;
IDCANCEL: Action := caNone;
end;
end;
procedure Tfrm_JYPLJZCSH.FormCreate(Sender: TObject);
var
upObject: array[io_jyp..io_grp] of TUpdateSQL;
begin
inherited;
ModiPanel1.FButtons[bnEdit].Tag := 201;
if qryYZPPTXXB.Active then qryYZPPTXXB.Close;
upObject[l_typ] := UpdateSQL1;
upObject[io_txp] := UpdateSQL2;
upObject[io_yp] := UpdateSQL3;
upObject[io_grp] := UpdateSQL4;
Caption := pCaption[integer(l_Typ)] + '明细帐累计值初始化';
qryYZPPTXXB.SQL := SqlStrings.FSqlText[l_typ];
qryYZPPTXXB.UpdateObject := upObject[l_typ];
with RxDBGrid1 do
{ if l_typ = io_txp then
begin
Columns.Delete(3);
Columns.Delete(8);
Columns.Delete(7);
Columns[2].Title.Caption := '面值';
Columns[5].Title.Caption := '增加金额';
Columns[6].Title.Caption := '减少金额';
Columns[5].FieldName := 'ZJJE';
Columns[6].FieldName := 'JSJE';
Columns[5].ReadOnly := true;
Columns[6].ReadOnly := true;
end
else
begin
Columns[6].ReadOnly := true;
Columns[7].ReadOnly := true;
end; }
InitData;
SetState(dtBrowse);
end;
procedure Tfrm_JYPLJZCSH.Edit1Change(Sender: TObject);
begin
if Edit1.Text <> '' then
qryYZPPTXXB.Locate('ZH', Edit1.Text, [loCaseInsensitive, loPartialKey]);
end;
procedure Tfrm_JYPLJZCSH.InitData;
begin
qryYZPPTXXB.Open;
end;
procedure Tfrm_JYPLJZCSH.cmbKFHChange(Sender: TObject);
begin
inherited;
InitData;
end;
procedure Tfrm_JYPLJZCSH.SLFldChg(Sender: TField);
begin
with qryYZPPTXXB do
if Sender.FieldName = 'ZJSL' then
{ case l_typ of
io_txp:
FieldByName('ZJJE').AsFloat := FieldByName('ZJSL').AsFloat * FieldByName('JJ').AsFloat;
else }
begin
FieldByName('JJZJJE').AsFloat := FieldByName('ZJSL').AsFloat * FieldByName('JJ').AsFloat;
FieldByName('XJZJJE').AsFloat := FieldByName('ZJSL').AsFloat * FieldByName('XJ').AsFloat;
end
{end}
else
{ case l_typ of
io_txp:
FieldByName('JSJE').AsFloat := FieldByName('JSSL').AsFloat * FieldByName('JJ').AsFloat;
else }
begin
FieldByName('JJJSJE').AsFloat := FieldByName('JSSL').AsFloat * FieldByName('JJ').AsFloat;
FieldByName('XJJSJE').AsFloat := FieldByName('JSSL').AsFloat * FieldByName('XJ').AsFloat;
end
{end}
end;
procedure Tfrm_JYPLJZCSH.qryYZPPTXXBAfterOpen(DataSet: TDataSet);
begin
inherited;
with DataSet do
begin
TNumericField(FieldByName('JJ')).OnGetText := nDisplay.GetText;
TNumericField(FieldByName('JJ')).OnSetText := nDisplay.SetText;
TNumericField(FieldByName('XJ')).OnGetText := nDisplay.GetText;
{ if l_typ = io_txp then
begin
TNumericField(FieldByName('ZJJE')).OnGetText := nDisplay.GetText;
TNumericField(FieldByName('ZJJE')).OnSetText := nDisplay.SetText;
TNumericField(FieldByName('JSJE')).OnGetText := nDisplay.GetText;
TNumericField(FieldByName('JSJE')).OnSetText := nDisplay.SetText;
end
else
begin }
TNumericField(FieldByName('JJJSJE')).OnGetText := nDisplay.GetText;
TNumericField(FieldByName('JJJSJE')).OnSetText := nDisplay.SetText;
TNumericField(FieldByName('XJJSJE')).OnGetText := nDisplay.GetText;
TNumericField(FieldByName('XJJSJE')).OnSetText := nDisplay.SetText;
TNumericField(FieldByName('JJZJJE')).OnGetText := nDisplay.GetText;
TNumericField(FieldByName('JJZJJE')).OnSetText := nDisplay.SetText;
TNumericField(FieldByName('XJZJJE')).OnGetText := nDisplay.GetText;
TNumericField(FieldByName('XJZJJE')).OnSetText := nDisplay.SetText;
{end;}
TNumericField(FieldByName('JSSL')).DisplayFormat := '#,##0';
TNumericField(FieldByName('ZJSL')).DisplayFormat := '#,##0';
TNumericField(FieldByName('JSSL')).OnChange := SLFldChg;
TNumericField(FieldByName('ZJSL')).OnChange := SLFldChg;
end;
end;
procedure Tfrm_JYPLJZCSH.qryYZPPTXXBUpdateError(DataSet: TDataSet;
E: EDatabaseError; UpdateKind: TUpdateKind;
var UpdateAction: TUpdateAction);
begin
inherited;
case GetErrCode(DataSet, E, ErrMsg) of
Err_NoMasterRec: errMsg := errMsg + '&_&' + Format(MST_NOREC, ['', '', '']);
Err_HasDetailRec: errMsg := errMsg + '&_&' + Format(DTL_EXSTREC, ['']);
Err_RecDouble: errMsg := errMsg + '&_&' + Format(DBL_REC, ['']);
Err_NotNull: errMsg := errMsg + '&_&' + Format(NOTNULL, ['']);
else
errMsg := errMsg + '&_&' + OTHERERROR;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -