Nueva funcionalidad que genera una orden de factura a partir de un fichero XML con formato EDIFACT 96.A.
 

1 EDIFACT 96.A

El estándar EDIFACT (Electronic Data Interchange for Administration, Commerce and Transport) se utiliza para indicar con keys los elementos correspondientes a la cabecera de la factura (correspondiente a gcomfach en Axional) y al detalle de esta (corresponidente a gcomfacl), conteniendo las líneas que lo componen.

Se puede obtener más información en este enlace.

 

2 Generación de orden de factura

A continuación se indicará como realizar la generación de una orden de factura una vez tenemos el fichero correspondiente en formato EDIFACT 96.A.

 

2.1 Funcionamiento del proceso

Para generar nuestra orden de factura se dispone de un XSQLScript al que pasamos como argumento el contenido del fichero en formato EDIFACT 96.A. Entonces a partir del contenido se guardan en tablas virtuales los datos que podemos extraer del fichero, gracias a un diccionario donde se indica la conversión del formato EDIFACT a las tablas propias de Axional.

Una vez se recogen los datos necesarios, los demás datos sin indicar se generarán mediante la lógica de los objetos utilizados, gcomfach y gcomfacl.

 

2.2 Diccionario de conversión EDIFACT – AXIONAL

Para realizar la conversión de formato EDIFACT a Axional se dispone de un diccionario almacenado en una tabla virtual, con las siguientes columnas:

Columnas Descripción Requerido
KEY Clave en formato EDIFACT 96.A Si
CODE Código en formato EDIFACT 96.A No (Default: null)
POSITION Posición de la información que queremos guardar en Axional Si
SUBPOSITION Subposición de la información que queremos guardar en Axional No (Default: empty)
SPLIT_PATTERN Elemento para dividir en partes el texto almacenado en una posición, da sentido a la indicación de la subposición Si (SUBPOSITION != empty)
REFERS_TO Columna de Axional Si
TABLE Tabla/Objeto de Axional Si

Con esta información el script se encargará de identificar las keys que tenemos controladas del formato EDIFACT y convertirlas al formato propio de Axional. Además si se quiere actualizar el conocimiento añadiendo nuevas keys, el cambio a realizar es muy rápido.

Actualmente el diccionario contiene los siguientes datos:

Copy
{ "UNB" , "UNOA", "3"   , "1"   , "[+]" , "date_created", "gcomfach"}
{ "UNB" , "UNOA", "4"   , "0"   , "[+]" , "hour_created", "gcomfach"}
{ "BGM" , "null", "0"   , "2"   , "[+]" , "refter"      , "gcomfach"}
{ "PAI" , "null", "2"   , "-1"  , ""    , "tipefe"      , "gcomfach"}
{ "FTX" , "AAB" , "2"   , "0"   , "[/]" , "iban"        , "gcomfach"}
{ "RFF" , "VA"  , "1"   , "-1"  , ""    , "cif"         , "gcomfach"}
{ "DTM" , "137" , "1"   , "-1"  , ""    , "fecha"       , "gcomfach"}
{ "CUX" , "2"   , "1"   , "0"   , "[+]" , "divisa"      , "gcomfach"}
{ "LIN" , "null", "0"   , "3"   , "[+]" , "refpro"      , "gcomfacl"}
{ "LIN" , "null", "0"   , "1"   , "[+]" , "orden"       , "gcomfacl"}
{ "QTY" , "47"  , "1"   , "-1"  , ""    , "canfac"      , "gcomfacl"}
{ "PRI" , "AAA" , "1"   , "-1"  , ""    , "precio"      , "gcomfacl"}
{ "IMD" , "E"   , "3"   , "-1"  , ""    , "desvar"      , "gcomfacl"}
{ "MOA" , "203" , "1"   , "-1"  , ""    , "impnet"      , "gcomfacl"}
{ "MOA" , "128" , "1"   , "-1"  , ""    , "impfac"      , "gcomfach"}
{ "MOA" , "125" , "1"   , "-1"  , ""    , "basimp1"     , "gcomfach"}
{ "MOA" , "124" , "1"   , "-1"  , ""    , "cuoimp1"     , "gcomfach"}
 

2.3 Llamada al proceso de generación

El script encargado de generar el orden de factura se encuentra en labco_dev_fr, con el nombre cegedim_invoice_order. Para hacer la llamada desde DBStudio se utilizará el siguiente código:

Copy
<call name='cegedim_invoice_order'>
    <args>
        <arg>Contenido del fichero CEGEDIM con formato EDIFACT 96.A</arg>
    </args>
</call>
 

3 Ejemplo con fichero CEGEDIM

En este ejemplo se muestra cómo generar una orden de factura a partir de un fichero real de CEGEDIM.

 

3.1 Fichero CEGEDIM

Este es el contenido del fichero a utilizar en este ejemplo:

Copy
<string>
    UNA:+.? '
    UNB+UNOA:1+15D:ZZ+GIS:ZZ+180417:0820+54++INVOIC'
    UNH+8040170016+INVOIC:D:D96:UN:EAN008'
    BGM+380+8040170016+9'
    DTM+137:20180416:102'
    PAI+::42'
    FTX+REG+++Thermo Fisher Diagnostics:SAS:65710447,45 EUR'
    FTX+AAB+++AUCUN  ESCOMPTE  ACCORDE  EN  CAS  DE  PAIEMENT  ANTICIPE BNP PARIBAS:-:IBAN FR76300004012290002004706033 / BIC BNPAFRPPLPD SI PAIEMENT PAR:CHEQUE, MERCI D UTILISER L ADRESSE SUIVANTE ITP/BNP-THERMO FISHER:DIAG.-CS 60242-91978 COURTABOEUF CEDEX'
    FTX+PMD+++INDEMNITE FORFAITAIRE DE 40 EUROS POUR FRAIS DE RECOUVREMENT'
    FTX+PAY+++Si paiement par cheque merci d utiliser l adresse ci-dessus'
    FTX+PMT+++MENTION OBLIGATOIRE INHERENTE AUX PENALITES DE RETARD, EN APPLICATION:DES ARTICLES L. 441-3 ET L. 441-6 DU CODE DE COMMERCE'
    RFF+ON:16810176'
    DTM+171:20180413:102'
    RFF+AAK:8706310837'
    DTM+171:20180416:102'
    RFF+DQ:8706310837'
    DTM+171:20180416:102'
    RFF+VN:0008783096'
    DTM+171:20180413:102'
    NAD+IV+0000554549::ZZZ++UGAP+DIRECTION FINANCIERE ET COMPTABLE:1 BD ARCHIMEDE+MARNE LA VALLEE CEDEX 2+77+77444+FR'
    RFF+VA:FR51776056467'
    RFF+GN:77605646700587'
    NAD+SE+95551000300036::05++Thermo Fisher Diagnostics SAS+6 ROUTE DE PAISY:BP 13+Dardilly Cedex++69571+FR'
    FII+RB+FR7630004012290002004706033:Thermo Fisher Diagnostics?:SAS+BNPAFRPPXXX::::::BNP47Aven.Victor Hugo69160:ITP/BNP-Thermo Fisher Diag.-CS 60242-91978 COURTABOEUF Cedex+FR'
    RFF+XA:RCS B955510003'
    RFF+VA:FR86955510003'
    RFF+GN:95551000300036'
    CTA+AP+:Service Clients'
    COM+04 72 52 33 70:TE'
    COM+oxoid.fr.serviceclients@thermo.com:EM'
    COM+04 78 66 03 76:FX'
    NAD+BY+0000148332::ZZZ++CENTRE HOSPITALIER ROUBAIX:SERVICES ECONOMIQUES+B.P. 359:20 AVENUE JEAN LAGACHE+ROUBAIX CEDEX 1+59+59056+FR'
    NAD+DP+0000554811::ZZZ++CENTRE HOSPITALIER ROUBAIX:LABORATOIRE DE BIOLOGIE+:17 BOULEVARD LACORDAIRE+ROUBAIX+59+59056+FR'
    TAX+7+VAT+DEB'
    CUX+2:EUR+4:EUR'
    PAT+3'
    DTM+13:20180605:102'
    PAT+20'
    PAT+22'
    LIN+1++5991040:ZZZ'
    IMD+E+ANM+:::CYTOFUNNEL, WHITE-S, 50 ST'
    QTY+47:2:PCE'
    DTM+50:20180416:102'
    MOA+203:116.4'
    MOA+66:116.4'
    PRI+AAA:58.2:::1:PCE'
    PRI+AAB:98.94:::1:PCE'
    TAX+7+VAT+++A6:::20.000'
    ALC+A++2+2+:::Remise'
    PCD+1:41.18'
    MOA+8:81.48'
    MOA+25:197.88'
    TAX+7+VAT+++A6:::20.000'
    UNS+S'
    CNT+2:1'
    MOA+79:116.4'
    MOA+125:116.4'
    MOA+128:139.68'
    MOA+124:23.28'
    TAX+7+VAT++116.40+A6:::20.000'
    MOA+124:23.28'
    UNT+60+8040170016'
    UNZ+1+54'
</string>
 

3.2 Ejecución

Una vez copiado el contenido del fichero anterior, se ejecuta el siguiente código en DBStudio:

Copy
<call name='cegedim_invoice_order'>
    <args>
        <arg>
            UNA:+.? '
            UNB+UNOA:1+15D:ZZ+GIS:ZZ+180417:0820+54++INVOIC'
            UNH+8040170016+INVOIC:D:D96:UN:EAN008'
            BGM+380+8040170016+9'
            DTM+137:20180416:102'
            PAI+::42'
            FTX+REG+++Thermo Fisher Diagnostics:SAS:65710447,45 EUR'
            FTX+AAB+++AUCUN  ESCOMPTE  ACCORDE  EN  CAS  DE  PAIEMENT  ANTICIPE BNP PARIBAS:-:IBAN FR76300004012290002004706033 / BIC BNPAFRPPLPD SI PAIEMENT PAR:CHEQUE, MERCI D UTILISER L ADRESSE SUIVANTE ITP/BNP-THERMO FISHER:DIAG.-CS 60242-91978 COURTABOEUF CEDEX'
            FTX+PMD+++INDEMNITE FORFAITAIRE DE 40 EUROS POUR FRAIS DE RECOUVREMENT'
            FTX+PAY+++Si paiement par cheque merci d utiliser l adresse ci-dessus'
            FTX+PMT+++MENTION OBLIGATOIRE INHERENTE AUX PENALITES DE RETARD, EN APPLICATION:DES ARTICLES L. 441-3 ET L. 441-6 DU CODE DE COMMERCE'
            RFF+ON:16810176'
            DTM+171:20180413:102'
            RFF+AAK:8706310837'
            DTM+171:20180416:102'
            RFF+DQ:8706310837'
            DTM+171:20180416:102'
            RFF+VN:0008783096'
            DTM+171:20180413:102'
            NAD+IV+0000554549::ZZZ++UGAP+DIRECTION FINANCIERE ET COMPTABLE:1 BD ARCHIMEDE+MARNE LA VALLEE CEDEX 2+77+77444+FR'
            RFF+VA:FR51776056467'
            RFF+GN:77605646700587'
            NAD+SE+95551000300036::05++Thermo Fisher Diagnostics SAS+6 ROUTE DE PAISY:BP 13+Dardilly Cedex++69571+FR'
            FII+RB+FR7630004012290002004706033:Thermo Fisher Diagnostics?:SAS+BNPAFRPPXXX::::::BNP47Aven.Victor Hugo69160:ITP/BNP-Thermo Fisher Diag.-CS 60242-91978 COURTABOEUF Cedex+FR'
            RFF+XA:RCS B955510003'
            RFF+VA:FR86955510003'
            RFF+GN:95551000300036'
            CTA+AP+:Service Clients'
            COM+04 72 52 33 70:TE'
            COM+oxoid.fr.serviceclients@thermo.com:EM'
            COM+04 78 66 03 76:FX'
            NAD+BY+0000148332::ZZZ++CENTRE HOSPITALIER ROUBAIX:SERVICES ECONOMIQUES+B.P. 359:20 AVENUE JEAN LAGACHE+ROUBAIX CEDEX 1+59+59056+FR'
            NAD+DP+0000554811::ZZZ++CENTRE HOSPITALIER ROUBAIX:LABORATOIRE DE BIOLOGIE+:17 BOULEVARD LACORDAIRE+ROUBAIX+59+59056+FR'
            TAX+7+VAT+DEB'
            CUX+2:EUR+4:EUR'
            PAT+3'
            DTM+13:20180605:102'
            PAT+20'
            PAT+22'
            LIN+1++5991040:ZZZ'
            IMD+E+ANM+:::CYTOFUNNEL, WHITE-S, 50 ST'
            QTY+47:2:PCE'
            DTM+50:20180416:102'
            MOA+203:116.4'
            MOA+66:116.4'
            PRI+AAA:58.2:::1:PCE'
            PRI+AAB:98.94:::1:PCE'
            TAX+7+VAT+++A6:::20.000'
            ALC+A++2+2+:::Remise'
            PCD+1:41.18'
            MOA+8:81.48'
            MOA+25:197.88'
            TAX+7+VAT+++A6:::20.000'
            UNS+S'
            CNT+2:1'
            MOA+79:116.4'
            MOA+125:116.4'
            MOA+128:139.68'
            MOA+124:23.28'
            TAX+7+VAT++116.40+A6:::20.000'
            MOA+124:23.28'
            UNT+60+8040170016'
            UNZ+1+54'
        </arg>
    </args>
</call>

Después de la ejecución, si todo ha funcionado correctamente, se nos mostrará el siguiente mensaje:

FACTURAS Y LINEAS GENERADAS CORRECTAMENTE

 

3.3 Resultado

Por último, si accedemos a FACTURAS DE COMPRAS, se puede consultar la nueva factura generada desde el fichero CEGEDIM. A continuación se muestra la cabecera de factura:

Y este es el detalle de las líneas de factura: