Skip to content

locomotivapro/bling

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ruby Bling API

Interface ruby para comunicação com a API do Bling ERP.

Atenção, gem em desenvolvimento, nem todas as chamadas esto disponíveis ainda.

Code Climate Test Coverage Build Status

Documentação Rdoc em Rubydoc.info

Configuração

Instale a versão mais recente

$ gem install bling

Configure sua chave de integração:

Bling::Config.api_key = '55fxs324dsk3....'

Por padrão a gem é configurada para aceitar os parâmetros em inglês, caso deseje é possível configurar a gem para aceitar em português:

Bling::Config.default_language= :pt # :en default

Uso

A chamada para os possíveis endpoints da API do Bling são todas feitas utilizando a class Bling::API ex:

users = Bling::API.user.list

Toda chamada retorna um objeto da class Bling::API::Response (métodos disponíveis). Um método importante de instâncias desta classe é o método records, em caso de sucesso da consulta, este método retornará uma array contendo os registros obtidos:

user_request = Bling::API.user.get('36434...')
user_request.records # [Record]

Cada item retornado em uma chamada é inserido em um objeto da classe Bling::API::Record, responsável por criar readers para cada um dos valores retornados, ex:

user_request = Bling::API.user.get('36434...')
user = user_request.records.first

# Ao invés de consultar como um Hash (ex: user['name']) é possível fazer:

user.name # => 'Denis'

Chamadas disponíveis

Cliente

  • Listagem de todos clientes inseridos no Bling:
user_client = Bling::API.user.list

if user_client.success?
  users = user_client.records
end
  • Inserir um cliente no Bling:
user = Bling::API.user.create(
  {
  name: 'Jonh Doe',
  company_name: '',
  tax_type: 1,
  document: '35165478662',
  ir_rg: '306153420',
  address: 'My great street',
  number: '33',
  additional_address: 'apt 12',
  zipcode: '03454020',
  city: 'Sao Paulo',
  uf: 'SP',
  phone: '(11) 2233-3322',
  email: jonh@@doe.com'
  }
)
  • Obter dados de um cliente
user = Bling::API.user.get(user_id) # user_id: cpf ou cnpj

Produto

  • Listar produtos
products_client = Bling::API.user.list

if products_client.success?
  products = products_client.records
end
  • Inserir um produto
product = Bling::API.product.create(
  {
  code: '92314',
  description: 'Awesome product',
  additional_description: 'In lovely colors',
  unit: 'Pc',
  price: 20.50,
  cost_price: 14.30,
  raw_weight: 2,
  weight: 1.8,
  tax_category: '1000.01.01',
  origin: 0,
  quantity: 10,
  gtin: 832222,
  gtin_package: 13414,
  width: 25,
  height: 15,
  depth: 10,
  min_quantity: 1,
  max_quantity: 200
  }
)
  • Obter informaçes de um produto
product_client = Bling::API.product.get('92314')
product = product_client.records.first
  • Atualizar um produto
params = {
  description: 'Awesome product',
  additional_description: 'In lovely colors',
  unit: 'Pc',
  price: 20.50,
  cost_price: 14.30,
  raw_weight: 2,
  weight: 1.8,
  tax_category: '1000.01.01',
  origin: 0,
  quantity: 10,
  gtin: 832222,
  gtin_package: 13414,
  width: 25,
  height: 15,
  depth: 10,
  min_quantity: 1,
  max_quantity: 200
 }

product = Bling::API.product.update('92314', params)
  • Remover um produto
Bling::API.product.delete('92314')

Pedido

  • Listar pedidos
order_request = Bling::API.order.list
orders = order_request.records if order_request.success?
  • Inserir um pedido
order = Bling::API.order.create(
  {
  order_number: '123',
  ecommerce_order_number: '55123',
  store: 'Foo',
  selling_category: '',
  user: {
   name: 'Jonh Doe',
   company_name: '',
   tax_type: 1,
   document: '35165478662',
   ir_rg: '306153420',
   tax_classification: 1,
   address: 'My great street',
   number: '33',
   additional_address: 'apt 12',
   zipcode: '03454020',
   city: 'Sao Paulo',
   uf: 'SP',
   phone: '(11) 2233-3322',
   cellphone: '(11) 2233-3322',
   email: jonh@@doe.com'
  },
  shipment: {
    carrier: 'Correios',
    shipment_type: 'R'
    shipment_label: {}
  },
  items: [
    { code: '001', description: 'lorem', unit: 'pc', item_quantity: 3, price: 12.30 },
    { code: '002', description: 'lorem', unit: 'pc', item_quantity: 4, price: 32.30 },
  ],
  installments: [
    { date: '28/06/2016', amount: 140.00, additional_info: '' },
    { date: '28/07/2016', amount: 140.00, additional_info: '' },
  ],
  shipment_amount: 10.0,
  discount_amount: 0.0,
  additional_info: '',
  private_additional_info: ''
  }
)
  • Obter informaçes de um pedido
order_client = Bling::API.order.get('123')
product = order_client.records.first
  • Alterar status do pedido
# Status disponíveis:
# - 0 (Em Aberto)
# - 1 (Atendido)
# - 2 (Cancelado)
# - 3 (Em Andamento)
# - 4 (Venda Agenciada)
# - 10 (Em Digitação)
# - 11 (Verificado)

Bling::API.order.put('123', 3)

Nota Fiscal

  • Listar notas
invoice_request = Bling::API.invoice.list
invoices = invoice_request.records if invoice_request.success?
  • Inserir uma nota fiscal
 invoice = Bling::API.invoice.create(
   {
   invoice_type: 'E',
   ecommerce_order_number: '123',
   operation_type: 'Venda de Mercadorias',
   user: {
    name: 'Jonh Doe',
    tax_type: 1,
    document: '35165478662',
    ie_rg: '306153420',
    icms_participant: 1,
    tax_classification: 1,
    address: 'My great street',
    number: '33',
    additional_address: 'apt 12',
    zipcode: '03454020',
    city: 'sao paulo',
    uf: 'SP',
    phone: '(11) 2233-3322',
    country: 'Brazil',
    email: 'jonh@@doe.com'
   },
   shipment: {
     carrier: 'Correios',
     document: '60120930390001',
     ie_rg: '306153420',
     full_address: 'My street, 33, apt 2',
     zipcode: '03454020',
     city: 'sao paulo',
     uf: 'SP',
     vehicle_place: 'DMZ-0112',
     vehicle_state: 'SP',
     shipment_type: 'D',
     shipments_size: '',
     shipments_kind: '',
     number: '12342',
     raw_weight: 20,
     weight: 18,
     correios_service: 'Sedex',
     shipment_label: {}
   },
   items: [
     { code: '001', description: 'lorem', unit: 'pc', item_quantity: 3, price: 12.30, origin: '0', tax_category: '1000.00.10'  },
     { code: '002', description: 'lorem', unit: 'pc', item_quantity: 4, price: 32.30, origin: '0', tax_category: '1000.00.10' },
   ],
   installments: [
     { days: '10', date: '28/06/2016', amount: 140.00, additional_info: '' },
     { days: '15', date: '28/07/2016', amount: 140.00, additional_info: '' },
   ],
   rural_reference_invoice: {
     number: '001230',
     sequence: '0',
     month_year_issue_date: '1202'
   },
   shipment_amount: 10.0,
   discount_amount: 0.0,
   expenses_amount: 2.5,
   additional_info: '',
   }
 )

To-Do

  • Testes
  • Filtros para chamadas da API

Desenvolvimento

Desenvolvido e mantido por Locomotiva.pro, copyright (c) 2013-2016.

About

Interface ruby para consultar API do Bling ERP

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages