AbetoDesign_FactuGES2/Source/Modulos/Tarifas/Controller/uTarifasController.pas
2020-05-06 10:08:12 +00:00

255 lines
6.0 KiB
ObjectPascal

unit uTarifasController;
interface
uses
Classes, SysUtils, uDADataTable, uEditorDBItem,
uIDataModuleTarifas, uBizTarifas, uControllerBase;
type
ITarifasController = interface(IControllerBase)
['{8BE07EA4-9B66-426A-93C7-653D8594AE81}']
function BuscarTodos: IBizTarifa;
procedure VerTodos(ATarifas: IBizTarifa);
procedure Anadir(ATarifa : IBizTarifa);
function Eliminar(ATarifa : IBizTarifa): Boolean;
function Guardar(ATarifa : IBizTarifa): Boolean;
procedure DescartarCambios(ATarifa : IBizTarifa);
function Localizar(ATarifas: IBizTarifa; ADescripcion:String): Boolean;
function DarListaTarifas: TStringList;
function elegirTarifa: String;
end;
TTarifasController = class(TControllerBase, ITarifasController)
protected
FDataModule : IDataModuleTarifas;
procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override;
function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean;
function ValidarAlmacen(ATarifa: IBizTarifa): 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(ATarifa : IBizTarifa): Boolean;
function Guardar(ATarifa : IBizTarifa): Boolean;
procedure DescartarCambios(ATarifa : IBizTarifa); virtual;
procedure Anadir(ATarifa : IBizTarifa);
function BuscarTodos: IBizTarifa;
procedure VerTodos(ATarifas: IBizTarifa);
function Localizar(ATarifas: IBizTarifa; ADescripcion:String): Boolean;
function DarListaTarifas: TStringList;
function elegirTarifa: String;
end;
implementation
uses
cxControls, DB, uEditorRegistryUtils, schTarifasClient_Intf,
uIEditorTarifas, uDataModuleTarifas,
uDAInterfaces, uDataTableUtils, uIEditorElegirTarifa,
uDateUtils, uROTypes, DateUtils, Controls, Windows;
{ TTarifasController }
procedure TTarifasController.Anadir(ATarifa: IBizTarifa);
begin
ATarifa.Insert;
end;
procedure TTarifasController.AsignarDataModule;
begin
FDataModule := TDataModuleTarifas.Create(Nil);
end;
function TTarifasController.BuscarTodos: IBizTarifa;
begin
Result := FDataModule.GetItems;
end;
constructor TTarifasController.Create;
begin
inherited;
AsignarDataModule;
end;
function TTarifasController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean;
begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end;
function TTarifasController.DarListaTarifas: TStringList;
var
ATarifas: IBizTarifa;
begin
ATarifas := BuscarTodos;
ATarifas.DataTable.Active := True;
Result := TStringList.Create;
try
with Result do
begin
ATarifas.DataTable.First;
while not ATarifas.DataTable.EOF do
begin
Add(ATarifas.DESCRIPCION);
ATarifas.DataTable.Next;
end;
end;
finally
ATarifas := NIL;
end;
end;
procedure TTarifasController.DescartarCambios(ATarifa: IBizTarifa);
begin
if not Assigned(ATarifa) then
raise Exception.Create ('Tarifa no asignado');
ShowHourglassCursor;
try
if (ATarifa.State in dsEditModes) then
ATarifa.Cancel;
ATarifa.DataTable.CancelUpdates;
finally
HideHourglassCursor;
end;
end;
destructor TTarifasController.Destroy;
begin
FDataModule := Nil;
inherited;
end;
function TTarifasController.elegirTarifa: String;
var
AEditor : IEditorElegirTarifa;
begin
Result := '';
CreateEditor('EditorElegirTarifa', IEditorElegirTarifa, AEditor);
if Assigned(AEditor) then
try
if (AEditor.ShowModal = mrOk) then
Result := AEditor.Tarifa;
finally
AEditor.Release;
AEditor := NIL;
end;
end;
function TTarifasController.ValidarAlmacen(ATarifa: IBizTarifa): Boolean;
begin
Result := False;
if not Assigned(ATarifa) then
raise Exception.Create ('Tarifa no asignada');
if (ATarifa.DataTable.State in dsEditModes) then
ATarifa.DataTable.Post;
Result := True;
end;
procedure TTarifasController.ValidarObjetos;
begin
//
end;
procedure TTarifasController.VerTodos(ATarifas: IBizTarifa);
var
AEditor : IEditorTarifas;
begin
AEditor := NIL;
CreateEditor('EditorTarifas', IEditorTarifas, AEditor);
if Assigned(AEditor) then
try
AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE
AEditor.Tarifas := ATarifas;
AEditor.ShowModal;
finally
AEditor.Release;
AEditor := NIL;
end;
end;
function TTarifasController.Eliminar(ATarifa: IBizTarifa): Boolean;
begin
Result := False;
if not Assigned(ATarifa) then
raise Exception.Create ('Tarifa no asignada');
ShowHourglassCursor;
try
if (ATarifa.State in dsEditModes) then
ATarifa.Cancel;
ATarifa.Delete;
ATarifa.DataTable.ApplyUpdates;
Result := True;
finally
HideHourglassCursor;
end;
end;
procedure TTarifasController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable);
begin
inherited;
//
end;
function TTarifasController.Guardar(ATarifa: IBizTarifa): Boolean;
begin
Result := False;
if not Assigned(ATarifa) then
raise Exception.Create ('Tarifa no asignada');
ValidarObjetos;
if ValidarAlmacen(ATarifa) then
begin
ShowHourglassCursor;
try
ATarifa.DataTable.ApplyUpdates;
Result := True;
finally
HideHourglassCursor;
end;
end;
end;
function TTarifasController.Localizar(ATarifas: IBizTarifa; ADescripcion: String): Boolean;
begin
Result := True;
ShowHourglassCursor;
try
with ATarifas.DataTable do
begin
DisableControls;
First;
if not Locate(fld_TarifasDESCRIPCION, ADescripcion, []) then
Result := False;
EnableControls;
end;
finally
HideHourglassCursor;
end;
end;
end.