📄 sy_gryprkdsc.pas
字号:
{*******************************************************}
{ }
{ 入库单生成 }
{ }
{ 中软金马公司版权所有。2002.12前 }
{ }
{ 编制:中软金马邮资票品项目开发组 }
{ }
{ }
{*******************************************************}
(*
省级集邮品,省级市场购入票
地市集邮品,地市市场购入票
*)
{
[与零枚票对照]
表对照
A 零枚票发货单 -> 集邮票品发货单
B 零枚出库票品 -> 集邮出库票品
C 袋数重量表 -> 集邮袋数重量表
D 包号版号表(出库单) -> 集邮包号版号(出库单)
字段对照
B
图代码 -> 票品代码
售价 -> 销价
面值 -
原价 +
进价 +
D
进价 +
有关表:
集邮票品发货单、集邮出库票品、集邮袋数重量表、集邮包号版号(出库单)
数据来源:
出库单计划号:集邮票品发货单依据单号的GROUP BY
发货单号: 集邮票品发货单的发货单号
发货单主信息:集邮票品发货单
发货单详细信息:集邮出库票品
包袋:集邮袋数重量表
包号版本号:集邮包号版号(出库单)
功能:
算法:
1.输入的库房号必须在库房表中存在
2.对起始版号、终止版本号数据修改时要较验,即不能重复
3.当修改完成保存数据时,需要作如下操作:
A. 装票日期、封装袋数、出库日期、库管员、备注保存到集邮票品发货单中
修改集邮票品发货单的在途状态为'1'
B. 记录库存数据
零枚票品库存
票品代码:集邮出库票品.票品代码
库房代码:集邮出库票品.库房号
原价:集邮出库票品.原价
进价:集邮出库票品.进价
销价:集邮出库票品.销价
库位号:集邮出库票品.库位号
票品类别:通过票品代码判断(?)
IF 出库性质 = '待销毁出库' THEN
待销毁库存 = 待销毁库存 - 集邮出库票品.数量
ELSE IF 出库性质 = '预付出库' THEN
预付库存 = 预付库存 - 集邮出库票品.数量
ELSE 库存总枚数 = 库存总枚数 + 集邮出库票品.数量
变更标志:NULL(?)
备注:NULL
包号版号表(库存)
起始版号:包号版号表(出库单).起始版本号
终止版号: 包号版号表(出库单).终止版本号
C. 记帐
集邮票总帐表
集邮票总分户帐表 (集邮票总分户帐明细表)
集邮票明细分类帐
集邮票进发存明细帐表
集邮票明细分类帐(库管员)
集邮票品库存(库管)
集邮票品库存(业务部)
更新有关表:
集邮票品发货单、集邮出库票品、集邮袋数重量表、集邮包号版号(出库单)
备注:
对操作员要较验权限,不能浏览其它库房的入库单
}
unit SY_GRYPRKDSC;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
FORMBASE, ExtCtrls, ModiPanel, StdCtrls, Mask, DBCtrls, Grids, DBGrids,
CurrEdit, RXDBCtrl, ToolEdit, ComCtrls, Buttons, DBTables, Db,
RxQuery, RXCtrls, Spin, SqlStrings;
type
Pdwdm = ^Tdwdm;
Tdwdm = record
dwdm: string;
dwmc: string;
end;
Prkxz = ^Trkxz;
Trkxz = record
rkxzdm: string;
rkxzmc: string;
end;
Tfrm_GRYPRKDSC = class(TFFormBase)
ModiPanel1: TModiPanel;
Panel1: TPanel;
DBG_RKD: TDBGrid;
Panel2: TPanel;
Label2: TLabel;
Label3: TLabel;
Label5: TLabel;
DS_RKD: TDataSource;
qry_RKD: TQuery;
USQL_RKDGR: TUpdateSQL;
qry_RKDPP: TQuery;
USQL_RKDPPGR: TUpdateSQL;
StoredProc1: TStoredProc;
DS_RKDPP: TDataSource;
DBG_RKDPP: TDBGrid;
Qry_KFB: TQuery;
Panel_Head: TPanel;
XttxTitle: TRxLabel;
DWMC: TLabel;
Label6: TLabel;
SEd_Y: TSpinEdit;
Label9: TLabel;
SEd_M: TSpinEdit;
RG_yf: TRadioGroup;
DBLCBo_dw: TDBLookupComboBox;
Qry_dw: TQuery;
DS_dw: TDataSource;
DBDE_kdrq: TDBDateEdit;
DBEdt_zbr: TDBEdit;
qry_RKDPPZH: TStringField;
qry_RKDPPTMC: TStringField;
qry_RKDPPPPDM: TStringField;
qry_RKDPPJJ: TFloatField;
qry_RKDPPKFDM: TStringField;
qry_RKDPPYJ: TFloatField;
qry_RKDPPXJ: TFloatField;
qry_RKDPPSL: TFloatField;
qry_RKDPPBZ: TStringField;
qry_RKDPPRKDH: TStringField;
qry_RKDPPKWH: TStringField;
qry_RKDPPZK: TFloatField;
qry_RKDPPJSJ: TFloatField;
qry_RKDPPDW: TStringField;
qry_RKDPPJSJE: TFloatField;
qry_RKDPPYXJ: TFloatField;
qry_RKDPPkfmc: TStringField;
USQL_RKDYP: TUpdateSQL;
USQL_RKDPPYP: TUpdateSQL;
SqlS_RKD: TSqlStrings;
SqlS_RKDPP: TSqlStrings;
procedure ModiPanel1BtnClick(Index: TBtnVisible);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure SEd_YChange(Sender: TObject);
procedure qry_RKDPPJJGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
procedure qry_RKDPPJJSetText(Sender: TField; const Text: string);
procedure qry_RKDPPZKChange(Sender: TField);
procedure qry_RKDPPAfterInsert(DataSet: TDataSet);
private
{ Private declarations }
FDtState: TDataState;
io_Type: TIO_TYPE;
function Save: Boolean;
procedure SetState(Value: TdataState);
procedure DoDelFHD;
procedure Print_RKD;
public
{ Public declarations }
recordcount: integer;
sj: array of double;
xj: array of double;
tdm: array of string;
tmc: array of string;
zh: array of string;
queding: boolean;
editpd: boolean;
insertmode: boolean;
end;
function ExeSY_GRYPRKD(io_typ: TIO_TYPE; ATag: Integer): Boolean;
var
frm_GRYPRKDSC: Tfrm_GRYPRKDSC;
implementation
uses datas, pub, SHOW_PP, SJ_RKDDY, SJ_RichEdit;
{$R *.DFM}
function ExeSY_GRYPRKD(io_typ: TIO_TYPE; ATag: Integer): Boolean;
begin
Application.CreateForm(Tfrm_GRYPRKDSC, frm_GRYPRKDSC);
with frm_GRYPRKDSC do
try
Tag := ATag;
Caption := '邮资票品管理信息系统——' + pCaption[integer(io_typ)] + '业务';
if CheckRight(frm_GRYPRKDSC, [ModiPanel1]) then
begin
io_type := io_typ;
Qry_RKD.SQL := Sqls_RKD.FSqlText[io_typ];
Qry_RKDPP.SQL := Sqls_RKDPP.FSqlText[io_typ];
case io_type of
io_yp:
begin
qry_RKD.UpdateObject := USQL_RKDYP;
qry_RKDPP.UpdateObject := USQL_RKDPPYP;
end;
io_grp:
begin
qry_RKD.UpdateObject := USQL_RKDGR;
qry_RKDPP.UpdateObject := USQL_RKDPPGR;
end;
end;
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);
Qry_RKDPP.Open;
result := ShowModal = MB_OK;
end;
finally
Free;
end;
end;
procedure Tfrm_GRYPRKDSC.SetState(Value: TdataState);
var
i: integer;
procedure SetControls(Value: Boolean);
begin
Panel1.Enabled := Value;
RG_yf.Enabled := not value;
DBG_RKDPP.ReadOnly := Value;
DBLCBo_dw.ReadOnly := value;
DBDE_kdrq.ReadOnly := value;
DBEdt_zbr.ReadOnly := value;
end;
begin
FDtState := Value;
ModiPanel1.ChangeMode(FDtState = dtBrowse);
SetControls(FDtState = dtBrowse);
for i := 2 to 7 do
if Value = dtBrowse then
DBG_RKDPP.Columns[i].Color := cl3DLight
else
DBG_RKDPP.Columns[i].Color := clInfoBK;
end;
procedure Tfrm_GRYPRKDSC.DoDelFHD;
begin
try
data.DM.StartTransaction;
with qry_RKDPP do
begin
DataSource := nil;
DisableConstraints;
while not IsEmpty do
Delete;
EnableConstraints;
end;
Qry_RKDPP.ApplyUpdates;
Qry_RKD.Delete;
Qry_RKD.ApplyUpdates;
data.DM.Commit;
except
data.DM.Rollback;
raise Exception.Create('数据保存错误');
exit;
end;
Qry_RKD.CommitUpdates;
Qry_RKDPP.CommitUpdates;
Qry_RKDPP.DataSource := DS_RKD;
Qry_RKDPP.EnableConstraints;
SetState(dtBrowse);
end;
function Tfrm_GRYPRKDSC.Save: Boolean;
var
rkdh: string;
function DoRefreshRKDH: boolean;
begin
Result := true;
if Qry_RKD.FieldByName('RKDH').AsString = '' then
begin
with StoredProc1 do
begin
ParamByName('BILLID').Asstring := 's_rkd';
case io_type of
io_yp:
ParamByName('SORTCODE').Asstring := 'P';
io_grp:
ParamByName('SORTCODE').Asstring := 'G';
end;
ParamByName('DEPARTMENT').Asstring := VG_UnitID;
ParamByName('CYEAR').AsInteger := RG_yf.ItemIndex;
ExecProc;
rkdh := Params[0].asstring;
end;
Qry_RKD.FieldByName('RKDH').AsString := rkdh;
end;
with Qry_RKDPP do
begin
disablecontrols;
first;
while not Eof do
begin
edit;
FieldByName('RKDH').AsString := Qry_RKD.FieldByName('RKDH').AsString;
if (FieldByName('SL').AsFloat = 0) or (FieldByName('JJ').AsFloat = 0)
or not ((FieldByName('ZK').AsFloat = 0) xor (FieldByName('JSJ').AsFloat = 0)) then
begin
Result := false;
EnableControls;
CHQMsgBox('请设置入库票品的数量及价格!');
exit;
end;
Next;
end;
EnableControls;
end;
end;
begin
if Qry_RKD.FieldByName('LYDW').IsNull or Qry_RKD.FieldByName('KDRQ').IsNull then
begin
CHQMsgBox('来源单位和开单日期不能为空!');
exit;
end;
Qry_RKDPP.First;
while not Qry_RKDPP.Eof do
begin
if Qry_RKDPP.fieldbyname('kfdm').asstring = '' then
begin
CHQMsgBox('库房号不能为空!');
exit;
end;
Qry_RKDPP.Next;
end;
if not DoRefreshRKDH then
exit;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -