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.