Los mensajes EDI están formados por segmentos que deben aparecer en un orden determinado. Dado que los clientes requerirán facturas EDI en formatos ligeramente diferentes, el formato exacto se puede definir en la tabla EDIMessageFormat. Esta tabla tiene un registro para cada línea de factura de cliente y la secuencia en que debe aparecer en el mensaje. El texto de la línea de campo en esta tabla puede incluir cualquiera de las variables de factura EDI predefinidas rodeadas por "[" y "]" para indicar como una variable a reemplazar con el valor apropiado es de la siguiente manera:
Sección de detalle de factura EDI
EDITransNo El número de transacción único de EDI.
InvOrCrd Ya sea que la transacción sea una factura o un crédito, el valor de esta variable es un número definido por EANCOM, 388 para una factura tributaria y 381 para una nota de crédito
TransNo El número de transacción de la factura o crédito.
OrigOrDup Si la transacción es un envío duplicado u original el valor de esta variable es un EANCOM definido número 7 para un duplicado y 9 para un original.
Trandate La fecha de la transacción en el formato CCAAMMDD.
OrderNo El número de pedido original solo para facturas.
CustBranchCode El código interno del cliente para la sucursal.
CompanyEDirference El código de referencia EDI del cliente.
BranchName El nombre de la rama
BranchStreet
BranchCity
BranchState
TaxAuthorityRef El número de referencia de la Autoridad Tributaria de las empresas.
DatePaymentDue La fecha de vencimiento de esta transacción
TaxTotal El importe total del impuesto sobre la transacción
Sección de detalle de factura EDI - para las líneas de la transacción
LineNumber
StockID El código del elemento webERP.
CustStockID El código interno del cliente para el artículo.
ItemDescription
QtyInvoiced Cantidad facturada facturada o acreditada.
LineTotalExclTax El total de la línea sin impuestos.
UnitPrice Unidad Precio. Precio unitario del artículo.
LineTaxAmount El impuesto aplicable a la línea.
Sección de resumen de factura EDI
NoLines El número total de líneas en la factura/crédito.
TotalAmountExclTax Importe total de la transacción sin impuestos
TotalAmountInclTax Cantidad total de la transacción, incluido el impuesto
NoSegments El número total de segmentos en la transacción esto se requiere como una verificación de control en el resumen.
Por lo tanto, hay una gran flexibilidad en la forma en que se definen los mensajes.
Las variables para las secciones de resumen y encabezado se pueden usar en cualquier sección.
Las variables de la sección de detalles solo se pueden usar en la sección de detalles.
La mayoría de los clientes requerirán que la sucursal a la que se entregan los bienes facturados se identifique utilizando el sistema de codificación del cliente. Por lo tanto, es importante asegurarse de que el código de sucursal del cliente se ingrese contra el registro de sucursal webERP. La variable CustBranchCode se recupera del registro de la sucursal y si no se ingresa, la transacción EDI fallará.
Algunos clientes también pueden requerir que el código del artículo sea su código de artículo, no el código del elemento webERP. La variable CustStockID se deriva de la tabla de referencia cruzada EDIItemMapping que necesitaría contener un registro de referencia cruzada para cada artículo que pueden comprar.
El comando que crea las facturas EDI (EDISendInvoices.php) debe ejecutarse automáticamente en segundo plano como una tarea programada. Primero obtiene una lista de todos los clientes que deberían recibir facturas EDI (o notas de crédito), tal como se determina en la configuración de su registro DebtorsMaster. Entonces el comando pasa por cada cliente devuelto para obtener facturas o créditos que aún no se hayan enviado. Se crea un archivo plano para todas las facturas y créditos de los clientes y enviados al cliente utilizando el transporte, la dirección y otros parámetros definidos en la página de configuración EDI del cliente, grabados en su registro DebtorsMaster. Hay un enlace para permitir que el comando se ejecute manualmente; el navegador también mostrará el resultado del mensaje EDI.
El envío de facturas EDI se adelanta más que recibiendo pedidos. Sin embargo, mucha de la infraestructura está allí y estoy buscando trabajar con un cliente que quiera esta funcionalidad.
Estoy imaginando mensajes EDI entrantes a través de adjuntos de correo electrónico o recogida programada de un servidor ftp. - en el EDI_Incoming y un cron o trabajo programado en Windows. Procesándolas en pedidos de venta. En realidad, al enviar el archivo adjunto al correo electrónico y al directorio EDI_Incoming necesitará un código o una secuencia de comandos adicional y no está cubierto en el software; el proceso en webERP es tomar los archivos planos en el directorio EDI_Incoming (este directorio es modificable) y convertirlos a los pedidos de webERP como si fueran claves manualmente.
Utilicé el subconjunto EANCOM del estándar UN/EDIFACT para el formato de los mensajes; debido al tamaño potencial de estos mensajes, hay bastante código y sospecho que hay un montón de código redundante. Pero necesito mantenerlo en conformidad con el estándar y lo más genérico posible. La idea es hacer que EDI sea una solución más práctica y viable para las pequeñas empresas.
Como dije, el EDI aún no es sólido y probado, y necesito un sitio con el que trabajar para que funcione.