?? sy_ck_jyp.pas
字號:
{*******************************************************}
{ }
{ 集郵出庫計劃單制定模塊 }
{ }
{ 中軟金馬公司版權所有。2002.06 }
{ }
{ 編制:楊俊 }
{ }
{ }
{*******************************************************}
(*
省級集郵票 ,地市集郵票管理
修改記錄: 將零枚票的單品種多去向模塊移至集郵品中,按照其思路方式,改成對集郵票
處理。
將當前模塊從用戶當前使用的版本的源代碼,復制到syz規范話過的省級程序源代碼中
楊俊 2003.5.8
===============================================================================*)
unit SY_CK_JYP;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls, RXCtrls, ToolEdit, CurrEdit, Mask, DBCtrls,
EHGrids, DBGridEh, FieldComboBox, Spin, ComCtrls, Db, DBTables, Grids,
DBGrids;
type
TFrm_SY_CK_JYP = class(TForm)
XttxTitle: TRxLabel;
Panel3: TPanel;
bbtn_Close: TBitBtn;
bbtn_Print: TBitBtn;
bbtn_QP: TBitBtn;
pgc_LM: TPageControl;
tbs_List: TTabSheet;
tbs_Detail: TTabSheet;
dbgEh_Detail: TDBGridEh;
Panel4: TPanel;
Label5: TLabel;
Label8: TLabel;
Label6: TLabel;
Label7: TLabel;
DBE_ZBR: TDBEdit;
DBE_ZDRQ: TDBEdit;
CE_KC: TCurrencyEdit;
dbg_List: TDBGridEh;
bbtn_Search: TBitBtn;
qry_List: TQuery;
ds_List: TDataSource;
qry_Detail: TQuery;
ds_Detail: TDataSource;
usql_Detail: TUpdateSQL;
usql_List: TUpdateSQL;
sp_DH: TStoredProc;
qry_Tmp: TQuery;
qry_DetailCKJHDH: TStringField;
qry_DetailDWDM: TStringField;
qry_DetailPPDM: TStringField;
qry_DetailKFDM: TStringField;
qry_DetailPPMC: TStringField;
qry_DetailMZ: TFloatField;
qry_DetailSJ: TFloatField;
qry_DetailZK: TFloatField;
qry_DetailJSJ: TFloatField;
qry_DetailFPSL: TFloatField;
qry_DetailFPSL_OLD: TFloatField;
qry_DetailSDATE: TDateTimeField;
qry_DetailDWMC: TStringField;
qry_DetailKFMC: TStringField;
qry_DetailJSJE: TFloatField;
qry_DetailCKZJE: TFloatField;
lbl_color_0: TLabel;
lbl_color_2: TLabel;
lbl_color_1: TLabel;
Label10: TLabel;
Label13: TLabel;
Label14: TLabel;
bbtn_CancelQP: TBitBtn;
Bevel2: TBevel;
dbnv_List: TDBNavigator;
Panel1: TPanel;
bbtn_Add: TBitBtn;
bbtn_Del: TBitBtn;
bbtn_Modify: TBitBtn;
bbtn_AddDW: TBitBtn;
bbtn_DeleteDW: TBitBtn;
bbtn_Save: TBitBtn;
bbtn_Cancel: TBitBtn;
Panel2: TPanel;
rg_Round: TRadioGroup;
chk_Round: TCheckBox;
rg_Round_Style: TRadioGroup;
Edit1: TEdit;
Label11: TLabel;
DBEdit2: TDBEdit;
Label2: TLabel;
DBEdit1: TDBEdit;
Label9: TLabel;
DBEdit3: TDBEdit;
Label12: TLabel;
pgc_SeleInfo: TPageControl;
tbs_SeleBGG: TTabSheet;
lbl_BZGG: TLabel;
cb_BZGG: TComboBox;
tbs_SeleMBMS: TTabSheet;
Label1: TLabel;
cb_BGG: TComboBox;
tbs_BCB: TTabSheet;
edt_PZR: TEdit;
procedure bbtn_AddClick(Sender: TObject);
procedure bbtn_AddDWClick(Sender: TObject);
procedure bbtn_SearchClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure rg_RoundClick(Sender: TObject);
procedure dbg_ListDblClick(Sender: TObject);
procedure bbtn_CancelClick(Sender: TObject);
procedure qry_ListAfterScroll(DataSet: TDataSet);
procedure qry_DetailBeforeDelete(DataSet: TDataSet);
procedure qry_DetailBeforeInsert(DataSet: TDataSet);
procedure bbtn_SaveClick(Sender: TObject);
procedure bbtn_ModifyClick(Sender: TObject);
procedure bbtn_DelClick(Sender: TObject);
procedure bbtn_QPClick(Sender: TObject);
procedure bbtn_DeleteDWClick(Sender: TObject);
procedure qry_DetailBeforePost(DataSet: TDataSet);
procedure qry_DetailFPSLValidate(Sender: TField);
procedure qry_DetailFPSLSetText(Sender: TField; const Text: String);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure dbg_ListDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
procedure qry_DetailMZGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure bbtn_CancelQPClick(Sender: TObject);
procedure bbtn_PrintClick(Sender: TObject);
procedure qry_DetailZKSetText(Sender: TField; const Text: String);
procedure qry_DetailJSJSetText(Sender: TField; const Text: String);
procedure chk_RoundClick(Sender: TObject);
procedure dbgEh_DetailGetFooterParams(Sender: TObject; DataCol,
Row: Integer; Column: TColumnEh; AFont: TFont;
var Background: TColor; var Alignment: TAlignment;
State: TGridDrawState; var Text: String);
procedure qry_DetailJSJGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure cb_BGGChange(Sender: TObject);
procedure cb_BZGGChange(Sender: TObject);
procedure qry_DetailFPSLGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
private
procedure SetState(A_Enabled: boolean); {設置界面可修改狀態}
procedure Add_CKJHD(A_Source_PP, A_Source_KF: TQuery); {新制定出庫計劃單,基本信息的讀入}
function Create_DH(A_BILLID, A_SORTCODE, A_DEPARTMENT,
A_CYEAR: string): string; {調用存儲過程,生成單號}
procedure Save_Info; {保存出庫信息}
function ShowTheoryKC(A_PPDM, A_JJ: string): Integer; {取理論庫存}
procedure GetGG(A_PPDM: string); {取得湊整的規格}
procedure SetRounding; {湊包湊版調用}
procedure SetRoundSL(A_Round, A_Round_Style, A_SingleDest: Integer); {分配數量的湊整處理}
function GetRoundNumber(A_source, A_SingleDest,
A_type: Integer): Integer; {返回湊整后的數據}
function Can_CK(var A_Caption: string): boolean; {是否可以出庫}
procedure AddDW(A_dbg: TDBGrid; a_PPDM: String); {新添加的單位}
procedure ShowList(A_ShowModal: Boolean; A_CKJHDH: string); {查詢條件模塊的調用,并且是否顯示窗體}
function GetFPSL_Total: Integer; {取計劃單中的分配總數}
{ Private declarations }
public
{ Public declarations }
end;
var
Frm_SY_CK_JYP: TFrm_SY_CK_JYP;
implementation
{$R *.DFM}
uses
Datas, pub, SY_CK_JYP_Add,
SY_CK_JYP_DW,
SY_CK_JYP_Sele,
SY_CK_JYP_Print;
var
VL_Ban_GG: Integer; {取得該票品的版的規格} {}
VL_CKJH: PRec_CKJH; {計劃單——查詢條件} {}
VL_CKJHDH: string; {用來判斷新增或者修改} {}
VL_TheoryKC, VL_FPSL_Modify: Integer; {不包括正在新增或者修改的分配數量的理論庫存、修改時未修改前的分配數量} {}
{TFrm_SY_CK_JYP}
VL_MBMS: TStringList; {每包枚數}
{-------------------------------------------------------------------------------}
{初始化}
procedure TFrm_SY_CK_JYP.FormCreate(Sender: TObject);
var
l_SysDate: TDate;
begin
l_sysDate := GetSysDate; {取服務器日期}
VL_MBMS := TStringlist.Create;
{初始狀態設置}
pgc_LM.ActivePageIndex := 0;
rg_RoundClick(nil);
SetState(False); {設置界面可修改狀態}
{查詢本周的計劃分配單}
New(VL_CKJH);
with VL_CKJH^ do
begin
JHDH.Checked := False; {計劃單號模糊查詢}
JHDH.Text := '';
RQ.Checked := True; {起止日期}
RQ.FromDate := l_SysDate - 7;
RQ.ToDate := l_SysDate;
SQL := ''
end;
ShowList(False, ''); {查詢條件模塊的調用,并且是否顯示窗體}
end;
{-------------------------------------------------------------------------------}
{釋放資源}
procedure TFrm_SY_CK_JYP.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
{詢問}
if bbtn_Save.Enabled then
if Application.MessageBox('正在對出庫計劃單進行修改,是否取消修改并且退出?', '詢問', MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON2) = mrNo then
begin
Action := caNone;
Exit;
end;
Dispose(VL_CKJH);
qry_Detail.Close;
qry_List.Close;
VL_MBMS.Clear;
end;
{-------------------------------------------------------------------------------}
{出庫計劃單的明細更新}
procedure TFrm_SY_CK_JYP.qry_ListAfterScroll(DataSet: TDataSet);
begin
(* 簽批和取消簽批在權限控制中處理
{是否可以進行簽批}
if qry_List.FieldByName('ZT').AsString = '0' then
bbtn_QP.Enabled := True
else
bbtn_QP.Enabled := False;
{是否可以進行取消簽批}
if qry_List.FieldByName('ZT').AsString = '2' then
bbtn_CancelQP.Enabled := True
else
bbtn_CancelQP.Enabled := False;
*)
{打開明細信息}
with qry_Detail do
begin
Close;
SQL.Text := ' select a.CKJHDH, a.DWDM, a.PPDM, a.KFDM, a.PPMC, a.JJ /100 JJ, a.XJ/100 XJ, a.ZK, ' +
' decode(a.JSJ,null, (a.ZK/100) * a.XJ* a.FPSL , 0, (a.ZK/100) * a.XJ* a.FPSL ,a.JSJ* a.FPSL)/100 JSJE, ' +
' a.XJ* a.FPSL/100 CKZJE, a.JSJ/100 JSJ, a.FPSL, a.FPSL FPSL_OLD , ' +
' a.SDATE, b.DWJC DWMC, c.KFMC from TYS_JYCKJHDPPB a, TGS_GXDWSJB b, TGS_KFB c ' +
' where a.DWDM = b.DWDM and c.KFDM = a.KFDM ' +
' and a.CKJHDH = ' + QuotedStr(qry_List.FieldByName('CKJHDH').AsString) +
' order by b.PXM ';
Open;
end;
{理論庫存}
ce_KC.Value := ShowTheoryKC(qry_Detail.FieldByName('PPDM').AsString, FloatToStr(qry_Detail.FieldByName('JJ').AsFloat * 100)); {不包括正在新增或者修改的分配數量的理論庫存}
VL_FPSL_Modify := GetFPSL_Total; {修改時未修改前的分配數量}
VL_TheoryKC := Trunc(ce_KC.Value) + VL_FPSL_Modify;
{批準人}
edt_PZR.Text := qry_List.FieldByName('PZR').AsString;
end;
{-------------------------------------------------------------------------------}
{不允許刪除}
procedure TFrm_SY_CK_JYP.qry_DetailBeforeDelete(DataSet: TDataSet);
begin
Abort;
end;
{-------------------------------------------------------------------------------}
{只允許程序插入數據}
procedure TFrm_SY_CK_JYP.qry_DetailBeforeInsert(DataSet: TDataSet);
begin
Abort;
end;
{-------------------------------------------------------------------------------}
{保存原有的分配數量}
procedure TFrm_SY_CK_JYP.qry_DetailBeforePost(DataSet: TDataSet);
begin
qry_Detail.Edit;
qry_Detail.FieldByName('FPSL_OLD').AsString := qry_Detail.FieldByName('FPSL').AsString;
{※※※※切不可用post語句※※※}
end;
{-------------------------------------------------------------------------------}
{出庫總金額和結算金額以元顯示}
procedure TFrm_SY_CK_JYP.dbgEh_DetailGetFooterParams(Sender: TObject;
DataCol, Row: Integer; Column: TColumnEh; AFont: TFont;
var Background: TColor; var Alignment: TAlignment; State: TGridDrawState;
var Text: String);
begin
if Trim(Text) = '' then
Exit;
try
if (DataCol = 7) or (DataCol = 8) then {出庫總金額和結算金額以元顯示}
Text := FormatFloat('¥#,##0.000', StrToFloat(Text))
else if DataCol = 6 then
Text := FormatFloat('#,##0', StrToFloat(Text));
except
end;
end;
{-------------------------------------------------------------------------------}
{面值,售價,出庫總金額,計算總金額以元顯示}
procedure TFrm_SY_CK_JYP.qry_DetailMZGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
if Trim(Sender.AsString) = '' then
Exit;
try
if DisplayText then {顯示狀態}
begin
if Sender.AsString <> '' then
Text := FormatFloat('¥#,##0.000', Sender.AsFloat);
end
else {輸入狀態}
Text := FormatFloat('#0.##', Sender.AsFloat)
except
end;
end;
{-------------------------------------------------------------------------------}
procedure TFrm_SY_CK_JYP.qry_DetailFPSLGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
if Trim(Sender.AsString) = '' then
Exit;
try
if DisplayText then {顯示狀態}
begin
if Sender.AsString <> '' then
Text := FormatFloat('#,##0', Sender.AsFloat);
end
else {輸入狀態}
Text := FormatFloat('#0.##', Sender.AsFloat)
except
end;
end;
{-------------------------------------------------------------------------------}
{折扣輸入時的合法性判斷,以及和結算價的互斥}
procedure TFrm_SY_CK_JYP.qry_DetailZKSetText(Sender: TField;
const Text: String);
var
l_SetTextEvent: TFieldSetTextEvent;
begin
l_SetTextEvent := qry_DetailZK.OnSetText;
qry_DetailZK.OnSetText := nil; {防止用鼠標點擊其他記錄時遞歸調用}
if Trim(Text) = '' then
begin
Sender.AsString := Text;
qry_DetailZK.OnSetText := l_SetTextEvent; {防止用鼠標點擊其他記錄時遞歸調用}
Exit;
end
else {結算價的互斥}
qry_Detail.FieldByName('JSJ').AsString := '0';
try
if (StrToFloat(Text) >= 1000) or (StrToFloat(Text) <= 0) then
Abort; {觸發abort異常}
Sender.AsString := Text;
{用折扣計算出結算金額}
with qry_Detail do
begin
Edit;
if (FieldByName('ZK').AsString <> '') and (FieldByName('FPSL').AsString <> '')
and (FieldByName('XJ').AsString <> '') then
FieldByName('JSJE').AsFloat := (FieldByName('ZK').AsFloat / 100) * FieldByName('FPSL').AsInteger
* FieldByName('XJ').AsFloat;
Post;
end;
except
Application.MessageBox('所輸入的折扣必須合法!', '提示', MB_ICONINFORMATION + mb_ok);
qry_DetailZK.OnSetText := l_SetTextEvent; {防止用鼠標點擊其他記錄時遞歸調用}
Abort;
end;
qry_DetailZK.OnSetText := l_SetTextEvent; {防止用鼠標點擊其他記錄時遞歸調用}
end;
{-------------------------------------------------------------------------------}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -