Tengo varios campos en una tabla de DOCUMENTOS que están definidos con un contenido inicial que viene de una tabla de CLIENTES o PROVEEDORES (que son tablas de extensión de una tabla TERCEROS). El caso es que quiero que los contenidos iniciales tomen el valor de la tabla de clientes o proveedores, pero sólo al crear un nuevo documento. El problema es que el contenido inicial depende del tipo de documento. En función de ese tipo me toma el valor de la extensión de proveedor o de la de cliente. Es algo así:
Si sobre un pedido ya realizado cambio el descuento quiero que al convertir el pedido en albarán se mantenga el descuento aplicado en el pedido, pero como estoy cambiando el valor de #TIPODOC, se dispara el contenido inicial y me vuelve a poner el valor que tiene definido el cliente en su ficha.
pero me sale un error de que el contenido inicial es recursivo.
¿Se os ocurre alguna forma de solucionar esto? Siempre puedo quitar los valores iniciales de los campos y gestionar los datos manualmente, pero no me atrae la idea.
He creado en la tabla DOCUMENTO un enlace #VALORES_ANTERIORES indirecto virtual a la misma tabla resolviendo por el ID. De esta forma tengo guardados los valores anteriores de los campos del registro.
Si sobre un pedido ya realizado cambio el descuento quiero que al convertir el pedido en albarán se mantenga el descuento aplicado en el pedido, pero como estoy cambiando el valor de #TIPODOC, se dispara el contenido inicial y me vuelve a poner el valor que tiene definido el cliente en su ficha.
Entiendo que cuando se crea el nuevo Albarán fijas el valor de #TIPODOC y el valor inicial de #DESCUENTO toma el descuento del Cliente o Proveedor (hasta aquí todo correcto). Una vez creado el Albarán cambias el valor de #DESCUENTO al que tiene el Pedido.
El Alta del Albarán desde el Pedido y la asignación del #DESCUENTO se hará en un Proceso para que quede englobado en una única Transacción.
Si lo he entendido bien, creo que con esto es suficiente
En realidad el pedido y el albarán son el mismo documento. Primero el documento tiene #TIPODOC=“PEDIDO” y luego se cambia a “ALBARAN”. Primero creo un documento tipo PEDIDO y luego tengo un proceso de conversión de documento que hace un Modificar campo(#TIPODOC, “ALBARAN”).
El contenido inicial del descuento se lanza cuando creo el pedido (correcto) y me pone en el pedido el valor del descuento que tenga el cliente. Si en esa operación en concreto el descuento debe ser otro lo cambio en el pedido. Ese valor quiero que se mantenga cuando convierto el documento a albarán. Por eso no quiero que se lance el contenido inicial cuando modifico el campo #TIPODOC en la conversión.
Por esa razón no estaba seguro de lo que planteabas, de todas formas creo que es un diseño un poco extraño. Un documento, una vez creado, no debería cambiar su naturaleza. Además pierdes el histórico del Pedido y te obliga a servirlo completo.
En cualquier caso, puedes usar el comando Modificar campo solamente (TIPODOC, “ALBARAN”) para que no se dispare el recálculo del campo dependiente #DESCUENTO.
Ya sé que el diseño es un poco raro. En nuestro caso no se guardan históricos de pedidos ni de albaranes. Prácticamente todos los pedidos se entregan y se facturan en el día, de forma que el pedido es un documento bastante “efímero”. Además nuestro sistema no tiene los típicos deocumentos (presupuesto, pedido, albarán y factura) sino que es multidocumento y en nuestro caso tenemos más de 20 tipos diferentes de documento. Si tengo que hacer una tabla de cabeceras y líneas para cada tipo…
Lo de hacer “Modificar campo solamente” lo había pensado pero eso hace que no se dispare ningún contenido inicial y hay algunos que si quiero que se modifiquen.
El sistema es bastante complicado, pero de momento me sirve la solución de condicionar el contenido inicial a que haya cambiado el campo.