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

📄 choose_fpd.pas

📁 省级集邮品管理ERP
💻 PAS
字号:

{*******************************************************}
{                                                       }
{                      选择分配单                       }
{                                                       }
{            中软金马公司版权所有。2002.12前            }
{                                                       }
{               编制:中软金马项目开发组                }
{                                                       }
{                                                       }
{*******************************************************}
(*
本模块在省级集邮票管理、省级市场购入票管理、省级集邮品管理、省级零枚票管理、
地市集邮票管理、地市集邮品管理、地市市场购入票管理  七个模块调用
*)
{
//注意:对于所有票品都适用,有:零枚票、集邮票、集邮品、购入票
有关表:
  出库计划单表、出库计划单面值表
数据来源:
  分配单号: 出库计划单表(状态为0 且 根据出库计划单号判断类别,如:生成零枚,
             则只列出零枚票分配单号)
  分配票品:出库计划单面值表
功能:
算法:

更新有关表:
备注:
  出库计划单表状态字段值:0--未生成发货单   1--已生成发货单
}
unit Choose_FPD;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  FormBase, StdCtrls, Buttons, Db, DBTables, Grids, DBGrids, CheckLst,
  DBCtrls, ExtCtrls, RxQuery, SqlStrings;

type
  TfrmSJ_chooseJYFPD = class(TFFormBase)
    Label1: TLabel;
    Label2: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    DBGrid1: TDBGrid;
    DS_pp: TDataSource;
    Label3: TLabel;
    DBL_ckxz: TDBLookupComboBox;
    CLB_yjdh: TCheckListBox;
    Qry_ckxz: TQuery;
    DS_ckxz: TDataSource;
    qry_tmp: TQuery;
    RG_yf: TRadioGroup;
    Qry_pp: TRxQuery;
    Qry_ppORD: TFloatField;
    Qry_ppPPMC: TStringField;
    Qry_ppDWDM: TStringField;
    Qry_ppFPSL: TFloatField;
    SqlS_pp: TSqlStrings;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure Qry_ckxzAfterScroll(DataSet: TDataSet);
    procedure DoUnionCKYJD(var AnewYJDH: string);
    procedure CLB_yjdhClickCheck(Sender: TObject);
  private
    v_dhs: string;
    Fio_TYPE: TIO_TYPE;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmSJ_chooseJYFPD: TfrmSJ_chooseJYFPD;
function ExeSY_FPD(io_typ: TIO_TYPE): Boolean;

implementation

{$R *.DFM}

uses  datas,pub, SY_FHDSC;

function ExeSY_FPD(io_typ: TIO_TYPE): Boolean;
begin
  Application.CreateForm(TfrmSJ_chooseJYFPD, frmSJ_chooseJYFPD); {TFFormBase1, FFormBase1}
  with frmSJ_chooseJYFPD do {FFormBase1}
  try
    Caption := '选择' + pCaption[integer(io_Typ)] + '分配单';
    Fio_TYPE := io_typ;
    Qry_pp.SQL := SqlS_pp.FSqlText[io_typ];
    result := ShowModal = MB_OK;
  finally
    Free;
  end;
end;

procedure TfrmSJ_chooseJYFPD.FormCreate(Sender: TObject);
var
  ckjhh: string;
begin
  inherited;
  Qry_ckxz.AfterScroll := nil;
  qry_ckxz.Open;
  Qry_ckxz.AfterScroll := Qry_ckxzAfterScroll;
  if not qry_ckxz.IsEmpty then
    DBL_ckxz.KeyValue := qry_ckxz.FieldByName('RCKXZDM').AsString;

end;

procedure TfrmSJ_chooseJYFPD.BitBtn1Click(Sender: TObject);
var
  v_yjdh, v_s_sql: string;
  v_i_chkcount: integer;

  function YJDHSelCount: integer;
  var
    i: Integer;
  begin
    Result := 0;
    for i := 0 to CLB_yjdh.Items.Count - 1 do
      if CLB_yjdh.Checked[i] then
      begin
        Result := Result + 1;
        v_yjdh := CLB_yjdh.Items[i];
      end;
  end;
begin
  inherited;
  v_i_chkcount := YJDHSelCount;
  if v_i_chkcount = 0 then
  begin
    CHQMsgBox('请选择出库计划单号!');
    exit;
  end;
  v_s_sql := 'select a-b from (SELECT count(*) a from (select distinct PPDM,DWDM,JJ,xj,zk,jsj FROM ' + frmSY_FHD.vg_s_ckjhpp + ' WHERE CKJHDH in (' + v_dhs + ')) a) c,(select count(*) b from (select distinct PPDM,DWDM,JJ,xj FROM ' + frmSY_FHD.vg_s_ckjhpp + ' WHERE CKJHDH in (' + v_dhs + ')) b) d';
  Open_SQL(qry_tmp, v_s_sql);
  if Qry_TMP.Fields[0].AsFloat <> 0 then
  begin
    CHQMsgBox('所选的依据单中不能包含不同折扣或结算价的同一票品!');
    exit;
  end;
  DoUnionCKYJD(v_yjdh);
  frmSY_FHD.queding := true;
  frmSY_FHD.yjdh := v_yjdh;
  frmSY_FHD.BYorXY := RG_yf.ItemIndex;
  close;
end;

procedure TfrmSJ_chooseJYFPD.DoUnionCKYJD(var AnewYJDH: string);
var
  v_sql, v_jhdh: string;
  i: integer;
begin
  data.DM.StartTransaction;
  try
    AnewYJDH := GetFPDH('JH');
    for i := 0 to CLB_yjdh.Items.Count - 1 do
    begin
      if CLB_yjdh.Checked[i] then
        v_jhdh := v_jhdh + '''' + CLB_yjdh.Items[i] + ''',';
    end;

    v_jhdh := copy(v_jhdh, 1, length(v_jhdh) - 1);

    v_sql := 'insert into ' + frmSY_FHD.vg_s_ckjhd + '(CKJHDH,CKXZ,ZBR,PZR,ZDRQ,ZT) values(''' + AnewYJDH + ''',''' + DBL_ckxz.KeyValue + ''',''' + VG_UserName + ''',''' + VG_UserName + ''', trunc(sysdate), ''' + CG_DG + ''')';
    AssignSqlStr(qry_tmp, v_sql);
    qry_tmp.ExecSQL;
    case Fio_type of
      io_jyp, io_yp, io_grp:
        v_sql := 'insert into ' + frmSY_FHD.vg_s_ckjhpp + '(CKJHDH,KFDM,DWDM,PPDM,JJ,DWMC,PPMC,YJ,XJ,JSJ,ZK,FPSL) select ''' + AnewYJDH + ''', KFDM, DWDM, PPDM, JJ, DWMC, PPMC, YJ, XJ, JSJ, ZK, sum(FPSL) from ' + frmSY_FHD.vg_s_ckjhpp + ' where CKJHDH in(' + v_jhdh + ') group by PPDM, KFDM, JJ,YJ,XJ,JSJ,ZK,dwmc,ppmc,dwdm';
      io_txp:
        v_sql := 'insert into ' + frmSY_FHD.vg_s_ckjhpp + '(CKJHDH,KFDM,DWDM,PPDM,PPMC,JJ,XJ,ZK,JSJ,FPSL) select ''' + AnewYJDH + ''', KFDM, DWDM, PPDM, PPMC, JJ, XJ, ZK, JSJ, sum(FPSL) from ' + frmSY_FHD.vg_s_ckjhpp + ' where CKJHDH in(' + v_jhdh + ') group by PPDM, KFDM, JJ,XJ,ZK, JSJ,ppmc,dwdm';
    end;
    AssignSqlStr(qry_tmp, v_sql);
    qry_tmp.ExecSQL;
    v_sql := 'update ' + frmSY_FHD.vg_s_ckjhd + ' set ZT=''' + CG_HB + ''' where CKJHDH in(' + v_jhdh + ')';
    AssignSqlStr(qry_tmp, v_sql);
    qry_tmp.ExecSQL;
    data.DM.Commit;
  except
    data.DM.RollBack;
  end;
end;

procedure TfrmSJ_chooseJYFPD.Qry_ckxzAfterScroll(DataSet: TDataSet);
var
  yjdh: string;
begin
  inherited;
  yjdh := 'select distinct ckjhdh from ' + frmSY_FHD.vg_s_ckjhd + ' where zt=2 and CKXZ=''' + DBL_ckxz.keyValue + '''';
  InitList(CLB_yjdh.items, yjdh);

  CLB_yjdhClickCheck(nil);

end;

procedure TfrmSJ_chooseJYFPD.CLB_yjdhClickCheck(Sender: TObject);
var
  i: integer;
begin
  inherited;
  v_dhs := '';
  for i := 0 to CLB_yjdh.Items.Count - 1 do
    if CLB_yjdh.Checked[i] then
      v_dhs := v_dhs + '''' + CLB_yjdh.Items[i] + ''',';

  if Length(v_dhs) > 0 then
    v_dhs := copy(v_dhs, 1, length(v_dhs) - 1)
  else
    v_dhs := '''zrjm''';

  with Qry_pp do
  begin
    Close;
    MacroByName('DH').AsString := v_dhs;
    Open;
  end;
end;

end.

⌨️ 快捷键说明

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