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.