git-svn-id: https://192.168.0.254/svn/Proyectos.AbetoDesign_FactuGES/trunk@147 93f398dd-4eb6-7a46-baf6-13f46f578da2
255 lines
6.0 KiB
ObjectPascal
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.
|