Tecsitel_FactuGES2/Source/Modulos/Contactos/Controller/uGruposProveedorController.pas

220 lines
6.3 KiB
ObjectPascal
Raw Permalink Blame History

unit uGruposProveedorController;
interface
uses
Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem,
uIDataModuleProveedores, uBizGruposProveedor;
type
IGruposProveedorController = interface(IControllerBase)
['{20B27FB1-ECEA-40B6-9869-5F5EC700EEDD}']
function BuscarTodos: IBizGrupoProveedor;
procedure VerTodos(AGruposProveedor: IBizGrupoProveedor);
procedure Anadir(AGrupoProveedor : IBizGrupoProveedor);
function Eliminar(AGrupoProveedor : IBizGrupoProveedor): Boolean;
function Guardar(AGrupoProveedor : IBizGrupoProveedor): Boolean;
procedure DescartarCambios(AGrupoProveedor : IBizGrupoProveedor);
function Localizar(AGruposProveedor: IBizGrupoProveedor; ADescripcion:String): Boolean;
function DarListaGruposProveedor: TStringList;
end;
TGruposProveedorController = class(TControllerBase, IGruposProveedorController)
protected
FDataModule : IDataModuleProveedores;
procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override;
function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean;
function ValidarGrupoProveedor(AGrupoProveedor: IBizGrupoProveedor): Boolean;
procedure AsignarDataModule; virtual;
public
constructor Create; override;
destructor Destroy; override;
function Eliminar(AGrupoProveedor : IBizGrupoProveedor): Boolean;
function Guardar(AGrupoProveedor : IBizGrupoProveedor): Boolean;
procedure DescartarCambios(AGrupoProveedor : IBizGrupoProveedor); virtual;
procedure Anadir(AGrupoProveedor : IBizGrupoProveedor);
function BuscarTodos: IBizGrupoProveedor;
procedure VerTodos(AGruposProveedor: IBizGrupoProveedor);
function Localizar(AGruposProveedor: IBizGrupoProveedor; ADescripcion:String): Boolean;
function DarListaGruposProveedor: TStringList;
end;
implementation
uses
cxControls, DB, uEditorRegistryUtils,
uIEditorGruposProveedor, uDataModuleProveedores,
uDAInterfaces, uDataTableUtils,
uDateUtils, uROTypes, DateUtils, Controls, Windows, schContactosClient_Intf;
{ TGruposProveedorController }
procedure TGruposProveedorController.Anadir(AGrupoProveedor: IBizGrupoProveedor);
begin
AGrupoProveedor.Insert;
end;
procedure TGruposProveedorController.AsignarDataModule;
begin
FDataModule := TDataModuleProveedores.Create(Nil);
end;
function TGruposProveedorController.BuscarTodos: IBizGrupoProveedor;
begin
Result := FDataModule.GetGruposProveedor;
end;
constructor TGruposProveedorController.Create;
begin
inherited;
AsignarDataModule;
end;
function TGruposProveedorController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean;
begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end;
function TGruposProveedorController.DarListaGruposProveedor: TStringList;
var
AGruposProveedor: IBizGrupoProveedor;
begin
AGruposProveedor := BuscarTodos;
AGruposProveedor.DataTable.Active := True;
Result := TStringList.Create;
try
with Result do
begin
AGruposProveedor.DataTable.First;
while not AGruposProveedor.DataTable.EOF do
begin
Add(AGruposProveedor.DESCRIPCION);
AGruposProveedor.DataTable.Next;
end;
end;
finally
AGruposProveedor := NIL;
end;
end;
procedure TGruposProveedorController.DescartarCambios(AGrupoProveedor: IBizGrupoProveedor);
begin
if not Assigned(AGrupoProveedor) then
raise Exception.Create ('GrupoProveedor no asignado');
ShowHourglassCursor;
try
if (AGrupoProveedor.State in dsEditModes) then
AGrupoProveedor.Cancel;
AGrupoProveedor.DataTable.CancelUpdates;
finally
HideHourglassCursor;
end;
end;
destructor TGruposProveedorController.Destroy;
begin
FDataModule := Nil;
inherited;
end;
function TGruposProveedorController.ValidarGrupoProveedor(AGrupoProveedor: IBizGrupoProveedor): Boolean;
begin
if not Assigned(AGrupoProveedor) then
raise Exception.Create ('GrupoProveedor no asignada');
if (AGrupoProveedor.DataTable.State in dsEditModes) then
AGrupoProveedor.DataTable.Post;
if Length(AGrupoProveedor.DESCRIPCION) = 0 then
raise Exception.Create('Debe indicar al menos la descripci<63>n de este grupo.');
Result := True;
end;
procedure TGruposProveedorController.VerTodos(AGruposProveedor: IBizGrupoProveedor);
var
AEditor : IEditorGruposProveedor;
begin
AEditor := NIL;
CreateEditor('EditorGruposProveedor', IEditorGruposProveedor, AEditor);
if Assigned(AEditor) then
try
AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE
AEditor.GruposProveedor := AGruposProveedor;
AEditor.ShowModal;
finally
AEditor.Release;
AEditor := NIL;
end;
end;
function TGruposProveedorController.Eliminar(AGrupoProveedor: IBizGrupoProveedor): Boolean;
begin
if not Assigned(AGrupoProveedor) then
raise Exception.Create ('GrupoProveedor no asignada');
ShowHourglassCursor;
try
if (AGrupoProveedor.State in dsEditModes) then
AGrupoProveedor.Cancel;
AGrupoProveedor.Delete;
AGrupoProveedor.DataTable.ApplyUpdates;
HideHourglassCursor;
Result := True;
finally
HideHourglassCursor;
end;
end;
procedure TGruposProveedorController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable);
begin
inherited;
//
end;
function TGruposProveedorController.Guardar(AGrupoProveedor: IBizGrupoProveedor): Boolean;
begin
Result := False;
if ValidarGrupoProveedor(AGrupoProveedor) then
begin
ShowHourglassCursor;
try
if (AGrupoProveedor.DataTable.State in dsEditModes) then
AGrupoProveedor.DataTable.Post;
AGrupoProveedor.DataTable.ApplyUpdates;
Result := True;
finally
HideHourglassCursor;
end;
end;
end;
function TGruposProveedorController.Localizar(AGruposProveedor: IBizGrupoProveedor; ADescripcion: String): Boolean;
begin
Result := True;
ShowHourglassCursor;
try
with AGruposProveedor.DataTable do
begin
DisableControls;
First;
if not Locate(fld_GruposProveedorDESCRIPCION, ADescripcion, []) then
Result := False;
EnableControls;
end;
finally
HideHourglassCursor;
end;
end;
end.