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