Grabación: movimientos e importación
Un formulario de ingreso no graba por sí mismo: declara movimientos, que son otros XML encargados de insertar, actualizar o borrar. Estos elementos definen ese encadenamiento y el pasaje de datos entre los XML que participan.
<movimientos>
Sección titulada «<movimientos>»Lista de XMLs relacionados que el motor procesa en cascada al grabar el padre. Útil para INSERT/UPDATE en múltiples tablas relacionadas (cabecera + detalles).
Contenido
Sección titulada «Contenido»| Elemento | Veces | Descripción |
|---|---|---|
<relacion> |
0..n | Referencia a un XML hijo que se procesa como parte del movimiento. |
Atributos
Sección titulada «Atributos»cabecera
Sección titulada «cabecera»texto · opcional
Nombre del XML cabecera (padre lógico del movimiento).
texto · opcional
Directorio donde buscar el XML de cabecera. Sólo afecta a cabecera: las <relacion> hijas resuelven su propio XML por su cuenta y no heredan este valor.
<relacion>
Sección titulada «<relacion>»Referencia a un XML hijo que se procesa como parte del movimiento.
- Va dentro de:
<movimientos>(0..n) - Contenido: texto libre.
- Atributos: 2 (propios)
Atributos
Sección titulada «Atributos»texto · opcional
Directorio del XML relacionado.
texto · obligatorio
Nombre del XML relacionado.
<cierraproceso>
Sección titulada «<cierraproceso>»Cierre de proceso: ejecuta otro XML como parte de la grabación del actual. Con processFirst="true" en el <histrix> del hijo, el hijo se ejecuta antes que el padre (útil para obtener numeradores en el hijo antes de que el padre grabe).
Caso típico: recibos y pagos comparten cajmovimientos_ing.xml como cierraproceso, diferenciando con el parámetro tesconie (‘I’ o ‘E’).
- Va dentro de:
<fieldGroup>(0..n),<include>(0..n),<tabla>(0..n),<table>(0..n) - Atributos: 3 (propios)
Contenido
Sección titulada «Contenido»| Elemento | Veces | Descripción |
|---|---|---|
<paring> |
1..n | Mapea un campo del padre a un campo del XML cierraproceso. |
Atributos
Sección titulada «Atributos»condition
Sección titulada «condition»texto · opcional
Condición PHP que decide si el cierraproceso se ejecuta.
texto · opcional
Directorio del XML cierraproceso.
texto · obligatorio
Nombre del XML cierraproceso (sin .xml).
<importar>
Sección titulada «<importar>»Configura un popup hijo que alimenta el grid/form actual con datos seleccionados. Cada <field> (o su equivalente <parameter>) mapea un campo del hijo con uno del padre.
Cuidado: al volver del popup, el renglón se busca por los campos esClave del grid. Si un campo esClave del padre no se pasa al hijo y no vuelve via <detalle>, el matcheo falla y se crea una fila nueva (fantasma) en lugar de actualizar la existente.
- Va dentro de:
<campo>(0..n),<field>(0..n),<include>(0..n),<tabla>(0..n),<table>(0..n) - Atributos: 12 (propios)
Contenido
Sección titulada «Contenido»| Elemento | Veces | Descripción |
|---|---|---|
<preparam> |
0..n | Pre-condición que se aplica al popup hijo antes de ejecutar su query. |
<param> |
0..n | Parámetro pasado al popup hijo (legacy de preparam). |
<field> |
0..n | Mapeo origen→destino entre hijo y padre. El id es el origen y el texto del tag es el destino; con el texto vacío se usa el mismo nombre en los… |
<parameter> |
0..n | Forma equivalente a <field> con la sintaxis source/target. |
Atributos
Sección titulada «Atributos»accesskey
Sección titulada «accesskey»texto · opcional
Tecla de acceso rápido del botón de importación (una letra). La menciona la doc de ventint y acá se declara: con esto el operador dispara la búsqueda sin ir al mouse.
texto · opcional
Texto del botón que abre la importación, en lugar del texto por defecto.
texto · opcional
Directorio del XML hijo.
texto · opcional
Alto del popup.
texto · opcional
Nombre de la clase de icono a mostrar en el botón (ej. ui-icon-search, ui-icon-plus).
texto · opcional
Texto del botón que abre el popup.
BoolEstricto · opcional
Se acepta por compatibilidad, pero acá no hace nada: readImportTag no lee este atributo y Relationship/ImportRelationship no lo conoce. El resume funcional es el del <histrix>, donde Data/Container lo consulta para descartar el SQL externo previo del contenedor referente al volver de un popup.
texto · opcional
Título del popup.
texto · opcional
Alias español de title.
ventint
Sección titulada «ventint»BoolTrueFalse · opcional
Se acepta por compatibilidad, pero el motor no lo lee — igual que en el <helper>. readImportTag sólo procesa xml, field/campo, parameter, icon, accesskey, boton, width, height, label, titulo/title y dir.
texto · opcional
Ancho del popup.
texto · opcional
Nombre del XML hijo que se abre como popup.
<ejecuta>
Sección titulada «<ejecuta>»SQL/PHP arbitrario a ejecutar. En tipo="nosql" Histrix reemplaza 'nombre_campo' (entre comillas) por el valor del campo.
No acepta atributos.
<param>
Sección titulada «<param>»Condición pre-filtrado en consultas/importar. field es alias de campo (mismo significado).
- Va dentro de:
<importar>(0..n) - Contenido: texto libre.
- Atributos: 3 (propios)
Atributos
Sección titulada «Atributos»texto · opcional
id del campo del XML hijo al que se le aplica el pre-filtro.
texto · opcional
Alias inglés de campo.
operador
Sección titulada «operador»OperadorCondicion · opcional
Operador SQL del pre-filtro.
<preparam>
Sección titulada «<preparam>»Condición pre-filtrado en consultas/importar. field es alias de campo (mismo significado).
- Va dentro de:
<campo>(0..n),<field>(0..n),<importar>(0..n) - Contenido: texto libre.
- Atributos: 3 (propios)
Acepta los mismos 3 atributos que <param>, que es donde están documentados.
<paring>
Sección titulada «<paring>»Alimenta con una condición SQL al contenedor embebido del campo (el que abre obj / linkint / el helper). No es el <paring> de <cierraproceso>, que es otro mecanismo: ése mapea campos del padre al XML de cierre.
Atributos
Sección titulada «Atributos»destino
Sección titulada «destino»texto · obligatorio
id del campo del contenedor embebido sobre el que se arma la condición.
operador
Sección titulada «operador»texto · opcional
Operador SQL de la condición (=, !=, like, in…), no un operador de asignación: += y -= no significan nada acá. Si se omite, =.
reemplazo
Sección titulada «reemplazo»BoolDefaultActivo · opcional · default true
Está invertido: con el atributo ausente la condición ya reemplaza la que tuviera ese campo. El valor útil es reemplazo="false", que la acumula en vez de reemplazarla.
<paring> en <cierraproceso>
Sección titulada «<paring> en <cierraproceso>»Mapea un campo del padre a un campo del XML cierraproceso.
- Va dentro de:
<cierraproceso>(1..n) - Contenido: texto libre.
- Atributos: 1 (propios)
Atributos
Sección titulada «Atributos»destino
Sección titulada «destino»texto · obligatorio
id del campo destino en el XML cierraproceso.
<field> en <importar>
Sección titulada «<field> en <importar>»Mapeo origen→destino dentro de <importar>. El id es el campo origen y el texto del tag es el campo destino; con el texto vacío se usa el mismo nombre para los dos. Ese texto es significativo, no un comentario: borrarlo o comentarlo rompe el mapeo.
- Va dentro de:
<importar>(0..n) - Contenido: texto libre.
- Atributos: 1 (propios)
Atributos
Sección titulada «Atributos»texto · obligatorio
id del campo del padre que recibe.