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

📄 sj_jshzd.pas

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

{*******************************************************}
{                                                       }
{                      结算汇总单                       }
{                                                       }
{            中软金马公司版权所有。2002.12前            }
{                                                       }
{               编制:中软金马项目开发组                }
{                                                       }
{                                                       }
{*******************************************************}
(*
本模块在省级集邮票管理、省级市场购入票管理、省级集邮品管理、省级零枚票管理、
地市集邮票管理、地市集邮品管理、地市市场购入票管理 七个模块调用
*)
unit SJ_JSHZD;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Db, DBTables, Grids, DBGrids, Buttons, ExtCtrls, RXDBCtrl, FORMBASE,
  RxQuery, sqlstrings, RXCtrls, Spin, DBGridExport, Menus,
  DBCtrls;

type
  TSearchState = (ssHZ, ssMX);

type
  Tfrm_JSHZD = class(TFFormBase)
    RxDBG_hz: TRxDBGrid;
    Panel1: TPanel;
    DS_hz: TDataSource;
    qry_hz: TRxQuery;
    BitBtn1: TBitBtn;
    Panel2: TPanel;
    XttxTitle: TRxLabel;
    DWMC: TLabel;
    Panel3: TPanel;
    BitBtn3: TBitBtn;
    Pnl_Condition: TPanel;
    Label5: TLabel;
    RGr_Base: TRadioGroup;
    l2: TLabel;
    l1: TLabel;
    RG_view: TRadioGroup;
    Label2: TLabel;
    SE_nd: TSpinEdit;
    RxDBG_mx: TRxDBGrid;
    SqlS_hzR: TSqlStrings;
    DBLCB_dw: TDBLookupComboBox;
    DS_dw: TDataSource;
    Qry_dw: TRxQuery;
    CB_chked: TCheckBox;
    SqlS_hzC: TSqlStrings;
    SqlS_mxR: TSqlStrings;
    SqlS_mxC: TSqlStrings;
    Qry_mx: TRxQuery;
    DS_mx: TDataSource;
    SE_frm: TSpinEdit;
    SE_to: TSpinEdit;
    procedure RxDBGrid1TitleClick(Column: TColumn);
    procedure qry_JYPJJGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    procedure qry_hzAfterOpen(DataSet: TDataSet);
    procedure BitBtn3Click(Sender: TObject);
    procedure RG_viewClick(Sender: TObject);
    procedure select(Sender: TObject);
    procedure Qry_mxAfterOpen(DataSet: TDataSet);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    FSearchState: TSearchState;
    Fio_Type: TIO_TYPE;
    procedure Set_SearchState(Value: TSearchState);
  public
    { Public declarations }
  published
    property SearchState: TSearchState read FSearchState write Set_SearchState default ssHZ;
    {published declarations }
  end;

function Show_JSHZD(io_typ: TIO_TYPE; ATag: Integer): Boolean;
var
  frm_JSHZD: Tfrm_JSHZD;

implementation
uses pub,SY_YJHZ_RPT;
{$R *.DFM}

function Show_JSHZD(io_typ: TIO_TYPE; ATag: Integer): Boolean;
begin
  Application.CreateForm(Tfrm_JSHZD, frm_JSHZD);
  with frm_JSHZD do
  try
    Tag := ATag;
    DWMC.Caption := '使用单位:' + VG_UnitName;
    FIO_type := io_typ;
    Caption := '邮资票品管理信息系统——' + pCaption[integer(Fio_Type)] + '业务';
    XttxTitle.Caption := '结算汇总单';

    case Fio_type of
      io_txp:
        Qry_dw.MacroByName('TJ').AsString := 'TXYW=''1''';
    else
      Qry_dw.MacroByName('TJ').AsString := 'JYYW=''1''';
    end;

    Qry_dw.Open;
    SE_frm.Value := 1;
    SE_to.Value := VG_Month;
    SE_nd.Value := VG_Year;
    RG_view.OnClick(nil);
    result := ShowModal = MB_OK;
  finally
    Destroy;
  end;
end;

procedure Tfrm_JSHZD.RxDBGrid1TitleClick(Column: TColumn);
  procedure SetEmpty;
  begin
    with TRxQuery(TDBGrid(Column.Grid).DataSource.DataSet) do
    begin
      Close;
      MacroByName('CON1').AsString := '''''';
      MacroByName('CON2').AsString := '''''';
      MacroByName('CON3').AsString := '''''';
      MacroByName('CON4').AsString := '''''';
      MacroByName('CON5').AsString := '''''';
      MacroByName('CON6').AsString := '''''';
      MacroByName('CON7').AsString := '''''';
    end;
  end;
begin
  with TRxQuery(TDBGrid(Column.Grid).DataSource.DataSet) do
  begin
    if Column.FieldName = 'DWMC' then
    begin
      SetEmpty;
      MacroByName('CON1').AsString := 'DWMC';
      MacroByName('CON_GRP').AsString := 'DWMC';
      MacroByName('CON_ORD').AsString := 'DWMC';
      Open;
    end
    else if Column.FieldName = 'RCKXZMC' then
    begin
      SetEmpty;
      MacroByName('CON2').AsString := 'R.RCKXZMC';
      MacroByName('CON_GRP').AsString := 'R.RCKXZMC';
      MacroByName('CON_ORD').AsString := 'RCKXZMC';
      Open;
    end
    else if Column.FieldName = 'PPDM' then
    begin
      SetEmpty;
      case Fio_type of
        io_yp:
          begin
            MacroByName('CON3').AsString := '''(''||Y.ZH||'')''||Y.MC';
            MacroByName('CON_GRP').AsString := '''(''||Y.ZH||'')''||Y.MC';
          end;
        io_txp:
          begin
            MacroByName('CON3').AsString := '''(''||Y.ZH||'')''||Y.TMC';
            MacroByName('CON_GRP').AsString := '''(''||Y.ZH||'')''||Y.TMC';
          end;
      else
        begin
          MacroByName('CON3').AsString := '''(''||Y.ZH||'')''||Y.TJC';
          MacroByName('CON_GRP').AsString := '''(''||Y.ZH||'')''||Y.TJC';
        end;
      end;
      MacroByName('CON_ORD').AsString := 'PPDM';
      Open;
    end
    else if Column.FieldName = 'JSZT' then
    begin
      SetEmpty;
      MacroByName('CON4').AsString := 'DECODE(JSZT, 0, ''否'', ''是'')';
      MacroByName('CON_GRP').AsString := 'DECODE(JSZT, 0, ''否'', ''是'')';
      MacroByName('CON_ORD').AsString := 'JSZT';
      Open;
    end
    else if Column.FieldName = 'FH' then
    begin
      SetEmpty;
      MacroByName('CON5').AsString := 'DECODE(JZY, NULL, ''否'', ''是'')';
      MacroByName('CON_GRP').AsString := 'DECODE(JZY, NULL, ''否'', ''是'')';
      MacroByName('CON_ORD').AsString := 'FH';
      Open;
    end
    else if Column.FieldName = 'KDRQ' then
    begin
      SetEmpty;
      MacroByName('CON6').AsString := 'TO_CHAR(KDRQ,''YYYY-MM-DD'')';
      MacroByName('CON_GRP').AsString := 'TO_CHAR(KDRQ,''YYYY-MM-DD'')';
      MacroByName('CON_ORD').AsString := 'KDRQ';
      Open;
    end
    else if Column.FieldName = 'DJRQ' then
    begin
      SetEmpty;
      MacroByName('CON7').AsString := 'TO_CHAR(DJRQ,''YYYY-MM-DD'')';
      MacroByName('CON_GRP').AsString := 'TO_CHAR(DJRQ,''YYYY-MM-DD'')';
      MacroByName('CON_ORD').AsString := 'DJRQ';
      Open;
    end;
  end;
end;

procedure Tfrm_JSHZD.qry_JYPJJGetText(Sender: TField; var Text: string;
  DisplayText: Boolean);
begin
  CurrGetText(Sender, Text, DisplayText);
end;

procedure Tfrm_JSHZD.qry_hzAfterOpen(DataSet: TDataSet);
begin

  with DataSet do
    TNumericField(FieldByName('JSJE')).DisplayFormat := '#,##0.00';
end;

procedure Tfrm_JSHZD.BitBtn3Click(Sender: TObject);
begin
  if (SE_frm.Value <> SE_to.Value) then
  begin
    CHQMsgBox('打印结算汇总单的起始月份和截止月份必须相同');
    exit;
  end;
  if not AsSigned(QuickRep_yjhz) then
    QuickRep_yjhz := TQuickRep_yjhz.Create(nil);
  with QuickRep_yjhz do
  try
    begin
      with Qry_Print do
      begin
        Close;
        case RGr_Base.ItemIndex of
          0:
            begin
              SQL := SqlStrings2.FSqlText[Fio_type];
              ParamByName('MM').Value := SE_frm.Value; //VG_Month;
            end;
          1:
            begin
              SQL := SqlStrings1.FSqlText[Fio_type];
              ParamByName('MM').Value := SE_frm.Value; //VG_Month;
            end;
        end;
        Open;
      end;

      QRLabel1.Caption := pCaption[integer(Fio_Type)] + '月结算汇总报表';
      QRLabel1.Left := Round((PageHeaderBand1.Width - QrLabel1.Width) / 2);
      QRLabel7.Caption := VarToStr(VG_Year) + ' 年 ' + VarToStr(SE_frm.Value) + ' 月';
      QRLabel7.Left := Round((PageHeaderBand1.Width - QrLabel7.Width) / 2);
      QRLabel12.Caption := '单位名称:' + VG_UNITNAME;
      QRLabel9.Caption := '制表日期:' + FormatDateTime('YYYY"年"MM"月"DD"日"', now);
      prepare;
      QRLabel11.Caption := IntToStr(QRPrinter.PageCount);
      Qry_Print.First;
      LineCount := 0;
      sum_jsje := 0;
      sum_xjje := 0;
      Preview;
    end;
  finally
    Free;
    QuickRep_yjhz := nil;
  end;
end;

procedure Tfrm_JSHZD.RG_viewClick(Sender: TObject);
begin
  case RG_view.ItemIndex of
    0: SearchState := ssHZ;
    1: SearchState := ssMX;
  end;
end;

procedure Tfrm_JSHZD.select(Sender: TObject);
  procedure SetMacros;
  var
    v_s_mac: string;
  begin
    v_s_mac := 'AND to_char(F.KDRQ, ''YYYYMM'') >= ''' + SE_nd.Text + formatfloat('00', SE_frm.Value) + ''' ';
    v_s_mac := v_s_mac + 'AND to_char(F.KDRQ, ''YYYYMM'') <= ''' + SE_nd.Text + formatfloat('00', SE_to.Value) + ''' ';
    if DBLCB_dw.KeyValue <> ' ' then
      v_s_mac := v_s_mac + 'AND G.DWDM=''' + qRY_DW.FieldByName('DWDM').AsString + ''' ';
    if CB_chked.Checked then
      case RGr_Base.ItemIndex of
        0:
          v_s_mac := v_s_mac + ' AND not F.HDR is Null ';
        1:
          v_s_mac := v_s_mac + ' AND not F.JZY is Null ';
      end;
    qry_hz.MacroByName('TJ').AsString := v_s_mac;
    qry_mx.MacroByName('TJ').AsString := v_s_mac;
  end;

begin
  Qry_hz.Close;
  Qry_mx.Close;
  case RGr_Base.ItemIndex of
    0:
      begin
        qry_hz.SQL := SqlS_hzC.FSqlText[Fio_type];
        qry_mx.SQL := SqlS_mxC.FSqlText[Fio_type];
      end;
    1:
      begin
        qry_hz.SQL := SqlS_hzR.FSqlText[Fio_type];
        qry_mx.SQL := SqlS_mxR.FSqlText[Fio_type];
      end;
  end;
  SetMacros;

  Qry_hz.Open;
  Qry_mx.Open;
  RxDBG_hz.Columns[0].Visible := DBLCB_dw.KeyValue = ' ';
  RxDBG_mx.Columns[0].Visible := DBLCB_dw.KeyValue = ' ';
  RxDBG_hz.Columns[7].Visible := RGr_Base.ItemIndex = 0;
  RxDBG_mx.Columns[11].Visible := RGr_Base.ItemIndex = 0;
end;

procedure Tfrm_JSHZD.Set_SearchState(Value: TSearchState);
begin
  FSearchState := Value;
  case Value of
    ssHZ: //总分户帐
      begin
        RxDBG_mx.Visible := False;
        RxDBG_hz.Align := alClient;
        RxDBG_hz.Visible := True;
      end;
    ssMX: //总分户帐明细
      begin
        RxDBG_hz.Visible := False;
        RxDBG_mx.Align := alClient;
        RxDBG_mx.Visible := True;
      end;
  end;

end;

procedure Tfrm_JSHZD.Qry_mxAfterOpen(DataSet: TDataSet);
begin
  with DataSet do
  begin
    TNumericField(FieldByName('JJ')).DisplayFormat := '#,##0.00';
    TNumericField(FieldByName('XJ')).DisplayFormat := '#,##0.00';
    TNumericField(FieldByName('JSJ')).DisplayFormat := '#,##0.00';
    TNumericField(FieldByName('JSJE')).DisplayFormat := '#,##0.00';
    TNumericField(FieldByName('SL')).DisplayFormat := '#,##0';
  end;

end;

procedure Tfrm_JSHZD.FormCreate(Sender: TObject);
begin
  GetAllColWidth(Self);
end;

procedure Tfrm_JSHZD.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  SaveAllColWidth(Self);
end;

end.

⌨️ 快捷键说明

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