?? ckjh_jjw.pas
字號:
{*******************************************************}
{ }
{ 計劃外分配單指定 }
{ }
{ 中軟金馬公司版權所有。2002.12 }
{ }
{ 編制:楊俊 }
{ }
{ }
{*******************************************************}
(*
集郵票管理
思路步驟:
{在進入詳細列表的時候,需要將庫存數據寫入列表,備用}
PS_GetSYTS{計算理論庫存} 不包括當前分配單的,所以顯示的時候需要減去當前分配單的數量
庫存顯示的計算方法為 不包括當前分配單獨庫存-該單當前分配的數量
將當前模塊從用戶當前使用的版本的源代碼,復制到syz規范話過的省級程序源代碼中
楊俊 2003.5.8
*)
unit CKJH_JJW;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
RXCtrls, FieldComboBox, StdCtrls, ExtCtrls, Buttons, ToolEdit, CurrEdit,
Mask, DBGrids, DBCtrls, EHGrids, DBGridEh, ComCtrls, Db, DBTables,
Grids;
type
TFrm_CKJH_JJW = class(TForm)
XttxTitle: TRxLabel;
pgc_JY: TPageControl;
tbs_List: TTabSheet;
Bevel2: TBevel;
lbl_color_0: TLabel;
lbl_color_2: TLabel;
lbl_color_1: TLabel;
Label10: TLabel;
Label13: TLabel;
Label14: TLabel;
dbg_List: TDBGridEh;
tbs_Detail: TTabSheet;
dbgEh_Detail: TDBGridEh;
Panel4: TPanel;
Label5: TLabel;
Label8: TLabel;
Label6: TLabel;
Label7: TLabel;
DBE_ZBR: TDBEdit;
DBE_ZDRQ: TDBEdit;
edt_PZR: TEdit;
Panel1: TPanel;
bbtn_Add: TBitBtn;
bbtn_Del: TBitBtn;
bbtn_Modify: TBitBtn;
bbtn_AddPP: TBitBtn;
bbtn_DeletePP: TBitBtn;
bbtn_Save: TBitBtn;
bbtn_Cancel: TBitBtn;
Panel2: TPanel;
Label11: TLabel;
Label2: TLabel;
Label12: TLabel;
rg_Round: TRadioGroup;
rg_Round_Style: TRadioGroup;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
pgc_SeleInfo: TPageControl;
tbs_SeleBGG: TTabSheet;
lbl_BZGG: TLabel;
cb_BZGG: TComboBox;
tbs_SeleMBMS: TTabSheet;
Label1: TLabel;
cb_BGG: TComboBox;
tbs_BCB: TTabSheet;
Panel3: TPanel;
bbtn_Close: TBitBtn;
bbtn_Print: TBitBtn;
bbtn_QP: TBitBtn;
bbtn_Search: TBitBtn;
bbtn_CancelQP: TBitBtn;
sp_DH: TStoredProc;
usql_List: TUpdateSQL;
ds_List: TDataSource;
qry_List: TQuery;
qry_Detail: TQuery;
ds_Detail: TDataSource;
usql_Detail: TUpdateSQL;
qry_Tmp: TQuery;
dbnv_List: TDBNavigator;
qry_DetailCKJHDH: TStringField;
qry_DetailDWDM: TStringField;
qry_DetailPPDM: TStringField;
qry_DetailKFDM: TStringField;
qry_DetailPPMC: TStringField;
qry_DetailJJ: TFloatField;
qry_DetailXJ: TFloatField;
qry_DetailZK: TFloatField;
qry_DetailJSJE: TFloatField;
qry_DetailCKZJE: TFloatField;
qry_DetailJSJ: TFloatField;
qry_DetailFPSL: TFloatField;
qry_DetailFPSL_OLD: TFloatField;
qry_DetailSDATE: TDateTimeField;
qry_DetailDWMC: TStringField;
qry_DetailKFMC: TStringField;
Panel5: TPanel;
chk_KDQSRQ: TCheckBox;
chk_KDJZRQ: TCheckBox;
chk_DH: TCheckBox;
edt_DH: TEdit;
de_KDQSRQ: TDateEdit;
de_KDJZRQ: TDateEdit;
DBEdit1: TDBEdit;
medt_KC: TCurrencyEdit;
procedure FormCreate(Sender: TObject);
procedure qry_ListAfterScroll(DataSet: TDataSet);
procedure qry_DetailAfterScroll(DataSet: TDataSet);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure bbtn_AddClick(Sender: TObject);
procedure rg_RoundClick(Sender: TObject);
procedure qry_DetailBeforePost(DataSet: TDataSet);
procedure rg_Round_StyleClick(Sender: TObject);
procedure cb_BZGGChange(Sender: TObject);
procedure cb_BGGChange(Sender: TObject);
procedure qry_DetailFPSLSetText(Sender: TField; const Text: String);
procedure qry_DetailFPSLValidate(Sender: TField);
procedure bbtn_SaveClick(Sender: TObject);
procedure bbtn_DelClick(Sender: TObject);
procedure bbtn_ModifyClick(Sender: TObject);
procedure bbtn_DeletePPClick(Sender: TObject);
procedure bbtn_AddPPClick(Sender: TObject);
procedure pgc_JYChange(Sender: TObject);
procedure bbtn_SearchClick(Sender: TObject);
procedure bbtn_QPClick(Sender: TObject);
procedure bbtn_CancelQPClick(Sender: TObject);
procedure bbtn_PrintClick(Sender: TObject);
procedure dbg_ListDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
procedure bbtn_CancelClick(Sender: TObject);
procedure qry_DetailBeforeInsert(DataSet: TDataSet);
procedure qry_DetailZKSetText(Sender: TField; const Text: String);
procedure qry_DetailJSJSetText(Sender: TField; const Text: String);
procedure dbg_ListDblClick(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_DetailJJGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure qry_DetailFPSLGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
private
{ Private declarations }
VL_CanPost: Boolean;
procedure Set_State(IsActive: Boolean); {設置頁面狀態}
procedure Add_FPInfo(a_DWDM: String; a_SourceQuery: TQuery);
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 Save_Info; {保存數據}
function Create_DH(A_BILLID, A_SORTCODE, A_DEPARTMENT,
A_CYEAR: string): string; {調用存儲過程,生成單號}
procedure Add_WYTSJ(a_DWDM: String; a_Query: TQuery; a_DbGrid: TDBGrid); {添加無怨頭數據}
procedure Get_PPKCInfo; {得到當前票品的庫存情況}
public
{ Public declarations }
end;
var
Frm_CKJH_JJW: TFrm_CKJH_JJW;
implementation
uses Datas, pub, CKJH_JJW_AddPP, CKJH_JJW_AddPP2, SY_CKJHDCX_RPT, SJ_RICHEDIT;
var
VL_State: Integer; {0 正常 1修改狀態}
VL_Ban_GG: Integer; {取得該票品的版的規格} {}
VL_QLDH: String;
VL_CKJHDH: String;
VL_PPDMList, VL_PPKCList,VL_ZXTS: TStringList;
{$R *.DFM}
{-------------------------------------------------------------------------------}
{創建窗體,顯示默認的查詢 默認顯示本周數據}
procedure TFrm_CKJH_JJW.FormCreate(Sender: TObject);
var
l_Date: TDateTime;
begin
l_Date := GetSysDate;
VL_PPDMList := TStringList.Create;
VL_PPKCList := TStringList.Create;
VL_ZXTS := TStringList.Create ;
de_KDJZRQ.Date := l_Date;
de_KDQSRQ.Date := l_Date - 7;
bbtn_Search.Click;
Set_State(False); {設置界面可修改狀態}
pgc_JY.ActivePageIndex := 0;
VL_CanPost := True;
end;
{-------------------------------------------------------------------------------}
{關閉}
procedure TFrm_CKJH_JJW.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
qry_Detail.Close;
qry_List.Close;
VL_PPDMList.Free;
VL_PPKCList.Free;
VL_ZXTS.Free ;
end;
{-------------------------------------------------------------------------------}
{查詢數據}
procedure TFrm_CKJH_JJW.bbtn_SearchClick(Sender: TObject);
var
l_sql: String;
begin
l_sql := ' select distinct b.CKJHDH, b.CKXZ, d.RCKXZMC, b.ZBR, b.PZR, b.ZDRQ, b.BZ, b.ZT, c.DWJC,a.DWDM ' +
' from TYS_JYCKJHDPPB a, TYS_JYCKJHDB b, TGS_GXDWSJB c,TGS_JRCKXZDM d where a.DWDM=c.DWDM and d.RCKXZDM=b.CKXZ and a.CKJHDH = b.CKJHDH and b.CKJHDH like ''JW%'' ';
if chk_KDQSRQ.Checked and (de_KDQSRQ.Date <> 0) then
l_sql := l_SQL + ' and b.ZDRQ >= to_Date(''' + FormatDateTime('YYYY-MM-DD', de_KDQSRQ.Date) + ''',''YYYY-MM-DD'') ';
if chk_KDJZRQ.Checked and (de_KDJZRQ.Date <> 0) then
l_sql := l_SQL + ' and b.ZDRQ <= to_Date(''' + FormatDateTime('YYYY-MM-DD', de_KDJZRQ.Date) + ''',''YYYY-MM-DD'') ';
if chk_DH.Checked then
l_sql := l_sql + ' and a.CKJHDH like ' + QuotedStr('%' + UpperCase(Trim(edt_DH.Text)) + '%');
l_sql := l_SQL + ' order by b.CKJHDH ';
with qry_List do
begin
Close;
SQL.Text := l_SQL;
Open;
end;
end;
{-------------------------------------------------------------------------------}
{顯示明細信息}
procedure TFrm_CKJH_JJW.qry_ListAfterScroll(DataSet: TDataSet);
begin
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;
{清楚原來的庫存}
VL_PPDMList.Clear;
VL_PPKCList.Clear;
VL_CKJHDH := qry_List.FieldByName('CKJHDH').AsString;
edt_PZR.Text := qry_List.FieldByName('PZR').AsString;
if qry_List.State in [dsInsert] then
Exit;
pgc_JY.OnChange(nil); {取得庫存信息}
end;
{-------------------------------------------------------------------------------}
{票品改變,計算庫存}
procedure TFrm_CKJH_JJW.qry_DetailAfterScroll(DataSet: TDataSet);
var
l_Index: Integer;
begin
with qry_Detail do
begin
if IsEmpty then
begin
medt_KC.Text := '';
Exit;
end;
if pgc_JY.ActivePageIndex = 1 then
begin
{顯示庫存}
l_Index := VL_PPDMList.IndexOf(FieldByname('PPDM').AsString);
if l_Index > -1 then
medt_KC.Text := FloatToStr(StrToFloat(VL_PPKCList[l_Index]) - FieldByName('FPSL').AsInteger);
end;
{設置湊包湊版信息 編輯狀態時執行}
if VL_State = 1 then
GetGG(FieldByName('PPDM').AsString);
end;
end;
{-------------------------------------------------------------------------------}
{獲得湊包湊版信息}
procedure TFrm_CKJH_JJW.GetGG(A_PPDM: string);
begin
cb_BGG.Clear;
cb_BZGG.Clear;
VL_ZXTS.Clear ;
with qry_Tmp do
begin
Close;
SQL.Text := 'select distinct BZGG,ZXTS from TB_BZSJB where BZBBJ<>2 and TDM =' + QuotedStr(A_PPDM);
Open;
while not Eof do
begin
cb_BZGG.Items.Add(FieldByName('BZGG').AsString);
VL_ZXTS.Add(FieldByName('ZXTS').AsString);
Next;
end;
if cb_BZGG.Items.Count > 0 then
cb_BZGG.ItemIndex := 0;
Close;
SQL.Text := 'select distinct GBGTMS from TB_BTGXB where TUDM like' + QuotedStr(Copy(A_PPDM, 1, 11) + '%') + ' order by GBGTMS ';
Open;
while not Eof do
begin
cb_BGG.Items.Add(FieldByName('GBGTMS').AsString);
Next;
end;
if cb_BGG.Items.Count > 0 then
begin
cb_BGG.ItemIndex := cb_BGG.Items.Count - 1;
cb_BGG.OnChange(cb_BGG);
end;
end;
end;
{-------------------------------------------------------------------------------}
{設置頁面狀態}
procedure TFrm_CKJH_JJW.Set_State(IsActive: Boolean);
begin
if IsActive then
VL_State := 1
else
begin
VL_State := 0;
rg_Round.ItemIndex := 2;
rg_Round_Style.Visible := False;
pgc_SeleInfo.ActivePageIndex := rg_Round.ItemIndex;
end;
tbs_List.TabVisible := not IsActive;
dbnv_List.Enabled := not IsActive;
bbtn_Search.Enabled := not IsActive;
bbtn_Print.Enabled := not IsActive;
rg_Round.Enabled := IsActive;
rg_Round_Style.Enabled := IsActive;
cb_BZGG.Enabled := IsActive;
cb_BGG.Enabled := IsActive;
bbtn_Add.Enabled := not IsActive;
bbtn_Del.Enabled := not IsActive;
bbtn_Modify.Enabled := not IsActive;
bbtn_AddPP.Enabled := IsActive;
bbtn_DeletePP.Enabled := IsActive;
bbtn_Save.Enabled := IsActive;
bbtn_Cancel.Enabled := IsActive;
dbgEh_Detail.ReadOnly := not IsActive;
end;
{-------------------------------------------------------------------------------}
{填做新單}
procedure TFrm_CKJH_JJW.bbtn_AddClick(Sender: TObject);
var
l_Modal: Integer;
begin
VL_QLDH := '';
with TFrm_CKJH_JJW_AddPP.Create(Application) do
try
qry_Detail.BeforeInsert := nil;
l_Modal := ShowModal;
if l_Modal = mrOk then
begin
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -