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; 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_TERMINADO, SITUACION_CONTRATO_TERMINADO); 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.