Escribir en secciones
Con scripts, el servidor autorrellena y calcula en el orden enviado; sin scripts, guarda tal cual; y cada línea de la lista se trata por separado.
Con los scripts activados, el servidor procesa un WriteOperation como el formulario: autorrellena los campos dependientes, calcula totales y ejecuta la lógica de la sección. Con los scripts desactivados, guarda los valores tal cual.
Antes de empezar
- Cómo se construye un
WriteOperationy cómo se lee su resultado: Cliente Dinaup. - Las constantes de campo (
VentasIngresosD.VentasIngresosES.ReferenciaCliente) salen de tu MyDinaup.
Escribir con scripts
El tercer parámetro de RunWriteOperationAsync (withsSripts) en true ejecuta los scripts de la sección: cálculos, validaciones y autorrellenados, como en la interfaz.
var result = await dinaupClient.RunWriteOperationAsync(sectionId, bulkOperations, true);En una venta, rellenas cantidad y precio por unidad de una línea, y el total del concepto y los del documento se calculan solos. En turnos, los scripts calculan duraciones. Con los scripts desactivados, la fila se guarda pero los campos que habría puesto el servidor nacen vacíos y nadie los completa después.
- Actívalos cuando la sección tenga lógica que deba ejecutarse: una venta nueva, el cierre de un pedido, una factura.
- Desactívalos en cambios que no dependen de esa lógica (un estado, un técnico asignado) y siempre en los borrados (
eliminadoa"1"). - Con scripts, Dinaup atiende las operaciones de una en una: repartir el lote en varios hilos no acelera.
El orden de los campos importa
Con scripts, los campos se procesan en el orden en que los envías, y cada uno dispara los autorrellenados que dependen de él. Envía primero las referencias (cliente, proceso, producto) y después los valores manuales.
- En Ventas, el cliente copia su descuento a la venta. Si envías tu descuento antes que el cliente, el autorrellenado lo sobrescribe.
- En Oportunidades CRM, el proceso comercial pone la fase inicial de ese proceso. El proceso va antes que cualquier campo que dependa de la fase.
El autorrellenado «Siempre» copia sin condiciones
Un campo autorrellenado «Siempre» desde otro se copia cada vez que cambia el origen. Si el cliente no tiene descuento, el descuento de la venta queda vacío; si quitas el cliente, también. Para un valor manual distinto, escríbelo después del campo que lo autorrellena.
Campos que no se envían
Los campos que gestiona el servidor (fechas UTC, autor del alta, empresa, totales calculados) no se envían. El comentario de cada constante de MyDinaup indica su política de escritura: Required, Auto-filled (Siempre), Read-only via REST o can be set when creating, but read-only on update. Ver anotaciones de cada campo.
Para fechar un dato, usa el campo de negocio de la sección (fecha del documento, fecha contable), no la fecha de alta del registro.
En las listas, el servidor solo cambia las líneas que envías
Una sección con lista (una venta y sus conceptos, un asiento y sus apuntes) se escribe por su sección principal: la cabecera en DataMainRow y las líneas en DataListRows, en el mismo WriteOperation. La sección de lista no admite escrituras directas.
| La línea enviada lleva | El servidor |
|---|---|
"id" vacío, o sin "id" | crea la línea |
el "id" de una línea existente | edita solo los campos enviados |
su "id" y "eliminado" a "1" | borra la línea |
Las líneas que no envías quedan como están: para corregir un precio, envía solo esa línea con su "id". Con listKey identificas las líneas por otro campo único.
Qué sección usar para cada dato, en el Catálogo de secciones del núcleo.