Árvore de páginas

Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.

Informações Gerais

Especificação

Produto

Protheus

Módulo

SIGATMS

Segmento Executor

Logística

Projeto

  1. LOGTMS01

IRM

LOGTMS01-70

Requisito

LOGTMS01-516

Subtarefa

LOGTMS01-585

País

( X ) Brasil  (  ) Argentina  (  ) Mexico  (  ) Chile  (  ) Paraguai  (  ) Equador

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Outros

 

Objetivo

Integrar as informações de contas a receber geradas pelo módulo SIGATMS (Transportation Management System) da linha Microsiga Protheus com o módulo Finanças ACR da linha Datasul utilizando como ferramenta de Integração o EAI (Enterprise Application Integrator), que terá a responsabilidade de trafegar as mensagens XML entre o Protheus e o Datasul, além de fazer o controle de filas das mensagens a serem integradas. 

Definição da Regra de Negócio

Os tratamentos indicados serão aplicados somente se houver integração com o Financeiro ACR da linha Datasul. Para identificar que a integração está ativa, será necessário utilizar o parâmetro MV_TMSERP, que será criado conforme item da especificação Parâmetro MV_TMSERP. Quando o parâmetro estiver igual a "0" (Protheus), o SIGATMS deverá utilizar as tabelas e rotinas do módulo SIGAFIN do Protheus. Caso esteja igual a "1" (Datasul), o SIGATMS terá o comportamento descrito nesta especificação.

Devida a amarração que o SIGATMS possui com tabelas e rotinas do SIGAFIN, para que seja possível realizar esta integração com o módulo de Contas a Receber (ACR) do Financeiro Datasul, será necessário:

  • Criar uma nova tabela que controlará a Fatura dentro do SIGATMS;
  • Criar novos programas de Fatura por Documento e Fatura Automática, que serão executados pelos programas já existentes em substituição e utilizarão a nova tabela;
  • Identificar todos os pontos que possuem amarração com o SIGAFIN e efetuar os tratamentos necessários utilizando a nova tabela de fatura (Como os programas de Solicitação de Transferência, Transferência, Transferência por Lote, Manutenção de documentos, Perfil do Cliente e Painel de Agendamentos);
  • Bloquear a utilização do programa de Baixa Documento de Transporte;
  • Criar um novo programa de Adapter para processamento da mensagem de Fatura de Transporte (Tratamento de envio e recebimento da resposta);
  • Criar um novo programa de Adapter para processamento da mensagem de Baixa de Título (Tratamento de recebimento da mensagem para atualização do status da fatura);

Algumas premissas:

  • Quando houver integração, o SIGATMS enviará mensagens para o Datasul, por intermédio do conceito do EAI - Mensagem Única;
  • O parâmetro de integração só poderá ser alterado para o valor "1" (Datasul), se o parâmetro MV_TMSMFAT for igual a "2" (Faturamento a partir da DT6);
  • O fluxo das rotinas impactadas e que serão desenvolvidas, quando houver integração com o Financeiro Datasul deve seguir o mapa mental:

 

Abaixo segue o detalhamento das alterações que deverão ser realizadas:

Rotina

Tipo de Operação

Opção de Menu

Parâmetro MV_TMSERP

TMSA850 – Fatura Por docto.

Alteração

Atualizações -> Financeiro -> Fatura Por docto.

TMSA851 – Fatura Por docto. Inclusão-

TMSA491 – Fatura Automática

Alteração

Atualizações -> Financeiro -> Fatura Automática

TMSA492 – Fatura Automática Inclusão-
TMSA890 - Solicitação de transferênciaAlteraçãoAtualizações -> Financeiro -> Sol. transferência
TMSA870 - TransferênciaAlteraçãoAtualizações -> Financeiro -> Transferência
TMSA900 - Transf. Por LoteAlteraçãoAtualizações -> Financeiro -> Transf. Por Lote
TMSA500 - Manutenção de documentosAlteraçãoAtualizações -> Transportes -> Manutenção de documentos
TMSA480 - Perfil dos Clientes AlteraçãoAtualizações -> Comercial -> Perfil dos Clientes
TMSA880 - Baixa doc. Transp AlteraçãoAtualizações -> Financeiro -> Baixa doc. Transp
TMSAF76 - Painel de AgendamentoAlteraçãoAtualizações -> S.A.C -> Painel de Agendamento
Mensagens de Integração
TMSI851 - Adapter de FaturaInclusão-
TMSI852 - Adapter Status da FaturaInclusão-
EDI - Layout DOCCOB

 

 

Parâmetro MV_TMSERP

Deverá ser criado no AtuSX um novo parâmetro para o SIGATMS com as seguintes especificações:

VarMV_TMSERP
TipoC - Caractere
PymeS - Sim
OwnerSIGATMS
Des.portug.ERP que está integrado ao SIGATMS.
Des.portug.10 - Protheus, 1 - Datasul.
Conteúdo0
Validação(aviso)TmsX6Valid(X6_FIL, X6_VAR, X6_TIPO, X6_CONTEUD, X6_CONTSPA, X6_CONTENG)

 

(aviso) TMSXFUND - TmsX6Valid

Alterar a função padrão de validação de parâmetro: TmsX6Valid para:

  • Permitir apenas o conteúdo 0 ou 1 para o parâmetro MV_TMSERP;
  • Caso o conteúdo seja 1, o parâmetro MV_TMSMFAT deve ser igual a 2 (Modo de faturamento pelo DT6), do contrário deve apresentar um help e não efetivar a alteração;
  • Em relação ao parâmetro MV_TMSMFAT, incluir mais uma verificação:
    • Se o parâmetro MV_TMSERP for igual a 1, não deve ser possível alterar o valor do parâmetro MV_TMSMFAT de 2 para 1;

 

TMSA850 – Fatura Por docto.

Alterar a rotina para que na função inicial (TMSA850), caso exista integração com o Financeiro ACR (Datasul), desviar para o novo programa TMSA851.

Exemplo
Local cTmsERP := SuperGetMV("MV_TMSERP",,'0')
 
If cTmsERP ==  '1'
	return TMSA851()
EndIf

Observação

Para reaproveitar as funções e reutilizar na nova rotina de Fatura Por docto., algumas funções do TMSA850 poderão sofrer alterações conforme andamento da codificação.

 

TMSA851 – Fatura Por docto.


Criar um novo programa TMSA851 (Fatura Por docto.) que deverá seguir como base as mesmas regras do atual programa TMSA850, porém, não terá o vínculo com o SIGAFIN e possuirá algumas diferenças.

As principais mudanças que o novo programa terá em relação ao atual estão descritos abaixo:

  1. O novo programa não deverá utilizar diretamente a tabela SE1 (Contas a Receber) e sim a nova tabela DRT - Fatura de Transporte a Receber que será criada. Consulte mais detalhes em Dicionário de Dados;

  2. Na rotina TMSA850, ao clicar na opção "Selecionar", aparece inicialmente uma tela para informar alguns dados da Fatura e parâmetros que restringem a seleção dos documentos. Esta tela deverá ser transferida para uma função que será chamada pelas rotinas TMSA850 e TMSA851. Quando a função for chamada da rotina TMSA851, a tela deve se adequar para que as informações: "Prefixo", "Tipo" e "Natureza" não sejam apresentadas;

  3. A tela de seleção dos documentos que pertencerão a fatura atualmente na rotina TMSA850 é modelada na função TMSA850TELA. Esta função deve ser chamada também na rotina TMSA851, porém a tela deverá ser modelada sem as informações de "Prefixo", "Tipo" e "Natureza". Além disso, fazer alguns ajustes na tela para ambas as rotinas: Os tamanhos das colunas apresentadas devem ser ajustadas de forma que apareçam todas as colunas para visualização, sem rolagem horizontal e deve ser revisto a tela de "Ajustes" e "Pesquisa" (Outras Ações) para que não apareçam "cortadas";

  4. Ao "Salvar" a fatura, deverá respeitar todas as validações existentes no programa atual e que não estejam amarradas ao SIGAFIN. Deve ser disparada a mensagem de integração de envio Síncrona ao financeiro ACR Datasul, para a criação do título de fatura (Mais detalhes em TMSI851 - Integração TMS x ACR Datasul) e somente deverá ser efetivada a criação do registro de fatura se a integração ocorrer com sucesso. Deverá ser gravada na nova tabela a informação do usuário que gerou a fatura;

  5. Em relação aos status da fatura, serão diferentes do programa atual, conforme:
    1. Fatura Integrada - Fatura criada no Protheus, enviada e processada no Financeiro Contas a Receber Datasul;
    2. Fatura Parcialmente Baixada - Houve baixa parcial do título relacionado a fatura;
    3. Fatura Totalmente Baixada - Houve a baixa total do título relacionado a fatura;
    4. Fatura Cancelada - Houve o cancelamento da fatura no Protheus e título relacionado no Datasul;
    5. Fatura Protestada - Houve o protesto do título;

  6. Na nova tabela de fatura, haverá um campo de histórico que irá manter de forma descritiva algumas informações sobre a integração com o contas a receber, por exemplo, quando o financeiro responder a mensagem de fatura indicando que o título que foi criado, ficará no histórico a informação chave deste título;

  7. Em relação ao Cancelamento, somente Fatura com status "Fatura integrada" poderá ser cancelada. O cancelamento sempre será da fatura como um todo e não permitirá a retirada parcial de documentos. Somente será efetivado o cancelamento quando for enviada a mensagem de cancelamento ao Financeiro ACR Datasul de forma Síncrona e retornado que o processamento de cancelamento do título de fatura foi efetivado. Se houver alguma inconsistência ou tratativa de negócio que impeça o cancelamento, a operação será abortada apresentando adequadamente o ocorrido por meio de uma mensagem. Caso o retorno seja positivo indicando que o título foi cancelado, o status da fatura deverá ser alterado para "Fatura cancelada", a data de cancelamento atualizada, no histórico deverá constar a informação "Título cancelado no contas a receber", os conhecimentos deverão ser liberados para serem incluídos em uma nova fatura, além de armazenar o histórico dos documentos excluídos como atualmente na integração com o SIGAFIN;

  8. Alterar a função Tmsa850Ajustes do TMSA850 para não habilitar os campos "_SI_VALFAT" e "_SI_VALAJU", quando houver integração com o ERP Datasul, pois nesta fase não será possível alterar o valor do conhecimento incluindo acréscimo ou decréscimo.

Verificar os Protótipos de Telas do TMSA851; 

Conceitos de Negócio

No TMS, após a autorização do CT-e pelo SEFAZ, o conhecimento será enviado ao Faturamento Datasul para geração das obrigações fiscais e conforme parametrização também a geração automática do título no contas a receber. Caso seja gerado o título, este não estará disponível para ser movimentado (será bloqueado pelo financeiro) e por isso não há necessidade de atualizar o conhecimento no TMS com a informação do título. Após a liberação do conhecimento de frete ou geração do comprovante de entrega conforme parametrização, ocorrerá o processo de faturamento no TMS. Em uma fatura poderão ser vinculados os conhecimentos de um cliente considerando ou não sua loja. Após a confirmação dos conhecimentos selecionados, a fatura será gerada, os conhecimentos que a compõe serão atualizados com a informação do número da fatura indicando que estão faturados e haverá o processo de integração com o contas a receber do Datasul. Esta integração ocorrerá de forma Síncrona, ou seja, o sistema aguardará o retorno do financeiro indicando se o título foi gerado com sucesso. Caso o retorno seja negativo, então a fatura não será criada. Caso o retorno seja positivo, então a fatura ficará com um status de integrada.

No contas a receber, haverá a figura do Recebimento Padrão que é um conjunto de informações para implantação do título (espécie, série, entre outros) e um cadastro de Seleção de Recebimento Padrão, na qual será possível parametrizar para a transação de “Fatura de Transporte”, código de transação (tipo do conhecimento), estabelecimento e cliente, qual Recebimento Padrão deverá utilizar para implantação do título. Assim que o TMS enviar a mensagem de integração de fatura com os conhecimentos que a compõem, será verificado qual “Recebimento Padrão”, deverá ser utilizado para cada conhecimento com base no que foi cadastrado na Seleção de Recebimento Padrão com código de transação (DT6_DOCTMS), estabelecimento (DRT_FILDEB) e cliente (DRT_CLIFAT + DRT_CLILOJ) recebidos na mensagem. Neste momento, a fatura deve conter apenas conhecimentos que possuem a mesma parametrização para geração de títulos no contas a receber. Sendo assim, caso o Datasul identifique que algum conhecimento possua um Recebimento Padrão diferente dos demais, ele retornará uma mensagem de erro informando que não é possível integrar ao contas a receber. Neste caso, o usuário terá que desvincular este conhecimento que possui uma parametrização diferenciada para geração de título ou alterar a parametrização do lado do contas a receber. Caso todos os conhecimentos que compõem a fatura estiverem parametrizados para geração do título utilizando o mesmo Recebimento Padrão, então o título será implantado no contas a receber com as informações do Recebimento Padrão e recebidas na mensagem (valor, data de emissão, moeda). No histórico do título constará as informações chaves dos conhecimentos da fatura. Quando o conhecimento já possuir um título que o represente no financeiro, será realizado o processo de substituição dos títulos dos conhecimentos da fatura por um único título que representará a fatura.

  

TMSA491 – Fatura Automática

Alterar a rotina para que na função inicial (TMSA491), caso exista integração com o Financeiro ACR (Datasul), desviar para o novo programa TMSA492.

Exemplo
Local cTmsERP := SuperGetMV("MV_TMSERP",,'0')

If cTmsERP ==  '1'
	return TMSA492()
EndIf

Observação

Para reaproveitar as funções e reutilizar na nova rotina de Fatura Automática, algumas funções do TMSA491 poderão sofrer alterações conforme andamento da codificação.



TMSA492 – Fatura Automática

Criar um novo programa TMSA492 (Fatura Automática) que deverá seguir como base as mesmas regras do atual programa TMSA491, porém, não terá o vínculo com o SIGAFIN e possuirá algumas diferenças.

As principais mudanças que o novo programa terá em relação ao atual estão descritas abaixo:

  1. Mesmas mudanças já descritas para o novo programa de Fatura por docto. (TMSA851): item 1item 4, item 5, item 6item 7 e item 8;

  2. As regras do TMSA491 - Fatura Automática devem ser mantidas, conforme documentação, porém, com as seguintes particularidades:
    1. Os parâmetros MV_TIPFATMV_NATFAT não serão utilizados;

  3. No TMSA491, várias funções são utilizadas do TMSA850, no caso do TMSA492, deve seguir o mesmo modelo, utilizando as funções do TMSA851. Se houver a possibilidade de reaproveitar as funções do TMSA491, efetuar os tratamentos adequados e utilizar a mesma função para facilitar a manutenção que terá apenas um ponto de alteração e não se preocupará com lógicas duplicadas;

Verificar os Protótipos de Telas do TMSA492.

Diferenças Conceituais SIGATMS x SIGAFIN & SIGATMS x Financeiro ACR Datasul

Atualmente a rotina de Fatura Por docto. com a integração com o SIGAFIN Protheus se comporta conforme a documentação e a Fatura Automática conforme a documentação.

Com a integração com o Financeiro ACR Datasul, haverá as seguintes mudanças:

  • Fatura Por docto.:
    • Na função de "Ajustes" em "Outras Ações" da tela de seleção de conhecimentos, não será possível alterar o valor do conhecimento incluindo um acréscimo ou decréscimo;

  • Ambas:
    • A fatura poderá gerar apenas um título no contas a receber Datasul. Caso a condição do cliente indique a geração de várias parcelas, será retornado um erro durante a integração.
    • Haverá mais status para a fatura, os quais indicarão mais precisamente o estado da mesma para consulta do usuário;
    • Todas as informações relacionadas diretamente ao SIGAFIN, não serão mais apresentadas e/ou utilizadas conforme já mencionadas nas principais mudanças que o novo programa terá;

  

Transferência de Filial de Débito do Conhecimento

  • TMSA890 - Solicitação de Transferência
    Alterar a rotina para que na função Tmsa890Inc, somente seja feita a verificação da tabela SE1 se não houver integração entre SIGATMS e Financeiro ACR da linha Datasul, caso contrário, alimentar a variável lFatTMS com o valor true (.T). Desta forma, a Solicitação de Transferência somente poderá ser criada se não houver fatura para o documento.
Exemplo
Local lTmsERPDTS := SuperGetMV("MV_TMSERP",,'0') == '1'
 
If lTmsERPDTS 
	lFatTMS := .T.
Else
	DbSelectArea("SE1")
	DbSetOrder(2) 
	If SE1->(MsSeek(xFilial("SE1")+DT6->DT6_CLIDEV+DT6->DT6_LOJDEV+DT6->DT6_PREFIX+DT6->DT6_NUM))
		While SE1->(!EOF()) .And. SE1->(E1_FILIAL+E1_CLIENTE+E1_LOJA+E1_PREFIXO+E1_NUM) == xFilial("SE1")+DT6->DT6_CLIDEV+DT6->DT6_LOJDEV+DT6->DT6_PREFIX+DT6->DT6_NUM
			If !(SE1->E1_TIPO $ MVABATIM) .OR. ;
				((SE1->E1_TIPO $ MVABATIM) .AND. !(SE1->E1_TIPO $ MVIRABT+"/"+MVINABT+"/"+MVCSABT+"/"+MVCFABT+"/"+MVPIABT+"/"+MVISABT+"/"+MVFUABT))
				//-- Verifica se a fatura foi gerada pelo faturamento do SIGATMS
				If Upper(Alltrim(SE1->E1_ORIGEM)) <> "TMSA850" .And. Upper(Alltrim(SE1->E1_ORIGEM)) <> "TMSA491" 
					lFatTMS := .F.
					nCont += 1
				EndIf
			EndIf 
			SE1->(DbSkip())
		EndDo 
	EndIf
EndIf

 

  • TMSA870 - Transferência
    Alterar a rotina para que na função Tmsa870Apv, somente seja feita a verificação da tabela SE1 se não houver integração entre SIGATMS e Financeiro ACR da linha Datasul, caso contrário, alimentar a variável lRet com o valor true (.T). Desta forma, a transferência não será realizada se o documento estiver faturado ou o número da solicitação estiver em branco.
Exemplo
Local lTmsERPDTS := SuperGetMV("MV_TMSERP",,'0') == '1'
 
If lTmsERPDTS 
	lRet:= .T.
Else
	dbSelectArea("SE1")
	dbSetOrder(2)
	If SE1->(MsSeek(xFilial("SE1")+DT6->DT6_CLIDEV+DT6->DT6_LOJDEV+DT6->DT6_PREFIX+DT6->DT6_NUM))
		If SE1->E1_ORIGEM <> 'TMSA850' .And. SE1->E1_ORIGEM <> 'TMSA880'
			// Se o docto. ja foi faturado e com Solicita?o de Transferencia permite aprovacao
			If !Empty(DT6->(DT6_PREFIX+DT6_NUM+DT6_TIPO)) .And. !Empty(DT6->DT6_NUMSOL)
				lRet:= .F.
			Else
				lRet:= .T.
			EndIf
		EndIf
	EndIf
EndIf

Na função Tm870GrvApv, alterar para não executar a atualização, gravação e baixa do título (tabela SE1) se houver integração entre SIGATMS e Financeiro ACR da linha Datasul.

Exemplo
Local lTmsERPDTS := SuperGetMV("MV_TMSERP",,'0') == '1'
 
//-- Parâmetro inativo
If !lTmsERPDTS 
	//-- Lógica atual de atualização, gravação e baixa do título...
Else

 

  • TMSA900 - Transf. Por Lote
    Alterar a rotina para que na função Tmsa900Vis, na criação do botão "Vis. Fat", quando houver integração entre SIGATMS e Financeiro ACR da linha Datasul, seja posicionado no registro correspondente a fatura do documento na nova tabela e chamada a função de visualização do novo programa TMSA851.
Exemplo
Local lTmsERPDTS := SuperGetMV("MV_TMSERP",,'0') == '1'
 
If lTmsERPDTS 
	Aadd(aBut, {"PRECO" ,{|| If(!Empty(DT6->(DT6_PREFIX+DT6_NUM+DT6_TIPO)),;
							(DRT->(DbSetOrder(1)),;
							SA1->(DbSetOrder(1)),;
							If(DRT->(MsSeek(xFilial("DRT")+DT6->(DT6_NUM))),;
							(SA1->(MsSeek(xFilial("SA1")+DRT->(DRT_CLIENTE+DRT_LOJA))),;
							DbSelectArea("DRT"),;
							TmsA851Vis("DRT","",nOpc)),;
							Aviso(STR0005, STR0006, {STR0026}))),; //"Atenção"###"Fatura não encontrada"###"Ok"
							Aviso(STR0005, STR0007, {STR0026})) }, STR0008 , STR0027 } ) //"Atenção"###"Docto. não faturado!"###"Ok"###"Visualiza Fatura"
Else
	Aadd(aBut, {"PRECO" ,{|| If(!Empty(DT6->(DT6_PREFIX+DT6_NUM+DT6_TIPO)),;
							(SE1->(DbSetOrder(1)),;
							SA1->(DbSetOrder(1)) ,;
							If(SE1->(MsSeek(xFilial("SE1")+DT6->(DT6_PREFIX+DT6_NUM+Space(Len(SE1->E1_PARCELA))+DT6_TIPO))),;
							(SA1->(MsSeek(xFilial("SA1")+SE1->(E1_CLIENTE+E1_LOJA))),;
							DbSelectArea("SE1"),;
							TmsA850Vis("SE1","",nOpc)),;
							Aviso(STR0005, STR0006, {STR0026}))),; //"Atenção"###"Fatura não encontrada"###"Ok"
							Aviso(STR0005, STR0007, {STR0026})) }, STR0008 , STR0027 } ) //"Atenção"###"Docto. não faturado!"###"Ok"###"Visualiza Fatura"
EndIf

 

 

TMSA500 - Manutenção de documentos


Alterar a função TMSA500Fin para quando existir integração com o Financeiro ACR Datasul, ao invés de apresentar os títulos a receber (tabela SE1), apresente a fatura (se houver) conforme nova tabela. Nela constará o Histórico que apresentará a chave dos títulos gerados no Contas a Receber do Datasul (Apenas as informações chaves serão apresentadas referente o título).

 


TMSA480 - Perfil dos Clientes


Alterar a função TmsA480SepDoc para que não permita informar o faturamento diferenciado se houver integração com o Financeiro ACR Datasul. Hoje é permitido tratar o faturamento diferenciado se o tipo de faturamento é pela DT6 (MV_TMSMFAT = '2') e com a alteração, mesmo que seja pela DT6 mas houver integração com o Datasul, não poderá diferenciar o faturamento. Esta tratativa será realizada neste momento, porém, poderá ser repensada futuramente.

 


TMSA880 - Baixa doc. Transp

Não permitir o acesso a funcionalidade quando houver integração com o Financeiro ACR Datasul, pois a baixa não poderá ser efetuada por meio do SIGATMS.

Observação

Neste momento do projeto, esta funcionalidade não estará disponível, porém, foi mapeada uma possível alteração que poderia trazer o conceito de Baixa de Documento de Transporte para a integração com o contas a receber do Datasul:

Na tela de seleção de conhecimentos na geração de fatura, ter um flag: "Conhecimentos já baixados". Quando o campo for marcado, será solicitada as informações bancárias como na Baixa de Documento de Transporte (Banco, Agência, Conta). Quando for confirmado, será enviado ao Financeiro Contas a Receber na mensagem de integração uma informação de ‘conhecimentos baixados’ e um ‘Histórico’ com os dados bancários. O Datasul recebendo a informação ‘conhecimentos baixados’, saberá que é referente a uma outra ‘transação’, por exemplo, “Fatura de Transporte Liquidada” e com isso utilizará uma parametrização que o usuário irá definir, apontando para outra espécie que indique ao financeiro que deve baixar. O histórico do título será alimentado com as informações bancárias que passaremos. Lembrando que, a baixa deverá ser manual e não será automática.

 

 

TMSAF76 - Painel de Agendamento


Alterar todos os pontos que utilizam a tabela SE1 para utilizar a nova tabela quando houver integração com o Financeiro ACR Datasul

 

Mensagens de Integração


Importante

As mensagens seguirão o padrão de Mensagens Únicas.

Será necessária a criação de duas mensagens de integração:

  • Fatura de Transporte

    TransportInvoice_1_000.xsd
    MensagemTransportInvoice
    NameFatura de Transporte
    DescriptionFatura de Transporte a Receber
    SegmentTransportation Management System
    AdapterTMSI851
    SendInsert = Sim; Update = Sim; Delete = Sim;
    ReceiveInsert = Não; Update = Não; Delete = Não;
  • Status da Fatura

    TransportInvoiceStatus_1_000.xsd
    MensagemTransportInvoiceStatus
    NameStatus da Fatura de Transporte
    DescriptionStatus da Fatura de Transporte a Receber
    SegmentTransportation Management System
    AdapterTMSIACR
    SendInsert = Não; Update = Não; Delete = Não;
    ReceiveInsert = Sim; Update = Sim; Delete = Sim;

      

TMSI851 - Adapter de Fatura

Deverá ser criado um programa de adapter para tratamento da mensagem relacionada a integração de fatura entre TMS e Financeiro ACR da linha Datasul.

O novo programa de adapter deverá atuar nos seguintes pontos:

RotinaPonto a ser chamadoMensagem (Entidade)TipoModo
Fatura Por docto (TMSA851)Inclusão de uma faturaTransportInvoiceEnvio/RespostaSíncrona
Cancelamento de uma faturaTransportInvoiceEnvioSíncrona
Fatura Automática (TMSA492) (informação) Geração de faturaTransportInvoiceEnvio/RespostaSíncrona
(informação) Cancelamento de uma faturaTransportInvoiceEnvioSíncrona

(informação) Verificar se é possível reaproveitar as funções que serão criadas para inclusão e cancelamento da fatura do TMSA851, para que a mesmas funções sejam chamadas nestes pontos e assim não será necessário disparar o Adapter em pontos duplicados.

 

O objetivo do adapter será processar o envio da mensagem de fatura e a resposta do Financeiro ACR Datasul para a atualização do status da fatura e histórico.

XML Exemplo
<!-- TransportInvoice - Fatura de Transporte - TRANS_SEND -->
 
<BusinessEvent>
 
	<Entity> TransportInvoice </Entity>
	<Event> UPSERT/DELETE </Event>
		<!-- UPSERT - Inclusão de uma nova fatura
			 DELETE - Exclusão de uma fatura, quando houver o cancelamento -->
	<CompanyId> Empresa </CompanyId>
		<!-- Variável pública Protheus: cEmpAnt -->
 
	<BranchId> Filial da operação </BranchId>
		<!-- Campo: DRT_FILIAL -->
 
	<InvoiceCode> Código da Fatura </InvoiceCode>
		<!-- Chave de identificação da fatura entre TMS x ACR Datasul (Campo: DRT_NUM) -->
 
</BusinessEvent>
<BusinessContent>
 
	<CompanyId> Empresa </CompanyId>
		<!-- Variável pública Protheus: cEmpAnt -->
 
	<BranchId> Filial da operação </BranchId>
		<!-- Campo: DRT_FILIAL -->
 
	<BranchIdInternalId> InternalId Filial da operação </BranchIdInternalId>
		<!-- Concatenação da empresa e filial. Exemplo: cEmpAnt + '|' + RTrim(xFilial("DRT")) -->
 
	<CompanyInternalId> Empresa interna (de/para) </CompanyInternalId>
 		<!-- Concatenação da empresa e filial. Exemplo: cEmpAnt + '|' + RTrim(xFilial("DRT")) -->
 
	<InvoiceCode> Código da Fatura </InvoiceCode>
		<!-- Chave de identificação da fatura entre TMS x ACR Datasul (Campo: DRT_NUM) -->
 
	<InternalId> InternalId Código da Fatura </InternalId>
		<!-- Concatenação da empresa e código da fatura. Exemplo: cEmpAnt + '|' + DRT_NUM -->
 
    <TransactionDate> Data de transação (Data base) </TransactionDate> 
        <!-- Variável dDataBase -->
 
	<DebitBranch> Filial de débito da Fatura </DebitBranch>
 		<!-- Campo: DRT_FILDEB -->
 
 	<DebitBranchInternalId> InternalId Filial de débito da Fatura </DebitBranchInternalId>
 		<!-- Concatenação da empresa e filial de débito. Exemplo: cEmpAnt + '|' + DRT_FILDEB -->
 
	<ClientCode> Código + Loja do Cliente </ClientCode>
		<!-- Campos: DRT_CLIFAT + DRT_LOJFAT -->
 
	<GovernmentalInformation>
		<Id expiresOn="" issueOn="DATA ATUAL'" name="INSCRICAO ESTADUAL" scope="State">SA1->A1_INSCR</Id>
		<Id expiresOn="" issueOn="DATA ATUAL'" name="INSCRICAO MUNICIPAL" scope="Municipal">SA1->SA1->A1_INSCRM</Id>
		<Id expiresOn="" issueOn="DATA ATUAL'" name="CNPJ/CPF" scope="Federal">SA1->A1_CGC</Id>
	</GovernmentalInformation>
		<!-- Informações do Cliente para identificação do respectivo Cliente no Datasul -->
 
	<InvoiceIssueDate> Data de Emissão da Fatura </InvoiceIssueDate>
		<!-- Campo: DRT_DTEMIS -->
 
	<InvoiceDueDate> Data de Vencimento da Fatura </InvoiceDueDate>
		<!-- Campo: DRT_DTVENC -->
 
	<InvoiceValue> Valor da Fatura </InvoiceValue>
		<!-- Campo: DRT_VALOR -->
 
	<CurrencyCode> Moeda </CurrencyCode>
		<!-- Campo: DRT_MOEDA -->
 
	<CurrencyInternalId> ID Interno - Moeda </CurrencyInternalId>
 
	<ListOfTransportDocuments>
		<TransportDocument>
			<BranchDocument> Filial do Documento </DocumentNumber>
				<!-- Campo: DT6_FILDOC -->
 
			<BranchDocumentInternalId> InternalId Filial do Documento </BranchDocumentInternalId>
				<!-- Concatenação da empresa e filial do documento. Exemplo: cEmpAnt + '|' + DT6_FILDOC -->
 
			<DocumentNumber> Número do Documento </DocumentNumber>
				<!-- Campo: DT6_DOC -->
 
			<DocumentSeries> Série do Documento </DocumentSeries>
				<!-- Campo: DT6_SERIE -->
 
			<DocumentType> Tipo do Documento </DocumentType>
				<!-- Campo: DT6_DOCTMS -->
		</TransportDocument>
	</ListOfDocuments>
 
</BusinessContent>

 

  • Recebimento da resposta: Ao receber a resposta do Financeiro ACR Datasul, identifique o status do processamento e posicione na fatura, por meio do código que está contido nas tags da mensagem original. Caso o status seja de processamento OK, então verifique o conteúdo de retorno onde estarão as informações dos títulos gerados para a fatura e com isso atualize o histórico, dados da fatura e mude o status da mesma para Fatura integrada. Caso o status seja de processamento com erro, então deverão ser apresentadas as mensagens de erro.

 

Informações para Codificação


  • Como identificar a fatura?
    Por meio do InternalId recebido na lista ListOfInternalId.

 

  • Como gerar o histórico com as informações do título?
    Percorra o título da fatura por meio da lista ListOfAccountReceivableDocument e no histórico coloque da seguinte forma:

    Integração com o financeiro realizada com sucesso.
    Título gerado: (Estab., Espécie, Série, Título / Parcela, Vencto, Valor)
    BranchId, DocumentTypeCode, DocumentPrefix, DocumentNumber / DocumentParcel, DueDate, RealValue

 

  • Como identificar os erros para atualizar o histórico?
    Percorra a lista de mensagens em ListOfMessages.


  • Quais informações deverão ser atualizadas na fatura no processamento da resposta de integração?
CampoTAG
DRT_DTVENCListOfAccountReceivableDocumentAccountReceivableDocumentDueDate
DRT_TIPCOBListOfAccountReceivableDocumentAccountReceivableDocumentHolderType
DRT_VALJURListOfAccountReceivableDocumentAccountReceivableDocumentAssessmentValue
DRT_LIMDESListOfAccountReceivableDocumentAccountReceivableDocumentDiscountDate
DRT_VALDESListOfAccountReceivableDocumentAccountReceivableDocumentDiscountValue
DRT_BANCOListOfAccountReceivableDocumentAccountReceivableDocumentHolderCode
DRT_AGENCListOfAccountReceivableDocumentAccountReceivableDocumentAgencyNumber
DRT_CTACORListOfAccountReceivableDocumentAccountReceivableDocumentAccountNumber


  

TMSI852 - Adapter Status da Fatura

Deverá ser criado um programa de adapter para tratamento da mensagem recebida relacionada ao Status da Fatura.

O novo programa de adapter deverá atuar nos seguintes pontos:

RotinaPonto a ser chamadoMensagem (Entidade)TipoModo
Mensagens Recebidas (DATASUL)Título baixadoTransportInvoiceStatusRecebimentoAssíncrona
Título protestadoTransportInvoiceStatusRecebimentoAssíncrona

 

O único objetivo do adapter será processar as mensagens recebidas do Financeiro ACR Datasul para a atualização do status da fatura, conforme as seguintes regras:

Ao receber a mensagem TransportInvoiceStatus (XSD: TransportInvoiceStatus_1_000):

  • Deverá posicionar na fatura conforme código recebido e atualizar o status da mesma para Fatura Protestada, se houver algum título com indicação de protesto do banco (TAG DocumentBankingStatus = 3), ou Fatura Totalmente Baixada, quando o saldo do título da fatura estiver zerado, Fatura Parcialmente Baixada, quando o saldo do título da fatura for menor que o valor original mas não zerado, ou Fatura Integrada se o tipo do evento for DELETE que significa que foi Estornada ou Cancelada a baixa de um título da fatura.

Dicas de Codificação

Ao receber a mensagem, identifique a Fatura por meio do DE-PARA do InternalId recebido. Percorra o título da fatura por intermédio da lista ListOfAccountReceivableDocument, confira o saldo do título por meio do RealValue e o valor bruto por intermédio do GrossValue para identificar se houve ou não baixa parcial ou total e assim atualizar o status da fatura.

 

 

EDI - Layout DOCCOB

O DOCCOB é um layout EDI correspondente a fatura eletrônica que contém os dados dos conhecimentos e/ou notas fiscais de serviço de transporte a serem pagos. A transportadora envia ao embarcador. Como a fatura de transporte será armazenada na nova tabela DRT, é importante que as informações necessárias para a emissão deste layout estejam disponíveis para configuração no EDI, assim como hoje estão para a tabela SE1 (Contas a Receber) quando a integração é com SIGAFIN.

Abaixo, segue a relação de informações do layout e campos da nova tabela:

DOCUMENTO DE COBRANÇA
InformaçãoCampo/Informação correspondente
IDENTIFICADOR DE REGISTRO"352"
FILIAL EMISSORA DO DOCUMENTODRT_FILDEB
TIPO DO DOCUMENTO DE COBRANÇA"0"
SÉRIE DO DOCUMENTO DE COBRANÇA<Na fatura, haverá apenas o número>
NÚMERO DO DOCUMENTO DE COBRANÇADRT_NUM
DATA DE EMISSÃODRT_DTEMIS
DATA DE VENCIMENTODRT_DTVENC
VALOR DO DOCUMENTO DE COBRANÇADRT_VALOR
TIPO DE COBRANÇADRT_TIPCOB
VALOR TOTAL DO ICMS<Total ICMS dos conhecimentos da fatura>
VALOR – JUROS POR DIA DE ATRASODRT_VALJUR
DATA LIMITE P/ PAGTO C/ DESCONTODRT_LIMDES
VALOR DO DESCONTODRT_VALDES
IDENTIFICAÇÃO DO AGENTE DE COBRANÇADRT_BANCO - Identificar o nome do banco
NÚMERO DA AGÊNCIA BANCÁRIADRT_AGENC - Identificar o número da agência
DÍGITO VERIFICADOR NUM. DA AGÊNCIADRT_AGENC - Identificar o dig. verificador da agência
NÚMERO DA CONTA CORRENTEDRT_CTACOR - Identificar o número da conta
DÍGITO VERIFICADOR CONTA CORRENTEDRT_CTACOR - Identificar o dígito verificar da conta
AÇÃO DO DOCUMENTO"1"
FILLER" "

 

 

 oMarkBrw:Refresh(.T.) oMarkBrw:GoTop(.T.)

Protótipo de Tela

TMSA851 - Tela Base


TMSA851 - Parâmetros e Filtros


TMSA851 - Seleção de Documentos


TMSA851 - Histórico


TMSA492 - Tela Base


TMSA492 - Parâmetro Geração


TMSA492 - Seleção Faturas

 

 

Fluxo do Processo

Mapa mental - TMS x Integr. Contas a Receber

Para visualizar o mapa mental por meio da ferramenta XMind, faça o download do arquivo TMS x ACR.

Dicionário de Dados

Arquivo ou Código do Script: DRT - Fatura de Transporte a Receber

Índice

Chave

01

DTR_FILIAL+DRT_NUM

02

DRT_FILIAL+DRT_CLIFAT+DRT_LOJFAT

CampoTipoTamanhoDecimaisValor InicialMandatórioDescriçãoTítuloPictureHelp de CampoCons. PadrãoGrp. CamposContextoInic. Browse
DRT_FILIALC2  Sim(X)Não(  )Filial do SistemaFilial@!Filial do sistema 33Real 
DRT_NUMC9  Sim(X)Não(  )Código da FaturaNo. Fatura@!Código da fatura 18Real 
DRT_FILDEBC2  Sim(X)Não(  )Filial de DébitoFil. Débito@!Filial de débito da faturaSM033Real 
DRT_CLIFATC6  Sim(X)Não(  )Cliente da FaturaCliente@!Cliente da faturaSA11Real 
DRT_LOJFATC2  Sim(X)Não(  )Loja da FaturaLoja@!Loja do cliente da fatura 2Real 
DRT_NOMFATC40  Sim(  )Não(X)Nome do ClienteNome@!Nome do cliente da fatura  VirtualPosicione("SA1",1,xFilial("SA1")+DRT->(DRT_CLIFAT+DRT_LOJFAT),"A1_NOME")
DRT_DTEMISD8  Sim(X)Não(  )Data de EmissãoEmissão Data de emissão da fatura  Real 
DRT_DTVENCD8  Sim(  )Não(X)Data de VencimentoVencimento Data de vencimento da fatura  Real 
DRT_DTCANCD8  Sim(  )Não(X)Data de CancelamentoCancelamento Data de cancelamento da fatura  Real 
DRT_VALORN142 Sim(X)Não(  )Valor Total da FaturaValor@E99,999,999,999.99Valor total da fatura  Real 
DRT_MOEDAN2  Sim(X)Não(  )Moeda da FaturaMoeda99Moeda da fatura  Real 
DRT_STATUSC1  Sim(  )Não(X)Status da FaturaStatus@!Status da fatura  Real 
DRT_CODHISC6  Sim(  )Não(X)Histórico da FaturaHistórico@!Histórico da fatura  Real 
DRT_FILDOCC2  Sim(  )Não(X)Filial do DocumentoFil.Docto.@!Filial do documento de apoio 18Real 
DRT_DOCC9  Sim(  )Não(X)Número do DocumentoNo.Docto.@!Número do documento de apoio  Real 
DRT_SERIEC3  Sim(  )Não(X)Série do DocumentoSérie Docto.!!!Série do documento de apoio 94Real 
DRT_ACRESCN142 Sim(  )Não(X)Valor AcréscimoVl.Acresc.@E 999,999,999.99Valor total de acréscimo da fatura  Real 
DRT_DECRESN142 Sim(  )Não(X)Valor DecréscimoVl.Decresc.@E 999,999,999.99Valor total de decréscimo da fatura  Real 
DRT_CODUSRC6  Sim(  )Não(X)Código do usuárioUsuário@!Código do usuário que gerou a fatura  Real 
DRT_NOMUSRC

40

  Sim(  )Não(X)Nome do usuárioNome Usuário@!Nome do usuário que gerou a fatura  VirtualUsrRetName(DRT->DRT_CODUSR)
DRT_TIPCOBC3  Sim(  )Não(X)Tipo de CobrançaTip.Cobrança@!Tipo de cobrança  Real 
DRT_VALJURN162 Sim(  )Não(X)Valor de JurosValor Juros@E 99,999,999,999,999.99Valor de juros por dia de atraso  Real 
DRT_LIMDESD8  Sim(  )Não(X)Data Limite de DescontoDt.Lim.Desc Data limite para pagamento com desconto  Real 
DRT_VALDESN162 Sim(  )Não(X)Valor de DescontoVl.Desconto@E 99,999,999,999,999.99Valor de desconto  Real 
DRT_BANCOC10  Sim(  )Não(X)BancoBanco@!Banco  Real 
DRT_AGENCC10  Sim(  )Não(X)AgênciaAgência@!Agência  Real 
DRT_CTACORC20  Sim(  )Não(X)Conta CorrenteCta.Corrente@!Conta corrente  Real 
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.