spree_jamef_calculator 0.0.1 → 0.4.0
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 21d54da4a5511e1f9b39a7cb397b3a6af2b47677
|
4
|
+
data.tar.gz: 8cefb55bd4fe3d4c8b40c552893aafa7b335a7f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
@@ -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
|
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-
|
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:
|
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:
|
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: ''
|