git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES2/trunk@101 b2cfbe5a-eba1-4a0c-8b32-7feea0a119f2
307 lines
7.8 KiB
ObjectPascal
307 lines
7.8 KiB
ObjectPascal
unit uInformesController;
|
|
|
|
interface
|
|
|
|
|
|
uses
|
|
Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem,
|
|
uIDataModuleInformes, uBizInformes;
|
|
|
|
type
|
|
IInformesController = interface//(IObservador)
|
|
['{DC7F2D51-898D-41AD-83F6-CCFBCDE933DF}']
|
|
function BuscarTodos: IBizInforme;
|
|
procedure Nuevo(AInforme : String; AInformes : IBizInforme);
|
|
function Eliminar(AInforme : IBizInforme): Boolean;
|
|
procedure Ver(AInformes : IBizInforme);
|
|
procedure VerTodos(AInformes: IBizInforme);
|
|
function Guardar(AInforme: IBizInforme): Boolean;
|
|
end;
|
|
|
|
TInformesController = class(TInterfacedObject, IInformesController)
|
|
protected
|
|
FDataModule : IDataModuleInformes;
|
|
|
|
// procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override;
|
|
function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean;
|
|
function _Vacio : IBizInforme;
|
|
|
|
procedure FiltrarEmpresa(AInformes: IBizInforme);
|
|
|
|
//Estos son los tres métodos a sobre escribir si se desea heredar toda la logica de
|
|
//este controller
|
|
procedure AsignarDataModule; virtual;
|
|
procedure AsignarID(AInforme: IBizInforme; const IDNuevo : Integer);
|
|
function ValidarInforme(AInforme: IBizInforme): Boolean;
|
|
|
|
public
|
|
constructor Create; virtual;
|
|
destructor Destroy; override;
|
|
|
|
// function Buscar(const ID_ALMACEN: Integer): IBizInforme;
|
|
function BuscarTodos: IBizInforme;
|
|
// function ExtraerSeleccionados(AArticulos: IBizInforme) : IBizInforme;
|
|
// function Ver(AArticulos: IBizInforme; AInformes : IBizInforme): Boolean;
|
|
procedure Nuevo(AInforme : String; AInformes : IBizInforme);
|
|
function Eliminar(AInforme : IBizInforme): Boolean;
|
|
procedure Ver(AInformes : IBizInforme);
|
|
procedure VerTodos(AInformes: IBizInforme);
|
|
function Guardar(AInforme: IBizInforme): Boolean;
|
|
end;
|
|
|
|
var
|
|
InformesController: TInformesController;
|
|
|
|
implementation
|
|
|
|
uses
|
|
Forms, cxControls, DB, uEditorRegistryUtils, uInformeRegistryUtils,
|
|
uInformeBaseController, uIEditorInformes,
|
|
uDataModuleInformes,
|
|
uDataModuleUsuarios, uDAInterfaces, uDataTableUtils,
|
|
uDateUtils, uROTypes, DateUtils, Controls, Windows,
|
|
dialogs, Variants, uControllerDetallesBase, uDialogUtils,
|
|
schInformesClient_Intf; //, uInfVentasArticuloController;
|
|
|
|
{ TInformesController }
|
|
|
|
procedure TInformesController.AsignarDataModule;
|
|
begin
|
|
FDataModule := TdmInformes.Create(Nil);
|
|
end;
|
|
|
|
{
|
|
function TInformesController.Buscar(const ID_ALMACEN: Integer): IBizInforme;
|
|
begin
|
|
Result := (FDataModule as IDataModuleInformes).GetItems(ID_ALMACEN);
|
|
FiltrarEmpresa(Result);
|
|
end;
|
|
}
|
|
|
|
procedure TInformesController.AsignarID(AInforme: IBizInforme; const IDNuevo: Integer);
|
|
begin
|
|
if not Assigned(AInforme) then
|
|
raise Exception.Create ('Informe no asignado');
|
|
|
|
if AInforme.EsNuevo then
|
|
begin
|
|
AInforme.Edit;
|
|
AInforme.ID := IDNuevo;
|
|
AInforme.Post;
|
|
end;
|
|
end;
|
|
|
|
function TInformesController.BuscarTodos: IBizInforme;
|
|
begin
|
|
Result := FDataModule.GetItems;
|
|
FiltrarEmpresa(Result);
|
|
end;
|
|
|
|
constructor TInformesController.Create;
|
|
begin
|
|
AsignarDataModule;
|
|
end;
|
|
|
|
function TInformesController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean;
|
|
begin
|
|
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
|
|
end;
|
|
|
|
destructor TInformesController.Destroy;
|
|
begin
|
|
FDataModule := Nil;
|
|
inherited;
|
|
end;
|
|
|
|
|
|
function TInformesController.Eliminar(AInforme: IBizInforme): Boolean;
|
|
begin
|
|
Result := False;
|
|
|
|
if not Assigned(AInforme) then
|
|
raise Exception.Create ('Informe no asignada');
|
|
|
|
ShowHourglassCursor;
|
|
try
|
|
if (AInforme.State in dsEditModes) then
|
|
AInforme.Cancel;
|
|
|
|
AInforme.Delete;
|
|
AInforme.DataTable.ApplyUpdates;
|
|
|
|
Result := True;
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
{function TInformesController.ExtraerSeleccionados(AArticulos: IBizInforme): IBizInforme;
|
|
var
|
|
ASeleccionados : IBizInforme;
|
|
begin
|
|
ASeleccionados := (Self.Buscar(ID_NULO) as IBizInforme);
|
|
CopyDataTable(AArticulos.DataTable, ASeleccionados.DataTable, True);
|
|
Result := ASeleccionados;
|
|
end;}
|
|
|
|
|
|
{function TInformesController.Ver(AArticulos: IBizInforme; AInformes: IBizInforme): Boolean;
|
|
var
|
|
AEditor : IEditorEntradaSalidaArticulos;
|
|
begin
|
|
Result := False;
|
|
AEditor := NIL;
|
|
ShowHourglassCursor;
|
|
try
|
|
CreateEditor('EditorEntradaSalidaArticulos', IEditorEntradaSalidaArticulos, AEditor);
|
|
with AEditor do
|
|
begin
|
|
Controller := Self; //OJO ORDEN MUY IMPORTANTE
|
|
Articulos := AArticulos;
|
|
Informes := AInformes;
|
|
end;
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
|
|
if Assigned(AEditor) then
|
|
try
|
|
AEditor.ShowModal;
|
|
Result := AEditor.ResultadoModalOK;
|
|
AEditor.Release;
|
|
finally
|
|
AEditor := NIL;
|
|
end;
|
|
end;}
|
|
|
|
function TInformesController.ValidarInforme(AInforme: IBizInforme): Boolean;
|
|
begin
|
|
Result := False;
|
|
|
|
if not Assigned(AInforme) then
|
|
raise Exception.Create ('Informe no asignado');
|
|
|
|
if (AInforme.DataTable.State in dsEditModes) then
|
|
AInforme.DataTable.Post;
|
|
|
|
if (Length(AInforme.CONTROLLER) = 0) then
|
|
raise Exception.Create('Debe indicar el controller del informe');
|
|
|
|
if (Length(AInforme.CATEGORIA) = 0) then
|
|
raise Exception.Create('Debe indicar la categoria del informe');
|
|
|
|
Result := True;
|
|
end;
|
|
|
|
procedure TInformesController.Ver(AInformes: IBizInforme);
|
|
var
|
|
AEditor : IEditorInformes;
|
|
FControllerInforme: IInformeBaseController;
|
|
|
|
begin
|
|
AEditor := NIL;
|
|
|
|
CreateInforme(AInformes.CONTROLLER, IInformeBaseController, FControllerInforme);
|
|
FControllerInforme.Ver(AInformes);
|
|
end;
|
|
|
|
procedure TInformesController.VerTodos(AInformes: IBizInforme);
|
|
var
|
|
AEditor : IEditorInformes;
|
|
begin
|
|
AEditor := NIL;
|
|
ShowHourglassCursor;
|
|
try
|
|
CreateEditor('EditorInformes', IEditorInformes, AEditor);
|
|
with AEditor do
|
|
begin
|
|
Controller := Self; //OJO ORDEN MUY IMPORTANTE
|
|
Informes := AInformes;
|
|
// MultiSelect := False;
|
|
end;
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
|
|
if Assigned(AEditor) then
|
|
AEditor.ShowEmbedded;
|
|
end;
|
|
|
|
function TInformesController._Vacio: IBizInforme;
|
|
begin
|
|
// Result := Buscar(ID_NULO);
|
|
end;
|
|
{
|
|
procedure TInformesController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable);
|
|
begin
|
|
inherited;
|
|
//
|
|
end;
|
|
}
|
|
procedure TInformesController.FiltrarEmpresa(AInformes: IBizInforme);
|
|
begin
|
|
{
|
|
if AInformes.DataTable.Active then
|
|
AInformes.DataTable.Active := False;
|
|
|
|
// Filtrar los Informes actuales por empresa
|
|
with AInformes.DataTable.Where do
|
|
begin
|
|
if NotEmpty then
|
|
AddOperator(opAND);
|
|
|
|
OpenBraket;
|
|
AddText(fld_InformesID_EMPRESA + ' = ' + IntToStr(dmUsuarios.IDEmpresaActual));
|
|
CloseBraket;
|
|
end;
|
|
}
|
|
end;
|
|
|
|
function TInformesController.Guardar(AInforme: IBizInforme): Boolean;
|
|
var
|
|
IDNuevo: Integer;
|
|
begin
|
|
Result := False;
|
|
|
|
if not Assigned(AInforme) then
|
|
raise Exception.Create ('Informe no asignado');
|
|
|
|
if ValidarInforme(AInforme) then
|
|
begin
|
|
ShowHourglassCursor;
|
|
try
|
|
{ if (AInforme.EsNuevo) then
|
|
IDNuevo := FDataModule.GetNextID(AInforme.DataTable.LogicalName)
|
|
else
|
|
IDNuevo := AInforme.ID;
|
|
|
|
AsignarID(AInforme, IDNuevo);
|
|
}
|
|
AInforme.DataTable.ApplyUpdates;
|
|
|
|
Result := True;
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TInformesController.Nuevo(AInforme: String; AInformes : IBizInforme);
|
|
var
|
|
FControllerInforme: IInformeBaseController;
|
|
|
|
begin
|
|
CreateInforme(AInforme, IInformeBaseController, FControllerInforme);
|
|
FControllerInforme.Nuevo(AInformes);
|
|
FControllerInforme.Ver(AInformes);
|
|
end;
|
|
|
|
{
|
|
initialization
|
|
InformesController := TInformesController.Create(nil);
|
|
|
|
finalization
|
|
FreeAndNil(InformesController);
|
|
}
|
|
end.
|