Skip to content

Commit afb116c

Browse files
feat: atualizar para v296 (#27)
2 parents e57697f + 6363773 commit afb116c

File tree

8 files changed

+170
-4
lines changed

8 files changed

+170
-4
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
Pacote de integração com a [API v3 do ERP Bling](https://developer.bling.com.br)
1111
para Javascript/TypeScript. O mais completo existente.
1212

13-
Atualizado com a versão `v295` da API ([veja o registro de alterações](https://developer.bling.com.br/changelogs#2024-02-28)).
13+
Atualizado com a versão `v296` da API ([veja o registro de alterações](https://developer.bling.com.br/changelogs#2024-02-28)).
1414

1515
**Atenção**: a versão 5.0.0+ do `bling-erp-api` para Javascript/TypeScript
1616
utiliza a API v3 do Bling. Caso deseja utilizar a API v2 do Bling,

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "bling-erp-api",
3-
"version": "5.5.0",
3+
"version": "5.6.0",
44
"description": "Pacote de integração com a API do Bling ERP",
55
"main": "lib/bling.js",
66
"directories": {
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
export default {
2+
data: {
3+
id: 12345678,
4+
nome: 'Contato',
5+
codigo: 'ASD001',
6+
situacao: 'A' as const,
7+
numeroDocumento: '12345678910',
8+
telefone: '(54) 3333-4444',
9+
celular: '(54) 99999-8888',
10+
fantasia: 'Nome fantasia',
11+
tipo: 'J' as const,
12+
indicadorIe: 1 as const,
13+
ie: '123.456.789.101',
14+
rg: '1234567890',
15+
orgaoEmissor: '1234567890',
16+
17+
endereco: {
18+
geral: {
19+
endereco: 'R. Olavo Bilac',
20+
cep: '95702-000',
21+
bairro: 'Imigrante',
22+
municipio: 'Bento Gonçalves',
23+
uf: 'RS' as const,
24+
numero: '914',
25+
complemento: 'Sede 101'
26+
},
27+
cobranca: {
28+
endereco: 'R. Olavo Bilac',
29+
cep: '95702-000',
30+
bairro: 'Imigrante',
31+
municipio: 'Bento Gonçalves',
32+
uf: 'RS' as const,
33+
numero: '914',
34+
complemento: 'Sede 101'
35+
}
36+
},
37+
vendedor: {
38+
id: 12345678
39+
},
40+
dadosAdicionais: {
41+
dataNascimento: '1990-08-24',
42+
sexo: 'M' as const,
43+
naturalidade: 'Brasileira'
44+
},
45+
financeiro: {
46+
limiteCredito: 0,
47+
condicaoPagamento: '30',
48+
categoria: {
49+
id: 12345678
50+
}
51+
},
52+
pais: {
53+
nome: 'ESTADOS UNIDOS'
54+
},
55+
tiposContato: [
56+
{
57+
id: 12345678,
58+
descricao: 'Fornecedor'
59+
}
60+
],
61+
pessoasContato: [
62+
{
63+
id: 12345678,
64+
descricao: 'Fornecedor Fulano'
65+
}
66+
]
67+
}
68+
}

src/entities/contatos/__tests__/index.spec.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Chance } from 'chance'
22
import { Contatos } from '..'
33
import { InMemoryBlingRepository } from '../../../repositories/bling-in-memory.repository'
44
import { ICreateResponse } from '../interfaces/create.interface'
5+
import { IFindFinalCustomerResponse } from '../interfaces/find-final-customer.interface'
56
import { IFindTypesResponse } from '../interfaces/find-types.interface'
67
import { IFindResponse } from '../interfaces/find.interface'
78
import { IGetResponse } from '../interfaces/get.interface'
@@ -14,6 +15,7 @@ import changeSituationResponse, {
1415
import createResponse, { createRequestBody } from './create-response'
1516
import deleteManyResponse from './delete-many-response'
1617
import deleteResponse from './delete-response'
18+
import findFinalCustomerResponse from './find-final-customer.response'
1719
import findResponse from './find-response'
1820
import findTypesResponse from './find-types-response'
1921
import getResponse from './get-response'
@@ -137,6 +139,22 @@ describe('Contatos entity', () => {
137139
expect(typingResponseTest).toBe(findTypesResponse)
138140
})
139141

142+
it('should find final customer successfully', async () => {
143+
const spy = jest.spyOn(repository, 'index')
144+
repository.setResponse(findFinalCustomerResponse)
145+
146+
const response = await entity.findFinalCustomer()
147+
148+
expect(spy).toHaveBeenCalledWith({
149+
endpoint: 'contatos/consumidor-final'
150+
})
151+
expect(response).toBe(findFinalCustomerResponse)
152+
153+
const typingResponseTest: IFindFinalCustomerResponse =
154+
findFinalCustomerResponse
155+
expect(typingResponseTest).toBe(findFinalCustomerResponse)
156+
})
157+
140158
it('should change situation successfully', async () => {
141159
const spy = jest.spyOn(repository, 'replace')
142160
const idContato = chance.natural()

src/entities/contatos/index.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
import { ICreateBody, ICreateResponse } from './interfaces/create.interface'
88
import { IDeleteManyParams } from './interfaces/delete-many.interface'
99
import { IDeleteParams } from './interfaces/delete.interface'
10+
import { IFindFinalCustomerResponse } from './interfaces/find-final-customer.interface'
1011
import {
1112
IFindTypesParams,
1213
IFindTypesResponse
@@ -134,6 +135,20 @@ export class Contatos extends Entity {
134135
})
135136
}
136137

138+
/**
139+
* Obtém os dados do contato Consumidor Final.
140+
*
141+
* @returns {Promise<IFindFinalCustomerResponse>}
142+
* @throws {BlingApiException|BlingInternalException}
143+
*
144+
* @see https://developer.bling.com.br/referencia#/Contatos/get_contatos_consumidor_final
145+
*/
146+
public async findFinalCustomer(): Promise<IFindFinalCustomerResponse> {
147+
return await this.repository.index({
148+
endpoint: 'contatos/consumidor-final'
149+
})
150+
}
151+
137152
/**
138153
* Altera a situação de um contato.
139154
*
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import ITipoPessoa from 'src/entities/@shared/types/tipoPessoa.type'
2+
import IUF from 'src/entities/@shared/types/uf.type'
3+
import { IIndicadorIE } from '../types/indicador-ie.type'
4+
import { ISexo } from '../types/sexo.type'
5+
import { ISituacao } from '../types/situacao.type'
6+
7+
export interface IFindFinalCustomerResponse {
8+
data: {
9+
id: number
10+
nome: string
11+
codigo: string
12+
situacao: ISituacao
13+
numeroDocumento: string
14+
telefone: string
15+
celular: string
16+
fantasia: string
17+
tipo: ITipoPessoa
18+
indicadorIe: IIndicadorIE
19+
ie: string
20+
rg: string
21+
orgaoEmissor: string
22+
email: string
23+
endereco: {
24+
geral: {
25+
endereco: string
26+
cep: string
27+
bairro: string
28+
municipio: string
29+
uf: IUF
30+
numero: string
31+
complemento: string
32+
}
33+
cobranca: {
34+
endereco: string
35+
cep: string
36+
bairro: string
37+
municipio: string
38+
uf: IUF
39+
numero: string
40+
complemento: string
41+
}
42+
}
43+
vendedor: { id: number }
44+
dadosAdicionais: {
45+
dataNascimento: string
46+
sexo: ISexo
47+
naturalidade: string
48+
}
49+
financeiro: {
50+
limiteCredito: number
51+
condicaoPagamento: string
52+
categoria: { id: number }
53+
}
54+
pais: { nome: string }
55+
tiposContato: {
56+
id: number
57+
descricao: string
58+
}[]
59+
pessoasContato: {
60+
id: number
61+
descricao: string
62+
}[]
63+
}
64+
}

src/entities/contatos/interfaces/find.interface.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export interface IFindResponse {
5454
naturalidade: string
5555
}
5656
financeiro: {
57-
limiteCredito: 0
57+
limiteCredito: number
5858
condicaoPagamento: string
5959
categoria: { id: number }
6060
}

src/entities/vendedores/types/situacao.type.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@
55
* - `I`: Inativo
66
* - `S`: Sem movimento
77
* - `E`: Excluído
8+
* - `T`: Todos
89
*/
9-
export type ISituacao = 'A' | 'I' | 'S' | 'E'
10+
export type ISituacao = 'A' | 'I' | 'S' | 'E' | 'T'

0 commit comments

Comments
 (0)