Árvore de páginas

Índice


Objetivo

Para os usuários que possuem algum aplicativo customizado, integração de documentos de carga, integração do romaneio e necessitam que seja realizado o cálculo automático do romaneio no produto Gestão de Frete Embarcador (SIGAGFE), foi disponibilizado o método Web Service REST para realizar o Cálculo do Romaneio.

Para utilização, é necessário a atualização do produto e a configuração do Web Service REST, conforme descrito nos pré-requisitos.

Método Publicado

FonteGFEWSCALCULATION
Nome do ServiçoFREIGHTCALCULATION


Pré-requisitos para Utilização

  • Atualização do Microsiga Protheus com versão igual ou superior a 12.1.17.
  • Atualização da Build 131227a a partir da versão 13.2.3.6.
  • Configuração do AppServer para disponibilizar as rotinas publicadas com o Web Service REST.
  • Após a configuração do Web Service REST, ao executar o appserver via console, será apresentada uma mensagem, informando que o Web Service REST está habilitado, vide imagem abaixo.


  • Pelo navegador de Internet, é possível visualizar todos os serviços disponíveis, inclusive a API FREIGHTCALCULATION.

  • API FREIGHTCALCULATION.

Métodos disponíveis no API FREIGHTCALCULATION.

Exemplo de Utilização

Para realizar testes, pode ser utilizado qualquer programa de sua preferência que teste API Web Service REST.

Como exemplos de programas, podemos citar o SoapUI ou a extensão Postman do Navegador Chrome. Ambos são excelentes aplicativos.


Utilizando o Postman para Realizar o Cálculo de Frete

A API FREIGHTCALCULATION disponibiliza o método GET, onde é retornado o arquivo de exemplo no formato JSON, que poderá ser utilizado para executar o método POST.

Na ferramenta Postman, copie o exemplo retornado, altere para executar o POST e cole o exemplo no Body (corpo).
Altere as informações dos campos para dados válidos da base de dados e execute o cálculo do romaneio (mais abaixo tem a explicação de cada campo do arquivo JSON).

Após executar o cálculo do romaneio, o resultado será retornado no formato JSON.

Exemplo de arquivo JSON

Arquivo JSON de entrada para ser utilizado como base, informando dois romaneios.

JSON Entrada
{
    "content": [
        {
            "Items": [
                {
                    "Manifest": [
                        {
                            "Items": [
                                {
                                    "id": "ManifestNumber",
                                    "Description": "Número do Romaneio para cálculo",
                                    "value": "10000000",
                                    "length": 8,
                                    "type": "string"
                                }
                            ]
                        },
                        {
                            "Items": [
                                {
                                    "id": "ManifestNumber",
                                    "Description": "Número do Romaneio para cálculo",
                                    "value": "20000000",
                                    "length": 8,
                                    "type": "string"
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}


Arquivo JSON de entrada mínimo, utilizado como base, informando apenas um romaneio.

JSON Entrada - Mínimo para cálculo
{
    "content": [
        {
            "Items": [
                {
                    "Manifest": [
                        {
                            "Items": [
                                {
                                    "id": "ManifestNumber",
                                    "value": "10000000",
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}


Arquivo JSON exemplo do retorno com cálculo executado com sucesso.

JSON Saída - Cálculo Executado com Sucesso
{
    "content": [
        {
            "Items": [
                {
                    "FreightCalculation": [
                        {
                            "Items": [
                                {
                                    "id": "ManifestNumber",
                                    "Description": "Número do Romaneio para cálculo",
                                    "FileMessage": "\\LOG_GFE\\CalculoFrete_T1D MG 01     _20180221_134644_175.LOG",
                                    "value": "10000000",
                                    "Status": "ok",
                                    "Message": "Cálculo realizado com sucesso"
                                }
                            ]
                        }
                    ],
                    "Status": "ok",
                    "Message": "freightcalculations: Cálculo(s) de Frete realizado(s). Verifique o Status de cada Romaneio calculado."
                }
            ]
        }
    ]
}



Arquivo JSON exemplo de cálculo não realizado.

JSON Saída - Cálculo não realizado
{
    "content": [
        {
            "Items": [
                {
                    "FreightCalculation": [
                        {
                            "Items": [
                                {
                                    "id": "ManifestNumber",
                                    "Description": "Número do Romaneio para cálculo",
                                    "FileMessage": "",
                                    "value": "00000017",
                                    "Status": "error",
                                    "Message": "Não foi possível recalcular nenhum frete para documentos relacionados ao romaneio. Motivos:\r\nHá cálculos vinculados a Pré-Faturas.\r\nHá documentos de carga vinculados a documento de frete.\r\n"
                                }
                            ]
                        }
                    ],
                    "Status": "ok",
                    "Message": "freightcalculations: Cálculo(s) de Frete realizado(s). Verifique o Status de cada Romaneio calculado."
                }
            ]
        }
    ]
}


Arquivo JSON exemplo de validação do número do romaneio (ManifestNumber).

JSON Saída - Validação Número Romaneio
{
    "content": [
        {
            "Items": [
                {
                    "FreightCalculation": [
                        {
                            "Items": [
                                {
                                    "id": "ManifestNumber",
                                    "Description": "Número do Romaneio para cálculo",
                                    "FileMessage": "",
                                    "value": "00010017",
                                    "Status": "error",
                                    "Message": "Campo ManifestNumber. Número do Romaneio informado não é válido, romaneio não encontrado na base de dados. (D MG 01 00010017)"
                                }
                            ]
                        }
                    ],
                    "Status": "ok",
                    "Message": "freightcalculations: Cálculo(s) de Frete realizado(s). Verifique o Status de cada Romaneio calculado."
                }
            ]
        }
    ]
}


Arquivo JSON exemplo com cálculos executados e outros não executados.

JSON Saída - Validação Tipo de Operação
{
    "content": [
        {
            "Items": [
                {
                    "FreightCalculation": [
                        {
                            "Items": [
                                {
                                    "id": "ManifestNumber",
                                    "Description": "Número do Romaneio para cálculo",
                                    "FileMessage": "\\LOG_GFE\\CalculoFrete_T1D MG 01     _20180221_135338_785.LOG",
                                    "value": "100003  ",
                                    "Status": "ok",
                                    "Message": "Cálculo realizado com sucesso"
                                }
                            ]
                        },
                        {
                            "Items": [
                                {
                                    "id": "ManifestNumber",
                                    "Description": "Número do Romaneio para cálculo",
                                    "FileMessage": "",
                                    "value": "20000000",
                                    "Status": "error",
                                    "Message": "Campo ManifestNumber. Número do Romaneio informado não é válido, romaneio não encontrado na base de dados. (D MG 01 20000000)"
                                }
                            ]
                        },
                        {
                            "Items": [
                                {
                                    "id": "ManifestNumber",
                                    "Description": "Número do Romaneio para cálculo",
                                    "FileMessage": "",
                                    "value": "00001801",
                                    "Status": "error",
                                    "Message": "Não há documentos relacionados ao romaneio."
                                }
                            ]
                        },
                        {
                            "Items": [
                                {
                                    "id": "ManifestNumber",
                                    "Description": "Número do Romaneio para cálculo",
                                    "FileMessage": "",
                                    "value": "00000017",
                                    "Status": "error",
                                    "Message": "Não foi possível recalcular nenhum frete para documentos relacionados ao romaneio. Motivos:\r\nHá cálculos vinculados a Pré-Faturas.\r\nHá documentos de carga vinculados a documento de frete.\r\n"
                                }
                            ]
                        }
                    ],
                    "Status": "ok",
                    "Message": "freightcalculations: Cálculo(s) de Frete realizado(s). Verifique o Status de cada Romaneio calculado."
                }
            ]
        }
    ]
}


Arquivo JSON exemplo de Build Desatualizada.

JSON Saída Build Desatualizada
{
    "errorCode": 500,
    "errorMessage": "invalid class JSSONOBJECT"
}

Detalhamento das Tags de Entrada

Manifest - Informações do romaneio. Ocorrências 1 ou mais.
FieldConteúdo / DescriçãoObservação
idNome da TAG - ManifestNumberObrigatório.
DescriptionDescrição do campo - Número do Romaneio
valueNúmero do romaneio a ser calculadoObrigatório.
LengthTamanho do campo do número do manifesto.
typeTipo da informação - Alfanumérica


Detalhamento das Tags de Saída

FreightCalculation - Informações do romaneio. Ocorrências 1 ou mais.
FieldConteúdo / DescriçãoObservação
idNome da TAG - ManifestNumberObrigatório.
DescriptionDescrição do campo - Número do Romaneio
valueNúmero do romaneio a ser calculadoObrigatório.
FileMessageCaminho do arquivo de LOG do cálculo do frete, quando parametrizado para gerar LOG de cálculo.
Satus

Indica se o cálculo foi realizado:
ok- Cálculo realizado;
error - Cálculo não realizado.


MessageMensagem da situação do cálculo. Quando não realizado com sucesso, indica o motivo.


Detalhamento técnico da estrutura do arquivo

Estrutura do arquivo de entrada.

TAGSDescrição
contents



Agrupador.

items


Agrupador.


manifest

Agrupador dos romaneios.



Items
Agrupador.




idNome da Tag




DescriptionDescrição detalhada da Tag




valueNúmero do romaneio




lengthTamanho do campo esperado




typeTipo do campo


Estrutura do arquivo do cálculo de frete realizado.

TAGSDescrição
content



Agrupador.

Items


Agrupador.


FreightCalculation
Agrupador.


Status

Status.


Message

Mensagem do Status.



Items
Agrupador.




idNome da Tag




DescriptionDescrição detalhada da Tag




FileMessageCaminho do arquivo de LOG configurado no Protheus para gravação do Log de cálculo de frete.




valueNúmero do romaneio que foi realizado o cálculo




StatusIndica se o romaneio foi ou não calculado.
ok - indica que foi calculado com sucesso
error - indica que houve problema no cálculo do romaneio.




MessageMensagem do cálculo. Em caso de não realizado o cálculo, será detalhado o motivo.


Estrutura do arquivo do cálculo de frete não realizado.

TAGSDescrição
content

Agrupador.

Items
Agrupador.


StatusStatus.


MessageMensagem do Status.


ErrorMensagem de erro.