⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sy_ckjhdzd1.pas

📁 省级集邮品管理ERP
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{*******************************************************}
{                                                       }
{                      单去向多品种                     }
{                                                       }
{            中软金马公司版权所有。2002.12前            }
{                                                       }
{            编制:中软金马邮资票品项目开发组           }
{                                                       }
{                                                       }
{*******************************************************}
(*
本模块在省级集邮品系统管理模块里面调用。
修改记录
修改用于销价进价结算价的显示小数点后扩到3位 将Qry_Main进价销价结算价显示调用的CurrGetText替换为CurrGetText3 jhshao 2003.05.08

*)
unit SY_CKJHDZD1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, Spin, ExtCtrls, ActnList, Grids, DBGrids, Db, DBTables,
  RXCtrls, Mask, DBCtrls, RXDBCtrl, Menus, ToolEdit, CurrEdit,
  FieldComboBox;

type
  TFrmY_CKJHDZD1 = class(TForm)
    Panel1: TPanel;
    Label3: TLabel;
    ND: TSpinEdit;
    Panel3: TPanel;
    BBt_Modify: TBitBtn;
    BBt_Save: TBitBtn;
    BBt_Cancel: TBitBtn;
    BBt_Quit: TBitBtn;
    BBt_AddFPJH: TBitBtn;
    BBt_DeleteFPJH: TBitBtn;
    BBt_DG: TBitBtn;
    Panel2: TPanel;
    Panel5: TPanel;
    DS_Main: TDataSource;
    Qry_Third: TQuery;
    USQL_Third: TUpdateSQL;
    DS_Third: TDataSource;
    Qry_Static: TQuery;
    Qry_KFB: TQuery;
    Qry_KFBKFDM: TStringField;
    Qry_KFBKFMC: TStringField;
    XttxTitle: TRxLabel;
    BBt_Print: TBitBtn;
    Panel8: TPanel;
    L_CKJHDH: TLabel;
    Label4: TLabel;
    CB_CKJHDH: TComboBox;
    BBt_AddDW: TBitBtn;
    BBt_DeleteDW: TBitBtn;
    DBG_Main: TRxDBGrid;
    Label1: TLabel;
    E_CKXZ: TComboBox;
    CB_PPMC: TFieldComboBox;
    Panel4: TPanel;
    Label5: TLabel;
    Label8: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    DBE_PZR: TDBEdit;
    DBE_ZBR: TDBEdit;
    DBE_ZDRQ: TDBEdit;
    CE_KC: TCurrencyEdit;
    Qry_Static2: TQuery;
    USQL_Main: TUpdateSQL;
    Qry_Main: TQuery;
    Qry_MainCKJHDH: TStringField;
    Qry_MainKFDM: TStringField;
    Qry_MainDWDM: TStringField;
    Qry_MainJJ: TFloatField;
    Qry_MainKWH: TStringField;
    Qry_MainPPMC: TStringField;
    Qry_MainYJ: TFloatField;
    Qry_MainXJ: TFloatField;
    Qry_MainJSJ: TFloatField;
    Qry_MainFPSL: TFloatField;
    Qry_MainSDATE: TDateTimeField;
    Qry_MainDWMC: TStringField;
    Qry_MainZK: TFloatField;
    Qry_MainKFMC: TStringField;
    Qry_MainDW: TStringField;
    Qry_MainPPDM: TStringField;
    procedure FormCreate(Sender: TObject);
    procedure Act_QuitExecute(Sender: TObject);
    procedure BBt_AddFPJHClick(Sender: TObject);
    procedure CB_CKJHDHChange(Sender: TObject);
    procedure NDChange(Sender: TObject);
    procedure BBt_SaveClick(Sender: TObject);
    procedure BBt_DeleteFPJHClick(Sender: TObject);
    procedure BBt_ModifyClick(Sender: TObject);
    procedure BBt_DGClick(Sender: TObject);
    procedure BBt_CancelClick(Sender: TObject);
    procedure BBt_DeleteDWClick(Sender: TObject);
    procedure BBt_AddDWClick(Sender: TObject);
    procedure L_CKJHDHDblClick(Sender: TObject);
    procedure BBt_PrintClick(Sender: TObject);
    procedure Qry_MainFPSLSetText(Sender: TField; const Text: string);
    procedure Qry_MainAfterScroll(DataSet: TDataSet);
    procedure Qry_MainJJGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    procedure DBG_MainKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Query1YFZLSetText(Sender: TField; const Text: string);
    procedure Qry_MainJJSetText(Sender: TField; const Text: string);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Qry_MainJSJChange(Sender: TField);
    procedure E_CKXZChange(Sender: TObject);
    procedure CB_PPMCChange(Sender: TObject);
    procedure Qry_MainBeforeInsert(DataSet: TDataSet);
    procedure CE_KCDblClick(Sender: TObject);
    procedure Qry_MainJSJSetText(Sender: TField; const Text: string);
    procedure CE_KCEnter(Sender: TObject);
  private
    V_CKJHDH, V_CKXZ, V_KFDM, V_PPDM, V_PPMC, V_DWDM, V_DWMC, V_KWH: string;
    V_JJ, V_XJ, V_ZK, V_JSJ: Double;
    V_FPSL, V_State: Integer;
    procedure PS_SetStatus(Value: Integer = 0);
    procedure ps_AddRec();
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmY_CKJHDZD1: TFrmY_CKJHDZD1;

implementation

uses
  pub, SY_CKJHDZD_XZDW, SY_CKJHDZD_XZPP, SY_CKJHDCX_RPT, SY_KC, SJ_RICHEDIT;

{$R *.DFM}

procedure TFrmY_CKJHDZD1.FormCreate(Sender: TObject);
begin
  //判断权限(取消签批)
//  CheckRight(self);
  if not CheckRight_Bool(CG_YPQP) 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;

  with E_CKXZ do
  begin
    Items.Clear;
    Items.Insert(0, PY_XZDMTOMC('10'));
    Items.Insert(1, PY_XZDMTOMC('12'));
    Items.Insert(2, PY_XZDMTOMC('14'));
    ItemIndex := 0;
  end;

  ND.Value := VG_Year;
  PS_SetStatus();
  GetAllColWidth(self);
end;

procedure TFrmY_CKJHDZD1.Act_QuitExecute(Sender: TObject);
begin
  Close;
end;

procedure TFrmY_CKJHDZD1.PS_SetStatus(Value: Integer = 0);
{
 0:默认初始化
 1:添加
 3:修改
}
begin
  V_State := Value;
  if V_State = 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_Save.Enabled := not True;
    BBt_Cancel.Enabled := not True;

    CB_CKJHDH.Enabled := True;
    ND.Enabled := True;
    DBG_Main.ReadOnly := True;

    E_CKXZ.Enabled := True;
    CB_PPMC.Enabled := True;
  end
  else if (V_State = 1) or (V_State = 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;

    BBt_DG.Enabled := not True;

    BBt_Save.Enabled := True;
    BBt_Cancel.Enabled := True;

    CB_CKJHDH.Enabled := not True;
    ND.Enabled := not True;
    DBG_Main.ReadOnly := not True;

    CB_PPMC.Enabled := not True;
    E_CKXZ.Enabled := not True;
  end;
end;

procedure TFrmY_CKJHDZD1.BBt_AddFPJHClick(Sender: TObject);
begin
  //取得临时出库计划单
  V_CKJHDH := CG_CKJHDH;

  //打开空的主表
  with Qry_Third do
  begin
    Close;
    Prepare;
    Params[0].AsString := V_CKJHDH;
    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 := '';
  end;

  //打开空的从表
  with Qry_Main do
  begin
    Close;
    Prepare;
    Params[0].AsString := V_CKJHDH;
    Open;
  end;

  if V_CKXZ = '10' then //分配出库
  begin
    with Qry_Static do
    begin
      Close;
      Qry_Static.SQL.Text := 'select * from TGS_GXDWSJB WHERE JYYW = ''1'' and FHDX =''1'' ';
      Open;
      if Eof then
      begin
        BBt_CancelClick(nil);
        CHQMsgBox('没有发货对象单位!');
        Exit;
      end;
    end;
    //选择单位
    FrmY_CKJHDZD_XZDW := TFrmY_CKJHDZD_XZDW.Create(nil);
    with FrmY_CKJHDZD_XZDW do
    begin
      DBGrid1.Options := DBGrid1.Options - [dgMultiSelect];
      Qry_Static.Close;
      Qry_Static.SQL.Text := 'select * from TGS_GXDWSJB WHERE JYYW=''1'' and FHDX=''1'' order by PXM';
      Qry_Static.Open;
      ShowModal;
      if ModalResult <> MrOK then
      begin
        Free;
        CB_CKJHDHChange(nil);
        Exit;
      end;

      //取得临时的单位代码和单位名称
      V_DWDM := Qry_Static.FieldByName('DWDM').AsString;
      V_DWMC := Qry_Static.FieldByName('DWJC').AsString;
      Free;
    end;
  end
  else if V_CKXZ = '12' then //注销出库
  begin
    V_DWDM := '-3';
    V_DWMC := '注销出库';
  end
  else if V_CKXZ = '13' then //待销毁出库
  begin
    V_DWDM := '-2';
    V_DWMC := '待销毁出库';
  end
  else if V_CKXZ = '14' then //退缴出库
  begin
    with Qry_Static do
    begin
      Close;
      Qry_Static.SQL.Text := 'select * from TGS_GXDWSJB WHERE ZJSJ=''1'' or SJFH=''1'' or (JYYW=''1'' and KH=''1'') or (JYYW=''1'' and FHDX=''1'') order by PXM';
      Open;
      if Eof then
      begin
        BBt_CancelClick(nil);
        CHQMsgBox('没有退缴对象单位!');
        Exit;
      end;
      Close;
    end;
      //选择单位
    FrmY_CKJHDZD_XZDW := TFrmY_CKJHDZD_XZDW.Create(nil);
    with FrmY_CKJHDZD_XZDW do
    begin
      DBGrid1.Options := DBGrid1.Options - [dgMultiSelect];
      Qry_Static.Close;
      Qry_Static.SQL.Text := 'select * from TGS_GXDWSJB WHERE ZJSJ=''1'' or SJFH=''1'' or (JYYW=''1'' and KH=''1'') or (JYYW=''1'' and FHDX=''1'') order by PXM';
      Qry_Static.Open;
      ShowModal;
      if ModalResult <> MrOK then
      begin
        Free;
        CB_CKJHDHChange(nil);
        Exit;
      end;

        //取得临时的单位代码和单位名称
      V_DWDM := Qry_Static.FieldByName('DWDM').AsString;
      V_DWMC := Qry_Static.FieldByName('DWJC').AsString;
      Free;
    end;
  end;

  //添加票品
  BBt_AddDWClick(nil);

  //刷新票品名称
  CB_PPMC.Text := V_DWMC;
  CB_CKJHDH.Text := '';
  L_CKJHDH.Font.Color := ClBlack;

  //刷新出库性质名称
  E_CKXZ.Text := PY_XZDMTOMC(V_CKXZ);

  PS_SetStatus(1);
end;

procedure TFrmY_CKJHDZD1.ps_AddRec();
begin
  with Qry_Main do
  begin
    Qry_Main.BeforeInsert := nil;
    Append;
    //出库计划单号
    FieldByName('CKJHDH').AsString := V_CKJHDH;
    //库房代码
    FieldByName('KFDM').AsString := V_KFDM;
    //单位代码
    FieldByName('DWDM').AsString := V_DWDM;
    //票品代码
    FieldByName('PPDM').AsString := V_PPDM;
    //进价分
    FieldByName('JJ').AsFloat := V_JJ;
    //销售分
    FieldByName('XJ').AsFloat := V_XJ;
    //库位号
    FieldByName('KWH').AsString := V_KWH;
    //票品名称
    FieldByName('PPMC').Asstring := V_PPMC;
    //单位名称
    FieldByName('DWMC').Asstring := V_DWMC;
    //折扣
    FieldByName('ZK').AsFloat := V_ZK;
    //结算价
    FieldByName('JSJ').AsFloat := V_JSJ;
    //分配数量
    FieldByName('FPSL').AsInteger := V_FPSL;
    Post;
    Qry_Main.BeforeInsert := Qry_MainBeforeInsert;
  end;
end;

procedure TFrmY_CKJHDZD1.CB_CKJHDHChange(Sender: TObject);
begin
  //数据复位
  Qry_Third.Close;
  Qry_Main.Close;
  CE_KC.Text := '';

  //颜色复位
  L_CKJHDH.Font.Color := ClBlack;
  CE_KC.Font.Color := ClBlue;

  //若出库计划单为空,跳出
  if CB_CKJHDH.Text = '' then Exit;

  //保存临时数据
  V_CKJHDH := UpperCase(CB_CKJHDH.Text);
  V_DWDM := CB_PPMC.FieldString;
  V_DWMC := CB_PPMC.Text;

  //打开主表
  with Qry_Third do
  begin
    Close;
    Prepare;
    Params[0].AsString := V_CKJHDH;
    Open;
  end;

  //打开从表
  with Qry_Main do
  begin
    Close;
    Prepare;
    Params[0].AsString := V_CKJHDH;
    Open;
  end;

  //刷新出库计划单的出库状态
  if Qry_Third.FieldByName('ZT').AsString = CG_DG then
    L_CKJHDH.Font.Color := ClRed
  else
    L_CKJHDH.Font.Color := ClBlack;

end;

procedure TFrmY_CKJHDZD1.NDChange(Sender: TObject);
begin
  //复位数据
  Qry_Third.Close;
  Qry_Main.Close;

  //复位颜色
  L_CKJHDH.Font.Color := ClBlack;
  CE_KC.Font.Color := ClBlue;
  if ND.Text = '' then Exit;
  V_CKXZ := '10';

  //刷新出库性质
  E_CKXZChange(nil);
end;

procedure TFrmY_CKJHDZD1.BBt_SaveClick(Sender: TObject);
var
  V_ItemIndex: Integer;
begin
  //求出此次分配套数
  with Qry_main do
  begin
    DisableControls;
    First;
    while not Eof do
    begin
      if FieldByName('FPSL').AsInteger > 0 then
        Next
      else
      begin
        EnableControls;
        CHQMsgBox('请确定分配数量!');
        DBG_Main.SetFocus;
        Exit;
      end;
    end;
    First;
    EnableControls;
  end;
  //判断出库票品
  with Qry_main do
  begin
    DisableControls;
    First;
    while not Eof do
    begin
      if FieldByName('XJ').IsNull or FieldByName('ZK').IsNull or FieldByName('JSJ').IsNull then
      begin
        EnableControls;
        CHQMsgBox('销价、折扣或结算价不能为空!');
        DBG_Main.SetFocus;
        Exit;
      end;

      if CE_KC.Value < 0 then
      begin
        EnableControls;
        CHQMsgBox(FieldByName('PPMC').AsString + '的分配数量已超出实际库存量, 请调整分配数量!');
        DBG_Main.SelectedIndex := DBG_Main.Columns.Count - 1;
        DBG_Main.SetFocus;
        Exit;
      end;
      Next;
    end;
    First;
    EnableControls;
  end;

  //新增出库单的处理
  if (V_State = 1) then
  begin

    //取得分配单号
    V_CKJHDH := GetFPDH('PW');

    //给主表赋分配单号

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -