unit U_YFFKListDZEY;

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, BtnEdit,
  cxLookAndFeels, cxLookAndFeelPainters, dxBarBuiltInMenu, cxNavigator,
  dxSkinsCore,    
   dxSkinDarkRoom,  
     
     
     
    
    
    
   dxSkinOffice2013White,  
    dxSkinSharpPlus, 
  dxSkinSpringTime,   
  dxSkinsDefaultPainters,   
   dxSkinscxPCPainter;

type
  TfrmYFFKListDZEY = 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;
    Panel2: TPanel;
    Label2: TLabel;
    begdate: TDateTimePicker;
    Panel3: TPanel;
    Label4: TLabel;
    FBegDate: TDateTimePicker;
    Label5: TLabel;
    FEndDate: TDateTimePicker;
    Panel4: TPanel;
    Label3: TLabel;
    RadioGroup1: TRadioGroup;
    FactoryNameGYS: TEdit;
    v2Column1: TcxGridDBColumn;
    v2Column2: TcxGridDBColumn;
    v2Column3: TcxGridDBColumn;
    v2Column5: TcxGridDBColumn;
    Label1: TLabel;
    FactoryNo: TEdit;
    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 ToolButton1Click(Sender: TObject);
    procedure Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
    procedure ToolButton3Click(Sender: TObject);
    procedure cxTabControl1Change(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure FactoryNameGYSChange(Sender: TObject);
  private
    { Private declarations }
    procedure InitGrid();
  public
    fDParameters1: string;
    { Public declarations }
    RKFlag, FCYID: string;
  end;

//var
 // frmYFFKListDZEY: TfrmYFFKListDZEY;

implementation

uses
  U_DataLink, U_RTFun, U_Fun, U_ZDYHelp, U_YFMXlistMonDayGQXEY, U_GYSListSelJJ;

{$R *.dfm}

procedure TfrmYFFKListDZEY.InitGrid();
var
  FYue, FDate: string;
  FInt: Integer;
  FHuiLv: Double;
begin
  {if RadioGroup1.ItemIndex=0 then
  begin
    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;
  end;  }
  if (RadioGroup1.ItemIndex = 0) or (RadioGroup1.ItemIndex = 2) then
  begin
    if cxTabControl1.TabIndex < 11 then
    begin
      FInt := cxTabControl1.TabIndex + 2;
    end
    else
    begin
      FInt := 1;
    end;
    FYue := Trim(IntToStr(FInt));
    if FInt < 10 then
    begin
      FYue := '0' + Trim(IntToStr(FInt));
    end;
    if FInt <> 1 then
    begin
      FDate := Trim(FormatDateTime('yyyy', begdate.Date)) + '-' + FYue;
    end
    else
    begin
      FDate := Trim(FormatDateTime('yyyy', begdate.Date));
      FDate := IntToStr(strtoint(FDate) + 1);
      FDate := FDate + '-' + FYue;
    end;

    FBegDate.Date := StrToDate(FDate + '-01');
    if FInt = 12 then
      FEndDate.Date := StrToDate(Trim(FormatDateTime('yyyy', begdate.Date)) + '-12-31')
    else
    begin
      if FInt = 1 then
      begin
        FEndDate.Date := StrToDate(FDate + '-31');
      end
      else
      begin
        FEndDate.Date := StrToDate(Trim(FormatDateTime('yyyy', begdate.Date)) + '-' + Trim(IntToStr(FInt + 1)) + '-01') - 1;
      end;
    end;
  end;
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin

      Close;
      SQL.Clear;
      Filtered := False;
      if RadioGroup1.ItemIndex = 0 then
      begin
        sql.Add(' exec P_YFFK_Month :Fdate ');
        Parameters.ParamByName('Fdate').Value := FDate;
      end
      else if RadioGroup1.ItemIndex = 1 then
      begin
        sql.Add(' exec P_YFFK_Day :FBegdate,:FEndDate ');
        Parameters.ParamByName('FBegdate').Value := Trim(FormatDateTime('yyyy-MM-dd', FBegDate.Date));
        Parameters.ParamByName('FEndDate').Value := Trim(FormatDateTime('yyyy-MM-dd', FEndDate.Date + 1));
      end
      else if RadioGroup1.ItemIndex = 2 then
      begin
        sql.Add(' exec P_YFFK_Month_GZ :Fdate ');
        Parameters.ParamByName('Fdate').Value := FDate;       
      end;
      Open;
    end;
    SCreateCDS20(ADOQueryMain, CDS_HZ);
    SInitCDSData20(ADOQueryMain, CDS_HZ);
  finally
    ADOQueryMain.EnableControls;
  end;
  //ToolButton2.Click;
end;

procedure TfrmYFFKListDZEY.FormDestroy(Sender: TObject);
begin
  //frmYFFKListDZEY:=nil;
end;

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

procedure TfrmYFFKListDZEY.TBCloseClick(Sender: TObject);
begin
  WriteCxGrid('应付款统计报表YXDZ', Tv2, '财务管理');
  Close;
end;

procedure TfrmYFFKListDZEY.FormShow(Sender: TObject);
var
  fstr: string;
begin
  ReadCxGrid('应付款统计报表YXDZ', Tv2, '财务管理');
  {begdate.DateTime:=SGetServerDateMBeg(ADOQueryTemp);
  Fbegdate.DateTime:=SGetServerDate(ADOQueryTemp);
  FEndDate.Date:=Fbegdate.DateTime;
  fstr:=Trim(FormatDateTime('MM',begdate.Date));
  cxTabControl1.TabIndex:=StrToInt(fstr)-1; }
  Fbegdate.DateTime := SGetServerDate(ADOQueryTemp);
  FEndDate.Date := Fbegdate.DateTime;
  fstr := Trim(FormatDateTime('MM', Fbegdate.Date));
  if StrToInt(fstr) = 1 then
  begin
    begdate.DateTime := SGetServerDateMBeg(ADOQueryTemp) - 40;
    cxTabControl1.TabIndex := 11; //StrToInt(fstr)-1;
  end
  else
  begin
    begdate.DateTime := SGetServerDateMBeg(ADOQueryTemp);
    cxTabControl1.TabIndex := StrToInt(fstr) - 2;
  end;
  cxTabControl1.Tabs[11].Caption := '  1月（' + inttostr(strtoint(FormatDateTime('yyyy', begdate.Date)) + 1) + '年)';
  Panel3.Visible := False;
 // InitGrid();
end;

procedure TfrmYFFKListDZEY.TBRafreshClick(Sender: TObject);
begin
  cxTabControl1.Tabs[11].Caption := '  1月（' + inttostr(strtoint(FormatDateTime('yyyy', begdate.Date)) + 1) + '年)';
  InitGrid();
end;

procedure TfrmYFFKListDZEY.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 TfrmYFFKListDZEY.ToolButton1Click(Sender: TObject);
begin
  if ADOQueryMain.IsEmpty then
    Exit;
  TcxGridToExcel('应付款统计列表DZ', cxGrid2);
end;

procedure TfrmYFFKListDZEY.Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
var
  FName, FNO: string;
  FDate, FYue: string;
  FInt: Integer;
  FFBegDate, FFEndDate: TDate;
begin
  if CDS_HZ.IsEmpty then
    Exit;
  if RadioGroup1.ItemIndex = 0 then
  begin
    if cxTabControl1.TabIndex < 11 then
    begin
      FInt := cxTabControl1.TabIndex + 2;
    end
    else
    begin
      FInt := 1;
    end;
    FYue := Trim(IntToStr(FInt));
    if FInt < 10 then
    begin
      FYue := '0' + Trim(IntToStr(FInt));
    end;
    if FInt <> 1 then
    begin
      FDate := Trim(FormatDateTime('yyyy', begdate.Date)) + '-' + FYue;
    end
    else
    begin
      FDate := Trim(FormatDateTime('yyyy', begdate.Date));
      FDate := IntToStr(strtoint(FDate) + 1);
      FDate := FDate + '-' + FYue;
    end;

    FFBegDate := StrToDate(FDate + '-01');
    if FInt = 12 then
      FFEndDate := StrToDate(Trim(FormatDateTime('yyyy', begdate.Date)) + '-12-31')
    else
    begin
      if FInt = 1 then
      begin
        FFEndDate := StrToDate(FDate + '-31');
      end
      else
      begin
        FFEndDate := StrToDate(Trim(FormatDateTime('yyyy', begdate.Date)) + '-' + Trim(IntToStr(FInt + 1)) + '-01') - 1;
      end;
    end;

  end
  else if RadioGroup1.ItemIndex = 1 then
  begin
    FFBegDate := FBegDate.Date;
    FFEndDate := FEndDate.Date;
  end;
  try
    frmYFMXlistMonDayGQXEY := TfrmYFMXlistMonDayGQXEY.Create(Application);
    with frmYFMXlistMonDayGQXEY do
    begin
      FMX := '99';
      PState := Self.RadioGroup1.ItemIndex;
      if Self.RadioGroup1.ItemIndex = 0 then
      begin
        frmYFMXlistMonDayGQXEY.begdate.DateTime := Self.begdate.DateTime;
        frmYFMXlistMonDayGQXEY.cxTabControl1.TabIndex := Self.cxTabControl1.TabIndex;
        frmYFMXlistMonDayGQXEY.factoryName.Text := Self.CDS_HZ.fieldbyname('factoryName').AsString;
        frmYFMXlistMonDayGQXEY.Fbegdate.DateTime := Self.Fbegdate.DateTime;
        frmYFMXlistMonDayGQXEY.FEnddate.DateTime := Self.FEnddate.DateTime;
        frmYFMXlistMonDayGQXEY.cxTabControl1.Tabs[11].Caption := Self.cxTabControl1.Tabs[11].Caption;
      end
      else if Self.RadioGroup1.ItemIndex = 1 then
      begin
        frmYFMXlistMonDayGQXEY.begdate.DateTime := Self.begdate.DateTime;
        frmYFMXlistMonDayGQXEY.Fbegdate.DateTime := Self.Fbegdate.DateTime;
        frmYFMXlistMonDayGQXEY.FEnddate.DateTime := Self.FEnddate.DateTime;
        frmYFMXlistMonDayGQXEY.factoryName.Text := Self.CDS_HZ.fieldbyname('factoryName').AsString;

      end;
      frmYFMXlistMonDayGQXEY.factoryName.TxtCode := Self.CDS_HZ.fieldbyname('factoryNo').AsString;
      frmYFMXlistMonDayGQXEY.Align := alClient;
      frmYFMXlistMonDayGQXEY.LabGYS.Caption := Self.CDS_HZ.fieldbyname('factoryName').AsString;
      if Self.Caption = '供应商对账单查询*' then
      begin
        frmYFMXlistMonDayGQXEY.cxGrid2.PopupMenu := frmYFMXlistMonDayGQXEY.PopupMenu2;
      end
      else
      begin
        frmYFMXlistMonDayGQXEY.cxGrid2.PopupMenu := frmYFMXlistMonDayGQXEY.PopupMenu1;
      end;
      if ShowModal = 1 then
      begin

      end;
    end;
  finally
    frmYFMXlistMonDayGQXEY.Free;
  end;
end;

procedure TfrmYFFKListDZEY.ToolButton3Click(Sender: TObject);
var
  filepath, fsj: string;
  mBegdate, mEnddate: string;
  FName, FNameSX, FNameJX: string;
  i: Integer;
begin
  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 TfrmYFFKListDZEY.cxTabControl1Change(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmYFFKListDZEY.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, 10);
    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, 12, 10);
    v2FKMoney.Caption := Copy(v2FKMoney.Summary.GroupFormat, 10, 8);
    v2BQMoney.Caption := Copy(v2BQMoney.Summary.GroupFormat, 10, 8);
  end;
  InitGrid();
end;

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

end.

