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 WriteOperation y 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 (eliminado a "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 llevaEl servidor
"id" vacío, o sin "id"crea la línea
el "id" de una línea existenteedita 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.

En esta página