millennium 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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