AbetoDesign_FactuGES2/Source/Modulos/Contactos/Controller/uDireccionesContactoController.pas

154 lines
4.6 KiB
ObjectPascal

unit uDireccionesContactoController;
interface
uses
Windows, Forms, Classes, Controls, Contnrs, SysUtils, uDADataTable,
uBizContactos, uBizDireccionesContacto, uIDataModuleContactos,
uControllerBase;
type
IDireccionesContactoController = interface(IControllerBase)
['{9B6CB172-F32C-414F-A0E2-99920CAF88FB}']
procedure CopiarDireccionFiscal(AContacto: IBizContacto; ADireccion: IBizDireccionesContacto; AAnadir : Boolean = True);
procedure CopiarDireccion(ADireccionOrigen: IBizDireccionesContacto; ADireccionDestino: IBizDireccionesContacto; AAnadir : Boolean = True);
procedure Ver(ADireccion : IBizDireccionesContacto);
function Localizar(ADirecciones: IBizDireccionesContacto; const ID : Integer): Boolean;
function Nuevo : IBizDireccionesContacto;
end;
TDireccionesContactoController = class(TControllerBase, IDireccionesContactoController)
private
FDataModule : IDataModuleContactos;
public
procedure CopiarDireccionFiscal(AContacto: IBizContacto; ADireccion: IBizDireccionesContacto; AAnadir : Boolean = True);
procedure CopiarDireccion(ADireccionOrigen: IBizDireccionesContacto; ADireccionDestino: IBizDireccionesContacto; AAnadir : Boolean = True);
procedure Ver(ADireccion : IBizDireccionesContacto);
function Localizar(ADirecciones: IBizDireccionesContacto; const ID : Integer): Boolean;
function Nuevo : IBizDireccionesContacto;
constructor Create; override;
destructor Destroy; override;
end;
implementation
{ TDireccionesContactoController }
uses
uDataModuleContactos, schContactosClient_Intf, uIEditorDireccionContacto,
uEditorRegistryUtils, cxControls, uDataTableUtils;
procedure TDireccionesContactoController.CopiarDireccion(ADireccionOrigen,
ADireccionDestino: IBizDireccionesContacto; AAnadir: Boolean);
begin
if not Assigned(ADireccionOrigen) then
raise Exception.Create ('Dirección de origen no asignada (CopiarDireccion)');
if not Assigned(ADireccionDestino) then
raise Exception.Create ('Dirección de destino no asignada (CopiarDireccion)');
ADireccionOrigen.Active := True;
ADireccionDestino.Active := True;
DuplicarRegistro(ADireccionOrigen.DataTable, ADireccionDestino.DataTable, True, True, AAnadir);
end;
procedure TDireccionesContactoController.CopiarDireccionFiscal(
AContacto: IBizContacto; ADireccion: IBizDireccionesContacto;
AAnadir: Boolean);
begin
if not Assigned(AContacto) then
raise Exception.Create ('Contacto no asignado (CopiarDireccionFiscal)');
if not Assigned(ADireccion) then
raise Exception.Create ('Dirección no asignada (CopiarDireccionFiscal)');
AContacto.Active := True;
ADireccion.Active := True;
if AAnadir then
ADireccion.DataTable.Insert
else
ADireccion.DataTable.Edit;
try
with ADireccion do
begin
NOMBRE := AContacto.NOMBRE;
CALLE := AContacto.CALLE;
POBLACION := AContacto.POBLACION;
PROVINCIA := AContacto.PROVINCIA;
CODIGO_POSTAL := AContacto.CODIGO_POSTAL;
TELEFONO := AContacto.TELEFONO_1;
FAX := AContacto.FAX;
MOVIL := AContacto.MOVIL_1;
EMAIL := AContacto.EMAIL_1;
PERSONA_CONTACTO := AContacto.PERSONA_CONTACTO;
end;
finally
ADireccion.DataTable.Post;
end;
end;
constructor TDireccionesContactoController.Create;
begin
inherited;
FDataModule := TDataModuleContactos.Create(Nil);
end;
destructor TDireccionesContactoController.Destroy;
begin
FDataModule := Nil;
inherited;
end;
function TDireccionesContactoController.Localizar(
ADirecciones: IBizDireccionesContacto; const ID: Integer): Boolean;
begin
Result := True;
ShowHourglassCursor;
try
with ADirecciones.DataTable do
begin
DisableControls;
First;
if not Locate(fld_DireccionesContactoID, ID, []) then
Result := False;
EnableControls;
end;
finally
HideHourglassCursor;
end;
end;
function TDireccionesContactoController.Nuevo: IBizDireccionesContacto;
var
ADireccion : IBizDireccionesContacto;
begin
ADireccion := FDataModule.NewDireccion;
ADireccion.DataTable.Active := True;
ADireccion.Insert;
Result := ADireccion;
end;
procedure TDireccionesContactoController.Ver(
ADireccion: IBizDireccionesContacto);
var
AEditor : IEditorEditorDireccion;
begin
AEditor := NIL;
CreateEditor('EditorDireccion', IEditorEditorDireccion, AEditor);
if Assigned(AEditor) then
try
AEditor.Direccion := ADireccion;
AEditor.Controller := Self;
AEditor.ShowModal;
finally
AEditor.Release;
AEditor := NIL;
end;
end;
end.