RELACIÓN ENTRE TABLAS INVENTTRANS E INVENTTRANSORIGIN

La tabla InventTrans es una de las tablas más importantes dentro de Dynamics 365 Finance & Operations, ya que almacena todas las transacciones de inventario generadas por las operaciones dentro del sistema que afectan el inventario de la empresa, tales como órdenes de venta, órdenes de compra, facturas, remisiones de órdenes de venta, recepciones de producto, diarios de movimiento, entre muchas otras.

Uno de los ejemplos más comunes de nuestro día a día, son las Ordenes de Venta, cuando nosotros generamos las líneas de la orden, capturamos los datos correspondientes a los artículos considerando dimensiones de inventario, dimensiones de almacenamiento, cantidades, y de más características, desde ahí se termina generando ya una transacción de inventario con cierto estado, para poder comprobarlo nos ubicamos sobre la línea de Orden de Venta y nos vamos a la ruta mostrada en la siguiente Imagen:

Una vez ubicados sobre esa ruta podemos visualizar las transacciones correspondientes a esa línea de Orden de venta:

Cabe destacar que las tablas que generan estas transacciones siempre son las Líneas de ciertos documentos(SalesLine, PurchLine, CustInvoiceTrans, etc), que deben contener claramente artículos a procesar entre sus características.

Es importante mencionar que conforme se van aplicando ciertos procesos a los documentos de AX, en el caso por ejemplo de la Orden de venta su correspondiente remisión y su respectiva factura, las transacciones de inventario se van generando con sus diferentes estados relacionados al proceso ejecutado:

Remisión de Orden de venta:

Facturas de Orden de venta:

En más de una ocasión nos puede tocar algún requerimiento en el que nos soliciten recuperar las transacciones correspondientes a determinado documento en AX, pudiera parecer sencillo ya que si nos vamos por la intuición del fácil acceso al formulario podríamos pensar que la relación entre una tabla y otra es bastante sencilla, pero es importante considerar que no es así, ya que no existe una relación directa entre la tabla que genera la transacción y la transacción, en su defecto existe una tabla intermedia llamada InventTransOrigin.

El objetivo de la tabla InventransOrigin es almacenar y relacionar los datos de la operación que genera la transacción y las transacciones en sí, básicamente funciona como una tabla intermedia, que tiene una relación 1..1 con las tablas que generan las transacciones, y una relación 1..N con la tabla InventTrans, evitando con ello almacenar datos redundantes y reduciendo el monto de datos almacenados.

Por lo tanto, al revisar las relaciones de las tablas involucradas en el proceso, se puede identificar lo siguiente:

  • Existe una relación directa entre la tabla InventTransOrigin y la tabla que genera la transacción (SalesLine, PurchLine, CustinvoiceTrans, VendInvoiceTrans, etc) a través del campo InventTransId.
  • Existe una relación entre la tabla InventTrans y la tabla InventransOrigin a partir del RECID.

Con esto podemos deducir que para poder recuperar los registros de la inventTrans debemos hacer una consulta tomando como partida el campo InventTrans de la tabla que nos interesa recuperar sus transacciones, hacia la inventTransOrigin y de ahi a la InventTrans, considerando su relación como se muestra en la siguiente imagen:

Con esto podemos asegurar que recuperamos las transacciones de inventario correspondientes a la tabla SalesLine(Usando el mismo código podríamos obtener las transacciones de las diferentes tablas que se relacionan, solo sustituyendo claramente la tabla que generan las transacciones), y poder procesarlas para lo que se nos haya requerido, que principalmente es solicitado para temas de adición a reportes o cálculos en procesos.

Con esta información ya podemos concluír que realmente no están complejo el proceso de identificar las transacciones, solo hay que tener clara la relación que arriba se comenta, y será muy fácil realizar cualquier requerimiento relacionado a las transacciones.