📄 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 + -