unit uViewComisiones;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uViewGrid, uViewPreview, cxStyles, cxCustomData, cxGraphics,
  cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl,
  dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider,
  dxPSFillPatterns, dxPSEdgePatterns, cxImageComboBox, cxTextEdit, ImgList,
  PngImageList, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
  dxPSCore, dxPScxCommon, dxPScxGrid6Lnk, ActnList, uDADataTable,
  cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid,
  cxImage, Grids, DBGrids, uBizComisiones, cxGridCustomPopupMenu,
  cxGridPopupMenu, cxCalendar, cxCurrencyEdit, uViewFiltroBase, TB2Item, SpTBXItem,
  TB2Toolbar, SpTBXDkPanels, TB2Dock, dxPgsDlg, uDAInterfaces, uCustomView,
  uViewBase, cxLookAndFeels, cxLookAndFeelPainters, dxPSPDFExportCore,
  dxPSPDFExport, cxDrawTextUtils, dxPSPrVwStd, dxPSPrVwAdv,
  dxPScxEditorProducers, dxPScxExtEditorProducers, dxPScxPageControlProducer;
   
type
  IViewComisiones = interface(IViewGrid)
  ['{65A80949-4DE4-4620-8218-87439AAFABE1}']
    function GetComisiones: IBizComision;
    procedure SetComisiones(const Value: IBizComision);
    property Comisiones: IBizComision read GetComisiones write SetComisiones;
  end;

  TfrViewComisiones = class(TfrViewGrid, IViewComisiones)
    PngImageList: TPngImageList;
    cxGridViewDESCRIPCION: TcxGridDBColumn;
    cxGridViewREFERENCIA: TcxGridDBColumn;
    cxGridViewFECHA: TcxGridDBColumn;
    cxGridViewIMPORTE_TOTAL: TcxGridDBColumn;
    cxGridViewID_AGENTE: TcxGridDBColumn;
    cxStylePagada: TcxStyle;
    cxStyleAbono: TcxStyle;
    cxStylePendientes: TcxStyle;
    cxStyleParciales: TcxStyle;
    actCliente: TAction;
    actProvincia: TAction;
    TBXItem2: TSpTBXItem;
    TBXSeparatorItem1: TSpTBXSeparatorItem;
    TBXItem3: TSpTBXItem;
    TBXSeparatorItem2: TSpTBXSeparatorItem;
    cxGridViewAGENTE: TcxGridDBColumn;
    procedure actClienteExecute(Sender: TObject);
    procedure actProvinciaExecute(Sender: TObject);
    procedure actProvinciaUpdate(Sender: TObject);
    procedure actClienteUpdate(Sender: TObject);
    procedure cxGridViewDataControllerCompare(
      ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
      AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);

  private
    //Filtros relativos a la vista
    procedure AnadirFiltroFechas;

  protected
    FComisiones: IBizComision;
    function GetComisiones: IBizComision;
    procedure SetComisiones(const Value: IBizComision);

  public
    procedure AnadirOtrosFiltros; override;
    property Comisiones: IBizComision read GetComisiones write SetComisiones;
  end;


implementation

uses
  uDataModuleComisiones, DateUtils, uViewGridBase, uReferenciasUtils,
  cxVariants;

{$R *.dfm}

{ TfrViewComisiones }

procedure TfrViewComisiones.actClienteExecute(Sender: TObject);
begin
{
  if (cxGridViewNOMBRE.GroupIndex < 0) then
  begin
    cxGridViewNOMBRE.GroupIndex := cxGridView.GroupedColumnCount;
    cxGridViewNOMBRE.Visible := False;
  end
  else
  begin
    cxGridViewNOMBRE.GroupIndex := -1;
    cxGridViewNOMBRE.Visible := True;
  end;
}  
end;

procedure TfrViewComisiones.actClienteUpdate(Sender: TObject);
begin
  inherited;
//  (Sender as TAction).Checked := not (cxGridViewNOMBRE.GroupIndex < 0);
end;

procedure TfrViewComisiones.actProvinciaExecute(Sender: TObject);
begin
{
  if (cxGridViewPROVINCIA.GroupIndex < 0) then
  begin
    cxGridViewPROVINCIA.GroupIndex := cxGridView.GroupedColumnCount;
    cxGridViewPROVINCIA.Visible := False;
  end
  else
  begin
    cxGridViewPROVINCIA.GroupIndex := -1;
    cxGridViewPROVINCIA.Visible := True;
  end;
}  
end;

procedure TfrViewComisiones.actProvinciaUpdate(Sender: TObject);
begin
  inherited;
//  (Sender as TAction).Checked := not (cxGridViewPROVINCIA.GroupIndex < 0);
end;

procedure TfrViewComisiones.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');
    FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2));
  end;
end;

procedure TfrViewComisiones.AnadirOtrosFiltros;
begin
  inherited;

  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 TfrViewComisiones.cxGridViewDataControllerCompare(
  ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
  AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
begin
  inherited;
  if (AItemIndex = cxGridViewREFERENCIA.Index) and
     (VarType(V1) = VarType(V2)) and (VarType(V1) = varString) then
    Compare := CompararReferencias(V1, V2)
  else
    Compare := VarCompare(V1, V2);
end;

function TfrViewComisiones.GetComisiones: IBizComision;
begin
  Result := FComisiones;
end;

procedure TfrViewComisiones.SetComisiones(const Value: IBizComision);
begin
  FComisiones := Value;
  if Assigned(FComisiones) then
     dsDataSource.DataTable := FComisiones.DataTable;
end;

end.
