2011-11-14 17:40:41 +00:00
|
|
|
|
unit uEmpresasController;
|
|
|
|
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
uses
|
|
|
|
|
|
Windows, Forms, Classes, Controls, Contnrs, SysUtils,
|
|
|
|
|
|
uBizEmpresas, uIDataModuleEmpresas, uDADataTable, uControllerBase,
|
|
|
|
|
|
uBizEmpresasTiendas, uTiendasEmpresaController;
|
|
|
|
|
|
|
|
|
|
|
|
type
|
|
|
|
|
|
IEmpresasController = interface(IControllerBase)
|
|
|
|
|
|
['{2F0AB21C-4F19-446E-87C4-B9C1038850FC}']
|
|
|
|
|
|
function Buscar(const ID: Integer): IBizEmpresa;
|
|
|
|
|
|
function BuscarTodos: IBizEmpresa;
|
|
|
|
|
|
procedure Ver(AEmpresa : IBizEmpresa);
|
|
|
|
|
|
procedure VerTodos(AEmpresas: IBizEmpresa);
|
|
|
|
|
|
function Nuevo : IBizEmpresa;
|
|
|
|
|
|
procedure Anadir(AEmpresa : IBizEmpresa);
|
|
|
|
|
|
function Eliminar(const ID : Integer): Boolean; overload;
|
|
|
|
|
|
function Eliminar(AEmpresa : IBizEmpresa): Boolean; overload;
|
|
|
|
|
|
function Guardar(AEmpresa : IBizEmpresa): Boolean;
|
|
|
|
|
|
procedure DescartarCambios(AEmpresa : IBizEmpresa);
|
|
|
|
|
|
function Existe(const ID: Integer) : Boolean;
|
|
|
|
|
|
function ToStringList(AEmpresa : IBizEmpresa) : TStringList;
|
|
|
|
|
|
|
|
|
|
|
|
function DarListaTiendas(AEmpresa : IBizEmpresa): TStringList;
|
2011-11-18 17:12:39 +00:00
|
|
|
|
function DarTiendaEmpresa(AEmpresa : IBizEmpresa; const num: Integer): IBizEmpresaTienda;
|
2011-11-14 17:40:41 +00:00
|
|
|
|
function DarTiendaUsuario(AEmpresa: IBizEmpresa; const ID_USUARIO: Integer): IBizEmpresaTienda;
|
|
|
|
|
|
|
|
|
|
|
|
function GetTiendasController : ITiendasEmpresaController;
|
|
|
|
|
|
property TiendasController : ITiendasEmpresaController read GetTiendasController;
|
|
|
|
|
|
|
|
|
|
|
|
function DarListaFormasPago: TStringList;
|
|
|
|
|
|
function DarListaTiposIVA: TStringList;
|
|
|
|
|
|
Procedure AsignarIDFormaPago(AEmpresa: IBizEmpresa; const IDFormaPago: Variant);
|
|
|
|
|
|
Procedure AsignarIDTipoIVA(AEmpresa: IBizEmpresa; const IDTipoIVA: Variant);
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
TEmpresasController = class(TControllerBase, IEmpresasController)
|
|
|
|
|
|
protected
|
|
|
|
|
|
FDataModule : IDataModuleEmpresas;
|
|
|
|
|
|
FTiendasController : ITiendasEmpresaController;
|
|
|
|
|
|
function ValidarEmpresa(AEmpresa : IBizEmpresa): Boolean; virtual;
|
|
|
|
|
|
function GetTiendasController : ITiendasEmpresaController;
|
|
|
|
|
|
public
|
|
|
|
|
|
constructor Create; override;
|
|
|
|
|
|
destructor Destroy; override;
|
|
|
|
|
|
|
|
|
|
|
|
function Eliminar(const ID : Integer): Boolean; overload;
|
|
|
|
|
|
function Eliminar(AEmpresa : IBizEmpresa): Boolean; overload;
|
|
|
|
|
|
function Guardar(AEmpresa : IBizEmpresa): Boolean;
|
|
|
|
|
|
procedure DescartarCambios(AEmpresa : IBizEmpresa); virtual;
|
|
|
|
|
|
function Existe(const ID: Integer) : Boolean; virtual;
|
|
|
|
|
|
procedure Anadir(AEmpresa : IBizEmpresa); virtual;
|
|
|
|
|
|
|
|
|
|
|
|
function Buscar(const ID: Integer): IBizEmpresa; virtual;
|
|
|
|
|
|
function BuscarTodos: IBizEmpresa; virtual;
|
|
|
|
|
|
function Nuevo : IBizEmpresa; virtual;
|
|
|
|
|
|
procedure Ver(AEmpresa : IBizEmpresa); virtual;
|
|
|
|
|
|
procedure VerTodos(AEmpresas: IBizEmpresa); virtual;
|
|
|
|
|
|
function ToStringList(AEmpresa : IBizEmpresa) : TStringList; virtual;
|
|
|
|
|
|
|
|
|
|
|
|
function DarListaTiendas(AEmpresa : IBizEmpresa): TStringList;
|
2011-11-18 17:12:39 +00:00
|
|
|
|
function DarTiendaEmpresa(AEmpresa : IBizEmpresa; const num: Integer): IBizEmpresaTienda;
|
2011-11-14 17:40:41 +00:00
|
|
|
|
function DarTiendaUsuario(AEmpresa: IBizEmpresa; const ID_USUARIO: Integer): IBizEmpresaTienda;
|
|
|
|
|
|
function DarListaFormasPago: TStringList;
|
|
|
|
|
|
function DarListaTiposIVA: TStringList;
|
|
|
|
|
|
Procedure AsignarIDFormaPago(AEmpresa: IBizEmpresa; const IDFormaPago: Variant);
|
|
|
|
|
|
Procedure AsignarIDTipoIVA(AEmpresa: IBizEmpresa; const IDTipoIVA: Variant);
|
|
|
|
|
|
|
|
|
|
|
|
property TiendasController : ITiendasEmpresaController read GetTiendasController;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
implementation
|
|
|
|
|
|
|
|
|
|
|
|
uses
|
|
|
|
|
|
uEditorRegistryUtils, cxControls, DB, uFactuGES_App,
|
|
|
|
|
|
uDataModuleEmpresas, uIEditorEmpresa, uStringsUtils;
|
|
|
|
|
|
|
|
|
|
|
|
{ TEmpresasController }
|
|
|
|
|
|
|
|
|
|
|
|
procedure TEmpresasController.Anadir(AEmpresa: IBizEmpresa);
|
|
|
|
|
|
begin
|
|
|
|
|
|
AEmpresa.Insert;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TEmpresasController.AsignarIDFormaPago(AEmpresa: IBizEmpresa; const IDFormaPago: Variant);
|
|
|
|
|
|
begin
|
|
|
|
|
|
if Assigned(AEmpresa) then
|
|
|
|
|
|
begin
|
|
|
|
|
|
if not AEmpresa.DataTable.Editing then
|
|
|
|
|
|
AEmpresa.DataTable.Edit;
|
|
|
|
|
|
|
|
|
|
|
|
if EsCadenaVacia(IDFormaPago) then
|
|
|
|
|
|
AEmpresa.ID_FORMA_PAGOIsNull := true
|
|
|
|
|
|
else
|
|
|
|
|
|
AEmpresa.ID_FORMA_PAGO := IDFormaPago;
|
|
|
|
|
|
|
|
|
|
|
|
AEmpresa.DataTable.Post;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TEmpresasController.AsignarIDTipoIVA(AEmpresa: IBizEmpresa;
|
|
|
|
|
|
const IDTipoIVA: Variant);
|
|
|
|
|
|
begin
|
|
|
|
|
|
if Assigned(AEmpresa) then
|
|
|
|
|
|
begin
|
|
|
|
|
|
if not AEmpresa.DataTable.Editing then
|
|
|
|
|
|
AEmpresa.DataTable.Edit;
|
|
|
|
|
|
|
|
|
|
|
|
if EsCadenaVacia(IDTipoIVA) then
|
|
|
|
|
|
AEmpresa.ID_TIPO_IVAIsNull := true
|
|
|
|
|
|
else
|
|
|
|
|
|
AEmpresa.ID_TIPO_IVA := IDTipoIVA;
|
|
|
|
|
|
|
|
|
|
|
|
AEmpresa.DataTable.Post;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function TEmpresasController.Buscar(const ID: Integer): IBizEmpresa;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := FDataModule.GetItem(ID)
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function TEmpresasController.BuscarTodos: IBizEmpresa;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := FDataModule.GetItems;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
constructor TEmpresasController.Create;
|
|
|
|
|
|
begin
|
|
|
|
|
|
inherited;
|
|
|
|
|
|
FDataModule := TDataModuleEmpresas.Create(Nil);
|
|
|
|
|
|
FTiendasController := TTiendasEmpresaController.Create;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function TEmpresasController.DarListaFormasPago: TStringList;
|
|
|
|
|
|
begin
|
|
|
|
|
|
ShowHourglassCursor;
|
|
|
|
|
|
try
|
|
|
|
|
|
Result := FDataModule.DarListaFormasPago;
|
|
|
|
|
|
finally
|
|
|
|
|
|
HideHourglassCursor;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function TEmpresasController.DarListaTiendas(
|
|
|
|
|
|
AEmpresa: IBizEmpresa): TStringList;
|
|
|
|
|
|
var
|
|
|
|
|
|
ATiendas: IBizEmpresaTienda;
|
|
|
|
|
|
begin
|
|
|
|
|
|
if not Assigned(AEmpresa) then
|
|
|
|
|
|
raise Exception.Create ('Empresa no asignada (DarListaTiendas)');
|
|
|
|
|
|
|
|
|
|
|
|
ATiendas := AEmpresa.Tiendas;
|
|
|
|
|
|
ATiendas.DataTable.Active := True;
|
|
|
|
|
|
|
|
|
|
|
|
Result := TStringList.Create;
|
|
|
|
|
|
try
|
|
|
|
|
|
with Result do
|
|
|
|
|
|
begin
|
|
|
|
|
|
Add(Format('%s=%d', [CTE_TODAS, CTE_ID_TODAS]));
|
|
|
|
|
|
|
|
|
|
|
|
ATiendas.DataTable.First;
|
|
|
|
|
|
while not ATiendas.DataTable.EOF do
|
|
|
|
|
|
begin
|
|
|
|
|
|
Add(Format('%s=%d', [ATiendas.NOMBRE, ATiendas.ID]));
|
|
|
|
|
|
ATiendas.DataTable.Next;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
finally
|
|
|
|
|
|
ATiendas := NIL;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function TEmpresasController.DarListaTiposIVA: TStringList;
|
|
|
|
|
|
begin
|
|
|
|
|
|
ShowHourglassCursor;
|
|
|
|
|
|
try
|
|
|
|
|
|
Result := FDataModule.DarListaTiposIVA;
|
|
|
|
|
|
finally
|
|
|
|
|
|
HideHourglassCursor;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
2011-11-18 17:12:39 +00:00
|
|
|
|
function TEmpresasController.DarTiendaEmpresa(AEmpresa: IBizEmpresa; const num: Integer): IBizEmpresaTienda;
|
|
|
|
|
|
//Esta funci<63>n nos devuelve la tienda con numero de orden num (el orden de las tiendas ser<65> por id)
|
|
|
|
|
|
var
|
|
|
|
|
|
AListaTiendas: TStringList;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := Nil;
|
|
|
|
|
|
AListaTiendas := DarListaTiendas(AEmpresa);
|
|
|
|
|
|
//Siempre nos dara en la lista de tiendas la opci<63>n Todas que evitamos
|
|
|
|
|
|
if (AListaTiendas.Count > 1) then
|
|
|
|
|
|
Result := FTiendasController.Buscar(StrToInt(AListaTiendas.ValueFromIndex[num+1]));
|
|
|
|
|
|
FreeAndNil(AListaTiendas);
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
2011-11-14 17:40:41 +00:00
|
|
|
|
function TEmpresasController.DarTiendaUsuario(AEmpresa: IBizEmpresa; const ID_USUARIO: Integer): IBizEmpresaTienda;
|
|
|
|
|
|
var
|
|
|
|
|
|
AIDTienda : Integer;
|
|
|
|
|
|
begin
|
|
|
|
|
|
AIDTienda := FDataModule.DarTiendaUsuario(AEmpresa.ID, ID_USUARIO);
|
|
|
|
|
|
Result := FTiendasController.Buscar(AIDTienda);
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TEmpresasController.DescartarCambios(AEmpresa: IBizEmpresa);
|
|
|
|
|
|
begin
|
|
|
|
|
|
if not Assigned(AEmpresa) then
|
|
|
|
|
|
raise Exception.Create ('Empresa no asignada (DescartarCambios)');
|
|
|
|
|
|
|
|
|
|
|
|
ShowHourglassCursor;
|
|
|
|
|
|
try
|
|
|
|
|
|
if (AEmpresa.State in dsEditModes) then
|
|
|
|
|
|
AEmpresa.Cancel;
|
|
|
|
|
|
|
|
|
|
|
|
AEmpresa.DataTable.CancelUpdates;
|
|
|
|
|
|
finally
|
|
|
|
|
|
HideHourglassCursor;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
destructor TEmpresasController.Destroy;
|
|
|
|
|
|
begin
|
|
|
|
|
|
FDataModule := NIL;
|
|
|
|
|
|
FTiendasController := NIL;
|
|
|
|
|
|
inherited;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function TEmpresasController.Eliminar(AEmpresa: IBizEmpresa): Boolean;
|
|
|
|
|
|
begin
|
|
|
|
|
|
if not Assigned(AEmpresa) then
|
|
|
|
|
|
raise Exception.Create ('Empresa no asignada (Eliminar)');
|
|
|
|
|
|
|
|
|
|
|
|
ShowHourglassCursor;
|
|
|
|
|
|
try
|
|
|
|
|
|
if (AEmpresa.State in dsEditModes) then
|
|
|
|
|
|
AEmpresa.Cancel;
|
|
|
|
|
|
|
|
|
|
|
|
AEmpresa.Delete;
|
|
|
|
|
|
AEmpresa.DataTable.ApplyUpdates;
|
|
|
|
|
|
|
|
|
|
|
|
Result := True;
|
|
|
|
|
|
finally
|
|
|
|
|
|
HideHourglassCursor;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function TEmpresasController.Eliminar(const ID: Integer): Boolean;
|
|
|
|
|
|
var
|
|
|
|
|
|
AEmpresa : IBizEmpresa;
|
|
|
|
|
|
begin
|
|
|
|
|
|
AEmpresa := Buscar(ID);
|
|
|
|
|
|
|
|
|
|
|
|
if not Assigned(AEmpresa) then
|
|
|
|
|
|
raise Exception.Create(Format('No se ha encontrado la empresa con ID = %d', [ID]));
|
|
|
|
|
|
|
|
|
|
|
|
Result := Eliminar(AEmpresa);
|
|
|
|
|
|
AEmpresa := NIL;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function TEmpresasController.Existe(const ID: Integer): Boolean;
|
|
|
|
|
|
var
|
|
|
|
|
|
AEmpresa : IBizEmpresa;
|
|
|
|
|
|
begin
|
|
|
|
|
|
try
|
|
|
|
|
|
AEmpresa := Buscar(ID);
|
|
|
|
|
|
Result := Assigned(AEmpresa) and (AEmpresa.ID = ID);
|
|
|
|
|
|
finally
|
|
|
|
|
|
AEmpresa := NIL;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function TEmpresasController.GetTiendasController: ITiendasEmpresaController;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := FTiendasController;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function TEmpresasController.Guardar(AEmpresa: IBizEmpresa): Boolean;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := False;
|
|
|
|
|
|
|
|
|
|
|
|
if ValidarEmpresa(AEmpresa) then
|
|
|
|
|
|
begin
|
|
|
|
|
|
ShowHourglassCursor;
|
|
|
|
|
|
try
|
|
|
|
|
|
AEmpresa.DataTable.ApplyUpdates;
|
|
|
|
|
|
Result := True;
|
|
|
|
|
|
finally
|
|
|
|
|
|
HideHourglassCursor;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function TEmpresasController.Nuevo: IBizEmpresa;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := FDataModule.NewItem;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function TEmpresasController.ToStringList(AEmpresa: IBizEmpresa): TStringList;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := TStringList.Create;
|
|
|
|
|
|
with Result do
|
|
|
|
|
|
begin
|
|
|
|
|
|
AEmpresa.DataTable.Active := True;
|
|
|
|
|
|
AEmpresa.First;
|
|
|
|
|
|
while not AEmpresa.EOF do
|
|
|
|
|
|
begin
|
|
|
|
|
|
Add(AEmpresa.NOMBRE);
|
|
|
|
|
|
AEmpresa.Next;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function TEmpresasController.ValidarEmpresa(AEmpresa: IBizEmpresa): Boolean;
|
|
|
|
|
|
begin
|
|
|
|
|
|
if not Assigned(AEmpresa) then
|
|
|
|
|
|
raise Exception.Create ('Empresa no asignada (ValidarEmpresa)');
|
|
|
|
|
|
|
|
|
|
|
|
if (AEmpresa.DataTable.State in dsEditModes) then
|
|
|
|
|
|
AEmpresa.DataTable.Post;
|
|
|
|
|
|
|
|
|
|
|
|
if Length(AEmpresa.NOMBRE) = 0 then
|
|
|
|
|
|
raise Exception.Create('Debe indicar al menos el nombre de la empresa.');
|
|
|
|
|
|
|
|
|
|
|
|
// Asegurarse de valores en campos "autom<6F>ticos"
|
|
|
|
|
|
AEmpresa.Edit;
|
|
|
|
|
|
AEmpresa.USUARIO := AppFactuGES.UsuarioActivo.UserName;
|
|
|
|
|
|
AEmpresa.Post;
|
|
|
|
|
|
|
|
|
|
|
|
Result := True;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TEmpresasController.Ver(AEmpresa: IBizEmpresa);
|
|
|
|
|
|
var
|
|
|
|
|
|
AEditor : IEditorEmpresa;
|
|
|
|
|
|
begin
|
|
|
|
|
|
AEditor := NIL;
|
|
|
|
|
|
|
|
|
|
|
|
CreateEditor('EditorEmpresa', IEditorEmpresa, AEditor);
|
|
|
|
|
|
if Assigned(AEditor) then
|
|
|
|
|
|
try
|
|
|
|
|
|
AEditor.Empresa := AEmpresa;
|
|
|
|
|
|
AEditor.Controller := Self;
|
|
|
|
|
|
AEditor.ShowModal;
|
|
|
|
|
|
finally
|
|
|
|
|
|
AEditor.Release;
|
|
|
|
|
|
AEditor := NIL;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TEmpresasController.VerTodos(AEmpresas: IBizEmpresa);
|
|
|
|
|
|
{var
|
|
|
|
|
|
AEditor : IEditorEmpresas;}
|
|
|
|
|
|
begin
|
|
|
|
|
|
{ AEditor := NIL;
|
|
|
|
|
|
CreateEditor('EditorEmpresas', IEditorEmpresas, AEditor);
|
|
|
|
|
|
if Assigned(AEditor) then
|
|
|
|
|
|
with AEditor do
|
|
|
|
|
|
begin
|
|
|
|
|
|
Contactos := AContactos;
|
|
|
|
|
|
Controller := Self;
|
|
|
|
|
|
ShowEmbedded;
|
|
|
|
|
|
end;
|
|
|
|
|
|
}
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
end.
|