?? yp_rkfh.pas
字號:
{*******************************************************}
{ }
{ 集郵品入庫審核 }
{ }
{ 中軟金馬公司版權(quán)所有。2002.12前 }
{ }
{ 編制:中軟金馬項目開發(fā)組 }
{ }
{ }
{*******************************************************}
(*
本模塊在省級庫房管理模塊 省級集郵品、地市集郵票部分的入庫審核菜單 調(diào)用。
*)
{
[與零枚票對照]
表對照
A 零枚票發(fā)貨單 -> 集郵票品發(fā)貨單
B 零枚出庫票品 -> 集郵出庫票品
C 袋數(shù)重量表 -> 集郵袋數(shù)重量表
D 包號版號表(出庫單) -> 集郵包號版號(出庫單)
字段對照
B
圖代碼 -> 票品代碼
售價 -> 銷價
面值 -
原價 +
進(jìn)價 +
D
進(jìn)價 +
有關(guān)表:
集郵票品發(fā)貨單、集郵出庫票品、集郵袋數(shù)重量表、集郵包號版號(出庫單)
數(shù)據(jù)來源:
出庫單計劃號:集郵票品發(fā)貨單依據(jù)單號的GROUP BY
發(fā)貨單號: 集郵票品發(fā)貨單的發(fā)貨單號
發(fā)貨單主信息:集郵票品發(fā)貨單
發(fā)貨單詳細(xì)信息:集郵出庫票品
包袋:集郵袋數(shù)重量表
包號版本號:集郵包號版號(出庫單)
功能:
算法:
1.輸入的庫房號必須在庫房表中存在
2.對起始版號、終止版本號數(shù)據(jù)修改時要較驗,即不能重復(fù)
3.當(dāng)修改完成保存數(shù)據(jù)時,需要作如下操作:
A. 裝票日期、封裝袋數(shù)、出庫日期、庫管員、備注保存到集郵票品發(fā)貨單中
修改集郵票品發(fā)貨單的在途狀態(tài)為'1'
B. 記錄庫存數(shù)據(jù)
零枚票品庫存
票品代碼:集郵出庫票品.票品代碼
庫房代碼:集郵出庫票品.庫房號
原價:集郵出庫票品.原價
進(jìn)價:集郵出庫票品.進(jìn)價
銷價:集郵出庫票品.銷價
庫位號:集郵出庫票品.庫位號
票品類別:通過票品代碼判斷(?)
IF 出庫性質(zhì) = '待銷毀出庫' THEN
待銷毀庫存 = 待銷毀庫存 - 集郵出庫票品.數(shù)量
ELSE IF 出庫性質(zhì) = '預(yù)付出庫' THEN
預(yù)付庫存 = 預(yù)付庫存 - 集郵出庫票品.數(shù)量
ELSE 庫存總枚數(shù) = 庫存總枚數(shù) + 集郵出庫票品.數(shù)量
變更標(biāo)志:NULL(?)
備注:NULL
包號版號表(庫存)
起始版號:包號版號表(出庫單).起始版本號
終止版號: 包號版號表(出庫單).終止版本號
C. 記帳
集郵票總帳表
集郵票總分戶帳表 (集郵票總分戶帳明細(xì)表)
集郵票明細(xì)分類帳
集郵票進(jìn)發(fā)存明細(xì)帳表
集郵票明細(xì)分類帳(庫管員)
集郵票品庫存(庫管)
集郵票品庫存(業(yè)務(wù)部)
更新有關(guān)表:
集郵票品發(fā)貨單、集郵出庫票品、集郵袋數(shù)重量表、集郵包號版號(出庫單)
備注:
對操作員要較驗權(quán)限,不能瀏覽其它庫房的入庫單
}
unit YP_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_YP_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;
DBGrid3: TDBGrid;
qryRKD: TRxQuery;
BitBtn5: TBitBtn;
StoredProc1: TStoredProc;
Label12: TLabel;
Panel3: TPanel;
XttxTitle: TRxLabel;
DWMC: TLabel;
Label8: TLabel;
BitBtn7: TBitBtn;
DateEdit1: TDateEdit;
BitBtn6: TBitBtn;
qryRKDPPRKDH: TStringField;
qryRKDPPPPDM: TStringField;
qryRKDPPJJ: TFloatField;
qryRKDPPKFDM: TStringField;
qryRKDPPKWH: TStringField;
qryRKDPPSL: TFloatField;
qryRKDPPBZ: TStringField;
qryRKDPPZH: TStringField;
qryRKDPPMC: TStringField;
qryRKDPPKFMC: TStringField;
qryRKDPPPPDW: TStringField;
DBEdit1: TDBEdit;
procedure ModiPanel1BtnClick(Index: TBtnVisible);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
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 DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure qryRKDPPJJGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
procedure qryRKDPPJJSetText(Sender: TField; const Text: string);
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_YP_RKFH: Boolean;
var
Frm_YP_RKFH: TFrm_YP_RKFH;
implementation
uses datas, Pub;
{$R *.DFM}
function Show_YP_RKFH: Boolean;
begin
Result := false;
Application.CreateForm(TFrm_YP_RKFH, Frm_YP_RKFH);
with Frm_YP_RKFH do
try
if CheckRight(Frm_YP_RKFH, [ModiPanel1, BitBtn5, BitBtn6]) then
result := ShowModal = MB_OK;
finally
Free;
end;
end;
procedure TFrm_YP_RKFH.SetState(Value: TdataState);
procedure SetControls(Value: Boolean);
begin
Panel1.Enabled := Value;
DBEdit1.ReadOnly := Value;
DBDateEdit1.ReadOnly := Value;
DBGrid3.ReadOnly := Value;
BitBtn5.Enabled := Value and not (qryRKD.IsEmpty or qryRKDPP.isempty);
BitBtn6.Enabled := Value and not (qryRKD.IsEmpty or qryRKDPP.isempty);
end;
begin
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_yp, False, qryRKD.FieldbyName('rkdh').Asstring) then
begin
CHQMsgBox('該入庫單已經(jīng)復(fù)核,不能修改!');
exit;
end;
FDtState := Value;
ModiPanel1.ChangeMode(FDtState = dtBrowse);
SetControls(FDtState = dtBrowse);
with qryRKD do
case FDtstate of
dtBrowse:
begin
// qryRKDPP.Datasource := DataSource2;
end;
dtinsert:
begin
Append;
// qryRKDPP.Datasource := nil;
end;
dtedit:
begin
// qryRKDPP.Datasource := nil;
Edit;
if FieldByName('RKRQ').AsString = '' then
FieldByName('RKRQ').AsDateTime := GetSYSDate;
end;
end;
end;
function TFrm_YP_RKFH.Save: Boolean;
begin
result := True;
with qryRKD do {query}
begin
Database.StartTransaction;
try
qryRKD.ApplyUpdates;
qryRKDPP.ApplyUpdates;
Database.Commit;
except
result := False;
if Database.InTransaction then
Database.RollBack;
if errMsg = '' then
raise
else
raise exception.Create(errMsg);
end;
end;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -