?? sy_txprkdbl.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. 記帳
集郵票總帳表
集郵票總分戶帳表 (集郵票總分戶帳明細表)
集郵票明細分類帳
集郵票進發存明細帳表
集郵票明細分類帳(庫管員)
集郵票品庫存(庫管)
集郵票品庫存(業務部)
更新有關表:
集郵票品發貨單、集郵出庫票品、集郵袋數重量表、集郵包號版號(出庫單)
備注:
對操作員要較驗權限,不能瀏覽其它庫房的入庫單
修改記錄
1。一張單子的總結算金額自動計算 by jhshao 2003.05.07
}
unit SY_TXPRKDBL;
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;
type
Pdwdm = ^Tdwdm;
Tdwdm = record
dwdm: string;
dwmc: string;
end;
Prkxz = ^Trkxz;
Trkxz = record
rkxzdm: string;
rkxzmc: string;
end;
Tfrm_TXPRKDBL = class(TFFormBase)
ModiPanel1: TModiPanel;
Panel1: TPanel;
DBG_fhd: TDBGrid;
Pnl_edit: TPanel;
Label3: TLabel;
Label5: TLabel;
DS_fhd: TDataSource;
DS_fhpp: TDataSource;
DBG_fhpp: TDBGrid;
Query1: TQuery;
Label4: TLabel;
Qry_fhpp: TQuery;
Panel4: TPanel;
XttxTitle: TRxLabel;
DWMC: TLabel;
Label1: TLabel;
Label2: TLabel;
DBM_bz: TDBMemo;
Qry_fhd: TQuery;
USQL_fhd: TUpdateSQL;
USQL_fhpp: TUpdateSQL;
DBDE_kdrq: TDBDateEdit;
DBEdt_fhdh: TDBEdit;
DBEdt_zbr: TDBEdit;
DBEdt_jsje: TDBEdit;
Label6: TLabel;
Label7: TLabel;
DBLCBo_dw: TDBLookupComboBox;
DBLCBo_ckxz: TDBLookupComboBox;
Qry_dw: TQuery;
DS_dw: TDataSource;
DS_ckxz: TDataSource;
Qry_ckxz: TQuery;
Qry_fhppFHDH: TStringField;
Qry_fhppTUDM: TStringField;
Qry_fhppCKZS: TFloatField;
Qry_fhppMZ: TFloatField;
Qry_fhppSJ: TFloatField;
Qry_fhppZK: TFloatField;
Qry_fhppJSJ: TFloatField;
Qry_fhppZH: TStringField;
Qry_fhppTMC: TStringField;
Qry_fhppJSJE: TFloatField;
Qry_fhdFHDH: TStringField;
Qry_fhdDWDM: TStringField;
Qry_fhdDWMC: TStringField;
Qry_fhdCKXZ: TStringField;
Qry_fhdQXDW: TStringField;
Qry_fhdKDRQ: TDateTimeField;
Qry_fhdZTZT: TStringField;
Qry_fhdZBR: TStringField;
Qry_fhdJSJE: TFloatField;
Qry_fhdBZ: TStringField;
Qry_fhdCZBZ: TStringField;
procedure ModiPanel1BtnClick(Index: TBtnVisible);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure Qry_fhppMZGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
procedure Qry_fhppMZSetText(Sender: TField; const Text: string);
procedure Qry_fhppZKChange(Sender: TField);
procedure Qry_fhppJSJEChange(Sender: TField);
procedure Qry_fhdJSJEGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure Qry_fhdJSJESetText(Sender: TField; const Text: String);
private
{ Private declarations }
FDtState: TDataState;
procedure Save;
procedure SetState(Value: TdataState);
procedure DoDelFHD;
{新增,遍歷Qry_fhpp計算整個單子的結算金額 by jhshao 2003.05.09}
function GetJSJE_Total: double;
public
{ Public declarations }
recordcount: integer;
zh: array of string;
mc: array of string;
tdm: array of string;
mz: array of double;
sj: array of double;
queding: boolean;
editpd: boolean;
insertmode: boolean;
save1: boolean;
rkdh: string;
Saved: Boolean;
end;
function Show_TXPRKDBL: Boolean;
var
frm_TXPRKDBL: Tfrm_TXPRKDBL;
implementation
uses datas, pub, SHOW_TYP;
{$R *.DFM}
function Show_TXPRKDBL: Boolean;
begin
Application.CreateForm(Tfrm_TXPRKDBL, frm_TXPRKDBL);
with frm_TXPRKDBL do
try
if CheckRight(frm_TXPRKDBL, [Modipanel1]) then
result := ShowModal = MB_OK;
finally
Free;
end;
end;
procedure Tfrm_TXPRKDBL.SetState(Value: TdataState);
var
i: integer;
procedure SetControls(Value: Boolean);
begin
DBG_fhd.Enabled := Value;
Panel1.Enabled := Value;
DBG_fhpp.ReadOnly := Value;
DBLCBo_dw.ReadOnly := Value;
DBLCBo_ckxz.ReadOnly := Value;
DBEdt_fhdh.ReadOnly := Value;
DBDE_kdrq.ReadOnly := Value;
DBEdt_jsje.ReadOnly := Value;
DBEdt_zbr.ReadOnly := Value;
DBM_bz.ReadOnly := Value;
end;
begin
FDtState := Value;
ModiPanel1.ChangeMode(FDtState = dtBrowse);
SetControls(FDtState = dtBrowse);
for i := 3 to 6 do
if Value = dtBrowse then
DBG_fhpp.Columns[i].Color := cl3DLight
else
DBG_fhpp.Columns[i].Color := clInfoBK;
end;
procedure Tfrm_TXPRKDBL.DoDelFHD;
begin
try
data.DM.StartTransaction;
with Qry_fhpp do
begin
DataSource := nil;
DisableConstraints;
while not IsEmpty do
Delete;
EnableConstraints;
end;
Qry_fhpp.ApplyUpdates;
Qry_fhd.Delete;
Qry_fhd.ApplyUpdates;
data.DM.Commit;
except
data.DM.Rollback;
raise Exception.Create('數據保存錯誤');
exit;
end;
Qry_fhd.CommitUpdates;
Qry_fhpp.CommitUpdates;
Qry_fhpp.DataSource := DS_fhd;
Qry_fhpp.EnableConstraints;
SetState(dtBrowse);
end;
procedure Tfrm_TXPRKDBL.Save;
function DoRefreshFHDH: boolean;
begin
Result := true;
AssignSQLstr(data.Qry_Static, 'select FHDH from TK_TXFHD where FHDH=''' + DBEdt_fhdh.Text + '''');
data.Qry_Static.Open;
if not data.Qry_Static.IsEmpty then
begin
Result := false;
CHQMsgBox('該發貨單號已存在!');
DBEdt_fhdh.SetFocus;
exit;
end;
with Qry_fhpp do
begin
disablecontrols;
first;
while not Eof do
begin
edit;
FieldByName('FHDH').AsString := Qry_fhd.FieldByName('FHDH').AsString;
if (FieldByName('CKZS').AsFloat = 0) or (FieldByName('SJ').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_fhd.FieldByName('FHDH').IsNull or Qry_fhd.FieldByName('DWDM').IsNull then
begin
CHQMsgBox('發貨單號和來源單位不能為空!');
exit;
end;
if Qry_fhpp.FieldByName('FHDH').AsString = #9 then
if not DoRefreshFHDH then
exit;
try
data.DM.StartTransaction;
Qry_fhd.FieldByName('DWMC').AsString := DBLCBo_dw.Text;
Qry_fhd.FieldByName('CZBZ').AsString := '1';
Qry_fhd.FieldByName('ZTZT').AsString := '1';
Qry_fhd.ApplyUpdates;
Qry_fhpp.ApplyUpdates;
data.DM.Commit;
except
data.DM.Rollback;
exit;
end;
Qry_fhd.CommitUpdates;
Qry_fhpp.CommitUpdates;
if Qry_fhpp.DataSource = nil then
Qry_fhpp.DataSource := DS_fhd;
SetState(dtBrowse);
end;
procedure Tfrm_TXPRKDBL.ModiPanel1BtnClick(Index: TBtnVisible);
var
i: integer;
begin
inherited;
case index of
bnAdd:
begin
queding := false;
ExeSY_RKDBL_XZTXPP;
if queding then
begin
Qry_fhd.Append;
Qry_fhd.FieldByName('QXDW').AsString := VG_UnitID;
insertmode := true;
for i := 0 to recordcount - 1 do
begin
Qry_fhpp.Append;
Qry_fhpp.FieldByName('FHDH').asstring := #9;
Qry_fhpp.FieldByName('TUDM').asstring := tdm[i];
Qry_fhpp.FieldByName('TMC').AsString := mc[i];
Qry_fhpp.FieldByName('ZH').AsString := zh[i];
Qry_fhpp.FieldByName('MZ').AsFloat := mz[i];
Qry_fhpp.FieldByName('SJ').AsFloat := sj[i];
{新增,用于一張單子的總結算金額自動計算,有遍歷計算故要設置Qry_fhpp為編輯狀態 by jhshao 2003.05.09}
Qry_fhpp.Edit;
Qry_fhpp.post;
end;
insertmode := false;
SetState(dtEdit);
Qry_fhpp.DataSource := nil;
end
else
SetState(dtBrowse);
end;
bnDelete:
begin
if Qry_fhd.IsEmpty then
begin
CHQMsgBox('沒有可刪除的數據!');
exit;
end;
if CHQMsgBox('確定要刪除記錄嗎?', 2) = IDYES then
begin
DoDelFHD;
end;
end;
bnEdit:
begin
if Qry_fhd.IsEmpty then
begin
CHQMsgBox('沒有可修改的數據!');
exit;
end;
SetState(dtEdit);
DBEdt_fhdh.ReadOnly := true;
Qry_fhpp.DataSource := nil;
Qry_fhd.Edit;
Qry_fhpp.Edit;
end;
bnSave:
Save;
bnCancel:
if CHQMsgBox('取消編輯, 確定嗎?', 2) = IDYES then
try
Qry_fhd.CancelUpdates;
Qry_fhpp.CancelUpdates;
Qry_fhpp.EnableControls;
Qry_fhpp.DataSource := DS_fhd;
finally
SetState(dtBrowse);
end;
bnClose:
Close;
end;
end;
procedure Tfrm_TXPRKDBL.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
Action := caFree;
if (FDtstate in [dtInsert, dtEdit]) then
case CHQMsgBox('數據已經編輯,需要保存嗎?', 3) of
IDYES:
if not Saved then Action := caNone;
IDCANCEL: Action := caNone;
end;
end;
procedure Tfrm_TXPRKDBL.FormCreate(Sender: TObject);
begin
inherited;
XttxTitle.Caption := '入庫依據單補錄';
SetState(dtBrowse);
DWMC.Caption := '使用單位:' + VG_UnitName;
Qry_fhd.Open;
Qry_fhpp.Open;
Qry_dw.Open;
Qry_ckxz.Open;
end;
procedure Tfrm_TXPRKDBL.Qry_fhppMZGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
begin
inherited;
CurrGetText(Sender, Text, DisplayText);
end;
procedure Tfrm_TXPRKDBL.Qry_fhppMZSetText(Sender: TField;
const Text: string);
begin
inherited;
CurrSetText(Sender, Text);
end;
procedure Tfrm_TXPRKDBL.Qry_fhppZKChange(Sender: TField);
begin
inherited;
with Qry_fhpp do
begin
if Sender.FieldName = 'JSJ' then
begin
if Sender.AsFloat <> 0 then
FieldByName('ZK').AsFloat := 0;
end;
if Sender.FieldName = 'ZK' then
begin
if Sender.AsFloat <> 0 then
FieldByName('JSJ').AsFloat := 0;
end;
Edit;
FieldByName('JSJE').AsFloat := FieldByName('CKZS').AsFloat * (FieldByName('SJ').AsFloat * FieldByName('ZK').AsFloat / 100 + FieldByName('JSJ').AsFloat);
end;
end;
{新增,遍歷Qry_fhpp計算整個單子的結算金額 by jhshao 2003.05.09}
function Tfrm_TXPRKDBL.GetJSJE_Total: double;
var
l_jsje: double;
l_dbgPlace: TBookMark;
begin
l_jsje := 0;
{取計劃單中的分配總數}
with Qry_fhpp do
begin
DisableControls;
l_dbgPlace := GetBookMark;
First;
while not Eof do
begin
l_jsje := l_jsje + FieldByName('JSJE').AsFloat;
Next;
end;
EnableControls;
GotoBookMark(l_dbgPlace);
FreeBookMark(l_dbgPlace);
end;
Result := l_jsje;
end;
procedure Tfrm_TXPRKDBL.Qry_fhppJSJEChange(Sender: TField);
begin
{新增,調用GetJSJE_Total計算整個單子的結算金額 by jhshao 2003.05.09}
inherited;
try
Qry_fhd.FieldByName('JSJE').AsFloat := GetJSJE_Total;
finally
end;
end;
procedure Tfrm_TXPRKDBL.Qry_fhdJSJEGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
inherited;
CurrGetText(Sender, Text, DisplayText);
end;
procedure Tfrm_TXPRKDBL.Qry_fhdJSJESetText(Sender: TField;
const Text: String);
begin
inherited;
CurrSetText(Sender, Text);
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -