👥 Vincular varios registros con un formulario

A veces, un solo campo para el comprador o el propietario no es suficiente: las escrituras notariales requieren varios compradores, las comunidades hereditarias tienen varios propietarios y, en la notaría, hay que añadir además una administración. Para ello, propform dispone de un patrón compuesto por dos formularios más macros de bucle de direcciones recursivas.


Contenido


Concepto: Resumen + Edición

Crearás dos formularios que interactúan entre sí:

Formulario Finalidad
Formulario de resumen Muestra los compradores/propietarios/notarios actualmente vinculados a un inmueble, con los botones «Editar» y «Vincular a otros»
Formulario de edición Un formulario por tipo de persona con los campos de dirección; guarda la dirección y la vincula automáticamente con el inmueble

Flujo de trabajo para el usuario:

  1. Se abre el formulario de resumen (con ?estate[Id]=...)
  2. Las vinculaciones actuales se enumeran mediante las macros de bucle
  3. Al hacer clic en «Vincular (otro) comprador» → se abre el formulario de edición sin ID de dirección → se crea y vincula una nueva dirección
  4. Al hacer clic en «Editar dirección» → se abre el formulario de edición con el ID de dirección → se edita la dirección existente
  5. El formulario de edición tiene el formulario de resumen como página de agradecimiento → el usuario vuelve automáticamente al resumen actualizado

---

Paso 1: Crear el formulario de edición

Este es el más sencillo de los dos formularios. Contiene:

  • Campos de dirección (tratamiento, nombre, apellidos, calle, código postal, localidad, teléfono, correo electrónico…)
  • Configuración del formulario: «Vincular inmueble y dirección» como comprador, propietario o a través de un tipo de contacto (p. ej., notario, administración)
  • Página de agradecimiento = URL del formulario de resumen (p. ej., https://formular.deine-domain.de/notarbeauftragung-uebersicht?estate[Id]=_Uuidestate)

> 💡 Consejo: Necesitas un formulario de edición propio para cada tipo de persona (es decir, uno para el comprador, otro para el propietario, otro para el notario y otro para la administración), ya que cada uno tiene una lógica de vinculación diferente.

> 💡 Simplificación: Si todos los formularios de edición tienen el mismo diseño, puedes crearlos mediante la función «Copiar formulario» y ajustar únicamente la configuración de los enlaces.

---

Paso 2: Crear el formulario de resumen

El formulario de resumen consta de un único campo de descripción en el que se encuentran las macros de bucle. Los campos se rellenan completamente mediante macros de onOffice.

Componentes importantes por bucle:

  1. _ifEmpty(_Name;"Kein X verbunden";"...") — si aún no hay ningún registro vinculado, mostrar un mensaje adecuado
  2. Inicio del bucle _buyerbrek_1_ (Buyer-Begin-Recursion) o _ownerbrek_1_ (Owner-Begin-Recursion)
  3. Contenido del bucle — Pre-macros como _BuyerVorname, _BuyerName, _BuyerStrasse, además de un enlace «Editar dirección» con el UUID
  4. Fin del bucle _buyererek_1_ o _ownererek_1_
  5. Enlace «Conectar más» fuera del bucle (abre el formulario de edición sin ID de dirección)

---

Ejemplo de código: bucle de propietarios

_ifEmpty(_EigentName;"Kein Eigentümer verbunden";"_ownerbrek_1_
_OwnerTitel _OwnerVorname _OwnerName _ifEmpty(_OwnerName2;"";", _OwnerTitel2 _OwnerVorname2 _OwnerName2")
_OwnerStrasse
_OwnerPLZ _OwnerOrt
_OwnerTelefon, _OwnerEmail
<a href='https://formular.deine-domain.de/eigentuemer-bearbeiten?address[ID]=_OwnerUuidaddress&estate[Id]=_Uuidestate'>Adresse bearbeiten</a>

_ownererek_1_")
<a href="https://formular.deine-domain.de/eigentuemer-bearbeiten?estate[Id]=_Uuidestate">(Weiteren) Eigentümer verbinden</a>

Qué ocurre:

  • _EigentName (macro estándar de onOffice) comprueba si hay algún propietario vinculado
  • _ownerbrek_1_ ... _ownererek_1_ recorre todos los propietarios vinculados
  • Por cada propietario se muestran el título, nombre, apellidos, dirección y contacto, además de un enlace «Editar dirección» con _OwnerUuidaddress (UUID del propietario actual en el bucle)
  • Fuera del bucle hay un enlace «Vincular (otro) propietario» sin ID de dirección → crea una nueva dirección

---

Ejemplo de código: bucle de compradores

Exactamente el mismo patrón que con los propietarios, solo que con buyer en lugar de owner y las pre-macros _Buyer* en lugar de _Owner*:

_ifEmpty(_KaeuferName;"Kein Käufer verbunden";"_buyerbrek_1_
_BuyerTitel _BuyerVorname _BuyerName _ifEmpty(_BuyerName2;"";", _BuyerTitel2 _BuyerVorname2 _BuyerName2")
_BuyerStrasse
_BuyerPLZ _BuyerOrt
_BuyerTelefon, _BuyerEmail
<a href='https://formular.deine-domain.de/kaeufer-bearbeiten?address[ID]=_BuyerUuidaddress&estate[Id]=_Uuidestate'>Adresse bearbeiten</a>

_buyererek_1_")
<a href="https://formular.deine-domain.de/kaeufer-bearbeiten?estate[Id]=_Uuidestate">(Weiteren) Käufer verbinden</a>

---

Ejemplo de código: tipo de contacto específico (notario, administración, etc.)

Si no quieres recorrer todas las direcciones vinculadas a un tipo de contacto, sino mostrar directamente un tipo de contacto específico (por ejemplo, «el notario de esta propiedad»), utiliza la macro _XAPKontaktart#NAME#:

_ifEmpty(_XAPKontaktart#Notar#Name;"Kein Notariat verbunden
<a href='https://formular.deine-domain.de/notar-verbinden?estate[Id]=_Uuidestate'>Jetzt Notar verbinden</a>";"
_XAPKontaktart#Notar#Firma1
_XAPKontaktart#Notar#Vorname _XAPKontaktart#Notar#Name
_XAPKontaktart#Notar#Strasse, _XAPKontaktart#Notar#PLZ _XAPKontaktart#Notar#Ort
_XAPKontaktart#Notar#Telefon
_XAPKontaktart#Notar#Email
<a href='https://formular.deine-domain.de/notar-bearbeiten?address[ID]=_XAPKontaktart#Notar#Uuidaddress&estate[Id]=_Uuidestate'>Adresse bearbeiten</a>")

Notar es aquí el nombre de la opción de tipo de contacto en onOffice. Si utilizas tus propios valores de tipo de contacto, debes emplear el valor de clave exacto, p. ej.:

_XAPKontaktart#indMulti28075Select28075#Name

> 💡 Encontrarás el valor de clave en onOffice en Extras → Configuración → Administración → Direcciones → Campo «Tipo de contacto» → en la opción correspondiente.


## Ejemplo completo de solicitud de notario

Un formulario típico de resumen de solicitud de notario combina todos los bucles + tipos de contacto en un campo de descripción:

**Eigentümer**

_ifEmpty(_EigentName;"Kein Eigentümer verbunden";"_ownerbrek_1_
_OwnerTitel _OwnerVorname _OwnerName _ifEmpty(_OwnerName2;"";", _OwnerTitel2 _OwnerVorname2 _OwnerName2")
_OwnerStrasse
_OwnerPLZ _OwnerOrt
_OwnerTelefon, _OwnerEmail
<a href='https://formular.deine-domain.de/notarbeauftragung-adresse-bearbeiten?address[ID]=_OwnerUuidaddress&estate[Id]=_Uuidestate'>Adresse bearbeiten</a>

_ownererek_1_")
<a href="https://formular.deine-domain.de/notarbeauftragung-eigentuemer-verbinden?estate[Id]=_Uuidestate">(Weiteren) Eigentümer verbinden</a>

---

**Käufer**

_ifEmpty(_KaeuferName;"Kein Käufer verbunden";"_buyerbrek_1_
_BuyerTitel _BuyerVorname _BuyerName _ifEmpty(_BuyerName2;"";", _BuyerTitel2 _BuyerVorname2 _BuyerName2")
_BuyerStrasse
_BuyerPLZ _BuyerOrt
_BuyerTelefon, _BuyerEmail
<a href='https://formular.deine-domain.de/notarbeauftragung-adresse-bearbeiten?address[ID]=_BuyerUuidaddress&estate[Id]=_Uuidestate'>Adresse bearbeiten</a>

_buyererek_1_")
<a href="https://formular.deine-domain.de/notarbeauftragung-kaeufer-verbinden?estate[Id]=_Uuidestate">(Weiteren) Käufer verbinden</a>

---

**Notariat**

_ifEmpty(_XAPKontaktart#Notar#Name;"Kein Notariat verbunden
<a href='https://formular.deine-domain.de/notarbeauftragung-notar-verbinden?estate[Id]=_Uuidestate'>Jetzt Notar verbinden</a>";"
_XAPKontaktart#Notar#Firma1
_XAPKontaktart#Notar#Vorname _XAPKontaktart#Notar#Name
_XAPKontaktart#Notar#Strasse, _XAPKontaktart#Notar#PLZ _XAPKontaktart#Notar#Ort
_XAPKontaktart#Notar#Telefon
_XAPKontaktart#Notar#Email
<a href='https://formular.deine-domain.de/notarbeauftragung-adresse-bearbeiten?address[ID]=_XAPKontaktart#Notar#Uuidaddress&estate[Id]=_Uuidestate'>Adresse bearbeiten</a>")

→ Tras abrirlo, el usuario ve un resumen claro de todas las personas vinculadas + botones para editar o añadir más personas.


Errores habituales

La empresa como propietaria/compradora se detecta como «vacía»

_ifEmpty(_EigentName;...) solo comprueba el apellido. En los registros de empresas, _EigentName suele estar vacío y solo _EigentZusatz1 (nombre de la empresa) está rellenado. Solución: Añadir «Adicional 1» a la comprobación, p. ej.:

_ifEmpty(_EigentName;_ifEmpty(_EigentZusatz1;"Kein Eigentümer verbunden";"...");"...")

Datos maestros 2 no activados

Los campos _OwnerName2, _OwnerStrasse2, _OwnerPLZ2, etc. (segunda dirección dentro de un registro) no están activados de forma predeterminada en muchas versiones de onOffice. Si tu bucle accede a ellos y no muestra nada, comprueba en onOffice, en Extras → Configuración → Administración → Direcciones, si los campos de datos maestros 2 están activados.

El enlace no se resuelve

Los enlaces HTML en el campo de descripción funcionan, pero las comillas deben ser simples ' O dobles " — no mezcladas en el mismo elemento. El _ifEmpty(...; ""; "...") anidado a menudo te obliga a escribir los atributos HTML con '.

Varios bucles a la vez

Puedes combinar sin problemas los bucles _buyerbrek_1_/_buyererek_1_ y _ownerbrek_1_/_ownererek_1_ en el mismo campo de descripción. _1_ es un contador interno: si necesitas varios bucles de comprador en un campo (algo poco habitual), aumenta el número: _buyerbrek_2_, _buyererek_2_.

El formulario de edición crea la dirección dos veces

Si la dirección se duplica en lugar de actualizarse en el segundo envío: el parámetro address[ID] no se ha recibido o el formulario no está configurado en «Rellenar dirección automáticamente». Comprueba la configuración de rellenado automático.


Relacionado