unit U_CPAllTop;

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, cxDBLookupComboBox, cxContainer, cxDropDownEdit, cxPC, Menus,
  TeEngine, Series, TeeProcs, Chart, DbChart, GanttCh, cxLookAndFeels,
  cxLookAndFeelPainters, cxNavigator;

type
  TfrmCPAllTop = class(TForm)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBClose: TToolButton;
    ADOQueryTemp: TADOQuery;
    ADOQueryCmd: TADOQuery;
    ToolButton2: TToolButton;
    ADOQueryMain: TADOQuery;
    cxGridPopupMenu2: TcxGridPopupMenu;
    Panel2: TPanel;
    Panel3: TPanel;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    v2Column12: TcxGridDBColumn;
    v2Column15: TcxGridDBColumn;
    v2Column7: TcxGridDBColumn;
    cxGridLevel1: TcxGridLevel;
    SH2: TPanel;
    SH1: TPanel;
    ClientDataSet1: TClientDataSet;
    DataSource1: TDataSource;
    v1Column1: TcxGridDBColumn;
    Panel4: TPanel;
    Panel5: TPanel;
    DBChart1: TDBChart;
    Series1: TBarSeries;
    Panel6: TPanel;
    cxGrid2: TcxGrid;
    Tv2: TcxGridDBTableView;
    cxGridDBColumn1: TcxGridDBColumn;
    cxGridDBColumn2: TcxGridDBColumn;
    cxGridDBColumn3: TcxGridDBColumn;
    cxGridDBColumn4: TcxGridDBColumn;
    cxGridLevel2: TcxGridLevel;
    KK2: TPanel;
    KK1: TPanel;
    Panel7: TPanel;
    DBChart2: TDBChart;
    DataSource2: TDataSource;
    ClientDataSet2: TClientDataSet;
    Series2: TBarSeries;
    Panel8: TPanel;
    cxGrid3: TcxGrid;
    Tv3: TcxGridDBTableView;
    cxGridDBColumn5: TcxGridDBColumn;
    cxGridDBColumn6: TcxGridDBColumn;
    cxGridDBColumn7: TcxGridDBColumn;
    cxGridDBColumn8: TcxGridDBColumn;
    cxGridLevel3: TcxGridLevel;
    DJ2: TPanel;
    DJ1: TPanel;
    DataSource3: TDataSource;
    ClientDataSet3: TClientDataSet;
    Panel11: TPanel;
    DBChart3: TDBChart;
    BarSeries1: TBarSeries;
    Panel9: TPanel;
    cxGrid4: TcxGrid;
    Tv4: TcxGridDBTableView;
    cxGridDBColumn9: TcxGridDBColumn;
    cxGridDBColumn10: TcxGridDBColumn;
    cxGridDBColumn11: TcxGridDBColumn;
    cxGridDBColumn12: TcxGridDBColumn;
    cxGridLevel4: TcxGridLevel;
    CH2: TPanel;
    CH1: TPanel;
    Panel13: TPanel;
    DBChart4: TDBChart;
    BarSeries2: TBarSeries;
    DataSource4: TDataSource;
    ClientDataSet4: TClientDataSet;
    Panel10: TPanel;
    Panel1: TPanel;
    Label1: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    C_Code: TEdit;
    BegDate: TDateTimePicker;
    EndDate: TDateTimePicker;
    ClientDataSet11: TClientDataSet;
    ClientDataSet21: TClientDataSet;
    ClientDataSet31: TClientDataSet;
    ClientDataSet41: TClientDataSet;
    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 C_CodeNameChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Tv1DblClick(Sender: TObject);
    procedure Tv4DblClick(Sender: TObject);
  private

    { Private declarations }
    procedure InitGrid();
  public
   
  end;

var
  frmCPAllTop: TfrmCPAllTop;

implementation

uses
  U_DataLink, U_RTFun,U_PBTopMX,U_CPCHTopMX;

{$R *.dfm}


procedure TfrmCPAllTop.InitGrid();
begin
  Panel10.Visible:=True;
  Panel10.Refresh;
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      SQL.Clear;
      sql.Add('exec P_BI_CPAll_20M :begdate,:enddate,:Type');
      Parameters.ParamByName('begdate').Value:=Trim(FormatDateTime('yyyy-MM-dd',BegDate.Date));
      Parameters.ParamByName('enddate').Value:=Trim(FormatDateTime('yyyy-MM-dd',enddate.Date+1));
      Parameters.ParamByName('Type').Value:='收货';
      Open;
    end;
    SCreateCDS20(ADOQueryMain, ClientDataSet1);
    SInitCDSData20(ADOQueryMain, ClientDataSet1);
    SH1.Caption:='收货Top20排行榜('+Trim(ClientDataSet1.fieldbyname('QSPS').AsString)
                  +','+Trim(ClientDataSet1.fieldbyname('QSBL').AsString)+'%)';
    SH2.Caption:='收货总数量'+'('+Trim(ClientDataSet1.fieldbyname('HZPS').AsString)+')';
    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      SQL.Clear;
      sql.Add('exec P_BI_CPAll :begdate,:enddate,:Type');
      Parameters.ParamByName('begdate').Value:=Trim(FormatDateTime('yyyy-MM-dd',BegDate.Date));
      Parameters.ParamByName('enddate').Value:=Trim(FormatDateTime('yyyy-MM-dd',enddate.Date+1));
      Parameters.ParamByName('Type').Value:='收货';
      Open;
    end;
    SCreateCDS20(ADOQueryMain, ClientDataSet11);
    SInitCDSData20(ADOQueryMain, ClientDataSet11);
    DBChart1.Series[0].DataSource:=nil;
    DBChart1.Series[0].DataSource:=ClientDataSet11;
    DBChart1.Series[0].XLabelsSource:='XH';
    DBChart1.Series[0].YValues.ValueSource:='BL';

    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      SQL.Clear;
      sql.Add('exec P_BI_CPAll_20M :begdate,:enddate,:Type');
      Parameters.ParamByName('begdate').Value:=Trim(FormatDateTime('yyyy-MM-dd',BegDate.Date));
      Parameters.ParamByName('enddate').Value:=Trim(FormatDateTime('yyyy-MM-dd',enddate.Date+1));
      Parameters.ParamByName('Type').Value:='开卡';
      Open;
    end;
    SCreateCDS20(ADOQueryMain, ClientDataSet2);
    SInitCDSData20(ADOQueryMain, ClientDataSet2);
    KK1.Caption:='开卡Top20排行榜('+Trim(ClientDataSet2.fieldbyname('QSPS').AsString)
                  +','+Trim(ClientDataSet2.fieldbyname('QSBL').AsString)+'%)';
    KK2.Caption:='开卡总数量'+'('+Trim(ClientDataSet2.fieldbyname('HZPS').AsString)+')';
    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      SQL.Clear;
      sql.Add('exec P_BI_CPAll :begdate,:enddate,:Type');
      Parameters.ParamByName('begdate').Value:=Trim(FormatDateTime('yyyy-MM-dd',BegDate.Date));
      Parameters.ParamByName('enddate').Value:=Trim(FormatDateTime('yyyy-MM-dd',enddate.Date+1));
      Parameters.ParamByName('Type').Value:='开卡';
      Open;
    end;
    SCreateCDS20(ADOQueryMain, ClientDataSet21);
    SInitCDSData20(ADOQueryMain, ClientDataSet21);
    DBChart2.Series[0].DataSource:=nil;
    DBChart2.Series[0].DataSource:=ClientDataSet21;
    DBChart2.Series[0].XLabelsSource:='XH';
    DBChart2.Series[0].YValues.ValueSource:='PS';

    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      SQL.Clear;
      sql.Add('exec P_BI_CPAll_20M :begdate,:enddate,:Type');
      Parameters.ParamByName('begdate').Value:=Trim(FormatDateTime('yyyy-MM-dd',BegDate.Date));
      Parameters.ParamByName('enddate').Value:=Trim(FormatDateTime('yyyy-MM-dd',enddate.Date+1));
      Parameters.ParamByName('Type').Value:='打卷';
      Open;
    end;
    SCreateCDS20(ADOQueryMain, ClientDataSet3);
    SInitCDSData20(ADOQueryMain, ClientDataSet3);
    DJ1.Caption:='打卷Top20排行榜('+Trim(ClientDataSet3.fieldbyname('QSPS').AsString)
                  +','+Trim(ClientDataSet3.fieldbyname('QSBL').AsString)+'%)';
    DJ2.Caption:='打卷总数量'+'('+Trim(ClientDataSet3.fieldbyname('HZPS').AsString)+')';
    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      SQL.Clear;
      sql.Add('exec P_BI_CPAll :begdate,:enddate,:Type');
      Parameters.ParamByName('begdate').Value:=Trim(FormatDateTime('yyyy-MM-dd',BegDate.Date));
      Parameters.ParamByName('enddate').Value:=Trim(FormatDateTime('yyyy-MM-dd',enddate.Date+1));
      Parameters.ParamByName('Type').Value:='打卷';
      Open;
    end;
    SCreateCDS20(ADOQueryMain, ClientDataSet31);
    SInitCDSData20(ADOQueryMain, ClientDataSet31);
    DBChart3.Series[0].DataSource:=nil;
    DBChart3.Series[0].DataSource:=ClientDataSet31;
    DBChart3.Series[0].XLabelsSource:='XH';
    DBChart3.Series[0].YValues.ValueSource:='PS';

    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      SQL.Clear;
      sql.Add('exec P_BI_CPAll_20M :begdate,:enddate,:Type');
      Parameters.ParamByName('begdate').Value:=Trim(FormatDateTime('yyyy-MM-dd',BegDate.Date));
      Parameters.ParamByName('enddate').Value:=Trim(FormatDateTime('yyyy-MM-dd',enddate.Date+1));
      Parameters.ParamByName('Type').Value:='出货';
      Open;
    end;
    SCreateCDS20(ADOQueryMain, ClientDataSet4);
    SInitCDSData20(ADOQueryMain, ClientDataSet4);
    CH1.Caption:='出货Top20排行榜('+Trim(ClientDataSet4.fieldbyname('QSPS').AsString)
                  +','+Trim(ClientDataSet4.fieldbyname('QSBL').AsString)+'%)';
    CH2.Caption:='出货总数量'+'('+Trim(ClientDataSet4.fieldbyname('HZPS').AsString)+')';
    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      SQL.Clear;
      sql.Add('exec P_BI_CPAll :begdate,:enddate,:Type');
      Parameters.ParamByName('begdate').Value:=Trim(FormatDateTime('yyyy-MM-dd',BegDate.Date));
      Parameters.ParamByName('enddate').Value:=Trim(FormatDateTime('yyyy-MM-dd',enddate.Date+1));
      Parameters.ParamByName('Type').Value:='出货';
      Open;
    end;
    SCreateCDS20(ADOQueryMain, ClientDataSet41);
    SInitCDSData20(ADOQueryMain, ClientDataSet41);
    DBChart4.Series[0].DataSource:=nil;
    DBChart4.Series[0].DataSource:=ClientDataSet41;
    DBChart4.Series[0].XLabelsSource:='XH';
    DBChart4.Series[0].YValues.ValueSource:='PS';
  finally
    ADOQueryMain.EnableControls;
  end;
  Panel10.Visible:=False;
end;

procedure TfrmCPAllTop.FormDestroy(Sender: TObject);
begin
  frmCPAllTop := nil;
end;

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

procedure TfrmCPAllTop.TBCloseClick(Sender: TObject);
begin
  //WriteCxGrid('收货', Tv1, '前十大产品排行榜');
  Close;
end;

procedure TfrmCPAllTop.FormShow(Sender: TObject);
begin
  //ReadCxGrid('收货', Tv1, '前十大产品排行榜');
end;

procedure TfrmCPAllTop.TBRafreshClick(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmCPAllTop.ToolButton2Click(Sender: TObject);
begin
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
    SCreateCDS20(ADOQueryMain, ClientDataSet1);
    SInitCDSData20(ADOQueryMain, ClientDataSet1);
  end;
end;

procedure TfrmCPAllTop.C_CodeNameChange(Sender: TObject);
begin
  ToolButton2.Click;
end;

procedure TfrmCPAllTop.FormCreate(Sender: TObject);
var
  FYear:string;
  FMonth:string;
  FDate:TDate;
begin
  FDate:=SGetServerDate10(ADOQueryTemp);
  FYear:=FormatDateTime('yyyy',FDate);
  FMonth:=FormatDateTime('MM',FDate);
  if StrToInt(FMonth)<2 then
  begin
    BegDate.Date:=StrToDate(IntToStr(strtoint(FYear)-1)+'-02-01');
    EndDate.Date:=StrToDate(FYear+'-01-31');
  end else
  begin
    BegDate.Date:=StrToDate(FYear+'-02-01');
    EndDate.Date:=StrToDate(IntToStr(strtoint(FYear)+1)+'-01-31');
  end;
end;

procedure TfrmCPAllTop.Tv1DblClick(Sender: TObject);
begin
  if ClientDataSet1.IsEmpty then Exit;
  if Trim(ClientDataSet1.fieldbyname('SPName').AsString)='其它' then Exit;
  try
    frmPBTopMX:=TfrmPBTopMX.Create(Application);
    with frmPBTopMX do
    begin
      FBegdate:=Self.BegDate.Date;
      FEnddate:=Self.EndDate.Date;
      FSPName:=Trim(Self.ClientDataSet1.fieldbyname('SPName').AsString);
      if ShowModal=1 then
      begin

      end;
    end;
  finally
    frmPBTopMX.Free;
  end;
end;

procedure TfrmCPAllTop.Tv4DblClick(Sender: TObject);
begin
  if ClientDataSet4.IsEmpty then Exit;
  if Trim(ClientDataSet4.fieldbyname('SPName').AsString)='其它' then Exit;
  try
    frmCPCHTopMX:=TfrmCPCHTopMX.Create(Application);
    with frmCPCHTopMX do
    begin
      FBegdate:=Self.BegDate.Date;
      FEnddate:=Self.EndDate.Date;
      FSPName:=Trim(Self.ClientDataSet4.fieldbyname('SPName').AsString);
      if ShowModal=1 then
      begin

      end;
    end;
  finally
    frmCPCHTopMX.Free;
  end;
end;

end.

