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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c412c1b1303a8d164512c2a132cbc0dc9ef375d7
4
- data.tar.gz: 1118dc4a8cf8a87e95aae84bd3414e2c80b6390a
3
+ metadata.gz: b7b84d13f0e661e7116f8acdac4aa83066412533
4
+ data.tar.gz: 67b190906f148d6630933f8ce2ae0a4bebe8dab9
5
5
  SHA512:
6
- metadata.gz: 199ed99b11cb4e2b41d8a4a812d39e6dea7a72951c04e57f8151d3cd134e1171bc487d4772b3fb2dc9655820fc9ea3da57a046c46f00ffa12c56346be16976cf
7
- data.tar.gz: 04d021a16b87a948d61cc9d8ca71a365213f247a5b4d9bdd3e9daa361ec86f3505128d986197a693e65ef7d012e836f61be9dcdeeb2e0a4870bba65568a382c4
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
- rates_result = retrieve_rates_from_cache(package, origin, destination)
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
- return nil if rates_result.kind_of?(Spree::ShippingError)
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, delivery_time: response[service].prazo_entrega}
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,13 @@
1
+ Spree::ShippingRate.class_eval do
2
+
3
+ def timing_info
4
+ if days || info
5
+ text = [Spree.t(:pre_delivery_days_info)]
6
+ text << "#{days} #{Spree.t(:delivery_days)}" if days
7
+ text << "(#{info})" if info
8
+ text.join(' ')
9
+ end
10
+ end
11
+
12
+ end
13
+
@@ -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
@@ -0,0 +1,2 @@
1
+ <!-- insert_after ".rate-cost" -->
2
+ <span class="rate-timing"><%= rate.timing_info %></span>
@@ -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 altera a menos que tenha certeza do que está fazendo!
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
@@ -0,0 +1,6 @@
1
+ class AddDaysAndInfoToSpreeShippingRates < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_shipping_rates, :days, :string
4
+ add_column :spree_shipping_rates, :info, :string
5
+ end
6
+ end
@@ -1,3 +1,3 @@
1
1
  module SpreeCorreiosShipping
2
- VERSION = '1.0.0'
2
+ VERSION = '1.1.0'
3
3
  end
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.0.0
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-05-07 00:00:00.000000000 Z
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