📄 sy_ckjhdzd1.pas
字号:
{*******************************************************}
{ }
{ 零星请领分配单制定 }
{ }
{ 中软金马公司版权所有。2002.12前 }
{ }
{ 编制:中软金马项目开发组 }
{ }
{ }
{*******************************************************}
(*
本模块在省级零枚票管理模块 计划管理部分的 出库计划制定/零星请领分配单制定菜单 调用。
修改记录
修改,进价销价结算价小数点后保留3位 将Qry_Main进价销价结算价显示调用的CurrGetText替换为CurrGetText3 by jhshao 2003.05.09
*)
unit SY_CKJHDZD1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Spin, ExtCtrls, ActnList, Grids, DBGrids, Db, DBTables,
Mask, DBCtrls, RXCtrls, Menus, ToolEdit, CurrEdit, RXDBCtrl,
FieldComboBox, Clipbrd;
type
TFrmY_CKJHDZD1 = class(TForm)
Panel3: TPanel;
BBt_DG1: TBitBtn;
BBt_DeleteFPJH: TBitBtn;
BBt_AddFPJH: TBitBtn;
BBt_Quit: TBitBtn;
BBt_Cancel: TBitBtn;
BBt_Save: TBitBtn;
BBt_Modify: TBitBtn;
Qry_Third: TQuery;
DS_Third: TDataSource;
USQL_Third: TUpdateSQL;
Qry_Main: TQuery;
DS_Main: TDataSource;
USQL_Main: TUpdateSQL;
BBt_Print: TBitBtn;
Qry_YZPPTXXB: TQuery;
Qry_MainCKJHDH: TStringField;
Qry_MainDWDM: TStringField;
Qry_MainPPDM: TStringField;
Qry_MainKFDM: TStringField;
Qry_MainPPMC: TStringField;
Qry_MainJJ: TFloatField;
Qry_MainSJ: TFloatField;
Qry_MainZK: TFloatField;
Qry_MainJSJ: TFloatField;
Qry_MainFPSL: TFloatField;
Qry_MainSDATE: TDateTimeField;
Qry_MainZH: TStringField;
BBt_DG: TBitBtn;
Panel1: TPanel;
XttxTitle: TRxLabel;
Label9: TLabel;
E_CKXZ: TComboBox;
Label3: TLabel;
ND: TSpinEdit;
Label1: TLabel;
YF: TSpinEdit;
PM_Main: TPopupMenu;
N_SDL: TMenuItem;
N_JSL: TMenuItem;
Qry_Static2: TQuery;
Qry_Static: TQuery;
Qry_GXDW: TQuery;
Qry_KFB: TQuery;
Qry_KFBKFDM: TStringField;
Qry_KFBKFMC: TStringField;
Qry_MainKFMC: TStringField;
RG_FX: TRadioGroup;
RG_CB: TRadioGroup;
Panel2: TPanel;
Panel8: TPanel;
L_CKJHDH: TLabel;
CB_CKJHDH: TComboBox;
BBt_AddDW: TBitBtn;
BBt_DeleteDW: TBitBtn;
DBG_Main: TRxDBGrid;
Panel6: TPanel;
Label5: TLabel;
Label8: TLabel;
Label6: TLabel;
Label7: TLabel;
Label2: TLabel;
DBE_PZR: TDBEdit;
DBE_ZBR: TDBEdit;
DBE_ZDRQ: TDBEdit;
CE_KC: TCurrencyEdit;
L_DWPPMC: TLabel;
CB_PPMC: TFieldComboBox;
Qry_MainDWMC: TStringField;
Qry_MainMZ: TFloatField;
procedure FormCreate(Sender: TObject);
procedure BBt_AddFPJHClick(Sender: TObject);
procedure BBt_DeleteFPJHClick(Sender: TObject);
procedure BBt_ModifyClick(Sender: TObject);
procedure BBt_SaveClick(Sender: TObject);
procedure BBt_CancelClick(Sender: TObject);
procedure CB_CKJHDHChange(Sender: TObject);
procedure NDChange(Sender: TObject);
procedure BBt_AddDWClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure E_CKXZChange(Sender: TObject);
procedure L_CKJHDHDblClick(Sender: TObject);
procedure BBt_DeleteDWClick(Sender: TObject);
procedure BBt_PrintClick(Sender: TObject);
procedure DBG_MainEnter(Sender: TObject);
procedure BBt_DGClick(Sender: TObject);
procedure Qry_MainJJSetText(Sender: TField; const Text: string);
procedure Qry_MainFPSLSetText(Sender: TField; const Text: string);
procedure Qry_MainAfterScroll(DataSet: TDataSet);
procedure Qry_MainFPSLGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
procedure RG_FXClick(Sender: TObject);
procedure CE_KCDblClick(Sender: TObject);
procedure Qry_MainBeforeInsert(DataSet: TDataSet);
procedure N_SDLClick(Sender: TObject);
procedure N_JSLClick(Sender: TObject);
procedure CE_KCEnter(Sender: TObject);
procedure Qry_MainJSJSetText(Sender: TField; const Text: string);
procedure Qry_MainZKChange(Sender: TField);
procedure Qry_MainZKSetText(Sender: TField; const Text: string);
procedure CB_PPMCChange(Sender: TObject);
procedure Qry_MainJJGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure Qry_MainMZGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
private
V_QLDH, V_CKJHDH, V_CKXZ, V_KFDM, V_PPDM, V_PPMC, V_DWDM, V_DWMC: string;
V_MZ, {V_SJ, }V_FPSL: Integer;
V_State: Integer;
V_JJ, V_XJ, V_ZK, V_JSJ: Double;
procedure PS_SetStatus(Value: Integer = 0);
function GetFPDH1(FLM, ND, YF: string; LSH: Boolean = True): string;
function PS_GetHJY(DWDM: string): Double;
procedure PS_AddCKJHDPP();
procedure PS_FPCK(); //零星分配出库
procedure PS_ZXCK(); //注销出库
procedure PS_DXHCK(); //待销毁出库
procedure PS_TJCK(); //退缴出库
procedure PS_YKCK(); //移库出库
procedure DoINSYPXX;
procedure DoCheckExistYPXX;
function SumField(Dataset: TDataSet; Field: TField): Double;
function GetExistField(FQuery: TQuery; FieldName: string;
SnapStr: string = ','): string; //取数据集中字段的记录的字符串流
{ Private declarations }
public
{ Public declarations }
end;
var
FrmY_CKJHDZD1: TFrmY_CKJHDZD1;
implementation
uses
datas,pub,SY_CKJHDCX_RPT, SY_CKJHDZD_XZDW,
SY_CKJHDZD_XZPP_TX, SY_CKJHDZD_XD, SY_KC, { ZF_Select,}
SJ_RichEdit;
{$R *.DFM}
procedure TFrmY_CKJHDZD1.FormCreate(Sender: TObject);
begin
//刷新出库性质
with E_CKXZ do
begin
Items.Clear;
Items.Insert(0, '零星出库'); //分配出库
Items.Insert(1, PY_XZDMTOMC('12')); //注销出库
Items.Insert(2, PY_XZDMTOMC('14')); //退缴出库
Items.Insert(3, PY_XZDMTOMC('16')); //移库出库
ItemIndex := 0;
end;
//刷新年度
ND.OnChange := nil;
ND.Value := VG_Year;
ND.OnChange := NDChange;
//刷新月份,并更新其他数据
YF.Value := VG_Month;
PS_SetStatus();
//取得权限
if not CheckRight_Bool(CG_TXQP) then
begin
BBt_DG.Visible := False;
BBt_Print.Left := (BBt_Cancel.Left + BBt_Cancel.Width)
+ (BBt_Quit.Left - BBt_Cancel.Width - BBt_Cancel.Left) div 2 - BBt_DG.Width div 2;
L_CKJHDH.OnDblClick := nil;
end;
GetAllColWidth(self);
end;
procedure TFrmY_CKJHDZD1.BBt_AddFPJHClick(Sender: TObject);
begin
CE_KC.Text := '';
Qry_Third.Close;
Qry_Main.Close;
L_CKJHDH.Font.Color := ClBlack;
CE_KC.Font.Color := ClBlue;
//取得一个临时的分配单号
V_CKJHDH := CG_CKJHDH;
//打开已分配单
with Qry_Third do
begin
Close;
SQL.Clear;
SQL.Add('select * from TYS_TXPCKJHDB ');
SQL.Add('where CKJHDH=''ZRJM''');
Open;
end;
//打开一个空的分配单票品表
with Qry_Main do
begin
Close;
SQL.Clear; //CKJHDH, DWDM, PPDM, KFDM, JJ, PPMC, XJ, ZK, JSJ, FPSL, SDATE
SQL.Add('select a.*, 0 MZ from TYS_TXCKJHDPPB a ');
SQL.Add('where CKJHDH=''ZRJM''');
Open;
end;
//添加零枚票出库计划单表
with Qry_Third do
begin
Append;
FieldByName('CKJHDH').AsString := V_CKJHDH;
FieldByName('CKXZ').AsString := V_CKXZ;
FieldByName('ZT').Asstring := CG_WCL;
FieldByName('ZBR').Asstring := VG_UserName;
FieldByName('ZDRQ').AsString := FormatDateTime('yyyy-mm-dd', GetSysDate);
FieldByName('BZ').AsString := '';
post;
end;
PS_SetStatus(1);
CB_CKJHDH.Text := '';
V_QLDH := '';
if (V_CKXZ = '10') then //分配出库 零星出库
PS_FPCK()
else if V_CKXZ = '12' then //注销出库
PS_ZXCK()
else if V_CKXZ = '14' then //退缴出库
PS_TJCK()
else if V_CKXZ = '16' then //移库出库
PS_YKCK();
//添加票品
if V_CKXZ <> '10' then
BBt_AddDWClick(nil);
//刷新票品名称
CB_PPMC.Text := V_DWMC;
CB_CKJHDH.Text := '';
DBG_Main.SetFocus;
end;
procedure TFrmY_CKJHDZD1.PS_SetStatus(Value: integer = 0);
{
0.......初始
1.......做分配单
3.......修改
}
begin
V_State := Value;
if Value = 0 then //默认
begin
BBt_AddDW.Enabled := not True;
BBt_DeleteDW.Enabled := not True;
BBt_AddFPJH.Enabled := True;
BBt_DeleteFPJH.Enabled := True;
BBt_Modify.Enabled := True;
BBt_DG.Enabled := True;
BBt_Print.Enabled := True;
BBt_Save.Enabled := not True;
BBt_Cancel.Enabled := not True;
CB_CKJHDH.Enabled := True;
CB_PPMC.Enabled := True;
ND.Enabled := True;
YF.Enabled := True;
E_CKXZ.Enabled := True;
DBG_Main.ReadOnly := True;
end
else if (Value = 1) or (Value = 3) then //增加 //修改
begin
BBt_AddDW.Enabled := True;
BBt_DeleteDW.Enabled := True;
BBt_AddFPJH.Enabled := not True;
BBt_DeleteFPJH.Enabled := not True;
BBt_Modify.Enabled := not True;
DBG_Main.ReadOnly := not True;
BBt_DG.Enabled := not True;
BBt_Print.Enabled := not True;
BBt_Save.Enabled := True;
BBt_Cancel.Enabled := True;
CB_CKJHDH.Enabled := not True;
CB_PPMC.Enabled := not True;
ND.Enabled := not True;
YF.Enabled := not True;
E_CKXZ.Enabled := not True;
end;
end;
procedure TFrmY_CKJHDZD1.BBt_DeleteFPJHClick(Sender: TObject);
begin
if Qry_Third.IsEmpty then Exit;
if Qry_Third.FieldByName('ZT').Asstring = CG_YCL then
begin
CHQMsgBox('此出库计划单已处理!');
Exit;
end;
if Qry_Third.FieldByName('ZT').Asstring = CG_DG then
begin
CHQMsgBox('此出库计划单已签批!');
Exit;
end;
//删除出库计划单
if CHQMsgBox('确实要删除吗?', 2) = IDNO then Exit;
with Qry_Static do
begin
//删除从表
Close;
SQL.Text := 'delete TYS_TXCKJHDPPB '
+ ' where CKJHDH=''' + V_CKJHDH + '''';
ExecSQL;
//删除从表
Close;
SQL.Text := 'delete TYS_TXPCKJHDB '
+ ' where CKJHDH=''' + V_CKJHDH + '''';
ExecSQL;
end;
//刷新出库计划单下拉框
CB_CKJHDH.Items.Delete(CB_CKJHDH.ItemIndex);
if CB_CKJHDH.Items.Count <= 0 then
begin
CB_PPMC.DeleteItems(CB_PPMC.ItemIndex);
CB_PPMC.ItemIndex := 0;
CB_PPMC.OnChange(nil);
end;
CB_CKJHDH.ItemIndex := 0;
CB_CKJHDHChange(nil);
end;
procedure TFrmY_CKJHDZD1.BBt_ModifyClick(Sender: TObject);
begin
if Qry_Third.IsEmpty then Exit;
if Qry_Third.FieldByName('ZT').Asstring = CG_YCL then
begin
CHQMsgBox('此出库计划单已处理!');
Exit;
end;
if Qry_Third.FieldByName('ZT').Asstring = CG_DG then
begin
CHQMsgBox('此出库计划单已签批!');
Exit;
end;
//修改出库计划单
Qry_Main.Edit;
DBG_Main.SetFocus;
PS_SetStatus(3);
end;
procedure TFrmY_CKJHDZD1.BBt_SaveClick(Sender: TObject);
var
V_XX: string;
V_ItemIndex: Integer;
begin
try
Qry_Main.AfterScroll := nil;
//删除数量为0记录
with Qry_Main do
begin
DisableControls;
First;
while not Eof do
begin
if FieldByName('FPSL').AsInteger > 0 then
begin
//折扣和结算价不能同时为空
if FieldByName('ZK').IsNull or FieldByName('JSJ').IsNull then
begin
EnableControls;
CHQMsgBox('折扣或结算价不能同时为空!');
DBG_Main.SetFocus;
Exit;
end;
Next;
end
else
begin
EnableControls;
CHQMsgBox('请确定分配数量!');
DBG_Main.SetFocus;
Exit;
end;
end;
First;
EnableControls;
end;
//添加及修改时,判断出库计划单的分配数量是否超出库存量
V_XX := '';
with Qry_Main do
begin
DisableControls;
First;
while not Eof do
begin
if FieldByName('FPSL').AsInteger > 0 then
if (PS_GetSYTS(FieldByName('KFDM').AsString, FieldByName('PPDM').AsString, FieldByName('JJ').AsFloat, FieldByName('CKJHDH').AsString, FieldByName('DWDM').AsString) - FieldByName('FPSL').AsInteger) < 0 then
V_XX := V_XX + FieldByName('PPMC').AsString + '的分配数量已超出库存量; '#10#13;
Next;
end;
First;
EnableControls;
end;
if V_XX <> '' then
begin
V_XX := V_XX + '请调整。'#10#13;
CHQMsgBox(V_XX);
Exit;
end;
{2002-06-18 by jillshao 定额控制去掉
//处理零星分配
if E_CKXZ.ItemIndex = 0 then
begin
V_XX := '';
//添加及修改时,判断出库计划单的分配数量是否超出总定额
with Qry_Static do
begin
Close;
SQL.Clear;
SQL.Add('select A.DWDM,B.DWMC,A.DEY from TY_TXPDESJB A,TGS_GXDWSJB B');
SQL.Add('where A.DWDM=B.DWDM and A.MZ= ''-1'' and A.ND = ''' + IntToStr(ND.Value) + ''' order by B.PXM ');
Open;
while not Eof do
begin
if PS_GetHJY(FieldByName('DWDM').AsString) > FieldByName('DEY').AsFloat * 100 then
V_XX := V_XX + FieldByName('DWMC').AsString + ' 的出库计划单的分配量已超出总定额; '#10#13;
Next;
end;
Close;
end;
if V_XX <> '' then
begin
V_XX := V_XX + '请调整!';
CHQMsgBox(V_XX);
Exit;
end;
end;}
V_XX := '';
//新增出库单的处理
if (V_State = 1) then
begin
//取得分配单号
if E_CKXZ.ItemIndex = 0 then
V_CKJHDH := GetFPDH1('L', ND.Text, YF.Text, False) //零星分配单单号
else
V_CKJHDH := GetFPDH('TX'); //其他分配单单号
//给主表赋分配单号
with Qry_Third do
begin
Filtered := False;
DisableControls;
Edit;
FieldByName('CKJHDH').AsString := V_CKJHDH;
EnableControls;
Filtered := True;
end;
//给从表赋分配单号
with Qry_Main do
begin
Filtered := False;
DisableControls;
First;
while not Eof do
begin
Edit;
FieldByName('CKJHDH').AsString := V_CKJHDH;
Next;
end;
First;
EnableControls;
Filtered := True;
end;
end;
finally
Qry_Main.AfterScroll := Qry_MainAfterScroll;
end;
try //提交数据库
Qry_Main.Database.StartTransaction;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -