Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Agora vamos testar a integração do Local de Estoque (Armazém): Local de Estoque | "WAREHOUSE" (AGRA045)

Vamos agora para o cadastro principal necessário para a integração que é o Cadastro de Produto (MATA010).

O adapter do Cadastro de Produto é o "ITEM" (MATA010). Abaixo temos o exemplo do Json e as Tags mais importantes:

Produto:

Microsiga Protheus®

Ambiente:Gestão de Pessoal (SIGAGPE)

Ocorrência:

Como realizar a integração via Mensagem Única (EAI) Protheus x Quirons?

Passo a passo:
Dica
titleImportante


A integração entre o Protheus e Quirons ocorre para envio/recebimento de dados, como:
- Funcionários
- Centro de Custo
- Abonos
- Funções
- Tipos de Estabilidade
- Afastamentos/Ausências
- Insalubridade e Periculosidade, e etc.

Importante destacar que existem dados que são enviados do Protheus para o Quirons, e outros que são consumidos diretamente pelo Quirons, ou seja, o usuário não fará o envio via Protheus, ele consegue coletar os dados necessários diretamente no Quirons.

As informações enviadas do Protheus para o Quirons, estarão presentes em uma tabela chamada RJP, e os dados integrados (com falha ou sucesso), podem ser consultados na rotina de Monitor de Integração.
Os dados consumidos diretamente pelo Quirons não transitam nesta tabela do Protheus, e consequentemente não conseguimos consultá-los no Monitor de Integração, nestes casos, se houver falha no processo, o usuário consegue consultar o status diretamente no Quirons.

Os dados que são enviados através do Protheus, seja de forma manual via rotina de Carga Inicial OU através do Schedule, são:
• Cadastro de Pessoas, conhecido também por Cadastro de Participantes - tabela RD0
• Cadastro de Funcionários - tabela SRA
• Histórico Funcional/Alterações Salariais - tabela SR7
• Cadastro de Dependentes - tabela SRB
• Histórico Funcional/Transferências - tabela SRE
• Treinamentos - tabela RA4
• Cadastro de Departamentos - tabela SQB
• Cadastro de Cargos - tabela SQ3
• Candidatos/Currículos - tabela SQG

Os dados que são consumidos diretamente por uma rotina no Quirons, são:
• Tipos de Abono - tabela SP6
• Centro de Custo - tabela CTT
• Turno de Trabalho - tabela SR6
• Cadastro de Funções - tabela SRJ
• Tipos de Ausência - tabela RCM
• Tipos de Estabilidade - tabela RCC
• Tipos de Treinamento - tabela RA2
• Insalubridade e Periculosidade - tabelas SRA e RCE
• Estabilidade Funcional - tabelas SRA e SR8
• Marcações - tabela SP8
• Necessidade de Treinamento - tabela RA3
• Afastamentos/Ausências - tabela SR8

 Agora vamos testar a integração da Unidade de Medida: Unidade de Medida | "UNITOFMEASURE" (QIEA030)

Outro cadastro básico necessário para a integração é o do local de estoque (Armazém).

O adapter do Armazém é o "WAREHOUSE" (AGRA045). Abaixo temos o exemplo do Json e as Tags mais importantes:

Deck of Cards
idProtheus x Quirons
Card
label1. Configurando o Rest

A integração entre o Protheus e Quirons acontece através de arquivos JSON, que são movimentados através de um serviço de REST, que precisa estar devidamente configurado e no ar.

(Ajuda: O que é o arquivo JSON?)

Para configuração do serviço REST, pode ser seguida esta documentação: Configuração do serviço REST
Outra opção mais rápida, seria a configuração do serviço REST diretamente no arquivo appserver.ini do seu ambiente. Para isso, pode ser seguido este exemplo de configuração de REST.

Com base no exemplo de REST listado acima, para conferir se ele está ativo e no ar, você deve abrir o seu Appserver do Protheus e deverá aparecer no console os dados do REST.
Após esta conferência, para acessar o seu REST e conferir a lista de APIs disponíveis, é necessário acessar o endereço web com os dados:  localhost: o número da sua porta informada na sessão HTTPREST no appserver.ini /REST. Com base no nosso exemplo, o endereço de acesso ficaria http://localhost:8085/REST. Será pedido o usuário e senha para acesso, você deve informar os dados de acesso usados para login no Protheus e ao acessar, já terá acesso à listagem de APIs disponíveis.

Caso não consiga configurar com a documentação acima, veja o vídeo a seguir: Como configurar o REST

Card
label2. Habilitando os campos de Log de Auditoria

É necessária a criação dos campos de Log de Auditoria chamados _USERLGI e _USERLGA nas tabelas abaixo, para que no momento que o Quirons for fazer o consumo de novos dados ou registros alterados, seja possível que ele valide o que de fato deve ou não ser consumido:
• SP6 - Tipos de Abono
• CTT - Centro de Custo
• SR6 - Turno de Trabalho
• SRJ - Funções
• RCM - Tipos de Ausência
• RCC - Tipos de Estabilidade
• RA2 - Tipos de Treinamento

É possível fazer o processo seguindo a documentação oficial do Framework: https://tdn.totvs.com/display/public/framework/Rotinas+de+Logs+e+Auditoria

Para isso, acesse o Configurador - Base de Dados - Dicionário - Base de Dados - busque pela primeira tabela, neste exemplo, vamos usar a SRJ.
Clique em Editar - no menu à esquerda, escolha a opção Campos e na sequência, clique na opção Campos Reservados e selecione as opções Log de Inclusão e Log de Alteração e confirme os ajustes.

Importante que você esteja em acesso exclusivo no momento da criação dos campos.

Caso não consiga fazer a inclusão dos campos, veja este vídeo: Como incluir os campos de Log de Auditoria

Card
label3. Criação dos Menus

Para que seja possível a integração de dados do Protheus para o Quirons, bem como cadastro de usuário, senha e acesso à rotina de Monitor de Integração que possibilita que o usuário confira se o dado foi ou não integrado corretamente, será necessária a inclusão de três rotinas no menu do SIGAGPE através do Configurador, que são:
• Carga Inicial - GPEM925
• Parâmetros - GPEM926
• Monitor - GPEM924

Para inclusão das rotinas no menu, é necessário acesso em modo exclusivo. Com isso, acesse o Configurador - Ambiente - Cadastro - Menus - selecione o módulo Gestão de Pessoal e Confirme:

Posicione na primeira opção com o nome do módulo SIGAGPE e clique na opção Adicionar para que todos os menus existentes fiquem no painel à direita da nossa tela conforme exemplo:

Os três novos menus podem ser adicionados em qualquer menu que já existe, mas também é possível criar um novo sub menu.
No exemplo abaixo, decidi incluir um novo sub menu dentro do menu Atualizações. Para isso, posiciono no menu Atualizações e clico na opção Novo Grupo.
Inseri como exemplo, o nome Quirons e com isso, o sub menu já fica visível para que consigamos incluir as rotinas.

As rotinas devem ser incluídas com o nome de sua preferência, sendo importante apenas se atentar ao informar o nome do Programa (o fonte da rotina que está sendo incluída), Módulo que será o Gestão de Pessoal e Tipo que será Função Protheus, conforme este exemplo.

Após finalizar as três inclusões, elas deverão aparecer no novo sub menu. Para confirmar os ajustes, basta clicar em Gerar - informar SIGAGPE e Gerar novamente.

Caso não tenha conseguido incluir os menus, veja este vídeo: Incluindo Menus

Card
label4. Parâmetro envolvido na integração

Para habilitar a integração no Protheus, é necessário configurarmos o parâmetro MV_RHNG com conteúdo .T.

Card
label5. Configurando nossa URL para simular o envio do Protheus para Quirons

Como não temos um ambiente Quirons para receber os dados, vamos utilizar a ferramenta Webhook para simular o Quirons, através do endereço https://webhook.site/#!/view

Ao acessar o Webhook, será gerada uma URL única, e ela será usada nos cadastros do Protheus.

No SIGAGPE, vamos acessar a rotina de Parâmetros que criamos no passo 3, e faremos o preenchimento desta forma:
• URI = nossa URL única gerada no Webhook
• Usuário e Senha = você pode informar seu email e qualquer senha, pois como estamos usando o Webhook, estes dados não serão validados efetivamente.

Card
label6. Cadastro do Schedule

A última etapa cadastral, se trata do Schedule da rotina GPEM923, para que os dados enviados através da nossa rotina de Carga Inicial, sejam gravados na tabela RJP, e com isso, o Schedule envie os dados da RJP para o Quirons através do nosso arquivo JSON.

Para cadastrar o Schedule, será necessário acessar o Configurador - Ambiente - Schedule - Schedule.
Devemos inicialmente cadastrar um Agent na opção de mesmo nome, levando em consideração:
• IP = como faremos apenas testes em ambiente interno, podemos informar localhost
• Porta = se trata da nossa porta TCP, contida no arquivo appserver.ini do nosso ambiente

Após o cadastro, nosso Agent deve ficar com status Habilitado para o correto funcionamento.
OBS: cadastre o Agent vinculado ao Grupo de Empresas em que a integração foi toda configurada.

Por fim, vamos cadastrar o Job da rotina GPEM923, que será a responsável pelo envio dos dados da tabela RJP para o Quirons.
• Para isso, vamos na opção Agendamentos e faremos a inclusão com a rotina GPEM923
• Na primeira parte do cadastro, informaremos a recorrência, ou seja, de quanto em quanto tempo queremos que o Job seja executado. Neste exemplo, estamos deixando como Sempre Ativo, ou seja, o Job sempre fará buscas na tabela por qualquer dado novo gravado, para que o envio ao Quirons seja feito em tempo real, porém, o cliente pode definir isso da melhor forma pra ele
• Na segunda parte do cadastro, informaremos os dados do Grupo de Empresa, Filial e Módulo
• Por fim, vamos conferir nosso cadastro para Concluir.

Após o cadastro, o Job aparecerá com status Habilitado.

Caso tenha dificuldade no cadastro de Agent e Job, veja este vídeo: Configuração do Schedule

Card
label7. Integrando dados do Protheus para o Quirons

Com todos os cadastros necessários, estamos prontos para fazer nossa integração funcionar \õ/

No Protheus, vamos acessar a rotina de Carga Inicial e vamos selecionar os dados que queremos integrar para o Quirons.

Após a confirmação de execução da rotina, ao consultar nossa tabela RJP, teremos o dado gravado corretamente, o que significa que podemos conferir o status do envio através da rotina de Monitor de Integração - GPEM924. Para isso, basta buscar o registro que tentamos integrar e clicar em Visualizar.

No Webhook, assim que o Job do Schedule processar o envio, podemos conferir a estrutura do arquivo JSON com os dados integrados.

Caso tenha dúvidas sobre o processo, veja este vídeo: Integrando Protheus x Quirons

Card
label8. Configurando o Postman

O Postman é uma ferramenta de mercado, onde conseguimos simular o envio de arquivos XML/JSON na integração via Mensagem Única (EAI), simulando integrações com o Protheus, ou seja, ao invés de termos que instalar o outro sistema e aprender como fazer o processo nele, usamos o Postman para simular os testes e validações necessárias.

Link para baixar o Postman: https://www.postman.com/downloads/Veja detalhes sobre o uso e a configuração do Postman neste vídeo: 

Cabe ressaltar que usaremos o Postman apenas nos casos onde precisamos simular o consumo de dados no Quirons, por exemplo, se precisamos consumir os dados de um novo Centro de Custo cadastrado OU se precisarmos simular o envio de um Afastamento cadastrado no Quirons para o Protheus..

Dica
titleInformação extra
  • A API RESTful é uma interface que dois sistemas usam para trocar informações de forma segura pela internet.
  • Os Métodos existentes em uma API são como as ações que esta API permite que sejam realizadas através dela:
    • DELETE: Método específico para remoção de dados, ou seja, permite deletar dados através da API;
    • GET: Método para uma requisição que busca dados, ou seja, ele é usado para consultar dados através da API, não altera informações, apenas as carrega;
    • POST: Método para uma requisição que envia dados, ou seja, é usado para inserir informações através da API;
    • PUT: Método para atualização de dados, pode ser utilizado quando se deseja atualizar uma informação já existente. 
Card
label9. Fazendo um GET no Postman para simular o consumo de dados no Quirons

Neste teste, usaremos o Postman para simular o consumo de dados no Quirons, por exemplo: nos casos onde foi cadastrado um novo Centro de Custo no Protheus, o usuário precisa acessar o Quirons, e através dele fazer o consumo deste dado, para que ele também exista no Quirons.
Para isso, usaremos o método GET no Postman e também usaremos esta documentação para sabermos quais parâmetros são chave para que seja feita a requisição dos dados na nossa API.

Simulando o consumo dos dados de um Centro de Custo:
• devemos buscar na documentação os parâmetros que serão usados no nosso GET
• acessar nosso REST, e procurar pela API informada na documentação, neste caso, a de nome payrollcostcenter. Ao localizá-la, clicar na opção For More Details. Aqui, vamos guardar os dados contidos no GET para usarmos na sequência no Postman
• com o Postman aberto, criaremos um novo File e vamos iniciar o preenchimento do nosso GET. Primeiro, vamos informar o endereço do nosso REST + os dados copiados do GET do nosso REST
• agora, vamos preencher os parâmetros conforme nossa documentação, informando manualmente um a um e contendo os dados do código de Filial e Grupo de Empresas. Com isso, poderemos ver que a barrinha do nosso GET ficará com todos estes parâmetros também
• por fim, vamos clicar na opção Body - deixar marcada a opção None e clicar no Send

Protinho, agora conseguimos visualizar o arquivo JSON contendo os dados do Centro de Custo de código 01, de nome Suporte. Seu teste funcionou certinho =D

Se tiver dúvidas, você pode assistir esse vídeo com o processo: Simulação via Postman x Protheus

Vamos chamar aqui de Recebimento as mensagens que são enviadas do Quirons para o Protheus. Precisamos seguir uma sequencia para podermos realizar as integrações:

Para que possamos realizar a integração do Produto e, posteriormente, das requisições e movimentações dele, é preciso termos integrado a Unidade de Medida.

O adapter da Unidade de Medida é o "UNITOFMEASURE" (QIEA030). Abaixo temos o exemplo do Json e as Tags mais importantes:
Card
label04. Testando o Recebimento
Deck of Cards
idRecebimento de Mensagens
Card
label1. Unidade de Medida
Expandir
titleExemplo de Json
Bloco de código
titleUNITOFMEASURE
{
   "Header":{
      "ProductVersion":"12",
      "BranchId":"01",
      "Type":"BusinessMessage",
      "ProductName":"PROTHEUS",
      "BusinessUnit":"",
      "DeliveryType":"sync",
      "Transaction":"UNITOFMEASURE",
      "StandardVersion":"1.000",
      "Version":"2.002",
      "UUID":"99b01fde-72a2-4c27-afbc-fe64e6afe94e",
      "SubType":"event",
      "Enterprise":"",
      "Event":"upsert",
      "CompanyId":"99",
      "GeneratedOn":"2022-04-20T13:27:56Z",
      "SourceApplication":"QUIRONS"
   },
   "Content":{
      "Code":"Q5",
      "ShortName":"UNIDADE M",
      "InternalId":"99|01|Q5",
      "Description":"UNIDADE QUIRONS"
   }
}
Expandir
titlePrincipais Tags
TagDescrição
BranchIdFilial do Protheus
DeliveryTypeTipo de Sincronização da Mensagem
TransactionNome da Mensagem que está enviando
StandardVersionVersão do Adapter que está utilizando
UUIDID único da mensagem 
EventTipo de Evento, sendo que na inclusão de um registro será "upsert"
CompanyIdCódigo da Empresa do Protheus. Ex: "99" ou "01"
GeneratedOnData que será gravada como inclusão do registro
SourceApplicationNome da aplicação a ser gravada no De/Para
CodeCódigo da Unidade de Medida (AH_UNIMED)
ShortNameNome da Unidade de Medida (AH_UMRES)
InternalIdId de identificação do Registro (XXF_EXTVAL)
DescriptionDescrição em Português da Unidad de Medida (AH_DESCPO)
Card
label2. Armazém
Expandir
titleExemplo de Json
Bloco de código
titleWAREHOUSE
{
   "Header":{
      "ProductVersion":"12",
      "BranchId":"01",
      "Type":"BusinessMessage",
      "ProductName":"PROTHEUS",
      "BusinessUnit":"",
      "DeliveryType":"sync",
      "Transaction":"WAREHOUSE",
      "StandardVersion":"1.000",
      "Version":"1.000",
      "UUID":"4848af38-5962-d1c1-faeb-cfad85908058",
      "SubType":"event",
      "Enterprise":"",
      "Event":"upsert",
      "CompanyId":"99",
      "GeneratedOn":"2022-04-20T13:44:20Z",
      "SourceApplication":"QUIRONS"
   },
   "Content":{
      "BranchId":"01",
      "Code":"33",
      "Active":"true",
      "Type":"1",
      "Purpose":1,
      "WarehouseClassification":"3",
      "Event":"upsert",
      "InternalId":"99|01|33",
      "WorkCenterCode":"      ",
      "CompanyId":"99",
      "StandardWarehouse":2,
      "Entity":"WAREHOUSE",
      "CompanyinternalId":"99|01",
      "Description":"QUIRONS"
   }
}
Expandir
titlePrincipais Tags
TagDescrição
BranchIdFilial do Protheus
DeliveryTypeTipo de Sincronização da Mensagem
TransactionNome da Mensagem que está enviando
StandardVersionVersão do Adapter que está utilizando
UUIDID único da mensagem 
EventTipo de Evento, sendo que na inclusão de um registro será "upsert"
CompanyIdCódigo da Empresa do Protheus. Ex: "99" ou "01"
GeneratedOnData que será gravada como inclusão do registro
SourceApplicationNome da aplicação a ser gravada no De/Para
CodeCódigo do Armazém (NNR_CODIGO)
TypeTipo do Armazém (NNR_TIPO)
InternalIdId de identificação do Registro (XXF_EXTVAL)
DescriptionDescrição do Armazém (NNR_DESCRI)
Card
label3. Item (Produto)
Expandir
titleExemplo de Json
Bloco de código
titleITEM
{
   "Header":{
      "BusinessUnit":"",
      "ProductName":"PROTHEUS",
      "Transaction":"ITEM",
      "Version":"4.005",
      "UUID":"989bd96b-e333-0b74-f6da-2ac8d4c7f625",
      "Event":"upsert",
      "CompanyId":"99",
      "GeneratedOn":"2022-04-20T13:49:25Z",
      "BranchId":"01",
      "DeliveryType":"sync",
      "Type":"BusinessMessage",
      "CompanySharingMode":"",
      "BusinessUnitySharingMode":"",
      "StandardVersion":"1.000",
      "BranchSharingMode":"",
      "SubType":"event",
      "Enterprise":"",
      "SourceApplication":"QUIRONS",
      "ProductVersion":"12"
   },
   "Content":{
      "ItemStatus":"2",
      "StandardWarehouseInternalId":"99|01|33",
      "ItemTitle":"                                                                                                    ",
      "ItemWidth":"0",
      "CompanyId":"99",
      "UnitOfMeasureCode":"Q5",
      "Code":"QUIRONS01",
      "FiscalInformation":{
         "CsllAliquot":"0",
         "IrrfIncidence":"false",
         "IssServiceCode":"         ",
         "PisRetaining":"false",
         "CsllRetaining":"false",
         "PisAliquot":"0",
         "CofinsAliquot":"0",
         "TaxSubstitutionCode":"         ",
         "CofinsRetaining":"false",
         "IssAliquot":"0",
         "MunicipalTaxCod":"                    "
      },
      "ItemLenght":"0",
      "EconomicLot":"0",
      "Name":"PRODUTO QUIRONS 01",
      "MinimumLot":"0",
      "ManufacturerCode":"                    ",
      "ItemHeight":"0",
      "NetWeight":"0",
      "Values":{
         "CostPrice":"0",
         "SalesPrice":"0",
         "AverageCostPrice":"0",
         "StandardCostPrice":"0"
      },
      "Brand":"",
      "ShortName":"PRODUTO QUIRONS 01",
      "Active":"1",
      "MultiplicationFactorValue":"0",
      "CompanyinternalId":"99|01",
      "InternalId":"99|01|QUIRONS01",
      "ProductType":"10",
      "GrossWeight":"0",
      "ItemFeaturesTechnical":"",
      "ItemDescription":"",
      "ItemDimensions":"0",
      "BranchId":"01",
      "UnitOfMeasureInternalId":"99|01|Q5",
      "StandardWarehouseDescription":"QUIRONS",
      "TypeUMConversion":[
         {
            "type":"M",
            "Description":"Multiplicador"
         }
      ],
      "StandardWarehouseCode":"33",
      "Trail":"N",
      "BinControl":"False",
      "Origin":""
   }
}
Expandir
titlePrincipais Tags
TagDescriçãoBranchIdFilial do ProtheusDeliveryTypeTipo de Sincronização da MensagemTransactionNome da Mensagem que está enviandoStandardVersionVersão do Adapter que está utilizandoUUIDID único da mensagem EventTipo de Evento, sendo que na inclusão de um registro será "upsert"CompanyIdCódigo da Empresa do Protheus. Ex: "99" ou "01"GeneratedOnData que será gravada como inclusão do registroSourceApplicationNome da aplicação a ser gravada no De/ParaStandardWarehouseInternalIdId externo do Armazém (XXF_EXTVAL) a ser preenchido no Produto (B1_LOCPAD)StandardWarehouseDescriptionDescriação do ArmazémStandardWarehouseCodeCódigo do ArmazémUnitOfMeasureCodeCódigo da Unidadde de MedidaUnitOfMeasureInternalIdId externo da Unidade de Medida (XXF_EXTVAL) a ser preenchida no Produto (B1_UM)CodeCódigo do Produto (B1_COD)Name / ShortNameDescrição do ProdutoInternalIdInternal Id do Produto

Agora vamos testar a integração do Cadastro do Produto: Cadastro do Produto | "ITEM" (MATA010)

Card
label4. Requisição de Armazém

Agora vamos para para nossa primeira movimentação na integração que é a Requisição ao Armazém (MATA105)

O adapter da Requisição é o "REQUEST" (MATA105). Abaixo temos o exemplo do Json e as Tags mais importantes:

Expandir
titleExemplo de Json
Bloco de código
titleREQUEST
{
   "Header":{
      "BranchId":"01",
      "CompanyId":"99",
      "DeliveryType":"Sync",
      "Event":"upsert",
      "GeneratedOn":"2022-04-20T11:37:53Z",
      "ProductName":"PROTHEUS",
      "ProductVersion":"1.0.0",
      "SourceApplication":"QUIRONS",
      "StandardVersion":"1.000",
      "Type":"BusinessMessage",
      "SubType":"event",
      "UUID":"4d5f50b0-b423-11ec-9191-33b31221ae01",
      "BranchSharingMode":"",
      "BusinessUnitySharingMode":"",
      "CompanySharingMode":"",
      "Version":"1.009",
      "Transaction":"REQUEST"
   },
   "Content":{
      "Code":"",
      "InternalId":"4d4cda20-b423-11ec-9191-33b17223ae01",
      "CompanyId":"99",
      "BranchId":"01",
      "Number":"",
      "RegisterDateTime":"2022-04-20T11:37:53Z",
      "CompanyInternalId":"99|01",
      "DeliveryDateTime":"2022-04-20T11:37:53Z",
      "UserRequesterCode":"[email protected]",
      "UserRequesterInternalId":"Estoque",
      "Type":"001",
      "ListOfRequestItem":[
         {
            "Event":"upsert",
            "CostCenterCode":"01",
            "Code":"01",
            "InternalId":"4d1ace18-b423-11ec-b337-d3c1947b8001",
            "DeliveryDateTime":"2022-04-20T11:37:53Z",
            "ItemInternalid":"99|01|QUIRONS01",
            "Quantity":"1",
            "TotalPrice":"1",
            "UnitPrice":"1",
            "UnitOfMeasureInternalId":"99|01|Q5",
            "WarehouseInternalId":"99|01|33",
            "Observation":"Lorem ipsum dolor sit amet"
         },
         {
            "Event":"upsert",
            "CostCenterCode":"02",
            "Code":"02",
            "InternalId":"4d1e28f6-b423-11ec-b337-c18a880fb401",
            "DeliveryDateTime":"2022-04-20T11:37:53Z",
            "ItemInternalid":"99|01|QUIRONS01",
            "Quantity":"1",
            "TotalPrice":"1",
            "UnitPrice":"1",
            "UnitOfMeasureInternalId":"99|01|Q5",
            "WarehouseInternalId":"99|01|33",
            "Observation":"Lorem ipsum dolor sit amet"
         }
      ]
   }
}
Expandir
titlePrincipais Tags
TagDescriçãoBranchIdFilial do ProtheusDeliveryTypeTipo de Sincronização da MensagemTransactionNome da Mensagem que está enviandoStandardVersionVersão do Adapter que está utilizandoUUIDID único da mensagem EventTipo de Evento, sendo que na inclusão de um registro será "upsert"CompanyIdCódigo da Empresa do Protheus. Ex: "99" ou "01"GeneratedOnData que será gravada como inclusão do registroSourceApplicationNome da aplicação a ser gravada no De/ParaContent > InternalIdId externo da Solicitação (XXF_EXTVAL) que fará o De/Para com o campo CP_NUMUserRequesterCodeUsuário que realizou a requisição (CP_SOLICIT)UserRequesterInternalIdId interno do Solicitante, o sistema vai absorver o código do usuário que está acessando o Rest (CP_CODSOLI)CostCenterCodeCódigo do Centro de Custo (CP_CC)CostCenterCode > InternalIdId externo do Centro de Custo (XXF_EXTVAL) que fará o De/Para com o campo CP_CCItemInternalidId externo do Cadastro do Produto (XXF_EXTVAL) que fará o De/Para com o campo CP_PRODUTOUnitOfMeasureInternalIdId externo da Unidade de Medida (XXF_EXTVAL) a ser preenchida na Requisição (CP_UM)WarehouseInternalIdId externo do Armazém (XXF_EXTVAL) a ser preenchido na Requisição (CP_LOCAL)ObservationObservação a ser preenchida no campo CP_OBS

Agora vamos testar a integração da Requisição ao Armazém: Requisição ao Armazém | "REQUEST" (MATA105)

Card
label5. Movimentação Interna

Vamos agora para a nossa próxima movimentação na integração que é a Movimentação Interna (MATA241)

O adapter da Movimentação é o "STOCKTURNOVER" (MATA241). Abaixo temos o exemplo do Json e as Tags mais importantes:

Expandir
titleExemplo de Json
Bloco de código
titleSTOCKTURNOVER
{
   "Header":{
      "ProductVersion":"12",
      "BranchId":"01",
      "Type":"BusinessMessage",
      "ProductName":"PROTHEUS",
      "BusinessUnit":"",
      "DeliveryType":"sync",
      "Transaction":"STOCKTURNOVER",
      "StandardVersion":"1.000",
      "Version":"1.000",
      "UUID":"63f4edf9-2f90-9e14-dc40-a05f25109e03",
      "SubType":"event",
      "Enterprise":"",
      "Event":"upsert",
      "CompanyId":"99",
      "GeneratedOn":"2022-04-20T14:52:06Z",
      "SourceApplication":"QUIRONS"
   },
   "Content":{
      "Number":"",
      "Series":"        ",
      "BranchId":"01",
      "Code":"TESTE00",
      "Type":"S",
      "MovementTypeCode":"599",
      "DocumentType":"R",
      "ListOfStockTurnoverItem":[
         {
            "NumberSeries":"",
            "ItemReferenceCode":"QUIRONS01",
            "UnitPrice":1,
            "LotExpirationDate":"",
            "InternalId":"99|01|TESTE00|107528",
            "ItemInternalId":"99|01|QUIRONS01",
            "UnitOfMeasureCode":"Q5",
            "ProjectInternalId":"",
            "WarehouseCode":"33",
            "RequestItemInternalId":"99|01|PMS119|01|20220420",
            "CostCenterCode":"01",
            "Observation":"",
            "LotOrSerialNumber":"",
            "UnitOfMeasureInternalId":"99|01|Q5",
            "Code":"TESTE00",
            "ItemCode":"QUIRONS01",
            "WarehouseInternalId":"99|01|33",
            "DeliveryDateTime":"2022-04-20",
            "CostCenterInternalId":"4d1ace18-b423-11ec-b337-d3c1947b8001",
            "AccountantAcountInternalId":"",
            "BinLocation":"",
            "TaskInternalId":"",
            "EmissionDate":"2022-04-20",
            "TotalPrice":1,
            "Quantity":1,
            "TotalStock":100
         },
         {
            "NumberSeries":"",
            "ItemReferenceCode":"QUIRONS02",
            "UnitPrice":1,
            "LotExpirationDate":"",
            "InternalId":"99|01|TESTE00|107529",
            "ItemInternalId":"99|01|QUIRONS02",
            "UnitOfMeasureCode":"M2",
            "ProjectInternalId":"",
            "WarehouseCode":"38",
            "RequestItemInternalId":"99|01|PMS119|02|20220420",
            "CostCenterCode":"02",
            "Observation":"",
            "LotOrSerialNumber":"",
            "UnitOfMeasureInternalId":"99|01|M2",
            "Code":"TESTE00",
            "ItemCode":"QUIRONS02",
            "WarehouseInternalId":"99|01|38",
            "DeliveryDateTime":"2022-04-20",
            "CostCenterInternalId":"99|01|02",
            "AccountantAcountInternalId":"",
            "BinLocation":"",
            "TaskInternalId":"",
            "EmissionDate":"2022-04-20",
            "TotalPrice":1,
            "Quantity":1,
            "TotalStock":100
         }
      ],
      "DeliveryDateTime":"2022-04-20",
      "InternalId":"99|01|TESTE00|107528",
      "CompanyId":"99",
      "RegisterDateTime":"2022-04-20",
      "CompanyInternalId":"99|01",
      "AbatementDateTime":"2022-04-20"
   }
}
Expandir
titlePrincipais Tags
TagDescriçãoBranchIdFilial do ProtheusDeliveryTypeTipo de Sincronização da MensagemTransactionNome da Mensagem que está enviandoStandardVersionVersão do Adapter que está utilizandoUUIDID único da mensagem EventTipo de Evento, sendo que na inclusão de um registro será "upsert"CompanyIdCódigo da Empresa do Protheus. Ex: "99" ou "01"GeneratedOnData que será gravada como inclusão do registroSourceApplicationNome da aplicação a ser gravada no De/ParaCostCenterCodeCódigo do Centro de Custo (D3_CC)CostCenterInternalIdId externo do Centro de Custo (XXF_EXTVAL) que fará o De/Para com o campo D3_CCItemInternalidId externo do Cadastro do Produto (XXF_EXTVAL) que fará o De/Para com o campo D3_CODUnitOfMeasureInternalIdId externo da Unidade de Medida (XXF_EXTVAL) a ser preenchida na Movimentação (D3_UM)WarehouseInternalIdId externo do Armazém (XXF_EXTVAL) a ser preenchido na Movimentação (D3_LOCAL)

Agora vamos testar a integração da Movimentação Interna: Movimentação Interna | "STOCKTURNOVER" (MATA241)

Card
label6. Saldo Atual

Vamos agora para a rotina de Saldo Atual (MATA225)

O adapter da Movimentação é o "STOCKLEVEL" (MATA225). Abaixo temos o exemplo do Json e as Tags mais importantes:

Expandir
titleExemplo de Json
Bloco de código
titleSTOCKLEVEL
{
   "Header":{
      "ProductVersion":"12",
      "BranchId":"01",
      "Type":"BusinessMessage",
      "ProductName":"PROTHEUS",
      "BusinessUnit":"",
      "DeliveryType":"sync",
      "Transaction":"STOCKLEVEL",
      "StandardVersion":"1.000",
      "Version":"3.004",
      "UUID":"48997d98-0480-0109-f17e-1fc7d8c844b0",
      "SubType":"event",
      "Enterprise":"",
      "Event":"upsert",
      "CompanyId":"99",
      "GeneratedOn":"2022-04-20T14:35:21Z",
      "SourceApplication":"QUIRONS"
   },
   "Content":{
      "BranchId":"01",
      "Active":"true",
      "ListOfReturnItem":[
         {
            "CurrentStockAmount":"98",
            "ReserveSource":" ",
            "FutureStockAmount":"0",
            "ValueOfCurrentStockAmount":"98",
            "ListOfAddressStock":{
               
            },
            "CompanyId":"99",
            "ItemInternalId":"99|01|QUIRONS01",
            "AvailableStockAmount":"98",
            "BookedStockAmount":"0",
            "Amountcommittedstock":"0",
            "UnitItemCost":"1",
            "UnitOfMeasureInternalId":"99|01|Q5",
            "BranchId":"01",
            "TransitStockAmount":"0",
            "CompanyInternalId":"99|01",
            "AverageUnitItemCost":"98",
            "SalesOrderQuantity":"0",
            "ListOfWarehouseStock":[
               {
                  "WarehouseInternalId":"99|01|33",
                  "CurrentStockAmount":"98",
                  "TransitStockAmount":"0",
                  "FutureStockAmount":"0",
                  "UnitItemCost":"1",
                  "ValueOfCurrentStockAmount":"98",
                  "AvailableStockAmount":"98",
                  "BookedStockAmount":"0",
                  "AverageUnitItemCost":"98",
                  "SalesOrderQuantity":"0",
                  "Amountcommittedstock":"0"
               }
            ],
            "ListOfLotStock":{
               
            },
            "ListOfSeriesStock":{
               
            }
         }
      ],
      "Event":"upsert",
      "CompanyId":"99",
      "CompanyinternalId":"99|01",
      "Entity":"StockLevel"
   }
}
Expandir
titlePrincipais Tags
TagDescriçãoBranchIdFilial do ProtheusDeliveryTypeTipo de Sincronização da MensagemTransactionNome da Mensagem que está enviandoStandardVersionVersão do Adapter que está utilizandoUUIDID único da mensagem EventTipo de Evento, sendo que na inclusão de um registro será "upsert"CompanyIdCódigo da Empresa do Protheus. Ex: "99" ou "01"GeneratedOnData que será gravada como inclusão do registroSourceApplicationNome da aplicação a ser gravada no De/ParaCurrentStockAmountB2_QATUFutureStockAmountB2_QACLASSValueOfCurrentStockAmountB2_VATU1ListOfAddressStockLista dos endereços dos produtos (Caso utilize Endereçamento)AvailableStockAmountEstoque DisponívelBookedStockAmountB2_RESERVAAmountcommittedstockB2_QEMPUnitItemCostB2_CM1AverageUnitItemCostB2_VATU1SalesOrderQuantityB2_QPEDVEN
10. Monitor de Integração

Existe a rotina de Monitor de Integração (GPEM924), que possibilita o usuário visualizar os registros que foram integrados com sucesso ou não, e registros pendentes de envio quando o Schedule ainda não foi executado.

A rotina possui legenda para os registros, mas caso queira consultar com mais exatidão, basta dar um Visualizar para conseguir verificar: data/hora de envio, quais registros foram enviados e o status.

É possível ter um histórico das tentativas de integração de um mesmo registro, para isso, é necessário que o parâmetro MV_HISTQUI esteja com conteúdo:
→ 1 para gravar apenas falhas
→ 2 para gravar tudo
→ 0 para nunca gravar

Este parâmetro não é de uso obrigatório, mas caso esteja com conteúdo1 ou 2, os registros serão gravados na tabela RU7.

Pode lhe Interessar:Pode lhe Interessar:
  • Integração | Protheus x Quírons
  • Envio Ativo para Produtos com Estoque Alterado Desde o Último Envio
  • Como agendar a execução de rotinas
  • EAI Protheus