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