?? ss_grpkccsh.pas
字號(hào):
{*******************************************************}
{ }
{ 購入票庫存初始化 }
{ }
{ 中軟金馬公司版權(quán)所有。2002.12前 }
{ }
{ 編制:中軟金馬郵資票品項(xiàng)目開發(fā)組 }
{ }
{ }
{*******************************************************}
(*
本模塊在省級(jí)系統(tǒng)管理模塊里面調(diào)用。
*)
unit SS_GRPKCCSH;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, DBGridEhExport, SqlStrings, Db, DBTables, RxQuery, RXCtrls,
StdCtrls, Buttons, ExtCtrls, ModiPanel, Grids, DBGrids, RXDBCtrl, DBCtrls, ClipBrd,
FieldComboBox, ComCtrls, EHGrids, DBGridEh;
type
Tfrm_GRPKCCSH = class(TForm)
pnl_Init: TPanel;
Panel2: TPanel;
Label2: TLabel;
Label3: TLabel;
edt_Locate: TEdit;
RxLbl_Title: TRxLabel;
DWMC: TLabel;
ds_init: TDataSource;
pnl_Title: TPanel;
pnl_Bottom: TPanel;
bbtn_Cancel: TBitBtn;
bbtn_Save: TBitBtn;
bbtn_Edit: TBitBtn;
bbtn_Add: TBitBtn;
bbtn_Find: TBitBtn;
bbtn_Exit: TBitBtn;
bbtn_Replace: TBitBtn;
qry_init: TQuery;
upSQL_Init: TUpdateSQL;
qry_Tmp: TQuery;
fcb_KF: TFieldComboBox;
qry_initZH: TStringField;
qry_initTMC: TStringField;
qry_initTPMZ: TFloatField;
qry_initTPSJ: TFloatField;
qry_initJJ: TFloatField;
qry_initXJ: TFloatField;
qry_initTS: TFloatField;
qry_initZK: TFloatField;
qry_initJSJ: TFloatField;
qry_initKWH: TStringField;
qry_initTDM: TStringField;
qry_initTEMP: TFloatField;
qry_initPPDM: TStringField;
pnl_Hint: TPanel;
lbl_Search: TLabel;
bbtn_Print: TBitBtn;
pgb_State: TProgressBar;
lbl_State: TLabel;
sp_Init: TStoredProc;
qry_initJJJE: TFloatField;
qry_initXJJE: TFloatField;
qry_initMZJE: TFloatField;
rxdb_Init: TDBGridEh;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure bbtn_CancelClick(Sender: TObject);
procedure bbtn_FindClick(Sender: TObject);
procedure qry_initTSChange(Sender: TField);
procedure rxdb_Init1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure qry_initXJChange(Sender: TField);
procedure qry_initJJChange(Sender: TField);
procedure bbtn_EditClick(Sender: TObject);
procedure bbtn_AddClick(Sender: TObject);
procedure bbtn_SaveClick(Sender: TObject);
procedure qry_initZKChange(Sender: TField);
procedure qry_initJSJChange(Sender: TField);
procedure qry_initKWHChange(Sender: TField);
procedure bbtn_ReplaceClick(Sender: TObject);
procedure edt_LocateKeyPress(Sender: TObject; var Key: Char);
procedure qry_initBeforeInsert(DataSet: TDataSet);
procedure qry_initBeforeDelete(DataSet: TDataSet);
procedure FormShow(Sender: TObject);
procedure qry_initGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
procedure qry_initSetText(Sender: TField; const Text: string);
procedure bbtn_PrintClick(Sender: TObject);
procedure fcb_KFChange(Sender: TObject);
procedure rxdb_InitDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
procedure rxdb_InitGetFooterParams(Sender: TObject; DataCol,
Row: Integer; Column: TColumnEh; AFont: TFont;
var Background: TColor; var Alignment: TAlignment;
State: TGridDrawState; var Text: string);
private
{ Private declarations }
function Init_Public_Data: Boolean; {初始化公共數(shù)據(jù)}
function Judge_Modify: Boolean; {判斷是否能夠進(jìn)入修改狀態(tài),即初始化日期是否設(shè)定,以及是否進(jìn)入已經(jīng)結(jié)束}
function Show_Data: Boolean; {顯示初始化數(shù)據(jù)}
procedure Add_Init_Data; {新增同一票品的不同進(jìn)價(jià)}
procedure Set_Data; {批量設(shè)置進(jìn)價(jià)等}
procedure Set_ZK(Value: Double); {批量設(shè)置折扣}
procedure Set_JSJ(Value: Double; AGDZ: boolean = true); {批量設(shè)置結(jié)算價(jià),固定值(true)or進(jìn)價(jià)(false)}
procedure Set_JJ1(Value: Double; Over_Write: Boolean); {批量設(shè)置進(jìn)價(jià),依據(jù)折扣計(jì)算}
procedure Set_JJ2(Value: Double; Over_Write: Boolean); {批量設(shè)置進(jìn)價(jià),直接賦值}
procedure Set_XJ(Over_Write: Boolean); {批量設(shè)置銷價(jià)}
function Save_Init_Data: Boolean; {保存初始化數(shù)據(jù)}
function Test_JJ: Boolean; {判斷進(jìn)價(jià)是否存在相同的}
function Test_XJ: Boolean; {測試銷價(jià),是否在其他庫房中存在不同進(jìn)價(jià)}
function Delete_Cur_Record: Boolean; {刪除當(dāng)前為0的記錄}
function Update_Record: Boolean; {向數(shù)據(jù)庫中插入不為0的數(shù)據(jù)}
function Delete_Record: Boolean; {從數(shù)據(jù)庫中刪除為0的記錄}
function Call_StoreProc: Boolean; {調(diào)用存儲(chǔ)過程,更新其他表,本步驟不加在事務(wù)內(nèi),同時(shí)出錯(cuò)不顯式提示}
procedure Cancel_Init_Data; {取消保存初始化數(shù)據(jù),恢復(fù)原來的狀態(tài)}
procedure Set_State(State: Integer); {設(shè)置界面控件狀態(tài)}
procedure DisJE(AType: Integer); {設(shè)置金額顯示,0-進(jìn)價(jià)金額;1-銷價(jià)金額;2-面值金額}
public
{ Public declarations }
end;
function Show_GRPKCCSH: Boolean;
var
frm_GRPKCCSH: Tfrm_GRPKCCSH;
Edit_State: Integer; {指出當(dāng)前處于的狀態(tài),0:瀏覽,1:修改}
Find_SQL: string;
implementation
{$R *.DFM}
{集郵票、零枚票、集郵品、市場購入票 庫存初始化模塊,使用外連接進(jìn)行數(shù)據(jù)讀取,使用Query最后保存數(shù)據(jù)
調(diào)用四個(gè)查詢模塊進(jìn)行票品代碼的查詢,使用四個(gè)批量設(shè)置模塊進(jìn)行進(jìn)價(jià)、銷價(jià)、折扣、結(jié)算價(jià)等的處理
涉及數(shù)據(jù)庫表:
集郵票品庫存(記帳員)(TYS_JYPPKC)
集郵品品庫存(記帳員)(TYS_YPPKC)
零枚票品庫存(TKS_TXPPKC)
購入票品庫存(記帳員)(TYS_GRPPKC)
系統(tǒng)基本信息表(郵資票品信息表)(TB_YZPPXXB)
雜表(TGS_ZB)
石玉琢 2001.09.26補(bǔ)}
uses
SS_GRP_Init_PLSR, SS_GRP_Init_Search, Pub;
function Show_GRPKCCSH: Boolean;
begin
with Tfrm_GRPKCCSH.Create(Application) do
try
if Init_Public_Data then
ShowModal;
finally
free;
end;
Result := True;
end;
{-------------------------------------------------------------------------------}
{判斷是否能夠進(jìn)入修改狀態(tài),即初始化日期是否設(shè)定,以及是否進(jìn)入已經(jīng)結(jié)束}
function Tfrm_GRPKCCSH.Judge_Modify: Boolean;
begin
with qry_Tmp do
begin
Close;
SQL.Text := 'Select ZFXZ from TGS_ZB where DM=''grp_csh_n''';
Open;
if Trim(FieldByName('ZFXZ').AsString) = '' then
begin
CHQMsgBox('初始化日期沒有設(shè)定!請進(jìn)行初始化日期設(shè)定,然后才能夠進(jìn)行庫存初始化!');
Result := False;
Exit;
end;
Close;
SQL.Text := 'Select ZFXZ from TGS_ZB where DM=''grp_csh_y''';
Open;
if Trim(FieldByName('ZFXZ').AsString) = '' then
begin
CHQMsgBox('初始化日期沒有設(shè)定!請進(jìn)行初始化日期設(shè)定,然后才能夠進(jìn)行庫存初始化!');
Result := False;
Exit;
end;
Close;
SQL.Text := 'Select ZFXZ from TGS_ZB where DM=''grp_csh_js''';
Open;
if (UpperCase(Trim(FieldByName('ZFXZ').AsString)) = 'YY') or
(UpperCase(Trim(FieldByName('ZFXZ').AsString)) = 'Y') then
begin
CHQMsgBox('初始化已經(jīng)完成,現(xiàn)在只能進(jìn)行查看!');
Result := False;
Exit;
end;
end;
Result := True;
end;
{-------------------------------------------------------------------------------}
{初始化公共數(shù)據(jù)}
function Tfrm_GRPKCCSH.Init_Public_Data: Boolean;
begin
{添加庫房}
with qry_Tmp do
begin
Close;
SQL.Text := 'select a.KFDM,a.KFMC from TGS_KFB a,TGS_KFRYDZB b where a.KFDM=b.KFDM and b.YGDM=''' + VG_UserID + ''' order by a.KFDM';
Open;
if IsEmpty then
begin
CHQMsgBox('當(dāng)前用戶沒有操作庫房的權(quán)限!');
Result := False;
Exit;
end;
fcb_KF.ClearAll;
while not eof do
begin
fcb_KF.Items.Add(FieldByName('KFMC').AsString);
fcb_KF.FieldItems.Add(FieldByName('KFDM').AsString);
Next;
end;
fcb_KF.ItemIndex := 0
end;
Result := True;
end;
{設(shè)置界面控件狀態(tài)}
procedure Tfrm_GRPKCCSH.Set_State(State: Integer);
begin
Edit_State := State;
case State of
0: {瀏覽} {}
begin
fcb_KF.Enabled := True;
rxdb_Init.ReadOnly := True;
bbtn_Find.Enabled := True;
bbtn_Edit.Enabled := True;
bbtn_Replace.Enabled := False;
bbtn_Add.Enabled := False;
bbtn_Save.Enabled := False;
bbtn_Cancel.Enabled := False;
end;
1: {修改} {}
begin
fcb_KF.Enabled := False;
rxdb_Init.ReadOnly := False;
bbtn_Find.Enabled := False;
bbtn_Edit.Enabled := False;
bbtn_Replace.Enabled := True;
bbtn_Add.Enabled := True;
bbtn_Save.Enabled := True;
bbtn_Cancel.Enabled := True;
end;
2: {只能看,不能進(jìn)入任何修改狀態(tài)} {}
begin
fcb_KF.Enabled := True;
rxdb_Init.ReadOnly := True;
bbtn_Find.Enabled := True;
bbtn_Edit.Enabled := False;
bbtn_Replace.Enabled := False;
bbtn_Add.Enabled := False;
bbtn_Save.Enabled := False;
bbtn_Cancel.Enabled := False;
end;
end;
end;
{-------------------------------------------------------------------------------}
{顯示初始化數(shù)據(jù)}
{其中PPDM讀出用來判斷以前在數(shù)據(jù)庫中是否存在該記錄,Temp用來判斷是否修改,決定是否保存}
function Tfrm_GRPKCCSH.Show_Data: Boolean;
var
l_kfdm: string;
begin
l_kfdm := fcb_KF.FieldString;
with qry_init do
begin
Close;
SQL.Text := 'select b.ZH, b.TMC, b.TPMZ, b.TPSJ, a.JJ, a.XJ, a.TS, a.ZK, a.JSJ, a.KWH, b.TDM,0 Temp,a.PPDM,b.FXRQ, '#13#10 +
'a.JJ*a.TS JJJE, a.XJ*a.TS XJJE, b.TPMZ*a.TS MZJE from (Select KFDM,PPDM,JJ, XJ, TS, ZK, JSJ, KWH from TYS_GRPPKC where KFDM = ''' + l_kfdm + ''') a, TB_YZPPXXB b'#13#10 +
'where a.PPDM(+) = b.TDM ' + Find_SQL + ' order by b.TDM';
Open;
end;
Result := True;
end;
{-------------------------------------------------------------------------------}
{繪制DBGrid顏色,當(dāng)庫存大于0,則改變顏色}
procedure Tfrm_GRPKCCSH.rxdb_Init1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
end;
{==========================輸入時(shí)實(shí)時(shí)控制輸入選項(xiàng)===============================}
{屏蔽DBGrid自動(dòng)增加記錄的功能}
procedure Tfrm_GRPKCCSH.qry_initBeforeInsert(DataSet: TDataSet);
begin
Abort;
end;
{屏蔽DBGrid自動(dòng)刪除記錄的功能}
procedure Tfrm_GRPKCCSH.qry_initBeforeDelete(DataSet: TDataSet);
begin
Abort;
end;
{-------------------------------------------------------------------------------}
{庫存改變的時(shí)候,如果大于0,則設(shè)置當(dāng)前行為空色}
procedure Tfrm_GRPKCCSH.qry_initTSChange(Sender: TField);
var
Old_Value: Integer;
begin
if qry_initTS.AsInteger < 0 then
begin
CHQMsgBox('庫存數(shù)量不能為負(fù)!');
Old_Value := 0;
if qry_init.FieldByName('PPDM').AsString <> '' then
try
Old_Value := qry_initTS.OldValue;
except
end;
qry_initTS.AsInteger := Old_Value;
Abort;
end;
qry_init.FieldByName('TEMP').AsInteger := 1;
DisJE(0);
DisJE(1);
DisJE(2);
end;
{-------------------------------------------------------------------------------}
{對(duì)于銷價(jià),相同票品銷價(jià)必須相同}
procedure Tfrm_GRPKCCSH.qry_initXJChange(Sender: TField);
var
Old_Value: Double;
cur_pos: Pointer;
l_TDM: string;
l_XJ: double;
begin
{判斷銷價(jià)是否合法}
if qry_initXJ.AsFloat < 0 then
begin
CHQMsgBox('銷價(jià)不能為負(fù)!');
Old_Value := 0;
if qry_init.FieldByName('PPDM').AsString <> '' then
try
Old_Value := qry_initXJ.OldValue;
except
end;
qry_initXJ.OnChange := nil;
qry_initXJ.AsFloat := Old_Value;
qry_initXJ.OnChange := qry_initXJChange;
Abort;
end;
qry_init.FieldByName('TEMP').AsInteger := 1;
DisJE(1);
{統(tǒng)一銷價(jià)}
with qry_init do
begin
qry_initXJ.OnChange := nil;
cur_pos := GetBookmark;
try
l_XJ := FieldByName('XJ').AsFloat;
l_TDM := FieldByName('TDM').AsString;
DisableControls;
while not Eof do
begin
if FieldByName('TDM').AsString = l_TDM then
begin
Edit;
FieldByName('XJ').AsFloat := l_XJ;
FieldByName('TEMP').AsInteger := 1;
Next;
end
else
Break;
end;
GotoBookmark(cur_pos);
Prior;
while not Bof do
begin
if FieldByName('TDM').AsString = l_TDM then
begin
Edit;
FieldByName('XJ').AsFloat := l_XJ;
FieldByName('TEMP').AsInteger := 1;
Prior;
end
else
Break;
end;
finally
GotoBookmark(cur_pos);
FreeBookmark(cur_pos);
qry_initXJ.OnChange := qry_initXJChange;
EnableControls;
end;
end;
end;
{-------------------------------------------------------------------------------}
{判斷進(jìn)價(jià)的輸入}
procedure Tfrm_GRPKCCSH.qry_initJJChange(Sender: TField);
var
Old_Value: Double;
begin
{判斷進(jìn)價(jià)是否合法}
if qry_initJJ.AsFloat < 0 then
begin
CHQMsgBox('進(jìn)價(jià)不能為負(fù)!');
Old_Value := 0;
if qry_init.FieldByName('PPDM').AsString <> '' then
try
Old_Value := qry_initJJ.OldValue;
except
end;
qry_initJJ.OnChange := nil;
qry_initJJ.AsFloat := Old_Value;
qry_initJJ.OnChange := qry_initJJChange;
Abort;
end;
qry_init.FieldByName('TEMP').AsInteger := 1;
DisJE(0);
end;
procedure Tfrm_GRPKCCSH.DisJE(AType: Integer); {設(shè)置金額顯示,0-進(jìn)價(jià)金額;1-銷價(jià)金額;2-面值金額}
begin
case AType of
0: //進(jìn)價(jià)金額;
Qry_init.FieldByName('JJJE').AsFloat := Qry_init.FieldByName('JJ').AsFloat * Qry_init.FieldByName('TS').AsFloat;
1: //銷價(jià)金額;
Qry_init.FieldByName('XJJE').AsFloat := Qry_init.FieldByName('XJ').AsFloat * Qry_init.FieldByName('TS').AsFloat;
2: //面值金額
Qry_init.FieldByName('MZJE').AsFloat := Qry_init.FieldByName('TPMZ').AsFloat * Qry_init.FieldByName('TS').AsFloat;
end;
end;
{-------------------------------------------------------------------------------}
{折扣}
procedure Tfrm_GRPKCCSH.qry_initZKChange(Sender: TField);
var
Old_Value: Double;
begin
{判斷折扣是否合法}
if (qry_initZK.AsFloat < 0) or (qry_initZK.AsFloat > 100) then
begin
CHQMsgBox('折扣必須在0~100之間!');
Old_Value := 0;
if qry_init.FieldByName('PPDM').AsString <> '' then
try
Old_Value := qry_initZK.OldValue;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -