159 lines
4.1 KiB
ObjectPascal
159 lines
4.1 KiB
ObjectPascal
|
|
unit uAgentesController;
|
|||
|
|
|
|||
|
|
interface
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
uCustomEditor,
|
|||
|
|
uContactosController, uBizContactos,
|
|||
|
|
uIEditorAgentes, uIEditorAgente, uIDataModuleContactos, uIDataModuleAgentes;
|
|||
|
|
|
|||
|
|
type
|
|||
|
|
IAgentesController = interface(IContactosController)
|
|||
|
|
['{23016B7A-1FDA-4092-ACE5-D27D3A50F236}']
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
TAgentesController = class(TContactosController, IAgentesController)
|
|||
|
|
protected
|
|||
|
|
procedure AsignarID(AContacto: IBizContacto; const IDNuevo: Integer); override;
|
|||
|
|
|
|||
|
|
public
|
|||
|
|
constructor Create; override;
|
|||
|
|
|
|||
|
|
function Duplicar(AContacto: IBizContacto): IBizContacto; override;
|
|||
|
|
|
|||
|
|
function Buscar(const ID: Integer): IBizContacto; override;
|
|||
|
|
function BuscarTodos: IBizContacto; override;
|
|||
|
|
function Nuevo : IBizContacto; override;
|
|||
|
|
procedure Ver(AContacto : IBizContacto); override;
|
|||
|
|
procedure VerTodos(AContactos: IBizContacto); override;
|
|||
|
|
function Eliminar(AContacto: IBizContacto): Boolean; override;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
implementation
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
Windows, SysUtils, cxControls, Dialogs, uDataModuleAgentes, uEditorRegistryUtils,
|
|||
|
|
uDataTableUtils, uDADataTable, DB, schContactosClient_Intf;
|
|||
|
|
|
|||
|
|
{ TAgentesController }
|
|||
|
|
|
|||
|
|
procedure TAgentesController.AsignarID(AContacto: IBizContacto;
|
|||
|
|
const IDNuevo: Integer);
|
|||
|
|
begin
|
|||
|
|
if not Assigned(AContacto) then
|
|||
|
|
raise Exception.Create ('Contacto no asignado');
|
|||
|
|
|
|||
|
|
{ Los datos de comisiones hay que comprobarlos siempre
|
|||
|
|
tanto en inserci<EFBFBD>n como en modificaci<EFBFBD>n. }
|
|||
|
|
with (AContacto as IBizAgente) do
|
|||
|
|
if Assigned(Comisiones) then
|
|||
|
|
AsignarIDDetalles(AContacto, IDNuevo, Comisiones.DataTable);
|
|||
|
|
|
|||
|
|
inherited;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TAgentesController.Buscar(const ID: Integer): IBizContacto;
|
|||
|
|
begin
|
|||
|
|
Result := (FDataModule as IDataModuleAgentes).GetItem(ID);
|
|||
|
|
FiltrarEmpresa(Result);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TAgentesController.BuscarTodos: IBizContacto;
|
|||
|
|
begin
|
|||
|
|
Result := (FDataModule as IDataModuleAgentes).GetItems;
|
|||
|
|
FiltrarEmpresa(Result);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
constructor TAgentesController.Create;
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
FDataModule := TDataModuleAgentes.Create(Nil);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TAgentesController.Duplicar(AContacto: IBizContacto): IBizContacto;
|
|||
|
|
begin
|
|||
|
|
Result := inherited Duplicar(AContacto);
|
|||
|
|
|
|||
|
|
if Assigned((Result as IBizAgente).Comisiones) then
|
|||
|
|
DuplicarRegistros((AContacto as IBizAgente).Comisiones.DataTable, (Result as IBizAgente).Comisiones.DataTable, mdrTodos);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TAgentesController.Eliminar(AContacto: IBizContacto): Boolean;
|
|||
|
|
begin
|
|||
|
|
Result := False;
|
|||
|
|
|
|||
|
|
if not Assigned(AContacto) then
|
|||
|
|
raise Exception.Create ('Contacto no asignado');
|
|||
|
|
|
|||
|
|
ShowHourglassCursor;
|
|||
|
|
try
|
|||
|
|
if (AContacto.State in dsEditModes) then
|
|||
|
|
AContacto.Cancel;
|
|||
|
|
|
|||
|
|
AContacto.Delete;
|
|||
|
|
AContacto.DataTable.ApplyUpdates;
|
|||
|
|
HideHourglassCursor;
|
|||
|
|
Result := True;
|
|||
|
|
except
|
|||
|
|
on E: Exception do
|
|||
|
|
begin
|
|||
|
|
AContacto.DataTable.CancelUpdates;
|
|||
|
|
HideHourglassCursor;
|
|||
|
|
if (Pos('FOREIGN KEY', E.Message) > 0) then
|
|||
|
|
MessageBox(0, 'No se puede borrar este agente porque tiene documentos dados de alta (como liquidaciones de comisiones, asignado a un cliente, etc)', 'Atenci<63>n', MB_ICONWARNING or MB_OK);
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TAgentesController.Nuevo: IBizContacto;
|
|||
|
|
var
|
|||
|
|
AContacto : IBizAgente;
|
|||
|
|
begin
|
|||
|
|
AContacto := (FDataModule as IDataModuleAgentes).NewItem;
|
|||
|
|
FiltrarEmpresa(AContacto);
|
|||
|
|
AContacto.DataTable.Active := True;
|
|||
|
|
AContacto.Insert;
|
|||
|
|
Result := AContacto;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TAgentesController.Ver(AContacto: IBizContacto);
|
|||
|
|
var
|
|||
|
|
AEditor : IEditorAgente;
|
|||
|
|
begin
|
|||
|
|
AEditor := NIL;
|
|||
|
|
ShowHourglassCursor;
|
|||
|
|
try
|
|||
|
|
CreateEditor('EditorAgente', IEditorAgente, AEditor);
|
|||
|
|
with AEditor do
|
|||
|
|
begin
|
|||
|
|
Contacto := AContacto;
|
|||
|
|
Controller := Self;
|
|||
|
|
end;
|
|||
|
|
finally
|
|||
|
|
HideHourglassCursor;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
if Assigned(AEditor) then
|
|||
|
|
try
|
|||
|
|
AEditor.ShowModal;
|
|||
|
|
AEditor.Release;
|
|||
|
|
finally
|
|||
|
|
AEditor := NIL;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TAgentesController.VerTodos(AContactos: IBizContacto);
|
|||
|
|
var
|
|||
|
|
AEditor : IEditorAgentes;
|
|||
|
|
begin
|
|||
|
|
CreateEditor('EditorAgentes', IEditorAgentes, AEditor);
|
|||
|
|
with AEditor do
|
|||
|
|
begin
|
|||
|
|
Contactos := AContactos;
|
|||
|
|
Controller := Self;
|
|||
|
|
ShowEmbedded;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
end.
|