millennium 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a0dd796da2ce934047e2772866722cf5c63b032f
4
+ data.tar.gz: aa51fb2d2dc3b8375fdb2106219108b162467e48
5
+ SHA512:
6
+ metadata.gz: 5044a1520942ba76b8dd518518d27ea0d79cae79b9d77cb1d94db462e205ef72f7f14139cdbe356c8cdf9cb1a9de0c9ef8de89b9d1e415c9436f587d08c23759
7
+ data.tar.gz: 6ab9638b1b4a672f67d2fc5d6b1ce287d04bb030d46401310a5cd98ed5f07c1f1948e76585c61bf2ed4d2d2e3efb881994392f9509fdc31e6716f82f5aa430e2
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
3
+
4
+ gem 'typhoeus'
5
+ gem 'json'
6
+ gem 'rspec', group: :test
data/README.md ADDED
@@ -0,0 +1,65 @@
1
+ # Millennium Ruby
2
+
3
+ Essa gem foi feita para de facilitar a integração com ERP Millennium ECO
4
+ API 2.0.
5
+
6
+ No momento esta gem não cobre 100% dos enpoints disponibilizados
7
+ pela Millennium.
8
+
9
+ ## Como usar
10
+
11
+ Instale a gem:
12
+
13
+ ```bash
14
+ gem install millennium
15
+ ```
16
+
17
+ Insira as configurações básicas para você poder utilizar os recursos
18
+ da API
19
+
20
+ ```ruby
21
+ require 'millennium'
22
+
23
+ Millennium.configure do |config|
24
+ config.user = <%= ENV["MILLENNIUM_USER"] %>
25
+ config.pass = <%= ENV["MILLENNIUM_PASS"] %>
26
+ config.host = <%= ENV["MILLENNIUM_HOST"] %>
27
+ config.port = <%= ENV["MILLENNIUM_PORT"] %>
28
+ end
29
+ ```
30
+
31
+ ### Exemplo: Como obter informações de compras faturadas
32
+
33
+ **Parâmetros**
34
+
35
+ | Parâmetro | Obrigatório | Tipo | Default | Descrição |
36
+ | ------------------------ | :---------: | :--------------------------------: | :-----: | -------------------------------- |
37
+ | data_atualizacao | Não | String (formato: YYYY-mm-dd-H-M-S) | - | Data inicial do período desejado |
38
+ | vitrine | Não | Integer | - | Data final do período desejado |
39
+ | saida_inicial | Não | Integer | - | Data final do período desejado |
40
+ | trans_id | Não | Integer | - | Data final do período desejado |
41
+ | aprovado | Não | Boolean | - | Data final do período desejado |
42
+ | cancelada | Não | Boolean | - | Data final do período desejado |
43
+ | data_atualizacao_inicial | Não | String (formato: YYYY-mm-dd-H-M-S) | - | Data final do período desejado |
44
+ | data_atualizacao_final | Não | String (formato: YYYY-mm-dd-H-M-S) | - | Data final do período desejado |
45
+
46
+
47
+ ```ruby
48
+ lista_faturamentos = Millennium::PedidoVenda.lista_faturamentos({
49
+ data_atualizacao_inicial: '2016-10-26-17-24-50',
50
+ data_atualizacao_final: '2016-10-26-17-24-50',
51
+ data_atualizacao: '2016-10-26-17-24-50',
52
+ saida_inicial: 55,
53
+ cancelada: false,
54
+ aprovado: false,
55
+ trans_id: 66,
56
+ vitrine: 82
57
+ })
58
+
59
+ lista_faturamentos.status
60
+ => "OK"
61
+
62
+ lista_faturamentos.body
63
+ => "{\"odata.metadata\":\"http:\\/\\/millennium.iwise.com.br:888\\/api\\/millenium_eco\\/$metadata#millenium_eco.MILLENIUM_ECO_PEDIDO_VENDA_LISTAFATURAMENTOS\"
64
+ ,\"odata.count\":0,\"value\":[]}"
65
+ ```
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+ module Millennium
3
+ # lib/millennium/clientes/clientes.rb
4
+ class Clientes
5
+ class << self
6
+ OBJECT = 'Clientes'.freeze
7
+ private_constant :OBJECT
8
+ ENDPOINTS_NAMES = {
9
+ consulta_por_documento: 'ConsultaPorDocumento',
10
+ incluir_ou_alterar: 'IncluirOuAlterar',
11
+ consulta_endereco: 'ConsultaEndereco',
12
+ consulta_credito: 'ConsultaCredito',
13
+ reserva_credito: 'ReservaCredito',
14
+ lista: 'Lista'
15
+ }.freeze
16
+ private_constant :ENDPOINTS_NAMES
17
+
18
+ ENDPOINTS_NAMES.each do |method_name, endpoint|
19
+ define_method method_name do |params = {}|
20
+ url = "#{OBJECT}/#{endpoint}?$format=json"
21
+ unless params.empty?
22
+ query = Millennium::Helpers.mount_query(params)
23
+ url = "#{OBJECT}/#{endpoint}?#{query}$format=json"
24
+ end
25
+ Millennium::Request.run(url)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,12 @@
1
+ # encoding: utf-8
2
+ module Millennium
3
+ # lib/millennium/config.rb
4
+ module Config
5
+ extend self
6
+
7
+ attr_accessor :user
8
+ attr_accessor :pass
9
+ attr_accessor :host
10
+ attr_accessor :port
11
+ end
12
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+ module Millennium
3
+ # lib/millennium/crm/crm.rb
4
+ class CRM
5
+ class << self
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,32 @@
1
+ # encoding: utf-8
2
+ module Millennium
3
+ # lib/millennium/crm_chamados/crm_chamados.rb
4
+ class CRMChamados
5
+ class << self
6
+ OBJECT = 'Crm.Chamados'.freeze
7
+ private_constant :OBJECT
8
+ ENDPOINTS_NAMES = {
9
+ inclui_relacionamento: 'IncluiRelacionamento',
10
+ lista_origens_chamado: 'ListaOrigensChamado',
11
+ lista_tipos_chamado: 'ListaTiposChamado',
12
+ inclui_comentario: 'IncluiComentario',
13
+ lista_sub_motivos: 'ListaSubMotivos',
14
+ lista_motivos: 'ListaMotivos',
15
+ inclui: 'Inclui',
16
+ fecha: 'Fecha'
17
+ }.freeze
18
+ private_constant :ENDPOINTS_NAMES
19
+
20
+ ENDPOINTS_NAMES.each do |method_name, endpoint|
21
+ define_method method_name do |params = {}|
22
+ url = "#{OBJECT}/#{endpoint}?$format=json"
23
+ unless params.empty?
24
+ query = Millennium::Helpers.mount_query(params)
25
+ url = "#{OBJECT}/#{endpoint}?#{query}$format=json"
26
+ end
27
+ Millennium::Request.run(url)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,7 @@
1
+ # encoding: utf-8
2
+ module Millennium
3
+ # lib/millennium/errors/millennium_error.rb
4
+ # Default millennium error class for all custom errors.
5
+ module MillenniumError < StandardError
6
+ end
7
+ end
@@ -0,0 +1,6 @@
1
+ # encoding: utf-8
2
+ module Millennium
3
+ # lib/millenium/errors.rb
4
+ module Errors
5
+ end
6
+ end
@@ -0,0 +1,11 @@
1
+ # encoding: utf-8
2
+ module Millennium
3
+ # lib/millenium/errors.rb
4
+ module Helpers
5
+ def self.mount_query(params)
6
+ params.each_with_object('') do |(key, value), query|
7
+ query << "#{key}=#{value}&"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+ module Millennium
3
+ # lib/millennium/modulo/modulo.rb
4
+ class Modulo
5
+ class << self
6
+ OBJECT = 'Module'.freeze
7
+ private_constant :OBJECT
8
+
9
+ ENDPOINTS_NAMES = { permissions: 'Permissions' }.freeze
10
+ private_constant :ENDPOINTS_NAMES
11
+
12
+ ENDPOINTS_NAMES.each do |method_name, endpoint|
13
+ define_method method_name do |params = {}|
14
+ url = "#{OBJECT}/#{endpoint}?$format=json"
15
+ unless params.empty?
16
+ query = Millennium::Helpers.mount_query(params)
17
+ url = "#{OBJECT}/#{endpoint}?#{query}$format=json"
18
+ end
19
+ Millennium::Request.run(url)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,37 @@
1
+ # encoding: utf-8
2
+ module Millennium
3
+ # lib/millennium/pedido_venda/pedido_venda.rb
4
+ class PedidoVenda
5
+ class << self
6
+ OBJECT = 'Pedido_Venda'.freeze
7
+ private_constant :OBJECT
8
+ ENDPOINTS_NAMES = {
9
+ lista_faturamentos: 'ListaFaturamentos',
10
+ consulta_status_wf: 'ConsultaStatusWF',
11
+ lista_operadoras: 'ListaOperadoras',
12
+ consulta_simples: 'ConsultaSimples',
13
+ consulta_produto: 'ConsultaProduto',
14
+ consulta_xml_nfe: 'ConsultaXmlNFe',
15
+ lista_bandeiras: 'ListaBandeiras',
16
+ consulta_status: 'ConsultaStatus',
17
+ lista_tipo_pgto: 'ListaTipoPgto',
18
+ consulta_itens: 'Consulta_Itens',
19
+ lista_pedidos: 'ListaPedidos',
20
+ consulta: 'Consulta',
21
+ lista: 'Lista'
22
+ }.freeze
23
+ private_constant :ENDPOINTS_NAMES
24
+
25
+ ENDPOINTS_NAMES.each do |method_name, endpoint|
26
+ define_method method_name do |params = {}|
27
+ url = "#{OBJECT}/#{endpoint}?$format=json"
28
+ unless params.empty?
29
+ query = Millennium::Helpers.mount_query(params)
30
+ url = "#{OBJECT}/#{endpoint}?#{query}$format=json"
31
+ end
32
+ Millennium::Request.run(url)
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+ module Millennium
3
+ # lib/millennium/produtos/produtos.rb
4
+ class Produtos
5
+ class << self
6
+ OBJECT = 'Produtos'.freeze
7
+ private_constant :OBJECT
8
+ ENDPOINTS_NAMES = {
9
+ atualiza_produtos_vitrine: 'AtualizaProdutosVitrine',
10
+ atualiza_saldo_de_estoque: 'AtualizaSaldoDeEstoque',
11
+ atualiza_preco_de_tabela: 'AtualizaPrecoDeTabela',
12
+ lista_relacionados: 'ListaRelacionados',
13
+ saldo_de_estoque: 'SaldoDeEstoque',
14
+ preco_de_tabela: 'PrecoDeTabela',
15
+ lista_id_fotos: 'ListaIdFotos',
16
+ lista_vitrine: 'ListaVitrine',
17
+ busca_foto: 'BuscaFoto'
18
+ }.freeze
19
+ private_constant :ENDPOINTS_NAMES
20
+
21
+ ENDPOINTS_NAMES.each do |method_name, endpoint|
22
+ define_method method_name do |params = {}|
23
+ url = "#{OBJECT}/#{endpoint}?$format=json"
24
+ unless params.empty?
25
+ query = Millennium::Helpers.mount_query(params)
26
+ url = "#{OBJECT}/#{endpoint}?#{query}$format=json"
27
+ end
28
+ Millennium::Request.run(url)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,38 @@
1
+ # encoding: utf-8
2
+ module Millennium
3
+ # lib/millennium/request.rb
4
+ class Request
5
+ class << self
6
+ def run(endpoint)
7
+ url = mount_url(endpoint)
8
+ make_request(url)
9
+ end
10
+
11
+ private
12
+
13
+ def make_request(url)
14
+ Typhoeus::Request.new(url, options).run
15
+ end
16
+
17
+ def mount_url(endpoint)
18
+ hostname = Millennium::Config.host || 'millennium.iwise.com.br'
19
+ port = Millennium::Config.port || '888'
20
+
21
+ "http://#{hostname}:#{port}/api/millenium_eco/#{endpoint}"
22
+ end
23
+
24
+ def options
25
+ {
26
+ userpwd: userpwd,
27
+ httpauth: :ntlm,
28
+ verbose: true
29
+ }
30
+ end
31
+
32
+ def userpwd
33
+ config = Millennium::Config
34
+ "#{config.user}:#{config.pass}"
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,27 @@
1
+ # encoding: utf-8
2
+ module Millennium
3
+ # lib/millennium/transportadoras/transportadoras.rb
4
+ class Transportadoras
5
+ class << self
6
+ OBJECT = 'Transportadoras'.freeze
7
+ private_constant :OBJECT
8
+ ENDPOINTS_NAMES = {
9
+ atualiza_saldo_de_estoque: 'ConsultaPorDocumento',
10
+ atualiza_preco_de_tabela: 'IncluirOuAlterar',
11
+ atualiza_produtos_vitrine: 'CalculaFrete'
12
+ }.freeze
13
+ private_constant :ENDPOINTS_NAMES
14
+
15
+ ENDPOINTS_NAMES.each do |method_name, endpoint|
16
+ define_method method_name do |params = {}|
17
+ url = "#{OBJECT}/#{endpoint}?$format=json"
18
+ unless params.empty?
19
+ query = Millennium::Helpers.mount_query(params)
20
+ url = "#{OBJECT}/#{endpoint}?#{query}$format=json"
21
+ end
22
+ Millennium::Request.run(url)
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,29 @@
1
+ # encoding: utf-8
2
+ module Millennium
3
+ # lib/millennium/troca_devolucao/troca_devolucao.rb
4
+ class TrocaDevolucao
5
+ class << self
6
+ OBJECT = 'TrocaDevolucao'.freeze
7
+ private_constant :OBJECT
8
+ ENDPOINTS_NAMES = {
9
+ lista_para_troca_devolucao: 'ListaParaTrocaDevolucao',
10
+ consulta_credito: 'ConsultaCredito',
11
+ reserva_credito: 'ReservaCredito',
12
+ inclui: 'Inclui',
13
+ lista: 'Lista'
14
+ }.freeze
15
+ private_constant :ENDPOINTS_NAMES
16
+
17
+ ENDPOINTS_NAMES.each do |method_name, endpoint|
18
+ define_method method_name do |params = {}|
19
+ url = "#{OBJECT}/#{endpoint}?$format=json"
20
+ unless params.empty?
21
+ query = Millennium::Helpers.mount_query(params)
22
+ url = "#{OBJECT}/#{endpoint}?#{query}$format=json"
23
+ end
24
+ Millennium::Request.run(url)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,4 @@
1
+ # lib/millennium/version.rb
2
+ module Millennium
3
+ VERSION = '0.0.2'.freeze
4
+ end
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+ module Millennium
3
+ # lib/millennium/vitrine/vitrine.rb
4
+ class Vitrine
5
+ class << self
6
+ OBJECT = 'Vitrine'.freeze
7
+ private_constant :OBJECT
8
+ ENDPOINTS_NAMES = {
9
+ atualiza_status_produtos: 'Atualiza_Status_Produtos',
10
+ atualiza_classificacoes: 'Atualiza_Classificacoes',
11
+ lista_classificacoes: 'Lista_Classificacoes',
12
+ atualiza_status: 'Atualiza_Status',
13
+ atualiza_log: 'Atualiza_Log',
14
+ lista_status: 'Lista_Status'
15
+ }.freeze
16
+ private_constant :ENDPOINTS_NAMES
17
+
18
+ ENDPOINTS_NAMES.each do |method_name, endpoint|
19
+ define_method method_name do |params = {}|
20
+ url = "#{OBJECT}/#{endpoint}?$format=json"
21
+ unless params.empty?
22
+ query = Millennium::Helpers.mount_query(params)
23
+ url = "#{OBJECT}/#{endpoint}?#{query}$format=json"
24
+ end
25
+ Millennium::Request.run(url)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
data/lib/millennium.rb ADDED
@@ -0,0 +1,26 @@
1
+ # encoding: utf-8
2
+
3
+ require 'typhoeus'
4
+ require 'json'
5
+
6
+ require 'millennium/config'
7
+ require 'millennium/clientes/clientes'
8
+ require 'millennium/crm_chamados/crm_chamados'
9
+ require 'millennium/crm/crm'
10
+ require 'millennium/errors'
11
+ require 'millennium/helpers'
12
+ require 'millennium/modulo/modulo'
13
+ require 'millennium/pedido_venda/pedido_venda'
14
+ require 'millennium/produtos/produtos'
15
+ require 'millennium/request'
16
+ require 'millennium/transportadoras/transportadoras'
17
+ require 'millennium/troca_devolucao/troca_devolucao'
18
+ require 'millennium/vitrine/vitrine'
19
+ require 'millennium/version'
20
+
21
+ # lib/millennium
22
+ module Millennium
23
+ def self.configure
24
+ yield Config
25
+ end
26
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe Millennium do
4
+ before(:each) do
5
+ Millennium.configure do |config|
6
+ config.user = 'OData'
7
+ config.pass = '0d@t@123'
8
+ config.host = 'millennium.iwise.com.br'
9
+ config.port = 888
10
+ end
11
+ end
12
+
13
+ describe '.configure' do
14
+ it 'yields config' do
15
+ Millennium.configure do |config|
16
+ expect(config).to be_a(Millennium::Config)
17
+ end
18
+ end
19
+
20
+ it 'sets values config' do
21
+ Millennium::Config.user = 'OData'
22
+ expect(Millennium::Config.user).to eq('OData')
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,9 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+
3
+ require 'bundler/setup'
4
+ Bundler.setup
5
+
6
+ require 'millennium'
7
+
8
+ RSpec.configure do |config|
9
+ end
metadata ADDED
@@ -0,0 +1,136 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: millennium
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Paulo Henrique Bruce
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-10-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: typhoeus
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.7'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.8'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.8'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.13'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.13'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
83
+ description: This gem is prepared to integrate with Millennium
84
+ email:
85
+ - brucepaulohenrique@gmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - Gemfile
91
+ - README.md
92
+ - lib/millennium.rb
93
+ - lib/millennium/clientes/clientes.rb
94
+ - lib/millennium/config.rb
95
+ - lib/millennium/crm/crm.rb
96
+ - lib/millennium/crm_chamados/crm_chamados.rb
97
+ - lib/millennium/errors.rb
98
+ - lib/millennium/errors/millennium_error.rb
99
+ - lib/millennium/helpers.rb
100
+ - lib/millennium/modulo/modulo.rb
101
+ - lib/millennium/pedido_venda/pedido_venda.rb
102
+ - lib/millennium/produtos/produtos.rb
103
+ - lib/millennium/request.rb
104
+ - lib/millennium/transportadoras/transportadoras.rb
105
+ - lib/millennium/troca_devolucao/troca_devolucao.rb
106
+ - lib/millennium/version.rb
107
+ - lib/millennium/vitrine/vitrine.rb
108
+ - spec/millennium_spec.rb
109
+ - spec/spec_helper.rb
110
+ homepage: https://github.com/phbruce/millennium
111
+ licenses:
112
+ - MIT
113
+ metadata: {}
114
+ post_install_message:
115
+ rdoc_options: []
116
+ require_paths:
117
+ - lib
118
+ required_ruby_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: 1.3.6
128
+ requirements: []
129
+ rubyforge_project:
130
+ rubygems_version: 2.4.8
131
+ signing_key:
132
+ specification_version: 4
133
+ summary: Ruby interface for the Millennium Eco API
134
+ test_files:
135
+ - spec/millennium_spec.rb
136
+ - spec/spec_helper.rb