Árvore de páginas

Versões comparadas

Chave

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

 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

 

Projeto1

 

IRM1

 

Requisito1

 

Subtarefa1

 

Chamado2

 

País

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

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Outros

<Caso necessário informe outras referências que sejam pertinentes a esta especificação. Exemplo: links de outros documentos ou subtarefas relacionadas>.

   Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos). 

Objetivo

Integrar as informações de contas a pagar geradas pelo módulo SIGATMS (Transportation Management System) da linha Microsiga Protheus  com o módulo FINANÇAS APB da linha Datasul.

O Protheus usará como ferramenta de Integração o EAI(Enterprise Application Integrator), o EAI por sua vez, terá a responsabilidade de trafegar mensagens de 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

Para cumprir o objetivo deste requisito será necessário retirar a amarração que o SIGATMS possui com tabelas e rotinas do SIGAFIN. Esta amarração só deverá ser retirada quando o transportador estiver trabalhando com integração com outro ERP que não seja Protheus. Para isto, será criado o parâmetro MV_TMSERP, este parâmetro definirá qual é o sistema que o TMS está integrado, onde: 0=Protheus;1=DATASUL, sendo assim, se houver outro ERP  a ser integrado pelo SIGATMS o mesmo poderá ser cadastrado como "2" e assim sucessivamente.

Quando o parâmetro MV_TMSERP estiver igual á "0" - PROTHEUS, o SIGATMS deverá se comportar como se comporta hoje, ou seja, chamando as rotinas do financeiro (050MANSE2, FINA050 e FINA080), para geração e baixa de títulos respectivamente, além de continuar analisando as tabelas SE2 e SE5.

Porém se o parâmetro MV_TMSERP estiver igual á "1" - DATASUL, o SIGATMS deverá enviar mensagens para o DATASUL, solicitando a criação de títulos e impostos e solicitando o retorno de forma síncrona em alguns casos.

Abaixo Mapa Mental com as rotinas que sofrerão alterações caso o parâmetro MV_TMSERP esteja igual à '1'.

 


Seguem as rotinas que devem ser alteradas para que seja realizada a leitura do parâmetro: MV_TMSERP, e caso o conteúdo do parâmetro seja igual a '1', toda chamada às rotinas: A050ManSe2(), FINA050, FINA080, devem ser alteradas para chamar o EAI do Protheus para que o título/baixa seja realizada no DATASUL.


FonteTipo de OperaçãoAceso Menu
TMSA070 - Movimento Custo de TransporteAlteraçãoAtualizações/Transporte/Movto.custo Transp
TMSA370 - Ocorrência de IndenizaçãoAlteraçãoAtualizações/Seguro/Reg. de Indenizações
TMSA330 - Fechamento de SeguroAlteraçãoAtualizações/Seguro/Fechamento
TMSA250 - Contrato de CarreteiroAlteraçãoAtualizações/Terceiros/Contrato Carret.
TMSA240 - Complemento da ViagemAlteraçãoAtualizações/Viagens
TMSIABP - Integração TMS X ABP DatasulInclusão 

 

Abaixo exemplo do que deve ser alterado nos fontes citados, deve-se criar apenas um novo fonte (TMSINTABP) que será chamado pelas rotinas acima e pelos retornos enviados pelo APB do Datasul.


Âncora
TMSA70
TMSA70
TMSA070  - Movimentos de Custo de Transporte

  ÂncoraTMSA70TMSA70

code
Bloco de código
titleExemplo
linenumberstrue
collapsetrue
Local lTmsERPDTS := SuperGetMV("MV_TMSERP",,'0') == '1'


If lTmsERPDTS
         //--Chama Rotina que fará a geração e envio do XML ao EAI (Essa rotina pode trabalhar de forma assíncrona)
                    //Integração via Mensagem Única
                    If cFilMsg == "1" .and. FWHasEAI('TMSIABP',.T.,,.T.)
                            FwIntegDef( 'TMSA070', , , , 'TMSA070' )
                   EndIf
Else 
         A050ManSE2(,DTY->DTY_VIAGEM,cPrefixo,cTipNDF,cParcela,SDG->DG_VALCOB,0,DTY->DTY_CODFOR,DTY->DTY_LOJFOR,;
         cNatuDeb,1,Nil, "SIGATMS", Date(), , Date(), , cFilAnt, {})
EndIf


Além de analisar as chamadas das funções 050ManSE2, deverá ser alterado os trechos onde são analisadas diretamente as tabelas do SIGAFIN. Exemplo: SE2 e SE5.
If !Empty(SDG->DG_FILORI) .And. !Empty(SDG->DG_VIAGEM) .And. DTY->(MsSeek(xFilial("DTY")+SDG->(DG_FILORI+DG_VIAGEM) )) .And.;
         (!lTMSOPdg .Or. lGerComp)
         If lTmsERPDTS
                //--Chama rotina que buscará os títulos no DATASUL ref. ao contrato de carreteiro já gerado. Essa rotina por se tratar de consulta deve trabalhar de forma síncrona.
                aRet := TMSIABP (2,DTY->DTY_VIAGEM, DTY_NUMCTC, SDG->DG_VALCOB, DTY_CODFOR, DTY_LOJFOR)
                 If Empty(aRet)
                            Aviso('Não foi encontrado título algum para o contrato de carreteiro informado')
                 EndIf   
      Else
         cOrigem := 'COM' //-- Complemento
         cParcela := StrZero(1, Len(SE2->E2_PARCELA)) 
         If lGerTit
                  cPrefixo := TMA250GerPrf(cFilAnt) 
                  cParc := StrZero(1, Len(SE2->E2_PARCELA)) 
                  SE2->(dbSetOrder(6))
                  If SE2->( MsSeek( cSeek := xFilial("SE2") + DTY->DTY_CODFOR + DTY->DTY_LOJFOR + cPrefixo + PadR(DTY->DTY_VIAGEM, Len(SE2->E2_NUM)) ) )
                           If SDG->(FieldPos("DG_PARC")) > 0
                                    Do While !SE2->(Eof()) .And. SE2->(E2_FILIAL+E2_FORNECE+E2_LOJA+E2_PREFIXO+E2_NUM) == cSeek
                                             cParc:=Soma1(SE2->E2_PARCELA)
                                             SE2->(dbSkip())
                                    EndDo
                           Else
                                    Aviso( STR0021 , STR0022 , { STR0024 } ) //"Atencao" ### "Foi encontrado na tabela SE2 um registro com a mesma chave primária, portanto não será possível efetuar a gravação." ### "OK" 
                                    Final( STR0023 ) // Execute o update UpdTMS32 
                           EndIf 
                  EndIf 
                  cParcela := cParc
         EndIf
      EndIf
EndIf

Movimento Custo Transporte 

 

 

 

 

 

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