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

📄 sy_ck_jyp_searchpp.pas

📁 省级集邮品管理ERP
💻 PAS
字号:
{*******************************************************}
{                                                       }
{         零枚出库计划单新制定——选择票品模块          }
{                                                       }
{            中软金马公司版权所有。2002.06              }
{                                                       }
{                   编制:侯华敏                        }
{                                                       }
{                                                       }
{*******************************************************}

(*==============================================================================

程序说明:
    1.  TB_YZPPXXB 中的type为 'ptyp'—普通邮票,'jtlm'—纪特零枚,'fpj—封片简
        {jttp纪特套票不用考虑}
    2.  ※※※※TB_YZPPXXB中的套代码实际为图代码,同TKS_TXPPKC中的图代码关联才可以
    得出正确的结果;
    3、 库房的权限设定TGS_KFRYDZB和TGS_KFB关联得到登录用户的库房权限,只允许用户对有权限的
    库房的票品进行出库计划分配;

侯华敏  2002.06.

===============================================================================*)


unit SY_CK_JYP_SearchPP;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Spin, StdCtrls, FieldComboBox, ExtCtrls, Buttons, Db, DBTables, sqlstrings;

type
  TFrm_SY_CK_JYP_SearchPP = class(TForm)
    pnl_Search: TPanel;
    lbl_PPMZ: TLabel;
    lbl_SJ: TLabel;
    lbl_To_ND: TLabel;
    chk_PPXLB: TCheckBox;
    chk_PPMZ: TCheckBox;
    chk_ND: TCheckBox;
    chk_PPSJ: TCheckBox;
    chk_ZH: TCheckBox;
    chk_PPDLB: TCheckBox;
    fcb_PPDLB: TFieldComboBox;
    edt_PPMZ: TEdit;
    spEdt_From_ND: TSpinEdit;
    edt_SJ: TEdit;
    edt_ZH: TEdit;
    fcb_PPXLB: TFieldComboBox;
    spEdt_To_ND: TSpinEdit;
    chk_MC: TCheckBox;
    edt_MC: TEdit;
    chk_KF: TCheckBox;
    fcb_KF: TFieldComboBox;
    bbtn_OK: TBitBtn;
    bbtn_Cancel: TBitBtn;
    qry_Tmp: TQuery;
    procedure FormCreate(Sender: TObject);
    procedure fcb_PPDLBChange(Sender: TObject);
    procedure chk_KFClick(Sender: TObject);
    procedure chk_PPDLBClick(Sender: TObject);
    procedure chk_PPXLBClick(Sender: TObject);
    procedure chk_NDClick(Sender: TObject);
    procedure chk_PPMZClick(Sender: TObject);
    procedure chk_PPSJClick(Sender: TObject);
    procedure chk_ZHClick(Sender: TObject);
    procedure chk_MCClick(Sender: TObject);
    procedure edt_PPMZKeyPress(Sender: TObject; var Key: Char);
    procedure bbtn_OKClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    Lios_Type: TIO_TYPE;
    FB_ShowZero: boolean;
    L_Index: integer;
    function GetSQL: string; {生成sQL语句}
    { Public declarations }
  end;

var
  Frm_SY_CK_JYP_SearchPP: TFrm_SY_CK_JYP_SearchPP;

implementation

{$R *.DFM}

uses
  SY_Libproc;

{-------------------------------------------------------------------------------}
{初始化公共数据}
procedure TFrm_SY_CK_JYP_SearchPP.FormCreate(Sender: TObject);
begin
  FB_ShowZero := true;
  {库房列表}
  fcb_KF.ClearAll;
  with qry_Tmp do
  begin
    Close;
    SQL.Text := 'Select a.KFDM, a.KFMC from TGS_KFB a, TGS_KFRYDZB b where a.KFDM = b.KFDM ' +
      ' and b.YGDM =' + QuotedStr(VG_UserID) + '  order by KFDM ';
    Open;
    while not eof do
    begin
      fcb_KF.Items.Add(FieldByName('KFMC').AsString);
      fcb_KF.FieldItems.Add(FieldByName('KFDM').AsString);
      Next;
    end;
    Close;
  end;

  {显示默认年度}
  with qry_Tmp do
  begin
    Close;
    SQL.Text := 'Select SysDate from Dual';
    Open;
    spEdt_From_ND.Text := FormatDateTime('yyyy', FieldByName('SysDate').AsDateTime);
    spEdt_To_ND.Text := FormatDateTime('yyyy', FieldByName('SysDate').AsDateTime);
    Close;
  end;

end;


{-------------------------------------------------------------------------------}
{大类改变,二类跟着改变}
procedure TFrm_SY_CK_JYP_SearchPP.fcb_PPDLBChange(Sender: TObject);
begin
  fcb_PPXLB.ClearAll;
  if Lios_Type = io_txp then
  begin
    if fcb_PPDLB.FieldString = 'ptyp' then
    begin {普通邮票} {}
      fcb_PPXLB.Items.Add('普通邮票');
      fcb_PPXLB.FieldItems.Add('ptyp');
    end
    else if fcb_PPDLB.FieldString = 'jtlm' then
    begin {集邮票和纪特零枚} {}
      with qry_Tmp do
      begin
        Close;
        SQL.Text := 'Select distinct DL,SubStr(YZLDM,1,1) sort_order from TG_YZPPLDMB'#13#10 +
          'where (YZLDM like ''9%'') or (YZLDM like ''8%'') or (YZLDM like ''1%'' and YZLDM <>''101'') order by sort_order';
        Open;

        while not Eof do
        begin
          fcb_PPXLB.Items.Add(FieldByName('DL').AsString);
          fcb_PPXLB.FieldItems.Add(FieldByName('sort_order').AsString);
          Next;
        end;
      end;
    end
    else if fcb_PPDLB.FieldString = 'fpj' then
    begin {封片简} {}
      with qry_Tmp do
      begin
        Close;
        SQL.Text := 'Select distinct DL,SubStr(YZLDM,1,1) sort_order from TG_YZPPLDMB'#13#10 +
          'where (YZLDM like ''2%'') or (YZLDM like ''3%'') or (YZLDM like ''4%'') or (YZLDM like ''5%'') or (YZLDM like ''6%'') order by sort_order';
        Open;

        while not Eof do
        begin
          fcb_PPXLB.Items.Add(FieldByName('DL').AsString);
          fcb_PPXLB.FieldItems.Add(FieldByName('sort_order').AsString);
          Next;
        end;
      end;
    end;
  end
  else
    with qry_Tmp do
    begin
      Close;
      SQL.Text := 'Select YZLDM,MC from TG_YZPPLDMB where YZLDM <> ''101'' and YZLDM like ''' + fcb_PPDLB.FieldString + '%'' order by YZLDM';
      Open;
      fcb_PPXLB.ClearAll;
      while not Eof do
      begin
        fcb_PPXLB.Items.Add(FieldByName('MC').AsString);
        fcb_PPXLB.FieldItems.Add(FieldByName('YZLDM').AsString);
        Next;
      end;
    end;

end;

{-------------------------------------------------------------------------------}
{库房的选择}
procedure TFrm_SY_CK_JYP_SearchPP.chk_KFClick(Sender: TObject);
begin
  fcb_KF.Enabled := chk_KF.Checked;
end;

{-------------------------------------------------------------------------------}
{票品大类选择}
procedure TFrm_SY_CK_JYP_SearchPP.chk_PPDLBClick(Sender: TObject);
begin
  fcb_PPDLB.Enabled := chk_PPDLB.Checked;
  chk_PPXLB.Enabled := chk_PPDLB.Checked;

  if chk_PPDLB.Checked then
    chk_PPXLBClick(Sender);
end;

{-------------------------------------------------------------------------------}
{小类的选择}
procedure TFrm_SY_CK_JYP_SearchPP.chk_PPXLBClick(Sender: TObject);
begin
  fcb_PPXLB.Enabled := chk_PPXLB.Checked;
end;

{-------------------------------------------------------------------------------}
{年度的选择}
procedure TFrm_SY_CK_JYP_SearchPP.chk_NDClick(Sender: TObject);
begin
  spEdt_From_ND.Enabled := chk_ND.checked;
  spEdt_To_ND.Enabled := chk_ND.checked;
end;

{-------------------------------------------------------------------------------}
{票品面值}
procedure TFrm_SY_CK_JYP_SearchPP.chk_PPMZClick(Sender: TObject);
begin
  edt_PPMZ.Enabled := chk_PPMZ.Checked;
end;

{-------------------------------------------------------------------------------}
{票品售价}
procedure TFrm_SY_CK_JYP_SearchPP.chk_PPSJClick(Sender: TObject);
begin
  edt_SJ.Enabled := chk_PPSJ.Checked;
end;

{-------------------------------------------------------------------------------}
{志号}
procedure TFrm_SY_CK_JYP_SearchPP.chk_ZHClick(Sender: TObject);
begin
  edt_ZH.Enabled := chk_ZH.Checked;
end;

{-------------------------------------------------------------------------------}
{票品名称}
procedure TFrm_SY_CK_JYP_SearchPP.chk_MCClick(Sender: TObject);
begin
  edt_MC.Enabled := chk_MC.Checked;
end;

{-------------------------------------------------------------------------------}
{输入合法的面值和售价}
procedure TFrm_SY_CK_JYP_SearchPP.edt_PPMZKeyPress(Sender: TObject;
  var Key: Char);
begin
  if not (Key in ['0'..'9', '.', Chr(VK_BACK)]) then
    Key := Chr(0);
end;

{-------------------------------------------------------------------------------}
{生成sQL语句  (零枚票品库存TKS_TXPPKC , tb_YZPPXXB, TB_YZPPTUXXB)}
function TFrm_SY_CK_JYP_SearchPP.GetSQL: string;
var
  l_sql: string;
begin
  if FB_ShowZero then
    l_sql := 'Select b.Type,'' '' KFDM, '' '' KFMC, TDM PPDM, TMC PPMC, ZH, TPMZ MZ, TPSJ SJ, '' '' KWH, PPLB, 0 JJ, 0 XJ, 0 JSJ, 0 ZK, 0 SL ' +
      ' from TB_YZPPXXB b' +
      ' where 1=1 '
  else
    l_sql := 'Select b.Type,a.KFDM, d.KFMC, a.PPDM PPDM, b.TMC PPMC, b.ZH, b.TPMZ MZ, b.TPSJ SJ, a.KWH, b.PPLB, a.JJ, a.XJ, a.JSJ, a.ZK, a.TS SL ' +
      ' from %s a, TB_YZPPXXB b, TGS_KFRYDZB c, TGS_KFB d ' +
      ' where a.PPDM = b.TDM  and d.KFDM = a.KFDM  and c.KFDM = d.KFDM ' +
      ' and a.TS>0 and c.YGDM =' + QuotedStr(VG_UserID);

  if Lios_Type = io_txp then
    l_sql := format(l_sql, ['TYS_TXPPKC'])
  else
    l_sql := format(l_sql, ['TYS_JYPPKC']);

  {库房}
  if chk_KF.Checked then
    l_sql := l_sql + '  and  a.KFDM =' + QuotedStr(fcb_KF.FieldString);

  {票品类别}
  if chk_PPDLB.Checked then
    if Lios_Type = io_txp then
      l_sql := l_sql + '  and  b.TYPE =' + QuotedStr(fcb_PPDLB.FieldString)
    else
      l_sql := l_sql + '  and  b.TYPE =''jttp'' ';

  {小类}
  if chk_PPXLB.Checked then
    if Lios_Type = io_txp then
      l_sql := l_sql + '  and  substr(b.PPLB, 1, 1) =' + QuotedStr(fcb_PPXLB.FieldString)
    else
      l_sql := l_sql + '  and  b.PPLB <> ''101'' and substr(b.PPLB, 1, 3) =' + QuotedStr(fcb_PPXLB.FieldString);

  {发行年度}
  if chk_ND.Checked then
    l_sql := l_sql + ' and to_char(b.FXRQ,''yyyy'')>=''' + spEdt_From_ND.text + ''' and to_char(b.FXRQ,''yyyy'')<=''' + spEdt_To_ND.text + '''';

  {票品面值}
  if chk_PPMZ.Checked = True then
    l_sql := l_sql + ' and b.TPMZ=' + FloatToStr(StrToFloat(edt_PPMZ.Text) * 100);

  {票品售价}
  if chk_PPSJ.Checked = True then
    l_sql := l_sql + ' and b.TPSJ=' + FloatToStr(StrToFloat(edt_SJ.Text) * 100);

  {志号}
  if chk_ZH.Checked = True then
    l_SQL := l_SQL + ' and b.ZH like ''%' + edt_ZH.Text + '%''';

  {票品名称}
  if chk_MC.Checked = True then
    l_SQL := l_SQL + ' and b.TMC like ''%' + edt_MC.Text + '%''';

  l_SQL := l_SQL + ' order by b.TDM  ';
  Result := l_sql;
end;


procedure TFrm_SY_CK_JYP_SearchPP.bbtn_OKClick(Sender: TObject);
begin
  {必须选择票品类别,主模块用(必须属于某一票品,因为各票品类别的处理不一致)}
  if (not chk_PPDLB.Checked) or (fcb_PPDLB.ItemIndex = -1) then
  begin
    Application.MessageBox('必须选择票品类别!', '提示', MB_OK + MB_IconInformation);
    Exit;
  end;

  {票品面值}
  if chk_PPMZ.Checked then
    if Trim(edt_PPMZ.Text) = '' then
    begin
      Application.MessageBox('必须输入合法的票品面值!', '提示', MB_OK + MB_IconInformation);
      edt_PPMZ.SetFocus;
      Exit;
    end;

  {票品售价}
  if chk_PPSJ.Checked then
    if Trim(edt_SJ.Text) = '' then
    begin
      Application.MessageBox('必须输入合法的票品售价!', '提示', MB_OK + MB_IconInformation);
      edt_SJ.SetFocus;
      Exit;
    end;

  ModalResult := mrOK;
end;

procedure TFrm_SY_CK_JYP_SearchPP.FormShow(Sender: TObject);
begin
  {添加票品类别}
  if Lios_Type = io_txp then
  begin
    fcb_PPDLB.ClearAll;
    fcb_PPDLB.FieldItems.Add('ptyp');
    fcb_PPDLB.Items.Add('普通邮票');
    fcb_PPDLB.FieldItems.Add('jtlm');
    fcb_PPdLB.Items.Add('纪特零枚');
    fcb_PPDLB.FieldItems.Add('fpj');
    fcb_PPDLB.Items.Add('封片简');
  {jttp纪特套票不用考虑}
  end
  else
    with qry_Tmp do
    begin
      Close;
      SQL.Text := 'Select distinct DL,SubStr(YZLDM,1,1) sort_order from TG_YZPPLDMB'#13#10 +
        'where (YZLDM like ''9%'') or (YZLDM like ''8%'') or (YZLDM like ''1%'' and YZLDM <>''101'') order by sort_order';
      Open;

      fcb_PPDLB.ClearAll;
      while not Eof do
      begin
        fcb_PPDLB.Items.Add(FieldByName('DL').AsString);
        fcb_PPDLB.FieldItems.Add(FieldByName('sort_order').AsString);
        Next;
      end;
    end;

  chk_KF.Enabled := not FB_ShowZero;
  chk_PPDLB.Checked := True; {默认值}
  if Lios_Type = io_jyp then
    fcb_PPDLB.ItemIndex := 0
  else
    fcb_PPDLB.ItemIndex := L_Index;
  fcb_PPDLBChange(nil); {刷新小类}
end;

end.

⌨️ 快捷键说明

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