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

📄 sy_ckjhdzd1.pas

📁 省级集邮品管理ERP
💻 PAS
📖 第 1 页 / 共 3 页
字号:

{*******************************************************}
{                                                       }
{                 零星请领分配单制定                    }
{                                                       }
{            中软金马公司版权所有。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 + -