unit uViewContratosClienteBeneficios;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
  cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg,
  dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns,
  dxPSEdgePatterns, ImgList, PngImageList, ActnList, cxGridCustomPopupMenu,
  cxGridPopupMenu, dxPSCore, dxPScxCommon, dxPScxGrid6Lnk, uDAInterfaces,
  uDADataTable, TB2Item, TBX, TB2Toolbar, TBXDkPanels, TB2Dock, uCustomView,
  uViewBase, uViewFiltroBase, cxGridLevel, cxGridCustomTableView,
  cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView,
  cxGrid, uBizContratosCliente, cxCalendar, cxCurrencyEdit;

type
  TfrViewContratosClienteBeneficios = class(TfrViewGrid)
    cxGridViewID: TcxGridDBColumn;
    cxGridViewREFERENCIA: TcxGridDBColumn;
    cxGridViewFECHA_CONTRATO: TcxGridDBColumn;
    cxGridViewNOMBRE: TcxGridDBColumn;
    cxGridViewNIF_CIF: TcxGridDBColumn;
    cxGridViewIMPORTE_NETO: TcxGridDBColumn;
    cxGridViewIMPORTE_DESCUENTO: TcxGridDBColumn;
    cxGridViewBASE_IMPONIBLE: TcxGridDBColumn;
    cxGridViewIMPORTE_FACTURAS_PROVEEDOR: TcxGridDBColumn;
    cxGridViewIMPORTE_BENEFICIO: TcxGridDBColumn;
    cxGridViewPORCENTAJE_BENEFICIO: TcxGridDBColumn;
    cxGridPendientes: TcxGridLevel;
    cxGridTerminados: TcxGridLevel;
    cxGridViewSITUACION: TcxGridDBColumn;
    cxGridViewVENDEDOR: TcxGridDBColumn;
    cxGridViewREF_CONTENIDO: TcxGridDBColumn;
    procedure CustomViewDestroy(Sender: TObject);
    procedure cxGridActiveTabChanged(Sender: TcxCustomGrid;
      ALevel: TcxGridLevel);
  private
    FContratos: IBizContratosClienteBeneficios;
    function GetContratos: IBizContratosClienteBeneficios;
    procedure SetContratos(const Value: IBizContratosClienteBeneficios);

    //Filtros relativos a la vista
    procedure AnadirFiltroSituaciones;
    procedure AnadirFiltroFechas;

  public
    procedure AnadirOtrosFiltros; override;
    property Contratos: IBizContratosClienteBeneficios read GetContratos write SetContratos;
  end;

var
  frViewContratosClienteBeneficios: TfrViewContratosClienteBeneficios;

implementation

{$R *.dfm}

{ TfrViewContratosClienteBeneficios }

procedure TfrViewContratosClienteBeneficios.AnadirFiltroFechas;
var
  Columna: TcxGridDBColumn;
  Fecha1, Fecha2: Variant;
  FFiltro : TcxFilterCriteriaItemList;
begin
  Fecha1 := frViewFiltroBase1.edtFechaIniFiltro.EditValue;
  Fecha2 := frViewFiltroBase1.edtFechaFinFiltro.EditValue;

  if  not VarIsNull(Fecha1)
  and not VarIsNull(Fecha2) then
  begin
    cxGridView.DataController.Filter.Options := [fcoCaseInsensitive, fcoSoftCompare];
    FFiltro := AddFilterGrid(fboAnd);

    Columna := (cxGridView as TcxGridDBTableView).GetColumnByFieldName('FECHA_CONTRATO');
    FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2));
  end;
end;

procedure TfrViewContratosClienteBeneficios.AnadirFiltroSituaciones;
var
  FFiltro : TcxFilterCriteriaItemList;
begin
  FFiltro := AddFilterGrid(fboAnd);

  case cxGrid.ActiveLevel.Index of
    1   : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_CONTRATO_PENDIENTE, SITUACION_CONTRATO_PENDIENTE);
    2   : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_CONTRATO_ACEPTADO, SITUACION_CONTRATO_ACEPTADO);
    3   : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_CONTRATO_RECHAZADO, SITUACION_CONTRATO_RECHAZADO);
  end;
end;

procedure TfrViewContratosClienteBeneficios.AnadirOtrosFiltros;
begin
  inherited;

  AnadirFiltroSituaciones;
  AnadirFiltroFechas;

  //Finalmente activamos el filtro si tenemos algo
  if cxGridView.DataController.Filter.IsEmpty then
    cxGridView.DataController.Filter.Active := False
  else
    cxGridView.DataController.Filter.Active := True;
  cxGrid.ActiveLevel.GridView := cxGridView;
end;

procedure TfrViewContratosClienteBeneficios.CustomViewDestroy(Sender: TObject);
begin
  FContratos := NIL;
  inherited;
end;

procedure TfrViewContratosClienteBeneficios.cxGridActiveTabChanged(
  Sender: TcxCustomGrid; ALevel: TcxGridLevel);
begin
  inherited;
  RefrescarFiltro;
end;

function TfrViewContratosClienteBeneficios.GetContratos: IBizContratosClienteBeneficios;
begin
  Result := FContratos;
end;

procedure TfrViewContratosClienteBeneficios.SetContratos(const Value: IBizContratosClienteBeneficios);
begin
  FContratos := Value;
  dsDataSource.DataTable := FContratos.DataTable;
end;

end.
