unit uTiendasEmpresaController; interface uses Windows, Forms, Classes, Controls, Contnrs, SysUtils, uDADataTable, uIntegerListUtils, uBizEmpresasTiendas, uIDataModuleEmpresas, uControllerBase; type ITiendasEmpresaController = interface(IControllerBase) ['{5DCF4163-7FA0-4560-9E5E-FA2A99EA4F59}'] function Buscar(const ID: Integer): IBizEmpresaTienda; function BuscarTodas: IBizEmpresaTienda; procedure Ver(ATienda : IBizEmpresaTienda); function Nueva : IBizEmpresaTienda; end; TTiendasEmpresaController = class(TControllerBase, ITiendasEmpresaController) private FDataModule : IDataModuleEmpresas; function CrearTiendaTodas: IBizEmpresaTienda; public constructor Create; override; destructor Destroy; override; function Buscar(const ID: Integer): IBizEmpresaTienda; function BuscarTodas: IBizEmpresaTienda; procedure Ver(ATienda : IBizEmpresaTienda); function Nueva : IBizEmpresaTienda; end; implementation { TTiendasEmpresaController } uses uDataModuleEmpresas, schEmpresasClient_Intf, uIEditorTiendaEmpresa, uEditorRegistryUtils, cxControls, uFactuGES_App, uDataTableUtils; function TTiendasEmpresaController.Buscar(const ID: Integer): IBizEmpresaTienda; var ATienda : IBizEmpresaTienda; begin Result := NIL; if ID = CTE_ID_TODAS then { Si ID = 0 entonces hay que devolcer una tienda ficticia para representar a todas las tiendas. } ATienda := CrearTiendaTodas else ATienda := FDataModule.GetTienda(ID); Result := ATienda; end; function TTiendasEmpresaController.BuscarTodas: IBizEmpresaTienda; begin Result := FDataModule.GetTiendas; end; constructor TTiendasEmpresaController.Create; begin inherited; FDataModule := TDataModuleEmpresas.Create(Nil); end; destructor TTiendasEmpresaController.Destroy; begin FDataModule := Nil; inherited; end; function TTiendasEmpresaController.Nueva: IBizEmpresaTienda; begin Result := FDataModule.NewTienda; end; procedure TTiendasEmpresaController.Ver(ATienda: IBizEmpresaTienda); var AEditor : IEditorTiendaEmpresa; begin AEditor := NIL; CreateEditor('EditorTiendaEmpresa', IEditorTiendaEmpresa, AEditor); if Assigned(AEditor) then try AEditor.Tienda := ATienda; AEditor.Controller := Self; AEditor.ShowModal; finally AEditor.Release; AEditor := NIL; end; end; function TTiendasEmpresaController.CrearTiendaTodas: IBizEmpresaTienda; var ATienda: IBizEmpresaTienda; begin ATienda := FDataModule.NewTienda; ATienda.DataTable.Open; DesconectarTabla(ATienda.DataTable); try ATienda.Edit; try ATienda.ID := CTE_ID_TODAS; ATienda.ID_EMPRESA := AppFactuGES.EmpresaActiva.ID; ATienda.NOMBRE := CTE_TODAS; finally ATienda.Post; end; finally ConectarTabla(ATienda.DataTable); end; Result := ATienda; end; end.