Árvore de páginas

Versões comparadas

Chave

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

Pré-Requisitos:

 Para implantar a integração do envio de reservas do o Mozart no processo de integrações assícronas de Gemco para o Protheus é necessário que as seguintes configurações estejam instaladas corretamente.

  • Configuração Base Banco de Dados Gemco
  • Configuração Adapter Reserva
  • Configuração Mozart
  • Instalado
  • Sistema operacional devidamente configuradoConfiguração Protheus (Adapter e Schedule) 

1 - Detalhes técnico no Gemco                  

  1.1 Configurações de Banco

...

Para implantação do Mozart é necessário a instalação das seguintes tabelas de dados:

Image Added criar a tabela MOZART_PEDVENDA Image Removed

Script :

/****** Object: Table [dbo].[MOZART_PEDVENDA] Script Date: 17/08/2018 14:53:57 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[MOZART_PEDVENDA](
[CODFIL] [numeric](3, 0) NOT NULL,
[TIPOPED] [numeric](1, 0) NOT NULL,
[NUMPEDVEN] [numeric](12, 0) NOT NULL,
[DTHR] [datetime] NULL,
[RESERVA] [numeric](1, 0) NULL,
[RECEBIMENTO] [numeric](1, 0) NULL,
CONSTRAINT [MOZART_PEDVENDA_PK] PRIMARY KEY NONCLUSTERED
(
[CODFIL] ASC,
[TIPOPED] ASC,
[NUMPEDVEN] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

A seguir é necessário criar Triggers nas seguintes tabelas do Gemco MOV_PEDIDO e MOV_ITPED essas triggers são responsáveis em salvar, atualizar e deletar os dados do pedido na tabela MOZART_PEDVENDA.

Image Removed Image Removed

Scripts.:

/****** Object: Trigger [dbo].[MOZART_PEDVENDA_TR_INS] Script Date: 17/08/2018 18:03:52 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

...

IF (SELECT COUNT(1) FROM CAD_TPNOTA (NOLOCK) WHERE TPNOTA = @TPNOTA AND TIPO = 'S' AND (TPREM = 'L' OR TPREM = 'D' OR TPREM = 'G') AND (TPDEST = 'L' OR TPDEST = 'D' OR TPDEST = 'G')) > 0 AND @TIPOPED = 2
BEGIN
IF @STATUSNOVO < 5 AND @RESERVA IS NULL --CRIACAO PEDIDO
INSERT INTO MOZART_PEDVENDA (CODFIL, TIPOPED, NUMPEDVEN, DTHR, RESERVA, RECEBIMENTO)
SELECT CODFIL, TIPOPED, NUMPEDVEN, GETDATE(), 0, NULL FROM INSERTED
END

GO

/****** Object: Trigger [dbo].[MOZART_PEDVENDA_TR_UPD] Script Date: 17/08/2018 18:04:37 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

...

Os scripts das tabelas podem ser encontrados no endereço : http://tfs.bematech.com.br:8080/tfs/spo/Varejo/Gemco/

Seguindo o processo de implantação, os próximos passos de configurações devem ser executados no banco de dados.

Obs.: No momento não é possível configurar o Mozart via interface, apenas via querys no banco de dados. segue abaixo scripts e orderm de execução.

MzOperacao, nesta tabela é necessário informar os campos : Id e Descricao

SET IDENTITY_INSERT [dbo].[MzOperacao] ON 

INSERT [dbo].[MzOperacao] ([Id], [Descricao], [Request], [RequestCallback], [IdCallback]) VALUES(3101, N'GEMCO PARA PROTHEUS - PEDIDO DE VENDA - RESERVAR VENDA', NULL, NULL, NULL)

SET IDENTITY_INSERT [dbo].[MzOperacao] OFF

Nesta tabela é criado o código da operação (coluna Id) que identificará está integração de "GEMCO PARA PROTHEUS - PEDIDO DE VENDA - RESERVAR VENDA" no Mozart. 

Obs.: Adicione sempre Id sequencial, neste caso foi adicionado o id 3101.

         MzCliente, nesta tabela é necessário informar os campos : Id e Descricao        

SET IDENTITY_INSERT [dbo].[MzCliente] ON
INSERT [dbo].[MzCliente] ([Id], [Descricao], [Referencia]) VALUES (1, N'GEMCO', NULL)
INSERT [dbo].[MzCliente] ([Id], [Descricao], [Referencia]) VALUES (8, N'PROTHEUS', NULL)
SET IDENTITY_INSERT [dbo].[MzCliente] OFF

         Nesta tabela deve ser informado os Nomes e Id dos sistemas que serão integrados. Neste caso, Gemco e Protheus.

Obs.: Adicione sempre Id sequencial.

.       MzOperacaoCliente. Informe : Id, IdOperacao e IdCliente

SET IDENTITY_INSERT [dbo].[MzOperacaoCliente] ON
INSERT [dbo].[MzOperacaoCliente] ([Id], [IdOperacao], [IdCliente], [Request], [RequestCallback]) VALUES (20, 3101, 8, NULL, NULL)

SET IDENTITY_INSERT [dbo].[MzOperacaoCliente] OFF

         Está tabela tem o relacionamento com as tabelas MzOperacao e MzOperacaoCliente.

Obs.: Adicione sempre Id sequencial.

         MzTransacao, nesta tabela é necessário informar Id e Nome.

SET IDENTITY_INSERT [dbo].[MzTransacao] ON
INSERT [dbo].[MzTransacao] ([Id], [Nome]) VALUES (4, N'ITEMRESERVE')

SET IDENTITY_INSERT [dbo].[MzTransacao] OFF

Informe um Id sequencial e o nome da mensagem.

Obs.: O globalization culture deve seguir uma escolha do começo ao fim da configuração. Por exemplo: Ao configurar usando o Nome ITEMRESERVE esse mesmo nome é uma chave de indentificação na transação. A integração não funcionará caso encontre algum nome como RESERVA

        MzAplicacaoEvento, nesta tabela é necessário informar Id, IdAplicacao, evento, IdOperacao e IdTransacao.

         SET IDENTITY_INSERT [dbo].[MzAplicacaoEvento] ON
         INSERT [dbo].[MzAplicacaoEvento] ([Id], [IdAplicacao], [Evento], [TipoIntegracao], [IdOperacao], [IdTransacao]) VALUES (36, 8, N'UPSERT', NULL, 3101, 4)

         MzAssinatura, nesta tabela é necessário informar Id, IdAplicacaoEvento, IdCliente, Tenant e IdOperacao.  

          SET IDENTITY_INSERT [dbo].[MzAssinatura] ON
          INSERT [dbo].[MzAssinatura] ([Id], [IdAplicacaoEvento], [IdAplicacaoAssinante], [IdCliente], [Tenant], [IdOperacao]) VALUES (29, 36, 8, 8, N'T3', NULL)

                   MzAssinaturaPasso, nesta table é necessário informar os seguintes campos : Id, IdAssinatura, Ordem e Request.

          SET IDENTITY_INSERT [dbo].[MzAssinaturaPasso] ON
          INSERT [dbo].[MzAssinaturaPasso] ([Id], [IdAssinatura], [Ordem], [Request]) VALUES (69, 29, 1, N'{"AwaitCallback": true, "Url": "http://10.171.67.163:8175/EAISERVICE.apw", "Method": "POST","TimeoutEmSegundos": 30, "Headers": {                  "Content-Type": "text/xml", "SOAPAction" : "http://www.totvs.com/RECEIVEMESSAGE" }}')

          O insert acima é necessário quando temos uma integração onde o evento parte do Gemco para o Protheus. na coluna request sempre deve ser informado em "AwaitCallback": true quando aguardamos o EAI Totvs processar uma mensagem recebida.  No insert abaixo é inserido o passo que recebe o processamento do EAI Totvs.

          INSERT [dbo].[MzAssinaturaPasso] ([Id], [IdAssinatura], [Ordem], [Request]) VALUES (70, 29, 2, N'{"Adapter": false, "Url": "http://localhost:84/Reserva/api/gemco/Reserva/ToUpsertBusinessMessageResponse", "Method": "POST", "Headers": { "Content-Type": "application/json" } }')

1.2 Configurações de ambiente

      O ambiente que será executado o Mozart EAI deve ser instalado o plugin .Net Core 2.0.

      O download do plugin pode ser feito no seguinte site : https://www.microsoft.com/net/download/dotnet-core/2.0

      Obs.: Instale a versão Runtime 2.0.0.

      No ambiente windows o iis deve está instalado e devidamente configurado apartir da versão 6

     Image Added

   Após todas essa configurações, o Mozart EAI pode ser publicado no IIS normalmente.

      Image Added

Obs.: Para mais detalhes de configuração e publicação de aplicativos web no IIS, acesse o link : https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.1&tabs=aspnetcore2x

Depois de finalizadas as configurações, o Mozart EAI pode ser iniciado no IIS de acordo com a rota(ip) cadastrado. Ex.:     Image Added

Para submeter uma mensagem de ITEMRESERVE do gemco para o Mozart EAI. Envie um Post com o seguinte mapeamento :

Image Added  ___________________________________________________________________________________________________________________________________

Image Added__________________________________________________________________________________________________________________________________

Image Added___________________________________________________________________________________________________________________________________Image Added___________________________________________________________________________________________________________________________________      Image Added

___________________________________________________________________________________________________________________________________   

Image Added

___________________________________________________________________________________________________________________________________   

Image Added

No Mozart para concluir um processo de configuração é preciso configurar o arquivo "configuracao.json", como mostra a imagem abaixo.

Image Added

Caso esse processo de Reserva(ItemReserve) seja enviado pelo Gemco é preciso configurar o parametro "Temporizadores"  com as seguintes informações

Image Added

Como mostra as imagens acima, foi configurado no Mozart o endpoint da api de reserva que será chamada pelo Mozart de acordo com o time configurado em "Frequencia".

IF (SELECT COUNT(1) FROM CAD_TPNOTA (NOLOCK) WHERE TPNOTA = @TPNOTA AND FLVENDA = 'S') > 0 AND @TIPOPED = 0
BEGIN
IF @STATUSNOVO < 5 AND @RESERVA IS NULL --CRIACAO PEDIDO
INSERT INTO MOZART_PEDVENDA (CODFIL, TIPOPED, NUMPEDVEN, DTHR, RESERVA, RECEBIMENTO)
SELECT CODFIL, TIPOPED, NUMPEDVEN, GETDATE(), 0, NULL FROM INSERTED
ELSE
IF (@STATUSNOVO IN(5,4) AND @RECEBIMENTO IS NULL) --PASSOU CAIXA
UPDATE MOZART_PEDVENDA
SET RECEBIMENTO = 0, DTHR = GETDATE()
FROM MOV_PEDIDO AS A
INNER JOIN INSERTED AS B ON A.CODFIL = B.CODFIL AND A.TIPOPED = B.TIPOPED AND A.NUMPEDVEN = B.NUMPEDVEN
INNER JOIN MOZART_PEDVENDA AS C WITH(NOLOCK) ON A.CODFIL = C.CODFIL AND A.TIPOPED = C.TIPOPED AND A.NUMPEDVEN = C.NUMPEDVEN
ELSE IF (@STATUSNOVO = 9 AND (@RECEBIMENTO = 0 OR @RECEBIMENTO IS NULL) AND @STATUSANTIGO = 3 ) -- CANCELAMENTO ANTES DE PASSAR PELO CAIXA
UPDATE MOZART_PEDVENDA
SET RESERVA = 0
FROM MOV_PEDIDO AS A
INNER JOIN INSERTED AS B ON A.CODFIL = B.CODFIL AND A.TIPOPED = B.TIPOPED AND A.NUMPEDVEN = B.NUMPEDVEN
INNER JOIN MOZART_PEDVENDA AS C WITH(NOLOCK) ON A.CODFIL = C.CODFIL AND A.TIPOPED = C.TIPOPED AND A.NUMPEDVEN = C.NUMPEDVEN
END

GO

/****** Object: Trigger [dbo].[MOZART_PEDVENDA_IT_TR_INS_UPD] Script Date: 17/08/2018 18:01:58 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TRIGGER [dbo].[MOZART_PEDVENDA_IT_TR_INS_UPD] ON [dbo].[MOV_ITPED]
FOR INSERT, UPDATE
AS
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET NOCOUNT ON;

...

IF (SELECT COUNT(1) FROM CAD_TPNOTA (NOLOCK) WHERE TPNOTA = @TPNOTA AND FLVENDA = 'S') > 0 AND @TIPOPED = 0
BEGIN
IF @RESERVA = 2 AND @RECEBIMENTO IS NULL AND ((UPDATE(STATUS) AND @STATUSNOVO = 9) OR UPDATE(FILORIG))
UPDATE MOZART_PEDVENDA
SET RESERVA = 0
FROM INSERTED AS A
INNER JOIN MOZART_PEDVENDA AS B WITH(NOLOCK) ON A.CODFIL = B.CODFIL AND A.TIPOPED = B.TIPOPED AND A.NUMPEDVEN = B.NUMPEDVEN
WHERE A.STATUS <= 4;
END

...

GO

/****** Object: Trigger [dbo].[MOZART_PEDVENDA_IT_TR_DEL] Script Date: 17/08/2018 18:02:39 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

...

IF (SELECT COUNT(1) FROM CAD_TPNOTA (NOLOCK) WHERE TPNOTA = @TPNOTA AND FLVENDA = 'S') > 0 AND @TIPOPED = 0
BEGIN
IF @RESERVA = 2 AND @RECEBIMENTO IS NULL
UPDATE MOZART_PEDVENDA
SET RESERVA = 0
FROM deleted AS A
INNER JOIN MOZART_PEDVENDA AS B WITH(NOLOCK) ON A.CODFIL = B.CODFIL AND A.TIPOPED = B.TIPOPED AND A.NUMPEDVEN = B.NUMPEDVEN
WHERE A.STATUS <= 4;
END
ELSE IF (SELECT COUNT(1) FROM CAD_TPNOTA (NOLOCK) WHERE TPNOTA = @TPNOTA AND TIPO = 'S' AND (TPREM = 'L' OR TPREM = 'D' OR TPREM = 'G') AND (TPDEST = 'L' OR TPDEST = 'D' OR TPDEST = 'G')) > 0 AND @TIPOPED = 2
BEGIN
IF @RESERVA = 2 AND (@RECEBIMENTO IS NULL OR @RECEBIMENTO = 0)
UPDATE MOZART_PEDVENDA
SET RESERVA = 0
FROM deleted AS A
INNER JOIN MOZART_PEDVENDA AS B WITH(NOLOCK) ON A.CODFIL = B.CODFIL AND A.TIPOPED = B.TIPOPED AND A.NUMPEDVEN = B.NUMPEDVEN
WHERE A.STATUS <= 4;
END

GO

Deve ser criado também uma tabela de De/Para chamada MSGPDR_PEDIDORESERVA_DEPARA no banco do Gemco, essa tabela será responsável em armazernar os internalId dos dois sitemas 

exemplo:

Image Removed

Script.: 

/****** Object: Table [dbo].[MSGPDR_PEDIDORESERVA_DEPARA] Script Date: 17/08/2018 19:12:39 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[MSGPDR_PEDIDORESERVA_DEPARA](
[SISTEMA_INT] [varchar](30) NOT NULL,
[COD_INT] [varchar](50) NOT NULL,
[CODFIL] [numeric](5, 0) NOT NULL,
[NUMPEDVEN] [numeric](9, 0) NOT NULL,
[TIPOPED] [numeric](5, 0) NOT NULL,
[DATA_INT] [datetime] NOT NULL
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[MSGPDR_PEDIDORESERVA_DEPARA] ADD DEFAULT (getdate()) FOR [DATA_INT]
GO

1.2 Adapter Reserva 

O Adapter de Reserva deve ser instalado para enviar os dados ao Mozart, e o mesmo enviar ao EAI Totvs.

O Adapter Reserva é uma Web Api, tecnologia rest que utiliza .Net Core 2.0, ela será responsável em consultar a tabela Mozart_PedVenda para verificar se existem pedidos de venda válidos para serem reservados no Protheus.

Atraves da coluna PublicacaoMozart na Tabela Mozart_PedVenda quando a trigger inseri um novo numero de pedido de venda, por default está coluna recebe o status 0, quando o Adapter Reserva inicia o processamento ele atualiza o status da PublicacaoMozart para 1, ao termino do processo de gerar uma mensagem padronizada de ItemReserve e envia lo ao Mozart, o status da coluna PublicacaoMozart é atualizado para 2. 

Caso o mesmo pedido sofra alguma alteração no gemco a coluna PublicacaoMozart será atualizada para 0 novamente para ser enviado ao Protheus uma atualização da reserva anterior. Se o pedido for excluido no Gemco, também será gerado uma mensagem de ItemReserve com status de cancelamento.

A imagem abaixo mostra a api já publicada no iis e em funcionamento.

Image Removed

No Adapter Reserva há dois métodos :

 O método BuscarTodosIntegraçãoMozart que será configurado no Timer do Mozart para ser chamado para buscar no banco do Gemco pedidos de venda válidos para serem reservados suas mercadorias via Protheus.Image Removed

 Há também o método ToUpsertBusinessMessageResponse responsável em receber o retorno de um envio de uma reserva, salva o id do Protheus no de/para e informa a mensagem do resultado da integração.Image Removed

Exemplo de uma mensagem padronizada de ItemReserve gerado pelo Adapter Reserva :

<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tot="http://www.totvs.com"><soapenv:Header /><soapenv:Body><tot:RECEIVEMESSAGE><tot:INMSG><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<TOTVSMessage>
<MessageInformation version="1.000">
<UUID>5a5a36ee-0558-42a7-9f61-893d65287810</UUID>
<Type>BusinessMessage</Type>
<Transaction>ItemReserve</Transaction>
<StandardVersion>1.000</StandardVersion>
<SourceApplication>GEMCO</SourceApplication>
<CompanyId>40</CompanyId>
<BranchId>1</BranchId>
<Product name="GEMCO" version="1.000" />
<GeneratedOn>2018-08-17T17:04:04</GeneratedOn>
<DeliveryType>Async</DeliveryType>
</MessageInformation>
<BusinessMessage>
<BusinessEvent>
<Entity>ItemReserve</Entity>
<Event>Upsert</Event>
<Identification name="" />
</BusinessEvent>
<BusinessContent>
<CompanyId>40</CompanyId>
<BranchId>1</BranchId>
<InternalId>40|1|0|600</InternalId>
<CompanyInternalId>40|1</CompanyInternalId>
<ReserveType>LJ</ReserveType>
<DocumentReserve>600</DocumentReserve>
<Requester>Gemco</Requester>
<RequestBranch>1</RequestBranch>
<ReserveItemType>
<Item>
<ItemCode>8718</ItemCode>
<ItemInternalId>8718</ItemInternalId>
<WarehouseCode>01</WarehouseCode>
<WarehouseInternalId>01</WarehouseInternalId>
<Quantity>12.000000000</Quantity>
<ReserveExpiration>2018-08-18T17:04:04</ReserveExpiration>
<IssueDateReserve>2018-08-17T17:04:04</IssueDateReserve>
<SubLotNumber />
<SeriesItem />
<AddressingItem />
<NoteReserveItem>VENDEDOR 05</NoteReserveItem>
<ReserveBranch>1</ReserveBranch>
<IsCanceled>F</IsCanceled>
</Item>
</ReserveItemType>
</BusinessContent>
</BusinessMessage>
</TOTVSMessage>]]></tot:INMSG></tot:RECEIVEMESSAGE></soapenv:Body></soapenv:Envelope>

1.3 Configurações no Mozart 

Os seguintes procedimento deve ser configurados no Mozart :

Em sua pasta de publicação existe um arquivo chamado Configuracao.json neste arquivo deve ser executados os trecho de configuração abaix

{

"Id": "GEMCO PARA PROTHEUS - PEDIDO VENDA - RESERVAR VENDA",
"IdOperacao": 3134,
"Frequencia": 20000,
"QuantidadeRegistrosEnfileirar": 5,
"LimiteReprocessamento": 3,
"TimeoutEmSegundos": 190,
"Coletores": [
{
"Id": "Reciclagem: Processando - Aguard. Proc.",
"FrequenciaEmMilissegundos": 30000,
"TempoOciosoEmSegundos": 120,
"StatusOrigem": 2,
"StatusDestino": 1
},
{
"Id": "Reciclagem: Reprocessar - Aguard. Proc.",
"FrequenciaEmMilissegundos": 30000,
"TempoOciosoEmSegundos": 60,
"StatusOrigem": 5,
"StatusDestino": 1
}
]
},

{
"Id": "GEMCO PARA PROTHEUS - PEDIDO VENDA - CANCELAR RESERVA",
"IdOperacao": 3135,
"Frequencia": 30000,
"QuantidadeRegistrosEnfileirar": 1,
"LimiteReprocessamento": 3,
"TimeoutEmSegundos": 120,
"Coletores": [
{
"Id": "Reciclagem: Processando - Aguard. Proc.",
"FrequenciaEmMilissegundos": 30000,
"TempoOciosoEmSegundos": 120,
"StatusOrigem": 2,
"StatusDestino": 1
},
{
"Id": "Reciclagem: Reprocessar - Aguard. Proc.",
"FrequenciaEmMilissegundos": 30000,
"TempoOciosoEmSegundos": 60,
"StatusOrigem": 5,
"StatusDestino": 1
}
]
},

No arquivo de configuração do Mozart para processos em que o sistema Gemco envia para o Protheus, deve ser configurado o seguinte código :

{
"Nome": "GEMCO PARA PROTHEUS - PEDIDO VENDA - RESERVAR VENDA",
"Api": {
"Url": "http://localhost:84/Reserva/api/Gemco/Reserva/BuscarTodosIntegracaoMozart",
"Method": "GET",
"TimeoutEmSegundos": 60,
"Headers": {
"Authorization": "bearer 71EC877E31CC3DF7BE52BC4D2F595"
}
},
"TempoEsperaExecucaoEmMilisegundos": 30000
},

Com está configuração, o mozart recebe um endereço de método em uma api "Url": "http://localhost:84/Reserva/api/Gemco/Reserva/BuscarTodosIntegracaoMozartrecebe qual o tipo de requisição terá que ser feita, neste caso ele executará um GET como está configurado "Method": "GET", receberá a configuração de quanto tempo no máximo ele pode processar um requisição, na configuração acima está definida em 60 segundo "TimeoutEmSegundos": 60, para saber de quanto em quanto tempo o Mozart deve chamar o método BuscarTodosIntegracaoMozart foi configurado "TempoEsperaExecucaoEmMilisegundos": 30000 que equivalem a 30 segundos. Então, a cada 30 segundos o Mozart via seu timer (Tarefas em segundo plano) fará a chamada.

As querys devem ser executadas no banco de dados do Mozart 

INSERT [dbo].[MzOperacao] ([Id], [Descricao], [Request], [RequestCallback], [IdCallback]) VALUES (3134, N'GEMCO PARA PROTHEUS - PEDIDO DE VENDA - RESERVAR VENDA', NULL, NULL, NULL)
INSERT [dbo].[MzOperacao] ([Id], [Descricao], [Request], [RequestCallback], [IdCallback]) VALUES (3135, N'GEMCO PARA PROTHEUS - PEDIDO DE VENDA - CANCELAR RESERVA', NULL, NULL, NULL)

INSERT [dbo].[MzOperacaoCliente] ([Id], [IdOperacao], [IdCliente], [Request], [RequestCallback]) VALUES (46, 3134, 8, NULL, NULL)
INSERT [dbo].[MzOperacaoCliente] ([Id], [IdOperacao], [IdCliente], [Request], [RequestCallback]) VALUES (47, 3135, 8, NULL, NULL)

INSERT [dbo].[MzTransacao] ([Id], [Nome]) VALUES (25, N'RESERVA')
INSERT [dbo].[MzTransacao] ([Id], [Nome]) VALUES (26, N'RESERVACANCELAMENTO')

INSERT [dbo].[MzAplicacaoEvento] ([Id], [IdAplicacao], [Evento], [TipoIntegracao], [IdOperacao], [IdTransacao]) VALUES (72, 13, N'UPSERT', NULL, 3134, 25)
INSERT [dbo].[MzAplicacaoEvento] ([Id], [IdAplicacao], [Evento], [TipoIntegracao], [IdOperacao], [IdTransacao]) VALUES (73, 13, N'DELETE', NULL, 3135, 26)

INSERT [dbo].[MzAssinatura] ([Id], [IdAplicacaoEvento], [IdAplicacaoAssinante], [IdCliente], [Tenant], [IdOperacao]) VALUES (72, 75, 15, 8, N'T3', NULL)
INSERT [dbo].[MzAssinatura] ([Id], [IdAplicacaoEvento], [IdAplicacaoAssinante], [IdCliente], [Tenant], [IdOperacao]) VALUES (73, 76, 15, 8, N'T3', NULL)

INSERT [dbo].[MzAssinaturaPasso] ([Id], [IdAssinatura], [Ordem], [Request]) VALUES (187, 69, 1, N'{"AwaitCallback": true, "Url": "http://10.171.67.163:8175/EAISERVICE.apw", "Method": "POST","TimeoutEmSegundos": 30, "Headers": { "Content-Type": "text/xml", "SOAPAction" : "http://www.totvs.com/RECEIVEMESSAGE" }}')
INSERT [dbo].[MzAssinaturaPasso] ([Id], [IdAssinatura], [Ordem], [Request]) VALUES (188, 69, 2, N'{"Adapter": false, "Url": "http://localhost:84/Reserva/api/gemco/Reserva/ToUpsertBusinessMessageResponse", "Method": "POST", "Headers": { "Content-Type": "application/json" } }')
INSERT [dbo].[MzAssinaturaPasso] ([Id], [IdAssinatura], [Ordem], [Request]) VALUES (189, 70, 1, N'{"AwaitCallback": true, "Url": "http://10.171.67.163:8175/EAISERVICE.apw", "Method": "POST","TimeoutEmSegundos": 30, "Headers": { "Content-Type": "text/xml", "SOAPAction" : "http://www.totvs.com/RECEIVEMESSAGE" }}')
INSERT [dbo].[MzAssinaturaPasso] ([Id], [IdAssinatura], [Ordem], [Request]) VALUES (190, 70, 2, N'{"Adapter": false, "Url": "http://localhost:84/Reserva/api/gemco/Reserva/ToUpsertBusinessMessageResponse", "Method": "POST", "Headers": {    "Content-Type": "application/json" } }')

2.0 Configurações no Protheus

         Exemplo de Mensagem: ItemReserve - Mensagem para Integração da Reserva de Produtos 

...

         O cadastro de adapters são rotinas responsáveis por realizar o processamento das mensagens enviadas e recebidas, possibilitando a inclusão, alteração e exclusão do adapter no Protheus.

         Atenção:

         Todos os Adapters devem ser cadastrados. Pois a versão da mensagem pode influenciar na correta geração ou recebimento das mensagens dependentes.

          Caso não deseje usar alguns dos Adapters basta desmarcar as opções de Envio/recebimento conforme necessário.

      1. No Configurador (SIFACFG), acesse Ambientes/Schedule/Adapter E.a.i

      2.1 Efetue a Inclusão de  uma nova rotina  para os Adapters do sistema Protheus.Configure a rotina do Adapter, de acordo com  os dados abaixo e que já foram pré estabelecidos  para a integração:

      Mensagem única: Sim
      Rotina: Nome do adapter 
      Mensagem: Nome da mensagem única que o Adapter EAI  espera receber.
      Descrição: Identificação da mensagem.
      Envia: SIM (se envia a informação para o outro sistema) ou NÃO ( Se não envia nenhuma informação deste adapter para o outro sistema).
      Recebe: SIM (se recebe a informação do outro sistema) ou NÃO ( Se não recebe nenhuma informação deste adapter do outro sistema).
      Método: Síncrono/Assincrono
      Operação: Todas
      Canal de Envio: EAI
       Image Removed

      Observe que ao preencher o campo Canal Envio, com a opção 2 - EAI, o sistema preenche automaticamente o campo Rota padrão, com o conteúdo preenchido no parâmetro MV_EAIURL2.

      Atenção: Efetue a inclusão dos Adapters e Versões conforme tabela abaixo: 

...

Mensagem Única

...

Rotina Protheus

...

Mensagem

...

Descrição

...

Envia

...

Recebe

...

Método Protheus

...

Operação

...

Canal de Envio

...

Sim

...

MATA030

...

CustomerVendor

...

Cliente

...

Não

...

Sim

...

Assíncrono

...

Todas

...

EAI

...

Sim

...

LOJA160

...

Reduction

...

Redução Z

...

Não

...

Sim

...

Assíncrono

...

Todas

...

EAI

...

Sim

...

Assíncrono

...

LOJA701

...

2.000

...

Sim

...

LOJA140

...

1.000

...

                 

Image Removed

Importante!

        Os adapters devem ser adicionados somente na Retaguarda.   

2.2  Cadastro de De/Para de Empresas:

No EAI Protheus existe a possibilidade de se cadastrar, para as Mensagens Únicas TOTVS, um relacionamento entre a Empresa e Filial de processamento que chegou na mensagem com uma existente no Protheus. Isto se deve ao fato de que, na Mensagem Única TOTVS

os valores trafegados na mensagem são sempre do sistema que enviou a mensagem, cabendo ao sistema receptor a tradução das informações trafegadas.

      1. No Configurador (SIFACFG), acesse Ambientes/Schedule/Emp.Fil.Msg.Unica.
      2. Cadastre  De-Para de Empresas e Filiais e configure-os conforme os valores a seguir:

...

Image Removed

     

2.3 Inclusão De / Para dos Caixas cadastrados no Protheus e Gemco:

       Pré - requisitos:

          Efetuar o cadastro do caixa no Protheus e solicitar junto a Bematech, o código do operador Live.

      1. No Configurador, acesse Ambiente Schedule De /para de Mensagem Unica.

      Preencha os campos abaixo

      • Referência: BEMATECH
      • Tabela: Informe a tabela SLF
      • Alias: Informe SLF
      • Campo: LF_COD
      • Valor Externo: Informe o código do Caixa Cadastrado no Live, conforme exemplo abaixo.
      • Valor Interno: Informe a Empresa| Filial | e o Código do Caixa cadastrado no Protheus, conforme exemplo abaixo.
         
        Atenção: O campo de valor Interno deve ser preenchido com os valores de  Empresa e filial mais o conteudo separados por  "|" (Pipe). Caso a tabela seja compartilhada deve-se preencher de acordo com a regra de compartilhamento.
        Exemplo:  T1|D RJ 01|C02
          Image Removed

           Segue  exemplo do código do caixa Cadastrado no Protheus,

 Image Removed

2.4 Cadastro de De/Para CFOP/TES:

O cadastro de De/Para da CFOP/TES, é de extrema importância para que as mensagens transmitidas, tenham suas movimentações dentro do Sistema Protheus definidas de acordo com as operações.

       Pré - requisitos:

       -   Efetuar o cadastro do CFOP.

        -  Solicitar junto a Bematech, o código do CFOP utilizados nas operações Gemco.

      1. No Configurador, acesse Ambiente Schedule De /para de Mensagem Única.

      Preencha os campos abaixo.

      • Referência: BEMATECH
      • Tabela: Informe a tabela SF4XXX
      • Alias: Informe SF4
      • Campo: F4_CODIGO
      • Valor Externo: Informe o código do CFOP cadastrado no Live, conforme exemplo abaixo.
      • Valor Interno: Informe a Empresa|Filial | Código da TES cadastrada no Protheus, conforme exemplo abaixo.

         Atenção: O campo de valor Interno deve ser preenchido com os valores de  Empresa e filial mais o conteudo separados por  "|" (Pipe). Caso a tabela seja compartilhada deve-se preencher de acordo com a regra de compartilhamento.
              Exemplo:  T3||506

...