AbetoDesign_FactuGES2/Source/Modulos/Subfamilias/Controller/uSubFamiliasController.pas

235 lines
6.0 KiB
ObjectPascal

unit uSubFamiliasController;
interface
uses
Classes, SysUtils, uDADataTable, uEditorDBItem,
uIDataModuleSubFamilias, uBizSubFamilias, uControllerBase;
type
ISubFamiliasController = interface(IControllerBase)
['{B706CE31-978B-416D-88C5-7969220BEF4F}']
function BuscarTodos: IBizSubFamilia;
procedure VerTodos(ASubFamilias: IBizSubFamilia);
procedure Anadir(ASubFamilia : IBizSubFamilia);
function Eliminar(ASubFamilia : IBizSubFamilia): Boolean;
function Guardar(ASubFamilia : IBizSubFamilia): Boolean;
procedure DescartarCambios(ASubFamilia : IBizSubFamilia);
function Localizar(ASubFamilias: IBizSubFamilia; ADescripcion:String): Boolean;
function DarListaSubFamilias: TStringList;
end;
TSubFamiliasController = class(TControllerBase, ISubFamiliasController)
protected
FDataModule : IDataModuleSubFamilias;
procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override;
function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean;
function ValidarAlmacen(ASubFamilia: IBizSubFamilia): Boolean;
//Estos son los tres métodos a sobre escribir si se desea heredar toda la logica de
//este controller
procedure AsignarDataModule; virtual;
procedure ValidarObjetos; virtual;
public
constructor Create; override;
destructor Destroy; override;
function Eliminar(ASubFamilia : IBizSubFamilia): Boolean;
function Guardar(ASubFamilia : IBizSubFamilia): Boolean;
procedure DescartarCambios(ASubFamilia : IBizSubFamilia); virtual;
procedure Anadir(ASubFamilia : IBizSubFamilia);
function BuscarTodos: IBizSubFamilia;
procedure VerTodos(ASubFamilias: IBizSubFamilia);
function Localizar(ASubFamilias: IBizSubFamilia; ADescripcion:String): Boolean;
function DarListaSubFamilias: TStringList;
end;
implementation
uses
cxControls, DB, uEditorRegistryUtils, schSubFamiliasClient_Intf,
uIEditorSubFamilias, uDataModuleSubFamilias,
uDAInterfaces, uDataTableUtils,
uDateUtils, uROTypes, DateUtils, Controls, Windows;
{ TSubFamiliasController }
procedure TSubFamiliasController.Anadir(ASubFamilia: IBizSubFamilia);
begin
ASubFamilia.Insert;
end;
procedure TSubFamiliasController.AsignarDataModule;
begin
FDataModule := TDataModuleSubFamilias.Create(Nil);
end;
function TSubFamiliasController.BuscarTodos: IBizSubFamilia;
begin
Result := FDataModule.GetItems;
end;
constructor TSubFamiliasController.Create;
begin
inherited;
AsignarDataModule;
end;
function TSubFamiliasController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean;
begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end;
function TSubFamiliasController.DarListaSubFamilias: TStringList;
var
ASubFamilias: IBizSubFamilia;
begin
ASubFamilias := BuscarTodos;
ASubFamilias.DataTable.Active := True;
Result := TStringList.Create;
try
with Result do
begin
ASubFamilias.DataTable.First;
while not ASubFamilias.DataTable.EOF do
begin
Add(ASubFamilias.DESCRIPCION);
ASubFamilias.DataTable.Next;
end;
end;
finally
ASubFamilias := NIL;
end;
end;
procedure TSubFamiliasController.DescartarCambios(ASubFamilia: IBizSubFamilia);
begin
if not Assigned(ASubFamilia) then
raise Exception.Create ('SubFamilia no asignado');
ShowHourglassCursor;
try
if (ASubFamilia.State in dsEditModes) then
ASubFamilia.Cancel;
ASubFamilia.DataTable.CancelUpdates;
finally
HideHourglassCursor;
end;
end;
destructor TSubFamiliasController.Destroy;
begin
FDataModule := Nil;
inherited;
end;
function TSubFamiliasController.ValidarAlmacen(ASubFamilia: IBizSubFamilia): Boolean;
begin
Result := False;
if not Assigned(ASubFamilia) then
raise Exception.Create ('SubFamilia no asignada');
if (ASubFamilia.DataTable.State in dsEditModes) then
ASubFamilia.DataTable.Post;
Result := True;
end;
procedure TSubFamiliasController.ValidarObjetos;
begin
//
end;
procedure TSubFamiliasController.VerTodos(ASubFamilias: IBizSubFamilia);
var
AEditor : IEditorSubFamilias;
begin
AEditor := NIL;
CreateEditor('EditorSubFamilias', IEditorSubFamilias, AEditor);
if Assigned(AEditor) then
try
AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE
AEditor.SubFamilias := ASubFamilias;
AEditor.ShowModal;
finally
AEditor.Release;
AEditor := NIL;
end;
end;
function TSubFamiliasController.Eliminar(ASubFamilia: IBizSubFamilia): Boolean;
begin
Result := False;
if not Assigned(ASubFamilia) then
raise Exception.Create ('SubFamilia no asignada');
ShowHourglassCursor;
try
if (ASubFamilia.State in dsEditModes) then
ASubFamilia.Cancel;
ASubFamilia.Delete;
ASubFamilia.DataTable.ApplyUpdates;
Result := True;
finally
HideHourglassCursor;
end;
end;
procedure TSubFamiliasController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable);
begin
inherited;
//
end;
function TSubFamiliasController.Guardar(ASubFamilia: IBizSubFamilia): Boolean;
begin
Result := False;
if not Assigned(ASubFamilia) then
raise Exception.Create ('SubFamilia no asignada');
ValidarObjetos;
if ValidarAlmacen(ASubFamilia) then
begin
ShowHourglassCursor;
try
ASubFamilia.DataTable.ApplyUpdates;
Result := True;
finally
HideHourglassCursor;
end;
end;
end;
function TSubFamiliasController.Localizar(ASubFamilias: IBizSubFamilia; ADescripcion: String): Boolean;
begin
Result := True;
ShowHourglassCursor;
try
with ASubFamilias.DataTable do
begin
DisableControls;
First;
if not Locate(fld_SubFamiliasDESCRIPCION, ADescripcion, []) then
Result := False;
EnableControls;
end;
finally
HideHourglassCursor;
end;
end;
end.