Importação de Nota Fiscal do TOTALI para o EME4

EME4 | Importação de Nota fiscal  do M4Server.

Links complementares

Totali x EME4 – Passo a Passo para Implantação/Integração

Integração EME4 e Totali

Para configurar a integração do Totalli com o M4Server é necessário entrar primeiramente no executável de configuração do middleware chamado de WSMiddleware:

 

 

Nessa tela , clicar na aba “Configurações por Empresa”

[Escolher uma empresa para configurar ou criar uma nova.]

Caso seja uma empresa nova, utilizar a documentação do WSMiddleware para saber como configurar uma empresa corretamente. Escolher a aba 7 – Integração, e posteriormente a aba M4Server

Preencha a URL onde o M4Server estiver rodando, inclusive com a porta, o usuário e senha do EME4 e com campo company com o código da empresa do EME4 [Empresa, não filial.]

A porta que deve ser informada é a porta que está parametrizada no M4Server. Para isso abra o M4ServerConfig e verifique a coluna “Porta”

O usuário que for informado na configuração do middleware deve estar marcado no cadastro de usuário como Comum/Web

 

Após a configuração do middleware e do usuário do EME4, ele estará pronto para transmitir as vendas recebidas.

Quando uma venda for recebida pelo middleware, ele seguira p seguinte fluxo lógico:

Verificará se está a parametrizada a integração com o M4Server.

Caso esteja, ele verificará se já há a informação de token de login.

Caso o token de login não esteja definido ele enviará uma requisição POST para o endpoint \Autenticar com o usuário, senha e company informados na configuração no header da requisição:

 

Caso a autenticação seja realizada com sucesso, será retornado nos headers da resposta algumas informações, sendo a principal o token de autorização, chamado de Session-Id. Esse token é guardado para as próximas requisições não necessitarem de autenticação.

[Esse token deve ser enviado nos headers das próximas requisições.]

 

Realizada a autenticação o middleware irá selecionar uma venda por vez que estiver na fila de transmissão e irá montar com ela um JSON, com a seguinte estrutura:

{

 “classe”: “GerenciamentoWebService”,

  “metodo”“9”,

  “parametros”: {

    “Documentos”: [

      {

        “key”“XXX”,

        “siglasistorigem”“TOT”,

        “nrodocto””     1″,

        “NroDoctoTerc”“1”,

        “TipoOperacao”“997”,

        “dataemissao”“27/06/2023”,

        “dataentradasaida”“27/06/2023”,

        “chavenfe”: “XXX”,

        “SituacaoDOC”“1”,

        “SituacaoNFE”“5”,

        “Serie”: {

          “CodSerie”“501”,

          “TipoSerie”“1”

        },

        “Filial”: {

          “CNPJ_FilialEmit”“88888888888888”

        },

        “Cliente”: {

          “CPFCNPJ_CliForn”“88888888888”

        },

        “representante”: {

          “CPFCNPJ_REPRE”“88888888888”

        },

        “dados_entrega”: {

          “ValorFreteEntrega”“0”,

          “cep_localent”“00000000”

        },

        “itens”: [

          {

            “codprod”“XXX”,

            “codalmox”“XXX”,

            “qdade”1,

            “valunitario”685,

            “Tributacao”: {

              “ValorIPI”0,

              “BaseIPI”0,

              “AliqIPI”0,

              “CSTIPI”“J”,

              “ValorICMS”116.45,

              “BaseICMS”685,

              “AliqICMS”17,

              “PercRedBaseICMS”0,

              “ValorICMSST”0,

              “AliqICMSST”0,

              “BaseICMSST”0,

              “PercRedBaseST”0,

              “CSTICMS”“00”,

              “ValorPIS”0,

              “BasePIS”0,

              “ALiqPIS”0,

              “ValorCOFINS”0,

              “BaseCOFINS”0,

              “AliqCOFINS”0,

              “CSTCOFINS”: “D”,

              “BaseII”0,

              “ValorII”0

            }

          }

        ],

        “Parcelas”: [

          {

            “SeqParcela”1,

            “DataVencto”“27/06/2023”,

            “Valor”685

          }

        ]

      }

    ]

  }

}

Esse json será incluído no body de uma requisição POST para o endpoint \ExecutarMetodo e a venda será validada e inserida no EME4.  Será retornado um json padrão para sucesso ou erro, sendo diferenciado pelo par detreqws_status. Caso seja “S”, verificar o par detreqws_idregistroerp para descobrir o identificador interno da venda que foi gravado no ERP.

Caso o par detreqws_status esteja com o valor “E”, verifique o valor dos pares detreqws_descerro e detreqws_descricao para verificar qual o erro ocorrido e em qual documento.

 

{

    “result”: [

        {

            “RowId”: 1,

            “detreqws_chave”: “XXX”,

            “detreqws_status”“E”,

            “detreqws_descerro”“TipoDocto Chave Registro [XXX]\r”,

            “detreqws_descricao”“Erro Documento Nro. [1] Nro. Terc.[1 ].”,

            “detreqws_tabelaerp”“M3_DOCTO”,

            “detreqws_idregistroerp”0

        }

    ]

}

Diagrama da sequência de ativação: