Skip to content

Commit

Permalink
Merge pull request #11 from AlexandreBellas/feature/update-api-versio…
Browse files Browse the repository at this point in the history
…n-to-v3

feat: atualizar para API v3
  • Loading branch information
AlexandreBellas authored Dec 9, 2023
2 parents af599cd + 4dd2922 commit 9fcdd9d
Show file tree
Hide file tree
Showing 477 changed files with 15,793 additions and 6,664 deletions.
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false
trim_trailing_whitespace = false
11 changes: 9 additions & 2 deletions .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,12 @@
"extends": [
"standard",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended"
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 12,
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": ["@typescript-eslint"],
Expand All @@ -29,6 +30,12 @@
"rules": {
"camelcase": "off"
}
},
{
"files": ["*"],
"rules": {
"space-before-function-paren": "off"
}
}
]
}
21 changes: 21 additions & 0 deletions .github/workflows/on-commit-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: On commit => execute test workflow

on: push

jobs:
unit-feature-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 20

- name: Install dependencies
run: npm install

- name: Build project
run: npm run build

- name: Execute tests
run: npm run test
10 changes: 5 additions & 5 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"trailingComma": "none",
"tabWidth": 2,
"semi": false,
"singleQuote": true
}
"trailingComma": "none",
"tabWidth": 2,
"semi": false,
"singleQuote": true
}
20 changes: 0 additions & 20 deletions .travis.yml

This file was deleted.

32 changes: 32 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"material-icon-theme.folders.associations": {
"@shared": "Shared",
"exceptions": "Error"
},
"cSpell.words": [
"aliquota",
"Amazônia",
"borderô",
"Borderos",
"borderôs",
"Contabeis",
"Contábeis",
"Contabil",
"contábil",
"CONTRAN",
"customizado",
"Customizados",
"Eletrônicas",
"Frotista",
"ICMS",
"ICMSST",
"ICRT",
"intermediador",
"nfces",
"Parcelada",
"pickone",
"Rastreamento",
"sublimite",
"SUFRAMA"
]
}
120 changes: 63 additions & 57 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,18 @@
[![install size](https://packagephobia.com/badge?p=bling-erp-api)](https://packagephobia.com/result?p=bling-erp-api)
[![code coverage](https://coveralls.io/repos/github/AlexandreBellas/bling-erp-api/badge.svg?branch=main)](https://coveralls.io/github/AlexandreBellas/bling-erp-api?branch=main)

Pacote de integração com a [API do ERP Bling](https://ajuda.bling.com.br/hc/pt-br/categories/360002186394-API-para-Desenvolvedores). O mais completo existente (e se não é, será).
Disponível também para **Typescript**.
Pacote de integração com a [API v3 do ERP Bling](https://developer.bling.com.br). O mais completo existente (e se não é, será).

Disponível para:

- [x] JavaScript
- [x] TypeScript
- [ ] PHP (em breve)
- [ ] C# (em breve)

**Atenção**: a versão 5.0.0+ do `bling-erp-api` utiliza a API v3 do Bling. Caso
deseje utilizar a API v2 do Bling,
[utilize a versão 4.0.0](https://github.com/AlexandreBellas/bling-erp-api/tree/v4.0.0).

## Instalação

Expand All @@ -20,95 +30,91 @@ npm i bling-erp-api
### CommonJS

```js
const { Bling } = require('bling-erp-api')
const Bling = require('bling-erp-api')
```

### ES6

```ts
import { Bling } from 'bling-erp-api'
import Bling from 'bling-erp-api'
```

## Criação de uma nova conexão

Para criar uma conexão ao serviço do Bling, basta instanciar o objeto com a [API
key](https://ajuda.bling.com.br/hc/pt-br/articles/360046937853-Introdu%C3%A7%C3%A3o-para-a-API-do-Bling-para-desenvolvedores-) em
seu construtor.
Para criar uma conexão ao serviço do Bling, basta instanciar o objeto com a [API key](https://developer.bling.com.br/autenticacao) em seu construtor.

```js
const apiKey = 'sua_api_key'
const blingConnection = new Bling(apiKey)
```

Vale destacar que o fluxo de criação e autorização do aplicativo **não é feito
pela biblioteca**. Ou seja, a biblioteca somente recebe o `access_token` gerado
a partir do _endpoint_ `/token`. [Veja a referência](https://developer.bling.com.br/aplicativos#tokens-de-acesso).

## Entidades disponíveis

As entidades atualmente permitidas para interação são:

- Borderos (`.borderos()`)
- Campos customizados (`.customizedFields()` ou `.camposCustomizados()`)
- Categorias (`.categories()` ou `.categorias()`)
- Categorias Loja (`.shopCategories()` ou `.categoriasLoja()`)
- Contatos (`.contacts()` ou `.contatos()`)
- Contas a pagar (`.billsToPay()` ou `.contasAPagar()`)
- Contas a receber (`.billsToReceive()` ou `.contasAReceber()`)
- Contratos (`.contracts()` ou `.contratos()`)
- CTes (`.ctes()`)
- Depósitos (`.deposits()` ou `.depositos()`)
- Formas de pagamento (`.paymentMethods()` ou `.formasDePagamento()`)
- Grupo de produtos (`.productGroups()` ou `.grupoDeProdutos()`)
- NFCes (`.nfces()`)
- Notas fiscais (`.invoices()` ou `.notasFiscais()`)
- Notas de serviço (`.serviceInvoices()` ou `.notasServicos()`)
- Pedidos (`.orders()` ou `.pedidos()`)
- Pedidos de compra (`.purchaseOrders()` ou `.pedidosDeCompra()`)
- Produtos (`.products()` ou `.produtos()`)
- Propostas comerciais (`.commercialProposals()` ou `.propostasComerciais()`)

Ainda estão em desenvolvimento as entidades:

- Logística
- Ordem de produção
- Produto Fornecedores
- Produto Loja
- [x] Borderos (`.borderos`)
- [x] Campos customizados (`.camposCustomizados`)
- [x] Categorias - Lojas (`.categoriasLojas`)
- [x] Categorias - Produtos (`.categoriasProdutos`)
- [x] Categorias - Receitas e Despesas (`.categoriasReceitasDespesas`)
- [x] Contas a Pagar (`.contasPagar`)
- [x] Contas a Receber (`.contasReceber`)
- [x] Contas Contábeis (`.contasContabeis`)
- [x] Contatos (`.contatos`)
- [x] Contatos - Tipos (`.contatosTipos`)
- [x] Contratos (`.contratos`)
- [x] Depósitos (`.depositos`)
- [x] Empresas (`.empresas`)
- [x] Estoques (`.estoques`)
- [x] Formas de pagamento (`.formasDePagamento`)
- [x] Homologação (`.homologacao`)
- [x] Logísticas (`.logisticas`)
- [x] Logísticas - Etiquetas (`.logisticasEtiquetas`)
- [x] Logísticas - Objetos (`.logisticasObjetos`)
- [x] Logísticas - Serviços (`.logisticasServicos`)
- [x] Naturezas de Operações (`.naturezasDeOperacoes`)
- [x] Notas Fiscais de Consumidor Eletrônicas (`.nfces`)
- [x] Notas Fiscais de Serviço Eletrônicas (`.nfses`)
- [x] Notas Fiscais Eletrônicas (`.nfes`)
- [x] Notificações (`.notificacoes`)
- [x] Pedidos - Compras (`.pedidosCompras`)
- [x] Pedidos - Vendas (`.pedidosVendas`)
- [ ] Produtos (`.produtos`)
- [ ] Produtos - Estruturas (`.produtosEstruturas`)
- [ ] Produtos - Fornecedores (`.produtosFornecedores`)
- [ ] Produtos - Lojas (`.produtosLojas`)
- [ ] Produtos - Variações (`.produtosVariacoes`)
- [ ] Situações (`.situacoes`)
- [ ] Situações - Módulos (`.situacoesModulos`)
- [ ] Situações - Transições (`.situacoesTransicoes`)
- [ ] Usuários (`.usuarios`)
- [ ] Vendedores (`.vendedores`)

Adicionaremos as restantes de acordo com as _releases_.

## Métodos permitidos

- `all()`: retorna todos os registros da entidade
- `find()`: retorna um registro da entidade desejada através de seu `id` ou
`codigo`
- `findBy()`: retorna os registros da entidade **que se adequem aos filtros
passados**
- `create()`: cria um registro da entidade
- `update()`: atualiza um registro da entidade a partir de seu `id` ou
`codigo`
- `delete()`: remove um registro da entidade a partir de seu `id` ou
`codigo`

Nem todas as entidades possuem interação com todos os métodos (de acordo com a
documentação da API do Bling). Ao utilizar o pacote e estar no VSCode, se o
desenvolvedor utilizar intelliSense ao programar, os métodos permitidos
aparecerão automaticamente após usar o atalho `Ctrl` + `Barra de espaço`.

## Exemplo de uso

Para listar todos os produtos, basta executar:
Para listar seus produtos, basta executar:

```js
// Também disponível pelo método:
// import { Bling } from 'bling-erp-api'
const { Bling } = require('bling-erp-api')
// import Bling from 'bling-erp-api'
const Bling = require('bling-erp-api')
const apiKey = 'sua_api_key'

const blingConnection = new Bling(apiKey)

const products = await blingConnection.products().all()
const products = await blingConnection.products.get()

console.log(products)
```

## Executando testes automatizados

Para isso, faça o clone do projeto e execute

```bash
Expand All @@ -117,5 +123,5 @@ npm run test

## Contribuição

Basta fazer um _fork_ do projeto e abrir novos _Pull Requests_ ou interagir
conosco abrindo _issues_ sobre os problemas encontrados.
Basta fazer um _fork_ do projeto e abrir novos _pull requests_ ou interagir
abrindo _issues_ sobre os problemas encontrados.
1 change: 0 additions & 1 deletion commitlint.config.js

This file was deleted.

24 changes: 0 additions & 24 deletions jest.config.json

This file was deleted.

27 changes: 27 additions & 0 deletions jest.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import type { Config } from 'jest'
import { pathsToModuleNameMapper } from 'ts-jest'
import { compilerOptions } from './tsconfig.json'

const config: Config = {
transform: {
'^.+\\.(t|j)sx?$': 'ts-jest'
},
testRegex: '(/test/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$',
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
transformIgnorePatterns: [
'/node_modules/',
'\\.pnp\\.[^\\/]+$',
'/coverage/'
],
testPathIgnorePatterns: ['<rootDir>/lib/'],
moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, {
prefix: '<rootDir>/'
}),
maxWorkers: 1,
maxConcurrency: 2,
collectCoverageFrom: ['**/*.(t|j)s'],
coveragePathIgnorePatterns: ['/coverage/', 'jest.config.ts', '/lib/'],
coverageDirectory: './coverage'
}

export default config
Loading

0 comments on commit 9fcdd9d

Please sign in to comment.