unit U_YSSKListRMBMJ;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, DB, ADODB,
  cxInplaceContainer, cxDBTL, cxControls, cxTLData, ComCtrls, ToolWin,
  StdCtrls, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, DBClient,
  cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ExtCtrls,
  cxSplitter, cxGridLevel, cxClasses, cxGridCustomView, cxGrid,
  cxGridCustomPopupMenu, cxGridPopupMenu, RM_Dataset, RM_System, RM_Common,
  RM_Class, RM_GridReport, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdFTP,ShellAPI,IniFiles, cxCheckBox, cxCalendar,
  cxButtonEdit, cxTextEdit, cxPC, cxGridBandedTableView,
  cxGridDBBandedTableView,dxCore,ActiveX, cxLookAndFeels,
  cxLookAndFeelPainters, dxBarBuiltInMenu, cxNavigator;

type
  TfrmYSSKListRMBMJ = class(TForm)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBClose: TToolButton;
    ADOQueryTemp: TADOQuery;
    ADOQueryCmd: TADOQuery;
    Panel1: TPanel;
    ToolButton2: TToolButton;
    ToolButton1: TToolButton;
    RM1: TRMGridReport;
    RMDB_Main: TRMDBDataSet;
    cxGridPopupMenu2: TcxGridPopupMenu;
    DS_HZ: TDataSource;
    ADOQueryMain: TADOQuery;
    CDS_HZ: TClientDataSet;
    ToolButton3: TToolButton;
    cxTabControl1: TcxTabControl;
    cxGrid2: TcxGrid;
    Tv2: TcxGridDBTableView;
    v2Column6: TcxGridDBColumn;
    v2SQMoney: TcxGridDBColumn;
    v2YFMoney: TcxGridDBColumn;
    v2FKMoney: TcxGridDBColumn;
    v2BQMoney: TcxGridDBColumn;
    v2Column4: TcxGridDBColumn;
    v2Column7: TcxGridDBColumn;
    v2Column8: TcxGridDBColumn;
    v2ZJFKDate: TcxGridDBColumn;
    v2ZJFKMoney: TcxGridDBColumn;
    cxGridLevel1: TcxGridLevel;
    cxTabControl2: TcxTabControl;
    Panel2: TPanel;
    Label2: TLabel;
    begdate: TDateTimePicker;
    Panel3: TPanel;
    Label4: TLabel;
    FBegDate: TDateTimePicker;
    Label5: TLabel;
    FEndDate: TDateTimePicker;
    Panel4: TPanel;
    FactoryNameGYS: TEdit;
    Label3: TLabel;
    Label1: TLabel;
    HuiLv: TEdit;
    RadioGroup1: TRadioGroup;
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TBCloseClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure FactoryNameGYSChange(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure Tv2CellDblClick(Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
    procedure ToolButton3Click(Sender: TObject);
    procedure v2Column6HeaderClick(Sender: TObject);
    procedure cxTabControl1Change(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
  private
    { Private declarations }
    procedure InitGrid();
  public
    fDParameters1:string;
    { Public declarations }
    RKFlag,FCYID:String;

  end;

var
  frmYSSKListRMBMJ: TfrmYSSKListRMBMJ;

implementation
uses
  U_DataLink,U_RTFun,U_Fun,U_ZDYHelp,U_YSMXlistMonDay;

{$R *.dfm}



procedure TfrmYSSKListRMBMJ.InitGrid();
var
  FYue,FDate:string;
  FInt:Integer;
  FHuiLv:Double;
begin
  if cxTabControl2.TabIndex=2 then
  begin
    if Trim(HuiLv.Text)='' then
    begin
      Application.MessageBox('汇率不能为空!','提示',0);
      Exit;
    end;
    if TryStrToFloat(HuiLv.Text,FHuiLv)=False then
    begin
      Application.MessageBox('汇率非法数字!','提示',0);
      Exit;
    end;
  end;
  FInt:=cxTabControl1.TabIndex+1;
  FYue:=Trim(IntToStr(FInt));
  if FInt<10 then
  begin
    FYue:='0'+Trim(IntToStr(FInt));
  end;
  FDate:=Trim(FormatDateTime('yyyy',begdate.Date))+'-'+FYue;
  FBegDate.Date:=StrToDate(FDate+'-01');
  if FInt=12 then
  FEndDate.Date:=StrToDate(Trim(FormatDateTime('yyyy',begdate.Date))+'-12-31')
  else
  FEndDate.Date:=StrToDate(Trim(FormatDateTime('yyyy',begdate.Date))+'-'+Trim(IntToStr(FInt+1))+'-01')-1;
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin

      Close;
      SQL.Clear;
      Filtered:=False;
      if RadioGroup1.ItemIndex=0 then
      begin
        if cxTabControl2.TabIndex<>2 then
        begin
          sql.Add(' exec P_YSSK_Month_BZ :Fdate,:BZType,:HuiLv ') ;
        end else
        begin
          sql.Add(' exec P_YSSK_Month_RMB :Fdate,:HuiLv ') ;
        end;
        if cxTabControl2.TabIndex=0 then
        begin
          Parameters.ParamByName('BZType').Value:='￥';
          Parameters.ParamByName('HuiLv').Value:=1;
        end else
         if cxTabControl2.TabIndex=1 then
        begin
          Parameters.ParamByName('BZType').Value:='$';
          Parameters.ParamByName('HuiLv').Value:=1;
        end else
        if cxTabControl2.TabIndex=2 then
        begin
          Parameters.ParamByName('HuiLv').Value:=HuiLv.Text;
        end;
        Parameters.ParamByName('Fdate').Value:=FDate;
      end else
      if RadioGroup1.ItemIndex=1 then
      begin
        if cxTabControl2.TabIndex<>2 then
        begin
          sql.Add(' exec P_YSSK_Day_BZ :FBegdate,:FEndDate,:BZType,:HuiLv ') ;
        end else
        begin
          sql.Add(' exec P_YSSK_Day_RMB :FBegdate,:FEndDate,:HuiLv ') ;
        end;
        if cxTabControl2.TabIndex=0 then
        begin
          Parameters.ParamByName('BZType').Value:='￥';
          Parameters.ParamByName('HuiLv').Value:=1;
        end else
        if cxTabControl2.TabIndex=1 then
        begin
          Parameters.ParamByName('BZType').Value:='$';
          Parameters.ParamByName('HuiLv').Value:=1;
        end else
        if cxTabControl2.TabIndex=2 then
        begin
          Parameters.ParamByName('HuiLv').Value:=HuiLv.Text;
        end;
        Parameters.ParamByName('FBegdate').Value:=Trim(FormatDateTime('yyyy-MM-dd',FBegDate.Date));
        Parameters.ParamByName('FEndDate').Value:=Trim(FormatDateTime('yyyy-MM-dd',FEndDate.Date+1));
      end;
      Open;
    end;
    SCreateCDS20(ADOQueryMain,CDS_HZ);
    SInitCDSData20(ADOQueryMain,CDS_HZ);
  finally
    ADOQueryMain.EnableControls;
  end;
  //ToolButton2.Click;
end;


procedure TfrmYSSKListRMBMJ.FormDestroy(Sender: TObject);
begin
  frmYSSKListRMBMJ:=nil;
end;

procedure TfrmYSSKListRMBMJ.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:=caFree;
end;

procedure TfrmYSSKListRMBMJ.TBCloseClick(Sender: TObject);
begin
  WriteCxGrid('应收款统计报表YX',Tv2,'财务管理');
  Close;
end;
procedure TfrmYSSKListRMBMJ.FormShow(Sender: TObject);
var
  fstr:string;
begin
  ReadCxGrid('应收款统计报表YX',Tv2,'财务管理');
  begdate.DateTime:=SGetServerDateMBeg(ADOQueryTemp);
  Fbegdate.DateTime:=SGetServerDate(ADOQueryTemp);
  FEndDate.Date:=Fbegdate.DateTime;
  fstr:=Trim(FormatDateTime('MM',begdate.Date));
  cxTabControl1.TabIndex:=StrToInt(fstr)-1;
  Panel3.Visible:=False;
 // InitGrid();
end;

procedure TfrmYSSKListRMBMJ.TBRafreshClick(Sender: TObject);
begin
  InitGrid();
  CDS_HZ.IndexFieldNames:='FactoryName';
  with CDS_HZ do
  begin
    with IndexDefs do
    begin
      Clear;
      with AddIndexDef do
      begin
        Name := 'Fld1Indx';
        Fields := 'FactoryName';
        Options := [ixDescending];  //降序
      end;
    end;
  end;


end;

procedure TfrmYSSKListRMBMJ.ToolButton2Click(Sender: TObject);
begin
  if ADOQueryMain.Active=False then Exit;
  SDofilter(ADOQueryMain,SGetFilters(Panel4,1,2));
  SCreateCDS20(ADOQueryMain,CDS_HZ);
  SInitCDSData20(ADOQueryMain,CDS_HZ);
end;

procedure TfrmYSSKListRMBMJ.FactoryNameGYSChange(Sender: TObject);
begin
  ToolButton2.Click;
end;

procedure TfrmYSSKListRMBMJ.ToolButton1Click(Sender: TObject);
begin
  if ADOQueryMain.IsEmpty then Exit;
  //SelExportData(Tv2,ADOQueryMain,'应收款收款统计列表');

  TcxGridToExcel('应收款收款统计列表',cxGrid2);
end;

procedure TfrmYSSKListRMBMJ.Tv2CellDblClick(Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  if cxTabControl2.TabIndex>1 then Exit;
  try
    frmYSMXlistMonDay:=TfrmYSMXlistMonDay.Create(Application);
    with frmYSMXlistMonDay do
    begin
      FMX:='99';
      PState:=Self.RadioGroup1.ItemIndex;
      if Self.cxTabControl2.TabIndex=0 then
      begin
        frmYSMXlistMonDay.FBZ:='￥'
      end else
      if Self.cxTabControl2.TabIndex=1 then
      begin
        frmYSMXlistMonDay.FBZ:='$'
      end;
      if Self.RadioGroup1.ItemIndex=0 then
      begin
        frmYSMXlistMonDay.begdate.DateTime:=Self.begdate.DateTime;
        frmYSMXlistMonDay.cxTabControl1.TabIndex:=Self.cxTabControl1.TabIndex;
        frmYSMXlistMonDay.factoryName.Text:=Self.CDS_HZ.fieldbyname('factoryName').AsString;
        frmYSMXlistMonDay.Fbegdate.DateTime:=Self.Fbegdate.DateTime;
        frmYSMXlistMonDay.FEnddate.DateTime:=Self.FEnddate.DateTime;
      end else
      if Self.RadioGroup1.ItemIndex=1 then
      begin
        frmYSMXlistMonDay.begdate.DateTime:=Self.begdate.DateTime;
        frmYSMXlistMonDay.Fbegdate.DateTime:=Self.Fbegdate.DateTime;
        frmYSMXlistMonDay.FEnddate.DateTime:=Self.FEnddate.DateTime;
        frmYSMXlistMonDay.factoryName.Text:=Self.CDS_HZ.fieldbyname('factoryName').AsString;
      end;
      frmYSMXlistMonDay.factoryName.TxtCode:=Self.CDS_HZ.fieldbyname('factoryNo').AsString;
        frmYSMXlistMonDay.Align:=alClient;
      if ShowModal=1 then
      begin

      end;
    end;
  finally
    frmYSMXlistMonDay.Free;
  end;
end;

procedure TfrmYSSKListRMBMJ.ToolButton3Click(Sender: TObject);
var
  filepath,fsj:string;
  mBegdate,mEnddate:string;
  FName,FNameSX,FNameJX:String;
  i:Integer;
begin
  {for i:=0 to Tv2.ColumnCount-1 do
  begin
    FName:=Tv2.Columns[i].DataBinding.FilterFieldName;
    FNameSX:=Trim(FName)+'-1';
    FNameJX:=Trim(FName)+'-2';
    CDS_HZ.AddIndex(FNameSX, FName, []);             // 正序
    CDS_HZ.AddIndex(FNameJX, FName, [ixDescending]); // 倒序
    if Tv2.Columns[i].SortOrder=soDescending then
    begin
      CDS_HZ.IndexName:=FNameJX;
    end else
    if Tv2.Columns[i].SortOrder=soAscending then
    begin
      CDS_HZ.IndexName:=FNameSX;
    end;
  end; }
  fsj:=cxTabControl1.Tabs[cxTabControl1.TabIndex].Caption;
  mbegdate:=FormatDateTime('yyyy',begdate.Date)+'年'+Trim(Copy(fsj,3,Length(fsj)-2))+'份';
  if CDS_HZ.IsEmpty then exit;
  try
    filepath:=ExtractFilePath(Application.ExeName) + 'report\应收款统计报表YX.rmf';
    if not FileExists(Pchar(filepath))  then
    begin
      application.MessageBox(pchar('文件['+filepath+']不存在！'),'提示信息',MB_IConError);
      exit;
    end;
    RmVariables['begDate'] :=mbegdate;
    RM1.LoadFromFile(filepath);
    RM1.ShowReport;
  finally

  end;

end;

procedure TfrmYSSKListRMBMJ.v2Column6HeaderClick(Sender: TObject);
var
  FName,FNameSX,FNameJX:String;
begin
  FName:=TcxGridDBColumn(Sender).DataBinding.FilterFieldName;
  FNameSX:=Trim(FName)+'-1';
  FNameJX:=Trim(FName)+'-2';
  CDS_HZ.AddIndex(FNameSX, FName, []);             { 正序 }
  CDS_HZ.AddIndex(FNameJX, FName, [ixDescending]); { 倒序 }
  if TcxGridDBColumn(Sender).SortOrder=soDescending then
  begin
    CDS_HZ.IndexName:=FNameSX;
  end else
  if TcxGridDBColumn(Sender).SortOrder=soAscending then
  begin
    CDS_HZ.IndexName:=FNameJX;
  end;

end;

procedure TfrmYSSKListRMBMJ.cxTabControl1Change(Sender: TObject);
begin
  if cxTabControl2.TabIndex=2 then
  begin
    try
      ADOQueryMain.DisableControls;
      with ADOQueryMain do
      begin
        Close;
        SQL.Clear;
        Filtered:=False;
        sql.Add(' exec P_YSSK_Month_BZ :Fdate,:BZType,:HuiLv ') ;
        Parameters.ParamByName('BZType').Value:='无';
        Parameters.ParamByName('HuiLv').Value:=1;
        Parameters.ParamByName('Fdate').Value:='2000-01';
        Open;
      end;
      SCreateCDS20(ADOQueryMain,CDS_HZ);
      SInitCDSData20(ADOQueryMain,CDS_HZ);
    finally
      ADOQueryMain.EnableControls;
    end;
  end;
  InitGrid();
end;

procedure TfrmYSSKListRMBMJ.RadioGroup1Click(Sender: TObject);
begin
  if RadioGroup1.ItemIndex=0 then
  begin
    Panel2.Visible:=True;
    Panel3.Visible:=False;
    cxTabControl1.Visible:=True;
    v2SQMoney.Caption:=Copy(v2SQMoney.Summary.GroupFormat,1,8);
    v2YFMoney.Caption:=Copy(v2YFMoney.Summary.GroupFormat,1,8);
    v2FKMoney.Caption:=Copy(v2FKMoney.Summary.GroupFormat,1,8);
    v2BQMoney.Caption:=Copy(v2BQMoney.Summary.GroupFormat,1,8);
  end else
  if RadioGroup1.ItemIndex=1 then
  begin
    Panel2.Visible:=False;
    Panel3.Visible:=True;
    cxTabControl1.Visible:=False;
    v2SQMoney.Caption:=Copy(v2SQMoney.Summary.GroupFormat,10,8);
    v2YFMoney.Caption:=Copy(v2YFMoney.Summary.GroupFormat,10,8);
    v2FKMoney.Caption:=Copy(v2FKMoney.Summary.GroupFormat,10,8);
    v2BQMoney.Caption:=Copy(v2BQMoney.Summary.GroupFormat,10,8);
  end;
  InitGrid();
end;

end.
