This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
LuisLeon_FactuGES2/Source/Modulos/Informes base/Views/uViewInformeBase.pas

251 lines
7.3 KiB
ObjectPascal

unit uViewInformeBase;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Forms,
Dialogs, uViewBase, TBXDkPanels, StdCtrls, ComCtrls, TB2Dock,
uViewAgrupaciones, uCustomView, uViewColumnas, ImgList, PngImageList,
ActnList, uViewInformeBaseGrid, uBizInformes, uViewSumarios, uViewGridBase,
uViewInformeBaseParametros, uViewFiltros, cxStyles, Controls, uViewFiltroBase,
DB, uDADataTable, uDAInterfaces;
type
IViewInformeBase = interface(IViewGridBase)
['{D716BE6B-1F41-4825-9385-0231D2AEF819}']
function GetModificable: Boolean;
procedure SetModificable(const Value: Boolean);
property Modificable : Boolean read GetModificable write SetModificable;
function GetInforme: IBizInforme;
procedure SetInforme(const Value: IBizInforme);
property Informe: IBizInforme read GetInforme write SetInforme;
function GetOnViewChanged : TNotifyEvent;
procedure SetOnViewChanged(const Value : TNotifyEvent);
property OnViewChanged: TNotifyEvent read GetOnViewChanged write SetOnViewChanged;
end;
TfrViewInformeBase = class(TfrViewGridBase, IViewInformeBase)
TBXMultiDock1: TTBXMultiDock;
pnlParametros: TTBXDockablePanel;
TBXAlignmentPanel2: TTBXAlignmentPanel;
TBXLink1: TTBXLink;
TBXLink5: TTBXLink;
TBXLink2: TTBXLink;
pcParametros: TPageControl;
TabSheet5: TTabSheet;
tsColumnas: TTabSheet;
tsAgrupacion: TTabSheet;
pnlTareas: TTBXDockablePanel;
TBXPageScroller1: TTBXPageScroller;
TBXAlignmentPanel1: TTBXAlignmentPanel;
bFiltros: TTBXLink;
bSumarios: TTBXLink;
pcTareas: TPageControl;
tsSumarios: TTabSheet;
tsFiltros: TTabSheet;
frViewColumnas1: TfrViewColumnas;
frViewAgrupaciones1: TfrViewAgrupaciones;
SmallImages: TPngImageList;
LargeImages: TPngImageList;
EditorActionList: TActionList;
actAgrupaciones: TAction;
actColumnas: TAction;
actSumarios: TAction;
actFiltros: TAction;
frViewSumarios1: TfrViewSumarios;
actRefrescar: TAction;
frViewFiltros1: TfrViewFiltros;
TBXMultiDock2: TTBXMultiDock;
pnlIntervaloFechas: TTBXDockablePanel;
TBXAlignmentPanel3: TTBXAlignmentPanel;
bRefrescar: TButton;
procedure actColumnasExecute(Sender: TObject);
procedure actSumariosExecute(Sender: TObject);
procedure actFiltrosExecute(Sender: TObject);
procedure actAgrupacionesExecute(Sender: TObject);
private
procedure ComprobarPrivilegios;
protected
FInforme : IBizInforme;
FOnViewChanged : TNotifyEvent;
FModificable : Boolean;
procedure ActivarTarea (const ATarea : Integer); virtual;
function GetInforme: IBizInforme; virtual;
procedure SetInforme(const Value: IBizInforme); virtual;
function GetOnViewChanged : TNotifyEvent; virtual;
procedure SetOnViewChanged(const Value : TNotifyEvent); virtual;
function GetModificable: Boolean; virtual;
procedure SetModificable(const Value: Boolean); virtual;
procedure FiltrarGrid(TextoFiltro : String); override;
public
property Modificable : Boolean read GetModificable write SetModificable;
property OnViewChanged: TNotifyEvent read GetOnViewChanged write SetOnViewChanged;
property Informe: IBizInforme read GetInforme write SetInforme;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Refresh; override;
end;
implementation
{$R *.dfm}
uses cxGridDBTableView, cxFilter, uFactuGES_App;
const
COLUMNAS = 1;
AGRUPACIONES = 2;
SUMARIOS = 3;
FILTROS = 4;
procedure TfrViewInformeBase.actColumnasExecute(Sender: TObject);
begin
inherited;
ActivarTarea(COLUMNAS);
frViewColumnas1.Refresh;
end;
procedure TfrViewInformeBase.ActivarTarea(const ATarea: Integer);
begin
case ATarea of
COLUMNAS : pcParametros.ActivePage := tsColumnas;
AGRUPACIONES : pcParametros.ActivePage := tsAgrupacion;
SUMARIOS : pcTareas.ActivePage := tsSumarios;
FILTROS : pcTareas.ActivePage := tsFiltros;
end;
end;
function TfrViewInformeBase.GetInforme: IBizInforme;
begin
Result := FInforme;
end;
procedure TfrViewInformeBase.SetInforme(const Value: IBizInforme);
begin
FInforme := Value;
frViewColumnas1.Refresh;
frViewAgrupaciones1.Refresh;
ComprobarPrivilegios;
// ¿Es modificable el InformeBase?
// Self.Modificable := FInformeBase.EsModificable;
end;
procedure TfrViewInformeBase.actSumariosExecute(Sender: TObject);
begin
inherited;
ActivarTarea(SUMARIOS);
frViewSumarios1.Refresh;
end;
procedure TfrViewInformeBase.actFiltrosExecute(Sender: TObject);
begin
inherited;
ActivarTarea(FILTROS);
frViewFiltros1.Refresh;
end;
procedure TfrViewInformeBase.actAgrupacionesExecute(Sender: TObject);
begin
inherited;
ActivarTarea(AGRUPACIONES);
frViewAgrupaciones1.Refresh;
end;
function TfrViewInformeBase.GetOnViewChanged: TNotifyEvent;
begin
Result := FOnViewChanged;
end;
procedure TfrViewInformeBase.Refresh;
var
i: Integer;
begin
inherited;
end;
procedure TfrViewInformeBase.SetOnViewChanged(const Value: TNotifyEvent);
begin
FOnViewChanged := Value;
end;
procedure TfrViewInformeBase.ComprobarPrivilegios;
begin
if (AppFactuGES.UsuarioActivo.LOGIN <> 'admin') then
TBXMultiDock1.Visible := False;
end;
constructor TfrViewInformeBase.Create(AOwner: TComponent);
begin
inherited;
FModificable := False;
pcParametros.ActivePage := tsColumnas;
pcTareas.ActivePage := tsSumarios;
FOnViewChanged := nil;
end;
destructor TfrViewInformeBase.Destroy;
begin
ViewFiltros := Nil;
inherited;
end;
procedure TfrViewInformeBase.FiltrarGrid(TextoFiltro: String);
var
Columna: TcxGridDBColumn;
i: Integer;
AItemList: TcxFilterCriteriaItemList;
begin
with _FocusedView.DataController.Filter do
begin
BeginUpdate;
try
Options := [fcoCaseInsensitive, fcoSoftCompare];
// Hemos tenido que sobreescribir este metodo porque hemos tenido que cambiar el orden a aplicar los filtros
// en el caso de los informes debemos aplicar el filtro del campo de texto siempre despues del filtro
// establecido para el informe, por ello este método nunca limpiará el filtro que tenga ya establecido el grid
// sino que se añadirá al filtro existente
// Root.Clear;
if Length(TextoFiltro) > 0 then
begin
AItemList := Root.AddItemList(fboAnd);
AItemList.BoolOperatorKind := fboOr;
for i:=0 to (_FocusedView as TcxGridDBTableView).ColumnCount - 1 do
begin
Columna := (_FocusedView as TcxGridDBTableView).Columns[i];
if (Length(Columna.Caption) > 0) and (Columna.Caption <> 'RecID') then
AItemList.AddItem(Columna, foLike, '%'+TextoFiltro+'%', IntToStr(i));
end;
Active := True;
end
else
Active := False;
finally
ExpandirTodo;
EndUpdate;
end;
end;
end;
function TfrViewInformeBase.GetModificable: Boolean;
begin
Result := FModificable;
end;
procedure TfrViewInformeBase.SetModificable(const Value: Boolean);
begin
FModificable := Value;
frViewColumnas1.Modificable := FModificable;
frViewAgrupaciones1.Modificable := FModificable;
end;
end.