Preguntas Frecuentes / Anveo EDI Connect / Cómo agregar una condición IF a su mapeo
This is an automatic translation. The original post is available in Inglés.

Cómo agregar una condición IF a su mapeo

Si usted tiene algunas habilidades en cualquier lenguaje de programación, seguramente conocerá la sentencia IF-THEN-ELSE: si un campo de tabla o una variable tiene un valor específico X, entonces haga esto, si no hace otra cosa. Es posible reproducir este comportamiento en un mapeo, hay varias maneras de hacerlo y en este artículo queremos explicarlas.

Para el primer caso, supongamos que desea exportar una factura de ventas contabilizada. Tiene una cabecera de factura de ventas y varias líneas de factura. Las líneas de la factura contienen algunos artículos y algunos comentarios arriba y entre las líneas. Sin profundizar en su estructura de mapeo, estoy seguro de que tiene una línea de bucle para el encabezado de su factura de ventas y algunas líneas de mapeo de datos debajo de la línea, seguidas de una línea de bucle para sus líneas de ventas y sus líneas de mapeo:

Cabecera
de factura de venta – Documento
EDI – Línea 1
de asignación de datos de cabecera de factura – Línea 2
de asignación de datos de cabecera de factura – Línea 2 de asignación de datos de cabecera de factura….
– Línea de Factura de Ventas
— Línea 1
de asignación de datos de línea de factura — y así sucesivamente….
Los guiones indicarán el nivel de sangría de la cartografía.

La pregunta es: ¿cómo se separan las líneas de los ítems de las líneas con los comentarios? Es peligroso asumir que el orden de las líneas de posición y de comentario es siempre el mismo, por lo que se necesita una solución que sea independiente del orden.

La solución es añadir dos nuevas líneas de bucle sangradas debajo de la línea de factura de ventas. En el escenario que aparece en la imagen, todas las líneas de comentarios tienen el tipo «vacío», todas las demás líneas tienen un cierto tipo, que hace que las líneas se distingan. La primera línea de bucle nueva es un bucle sobre la tabla de la línea de factura de ventas, con el mismo enlace de elementos de datos y filtros que el primer bucle, pero se añade un filtro nuevo: Type=CONST(‘ ‘). Puede leer esto como «Si el tipo de línea de la factura de ventas está vacío» – su primera parte de la declaración IF!
Ahora para la parte «THEN»: todas las líneas de asignación que están sangradas debajo de esta nueva línea forman la parte «THEN» y puede poner los comentarios en la tabla «EDI Additional Information», por ejemplo, con todos los enlaces de datos y filtros necesarios.

¿Y qué hay de todas las demás líneas con sus posiciones (y cuentas de mayor y recursos)? Bueno, independientemente de las reglas generales de exportación que se aplican a su mapeo, estas líneas tienen un tipo que es diferente de vacío. Esto significa que puede añadir una segunda línea nueva a su mapeo, debajo de la línea IF, con el mismo enlace de elementos de datos y filtros que su primer bucle, pero ahora puede añadir el filtro en el tipo como este: Type=FILTRO(0). Puede leerlo como «si el tipo de línea de la factura de ventas es algo más que vacío» – su parte ELSE de la declaración. En este caso, es probable que desee crear algunas líneas de documento EDI que contengan la información de las posiciones (y los recursos y las cuentas de mayor), por lo que deberá sangrar la línea de asignación de línea de documento EDI debajo de esta otra línea y añadir las líneas de asignación de datos de forma apropiada.

Si desea ver más de cerca este ejemplo, puede utilizar la plantilla para exportar facturas de ventas contabilizadas desde el asistente: cree una nueva asignación de NAV en blanco con un código y un código de proyecto y, a continuación, ejecute el asistente desde la cinta «Acción» mediante «Ejecutar asistente de creación y actualización» y seleccione la primera opción:


En lugar de insertar la segunda línea de factura de ventas, también se puede insertar una línea de tipo condicional. Volvamos a la línea de bucle «Sales Invoice Line»: recorre todas las líneas de facturación, es decir cada línea de la factura se pasa a la asignación una tras otra. Si es una línea de comentarios, la información se escribirá en la tabla Información adicional EDI, lo que significa que hay un registro en el filtro.

Con la línea de tipo condicional, puedes aprovechar el hecho de que si tienes una línea sin comentarios, el filtro mencionado anteriormente no encuentra un registro. La línea condicional puede comprobar este caso, con la función «ISEMPTY». El nombre es literalmente, si no hay ningún registro en el filtro de la línea de comentarios de facturas de ventas, se ejecutarán todas las líneas de asignación sangradas debajo de la línea condicional. Aquí se escriben las líneas del documento EDI. Las propiedades completas de la línea de mapeo se parecen a esto:

Si ha importado la plantilla en una nueva asignación, puede cambiar la línea de asignación denominada «ELSE» por esta línea condicional.

Otra forma de crear un condicional es usando una traducción de valor. Por ejemplo, necesita exportar los códigos de unidad de medida de sus artículos a un mensaje de tipo EDIFACT. Es muy probable que los códigos de su sistema NAV no coincidan con los que se esperan en EDIFACT, por lo que debe traducirlos: si el código es «PALLET», escriba «PAL» en la tabla del búfer. Si es «PIECE», entonces escriba «PCE». Si es «HORA», escriba «HUR». Y así sucesivamente.

Puede utilizar el filtrado descrito anteriormente y añadir una línea de ventas (envío probablemente en este caso) debajo de la original para cada código de unidad de medida y escribir el código correspondiente en la línea de documento EDI, pero es mucho más fácil utilizar una traducción de valor. A cada código de unidad de medida «fuente» se le asigna un código de unidad de medida «destino», este código de destino se escribe en el campo de destino en la línea de asignación. Para configurar una traducción de valor, consulte el artículo de la base de conocimientos [insert link=»» here]=»»]