|
Protocolos de recepción de pedidos de Cofano
1- Introducción.
El presente documento recoge la descripción completa de los protocolos de comunicación que debe de seguir todo programa que desee comunicarse con los sistemas de recepción de pedidos implantados en los almacenes de la Cooperativa Farmacéutica del Noroeste (Cofano), cualquier duda sobre el presente protocolo puede consultarse por correo electrónico a: informatica@cofano.org
Se dispone de dos sistemas distintos diferenciados cara al exterior por el número de teléfono al que se realiza la llamada:
A- El sistema “unidireccional” consiste en un paso de pedido a cuyo término el almacén contesta simplemente con un mensaje de recepción correcta.
B- El sistema “bidireccional” consta de una fase posterior a la recepción del pedido en la cual Cofano responde de posibles incidencias en el mismo. Este sistema tiene a su vez dos modalidades: consulta y pedido. En el primer caso se responden las incidencias que se producirían en el caso de que el pedido se sirviese, pero éste no es generado. En la modalidad de pedido, además de generar las líneas de incidencia también se da entrada al pedido en el sistema de despacho de Cofano.
2- Parámetros de comunicación.
La fase inicial del proceso de comunicación es la llamada a Cofano que efectúa el cliente. En este punto se produce la distinción comentada de la modalidad de conexión deseada dado que cada sistema de entrada dispone de números telefónicos distintos.
| Almacén |
pedidos Unidireccionales |
pedidos Bidireccionales |
| Cofano Vigo |
900- 71 07 22 |
986- 29 88 83 |
| Cofano Pontevedra |
900- 71 07 24 |
986- 86 18 66 |
| Cofano Orense |
900- 71 07 23 |
988- 37 13 63 |
El paso siguiente será el establecimiento de conexión entre los dos módems. Se trata de dispositivos analógicos que deben de operar con los parámetros:
| Paridad |
Par |
| Bits de datos |
7 |
| Bits de stop |
1 |
| Velocidades de transmisión |
300 ó 1200 para el unidireccional |
| 300 a 19.200 para el bidireccional |
| Otros |
Sin compresión de datos ( AT %C0 ) |
| Sin corrección de errores ( AT \N0 ) |
3- Emisión de datos por parte del cliente.
Una vez establecida la conexión entre los dos módems se pasará a la fase de transmisión de datos por parte del cliente hacia Cofano. Se enviarán una serie de caracteres ASCII que pueden ser imprimibles o no:
| Posición |
Contenido |
Descripción |
| 1 |
Chr( 2 ) |
Carácter de inicio de transmisión |
| 2 |
Chr( 48 ) ó Chr( 49 ) |
Consulta o pedido |
| 3 a 11 |
9 Dígitos numéricos |
Código de cooperador |
| 12 |
Chr( 13 ) |
Carácter de fin de cabecera |
| 13 + 18 x ( n- 1 )[i] |
Chr( 68 ) |
Inicio de línea de pedido |
| 14 + 18 x ( n- 1 ) |
13 ( ó 6, 7, 10 ) dígitos numéricos |
Código del producto |
| 27 + 18 x ( n- 1 ) |
3 dígitos numéricos |
Cantidad pedida |
| 30 + 18 x ( n- 1 ) |
Chr( 13 ) |
Fin de línea de pedido |
| 13 + 18 x N |
Chr( 3 ) |
Carácter de fin de pedido |
De la anterior tabla siguen una serie de consideraciones:
A- Estas secuencias de caracteres son comunes a los modos unidireccional y bidireccional. La única diferencia se tiene en el segundo carácter:
A.1.- Será un carácter “1” , Chr( 48 ), si se trata de un pedido unidireccional o de un bidireccional tipo “pedido”. En ambos casos la lista de productos recibida será tratada como un pedido (pasará al sistema de despacho del almacén). Para el bidireccional, si algún artículo no será servido se insertará una línea con un mensaje relativo a la incidencia. Si sólo se va a servir parte de la cantidad pedida, se generará una línea con la cantidad pedida y la servida. Si la totalidad del producto pedido se va a despachar, no se generará línea alguna. Esto último nos lleva al caso límite de que un pedido que sea servido por completo, no tendrá ninguna línea de respuesta.
A.2- El carácter “0”, Chr( 49 ), identifica que se trata de un pedido bidireccional en modo “consulta”. La lista de pedidos recibida no dará lugar a pedido alguno en el sistema de despacho. Se generará una línea de respuesta para todas las líneas enviadas. El mensaje común a todas las líneas de las que se va a servir la totalidad o un parte será “DISPONIBLE”. Para los productos con alguna incidencia se generará un mensaje a tal efecto, igual que en el caso anterior.
B- El código de cooperador consta de 9 dígitos numéricos asignados por Cofano. Lo habitual es tener un código justificado a la derecha completado con ceros por la izquierda (i.e. el cooperador “41” tendría por código el “000000041”.
C- Es preferible identificar los productos con 13 dígitos. No obstante, también se admiten códigos de 6, 7 ó 10 dígitos. Otra extensión motiva la cancelación de la llamada.
4- Emisión de datos por parte de Cofano.
Una vez recibido el pedido, se pasa a la fase de respuesta por parte de Cofano. Si se trató de una comunicación unidireccional exitosa, la respuesta consistirá en el mensaje que sigue, tras lo cual se cortará la comunicación:
| Texto |
COFANO: |
| Códigos |
Chr( 67) + Chr( 79 ) + Chr( 70 ) + Chr( 65 ) + Chr( 78 ) + Chr( 79 ) + Chr( 58 ) |
En el caso bidireccional transcurrirá un tiempo ( no superior a 90 segundos ) tras el cual comenzará a recibirse la respuesta que sigue por parte de Cofano:
| Posición |
Contenido |
Descripción |
| 1 a 3 |
Chr( 52 ) + Chr( 50 ) + Chr( 13 ) |
Comienzo de la respuesta |
| 4 |
Chr( 21 ) ó Chr( 2 ) |
Se trató de una consulta o de un pedido |
| 5 |
24 caracteres: Pedido número: xxxx ó Respuesta a la consulta |
Cabecera del mensaje de respuesta |
| 29 |
Chr( 13 ) |
|
| 30 |
Chr( 10 ) |
|
| [ 31 a 31 + M ] |
M caracteres alfanuméricos[ii] |
Mensaje opcional |
| 31 + M |
Chr( 13 ) |
|
| 32 + M |
Chr( 10 ) |
|
| 33 + M |
Chr( 68 ) |
Inicio de línea de falta |
| 34 + M + 36 x i[iii] |
13 caracteres numéricos |
Código del producto |
| 47 + M + 36 x i |
3 caracteres numéricos |
Cantidad pedida |
| 50 + M + 36 x i |
3 caracteres numéricos |
Cantidad servida |
| 53 + M + 36 x i |
14 caracteres alfanuméricos |
Mensaje de incidencia |
| 67 + M + 36 x i |
Chr( 48 ) ó Chr( 49 ) |
Petición a otro proveedor |
| 68 + M + 36 x i |
Chr( 13 ) |
Fin de línea |
| 69 + M + 36 x i |
Chr( 10 ) |
|
| 33 + M + 36 x P a 39 + M + 36 x P |
Chr(67) + Chr(79) + Chr(70) + Chr(65) + Chr(78) + Chr(79) + Chr(58) |
Transmisión correcta |
Se deben de tener en cuenta las siguientes consideraciones:
A- Hasta que se reciba la secuencia completa de tres caracteres que indica el comienzo de la respuesta bidireccional se deben de descartar todos los caracteres que se reciban (probables ruidos de línea).
B- Los 24 caracteres denominados “Cabecera del mensaje de respuesta” sirven para identificar a ésta. En el caso de que se tratase de una comunicación bidireccional en el modo “pedido”, la secuencia “xxxx” de la tabla será reemplazada por el número de albarán que recibirá el cliente cuando le sea despachada la mercancía.
C- El conjunto de caracteres que siguen a la cabecera anterior es un mensaje opcional de longitud variable. Puede incluso que no se tenga mensaje. Se garantiza que al menos se tendrá un retorno de carro y un carácter de nueva línea.
D- Los mensajes de incidencias son textos de 14 caracteres con los que Cofano identifica la razón de la misma. A modo de ejemplo, algunos mensajes posibles son:
NO EXIS.CODIGO
NO SIRVE LABOR
CAMBIO FORMATO
NO SE FABRICA
DISPONIBLE
PED:pppSER:sss
E- A continuación irá el carácter de petición a otro proveedor. Indica si dada la naturaleza de la incidencia es posible que esa línea sea despachada ( 1 ) o no( 0 ) por otro proveedor. Un mensaje del tipo “DISPONIBLE” irá acompañado de un “1”. Por el contrario, a un “NO SE FABRICA” le seguirá siempre un “0”.
F- El mensaje de fin de transmisión es idéntico al del caso unidireccional
COFANO:
5- Ejemplo.
A continuación sigue un ejemplo de transmisión bidireccional en modo consulta.
Dirección Cliente Cofano
Chr(2)0000001925Chr(13)
D8470007001799001Chr(13)
D8470007002031001Chr(13)
D8470008733156001Chr(13)
D8470000728198001Chr(13)
D8470007092797001Chr(13)
D8470009974374001Chr(13)
D8470003591829001Chr(13)
D8470002056749001Chr(13)
D8470007415206005Chr(13)
Chr(3)
Dirección Cofano Cliente
42Chr(13)
Chr(21)RESPUESTA A LA CONSULTA.Chr(13)Chr(10)
Chr(13)Chr(10)
D8470007001799001000NO SE FABRICA 0Chr(13)Chr(10)
D8470007002031001000NO SIRVE LABOR1Chr(13)Chr(10)
D8470008733156001000FALTA LABORAT.1Chr(13)Chr(10)
D8470000728198001000POR ENCARGO 0Chr(13)Chr(10)
D8470007092797001000SUSP. TEMPORAL1Chr(13)Chr(10)
D8470009974374001000SIN EXISTENCIA1Chr(13)Chr(10)
D8470003591829001000INMOVI.SANIDAD0Chr(13)Chr(10)
D8470002056749001001DISPONIBLE 1Chr(13)Chr(10)
D8470007415206005001PED:005SER:0011Chr(13)Chr(10)
COFANO:
| [i] |
Siendo N el número total de líneas del pedido ( ¡no se admiten pedidos vacíos!) |
| [ii] |
Donde |
| [iii] |
Donde
Siendo si se trató de una consulta. Si fuese un pedido, P será el número de líneas en las cuales se produjo alguna incidencia, i.e.
|
|