?? jm_fhdsc.pas
字號:
{*******************************************************}
{ }
{ 營業員分票 }
{ }
{ 中軟金馬公司版權所有。2002.12前 }
{ }
{ 編制:中軟金馬郵資票品項目開發組 }
{ }
{ }
{*******************************************************}
(*
本模塊在地市pub營業員分票模塊,地市集郵票管理,地市集郵品管理,地市市場購入票里面調用。
*)
{
[與通信票對照]
表對照
A 通信票發貨單 -> 集郵票品發貨單
B 通信出庫票品 -> 集郵出庫票品
C 出庫計劃單表 -> 集郵票出庫計劃單表
D 出庫計劃單面值表 -
E 出庫計劃單票品表 -> 集郵出庫計劃單票品表
F 通信票品庫存 -> 集郵票品庫存
字段對照
B
圖代碼 -> 票品代碼
售價 -> 銷價
面值 -
原價 +
進價 +
F
庫存總枚數 -> 庫存總套數
售價 -> 銷價
面值 -
原價 +
進價 +
[有關表]
1.集郵票品發貨單、集郵出庫票品、集郵票出庫計劃單表、集郵出庫計劃單票品表
2.集郵票品庫存
[數據來源]
出庫單計劃號:集郵票品發貨單依據單號的GROUP BY
發貨單號: 集郵票品發貨單的發貨單號
發貨單主信息:集郵票品發貨單
發貨單詳細信息:集郵出庫票品
[功能]
增加:進入CHOOSE_FPD模塊,并根據出庫計劃單生成發貨單
[算法]
集郵票品發貨單
發貨單號:自動生成(此號要能區分票品類別)
依據單號:集郵票出庫計劃單表.出庫計劃單號
出庫性質:集郵票出庫計劃單表.出庫性質
去向單位:集郵出庫計劃單票品表.單位代碼
開單日期:NULL
在途狀態:0
勾核日期:NULL
結算狀態:0
裝票日期: NULL
封裝袋數:NULL
出庫日期:NULL
登記日期:NULL
主管人:NULL
庫管員:NULL
核對人:NULL
制表人: 當前操作員
備注:NULL
集郵出庫票品
票品代碼:集郵出庫計劃單票品表.票呂代碼
進價:集郵出庫計劃單票品表.進價
庫房號:NULL
庫位號:NULL
數量:集郵出庫計劃單票品表.分配數量
原價:集郵出庫計劃單票品表.原價
銷價:集郵出庫計劃單票品表.銷價
折扣:集郵出庫計劃單票品表.折扣
結算價:集郵出庫計劃單票品表.結算價
[更新有關表]
集郵票品發貨單、集郵出庫票品
[備注]
本模塊其實分兩部分(通過出庫日期OR庫管員判斷是否此過程):
1.發貨單生成
這個步驟不能對主管人、核對人操作
2.發貨單核對
這個步驟可以對主管人、核對人操作,這時需要操作如下:
A 記錄主管人、核對人、登記日期到集郵票品發貨單中
B 新增記錄到集郵票品庫存中,字段對應如下:
集郵票品庫存
票品代碼:集郵出庫票品.票品代碼
庫房代碼:集郵出庫票品.庫房號
進價:集郵出庫票品.進價
原價:集郵出庫票品.原價
銷價:集郵出庫票品.銷價
庫位號:集郵出庫票品.庫位號
票品類別:通過票品代碼判斷(?)
IF 出庫性質 = '待銷毀出庫' THEN
待銷毀庫存 = 待銷毀庫存 - 集郵出庫票品.數量
ELSE IF 出庫性質 = '預付出庫' THEN
預付庫存 = 預付庫存 - 集郵出庫票品.數量
ELSE 庫存總枚數 = 庫存總枚數 + 集郵出庫票品.數量
變更標志:NULL(?)
備注:NULL
包號版號表(庫存)
起始版號:包號版號表(出庫單).起始版本號
終止版號: 包號版號表(出庫單).終止版本號
C 登帳
總帳(集郵票品總帳):
分類帳(集郵票品明細分類帳):
分戶帳(集郵票品總分戶帳):
進銷存(集郵票品進銷存表):
}
unit JM_FHDSC;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
FORMBASE, ExtCtrls, ModiPanel, StdCtrls, Mask, DBCtrls, Grids, DBGrids,
ToolEdit, RXDBCtrl, Db, DBTables, RXCtrls, SqlStrings, RxQuery;
type
Tfrm_FHDSC = class(TFFormBase)
ModiPanel1: TModiPanel;
DS_fhd: TDataSource;
DS_ckpp: TDataSource;
Panel4: TPanel;
XttxTitle: TRxLabel;
Lbl_user: TLabel;
rxQry_fhd: TRxQuery;
RxQry_ckpp: TQuery;
UpdateSQL1: TUpdateSQL;
UpdateSQL2: TUpdateSQL;
RxQry_ckppFHDH: TStringField;
RxQry_ckppLB: TStringField;
RxQry_ckppPPDM: TStringField;
RxQry_ckppJJ: TFloatField;
RxQry_ckppSL: TFloatField;
RxQry_ckppYJ: TFloatField;
RxQry_ckppXJ: TFloatField;
RxQry_ckppJSJ: TFloatField;
RxQry_ckppZK: TFloatField;
RxQry_ckppZH: TStringField;
RxQry_ckppPPMC: TStringField;
Qry_kcsl: TQuery;
Panel2: TPanel;
Panel3: TPanel;
Panel5: TPanel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
DBGrid3: TDBGrid;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit6: TDBEdit;
DBDateEdit1: TDBDateEdit;
Panel1: TPanel;
Label8: TLabel;
DBG_fhd: TDBGrid;
CBo_checked: TCheckBox;
Rgp_ppfl: TRadioGroup;
RxQry_ckppKFDM: TStringField;
SqlStrings1: TSqlStrings;
procedure ModiPanel1BtnClick(Index: TBtnVisible);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Qry_jycxXJSetText(Sender: TField; const Text: string);
procedure Qry_jycxXJGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
procedure Qry_jycxJSJSetText(Sender: TField; const Text: string);
procedure Qry_jycxJSJGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
procedure Qry_jycxJJGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
procedure Qry_jycxJJSetText(Sender: TField; const Text: string);
procedure CBo_checkedClick(Sender: TObject);
procedure DBG_fhdDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure RxQry_ckppJJGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
procedure RxQry_ckppJJSetText(Sender: TField; const Text: string);
procedure RxQry_ckppXJGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
procedure RxQry_ckppXJSetText(Sender: TField; const Text: string);
procedure Rgp_ppflClick(Sender: TObject);
procedure RxQry_ckppBeforeInsert(DataSet: TDataSet);
private
{ Private declarations }
L_type: TIO_Type;
LB_type: string;
FDtState: TDataState;
function Save: Boolean;
procedure DoDeleteFHD;
procedure SetState(currdtState: TDataState);
property DtState: TDataState read FDtState write SetState;
function CheckKC: Integer; //檢測分配的票品 數量是否超出庫存
public
{ Public declarations }
queding: boolean;
ckdh: string;
Sarr: array[0..2] of string;
function Execute_FHDSC(const sysDB: TDataBase): Boolean;
procedure PPLB_StateChange; //票品類別改變
end;
var
frm_FHDSC: Tfrm_FHDSC;
procedure SHOW_MS_HTCK(FType: TIO_TYPE); //(后)后臺分配出庫
implementation
{$R *.DFM}
uses
datas,JM_data, pub,
JM_FHDSC_GETPP, JM_RKDRPT;
procedure SHOW_MS_HTCK(FType: TIO_TYPE); //(后)后臺分配出庫
begin
Application.CreateForm(Tfrm_FHDSC, frm_FHDSC);
with frm_FHDSC do
try
if Execute_FHDSC(data.DM) then
begin
L_Type := FType;
case L_type of
io_jyp:
begin
Rgp_ppfl.ItemIndex := 0;
lb_type := '0';
end;
io_yp:
begin
Rgp_ppfl.ItemIndex := 1;
lb_type := '1';
end;
io_grp:
begin
Rgp_ppfl.ItemIndex := 2;
lb_type := '2';
end;
end;
Cbo_checkedclick(nil);
Caption := Application.Title;
showmodal;
end;
finally
Release;
end;
end;
function Tfrm_FHDSC.Execute_FHDSC(const sysDB: TDataBase): Boolean;
begin
Result := true;
try
Lbl_user.Caption := ' 操作員:' + VG_UserName;
rxQry_fhd.Close;
rxQry_fhd.DataBaseName := sysDB.DatabaseName;
rxQry_ckpp.Close;
rxQry_ckpp.DataBaseName := sysDB.DatabaseName;
CBo_checked.Checked := true;
CBo_checkedClick(nil);
rxQry_ckpp.Open;
dtState := dtBrowse;
except
Result := false;
CHQMsgBox('不能打開<發貨單>表!');
end;
end;
function Tfrm_FHDSC.Save: Boolean;
begin
if CheckKC = 1 then
begin
Exit;
end;
Data.DM.StartTransaction;
try
RxQry_ckpp.ApplyUpdates;
data.DM.Commit;
SetState(dtBrowse);
Rgp_ppfl.Enabled := true;
except
data.DM.Rollback;
raise;
end;
RxQry_ckpp.CommitUpdates;
end;
procedure Tfrm_FHDSC.ModiPanel1BtnClick(Index: TBtnVisible);
var
t_type: TIO_TYPE;
BK: TbookMark;
jycx: string;
begin
inherited;
case index of
bnAdd:
begin
t_type := L_type;
with Tfrm_FHDSC_GETPP.Create(self) do
try
if Execute_FHDSC_GETPP(data.DM, t_type) then
ShowModal;
CBo_checkedClick(nil);
finally
Destroy;
end;
end;
bnDelete:
begin
if RxQry_fhd.IsEmpty then
exit;
if rxQry_fhd.FieldByName('GHRQ').AsString = '' then
begin
if CHQMsgBox('確定要刪除該發貨單嗎?', 2) = IDYES then
DoDeleteFHD;
end
else
begin
CHQMsgBox('營業員已經復核的發貨單不能刪除!');
exit;
end;
end;
bnEdit:
begin
if RxQry_ckpp.IsEmpty then
exit;
if rxQry_fhd.FieldByName('GHRQ').AsString = '' then
begin
RxQry_ckpp.Edit;
SetState(dtEdit);
Rgp_ppfl.Enabled := False;
end
else
begin
CHQMsgBox('營業員已經復核的發貨單不能修改!');
exit;
end;
end;
bnSave:
begin
Bk := RxQry_fhd.GetBookmark;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -