Skip to content

Commit

Permalink
feat: adicionar produtos
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexandreBellas committed Dec 9, 2023
1 parent ee1bfc4 commit bb88044
Show file tree
Hide file tree
Showing 32 changed files with 2,069 additions and 3 deletions.
4 changes: 1 addition & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ As entidades atualmente permitidas para interação são:
- [x] Notificações (`.notificacoes`)
- [x] Pedidos - Compras (`.pedidosCompras`)
- [x] Pedidos - Vendas (`.pedidosVendas`)
- [ ] Produtos (`.produtos`)
- [x] Produtos (`.produtos`)
- [x] Produtos - Estruturas (`.produtosEstruturas`)
- [x] Produtos - Fornecedores (`.produtosFornecedores`)
- [x] Produtos - Lojas (`.produtosLojas`)
Expand All @@ -94,8 +94,6 @@ As entidades atualmente permitidas para interação são:
- [x] Usuários (`.usuarios`)
- [x] Vendedores (`.vendedores`)

Adicionaremos as restantes de acordo com as _releases_.

## Exemplo de uso

Para listar seus produtos, basta executar:
Expand Down
5 changes: 5 additions & 0 deletions src/bling.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import { Nfses } from './entities/nfses'
import { Notificacoes } from './entities/notificacoes'
import { PedidosCompras } from './entities/pedidosCompras'
import { PedidosVendas } from './entities/pedidosVendas'
import { Produtos } from './entities/produtos'
import { ProdutosEstruturas } from './entities/produtosEstruturas'
import { ProdutosFornecedores } from './entities/produtosFornecedores'
import { ProdutosLojas } from './entities/produtosLojas'
Expand Down Expand Up @@ -186,6 +187,10 @@ describe('Bling main module', () => {
)
})

it('should retrieve produtos entity', () => {
expect(createBling(chance.word()).produtos).toBeInstanceOf(Produtos)
})

it('should retrieve produtos - estruturas entity', () => {
expect(createBling(chance.word()).produtosEstruturas).toBeInstanceOf(
ProdutosEstruturas
Expand Down
10 changes: 10 additions & 0 deletions src/bling.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import { Nfses } from './entities/nfses'
import { Notificacoes } from './entities/notificacoes'
import { PedidosCompras } from './entities/pedidosCompras'
import { PedidosVendas } from './entities/pedidosVendas'
import { Produtos } from './entities/produtos'
import { ProdutosEstruturas } from './entities/produtosEstruturas'
import { ProdutosFornecedores } from './entities/produtosFornecedores'
import { ProdutosLojas } from './entities/produtosLojas'
Expand Down Expand Up @@ -322,6 +323,15 @@ export default class Bling {
return this.getModule(PedidosVendas)
}

/**
* Obtém a instância de interação com produtos.
*
* @return {Produtos}
*/
public get produtos(): Produtos {
return this.getModule(Produtos)
}

/**
* Obtém a instância de interação com produtos - estruturas.
*
Expand Down
37 changes: 37 additions & 0 deletions src/entities/produtos/__tests__/change-situation-many-response.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
export default {
data: {
alertas: [
{
id: 12345678,
error: {
type: 'VALIDATION_ERROR',
message: 'Não foi possível salvar a venda',
description:
'A venda não pode ser salva, pois ocorreram problemas em sua validação.',
fields: [
{
code: 49,
msg: 'Uma ou mais parcelas da venda possuem erros de validação',
element: 'parcelas',
namespace: 'VENDAS',
collection: [
{
index: 1,
code: 12,
msg: 'Id da forma de pagamento inválido.',
element: 'formaPagamento',
namespace: 'VENDAS'
}
]
}
]
}
}
]
}
}

export const changeSituationManyRequest = {
idsProdutos: [12345678],
situacao: 'A' as const
}
5 changes: 5 additions & 0 deletions src/entities/produtos/__tests__/change-situation-response.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export default null

export const changeSituationRequest = {
situacao: 'A' as const
}
253 changes: 253 additions & 0 deletions src/entities/produtos/__tests__/create-response.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,253 @@
export default {
data: {
id: 6423817751,
variations: {
deleted: [
{
id: 6423817579,
variations: {},
warnings: ['Mensagem de aviso.']
}
],
updated: [
{
id: 6423817579,
variations: {},
warnings: ['Mensagem de aviso.']
}
],
saved: [
{
id: 6423817579,
variations: {},
warnings: ['Mensagem de aviso.']
}
]
},
warnings: ['Mensagem de aviso.']
}
}

export const createRequestBody = {
id: 123456789,
nome: 'Produto 1',
codigo: 'CODE_123',
preco: 1,
tipo: 'P' as const,
situacao: 'A' as const,
formato: 'S' as const,
descricaoCurta: 'Descrição curta',
dataValidade: '2020-01-01',
unidade: 'UN',
pesoLiquido: 1,
pesoBruto: 1,
volumes: 1,
itensPorCaixa: 1,
gtin: '1234567890123',
gtinEmbalagem: '1234567890123',
tipoProducao: 'P' as const,
condicao: 0 as const,
freteGratis: false,
marca: 'Marca',
descricaoComplementar: 'Descrição complementar',
linkExterno: 'https://www.google.com',
observacoes: 'Observações',
categoria: {
id: 123456789
},
estoque: {
minimo: 1,
maximo: 100,
crossdocking: 1,
localizacao: '14A'
},
actionEstoque: 'Z' as const,
dimensoes: {
largura: 1,
altura: 1,
profundidade: 1,
unidadeMedida: 1
},
tributacao: {
origem: 0,
nFCI: '',
ncm: '',
cest: '',
codigoListaServicos: '',
spedTipoItem: '',
codigoItem: '',
percentualTributos: 0,
valorBaseStRetencao: 0,
valorStRetencao: 0,
valorICMSSubstituto: 0,
codigoExcecaoTipi: '',
classeEnquadramentoIpi: '',
valorIpiFixo: 0,
codigoSeloIpi: '',
valorPisFixo: 0,
valorCofinsFixo: 0,
codigoANP: '',
descricaoANP: '',
percentualGLP: 0,
percentualGasNacional: 0,
percentualGasImportado: 0,
valorPartida: 0,
tipoArmamento: 0 as const,
descricaoCompletaArmamento: '',
dadosAdicionais: '',
grupoProduto: {
id: 123456789
}
},
midia: {
video: {
url: 'https://www.youtube.com/watch?v=1'
},
imagens: {
externas: [
{
link: 'https://shutterstock.com/lalala123'
}
]
}
},
linhaProduto: {
id: 1
},
estrutura: {
tipoEstoque: 'F' as const,
lancamentoEstoque: 'A' as const,
componentes: [
{
produto: {
id: 1
},
quantidade: 2.1
}
]
},
camposCustomizados: [
{
idCampoCustomizado: 123456789,
idVinculo: 123456789,
valor: '256GB',
item: 'Opção A'
}
],
variacoes: [
{
id: 123456789,
nome: 'Produto 1',
codigo: 'CODE_123',
preco: 1,
tipo: 'P' as const,
situacao: 'A' as const,
formato: 'S' as const,
descricaoCurta: 'Descrição curta',
dataValidade: '2020-01-01',
unidade: 'UN',
pesoLiquido: 1,
pesoBruto: 1,
volumes: 1,
itensPorCaixa: 1,
gtin: '1234567890123',
gtinEmbalagem: '1234567890123',
tipoProducao: 'P' as const,
condicao: 0 as const,
freteGratis: false,
marca: 'Marca',
descricaoComplementar: 'Descrição complementar',
linkExterno: 'https://www.google.com',
observacoes: 'Observações',
categoria: {
id: 123456789
},
estoque: {
minimo: 1,
maximo: 100,
crossdocking: 1,
localizacao: '14A'
},
actionEstoque: 'Z' as const,
dimensoes: {
largura: 1,
altura: 1,
profundidade: 1,
unidadeMedida: 1
},
tributacao: {
origem: 0,
nFCI: '',
ncm: '',
cest: '',
codigoListaServicos: '',
spedTipoItem: '',
codigoItem: '',
percentualTributos: 0,
valorBaseStRetencao: 0,
valorStRetencao: 0,
valorICMSSubstituto: 0,
codigoExcecaoTipi: '',
classeEnquadramentoIpi: '',
valorIpiFixo: 0,
codigoSeloIpi: '',
valorPisFixo: 0,
valorCofinsFixo: 0,
codigoANP: '',
descricaoANP: '',
percentualGLP: 0,
percentualGasNacional: 0,
percentualGasImportado: 0,
valorPartida: 0,
tipoArmamento: 0 as const,
descricaoCompletaArmamento: '',
dadosAdicionais: '',
grupoProduto: {
id: 123456789
}
},
midia: {
video: {
url: 'https://www.youtube.com/watch?v=1'
},
imagens: {
externas: [
{
link: 'https://shutterstock.com/lalala123'
}
]
}
},
linhaProduto: {
id: 1
},
estrutura: {
tipoEstoque: 'F' as const,
lancamentoEstoque: 'A' as const,
componentes: [
{
produto: {
id: 1
},
quantidade: 2.1
}
]
},
camposCustomizados: [
{
idCampoCustomizado: 123456789,
idVinculo: 123456789,
valor: '256GB',
item: 'Opção A'
}
],
variacao: {
nome: 'Tamanho:G;Cor:Verde',
ordem: 1,
produtoPai: {
cloneInfo: true
}
}
}
]
}
32 changes: 32 additions & 0 deletions src/entities/produtos/__tests__/delete-many-response.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
export default {
data: {
alertas: [
{
id: 12345678,
error: {
type: 'VALIDATION_ERROR',
message: 'Não foi possível salvar a venda',
description:
'A venda não pode ser salva, pois ocorreram problemas em sua validação.',
fields: [
{
code: 49,
msg: 'Uma ou mais parcelas da venda possuem erros de validação',
element: 'parcelas',
namespace: 'VENDAS',
collection: [
{
index: 1,
code: 12,
msg: 'Id da forma de pagamento inválido.',
element: 'formaPagamento',
namespace: 'VENDAS'
}
]
}
]
}
}
]
}
}
1 change: 1 addition & 0 deletions src/entities/produtos/__tests__/delete-response.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export default null
Loading

0 comments on commit bb88044

Please sign in to comment.