spree_correios_shipping 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -0
- data/app/models/spree/calculator/shipping/correios/base.rb +23 -34
- data/app/models/spree/shipping_rate_decorator.rb +13 -0
- data/app/models/spree/stock/estimator_decorator.rb +26 -0
- data/app/overrides/spree/checkout/_delivery/add_timing_info.html.erb.deface +2 -0
- data/config/locales/pt-BR.yml +3 -1
- data/db/migrate/20151203140951_add_days_and_info_to_spree_shipping_rates.rb +6 -0
- data/lib/spree_correios_shipping/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7b84d13f0e661e7116f8acdac4aa83066412533
|
4
|
+
data.tar.gz: 67b190906f148d6630933f8ce2ae0a4bebe8dab9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41e4b2252376d33bc683704dbafc34ca1e5fb5d02fad70e1c7e35055e9d117681878fadeb345b1cd1cfd256873474bd500c8731576d1a61d5b69b987cae7aca1
|
7
|
+
data.tar.gz: 148a9b02e12d9caceca8e35dc7490c7da04b9518ae8ebf43f82710851ea89133ba2e28a990e71a3755fc0bedc51b4a2850adc546c5840b9adb2bc67ce87ef25c
|
data/README.md
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
SpreeCorreiosShipping
|
2
2
|
=====================
|
3
3
|
[![Code Climate](https://codeclimate.com/github/locomotivapro/spree_correios_shipping/badges/gpa.svg)](https://codeclimate.com/github/locomotivapro/spree_correios_shipping)
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/spree_correios_shipping.svg)](http://badge.fury.io/rb/spree_correios_shipping)
|
4
5
|
|
5
6
|
This is a gem to allow use Correios service for shipping methods in spree
|
6
7
|
Currently just tested and working with spree > 3.1
|
7
8
|
|
9
|
+
There is a 1.2 spree implementation, just use 1-2-stable branch.
|
10
|
+
|
8
11
|
## Installation
|
9
12
|
|
10
13
|
1. Add the following to your Gemfile
|
@@ -24,19 +24,14 @@ module Spree
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def compute_package(package)
|
27
|
-
order = package.order
|
28
|
-
stock_location = package.stock_location
|
29
|
-
|
30
|
-
origin = build_location(stock_location)
|
31
|
-
destination = build_location(order.ship_address)
|
32
27
|
service_code = self.class.service_code
|
28
|
+
retrieve_correios_response(package)
|
33
29
|
|
34
|
-
|
30
|
+
return nil if @rates_result.kind_of?(Spree::ShippingError)
|
31
|
+
return nil if @rates_result.empty?
|
32
|
+
return nil unless @rates_result.is_a?(Hash)
|
35
33
|
|
36
|
-
|
37
|
-
return nil if rates_result.empty?
|
38
|
-
return nil unless rates_result.is_a?(Hash)
|
39
|
-
rate = rates_result[service_code][:price]
|
34
|
+
rate = @rates_result[service_code][:price]
|
40
35
|
|
41
36
|
return nil unless rate
|
42
37
|
return nil if rate.to_f == 0.0
|
@@ -44,7 +39,23 @@ module Spree
|
|
44
39
|
return rate
|
45
40
|
end
|
46
41
|
|
42
|
+
def timing_info(package)
|
43
|
+
@rates_result ||= retrieve_correios_response(package)
|
44
|
+
service_code = self.class.service_code
|
45
|
+
@rates_result[service_code][:timing_info]
|
46
|
+
end
|
47
|
+
|
47
48
|
private
|
49
|
+
def retrieve_correios_response(package)
|
50
|
+
order = package.order
|
51
|
+
stock_location = package.stock_location
|
52
|
+
|
53
|
+
origin = build_location(stock_location)
|
54
|
+
destination = build_location(order.ship_address)
|
55
|
+
|
56
|
+
@rates_result = retrieve_rates_from_cache(package, origin, destination)
|
57
|
+
end
|
58
|
+
|
48
59
|
def is_package_shippable?(package)
|
49
60
|
if Spree::CorreiosShipping::Config[:split_shipments]
|
50
61
|
heavy_items = package.contents.select { |content_item| content_item.variant.weight.to_f >= max_allowed_weight }
|
@@ -117,7 +128,7 @@ module Spree
|
|
117
128
|
return {response.nome.downcase.to_sym => {price: response.valor, delivery_time: response.prazo_entrega}} unless response.is_a?(Hash)
|
118
129
|
response_hash = {}
|
119
130
|
services.each do |service|
|
120
|
-
response_hash[service] = {price: response[service].valor,
|
131
|
+
response_hash[service] = {price: response[service].valor, timing_info: { days: response[service].prazo_entrega, info: response[service].msg_erro } }
|
121
132
|
end
|
122
133
|
end
|
123
134
|
|
@@ -130,35 +141,13 @@ module Spree
|
|
130
141
|
#end
|
131
142
|
end
|
132
143
|
|
144
|
+
|
133
145
|
def retrieve_rates_from_cache package, origin, destination
|
134
146
|
Rails.cache.fetch(cache_key(package)) do
|
135
147
|
retrieve_rates(origin, destination, package)
|
136
148
|
end
|
137
149
|
end
|
138
150
|
|
139
|
-
#def retrieve_timings(origin, destination, packages)
|
140
|
-
#begin
|
141
|
-
#if carrier.respond_to?(:find_time_in_transit)
|
142
|
-
#response = carrier.find_time_in_transit(origin, destination, packages)
|
143
|
-
#return response
|
144
|
-
#end
|
145
|
-
#rescue ActiveMerchant::Shipping::ResponseError => re
|
146
|
-
#if re.response.is_a?(ActiveMerchant::Shipping::Response)
|
147
|
-
#params = re.response.params
|
148
|
-
#if params.has_key?("Response") && params["Response"].has_key?("Error") && params["Response"]["Error"].has_key?("ErrorDescription")
|
149
|
-
#message = params["Response"]["Error"]["ErrorDescription"]
|
150
|
-
#else
|
151
|
-
#message = re.message
|
152
|
-
#end
|
153
|
-
#else
|
154
|
-
#message = re.message
|
155
|
-
#end
|
156
|
-
|
157
|
-
#error = Spree::ShippingError.new("#{I18n.t(:shipping_error)}: #{message}")
|
158
|
-
#Rails.cache.write @cache_key+"-timings", error #write error to cache to prevent constant re-lookups
|
159
|
-
#raise error
|
160
|
-
#end
|
161
|
-
#end
|
162
151
|
end
|
163
152
|
end
|
164
153
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Spree
|
2
|
+
Stock::Estimator.class_eval do
|
3
|
+
|
4
|
+
def calculate_shipping_rates(package, ui_filter)
|
5
|
+
shipping_methods(package, ui_filter).map do |shipping_method|
|
6
|
+
calculator = shipping_method.calculator
|
7
|
+
cost = calculator.compute(package)
|
8
|
+
|
9
|
+
timing_info = if calculator.respond_to? :timing_info
|
10
|
+
calculator.timing_info(package)
|
11
|
+
else
|
12
|
+
{}
|
13
|
+
end
|
14
|
+
|
15
|
+
shipping_method.shipping_rates.new(
|
16
|
+
cost: gross_amount(cost, taxation_options_for(shipping_method)),
|
17
|
+
tax_rate: first_tax_rate_for(shipping_method.tax_category),
|
18
|
+
days: timing_info[:days],
|
19
|
+
info: timing_info[:info]
|
20
|
+
) if cost
|
21
|
+
|
22
|
+
end.compact
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
data/config/locales/pt-BR.yml
CHANGED
@@ -2,6 +2,8 @@ pt-BR:
|
|
2
2
|
or: ou
|
3
3
|
correios_shipping_settings: 'Preferências dos Correios (ECT)'
|
4
4
|
spree:
|
5
|
+
pre_delivery_days_info: 'Prazo:'
|
6
|
+
delivery_days: dias
|
5
7
|
edit_package: Editar Embalagem
|
6
8
|
correios_shipping_settings: 'Preferências dos Correios (ECT)'
|
7
9
|
correios_settings: Preferências
|
@@ -12,7 +14,7 @@ pt-BR:
|
|
12
14
|
correios_shipping:
|
13
15
|
id_correios: Identificação Correios
|
14
16
|
password_correios: Senha (Fornecida pela ECT)
|
15
|
-
services: Serviços (utilize "_" ao invés de espaços e separe por vírgula). Não
|
17
|
+
services: Serviços (utilize "_" ao invés de espaços e separe por vírgula). Não altere a menos que tenha certeza do que está fazendo!
|
16
18
|
default_item_weight: Peso do item padrão (quando peso não for fornecido)
|
17
19
|
split_shipments: Permitir criar mais de um pacote para envio (Se o pedido passar das confs máximas da ECT)
|
18
20
|
max_shipping_weight: Peso máximo aceito pela ECT
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_correios_shipping
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Denis Tierno, Fabio Esposito
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: spree_core
|
@@ -149,10 +149,13 @@ files:
|
|
149
149
|
- app/models/spree/calculator/shipping/correios/sedex_com_contrato5.rb
|
150
150
|
- app/models/spree/calculator/shipping/correios/sedex_hoje.rb
|
151
151
|
- app/models/spree/product_package.rb
|
152
|
+
- app/models/spree/shipping_rate_decorator.rb
|
153
|
+
- app/models/spree/stock/estimator_decorator.rb
|
152
154
|
- app/models/spree/stock/splitter/correios_package.rb
|
153
155
|
- app/models/spree/stock/splitter/correios_weight.rb
|
154
156
|
- app/models/spree/stock_location_decorator.rb
|
155
157
|
- app/overrides/spree/admin/shared/sub_menu/_configuration/add_correios_shipping_settings_tab.html.erb.deface
|
158
|
+
- app/overrides/spree/checkout/_delivery/add_timing_info.html.erb.deface
|
156
159
|
- app/views/spree/admin/correios_shipping_settings/edit.html.erb
|
157
160
|
- app/views/spree/admin/product_packages/_form.html.erb
|
158
161
|
- app/views/spree/admin/product_packages/edit.html.erb
|
@@ -163,6 +166,7 @@ files:
|
|
163
166
|
- config/locales/pt-BR.yml
|
164
167
|
- config/routes.rb
|
165
168
|
- db/migrate/20150303111955_create_product_packages.rb
|
169
|
+
- db/migrate/20151203140951_add_days_and_info_to_spree_shipping_rates.rb
|
166
170
|
- lib/generators/spree_correios_shipping/install/install_generator.rb
|
167
171
|
- lib/spree/correios_shipping_configuration.rb
|
168
172
|
- lib/spree/shipping_error.rb
|