📄 lmp_rkfh.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 LMP_RKFH;
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, sqlstrings, RXCtrls;
type
TFrm_LMP_RKFH = class(TFFormBase)
ModiPanel1: TModiPanel;
Panel1: TPanel;
DBGrid2: TDBGrid;
Panel2: TPanel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit6: TDBEdit;
DBDateEdit1: TDBDateEdit;
Label10: TLabel;
UpdateSQL1: TUpdateSQL;
DataSource2: TDataSource;
qryRKDPP: TQuery;
UpdateSQL2: TUpdateSQL;
DataSource3: TDataSource;
qryBHBH: TQuery;
UpdateSQL4: TUpdateSQL;
DataSource5: TDataSource;
DBGrid4: TDBGrid;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
DBGrid3: TDBGrid;
qryRKD: TRxQuery;
BitBtn5: TBitBtn;
StoredProc1: TStoredProc;
Label12: TLabel;
qryRKDPPRKDH: TStringField;
qryRKDPPPPDM: TStringField;
qryRKDPPKFDM: TStringField;
qryRKDPPKWH: TStringField;
qryRKDPPMZ: TFloatField;
qryRKDPPSJ: TFloatField;
qryRKDPPSL: TFloatField;
qryRKDPPBZ: TStringField;
qryRKDPPZH: TStringField;
qryRKDPPTJC: TStringField;
qryRKDPPKFMC: TStringField;
Panel3: TPanel;
XttxTitle: TRxLabel;
DWMC: TLabel;
Label8: TLabel;
BitBtn7: TBitBtn;
DateEdit1: TDateEdit;
BitBtn6: TBitBtn;
DBEdit1: TDBEdit;
Qryban: TQuery;
QrybanTDM: TStringField;
QrybanBLSH: TFloatField;
QrybanBJC: TStringField;
DS_ban: TDataSource;
qryBHBHRKDH: TStringField;
qryBHBHPPDM: TStringField;
qryBHBHQSBH: TStringField;
qryBHBHZZBH: TStringField;
qryBHBHZH: TStringField;
qryBHBHTJC: TStringField;
qryBHBHBLSH: TFloatField;
qryBHBHbz: TStringField;
procedure ModiPanel1BtnClick(Index: TBtnVisible);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure qryBHBHAfterInsert(DataSet: TDataSet);
procedure BitBtn5Click(Sender: TObject);
procedure qryRKDUpdateError(DataSet: TDataSet; E: EDatabaseError;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure qryRKDPPUpdateError(DataSet: TDataSet; E: EDatabaseError;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure qryBHBHUpdateError(DataSet: TDataSet; E: EDatabaseError;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure qryRKDPPMZGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
procedure qryRKDPPMZSetText(Sender: TField; const Text: string);
procedure DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure qryRKDAfterScroll(DataSet: TDataSet);
private
{ Private declarations }
FDtState: TDataState;
function Save: Boolean;
procedure SetState(Value: TdataState);
procedure InitData;
function check(id: string): boolean;
public
{ Public declarations }
end;
function Show_LMP_RKFH: Boolean;
var
Frm_LMP_RKFH: TFrm_LMP_RKFH;
implementation
uses
datas, Pub,
LMP_RKFH_Print; {零枚票入库复核打印}
{$R *.DFM}
function Show_LMP_RKFH: Boolean;
begin
Result := false;
Application.CreateForm(TFrm_LMP_RKFH, Frm_LMP_RKFH);
with Frm_LMP_RKFH do
try
if CheckRight(Frm_LMP_RKFH, [ModiPanel1, BitBtn5, BitBtn6]) then
result := ShowModal = MB_OK;
finally
Free;
end;
end;
procedure TFrm_LMP_RKFH.SetState(Value: TdataState);
var
v_b_modiBHBH: boolean; //是否只修改包号版号(修改已复核过的出库单包号版号)
procedure SetControls(Value: Boolean);
begin
Panel1.Enabled := Value;
DBEdit1.ReadOnly := Value or v_b_modiBHBH;
DBDateEdit1.ReadOnly := Value or v_b_modiBHBH;
DBGrid4.ReadOnly := Value;
DBGrid3.ReadOnly := Value;
BitBtn1.Enabled := not (Value);
BitBtn2.Enabled := not (Value);
BitBtn5.Enabled := Value and not (qryRKD.IsEmpty or qryRKDPP.isempty);
BitBtn6.Enabled := Value and not (qryRKD.IsEmpty or qryRKDPP.isempty);
end;
begin
v_b_modiBHBH := false;
if not qryRKD.Active then
begin
FDtState := dtBrowse;
ModiPanel1.ChangeMode(FDtState = dtBrowse);
SetControls(FDtState = dtBrowse);
exit;
end;
if (Value in [dtEdit, dtInsert]) and
isChecked(io_txp, false, qryRKD.FieldbyName('rkdh').Asstring) then
begin
if qryRKD.FieldbyName('JZY').AsString <> VG_UserName then
begin
CHQMsgBox('对不起,您只能修改自己的入库单');
exit;
end
else
v_b_modiBHBH := true;
end;
FDtState := Value;
ModiPanel1.ChangeMode(FDtState = dtBrowse);
SetControls(FDtState = dtBrowse);
with qryRKD do
case FDtstate of
dtBrowse:
begin
{ qryRKDPP.Datasource := DataSource2;
qryBHBH.Datasource := DataSource2;}
end;
dtinsert:
begin
Append;
{ qryRKDPP.Datasource := nil;
qryBHBH.Datasource := nil;}
end;
dtedit:
begin
if not v_b_modiBHBH then
begin
{ qryRKDPP.Datasource := nil;
qryBHBH.Datasource := nil;}
Edit;
if FieldByName('RKRQ').AsString = '' then
FieldByName('RKRQ').AsDateTime := GetSYSDate;
end
else if qryBHBH.IsEmpty then
begin
qryRKDPP.First;
while not qryRKDPP.Eof do
begin
qryBHBH.Append;
qryBHBH.FieldByName('RKDH').Asstring := qryRKD.FieldByName('RKDH').Asstring;
qryBHBH.FieldByName('PPDM').Asstring := qryRKDPP.FieldByName('PPDM').Asstring;
qryBHBH.FieldByName('ZH').Asstring := qryRKDPP.FieldByName('ZH').Asstring;
qryBHBH.FieldByName('TJC').Asstring := qryRKDPP.FieldByName('TJC').Asstring;
qryBHBH.Post;
qryRKDPP.Next;
end;
end;
end;
end;
end;
function TFrm_LMP_RKFH.Save: Boolean;
begin
result := True;
with qryBHBH do {query}
begin
First;
while not Eof do
begin //RKDH, PPDM, QSBH, ZZBH
if (FieldByName('RKDH').Asstring = '') or (FieldByName('PPDM').Asstring = '')
or (FieldByName('QSBH').Asstring = '') or (FieldByName('ZZBH').Asstring = '') then
begin
CHQMsgBox('起始版号、终止版号不能为空!');
result := False;
Break;
end;
Next;
end;
end;
if not result then
exit;
with qryRKD do {query}
begin
Database.StartTransaction;
try
qryRKD.ApplyUpdates;
qryRKDPP.ApplyUpdates;
qryBHBH.ApplyUpdates;
Database.Commit;
except
if Database.InTransaction then
Database.RollBack;
if errMsg = '' then
raise
else
raise exception.Create(errMsg);
end;
end;
qryRKD.CommitUpdates;
qryRKDPP.CommitUpdates;
qryBHBH.CommitUpdates;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -