Completed

Programação Delphi - Interface com Webservice Json

Published on the January 11, 2019 in IT & Programming

About this project

Open

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.

Category IT & Programming
Subcategory Web development
What is the scope of the project? Small change or bug
Is this a project or a position? Project
I currently have I have specifications
Required availability As needed
Experience in this type of projects Yes (I have managed this kind of project before)
Roles needed Developer

Delivery term: Not specified

Skills needed

Other projects posted by M. C.