AbetoDesign_FactuGES2/Source/Modulos/Contactos/Controller/uProcedenciasClienteController.pas

220 lines
6.7 KiB
ObjectPascal
Raw Blame History

unit uProcedenciasClienteController;
interface
uses
Classes, SysUtils, uDADataTable, uEditorDBItem,
uIDataModuleClientes, uBizProcedenciasCliente, uControllerBase;
type
IProcedenciasClienteController = interface(IControllerBase)
['{C2D71CED-DCD6-47F1-8BCA-1027DA4A6385}']
function BuscarTodos: IBizProcedenciaCliente;
procedure VerTodos(AProcedenciasCliente: IBizProcedenciaCliente);
procedure Anadir(AProcedenciaCliente : IBizProcedenciaCliente);
function Eliminar(AProcedenciaCliente : IBizProcedenciaCliente): Boolean;
function Guardar(AProcedenciaCliente : IBizProcedenciaCliente): Boolean;
procedure DescartarCambios(AProcedenciaCliente : IBizProcedenciaCliente);
function Localizar(AProcedenciasCliente: IBizProcedenciaCliente; ADescripcion:String): Boolean;
function DarListaProcedenciasCliente: TStringList;
end;
TProcedenciasClienteController = class(TControllerBase, IProcedenciasClienteController)
protected
FDataModule : IDataModuleClientes;
procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override;
function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean;
function ValidarProcedenciaCliente(AProcedenciaCliente: IBizProcedenciaCliente): Boolean;
procedure AsignarDataModule; virtual;
public
constructor Create; override;
destructor Destroy; override;
function Eliminar(AProcedenciaCliente : IBizProcedenciaCliente): Boolean;
function Guardar(AProcedenciaCliente : IBizProcedenciaCliente): Boolean;
procedure DescartarCambios(AProcedenciaCliente : IBizProcedenciaCliente); virtual;
procedure Anadir(AProcedenciaCliente : IBizProcedenciaCliente);
function BuscarTodos: IBizProcedenciaCliente;
procedure VerTodos(AProcedenciasCliente: IBizProcedenciaCliente);
function Localizar(AProcedenciasCliente: IBizProcedenciaCliente; ADescripcion:String): Boolean;
function DarListaProcedenciasCliente: TStringList;
end;
implementation
uses
cxControls, DB, uEditorRegistryUtils,
uIEditorProcedenciasCliente, uDataModuleClientes,
uDAInterfaces, uDataTableUtils,
uDateUtils, uROTypes, DateUtils, Controls, Windows, schContactosClient_Intf;
{ TProcedenciasClienteController }
procedure TProcedenciasClienteController.Anadir(AProcedenciaCliente: IBizProcedenciaCliente);
begin
AProcedenciaCliente.Insert;
end;
procedure TProcedenciasClienteController.AsignarDataModule;
begin
FDataModule := TDataModuleClientes.Create(Nil);
end;
function TProcedenciasClienteController.BuscarTodos: IBizProcedenciaCliente;
begin
Result := FDataModule.GetProcedenciasCliente;
end;
constructor TProcedenciasClienteController.Create;
begin
inherited;
AsignarDataModule;
end;
function TProcedenciasClienteController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean;
begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end;
function TProcedenciasClienteController.DarListaProcedenciasCliente: TStringList;
var
AProcedenciasCliente: IBizProcedenciaCliente;
begin
AProcedenciasCliente := BuscarTodos;
AProcedenciasCliente.DataTable.Active := True;
Result := TStringList.Create;
try
with Result do
begin
AProcedenciasCliente.DataTable.First;
while not AProcedenciasCliente.DataTable.EOF do
begin
Add(AProcedenciasCliente.DESCRIPCION);
AProcedenciasCliente.DataTable.Next;
end;
end;
finally
AProcedenciasCliente := NIL;
end;
end;
procedure TProcedenciasClienteController.DescartarCambios(AProcedenciaCliente: IBizProcedenciaCliente);
begin
if not Assigned(AProcedenciaCliente) then
raise Exception.Create ('ProcedenciaCliente no asignado');
ShowHourglassCursor;
try
if (AProcedenciaCliente.State in dsEditModes) then
AProcedenciaCliente.Cancel;
AProcedenciaCliente.DataTable.CancelUpdates;
finally
HideHourglassCursor;
end;
end;
destructor TProcedenciasClienteController.Destroy;
begin
FDataModule := Nil;
inherited;
end;
function TProcedenciasClienteController.ValidarProcedenciaCliente(AProcedenciaCliente: IBizProcedenciaCliente): Boolean;
begin
if not Assigned(AProcedenciaCliente) then
raise Exception.Create ('ProcedenciaCliente no asignada');
if (AProcedenciaCliente.DataTable.State in dsEditModes) then
AProcedenciaCliente.DataTable.Post;
if Length(AProcedenciaCliente.DESCRIPCION) = 0 then
raise Exception.Create('Debe indicar al menos la descripci<63>n de esta procedencia.');
Result := True;
end;
procedure TProcedenciasClienteController.VerTodos(AProcedenciasCliente: IBizProcedenciaCliente);
var
AEditor : IEditorProcedenciasCliente;
begin
AEditor := NIL;
CreateEditor('EditorProcedenciasCliente', IEditorProcedenciasCliente, AEditor);
if Assigned(AEditor) then
try
AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE
AEditor.ProcedenciasCliente := AProcedenciasCliente;
AEditor.ShowModal;
finally
AEditor.Release;
AEditor := NIL;
end;
end;
function TProcedenciasClienteController.Eliminar(AProcedenciaCliente: IBizProcedenciaCliente): Boolean;
begin
if not Assigned(AProcedenciaCliente) then
raise Exception.Create ('ProcedenciaCliente no asignada');
ShowHourglassCursor;
try
if (AProcedenciaCliente.State in dsEditModes) then
AProcedenciaCliente.Cancel;
AProcedenciaCliente.Delete;
AProcedenciaCliente.DataTable.ApplyUpdates;
HideHourglassCursor;
Result := True;
finally
HideHourglassCursor;
end;
end;
procedure TProcedenciasClienteController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable);
begin
inherited;
//
end;
function TProcedenciasClienteController.Guardar(AProcedenciaCliente: IBizProcedenciaCliente): Boolean;
begin
Result := False;
if ValidarProcedenciaCliente(AProcedenciaCliente) then
begin
ShowHourglassCursor;
try
if (AProcedenciaCliente.DataTable.State in dsEditModes) then
AProcedenciaCliente.DataTable.Post;
AProcedenciaCliente.DataTable.ApplyUpdates;
Result := True;
finally
HideHourglassCursor;
end;
end;
end;
function TProcedenciasClienteController.Localizar(AProcedenciasCliente: IBizProcedenciaCliente; ADescripcion: String): Boolean;
begin
Result := True;
ShowHourglassCursor;
try
with AProcedenciasCliente.DataTable do
begin
DisableControls;
First;
if not Locate(fld_ProcedenciasClienteDESCRIPCION, ADescripcion, []) then
Result := False;
EnableControls;
end;
finally
HideHourglassCursor;
end;
end;
end.