spree_jamef_calculator 0.0.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f8a42e221f4e26faeba75ad6b1917f7146cfc58
4
- data.tar.gz: 8b3019f0ec4842779d47ca1e78c08de20aa526fc
3
+ metadata.gz: 21d54da4a5511e1f9b39a7cb397b3a6af2b47677
4
+ data.tar.gz: 8cefb55bd4fe3d4c8b40c552893aafa7b335a7f7
5
5
  SHA512:
6
- metadata.gz: 4f649553be29fa34a3a0d033bdf9eaa953fff8d82276854d01b6f90540fe2598e36410076d27d26a999944881889d933458f0ba5634f27a7d55fb7962a5d5ee3
7
- data.tar.gz: ece51c568d1df90d7c53690347fb2a14ebe8b198de1b6f70eb868d7de59194404c720977525758b9d6e31c224c5e873049f641223ecb5bee9fc4fc3155e0fa09
6
+ metadata.gz: f0032622fd34ba9da4df5e569467689fb97415c69dd52a29226c613034520978075bbfdcfffeeb0cef5906d98dabdf170b8d72c983e83324cb53754e4d6fa659
7
+ data.tar.gz: 35fe7befa24e720575bffd4a5ac0ae7d88c4584fed1aa784b7e1ca4f144c02188733e5d366135716d27e09737b82093b4500f9d5abe2ade6508808d899d61377
@@ -0,0 +1,82 @@
1
+ require_dependency 'spree/calculator'
2
+
3
+ module Spree
4
+ class Calculator::JamefCalculator < Calculator
5
+ preference :cnpj, :string
6
+ preference :cep, :string
7
+ preference :region, :integer
8
+ preference :uf, :string
9
+
10
+ attr_accessible :preferred_cnpj, :preferred_cep, :preferred_region, :preferred_uf
11
+
12
+ def self.description
13
+ "Transportadora Jamef"
14
+ end
15
+
16
+ def compute(object)
17
+ @object = object.kind_of?(Spree::Order) ? object : object.order
18
+ yaml_order = create_or_load_yaml
19
+
20
+ if yaml_order['order']['total'] == @object.item_total.to_f && yaml_order['order']['ship'] != 0
21
+ return yaml_order['order']['ship']
22
+ else
23
+ return jamef_calculate_tax
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def jamef_calculate_tax
30
+ items = []
31
+
32
+ @object.line_items.each do |line_item|
33
+ item = Jamef::Item.new
34
+ item.width = line_item.variant.width
35
+ item.height = line_item.variant.height
36
+ item.length = line_item.variant.depth
37
+ item.weight = line_item.variant.weight
38
+ item.quantity = line_item.quantity
39
+ item.price = line_item.price
40
+
41
+ items << item
42
+ end
43
+
44
+ cubage = Jamef::Cubage.new(items)
45
+
46
+ tax = Jamef::Tax.new(cubage, self.preferred_cnpj, self.preferred_region, self.preferred_cep, self.preferred_uf)
47
+ ship = tax.get
48
+
49
+ order_merge = {'order' => {'total' => @object.item_total.to_f, 'ship' => ship}}
50
+
51
+ create_yaml(order_merge)
52
+
53
+ return ship
54
+ end
55
+
56
+ def create_or_load_yaml
57
+ create_yaml if !File.exists?(path_file)
58
+
59
+ YAML::load_file(path_file)
60
+ end
61
+
62
+ def path_file
63
+ @path_file ||= Spree::SpreeCalculatorJamef.app_root + "/public/jamef_yaml/#{@object.number}.yml"
64
+ end
65
+
66
+ def create_yaml(order_merge=nil)
67
+ order = create_order_yaml(order_merge)
68
+
69
+ file_create = File.new(path_file, "w")
70
+ file_create.write(order)
71
+ file_create.close
72
+ end
73
+
74
+ def create_order_yaml(order_merge=nil)
75
+ order = {'order' => {'total' => @object.item_total.to_f, 'ship' => 0}}
76
+ order.merge!(order_merge) if !order_merge.nil?
77
+
78
+ order.to_yaml
79
+ end
80
+
81
+ end
82
+ end
@@ -0,0 +1,34 @@
1
+ module Spree
2
+ module SpreeCalculatorJamef
3
+ def self.app_root=(app)
4
+ @app = app
5
+ end
6
+
7
+ def self.app_root
8
+ @app.to_s
9
+ end
10
+
11
+ class Engine < Rails::Engine
12
+ engine_name 'spree_jamef_calculator'
13
+
14
+ initializer "spree.register.calculators" do |app|
15
+ app.config.spree.calculators.shipping_methods << Spree::Calculator::JamefCalculator
16
+ Spree::SpreeCalculatorJamef.app_root = app.root
17
+ end
18
+
19
+ config.autoload_paths += %w(#{config.root}/lib)
20
+
21
+ config.generators do |g|
22
+ g.test_framework :rspec
23
+ end
24
+
25
+ def self.activate
26
+ Dir.glob(File.join(File.dirname(__FILE__), "../../app/**/*_decorator*.rb")) do |c|
27
+ Rails.configuration.cache_classes ? require(c) : load(c)
28
+ end
29
+ end
30
+
31
+ config.to_prepare &method(:activate).to_proc
32
+ end
33
+ end
34
+ end
@@ -1,3 +1,3 @@
1
1
  module SpreeJamefCalculator
2
- VERSION = "0.0.1"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -4,5 +4,4 @@ require "spree_jamef_calculator/engine"
4
4
  require 'jamef'
5
5
 
6
6
  module SpreeJamefCalculator
7
- # Your code goes here...
8
7
  end
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
19
  s.require_paths = ["lib"]
20
20
 
21
- s.add_dependency "jamef"
21
+ s.add_dependency "jamef", "~> 1.0.3"
22
22
  s.add_dependency "spree_core"
23
23
 
24
24
  # specify any dependencies here; for example:
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_jamef_calculator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matheus Caceres
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-17 00:00:00.000000000 Z
11
+ date: 2013-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jamef
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 1.0.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 1.0.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: spree_core
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -48,7 +48,9 @@ files:
48
48
  - .gitignore
49
49
  - Gemfile
50
50
  - Rakefile
51
+ - app/models/spree/calculator/jamef_calculator.rb
51
52
  - lib/spree_jamef_calculator.rb
53
+ - lib/spree_jamef_calculator/engine.rb
52
54
  - lib/spree_jamef_calculator/version.rb
53
55
  - spree_jamef_calculator.gemspec
54
56
  homepage: ''