Árvore de páginas

Versões comparadas

Chave

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

...

No banco de dados do gemco é necessário 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

...

mozart

Script :

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

Image Removed