Realizado

Programação Delphi - Interface com Webservice Json

Publicado em 11 de Janeiro de 2019 dias na TI e Programação

Sobre este projeto

Aberto

Tenho um ERP em Delphi XE 10.1 Berlin. Um dos meus clientes, está localizado em um shopping que está exigindo que ele envie informações de venda.

Desejo fazer utilizando o envio de informações via webservice.

Minha base de dados está em firebird e utilizo UniDac. Quero que o orçamento seja feito em Delphi. Prefiro que utilize UniDac, mas aceito que seja feito com AnyDac.


Abaixo, documentação fornecida pela empresa

DOCUMENTAÇÃO WEBSERVICE
Disponibilizamos o WebService para o envio dos arquivos através do método POST, os arquivos devem ser exportados com as informações de vendas e produtos/serviços vendidos.
Os arquivos podem ser zipados porém não podem estar dentro de pastas.
Dados obrigatórios
Os dados de vendas/serviços vendidos são obrigatórios. Especificamente as informações que deverão conter são;
Vendas
● Código da loja
○ Pode ser um número de filial ou CNPJ. (Vamos usar o CNPJ).

● Código da Venda
○ Pode ser um número do cupom/nf, id do registro ou um código único. (Vamos usar como código o Modelo / Serie / Número da Nota)
● Total
○ Valor total da venda
● Data/Hora
○ Data + Hora da venda
● Forma de Pagamento ○ Item opcional
Trocas / Devoluções
Os valores de troca e devolução podem ser calculados no valor da venda ou informados em registros separados. Por exemplo:
● Situação 1, valor da troca abatido no valor da venda:
○ Valor total da venda: R$ 500,00
○ Valor de troca: R$ 300,00 (parte do pagamento)
○ Valor informado a Napp: R$ 200,00
● Situação 2, valor da troca informado separadamente
○ Valor total da venda: R$ 500,00
○ Valor de troca: R$ 300,00 (parte do pagamento)
○ Valor informado a Napp: R$ 500,00
○ Outro registro deve ser informado como negativo (-R$ 300,00) ou informar o
valor como positivo e indicar numa flag como troca (troca=true).

Cancelamentos
Os cancelamentos devem ser informados quando houver possibilidades de cancelar um registro após informado a Napp.
Se uma venda for cancelada, para cancelar uma venda retroativa no sistema Esphera será preciso informar a venda novamente com o mesmo código e valor R$ 0,00.
Ou se preferir pode ser implementado uma flag indicando um cancelamento.

Exemplo JSON
Segue JSON de exemplo, os campos são sugestões, podem ser parametrizados conforme preferência mas devem atender os requisitos do manual.
  [
{
} ]
"Cod_loja"​: ​"001"​,
"cod_venda"​: ​"001000001"​, "data_hora"​: ​"2018-06-25 10:15:28"​, "cancelado"​: ​false​,
"troca"​: ​false​,
"total"​: 509.70
  Exemplo CSV
Segue CSV de exemplo, os campos utilizam o delimitador “;”.
Cod_loja;cod_venda;data_hora;cancelado;troca;total
001;001000001;2018-06-25 10:15:28;false,false,509.70
001;001000002;2018-06-25 10:20:15;false,false,210.20
001;001000003;2018-06-25 10:45:35;false,false,199.19
Formatos válidos
.XLS, .XLSX, .XML, .Json, .csv/txt
os arquivos ​devem​​ seguir uma nomenclatura padrão: ​loja_data_hora, ​​ex​: 001_20180723_120101.csv

Endpoint’s
URL’s
- Autenticação: ​https://publisher.nappsolutions.com/auth
- Upload: ​https://publisher.nappsolutions.com/upload
Autenticação
curl -X POST 'https://publisher.nappsolutions.com/auth' \
-H 'content-type: application/json' \
-d '{ "username" : "username", "password" : "password" }'
O retorno da chamada será o token de autenticação utilizado no endpoint de upload.
Upload
curl -X POST \
https://publisher.nappsolutions.com/upload \
-H 'Authorization: <TOKEN>' \
-H 'content-type: multipart/form-data' \
-F file=@/home/001_20180723_120101.zip \
-F ‘type=vendas’ # vendas / produtos / estoque
Em “file” passar o caminho completo do arquivo, se subir duas vezes um arquivo com o mesmo nome vai sobrescrever o último arquivo enviado.
Em “type” atribuir o tipo de envio referente ao arquivo exportado, podendo ser: “vendas”, “produtos” ou “estoque”.
Conclusão
Após realizar corretamente o upload do arquivo, o servidor irá retornar com uma mensagem de ​sucesso​​, com isso, basta solicitar aos técnicos da Napp Solutions a confirmação do envio.
Após um período de homologação e com o OK dos técnicos a loja passará para produção de forma automática.

Categoria TI e Programação
Subcategoria Programação
Qual é o alcance do projeto? Bug ou alteração pequena
Isso é um projeto ou uma posição de trabalho? Um projeto
Tenho, atualmente Eu tenho especificações
Disponibilidade requerida Conforme necessário
Experiência nesse tipo de projeto Sim (Eu já gerenciei esse tipo de projeto)
Funções necessárias Desenvolvedor

Prazo de Entrega: Não estabelecido

Habilidades necessárias

Outro projetos publicados por M. C.