EDI son las siglas que se refieren al envío de datos por vía electrónica que sustituye el envío de papel por el envío de rafagas de datos entre empresas o plataformas tecnológicas.
Para que el emisor y el receptor de la data se entiendan es necesario establecer el formato que permitirá al receptor decofidicar la data que recibe.
Existen varias alternativas para dar formato a la data en un proceso de transmisión electrónica de información.
En algunas instalaciones se nos pide a los desarrolladores de IBM I en lenguaje RPG o en otros lenguajes tener conocimientos de EDI. Sin embargo un intercambio de data entre distintas plataformas puede realizarse con distintos formatos. Algunos de esos formatos son: XML, JSON, EDIFACT, X12.
En esta oportunidad me voy a referir a EDI X12 como uno de los formatos que se utiliza para realizar la transmision de data.
En este artículo daré una idea general de cómo usar este formato y al final, los remitiré a algunos enlaces que, a mi criterio, son bastante completos en cuanto a la explicación del uso de EDI X12. El objetivo de este artículo es presentar en forma clara y sencilla los conceptos fundamentales que les permita seleccionar el formato X12 que necesitan aplicar para la aplicación que estan desarrollando.
Conceptos Clave:
Transacción: Se refiere a un documento ( orden de pago, factura, cheque, operación bancaria, etc)
ANSI: American National Standar Institute. Esta Institución se encarga de generar los estandares internacionales para codificación de data. La institución tiene una división en ella denominada X12 que se encargó de generar el standard de su mismo nombre.
Para una cadena de tiendas por departamento que tiene varias sucursales, un ejemplo gráfico del standard EDI X12 para el envío de las facturas generadas durante el día sería el siguiente:
Algunos autores comparan esta estructura con la "Matrioska". Esto se refiere a las muñecas rusas que se encapsulan una dentro de otra desde la mas grande hasta la mas pequeña y última de la serie. Veamos un ejemplo a continuación:
Bloque de transmisión:
El bloque de la estructura mas externo indica el inicio y el fin de la transmisión.
Como se ve en la figura, la línea de inicio del bloque debe comenzar con las letras "ISA" y la linea de fin del bloque debe iniciar con las letras "ISE".
En este bloque se especifica:
- Información sobre la transmisión
- Quien es el remitente
- Quien es el destinatario
- Dirección de envío
- Fecha, hora, Tracking ID
Bloque de Lotes (Batch): (siguiente nivel encapsulado)
Se delimita la información de cada sucursal con la línea de inicio que comienza con "GS" y con la línea de final de lote que comienza con "GE".
En este bloque se especifica:
- Información sobre la transmisión de cada lotes de información
- Remitente y destinatario, código de version
- Tipo de transaccion que se esta enviando
- Tracking id
Bloque de Transacciones: (El nivel detallado de la data)
Se delimita la información de cada transacción con la línea de inicio que comienza con "ST" y con la línea de final de lote que comienza con "SE".
En este bloque se especifica:
- El número de segmentos que tiene la transacción para saber si esta completa o no.
- Se crean los segmentos y los elementos contenidos en ellos.
Cada linea de la transacción debe pertenecer a una estructura de datos virtual (data structure) llamada LOOP -XXX predefinido por el estandar X12. (XXX es el código que corresponda segun el tipo de transacción, compra, venta, etc). Cuando digo "Virtual" quiero decir que no debe declararse ni escribirse en ninguna parte de la rafaga de transmisión, pero si se debe aplicar el estandard definido en ella.
Por ejemplo, si necesitamos especificar el nombre del cliente en la data que vamos a transmitir, el standard EDI X12 indicaría que debemos formatear la data de acuerdo a una estructura (data structure) "virtual" llamada: LOOP 2010BB que está conformada a su vez por varios segmentos de datos.
En EDI X12, cada linea de información se llama "segmento" y cada segmento está compuesto de "elementos". Los elementos se separan con un asterisco (*). Cada segmento debe terminar con el caracter ~.
Si
queremos armar las lineas de la transacción que corresponden a los
datos del cliente o (pagador) tenemos que generar cuatro (4) lineas.
Primera linea/segmento debe comenzar con los caracteres "NM1" seguido del código del cliente. Esto le indica al receptor que el segmento contiene el nombre del cliente
Segunda linea/segmento debe comenzar con "N3" se refiere a la dirección del cliente.
Esto le indica al receptor que el segmento contiene la dirección del cliente
Tercera línea/segmento debe comenzar con los caracteres "N4" se refiere a la ciudad.
Esto le indica al receptor que el segmento contiene la ciudad del cliente
Cuarta línea/segmento debe comenzar con los caracteres "REF" se refiere al código de referencia del pago (por ejemplo nro de transferencia, nro de recibo, etc)
Esta sería la estructura del loop y al lado de cada segmento la manera de llenarlo.
-
Loop 2010BB- Payer Name:
NM1*Codigo de cliente* ~
N3*Sector*Avenida*Calle*Edificio* ~
N4 *Ciudad* ~
REF*89087123*~
Para cada transaccion de la grafica mostrada en el artículo, se habran generado 4 lineas o "segmentos" que contienen los datos del pagador/cliente. Se pueden omitir lineas en caso de que no se requiera, por ejemplo se puede omitir CIUDAD. Si no se requiere enviar la ciudad, se omite la linea o segmento que comienza con "N4"
Cada transacción EDI (orden de pago: código 820, orden de compra: código 850, etc) tiene un código estandard internacional para identificarlas. Ademas, cada transacción tiene una lista de "LOOPS" asociados que indican como conformar cada segmento de la data. Armar una transmisión con formato EDi X12, es un proceso laborioso que requiere investigar y conocer el detalle de los loops que conforman cada transacción EDI X12.
La cantidad de transacciones que maneja EDI X12 y las especificaciones asociadas a cada tipo de dato son muy minuciosas y extensas para desarrollarlas en este espacio.
En la siguiente imagen pueden ver un ejemplo de Orden de Compra, (transacción 850) tomado de una academia que imparte cursos sobre EDI. (enlace al final)
Dejo los siguientes enlaces para quienes requieran mas información sobre EDI
No comments:
Post a Comment