unit uViewHistoricoMovimientos; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, frxClass, frxPreview, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ActnList, uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, StdCtrls, ExtCtrls, cxLabel, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPScxGrid6Lnk, cxImage, cxImageComboBox, ImgList, PngImageList, cxTextEdit, Grids, DBGrids, cxDBLookupComboBox, cxButtonEdit, cxGridCustomPopupMenu, cxGridPopupMenu, uViewGrid, uBizHistoricoMovimientos, uBizAlmacenes, cxSpinEdit, uViewFiltroBase, TB2Item, TBX, TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, cxCurrencyEdit, uDAInterfaces; type IViewHistoricoMovimientos = interface(IViewGrid) ['{1E8F901C-F013-42E0-88B7-0D9DA2919A01}'] function GetHistoricoMovimientos: IBizHistoricoMovimientos; procedure SetHistoricoMovimientos(const Value: IBizHistoricoMovimientos); property HistoricoMovimientos: IBizHistoricoMovimientos read GetHistoricoMovimientos write SetHistoricoMovimientos; function GetAlmacenes: IBizAlmacen; procedure SetAlmacenes(const Value: IBizAlmacen); property Almacenes: IBizAlmacen read GetAlmacenes write SetAlmacenes; end; TfrViewHistoricoMovimientos = class(TfrViewGrid, IViewHistoricoMovimientos) cxGridDBTableView1: TcxGridDBTableView; PngImageList: TPngImageList; cxStyleEntrada: TcxStyle; cxGridViewDESCRIPCION: TcxGridDBColumn; cxGridViewREFERENCIA: TcxGridDBColumn; cxGridViewFAMILIA: TcxGridDBColumn; cxGridViewNOMBRE_ALMACEN: TcxGridDBColumn; cxGridViewID_ALMACEN: TcxGridDBColumn; cxGridViewFECHA: TcxGridDBColumn; cxGridViewCANTIDAD: TcxGridDBColumn; cxGridViewREFERENCIA_PROV: TcxGridDBColumn; cxGridViewTIPO_MOVIMIENTO: TcxGridDBColumn; cxGridViewCAUSA: TcxGridDBColumn; cxStyleSalida: TcxStyle; procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); private //Filtros relativos a la vista procedure AnadirFiltroAlmacenes; protected FAlmacenes: IBizAlmacen; FHistoricoMovimientos: IBizHistoricoMovimientos; function GetAlmacenes: IBizAlmacen; procedure SetAlmacenes(const Value: IBizAlmacen); function GetHistoricoMovimientos: IBizHistoricoMovimientos; procedure SetHistoricoMovimientos(const Value: IBizHistoricoMovimientos); procedure AnadirOtrosFiltros; override; public property HistoricoMovimientos: IBizHistoricoMovimientos read GetHistoricoMovimientos write SetHistoricoMovimientos; destructor Destroy; override; end; implementation {$R *.dfm} uses uDataModuleHistoricoMovimientos, schHistoricoMovimientosClient_Intf; procedure TfrViewHistoricoMovimientos.AnadirFiltroAlmacenes; var FFiltro : TcxFilterCriteriaItemList; CodigoAlmacen: String; begin FFiltro := AddFilterGrid(fboAnd); CodigoAlmacen := IntToStr(cxGrid.Levels.Items[cxGrid.ActiveLevel.Index].Tag); if CodigoAlmacen <> '-1' then begin FFiltro.AddItem(cxGridViewID_ALMACEN, foEqual, CodigoAlmacen, CodigoAlmacen); cxGridViewNOMBRE_ALMACEN.Visible := False; end else cxGridViewNOMBRE_ALMACEN.Visible := True; end; procedure TfrViewHistoricoMovimientos.AnadirOtrosFiltros; begin inherited; AnadirFiltroAlmacenes; //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 TfrViewHistoricoMovimientos.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); begin inherited; RefrescarFiltro; end; procedure TfrViewHistoricoMovimientos.cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); var IndiceCol: Integer; ACantidad: Variant; begin inherited; if Assigned(ARecord) then begin IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_HistoricoMovimientosCANTIDAD).Index; ACantidad := ARecord.DisplayTexts[IndiceCol]; if (ACantidad < 0) then AStyle := cxStyleSalida else AStyle := cxStyleEntrada; end; end; destructor TfrViewHistoricoMovimientos.Destroy; begin FAlmacenes := Nil; FHistoricoMovimientos := Nil; inherited; end; function TfrViewHistoricoMovimientos.GetAlmacenes: IBizAlmacen; begin Result := FAlmacenes; end; function TfrViewHistoricoMovimientos.GetHistoricoMovimientos: IBizHistoricoMovimientos; begin Result := FHistoricoMovimientos; end; procedure TfrViewHistoricoMovimientos.SetAlmacenes(const Value: IBizAlmacen); var Nivel: TcxGridLevel; begin FAlmacenes := Value; if Assigned(FAlmacenes) then begin if not FAlmacenes.DataTable.Active then FAlmacenes.DataTable.Active := True; FAlmacenes.First; while not FAlmacenes.EOF do begin Nivel := cxGrid.Levels.Add; Nivel.Caption := FAlmacenes.NOMBRE; Nivel.Tag := FAlmacenes.ID; FAlmacenes.Next; end; end; end; procedure TfrViewHistoricoMovimientos.SetHistoricoMovimientos(const Value: IBizHistoricoMovimientos); begin FHistoricoMovimientos := Value; if Assigned(FHistoricoMovimientos) then dsDataSource.DataTable := FHistoricoMovimientos.DataTable else dsDataSource.DataTable := Nil; end; end.