Explicación sobre las integraciones XML EAI con destino Protheus Facturación

Producto:

Protheus

Versiones:

A partir de la 12.1.33

Ocurrencia:

Explicación sobre todo el proceso de integraciones XML EAI vs. Protheus

Entorno:

Facturación (SIGAFAT)

Índice



1. Concepto

La integración ocurre vía XML o JSON de otro sistema al Protheus, por medio de la identificación de Tags en el envío. Es posible utilizar el concepto de mensaje sincrónico o asincrónico (XX4_METODO).

El objetivo de la rutina es que al final de la integración se genere un registro en el Protheus a partir de otro sistema, con cada Tag del mensaje EAI alimentando su respectivo campo en las tablas y campos de destino en el Protheus.



2. Consideraciones


2.1 Clave principal y clave secundaria (Tags "InternalId" de campos que no necesitan de De/A de Mensaje único)

Los campos identificadores (ID) de la rutina que se integrará no necesitan de De/A de su "InternalId" general, pues la integración es justamente la creación de estos.

  • Todos los otros campos y Tags se consideran claves secundarias, necesitan de De/A.

Exemplo en el CUSTOMERVENDOR:

En la integración de clientes (Tabla SA1), el código clave principal identificador es A1_COD.

  • La integración del cliente es justamente la creación de un registro a partir de A1_COD, la Tag general del XML <InternalId> no necesita configurar el De/A, la integración es justamente su creación, otros campos secundarios como por ejemplo el campo (A1_TABELA) necesitan obligatoriamente.



Ejemplo en el ORDER:

En la integración de pedidos de venta (Tabla SC5/SC6), el código clave principal identificador es C5_NUM y C6_ITEM.

  • La integración del pedido de venta es justamente la creación de un registro a partir de C5_NUM y C6_ITEM, la Tag general del XML <InternalId> no necesita configurar su De/A, la integración es justamente su creación, otros campos secundarios como por ejemplo el campo (C6_PRUDUTO y C5_CONDPAG) necesitan obligatoriamente.


Es posible realizar el De/A de estas Tags "Internas", pero los campos clave son los únicos donde esto no es obligatorio.


2.2 Obligatoriedad de campos

Un campo obligatorio en la tabla del Protheus significa que la Tag con el valor para este campo en la integración también es obligatorio.

Explicación: Éxito en la integración, pues el campo ordenado reconoció algún valor y el campo es obligatorio en la tabla, es decir, debe colocarse algún valor válido.




Explicación: Falla en la integración, pues el campo ordenado reconoció algún valor (en blanco/vacío) y el campo es obligatorio en la tabla, es decir, debe colocarse algún valor válido.




Explicación: Éxito en la integración, pues el campo ordenado reconoció algún valor válido, el campo es obligatorio en la tabla, es decir, debe colocarse algún valor válido.




Explicación: Éxito en la integración, pues el campo ordenado reconoció algún valor (en blanco/vacío) y el campo no es obligatorio en la tabla, es decir, da lo mismo el valor en la Tag del XML.





2.3 Tipos de campos en las rutinas que reciben datos de las Tags

En una integración existen 4 tipos de campos:

(1) [LIVRE] - El campo que es totalmente libre

Campo A1_NOME (Campo FreeValue)


Es un campo que no tiene tabla vinculada, entonces acepta cualquier valor.




1 - Incluyendo Tag con caracteres especiales:

Explicación del resultado: Incluido con éxito, pues en el campo no existe validación de exclusividad para valores con caracteres especiales.


2 - Incluyendo Tag con caracteres alfanuméricos:

Explicación del resultado: Incluido con éxito, pues en el campo no existe validación de exclusividad para valor alfanumérico.


3 - Incluyendo Tag con caracteres numéricos:

Explicación del resultado: Incluido con éxito, pues en el campo no existe validación de exclusividad para valor numérico.


4 - Incluyendo Tag sin contener nexo con validación:

Explicación del resultado: Incluido con éxito, pues en el campo no existe ninguna validación.







(2) [DEPENDIENTE] - El campo que depende de algunas validaciones internas u otros campos

Campo A1_CGC (Campo dependiente)


Es un campo que no tiene tabla vinculada, entonces acepta cualquier valor, siempre y cuando:

  • Sea un RCPF real, de acuerdo con la validación del campo
  • Respete el tipo do campo, sin tener letras, pues este campo es numérico y al incluir letras, el sistema generará error.




1 - Incluyendo Tag con caracteres especiales:

Explicación del resultado: No se incluyó, pues en el campo existe validación de exclusividad para valores numéricos solamente.


2 - Incluyendo Tag con caracteres alfanuméricos:

Explicación del resultado: No se incluyó, pues en el campo existe validación de exclusividad para valores numéricos solamente.


3 - Incluyendo Tag con caracteres numéricos:

Explicación del resultado: No se incluyó, pues a pesar de que el campo reciba por la Tag el tipo de valor correcto (numérico), no fue validado por no tener una sintaxis de RCPJ/RCPF correcta.


4 - Incluyendo Tag sin contener nexo con validación:

Explicación del resultado: No se incluyó, pues a pesar de que el campo reciba por la Tag el tipo de valor correcto (numérico), no fue validado por no tener una sintaxis de RCPJ/RCPF correcta.


5 - Incluyendo Tag con nexo con validación:

Explicación del resultado: Se incluyó con éxito, pues en el campo se incluyó el tipo numérico (Esperado) e incluso es válido el dato colocado (Existe/sintaxis correcta).


6 - Incluyendo Tag respetando la validación de la obligatoriedad:

Explicación del resultado: Se incluyó con éxito, pues en el campo no existe obligatoriedad de información de valor.






(3) [REGLADO SIMPLE] - El campo que recibe obligatoriamente una información fija sin De/A 


Campo A1_PESSOA (Campo ListBox)



Es un campo que no tiene tabla vinculada, pero tiene opciones de selecciones fija, entonces acepta valores, siempre y cuando alguna condición siguiente sea atendida:

  • No tenga la Tag de este campo en el XML
  • La Tag venga en blanco en el XML
  • Si tuviera la Tag completada, que el valor de la Tag en el XML tenga en el fuente un valor que el sistema entienda que es con respecto a alguna opción de la lista existente entre las opciones del campo (F / J)
  • Respete el tipo do campo, siendo una opción lista, al existir números o letras en la Tag que llevará información al campo no existentes ocasionará errores.


1 - Incluyendo Tag con caracteres especiales:

Explicación del resultado: No se incluyó, pues en el campo existe validación para no recibir números o caracteres especiales.


2 - Incluyendo Tag con caracteres alfanuméricos:

Explicación del resultado: No se incluyó, pues a pesar de que el contenido de la Tag sea el tipo esperado (alfanumérico) en el campo existe validación para recibir solamente valores alfanuméricos específicos, para que el sistema entienda que significa una opción entre las listas del campo (F - Física  |  J - Jurídica)


3 - Incluyendo Tag con caracteres numéricos:

Explicación del resultado: No se incluyó, pues en el campo existe validación para no recibir números.


4 - Incluyendo Tag sin contener nexo con validación:

Explicación del resultado: No se incluyó, en el campo existe validación para recibir solamente valores alfanuméricos específicos, para que el sistema entienda que significa una opción entre las listas del campo (F - Física  |  J - Jurídica).


5 - Incluyendo Tag con nexo con validación:

Explicación del resultado: Incluido con éxito, pues el campo recibió un valor dentro de la Tag, que significa alguna opción existente dentro del campo lista:

  • <EntityType>Company</EntityType>  =  'J - Jurídica' (El fuente entiende que el conjunto de valor 'Company' significa la opción "J - Jurídica" en el campo A1_PESSOA)
  • <EntityType>Person</EntityType>  =  'F - Física' (El fuente entiende que el conjunto de valor exacto 'Person' significa la opción "F - Física" en el campo A1_PESSOA)








(4) [REGLADO] - El campo que tiene una tabla vinculada (ALIAS), que puede tener se De/A registrado o no, pero toda información colocada será validada si existiera o no su registro.

Campo A1_TABELA y Campo A1_CONDPAG (Campo ALIAS [X3_F3 completado])


             

Son campos que tienen tabla vinculada, entonces cualquier valor colocado será validado en el sistema si existiese este registro en la tabla (ALIAS) de estos campos, solamente aceptan el valor colocado si:

    • Existiera la información colocada registrada en la tabla validadora del campo. (X3_F3)


1 - Incluyendo Tag con caracteres especiales:

Explicación del resultado: No se incluyó, pues no existe en la tabla validadora vinculada al campo (X3_F3) este registro/contenido en el índice del Alias (campo de ID Código de la tabla vinculada)


2 - Incluyendo Tag con caracteres alfanuméricos:

Explicación del resultado: No se incluyó, pues no existe en la tabla validadora vinculada al campo (X3_F3) este registro/contenido en el índice del Alias (campo de ID Código de la tabla vinculada)


3 - Incluyendo Tag con caracteres numéricos:

Explicación del resultado: Incluido, pues existe en la tabla validadora vinculada al campo (X3_F3) este registro/contenido en el índice del Alias (campo de ID Código de la tabla vínculada)


4 - Incluyendo Tag sin contener nexo con validación:

Explicación del resultado: No se incluyó, pues no existe en la tabla validadora vinculada al campo (X3_F3) este registro/contenido en el índice del Alias (campo de ID Código de la tabla vínculada)


5 - Incluyendo Tag con nexo con validación:


Explicación del resultado: Incluido, pues existe en la tabla validadora vinculada al campo (X3_F3) este registro/contenido en el índice del Alias (campo de ID Código de la tabla vínculada)


5 - Incluyendo Tag con valor que está inactivo en la tabla vinculado al campo:

Explicación del resultado: No se incluyó, pues en la tabla validadora vinculada al campo (X3_F3) este registro/contenido en el índice del Alias (campo de ID Código de la tabla vinculada) está desactivado/inactivo.








2.4 De/A en las integraciones de origen RM

Si alguna tag en el XML que se integrará contenga el nombre "Id", significa que es un campo interno y que exigirá el De/A, pues su valor se incluirá e un campo en el Protheus con validación de tabla (ALIAS). Estos campos que tienen tabla vinculada solamente pueden tener valores que existan en su propia tabla, al incluir datos en el campo el Protheus automáticamente valida si aquel registro existe en la tabla, no perteneciendo, generará el HELP REGNOIS.

I. Tag <ItemCode> al integrar pedido de ventas.

  • 1 - El campo que recibirá esta tag (C6_PRODUTO) es un campo que tiene tabla vinculada, la tabla "SB1 - Productos". Cualquier valor colocado en este campo, será validado por el sistema si lógicamente existe en la tabla de productos SB1.
  • 2 - Por esta Tag de inclusión de producto en el pedido de ventas, no tener "Id" en el nombre, significa que el dato contenido en la Tag se incluirá directamente en el campo del Protheus, sin De/A para transcribir el valor del RM en un código existente en el Protheus.
  • 3 - Por este motivo, al integrarse con esta Tag es obligatorio que el Protheus tenga un producto con el mismo valor de la Tag para aceptar la inclusión, en caso contrario generará el HELP REGNOIS.




Tag origen: <ItemCode>

Valor incluido en la Tag: ABC

Campo destino: C6_PRODUTO

Alias del campo destino: Tabla SB1 (Productos [B1_COD])

Método: Sin De/A (Pues no contiene "Id" en el nombre, como por ejemplo, "ItemInternalId")




Explicación Paso 1:

Es la Tag del XML de integración de un pedido de venta, en la cual tiene el valor "43". Como no es una Tag interna con "Id", no tendrá De/A, simbolizando que el Producto 43 en el RM tendrá que encontrar en el Protheus un producto con el mismo  código 43.


Explicación Paso 2:

La Tag <ItemCode> tiene como destino el campo C6_PRODUTO en el Protheus (Fuente MATI410), es como una inclusión manual en la pantalla del pedido de ventas, este colocará el valor informado en la Tag, que en el ejemplo es 43 y "pulsará Enter", y ocurrirá la validación si el contenido colocado existe en la propia tabla del campo, que es la tabla de productos (SB1).


Explicación Paso 3:

Después de ello el registro no se incluirá con éxito, pues de acuerdo con el print anterior, en la tabla SB1 del entorno Protheus, no existe el producto con el código ABC (B1_COD = ABC) que se informó en la Tag <ItemCode> del XML.




Tag origen: <ItemCode>

Valor incluido en la Tag: 43

Campo destino: C6_PRODUTO

Alias del campo destino: Tabla SB1 (Productos [B1_COD])

Método: Sin De/A (Pues no contiene "Id" en el nombre, como por ejemplo,  "ItemInternalId")



Explicación Paso 1:

Es la Tag del XML de integración de un pedido de venta, en la cual tiene el valor "43". Como no es una Tag interna con "Id", no tendrá De/A, simbolizando que el Producto 43 en el RM tendrá que encontrar en el Protheus un producto con el mismo código 43.


Explicación Paso 2:

La Tag <ItemCode> tiene como destino el campo C6_PRODUTO en el Protheus (Fuente MATI410), es como una inclusión manual en la pantalla del pedido de ventas, este colocará el valor informado en la Tag, que en el ejemplo es 43 y "pulsará Enter", y ocurrirá la validación si el contenido colocado existe en la propia tabla del campo, que es la tabla de productos (SB1).


Explicación Paso 3:

Después de ello el registro no se incluirá con éxito, pues de acuerdo con el print anterior, en la tabla SB1 del entorno Protheus, existe el producto con el código 43 (B1_COD = 43) que se informó en la Tag <ItemCode> del XML.






II. Tag <ItemInternalId> al integrar el pedido de ventas.

  • 1 - El campo que recibirá esta tag (C6_PRODUTO) es un campo que tiene tabla vinculada, la tabla "SB1 - Productos". Cualquier valor colocado en este campo, será validado por el sistema si lógicamente existe en la tabla de productos SB1.
  • 2 - Por esta Tag de inclusión de producto en el pedido de ventas, contener "Id" en el nombre, significa que el producto del RM contenido en la Tag se transcribirá en un producto diferente en el Protheus por el De/A de Mensaje único (xxxxxxx) para transcribir el valor del RM en un código existente en el Protheus, ya que el mismo producto puede tener códigos diferentes en los sistemas.
  • 3 - Por este motivo, al integrarse con esta Tag es obligatorio que el Protheus tenga un De/A para realizar la conversión con el mismo valor de la Tag para aceptar la inclusión, en caso contrario exigirá en la integración.
  • 4 - 

 

OBS: Si el valor colocado en el De/A "XXF_INTVAL" también no exista en el Protheus, la transcripción no será efectiva y mostrará el HELP REGNOIS



Al registrar un De/A para determinada tabla, es obligatorio registrar su Adapter relativo.

  • Ejemplo: Al incluir un De/A transcribir una condición de pago del RM, es necesario registrar un ADAPTER de la rutina de condición de pago.


  • Si no utilizara el De/A y el campo de destino de esta Tag sea un campo con tabla vinculada, el contenido de la Tag del XML de ORIGEN debe ser idéntico al registro que se incluirá en el Protheus, para que en el Protheus tenga el mismo código del contenido del XML de origen y reciba el registro.





3. Integraciones de las rutinas

Como integrar no faturamento as tabelas compatíveis RM x Protheus:

1 - La integración de clientes no mueve la tabla AI0 - Complemento de clientes.

Por estándar los campos obligatorios (Que por este motivo deben tener sus tags en el XML y que utilizaremos como base para ejemplo):

[CAMPO LIBRE] - A1_COD (Campo maestro de la integración)

  • <InternalId></InternalId> y  <Code></Code>



[CAMPO LIBRE] - A1_NOME 

  • <Name></Name>


[CAMPO LIBRE]
- A1_END 

  • <Address></Address> y <Number></Number>

[CAMPO LIBRE] - A1_NREDUZ 

  • <ShortName></ShortName>

 

[CAMPO LIBRE] - A1_MUN

  • <CityDescription></CityDescription>

 

[CAMPO REGLADO SIMPLE] - A1_TIPO

  • <EntityType></EntityType>

 

[CAMPO REGLADO] - A1_EST

  • <State>
                  <StateCode></StateCode>
                  <StateDescription></StateDescription>
    </State>


OBS 1: Si se colocara el "Cd. Municipio (A1_COD_MUN)" de Tag "<CityCode></CityCode>", automáticamente disparará el campo "Municipio* (A1_MUN)" con el nombre del municipio correspondiente.

OBS 2: No es obligatoria la colocación de la "Modalidad (A1_NATUREZ)" pero se recomienda dependiendo de la parametrización de MV_1DUPNAT.

  • MATA030 o CRMA980: Fuentes destino
  • MATI030: Fuente integrador

4 - Tanto la rutina MATA030 como CRMA980 utilizan el mismo fuente de integración, el MATI030, esto permite que pueda utilizarse en el Adapter la Rutina CRMA980 o MATA030 independientemente del parámetro MV_MVCSA1.


<TOTVSMessage>
     <MessageInformation version="2.002">
     <UUID>V1n1c105-2003-1234-5678-90abcdefghij</UUID>
     <Type>BusinessMessage</Type>
     <Transaction>CUSTOMERVENDOR</Transaction>
     <StandardVersion>1.000</StandardVersion>
     <SourceApplication>RM</SourceApplication>
     <CompanyId>2</CompanyId>
     <BranchId>1</BranchId>
     <Product name="RM" version="12.1.29.0" />
     <GeneratedOn>2022-11-19T12:34:56</GeneratedOn>
     <DeliveryType>Sync</DeliveryType>
</MessageInformation>
<BusinessMessage>
     <BusinessEvent>
          <Entity>CUSTOMERVENDOR</Entity>
          <Event>Upsert</Event>
     </BusinessEvent>
     <BusinessContent>
               <RMENTITYNAME>FCFO</RMENTITYNAME>
               <CompanyId>2</CompanyId>
               <Code>000001</Code>
               <StoreId>09</StoreId>
               <InternalId>2|09;C000001</InternalId>
               <ShortName>CLITESTE</ShortName>
               <Name>CLIENTE TESTE</Name>
               <Type>Customer</Type>
               <EntityType>Person</EntityType>
               <RegisterDate>2022-11-19</RegisterDate>
               <RegisterSituation>Active</RegisterSituation>
              <Address>
                  <Address>RUA TESTE</Address>
                  <Number>544</Number>
                  <Complement></Complement>
                  <District>CENTRO</District>
                   <City>
                         <CityDescription>Belo Horizonte MUN</CityDescription>
                    </City>
                   <State>
                         <StateCode>MG</StateCode>
                         <StateDescription>Minas Gerais</StateDescription>
                    </State>
               </Address>
          </BusinessContent>
     </BusinessMessage>
</TOTVSMessage>


Tabla: XX4

Rutina: (CFGA020 - Adapter E.A.I.)



XX4_FILEXE = Sucursal recibidora del Protheus

XX4_UNMESS = '1 - Sí'

XX4_ROTINA = 'CRMA980'/'MATA030'

XX4_MODEL = 'CUSTOMERVENDOR'

XX4_DESCRI = Usuario selecciona

XX4_SENDER = '1 - Sí'/'2 - No'

XX4_RECEIV = '1 - Sí'

XX4_METODO = '2 - Asincrónico'

XX4_TPOPER = '1 - Todas'

XX4_CHANEL = 3

XX4_SNDVER = ('2.005+') [Más actualizada disparada automáticamente]

XX4_FORMAT = 'XML'

XX4_SAVLOG = '1 - Sí'

XX4_ROUTE: Definida completada o no en la implantación de la integración

 

Restante de los campos de XX4: Vacíos (no obligatorios)






Tabla: XXD

Rutina: (APCFG050 - De/A Empresas Mensaje único)



XXD_REFER = Contenido de la Tag del XML <ProductName> (RM)

XXD_COMPA = Contenido de la Tag del XML <CompanyId>

XXD_BRANCH = Contenido de la Tag del XML <BranchId> [Si estuviera vacía en el XML, el campo queda vacío.]

XXD_EMPPRO = Empresa del Protheus recibidora

XXD_FILPRO = Sucursal en el Protheus recibidor [Dentro de la empresa]

 

En el ejemplo:

XXD_REFER = RM

XXD_COMPA = 2

XXD_BRANCH = 1

XXD_EMPPRO = 99

XXD_FILPRO = 01







Los campos obligatorios nativos del registro de clientes en el Protheus no tienen campos reglados que tienen "InternalId", entonces en el XML de ejemplo no es necesario registrar ningún De/A de Mensaje único.

OBS: El Campo <InternalId> general de la integración generará el propio cliente (A1_COD), es el campo con clave principal, si necesitar De/A de Mensaje único, pues la integración en sí es su creación.


Devolución de la integración con el XML de ejemplo:


XX3_FILIAL = 01

XX3_CODIGO = 0000000000000000000000140

XX3_UUID = V1n1c105-2003-1234-5678-90abcdefghij

XX3_FUNCOD = CUSTOMERVENDOR

XX3_FUNDES = TOTVSMessage CUSTOMERVENDOR Business Message         

XX3_TRDATA = 19/11/2022      

XX3_TRHORA = 09:34:56

XX3_PRDATA = 02:59:03

XX3_TENTAT = 1

XX3_TRANS (Memo) =

XX3_TPDOC = 1

XX3_TPTRAN = 0

XX3_STATUS = 2

XX3_TMDATA = 19/11/2022

XX3_TMHORA = 02:59:01

XX3_MSGTYP = 20

XX3_CHANEL = 1

XX3_RETURN (Memo) =

XX3_PRODUCT = RM

XX3_SOURCE = RM

XX3_VERSAO = 2.002

XX3_EVENT = upsert


Restante de los campos de XX3: Vacíos.


Campo(s) destinoValor atribuido post integración del XML de ejemploTag(s) en el XML que atribuyó(atribuyeron) la información

A1_FILIAL

01

<BranchId>1</BranchId> (De/A de Empresa/Sucursal involucrado)

A1_COD

000001

<Code>000001</Code> e <InternalId>2|09;C000001</InternalId>

A1_LOJA

09

<StoreId>09</StoreId> e <InternalId>2|09;C000001</InternalId>

A1_NOME

'CLIENTE TESTE'

<Name>CLIENTE TESTE</Name>

A1_PESSOA

'F - Física'

<EntityType>Person</EntityType>

A1_END

'RUA TESTE, 544'

<Address>RUA TESTE</Address> y <Number>544</Number>

A1_NREDUZ

'CLITESTE'

<ShortName>CLITESTE</ShortName>

A1_TIPO

'F - Cons.Final'

<EntityType>Person</EntityType> (por estándar la integración demarca con el tipo 'F - Cons.Final')

A1_EST

MG

<StateCode>MG</StateCode>

A1_MUN

'BELO HORIZONTE MUN'

CityDescription>Belo Horizonte MUN</CityDescription>

A1_MSBLQL

'2 - Activo'

<RegisterSituation>Active</RegisterSituation>

A1_MOEDALC/A1_USADDA/A1_REGESIM/A1_TPDP

Estos campos se completan en una integración sin embargo no tiene relación con esta.

El estándar del Protheus al incluir cualquier cliente [Iniciador estándar del campo])

-

   

Campo Tag que llevará su valor/contenido al respectivo campoValores posiblesDónde generalmente está ubicada en el XML¿Necesita de De/A de Mensaje único?

A1_COD

<Code></Code> e <InternalId></InternalId>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Es la clave principal de la integración

A1_LOJA

<Store></Store> e <InternalId></InternalId>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

En su composición contiene la clave principal de la integración

A1_NOME

<Name></Name>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Es un campo libre (No contiene "InternalId" en el nombre)

A1_PESSOA

<EntityType>Person</EntityType> o <EntityType>Company</EntityType>

'F - Física' (<EntityType>Person</EntityType>)

'J - Jurídica' (<EntityType>Company</EntityType>)

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Es un campo reglado simple (No contiene "InternalId" en el nombre)

A1_END

<Address></Address> y <Number></Number>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>   
                <Address>   

No

Es un campo libre (No contiene "InternalId" en el nombre)

A1_NREDUZ

<ShortName></ShortName>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Es un campo libre (No contiene "InternalId" en el nombre)

A1_TIPO

<EntityType></EntityType>

'F - Cons.Final' (<EntityType>Person</EntityType>)

'R - Revendedor' (<EntityType>Company</EntityType>)

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Es un campo reglado simple (No contiene "InternalId" en el nombre)

A1_EST

<StateCode></StateCode>

Registro válido en la tabla del campo A1_EST (ALIAS).

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <Address>
                     <State>
                        



No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

A1_MUN

<CityDescription></CityDescription>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <Address>
                     <City>


No

Es un campo libre (No contiene "InternalId" en el nombre)

A1_MSBLQL

<RegisterSituation></RegisterSituation>

'1 - Inactivo' (<RegisterSituation>Inactive</RegisterSituation>)

'2 - Activo' (<RegisterSituation>Active</RegisterSituation>)

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Es un campo reglado simple (No contiene "InternalId" en el nombre)

A1_DTNASC

<RegisterDate></RegisterDate>

Contenido fecha

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo dependiente, sin necesidad de De/A.

A1_COMPLEM

<Complement></Complement>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <Address>
                     


No

Es un campo libre (No contiene "InternalId" en el nombre)

A1_BAIRRO

<District></District>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <Address>

No

Es un campo libre (No contiene "InternalId" en el nombre)

A1_PAIS

<Code></Code>

Registro válido en la tabla del campo A1_PAIS (ALIAS).

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <Country>

No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

A1_PAIS

<CountryInternalId></CountryInternalId>

Registro válido en la tabla del campo A1_PAIS (ALIAS).

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
        

Campo reglado (Contiene "InternalId" en el nombre)

Existe la necesidad de De/A.

A1_COD_MUN

<CityCode></CityCode>

Registro válido en la tabla del campo A1_COD_MUN (ALIAS).

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <Address>

No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

A1_REGIAO

<RegionCode></RegionCode>

Registro válido en la tabla del campo A1_REGIAO (ALIAS).

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <Address>
                    <Region>


No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

A1_CEP

<ZIPCode></ZIPCode>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <Address>

No

Campo dependiente, sin necesidad de De/A.

A1_SATIV1

(...) Hasta (...)

A1_SATIV8

<InternalId Name="Segment1" CodeErp="" Description=""></InternalId>)

(...) Hasta (...)

<InternalId Name="Segment8" CodeErp="" Description=""></InternalId>)

Registro válido en la tabla de los campos A1_SATIV1 hasta A1_SATIV8 (ALIAS).

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <Segment>

Campo reglado (Contiene "InternalId" en el nombre)

Existe la necesidad de De/A.

A1_TPFRET

<FreightTypeCode></FreightTypeCode>

'C=CIF' (<FreightTypeCode>C</FreightTypeCode>)


'F=FOB' (<FreightTypeCode>F</FreightTypeCode>)


'T=Por cuenta terceros' (<FreightTypeCode>T</FreightTypeCode>)


'R=Por cuenta remitente' (<FreightTypeCode>R</FreightTypeCode>)


'D=Por cuenta destinatario' (<FreightTypeCode>D</FreightTypeCode>)


'S=Sin flete' (<FreightTypeCode>S</FreightTypeCode>)

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <Address>

No

Es un campo reglado simple (No contiene "InternalId" en el nombre)

A1_TRANSP

<CarrierInternalId></CarrierInternalId> o <CodeERP></CodeERP>

Registro válido en la tabla del campo A1_TRANSP (ALIAS).

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

Campo reglado (Contiene "InternalId" en el nombre)

Existe la necesidad de De/A.

A1_VENCLC

<MaturityCreditLimit></MaturityCreditLimit>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <CreditInformation>

No

Campo dependiente, sin necesidad de De/A.

A1_INSCR

<Id scope="State" name="INSCRIPCIÓN ESTATAL" issueOn="" expiresOn=""></Id>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <GovernmentalInformation>

No

Campo dependiente, sin necesidad de De/A.

A1_INSCRM

<Id scope="Municipal" name="INSCRIPCIÓN MUNICIPAL" issueOn="" expiresOn=""></Id>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <GovernmentalInformation>

No

Campo dependiente, sin necesidad de De/A.

A1_SUFRAMA

<Id scope="Federal" name="SUFRAMA" issueOn="" expiresOn=""></Id>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <GovernmentalInformation>

No

Campo dependiente, sin necesidad de De/A.

A1_CGC

<Id scope="Federal" name="RCPF" issueOn="" expiresOn=""></Id>

<Id scope="Federal" name="RCPJ" issueOn="" expiresOn=""></Id>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <GovernmentalInformation>

No

Campo dependiente, sin necesidad de De/A.

A1_INSCRUR

<Id scope="State" name="INSCRIPCIÓN RURAL" issueOn="" expiresOn=""></Id>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <GovernmentalInformation>

No

Campo dependiente, sin necesidad de De/A.

A1_PFISICA

<Id scope="Federal" name="DI" issueOn="" expiresOn=""></Id>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <GovernmentalInformation>

No

Campo dependiente, sin necesidad de De/A.

OBS: Solamente graba si (A1_PFISICA estuviera vacío) y (A1_PESSOA = F) o (A1_EST = EX).

A1_CXPOSTA

<POBox></POBox>

Contenido alfanumérico

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <ListOfCommunicationInformation
           <CommunicationInformation>


No

Es un campo libre (No contiene "InternalId" en el nombre)

A1_EMAIL

<Email></Email>

Contenido alfanumérico

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <ListOfCommunicationInformation
           <CommunicationInformation>


No

Es un campo libre (No contiene "InternalId" en el nombre)

A1_TEL

<PhoneNumber></PhoneNumber>

Contenido numérico

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <ListOfCommunicationInformation
           <CommunicationInformation>


No

Campo dependiente, sin necesidad de De/A.

A1_DDD

<DiallingCode></DiallingCode>

Contenido numérico

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <ListOfCommunicationInformation
           <CommunicationInformation>


No

Campo dependiente, sin necesidad de De/A.

A1_DDI

<InternationalDiallingCode></InternationalDiallingCode>

Registro válido en la tabla del campo A1_DDI (ALIAS).

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <ListOfCommunicationInformation
           <CommunicationInformation>


No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

A1_FAX

<FaxNumber></FaxNumber>

Contenido numérico

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <ListOfCommunicationInformation
           <CommunicationInformation>


No

Campo dependiente, sin necesidad de De/A.

A1_ENDCOB

<Address></Address>

Contenido alfanumérico

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <BillingInformation>
           <Address>


No

Es un campo libre (No contiene "InternalId" en el nombre)

A1_HPAGE

<HomePage></HomePage>

Contenido alfanumérico

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <ListOfCommunicationInformation
           <CommunicationInformation>


No

Es un campo libre (No contiene "InternalId" en el nombre)

A1_ENDENT

<Address>, <Number> y <Complement>

Contenido alfanumérico

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <ShippingAddress>

No

Son campos libres (No contiene "InternalId" en el nombre)

A1_CONTATO

<Name></Name>

o

<ContactInformationName></ContactInformationName>

Contenido alfanumérico

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <ListOfContacts>
          <Contact>


No

Son campos libres (No contiene "InternalId" en el nombre)

A1_BAIRROC

<District></District>

Contenido alfanumérico

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <BillingInformation>
           <Address>


No

Es un campo libre (No contiene "InternalId" en el nombre)

A1_CEPC

<ZIPCode></ZIPCode>

Contenido numérico

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <BillingInformation>
           <Address>


No

Campo dependiente, sin necesidad de De/A.

A1_MUNC

<CityDescription></CityDescription>

Contenido alfanumérico

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <BillingInformation>
           <Address>





No

Es un campo libre (No contiene "InternalId" en el nombre)

A1_ESTC

<StateCode></StateCode>

Registro válido en la tabla del campo A1_ESTC (ALIAS).

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <BillingInformation>
           <Address>


No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

A1_CEPE

<ZIPCode></ZIPCode>

Contenido numérico

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <ShippingAddress>
           <Address>


No

Campo dependiente, sin necesidad de De/A.

A1_BAIRROE

<District></District>

Contenido alfanumérico

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <ShippingAddress>
           <Address>


No

Es un campo libre (No contiene "InternalId" en el nombre)

A1_ESTE

<StateCode></StateCode>

Registro válido en la tabla del campo A1_ESTE (ALIAS).

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <ShippingAddress>
           <Address>


No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

A1_COMPENT

<Complement></Complement>

Contenido alfanumérico

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <ShippingAddress>
         


No

Es un campo libre (No contiene "InternalId" en el nombre)

A1_VEND

<Code></Code>

Registro válido en la tabla del campo A1_VEND (ALIAS).

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <VendorInformation>
          <VendorType>
         



No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

A1_LC

<CreditLimit></CreditLimit>

Contenido numérico

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>
        <CreditInformation>




No

Campo dependiente, sin necesidad de De/A de Mensaje único.

A1_CONTRIB

<Taxpayer></Taxpayer>

'1 - No'

'2 - No'

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>

No

Es un campo reglado simple (No contiene "InternalId" en el nombre)

A1_SALPED

<BalanceOfCredit></BalanceOfCredit>

Contenido numérico

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>

No

Campo dependiente, sin necesidad de De/A.

A1_CONDPAG

<PaymentConditionCode></PaymentConditionCode>

Registro válido en la tabla del campo A1_CONDPAG (ALIAS).

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>

No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

A1_TABELA

<PriceListHeaderItemCode></PriceListHeaderItemCode>

Registro válido en la tabla del campo A1_TABELA (ALIAS).

<TOTVSMessage>
   <BusinessMessage>
     <BusinessContent>

No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.




1 - Integración XML: ORDER (Pedidos de venta) en construcción.

Por estándar los campos obligatorios (Que por este motivo deben tener sus tags en el XML y que utilizaremos como base para ejemplo):

[CAMPO LIBRE] - C5_NUM (Campo maestro de la integración)

  • <InternalId></InternalId> y <OrderId></OrderId>

[CAMPO DEPENDIENTE] - C6_ITEM (Campo maestro de la integración)

  • <InternalId></InternalId> e <OrderItem></OrderItem>


[CAMPO DEPENDIENTE] - C5_TIPO

 

[CAMPO REGLADO] - C5_CLIENTE

 

[CAMPO LIBRE] - C5_LOJACLI

 

[CAMPO REGLADO] - C5_CONDPAG

 

[CAMPO REGLADO] - C6_PRODUTO

 

[CAMPO DEPENDIENTE] - C6_QTDVEN (Excepto configuración de la TES)

 

[CAMPO DEPENDIENTE] - C6_PRCVEN (Excepto configuración de la TES

 

[CAMPO DEPENDIENTE] - C6_VALOR

 

[CAMPO REGLADO] - C6_TES (Puede tomarse del Producto)

 

[CAMPO REGLADO] - C6_LOCAL (Puede tomarse del Producto

 

[CAMPO DEPENDIENTE] - C6_ENTREG (Tomado de DDATABASE)

 

[CAMPO LIBRE] - C6_DESCRI


  • MATA410: Fuente destino
  • MATI410: Fuente integrador

Tabla: XX4

Rutina: (CFGA020 - Adapter E.A.I.)


XX4_FILEXE = Sucursal recibidora del Protheus

XX4_UNMESS = '1 - Sí'

XX4_ROTINA = 'MATA410'

XX4_MODEL = 'ORDER'

XX4_DESCRI = Usuario selecciona

XX4_SENDER = '1 - Sí'/'2 - No'

XX4_RECEIV = '1 - Sí'

XX4_METODO = '2 - Asincrónico'

XX4_TPOPER = '1 - Todas'

XX4_CHANEL = 3

XX4_SNDVER = ('4.003+') [Más actualizada disparada automáticamente]

XX4_FORMAT = 'XML'

XX4_SAVLOG = '1 - Sí'

XX4_ROUTE: Definida completada o no en la implantación de la integración

 

Restante de los campos de XX4: Vacíos (no obligatorios)


Tabla: XXD

Rutina: (APCFG050 - De/A Empresas Mensaje único)



XXD_REFER = Contenido de la Tag del XML <ProductName> (RM)

XXD_COMPA = Contenido de la Tag del XML <CompanyId>

XXD_BRANCH = Contenido de la Tag del XML <BranchId> [Si estuviera vacía en el XML, el campo queda vacío.]

XXD_EMPPRO = Empresa del Protheus recibidora

XXD_FILPRO = Sucursal en el Protheus recibidor [Dentro de la empresa]



XXD_REFER = RM

XXD_COMPA = 77

XXD_BRANCH = 77

XXD_EMPPRO = 99

XXD_FILPRO = 01


Los campos obligatorios nativos del registro de pedidos de venta en el Protheus no tienen campos reglados que tienen "InternalId", entonces en el XML de ejemplo no es necesario registrar ningún De/A de Mensaje único.

OBS: El Campo <InternalId> general de la integración generará la propia condición de pago (C5_NUM), es el campo con clave principal, sin necesitar De/A de Mensaje único, pues la integración en sí es su creación.


Devolución de la integración con el XML de ejemplo:


XX3_FILIAL = 01

XX3_CODIGO = 0000000000000000000000149XX

XX3_UUID = V1n1c105-0005-1234-5678-90abcdefghij

XX3_FUNCOD = ORDER

XX3_FUNDES = TOTVSMessage ORDER Business Message         

XX3_TRDATA = 28/01/2019   XX

XX3_TRHORA = 11:01:50XX

XX3_PRDATA = 19/11/2022XX

XX3_PRHORA = 20:14:18XX

XX3_TENTAT = 1

XX3_TRANS (Memo) =

XX3_TPDOC = 1

XX3_STATUS = 2

XX3_TMDATA = 19/11/2022XX

XX3_TMHORA = 20:14:18XX

XX3_MSGTYP = 20

XX3_CHANEL = 1

XX3_RETURN (Memo) =

XX3_PRODUC = RM

XX3_SOURCE = RM

XX3_VERSAO = 4.003

XX3_EVENT = upsert


Restante de los campos de XX3: Vacíos.


XXF_REFER

(Referencia*)

XXF_TABLE

(Tabla*)

XXF_ALIAS

(Alias*)

XXF_FIELD

(Campo*)

XXF_UNMESS

(Mensaje único)

XXF_EXTVAL

(Valor externo*)

XXF_INTVAL

(Valor interno*)

RMSC5990SC5C5_NUM-XXXX
RMSC6990SC6C6_ITEM-XXXX
Campo(s) destinoValor atribuido post integración del XML de ejemploTag(s) en el XML que atribuyó(atribuyeron) la información
C5_FILIAL

01

<BranchId>1</BranchId> (De/A de Empresa/Sucursal involucrado)

C5_XX

Estos campos se completan en una integración, sin embargo, pueden no tener relación con esta.

Es estándar del Protheus al incluir cualquier cliente [Iniciador estándar del campo]).

(En el XML ejemplo no se incluyeron Tags para tratamiento de estos campos)

-

   

Campo Tag que llevará su valor/contenido al respectivo campoValores posiblesDónde generalmente está ubicada en el XML¿Necesita de De/A de Mensaje único?

C5_FILIAL

<Code></Code> e <InternalId></InternalId>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Es la clave principal de la integración

C5_NUM

<OrderId></OrderId> e <InternalId></InternalId>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Primera Tag (No contiene "InternalId" en el nombre)

Segunda Tag es la clave principal de la integración


<OrderPurpose>2</OrderPurpose>

1 - Pedido de compra (Tratamiento con el Equipo Compras)

2 - Pedido de venta

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Es una Tag interna que pasa que se trata de un pedido de venta.

C5_CLIENTE + C5_LOJACLI

<CustomerCode>/<CustomerCode>

Cliente existente + Tienda existente

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

C5_MOEDA

<CurrencyCode></CurrencyCode>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C5_CONDPAG

<PaymentTermCode></PaymentTermCode>

Registro válido en la tabla del campo C5_CONDPAG (ALIAS).

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

C5_CONDPAG

<PaymentConditionInternalId></PaymentConditionInternalId>

Empresa | Sucursal | Registro válido en la tabla del campo

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

Campo reglado con Tag con "InternalId"

Existe necesidad de De/A de Mensaje único.

C5_EMISSAO

<RegisterDate></RegisterDate>

Contenido de fecha

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C5_TPFRETE

<FreightType></FreightType>

'C=CIF' (<FreightType>C</FreightType>)


'F=FOB' (<FreightType>F</FreightType>)


'T=Por cuenta terceros' (<FreightType>T</FreightType>)


'R=Por cuenta remitente' (<FreightType>R</FreightType>)


'D=Por cuenta destinatario' (<FreightType>D</FreightType>)


'S=Sin flete' (<FreightType>S</FreightType>)

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Es un campo reglado simple (No contiene "InternalId" en el nombre)

C5_PBRUTO

<GrossWeight></GrossWeight>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C5_SEGURO

<InsuranceValue></InsuranceValue>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C5_DESC1
C5_DESC2
C5_DESC3
C5_DESC4

          <Discount></Discount>
          <Discount></Discount>
          <Discount></Discount>
          <Discount></Discount>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
                <Discounts>

No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C5_MENNOTA

<InvoiceMessage></InvoiceMessage>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Es un campo libre (No contiene "InternalId" en el nombre)

C5_NOTA

<InvoiceNumber></InvoiceNumber>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C5_SERIE

<InvoiceSerie></InvoiceSerie>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo libre, no contiene en la Tag "InternalId".

C5_TIPO

<OrderTypeCode></OrderTypeCode> o

si la integración no fuera borrado de registro C5_TIPO == N

'N - Normal'

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Es un campo reglado simple (No contiene "InternalId" en el nombre)

C5_CLIENT + C5_LOJAENT

<DeliveryCustomerCode></DeliveryCustomerCode>

Cliente existente + Tienda existente

Si esta Tag fuera llevada vacía:
(C5_CLIENTE + C5_LOJACLI == C5_CLIENT + C5_LOJAENT)

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

C5_TABELA

<PriceTableNumber></PriceTableNumber>

Registro válido en la tabla del campo C5_TABELA (ALIAS).

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

C5_VEND1

<SellerCode></SellerCode>

Registro válido en la tabla del campo C5_VEND1 (ALIAS).

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <SalesOrderItens>

No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

C5_TRANSP

<CarrierCode></CarrierCode>

Registro válido en la tabla del campo C5_TRANSP (ALIAS).

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

C5_DESCFI

<FinancialDiscount></FinancialDiscount>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C5_FRETE

<FreightValue></FreightValue>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C5_REDESP

<RedeliveryCarrierCode></RedeliveryCarrierCode>

Registro válido en la tabla del campo C5_REDESP (ALIAS).

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

C5_PESOL

<NetWeight></NetWeight>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C5_VOLUME1

<NumberOfVolumes></NumberOfVolumes>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_PRODUTO

<ItemCode></ItemCode>

Registro válido en la tabla del campo C6_PRODUTO (ALIAS).

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <SalesOrderItens>
                    <Item>


No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

C6_TES

<TypeOperation></TypeOperation>

Registro válido en la tabla del campo C6_TES (ALIAS).

OBS: Si la TES no se hubiera informado, asume la TES del parámetro MV_SLMTS

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <SalesOrderItens>
                    <Item>


No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

C6_QTDVEN

<Quantity></Quantity>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <SalesOrderItens>
                    <Item>


No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_QTDLIB

C6_QTDVEN(<Quantity></Quantity>)

Solamente se carga la información al campo si se configurara para liberar de acuerdo con el stock.

Documentación:

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <SalesOrderItens>
                    <Item>


No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_PRCVEN

<UnityPrice></UnityPrice>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <SalesOrderItens>
                    <Item>


No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_PRUNIT

<UnityPrice></UnityPrice> o <PriceOfPriceTable></PriceOfPriceTable>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <SalesOrderItens>
                    <Item>


No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_VALOR

<TotalPrice></TotalPrice> o Multiplicación entre C6_PRCVEN y C6_PRUNIT

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <SalesOrderItens>
                    <Item>


No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_DESCRI

<ItemDescription></ItemDescription>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <SalesOrderItens>
                    <Item>


No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_ENTREG

<DeliveryDate></DeliveryDate>

Contenido de fecha

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <SalesOrderItens>
                    <Item>


No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_NUM

<OrderId></OrderId>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <SalesOrderItens>
                    <Item>


No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_PEDCLI

<CustomerOrderNumber></CustomerOrderNumber>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <SalesOrderItens>
                    <Item>


No

Campo libre, no contiene en la Tag "InternalId".

C6_DESCONT

<DiscountPercentage></DiscountPercentage>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <SalesOrderItens>
                    <Item>


No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_VALDESC

<ItemDiscount></ItemDiscount>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <SalesOrderItens>
                    <Item>
                         <ItemDiscounts>



o

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <Discounts>
                    <Discount>




No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_NFORI

<InputDocumentNumber></InputDocumentNumber>

Contenido numérico

<TOTVSMessage>   <BusinessMessage>
    <BusinessContent>
      <SalesOrderItens>
         <Item>
           <ListOfReturnedDocuments>
              <ReturnedInputDocument>



No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_SERIORI

<InputDocumentSerie></InputDocumentSerie>

Contenido alfanumérico

<TOTVSMessage>   <BusinessMessage>
    <BusinessContent>
      <SalesOrderItens>
         <Item>
           <ListOfReturnedDocuments>
              <ReturnedInputDocument>



No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_ITEMORI

<InputDocumentSequence></InputDocumentSequence>

Contenido numérico

<TOTVSMessage>   <BusinessMessage>
    <BusinessContent>
      <SalesOrderItens>
         <Item>
           <ListOfReturnedDocuments>
              <ReturnedInputDocument>



No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_IDENTB6


Retira por los campos C6_FILIAL, C6_NFORI, C6_CLIENTE, C6_SERIORI, C6_ITEMORI y C6_LOJACLI retira el saldo de la Tabla SB6 en la devolución del documento de entrada.


No

Es una Tag interna que pasa que se trata de un pedido de venta.

C6_CODINF


Contenido alfanumérico


No

Campo libre, no contiene en la Tag "InternalId".

C6_INFAD


Memo


No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_ITEM

<OrderItem></OrderItem> o <InternalId></InternalId>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>
               <SalesOrderItens>
                    <Item>


No

Primera Tag (No contiene "InternalId" en el nombre)

Segunda Tag es la clave principal de la integración

C6_PRODUTO

<ItemInternalId></ItemInternalId>

Registro válido en la tabla del campo C6_PRODUTO (ALIAS).

<TOTVSMessage>
    <BusinessMessage>
        <BusinessContent>
            <SalesOrderItens>
                <Item>
                   



Campo reglado con Tag con "InternalId"

Existe necesidad de De/A de Mensaje único.

C6_LOCAL

<WarehouseInternalId></WarehouseInternalId>

Registro válido en la tabla del campo C6_LOCAL (ALIAS).

<TOTVSMessage>
    <BusinessMessage>
        <BusinessContent>
            <SalesOrderItens>
                <Item>


Campo reglado con Tag con "InternalId"

Existe necesidad de De/A de Mensaje único.

C6_UM

<UnitOfMeasureInternalId></UnitOfMeasureInternalId>

o

<ItemUnitOfMeasureInternalId></ItemUnitOfMeasureInternalId>


Registro válido en la tabla del campo C6_UM (ALIAS).

<TOTVSMessage>
    <BusinessMessage>
        <BusinessContent>
            <SalesOrderItens>
                <Item>
                   



Campo reglado con Tag con "InternalId"

Existe necesidad de De/A de Mensaje único.

C6_PROJPMS

<ProjectInternalId></ProjectInternalId>

Registro válido en la tabla del campo C6_PROJPMS (ALIAS).

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>
            <ListOfApportionOrderItem>
                 <ApportionOrderItem>




Campo reglado con Tag con "InternalId"

Existe necesidad de De/A de Mensaje único.

C6_TASKPMS

<TaskInternalId></TaskInternalId>

Registro válido en la tabla del campo C6_TASKPMS (ALIAS).

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>
            <ListOfApportionOrderItem>
                 <ApportionOrderItem>




Campo reglado con Tag con "InternalId"

Existe necesidad de De/A de Mensaje único.

C6_RATEIO

<ApportionOrderItem></ApportionOrderItem>

Si esta Tag existiera simboliza que existe prorrateo en el pedido de ventas (C6_RATEIO == 1)

1 - Sí

2 - No

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>
            <ListOfApportionOrderItem>



No

Es un campo reglado simple (No contiene "InternalId" en el nombre)

C6_CC

<CostCenterCode></CostCenterCode>

Registro válido en la tabla del campo C6_CC (ALIAS).

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>


No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

C6_OPER

<TaxOpCode></TaxOpCode>

Registro válido en la tabla del campo C6_OPER (ALIAS).

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>


No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

C6_LOTECTL

<LotNumber></LotNumber>

Contenido alfanumérico

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>


No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_NUMLOTE

<SubLotNumber></SubLotNumber>

Contenido alfanumérico

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>


No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_NUMSERI

<SeriesItem></SeriesItem>

Contenido alfanumérico

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>


No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_LOCALIZ

<AddressingItem></AddressingItem>

Contenido alfanumérico

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>


No

Campo reglado, sin embargo esta Tag está pasando el valor directamente,

sin necesidad de De/A.

C6_DATFAT

<InvoicingDate></InvoicingDate>

Contenido de fecha

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>


No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_QTDEMP

<AlloccatedQuantity></AlloccatedQuantity>

Contenido numérico

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>


No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_QTDENT

<QuantityDelivered></QuantityDelivered>

Contenido numérico

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>


No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_NOTA

<InvoiceNumber></InvoiceNumber>

Contenido numérico

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>


No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_SERIE

<InvoiceSerie></InvoiceSerie>

Contenido alfanumérico

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>


No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_RESERVA

<ItemReserveInternalId></ItemReserveInternalId>

Registro válido en la tabla del campo C6_RESERVA (ALIAS).

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>


Campo reglado con Tag con "InternalId"

Existe necesidad de De/A de Mensaje único.


<InternalId>


<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>
            <ListOfApportionOrderItem>
                 <ApportionOrderItem>






<DepartamentCode/>


<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>
            <ListOfApportionOrderItem>
                 <ApportionOrderItem>






<DepartamentInternalId/>


<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>
            <ListOfApportionOrderItem>
                 <ApportionOrderItem>




Campo reglado con Tag con "InternalId"

Existe necesidad de De/A de Mensaje único.


<AccountantAcountInternalId>

Empresa | Sucursal donde está el registro de la tabla CTI | Registro de AGG_CONTA

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>
            <ListOfApportionOrderItem>
                 <ApportionOrderItem>




Campo reglado con Tag con "InternalId"

Existe necesidad de De/A de Mensaje único.


<ProjectInternalId>


<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>
            <ListOfApportionOrderItem>
                 <ApportionOrderItem>




Campo reglado con Tag con "InternalId"

Existe necesidad de De/A de Mensaje único.


<SubProjectInternalId/>


<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>
            <ListOfApportionOrderItem>
                 <ApportionOrderItem>




Campo reglado con Tag con "InternalId"

Existe necesidad de De/A de Mensaje único.


<TaskInternalId>


<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>
            <ListOfApportionOrderItem>
                 <ApportionOrderItem>




Campo reglado con Tag con "InternalId"

Existe necesidad de De/A de Mensaje único.


<Porcentaje>

Contenido numérico

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>
            <ListOfApportionOrderItem>
                 <ApportionOrderItem>




No

Campo dependiente, sin necesidad de De/A de Mensaje único.


<Quantity>

Contenido numérico

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>
            <ListOfApportionOrderItem>
                 <ApportionOrderItem>




No

Campo dependiente, sin necesidad de De/A de Mensaje único.


<Observation/>

Contenido alfanumérico

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>
            <ListOfApportionOrderItem>
                 <ApportionOrderItem>




No

Campo dependiente, sin necesidad de De/A de Mensaje único.


<Value/>

Contenido numérico

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>
            <ListOfApportionOrderItem>
                 <ApportionOrderItem>




No

Campo dependiente, sin necesidad de De/A de Mensaje único.

C6_CC

<CostCenterInternalId></CostCenterInternalId>

Registro válido en la tabla del campo C6_CC (ALIAS).

<TOTVSMessage>
  <BusinessMessage>
     <BusinessContent>
       <SalesOrderItens>
          <Item>


Campo reglado con Tag con "InternalId"

Existe necesidad de De/A de Mensaje único.






1 - La integración de condiciones de pago no integra condiciones de pago del Tipo 9, A y B (Tabla SEC).

Por estándar los campos obligatorios (Que por este motivo deben tener sus tags en el XML y que utilizaremos como base para ejemplo):

[CAMPO LIBRE] - E4_CODIGO (Campo maestro de la integración)

  • <InternalId></InternalId><Code></Code>



[CAMPO DEPENDIENTE] - E4_TIPO

  • <TypePaymentCondition></TypePaymentCondition>

[CAMPO DEPENDIENTE] - E4_TIPO

  • <TypePaymentCondition></TypePaymentCondition>

[CAMPO DEPENDIENTE] - E4_COND

  • <DaysFirstDue></DaysFirstDue>          // Días para primera cuota
    <QuantityPlots></QuantityPlots>         // Cantidad de cuotas
    <RangePlots></RangePlots>                // Intervalo entre las cuotas
    <WeekDayFixed></WeekDayFixed>     // Día de la semana, si este fuera fijo
    <DayMonthFixed></DayMonthFixed> // Día del mes, si este fuera fijo
    <DaysCondition></DaysCondition>    // Conteo de los días para las cuotas
    <RangePlots></RangePlots>               // Intervalo de días
    <DaysFirstDue></DaysFirstDue>         // Días de carencia para la primera cuota 
    <WeekDayFixed></WeekDayFixed>    // Día de la semana
    <DaysCondition></DaysCondition>    // Días de la condición

    <Due>                                                  // Cuotas (si E4_TIPO == 8)
                <DueDay></DueDay>             // Día de vencimiento
                <Percentage></Percentage>  // Porcentaje de las cuotas












[CAMPO LIBRE] - E4_DESCRI 

  • <Description></Description>
  • MATA360: Fuente destino
  • MATI360: Fuente integrador

4 - No existe Tag que pasa el contenido entero del campo E4_COND. El campo E4_COND está formado por varias Tags específicas y cada combinación de Tags culmina en el tipo de la condición de pago. Si el tipo de la condición de pago no se pasara en la Tag "<TypePaymentCondition>" y las Tags que forman el campo E4_COND representen una condición válida, el sistema automáticamente la encuentra y define el tipo de la condición de pago (E4_COND).

<TOTVSMessage>
    <MessageInformation version="2.000">
        <UUID>V1n1c105-0001-1234-5678-90abcdefghij</UUID>
        <Type>BusinessMessage</Type>
        <Transaction>PAYMENTCONDITION</Transaction>
        <StandardVersion>1.000</StandardVersion>
        <SourceApplication>RM</SourceApplication>
        <CompanyId>99</CompanyId>
        <BranchId>01</BranchId>
        <Product name="RM" version="12.1.22.0" />
        <GeneratedOn>2019-01-28T14:01:50</GeneratedOn>
        <DeliveryType>Sync</DeliveryType>
    </MessageInformation>
    <BusinessMessage>
        <BusinessEvent>
            <Entity>PAYMENTCONDITION</Entity>
            <Event>upsert</Event>
        </BusinessEvent>
        <BusinessContent>
            <CompanyId>99</CompanyId>
            <Code>100</Code>
            <InternalId>1|12345</InternalId>
            <Description>ABC</Description>
            <DaysFirstDue>7</DaysFirstDue>
            <QuantityPlots>3</QuantityPlots>
            <RangePlots>30</RangePlots>
            <DaysCondition>1</DaysCondition>
        </BusinessContent>
    </BusinessMessage>
</TOTVSMessage>

Tabla: XX4

Rutina: (CFGA020 - Adapter E.A.I.)


XX4_FILEXE = Sucursal recibidora del Protheus

XX4_UNMESS = '1 - Sí'

XX4_ROTINA = 'MATA360'

XX4_MODEL = PAYMENTCONDITION'

XX4_DESCRI = Usuario selecciona

XX4_SENDER = '1 - Sí'/'2 - No'

XX4_RECEIV = '1 - Sí'

XX4_METODO = '2 - Asincrónico'

XX4_TPOPER = '1 - Todas'

XX4_CHANEL = 3

XX4_SNDVER = ('3.000+') [Más actualizada disparada automáticamente]

XX4_FORMAT = 'XML'

XX4_SAVLOG = '1 - Sí'

XX4_ROUTE: Definida completada o no en la implantación de la integración

 

Restante de los campos de XX4: Vacíos (no obligatorios)


Tabla: XXD

Rutina: (APCFG050 - De//A Empresas Mensaje único)



XXD_REFER = Contenido de la Tag del XML <ProductName> (RM)

XXD_COMPA = Contenido de la Tag del XML <CompanyId>

XXD_BRANCH = Contenido de la Tag del XML <BranchId> [Si estuviera vacía en el XML, el campo queda vacío.]

XXD_EMPPRO = Empresa del Protheus recibidora

XXD_FILPRO = Sucursal en el Protheus recibidor [Dentro de la  empresa]



XXD_REFER = RM

XXD_COMPA = 50

XXD_BRANCH = 50

XXD_EMPPRO = 99

XXD_FILPRO = 01


Los campos obligatorios nativos del registro de condiciones de pago en el Protheus no tienen campos reglados que tienen "InternalId", entonces en el XML de ejemplo no es necesario registrar ningún De/A de Mensaje único.

OBS: El Campo <InternalId> general de la integración generará la propia condición de pago (E4_CODIGO), es el campo con clave principal, sin necesitar De/A de Mensaje único, pues la integración en sí es su creación.


Devolución de la integración con el XML de ejemplo:


XX3_FILIAL = 01

XX3_CODIGO = 0000000000000000000000149

XX3_UUID = V1n1c105-0001-1234-5678-90abcdefghij

XX3_FUNCOD = PAYMENTCONDITION

XX3_FUNDES = TOTVSMessage PAYMENTCONDITION Business Message         

XX3_TRDATA = 28/01/2019   

XX3_TRHORA = 11:01:50

XX3_PRDATA = 19/11/2022

XX3_PRHORA = 20:14:18

XX3_TENTAT = 1

XX3_TRANS (Memo) =

XX3_TPDOC = 1

XX3_STATUS = 2

XX3_TMDATA = 19/11/2022

XX3_TMHORA = 20:14:18

XX3_MSGTYP = 20

XX3_CHANEL = 1

XX3_RETURN (Memo) =

XX3_PRODUC = RM

XX3_SOURCE = RM

XX3_VERSAO = 2.000

XX3_EVENT = upsert


Restante de los campos de XX3: Vacíos.


XXF_REFER

(Referencia*)

XXF_TABLE

(Tabla*)

XXF_ALIAS

(Alias*)

XXF_FIELD

(Campo*)

XXF_UNMESS

(Mensaje único)

XXF_EXTVAL

(Valor externo*)

XXF_INTVAL

(Valor interno*)

RMSE4990SE4E4_CODIGO-1|1234599|01|100
Campo(s) destinoValor atribuido post integración del XML de ejemploTag(s) en el XML que atribuyó(atribuyeron) la información
E4_FILIAL

01

<BranchId>1</BranchId> (De/A de Empresa/Sucursal involucrado)

E4_CODIGO

100

<Code>100</Code>

E4_COND

7,3,30

<DaysFirstDue>7</DaysFirstDue>
<QuantityPlots>3</QuantityPlots>
<RangePlots>30</RangePlots>

E4_DESCRI

'ABC'

<Description>2</Description>

E4_DDD

'L - Fuera el día'

<DaysCondition>2</DaysCondition>

E4_AGRACRS/E4_ACRES/E4_CCORREN/E4_MSBLQL

Estos campos se completan en una integración, sin embargo, pueden no tener relación con esta.

Es estándar del Protheus al incluir cualquier cliente [Iniciador estándar del campo]).

(En el XML ejemplo no se incluyeron Tags para tratamiento de estos campos)

-

   

Campo Tag que llevará su valor/contenido al respectivo campoValores posiblesDónde generalmente está ubicada en el XML¿Necesita de De/A de Mensaje único?
E4_FILIAL<Code></Code> e <InternalId></InternalId>

Conteúdo alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

Não

É a chave principal da integração

E4_CODIGO<Code></Code>Conteúdo alfanumérico<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

Não

É um campo livre (Não contém "InternalId" no nome)

E4_COND

<QuantityPlots></QuantityPlots>         // Quantidade de parcelas;

<RangePlots></RangePlots>                // Intervalo entre as parcelas/dias;

<WeekDayFixed></WeekDayFixed>     // Dia da semana, quando este for fixo;

<DayMonthFixed></DayMonthFixed> // Dia do mês, quando este for fixo;

<DaysCondition></DaysCondition>    // Contagem dos dias para as parcelas;

<DaysFirstDue></DaysFirstDue>         // Dias de carência para a primeira parcela;
 
<WeekDayFixed></WeekDayFixed>    // Dia da semana;

<Plots>
     <Due> 

      <Due>                                              // Parcelas (se E4_TIPO == 8)
            <DueDay></DueDay>             // Dia de vencimento
            <Percentage></Percentage>  // Porcentagem das parcelas

</Plots>

Conteúdo alfanumérico

(Recebe vírgulas mas possui validação
para detecção do tipo de alguma
condição existente)

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

Não

Campo dependente, sem necessidade de De/Para.

E4_DESCRI<Description></Description>Conteúdo alfanumérico<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

Não

É um campo livre (Não contém "InternalId" no nome)

E4_DDD<DaysCondition></DaysCondition>Conteúdo alfanumérico<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

Não

É um campo regrado simples (Não contém "InternalId" no nome)

E4_DIADESC<FinancialDiscountDays></FinancialDiscountDays>Conteúdo numérico<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

Não

Campo dependente, sem necessidade de De/Para.

E4_DESCFIN<PercentageDiscountDays></PercentageDiscountDays>Conteúdo numérico<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

Não

Campo dependente, sem necessidade de De/Para.

E4_ACRSFIN<PercentageIncrease></PercentageIncrease>Conteúdo numérico<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

Não

Campo dependente, sem necessidade de De/Para.

E4_TIPO-

Conteúdo alfanumérico

<TypePaymentCondition> ou é formado

pela combinção única de Tags de parcelas.

Não

Campo dependente, sem necessidade de De/Para.




1 - Integración XML: SELLER (Vendedores) en construcción.

Por estándar los campos obligatorios (Que por este motivo deben tener sus tags en el XML y que utilizaremos como base para ejemplo):

[CAMPO LIBRE] - A3_COD (Campo primario de la integración)

  • <InternalId></InternalId> y  <Code></Code>



[CAMPO LIBRE] - A3_NOME

  • <Name></Name>
  • MATA040: Fuente destino
  • MATI040: Fuente integrador

Tabla: XX4

Rutina: (CFGA020 - Adapter E.A.I.)


XX4_FILEXE = Sucursal recibidora del Protheus

XX4_UNMESS = '1 - Sí'

XX4_ROTINA = 'MATA040'

XX4_MODEL = 'SELLER'

XX4_DESCRI = Usuario selecciona

XX4_SENDER = '1 - Sí'/'2 - No'

XX4_RECEIV = '1 - Sí'

XX4_METODO = '2 - Asincrónico'

XX4_TPOPER = '1 - Todas'

XX4_CHANEL = 3

XX4_SNDVER = ('2.001+') [Más actualizada disparada automáticamente]

XX4_FORMAT = 'XML'

XX4_SAVLOG = '1 - Sí'

XX4_ROUTE: Definida completada o no en la implantación de la integración

 

Restante de los campos de XX4: Vacíos (no obligatorios)


Tabla: XXD

Rutina: (APCFG050 - De/A Empresas Mensaje único)



XXD_REFER = Contenido de la Tag del XML <ProductName> (RM)

XXD_COMPA = Contenido de la Tag del XML <CompanyId>

XXD_BRANCH = Contenido de la Tag del XML <BranchId> [Si estuviera vacía en el XML, el campo queda vacío.]

XXD_EMPPRO = Empresa del Protheus recibidora

XXD_FILPRO = Sucursal en el Protheus recibidor [Dentro de la empresa]



XXD_REFER = RM

XXD_COMPA = 55

XXD_BRANCH = 24

XXD_EMPPRO = 99

XXD_FILPRO = 01


Los campos obligatorios nativos del registro de vendedores en el Protheus no tienen campos reglados que tienen "InternalId", entonces en el XML de ejemplo no es necesario registrar ningún De/A de Mensaje único.

OBS: El Campo <InternalId> general de la integración generará la propia condición de pago (A3_COD), es el campo con clave principal, sin necesitar De/A de Mensaje único, pues la integración en sí es su creación.


Retorno da integração com o XML de Exemplo:


XX3_FILIAL = 01

XX3_CODIGO = 0000000000000000000XX

XX3_UUID = V1n1c105-0002-1234-5678-90abcdefghij

XX3_FUNCOD = SELLER

XX3_FUNDES = TOTVSMessage SELLER Business Message         

XX3_TRDATA = 28/01/2019   XXX

XX3_TRHORA = 11:01:50XXX

XX3_PRDATA = 19/11/2022XXX

XX3_PRHORA = 20:14:18XXX

XX3_TENTAT = 1

XX3_TRANS (Memo) =

XX3_TPDOC = 1

XX3_STATUS = 2

XX3_TMDATA = 19/11/2022XXX

XX3_TMHORA = 20:14:18XXX

XX3_MSGTYP = 20

XX3_CHANEL = 1

XX3_RETURN (Memo) =

XX3_PRODUC = RM

XX3_SOURCE = RM

XX3_VERSAO = 2.001

XX3_EVENT = upsert


Restante de los campos de XX3: Vacíos.


XXF_REFER

(Referencia*)

XXF_TABLE

(Tabla*)

XXF_ALIAS

(Alias*)

XXF_FIELD

(Campo*)

XXF_UNMESS

(Mensaje único)

XXF_EXTVAL

(Valor externo*)

XXF_INTVAL

(Valor interno*)

RMSA3990SA3A3_COD-XXXXXX
Campo(s) destinoValor atribuido post integración del XML de ejemploTag(s) en el XML que atribuyó(atribuyeron) la información
E4_FILIAL

01

<BranchId>1</BranchId> (De/A de Empresa/Sucursal involucrado)

E4_CODIGO

100

<Code>100</Code>

E4_COND

7,3,30

<DaysFirstDue>7</DaysFirstDue>
<QuantityPlots>3</QuantityPlots>
<RangePlots>30</RangePlots>

E4_DESCRI

'ABC'

<Description>2</Description>

E4_DDD

'L - Fuera el día'

<DaysCondition>2</DaysCondition>

E4_AGRACRS/E4_ACRES/E4_CCORREN/E4_MSBLQL

Estos campos se completan en una integración, sin embargo, pueden no tener relación con esta.

Es estándar del Protheus al incluir cualquier cliente [Iniciador estándar del campo]).

(En el XML ejemplo no se incluyeron Tags para tratamiento de estos campos)

-

   

Campo Tag que llevará su valor/contenido al respectivo campoValoresposiblesDónde generalmente está ubicada en el XML¿Necesita de De/A de Mensaje único?

E4_FILIAL

<Code></Code> e <InternalId></InternalId>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Es la clave principal de la integración

E4_CODIGO

<Code></Code>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Es un campo libre (No contiene "InternalId" en el nombre)

E4_COND

<QuantityPlots></QuantityPlots>         // Cantidad de cuotas;

<RangePlots></RangePlots>                // Intervalo entre las cuotas/días;

<WeekDayFixed></WeekDayFixed>     // Día de la semana, si este fuera fijo;

<DayMonthFixed></DayMonthFixed> // Día del mes, si este fuera fijo;

<DaysCondition></DaysCondition>    // Conteo de los días para las cuotas;

<DaysFirstDue></DaysFirstDue>         // Días de carencia para la primera cuota;
 
<WeekDayFixed></WeekDayFixed>    // Día de la semana;

<Plots>
     <Due> 

      <Due>                                              // Cuotas (si E4_TIPO == 8)
            <DueDay></DueDay>             // Día de vencimiento
            <Percentage></Percentage>  // Porcentaje de las cuotas

















</Plots>

Contenido alfanumérico

(Recibe comas pero tiene validación
para detección del tipo de alguna
condición existente)

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo dependiente, sin necesidad de De/A.

E4_DESCRI

<Description></Description>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Es un campo libre (No contiene "InternalId" en el nombre)

E4_DDD

<DaysCondition></DaysCondition>

Contenido alfanumérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Es un campo reglado simple (No contiene "InternalId" en el nombre)

E4_DIADESC

<FinancialDiscountDays></FinancialDiscountDays>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo dependiente, sin necesidad de De/A.

E4_DESCFIN

<PercentageDiscountDays></PercentageDiscountDays>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo dependiente, sin necesidad de De/A.

E4_ACRSFIN

<PercentageIncrease></PercentageIncrease>

Contenido numérico

<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Campo dependiente, sin necesidad de De/A.

E4_TIPO

-

Contenido alfanumérico

<TypePaymentCondition> o está formado

por la combinación única de Tags de cuotas.

No

Campo dependiente, sin necesidad de De/A.





1 - Integración XML: CARRIER (Empresas de transporte) en construcción.

Por estándar los campos obligatorios (Que por este motivo deben tener sus tags en el XML y que utilizaremos como base para ejemplo):

[CAMPO LIBRE] - A4_COD (Campo primario de la integración)

<InternalId></InternalId> y <Code></Code>




[CAMPO LIBRE] - A4_NOME

  • <Name></Name>
  • MATA050: Fonte destino
  • MATI060: Fonte integrador

Tabla: XX4

Rutina: (CFGA020 - Adapter E.A.I.)


XX4_FILEXE = Sucursal recibidora del Protheus

XX4_UNMESS = '1 - Sí'

XX4_ROTINA = 'MATA050'

XX4_MODEL = 'CARRIER'

XX4_DESCRI = Usuario selecciona

XX4_SENDER = '1 - Sí'/'2 - No'

XX4_RECEIV = '1 - Sí'

XX4_METODO = '2 - Asincrónico'

XX4_TPOPER = '1 - Todas'

XX4_CHANEL = 3

XX4_SNDVER = ('1.000+') [Más actualizada disparada automáticamente]

XX4_FORMAT = 'XML'

XX4_SAVLOG = '1 - Sí'

XX4_ROUTE: Definida completada o no en la implantación de la integración

 

Restante de los campos de XX4: Vacíos (no obligatorios)


Tabla: XXD

Rutina: (APCFG050 - De/A Empresas Mensaje único)



XXD_REFER = Contenido de la Tag del XML <ProductName> (RM)

XXD_COMPA = Contenido de la Tag del XML <CompanyId>

XXD_BRANCH = Contenido de la Tag del XML <BranchId> [Si estuviera vacía en el XML, el campo queda vacío.]

XXD_EMPPRO = Empresa del Protheus recibidora

XXD_FILPRO = Sucursal en el Protheus recibidor [Dentro de la empresa]



XXD_REFER = RM

XXD_COMPA = 09

XXD_BRANCH = 08

XXD_EMPPRO = 99

XXD_FILPRO = 01


Los campos obligatorios nativos del registro de empresas de transporte en el Protheus no tienen campos reglados que tienen "InternalId", entonces en el XML de ejemplo no es necesario registrar ningún De/A de Mensaje único.

OBS: El Campo <InternalId> general de la integración generará la propia condición de pago (A4_COD), es el campo con clave principal, sin necesitar De/A de Mensaje único, pues la integración en sí es su creación.


Devolución de la integración con el XML de ejemplo:


XX3_FILIAL = 01

XX3_CODIGO = 0000000000000000000XX

XX3_UUID = V1n1c105-0003-1234-5678-90abcdefghij

XX3_FUNCOD = CARRIER

XX3_FUNDES = TOTVSMessage CARRIER Business Message         

XX3_TRDATA = 28/01/2019   XXX

XX3_TRHORA = 11:01:50XXX

XX3_PRDATA = 19/11/2022XXX

XX3_PRHORA = 20:14:18XXX

XX3_TENTAT = 1

XX3_TRANS (Memo) =

XX3_TPDOC = 1

XX3_STATUS = 2

XX3_TMDATA = 19/11/2022XXX

XX3_TMHORA = 20:14:18XXX

XX3_MSGTYP = 20

XX3_CHANEL = 1

XX3_RETURN (Memo) =

XX3_PRODUC = RM

XX3_SOURCE = RM

XX3_VERSAO = 1.000

XX3_EVENT = upsert


Restante de los campos de XX3: Vacíos.


XXF_REFER

(Referencia*)

XXF_TABLE

(Tabla*)

XXF_ALIAS

(Alias*)

XXF_FIELD

(Campo*)

XXF_UNMESS

(Mensaje único)

XXF_EXTVAL

(Valor externo*)

XXF_INTVAL

(Valor interno*)

RMSA4990SA4A4_COD-XXXXXX
Campo(s) destinoValor atribuido post integración del XML de ejemploTag(s) en el XML que atribuyó(atribuyeron) la información
A4_FILIAL01<BranchId>1</BranchId> (De/A de Empresa/Sucursal involucrado)

  

Campo Tag que llevará su valor/contenido al respectivo campoValores posiblesDónde generalmente está ubicada en el XML¿Necesita de De/A de Mensaje único?
A4_FILIAL





A4_COD<Code></Code> y <InternalId></InternalId>Contenido alfanumérico<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Es la clave principal de la integración




1 - Integración XML: COMMERCIALFAMILY (Categorías de producto) en construcción.

Por estándar los campos obligatorios (Que por este motivo deben tener sus tags en el XML y que utilizaremos como base para ejemplo):

[CAMPO LIBRE] - ACU_COD (Campo primario de la integración)

  • <InternalId></InternalId><Code></Code>



[CAMPO LIBRE] - ACU_DESC

  • <CompleteDescription></CompleteDescription>
  • FATA140: Fuente destino
  • FATI140: Fuente integrador

Tabla: XX4

Rutina: (CFGA020 - Adapter E.A.I.)


XX4_FILEXE = Sucursal recibidora del Protheus

XX4_UNMESS = '1 - Sí'

XX4_ROTINA = 'FATA140'

XX4_MODEL = 'COMMERCIALFAMILY'

XX4_DESCRI = Usuario selecciona

XX4_SENDER = '1 - Sí'/'2 - No'

XX4_RECEIV = '1 - Sí'

XX4_METODO = '2 - Asincrónico'

XX4_TPOPER = '1 - Todas'

XX4_CHANEL = 3

XX4_SNDVER = ('2.000+') [Más actualizada disparada automáticamente]

XX4_FORMAT = 'XML'

XX4_SAVLOG = '1 - Sí'

XX4_ROUTE: Definida completada o no en la implantación de la integración

 

Restante de los campos de XX4: Vacíos (no obligatorios)


Tabla: XXD

Rutina: (APCFG050 - De/A Empresas Mensaje único)



XXD_REFER = Contenido de la Tag del XML <ProductName> (RM)

XXD_COMPA = Contenido de la Tag del XML <CompanyId>

XXD_BRANCH = Contenido de la Tag del XML <BranchId> [Si estuviera vacía en el XML, el campo queda vacío.]

XXD_EMPPRO = Empresa del Protheus recibidora

XXD_FILPRO = Sucursal en el Protheus recibidor [Dentro de la empresa]



XXD_REFER = RM

XXD_COMPA = 20

XXD_BRANCH = 03

XXD_EMPPRO = 99

XXD_FILPRO = 01


Los campos obligatorios nativos del registro de categorías de productos en el Protheus no tienen campos reglados que tienen "InternalId", entonces en el XML de ejemplo no es necesario registrar ningún De/A de Mensaje único.

OBS: El Campo <InternalId> general de la integración generará la propia condición de pago (ACU_COD), es el campo con clave principal, sin necesitar De/A de Mensaje único, pues la integración en sí es su creación.


Devolución de la integración con el XML de ejemplo:


XX3_FILIAL = 01

XX3_CODIGO = 0000000000000000000XX

XX3_UUID = V1n1c105-0004-1234-5678-90abcdefghij

XX3_FUNCOD = COMMERCIALFAMILY

XX3_FUNDES = TOTVSMessage COMMERCIALFAMILY Business Message         

XX3_TRDATA = 28/01/2019   XXX

XX3_TRHORA = 11:01:50XXX

XX3_PRDATA = 19/11/2022XXX

XX3_PRHORA = 20:14:18XXX

XX3_TENTAT = 1

XX3_TRANS (Memo) =

XX3_TPDOC = 1

XX3_STATUS = 2

XX3_TMDATA = 19/11/2022XXX

XX3_TMHORA = 20:14:18XXX

XX3_MSGTYP = 20

XX3_CHANEL = 1

XX3_RETURN (Memo) =

XX3_PRODUC = RM

XX3_SOURCE = RM

XX3_VERSAO = 2.000

XX3_EVENT = upsert


Restante de los campos de XX3: Vacíos.


XXF_REFER

(Referencia*)

XXF_TABLE

(Tabla*)

XXF_ALIAS

(Alias*)

XXF_FIELD

(Campo*)

XXF_UNMESS

(Mensaje único)

XXF_EXTVAL

(Valor externo*)

XXF_INTVAL

(Valor interno*)

RMACU990ACUACU_COD-XXXXXX
Campo(s) destinoValor atribuido post integración del XML de ejemploTag(s) en el XML que atribuyó(atribuyeron) la información
ACU_FILIAL01<BranchId>1</BranchId> (De/A de Empresa/Sucursal involucrado)

   

Campo Tag que llevará su valor/contenido al respectivo campoValores posiblesDónde generalmente está ubicada en el XML¿Necesita de De/A de Mensaje único?
ACU_FILIAL





ACU_COD<Code></Code> y <InternalId></InternalId>Contenido alfanumérico<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Es la clave principal de la integración




Integración XML: PRICELISTHEADERITEM en construcción.

Por estándar los campos obligatorios (Que por este motivo deben tener sus tags en el XML y que utilizaremos como base para ejemplo):

[CAMPO LIBRE] - DA0_CODTAB (Campo primario de la integración)

  • <InternalId></InternalId><Code></Code>



[CAMPO LIBRE] - DA0_DESCRI

 

[CAMPO DEPENDIENTE] - DA0_DATDE

 

[CAMPO DEPENDIENTE] - DA0_HORADE

 

[CAMPO DEPENDIENTE] - DA0_HORATE

 

[CAMPO REGLADO SIMPLE] - DA0_TPHORA

 

[CAMPO REGLADO SIMPLE] - DA0_ATIVO

 

[CAMPO REGLADO] - DA1_CODPRO


  • OMSA010: Fuente destino
  • OMSI010: Fuente integrador

Tabla: XX4

Rutina: (CFGA020 - Adapter E.A.I.)


XX4_FILEXE = Sucursal recibidora del Protheus

XX4_UNMESS = '1 - Sí'

XX4_ROTINA = 'OMSA010'

XX4_MODEL = 'PRICELISTHEADERITEM'

XX4_DESCRI = Usuario selecciona

XX4_SENDER = '1 - Sí'/'2 - No'

XX4_RECEIV = '1 - Sí'

XX4_METODO = '2 - Asincrónico'

XX4_TPOPER = '1 - Todas'

XX4_CHANEL = 3

XX4_SNDVER = ('2.001+') [Más actualizada disparada automáticamente]

XX4_FORMAT = 'XML'

XX4_SAVLOG = '1 - Sí'

XX4_ROUTE: Definida completada o no en la implantación de la integración

 

Restante de los campos de XX4: Vacíos (no obligatorios)


Tabla: XXD

Rutina: (APCFG050 - De/A Empresas Mensaje único)



XXD_REFER = Contenido de la Tag del XML <ProductName> (RM)

XXD_COMPA = Contenido de la Tag del XML <CompanyId>

XXD_BRANCH = Contenido de la Tag del XML <BranchId> [Si estuviera vacía en el XML, el campo queda vacío.]

XXD_EMPPRO = Empresa del Protheus recibidora

XXD_FILPRO = Sucursal en el Protheus recibidor [Dentro de la empresa]



XXD_REFER = RM

XXD_COMPA = 12

XXD_BRANCH = 34

XXD_EMPPRO = 99

XXD_FILPRO = 01



Los campos obligatorios nativos del registro de categorías de productos en el Protheus no tienen campos reglados que tienen "InternalId", entonces en el XML de ejemplo no es necesario registrar ningún De/A de Mensaje único.

  • OBS: El Campo <InternalId> general de la integración generará la propia condición de pago (ACU_COD), es el campo con clave principal, sin necesitar De/A de Mensaje único, pues la integración en sí es su creación.


Devolución de la integración con el XML de ejemplo:


XX3_FILIAL = 01

XX3_CODIGO = 0000000000000000000XX

XX3_UUID = V1n1c105-0005-1234-5678-90abcdefghij

XX3_FUNCOD = PRICELISTHEADERITEM

XX3_FUNDES = TOTVSMessage PRICELISTHEADERITEM Business Message         

XX3_TRDATA = 28/01/2019   XXX

XX3_TRHORA = 11:01:50XXX

XX3_PRDATA = 19/11/2022XXX

XX3_PRHORA = 20:14:18XXX

XX3_TENTAT = 1

XX3_TRANS (Memo) =

XX3_TPDOC = 1

XX3_STATUS = 2

XX3_TMDATA = 19/11/2022XXX

XX3_TMHORA = 20:14:18XXX

XX3_MSGTYP = 20

XX3_CHANEL = 1

XX3_RETURN (Memo) =

XX3_PRODUC = RM

XX3_SOURCE = RM

XX3_VERSAO = 2.001

XX3_EVENT = upsert


Restante de los campos de XX3: Vacíos.


XXX


XXF_REFER

(Referencia*)

XXF_TABLE

(Tabla*)

XXF_ALIAS

(Alias*)

XXF_FIELD

(Campo*)

XXF_UNMESS

(Mensaje único)

XXF_EXTVAL

(Valor externo*)

XXF_INTVAL

(Valor interno*)

RMDA0990DA0DA0_CODPRO-XXXXXX


Campo(s) destinoValor atribuido post integración del XML de ejemploTag(s) en el XML que atribuyó(atribuyeron) la información
DA0_FILIAL01<BranchId>1</BranchId> (De/A de Empresa/Sucursal involucrado)

   

Campo Tag que llevará su valor/contenido al respectivo campoValores posiblesDónde generalmente está ubicada en el XMLNecessita de De/Para de Mensagem Única?
DA0_FILIAL





DA0_CODPRO<Code></Code> e <InternalId></InternalId>Contenido alfanumérico<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

Não

É a chave principal da integração




1 - Integración XML: INVOICE en construcción.


Por estándar los campos obligatorios (Que por este motivo deben tener sus tags en el XML y que utilizaremos como base para ejemplo):

[CAMPO LIBRE] - F2_DOC (Campo primario de la integración)

  • <InternalId></InternalId> e <InvoiceNumber></InvoiceNumber>


F2_FILIAL

F2_SERIE

F2_CLIENTE

F2_LOJA

F2_EMISSAO

F2_COND

F2_DUPL

F2_TIPOCLI

F2_VALBRUT

F2_VALMERC

F2_TIPO

(F2_PREFIXO) 

(F2_HORA)

(F2_RECISS)


D2_FILIAL

D2_ITEM

D2_COD

D2_UM

D2_QUANT

D2_TOTAL

D2_TES

D2_CF

D2_PEDIDO

D2_ITEMPV

D2_CLIENTE

D2_LOJA

D2_LOCAL

D2_DOC

D2_SERIE

D2_EMISSAO

D2_PRUNIT

D2_NUMSEQ

D2_TIPO

  • MATI461: Fuente destino
  • MATA461: Fuente integrador

Tabla: XX4

Rutina: (CFGA020 - Adapter E.A.I.)


XX4_FILEXE = Sucursal recibidora del Protheus

XX4_UNMESS = '1 - Sí'

XX4_ROTINA = 'MATA461'

XX4_MODEL = 'INVOICE'

XX4_DESCRI = Usuario selecciona

XX4_SENDER = '1 - Sí'/'2 - No'

XX4_RECEIV = '1 - Sí'

XX4_METODO = '2 - Asincrónico'

XX4_TPOPER = '1 - Todas'

XX4_CHANEL = 3

XX4_SNDVER = ('4.001+') [Más actualizada disparada automáticamente]

XX4_FORMAT = 'XML'

XX4_SAVLOG = '1 - Sí'

XX4_ROUTE: Definida completada o no en la implantación de la integración

 

Restante de los campos de XX4: Vacíos (no obligatorios)


Tabla: XXD

Rutina: (APCFG050 - De/A Empresas Mensaje único)



XXD_REFER = Contenido de la Tag del XML <ProductName> (RM)

XXD_COMPA = Contenido de la Tag del XML <CompanyId>

XXD_BRANCH = Contenido de la Tag del XML <BranchId> [Si estuviera vacía en el XML, el campo queda vacío.]

XXD_EMPPRO = Empresa del Protheus recibidora

XXD_FILPRO = Sucursal en el Protheus recibidor [Dentro de la empresa]



XXD_REFER = RM

XXD_COMPA = 77

XXD_BRANCH = 77

XXD_EMPPRO = 99

XXD_FILPRO = 01



Los campos obligatorios nativos del registro de categorías de productos en el Protheus no tienen campos reglados que tienen "InternalId", entonces en el XML de ejemplo no es necesario registrar ningún De/A de Mensaje único.

  • OBS: El Campo <InternalId> general de la integración generará la propia condición de pago (ACU_COD), es el campo con clave principal, sin necesitar De/A de Mensaje único, pues la integración en sí es su creación.


Devolución de la integración con el XML de ejemplo:


XX3_FILIAL = 01

XX3_CODIGO = 0000000000000000000XX

XX3_UUID = V1n1c105-0007-1234-5678-90abcdefghij

XX3_FUNCOD = INVOICE

XX3_FUNDES = TOTVSMessage INVOICE Business Message         

XX3_TRDATA = 28/01/2019   XXX

XX3_TRHORA = 11:01:50XXX

XX3_PRDATA = 19/11/2022XXX

XX3_PRHORA = 20:14:18XXX

XX3_TENTAT = 1

XX3_TRANS (Memo) =

XX3_TPDOC = 1

XX3_STATUS = 2

XX3_TMDATA = 19/11/2022XXX

XX3_TMHORA = 20:14:18XXX

XX3_MSGTYP = 20

XX3_CHANEL = 1

XX3_RETURN (Memo) =

XX3_PRODUC = RM

XX3_SOURCE = RM

XX3_VERSAO = 4.001

XX3_EVENT = upsert


Restante de los campos de XX3: Vacíos.


XXF_REFER

(Referencia*)

XXF_TABLE

(Tabla*)

XXF_ALIAS

(Alias*)

XXF_FIELD

(Campo*)

XXF_UNMESS

(Mensaje único)

XXF_EXTVAL

(Valor externo*)

XXF_INTVAL

(Valor interno*)

RMSF2990SF2F2_COD-XXXXXX


Campo(s) destinoValor atribuido post integración del XML de ejemploTag(s) en el XML que atribuyó(atribuyeron) la información
F2_FILIAL01<BranchId>1</BranchId> (De/A de Empresa/Sucursal involucrado)

   

Campo Tag que llevará su valor/contenido al respectivo campoValores posiblesDónde generalmente está ubicada en el XML¿Necesita de De/A de Mensaje único?
F2_FILIAL





F2_COD<Code></Code> y Contenido alfanumérico<TOTVSMessage>
     <BusinessMessage>
           <BusinessContent>

No

Es la clave principal de la integración













4. Caminos, Campos, Tablas y Fuentes

En este menú interactivo existe el camino de las rutinas, todos los campos y tablas involucrados en la integración de facturación en el Protheus recibiendo del RM.



  • Camino hasta el Schedule: Entorno Configurador (SIGACFG) → Entorno → Schedule → Schedule [CFGA010]

  • I. Camino hasta el Adapter: Entorno Configurador (SIGACFG) → Entorno → Schedule → Adapter E.a.i. [CFGA020]

  • II. Camino hasta el De/A Mensaje único: Entorno Configurador (SIGACFG) → Entorno → Schedule → De/A de Mensaje único [ACFG070]

  • III. Camino hasta el De/A de Empresa/Sucursal: Entorno Configurador (SIGACFG) → Entorno → Schedule → Emp.sucursal Mensaje único [ACFG050]


  • "Sucursal (XX4_FILIAL)" = Sucursal de registro del dato

  • "Sucursal ejecución (XX4_FILEXE) = Sucursal recibidora del Protheus

  • "Mensaje único (XX4_UNMESS)" = '1 - Sí'/'2 - No'

  • "Rutina* (XX4_ROTINA)" = Rutina que será el destino de la integración

  • "Mensaje* (XX4_MODEL)" = Mensaje EAI de la integración

  • "Descripción* (XX4_DESCRI) = Usuario selecciona el nombre del registro

  • "Envía (XX4_SENDER)" = '1 - No'/'2 - No'

  • "Recibe (XX4_RECEIV)" = '1 - No'/'2 - No'

  • "Método (XX4_METODO) = '1 - Sincrónico'/'2 - Asincrónico'

  • "Operación (XX4_TPOPER) = '1 - Todas'/'2 - Actualización'/'3 - Borrado''

  • "Canal envío (XX4_CHANEL)" = '1 - ESB'/'2 - EAI - SOAP'/'3 - EAI - PAD. APP.'

  • "Graba log (XX4_SNDVER)" = Versión del adapter (disparada automáticamente al incluir la rutina [XX4_ROTINA])

  • "Formato (XX4_FORMAT)" = 'XML'/'JSON'

  • "Graba log (XX4_SAVLOG)" = '1 - Sí'/'2 - No'




  • "Ruta estándar (XX4_ROUTE)" = Se define completada o no en la implantación de la integración

  • "Condición (XX4_EXPFIL)" = Se define la expresión de filtro para envío

  • "Compl.Recep. (XX4_LOADRE)" = Se define el nombre de la rutina de complemento en la recepción del mensaje

  • "Compl.Envío. (XX4_LOADSE)" = Se define el nombre de la rutina de complemento en el envío del mensaje

  • "XSD (XX4_XSD)" = Se define el camino del archivo XSD de validación del XML

  • "Manejo XML (XX4_CHGXML)" = Se define el modo de manejo XML

  • "Alias (XX4_ALIASP)" = Alias de la tabla que se integrará




  • "Referencia (XXF_REFER)" = Nombre de la aplicación origen

  • "Tabla* (XXF_TABLE)" = Tabla destino en el Protheus + Empresa sucursal recibidora  

  • "Alias* (XXF_ALIAS)" = Tabla destino en el Protheus (ALIAS)

  • "Campo* (XXF_FIELD)" = Campo maestro de la tabla destino en el Protheus

  • "Valor externo (XXF_EXTVAL)" = Contenido de la Tag que se transcribirá en el mensaje EAI origen

  • "Valor interno (XXF_INTVAL)" = Empresa + Sucursal + Registro en el Protheus




  • "Mensaje único (XXF_UNMESS)" = Se define el mensaje único de la integración




  • "Referencia* (XXD_REFER)" = Nombre de la aplicación origen

  • "XXD_COMPA" = Empresa en la aplicación origen


  • "XXD_BRANCH" = Sucursal en la aplicación origen


  • "XXD_EMPPRO" = Empresa del Protheus recibidora


  • "XXD_FILPRO" = Sucursal en el Protheus recibidora [Dentro de la empresa]




  • XX3_FILIAL

  • XX3_CODIGO

  • XX3_UUID

  • XX3_FUNCOD 

  • XX3_FUNDES     

  • XX3_TRDATA       

  • XX3_TRHORA 

  • XX3_PRDATA 

  • XX3_TENTAT

  • XX3_TNDATA

  • XX3_TNHORA 

  • XX3_TRANS (Memo) 

  • XX3_TRAN2 (Memo) 

  • XX3_TPDOC 

  • XX3_TPTRAN

  • XX3_STATUS

  • XX3_TMDATA 

  • XX3_TMHORA

  • XX3_RECPDT 

  • XX3_RECPHR 

  • XX3_RESPDT 

  • XX3_RESPHR 

  • XX3_MSGTYP

  • XX3_CHANEL 

  • XX3_REFER 

  • XX3_URL 

  • XX3_WBSER

  • XX3_RETURN (Memo) 

  • XX3_PROUTE 

  • XX3_SROUTE 

  • XX3_ORUUID 

  • XX3_PRODUC 


  • XX3_SOURCE 

  • XX3_VERSAO 

  • XX3_EVENT 

  • XX3_UUIDLT 

  • XX3_TIPOLT





    • XX3 - Campos del Schedule (Devolución de la integración)

    • I. XX4 - Adapters

    • II. XXF - De/A de Mensajes únicos

    • III. XXD - De/A de Empresas y Sucursales



  • Clientes: CUSTOMERVENDOR

    • (SA1) - Registro de cliente


  • Pedidos de venta: ORDER
      • (SC5) - Encabezado del pedido de venta
      • (SC6) - Ítems del pedido de venta


  • Condiciones de pago: PAYMENTCONDITION
      • (SE4) - Condiciones de pago


  • Reglas de negocio: COMMERCIALFAMILY
      • (ACU) - Categorías de producto


  • Vendedores: SELLER
      • (SA3) - Registro de vendedores


  • Empresas de transporte: CARRIER
      • (SA4) - Registro de empresas de transporte


  • Documentos de salida: INVOICE
      • (SD2) - Ítems de los documentos de salida
      • (SF2) - Encabezados de los documentos de salida


  • Listas de precio: PRICELISTHEADERITEM
      • (DA0) - Encabezados de las listas de precio
      • (DA1) - Ítems de las listas de precio






  • FATI140 (Facturación)
    Categoría de productos


  • FISI010 (Módulo)
    Municipios


  • MATI030 (Facturación)
    Clientes


  • MATI030B (Facturación)
    Clientes - Función de integración para tratar el mensaje CUSTOMERVENDOR donde se recibe el RCPF/RCPJ y se devuelve el RCPF/RCPJ con Código/Tienda/Nombre fantasía/Nombre


  • MATI030O (Facturación)
    Clientes - Función de integración E.A.I. para recibir JSON


  • MATI040 (Facturación)
    Vendedores


  • MATI040O (Facturación)
    Vendedores - Función de integración E.A.I. para recibir JSON


  • MATI050 (Facturación)
    Empresas de transporte


  • MATI070 (Financiero)
    Bancos


  • MATI090 (Financiero)
    Monedas


  • MATI360 (Facturación)
    Condición de pago


  • MATI360O (Facturación)
    Condición de pago - Función de integración E.A.I. para recibir JSON


  • MATI410 (Facturación)
    Pedidos de venta


  • MATI410B (Facturación)
    Trazabilidad de Pedidos de Venta\de Compra con el Objeto Eai(FwObjEai)


  • MATI410BO (Facturación)
    Trazabilidad de Pedidos de Venta\de Compra con el Objeto Eai(FwObjEai) para recibir en JSON


  • MATI410EC1 (Facturación)
    Pedidos de venta - Función de integración para tratar informaciones de Ventas/Pedido Minorista


  • MATI410EC2 (Facturación)
    Pedidos de venta - Función de integración para tratar informaciones de Ventas/Pedido Minorista para recibir en JSON


  • MATI410O (Facturación)
    (Pedidos de venta para recibir en JSON


  • MATI411 (Facturación)
    Realiza la relación de las tablas "SC5 - Encabezado de los pedidos de venta" y "SC6 - Ítems de los pedidos de venta"


  • MATI461 (Facturación)
    Generación del documento de salida


  • MATI461O (Facturación)
    Generación del documento de salida para recibir en JSON


  • MATI490O (Facturación)
    Comisión de ventas


  • OMSI010 (Facturación)
    Lista de precios


  • OMSI010O (Facturación)
    Para recibir lista de precios para recibir en JSON



  • PMSI200

  • PMSI200A

  • PMSI200B

  • PMSI201

  • PMSI201A

  • PMSI203





5. Preguntas más usuales (F.A.Q.)

1 - Cross Segmento - TOTVS Backoffice (Línea Protheus) - SIGAFAT - Tratamiento de integraciones EAI después de la descontinuación del MATA030

2 - MP - FAT - INTEGRACIÓN DE REGISTROS VÍA MENSAJE ÚNICO (EAI)

3 - MP - FAT - Cómo el Protheus crea y graba un Código de cliente en la Integración EAI

4 - Cross Segmento - TOTVS Backoffice (Línea Protheus) - Sigafat - Principales dudas sobre la discontinuidad del mata030


¡No hay KCS de duda sobre esta integración!


No hay KCS de duda sobre esta integración!


¡No hay KCS de duda sobre esta integración!


¡No hay KCS de duda sobre esta integración!


¡No hay KCS de duda sobre esta integración!


¡No hay KCS de duda sobre esta integración!


¡No hay KCS de duda sobre esta integración!








6. Cómo pasar a integrar las rutinas de facturación del RM en el Protheus

1 - Configurar el WS (WebServices) (https://tdn.totvs.com/x/apk4E).

  • Si hubiera dudas en esta etapa, entre en contacto con el equipo Protheus Framework.


2 - Seguir el paso a paso de la rutina que desea incluir en el tópico 3 de esta documentación.





7. HELPS

Mensaje mostrado al intentar manejar un registro en el registro de clientes


Posibles soluciones:

1 - Dejar el campo "Graba log (XX4_SAVLOG)" como "1 - Sí".

Mensaje mostrado cuando integraciones no consiguen visualizar el Adapter "CUSTOMERVENDOR" en el Protheus.

"El Ente 'CUSTOMERVENDOR' no está mapeado para esta Integración."

Posibles soluciones:

1 - Actualizar los fuentes de integración

2 - Revisar las configuraciones del adapter:

  • XX4_UNMESS = "1 - Sí" (Mensaje único)
  • XX4_ROTINA = "MATA030" o "CRMA980" (Rutina)  Funcionan ambas independientemente del valor del parámetro MV_MVCSA1
  • XX4_MODEL = "CUSTOMERVENDOR" (Mensaje*)
  • XX4_SENDER = "1 - Sí" (Envía)
  • XX4_RECEIV = "1 - Sí" (Recibe)
  • XX4_TPOPER = "1 - Todas" (Operación)
  • XX4_CHANEL = "3 - EAI - PAD. APP." (Canal Envío)
  • XX4_SENDER = "2.005+"  |  De esta versión especificada o superior
  • XX4_FORMAT = "XML" (Formato)
  • XX4_SAVLOG = "1 - Sí" (Graba log)

OBS: La versión de Envío debe coincidir entre Protheus y RM. Si fuera necesario, actualice el adapter del RM/Entorno que recibe la integración en el RM. Es necesario que el adapter del lado de la aplicación de integración también esté actualizado.





1 - Cross Segmento - TOTVS Backoffice (Línea Protheus) - SIGAFAT - HELP A410PEDFAT EN LA INTEGRACIÓN EAI VÍA XML



1 - Cross Segmento - TOTVS Backoffice (Línea Protheus) - SIGAFAT - Adapter EAI Integración CRM







8. Parámetros

Los parámetros pueden ser inclusive los mismos como en uso manual del Protheus, sin embargo la integración es una entrada de datos ordenados automáticamente.

OBS: No son parámetros de funcionamiento del sistema y sí los que pueden interferir/impedir la integración del registro.

  • MV_VALCNPJ

  • MV_VALCPF

  • MV_1DUPNAT



  • MV_MOEDTIT

  • MV_NDESCTP









9. Puntos de entrada

Sección que muestra los puntos de entrada de cada Integración específica (Adapter).


MATI410B

MATI410 (.XML)



  • No existen puntos de entrada para Integración de Clientes vía XML.

  • No existen puntos de entrada para Integración de Condiciones de pago vía XML.



  • No existen puntos de entrada para Integración de Categorías de productos vía XML.



  • No existen puntos de entrada para Integración de Vendedores vía XML.



  • No existen puntos de entrada para Integración de Empresas de transporte vía XML.



  • No existen puntos de entrada para Integración de listas de Documentos de salida vía XML.



  • No existen puntos de entrada para Integración de Listas de precio vía XML.






10. ExecAuto()

No existe esquematización de integración en los modelos de ExecAuto(), la integración EAI es un modelo de ejecución automática.




Sugerencias

¿Desea sugerir una implementación diferente o una mejora en esta documentación? ¡Abra un ticket con nosotros, el Equipo de Facturación (SIGAFAT)