FactuGES2/Source/Modulos/Almacenes/Controller/uUbicacionesAlmacenController.pas
2022-02-09 15:00:16 +00:00

221 lines
6.5 KiB
ObjectPascal
Raw Blame History

unit uUbicacionesAlmacenController;
interface
uses
Classes, SysUtils, uDADataTable, uEditorDBItem,
uIDataModuleAlmacenes,
uBizUbicacionesAlmacen, uControllerBase;
type
IUbicacionesAlmacenController = interface(IControllerBase)
['{3604C8C7-264D-4B7A-B3A8-FD8C33509945}']
function BuscarTodos: IBizUbicacionAlmacen;
procedure VerTodos(AUbicacionesAlmacen: IBizUbicacionAlmacen);
procedure Anadir(AUbicacionAlmacen : IBizUbicacionAlmacen);
function Eliminar(AUbicacionAlmacen : IBizUbicacionAlmacen): Boolean;
function Guardar(AUbicacionAlmacen : IBizUbicacionAlmacen): Boolean;
procedure DescartarCambios(AUbicacionAlmacen : IBizUbicacionAlmacen);
function Localizar(AUbicacionesAlmacen: IBizUbicacionAlmacen; ADescripcion:String): Boolean;
function DarListaUbicacionesAlmacen: TStringList;
end;
TUbicacionesAlmacenController = class(TControllerBase, IUbicacionesAlmacenController)
protected
FDataModule : IDataModuleAlmacenes;
procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override;
function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean;
function ValidarUbicacionAlmacen(AUbicacionAlmacen: IBizUbicacionAlmacen): Boolean;
procedure AsignarDataModule; virtual;
public
constructor Create; override;
destructor Destroy; override;
function Eliminar(AUbicacionAlmacen : IBizUbicacionAlmacen): Boolean;
function Guardar(AUbicacionAlmacen : IBizUbicacionAlmacen): Boolean;
procedure DescartarCambios(AUbicacionAlmacen : IBizUbicacionAlmacen); virtual;
procedure Anadir(AUbicacionAlmacen : IBizUbicacionAlmacen);
function BuscarTodos: IBizUbicacionAlmacen;
procedure VerTodos(AUbicacionesAlmacen: IBizUbicacionAlmacen);
function Localizar(AUbicacionesAlmacen: IBizUbicacionAlmacen; ADescripcion:String): Boolean;
function DarListaUbicacionesAlmacen: TStringList;
end;
implementation
uses
cxControls, DB, uEditorRegistryUtils,
uIEditorUbicacionesAlmacen, uDataModuleAlmacenes,
uDAInterfaces, uDataTableUtils, schAlmacenesClient_Intf,
uDateUtils, uROTypes, DateUtils, Controls, Windows;
{ TUbicacionesAlmacenController }
procedure TUbicacionesAlmacenController.Anadir(AUbicacionAlmacen: IBizUbicacionAlmacen);
begin
AUbicacionAlmacen.Insert;
end;
procedure TUbicacionesAlmacenController.AsignarDataModule;
begin
FDataModule := TDataModuleAlmacenes.Create(Nil);
end;
function TUbicacionesAlmacenController.BuscarTodos: IBizUbicacionAlmacen;
begin
Result := FDataModule.GetUbicacionesAlmacen;
end;
constructor TUbicacionesAlmacenController.Create;
begin
inherited;
AsignarDataModule;
end;
function TUbicacionesAlmacenController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean;
begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end;
function TUbicacionesAlmacenController.DarListaUbicacionesAlmacen: TStringList;
var
AUbicacionesAlmacen: IBizUbicacionAlmacen;
begin
AUbicacionesAlmacen := BuscarTodos;
AUbicacionesAlmacen.DataTable.Active := True;
Result := TStringList.Create;
try
with Result do
begin
AUbicacionesAlmacen.DataTable.First;
while not AUbicacionesAlmacen.DataTable.EOF do
begin
Add(AUbicacionesAlmacen.DESCRIPCION);
AUbicacionesAlmacen.DataTable.Next;
end;
end;
finally
AUbicacionesAlmacen := NIL;
end;
end;
procedure TUbicacionesAlmacenController.DescartarCambios(AUbicacionAlmacen: IBizUbicacionAlmacen);
begin
if not Assigned(AUbicacionAlmacen) then
raise Exception.Create ('UbicacionAlmacen no asignado');
ShowHourglassCursor;
try
if (AUbicacionAlmacen.State in dsEditModes) then
AUbicacionAlmacen.Cancel;
AUbicacionAlmacen.DataTable.CancelUpdates;
finally
HideHourglassCursor;
end;
end;
destructor TUbicacionesAlmacenController.Destroy;
begin
FDataModule := Nil;
inherited;
end;
function TUbicacionesAlmacenController.ValidarUbicacionAlmacen(AUbicacionAlmacen: IBizUbicacionAlmacen): Boolean;
begin
if not Assigned(AUbicacionAlmacen) then
raise Exception.Create ('UbicacionAlmacen no asignada');
if (AUbicacionAlmacen.DataTable.State in dsEditModes) then
AUbicacionAlmacen.DataTable.Post;
if Length(AUbicacionAlmacen.DESCRIPCION) = 0 then
raise Exception.Create('Debe indicar al menos la descripci<63>n de esta ubicaci<63>n.');
Result := True;
end;
procedure TUbicacionesAlmacenController.VerTodos(AUbicacionesAlmacen: IBizUbicacionAlmacen);
var
AEditor : IEditorUbicacionesAlmacen;
begin
AEditor := NIL;
CreateEditor('EditorUbicacionesAlmacen', IEditorUbicacionesAlmacen, AEditor);
if Assigned(AEditor) then
try
AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE
AEditor.UbicacionesAlmacen := AUbicacionesAlmacen;
AEditor.ShowModal;
finally
AEditor.Release;
AEditor := NIL;
end;
end;
function TUbicacionesAlmacenController.Eliminar(AUbicacionAlmacen: IBizUbicacionAlmacen): Boolean;
begin
if not Assigned(AUbicacionAlmacen) then
raise Exception.Create ('UbicacionAlmacen no asignada');
ShowHourglassCursor;
try
if (AUbicacionAlmacen.State in dsEditModes) then
AUbicacionAlmacen.Cancel;
AUbicacionAlmacen.Delete;
AUbicacionAlmacen.DataTable.ApplyUpdates;
HideHourglassCursor;
Result := True;
finally
HideHourglassCursor;
end;
end;
procedure TUbicacionesAlmacenController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable);
begin
inherited;
//
end;
function TUbicacionesAlmacenController.Guardar(AUbicacionAlmacen: IBizUbicacionAlmacen): Boolean;
begin
Result := False;
if ValidarUbicacionAlmacen(AUbicacionAlmacen) then
begin
ShowHourglassCursor;
try
if (AUbicacionAlmacen.DataTable.State in dsEditModes) then
AUbicacionAlmacen.DataTable.Post;
AUbicacionAlmacen.DataTable.ApplyUpdates;
Result := True;
finally
HideHourglassCursor;
end;
end;
end;
function TUbicacionesAlmacenController.Localizar(AUbicacionesAlmacen: IBizUbicacionAlmacen; ADescripcion: String): Boolean;
begin
Result := True;
ShowHourglassCursor;
try
with AUbicacionesAlmacen.DataTable do
begin
DisableControls;
First;
if not Locate(fld_AlmacenesUbicacionesDESCRIPCION, ADescripcion, []) then
Result := False;
EnableControls;
end;
finally
HideHourglassCursor;
end;
end;
end.