spree_correios_shipping 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.rspec +1 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +270 -0
- data/LICENSE +26 -0
- data/README.md +45 -0
- data/Rakefile +29 -0
- data/Versionfile +14 -0
- data/app/assets/javascripts/spree/backend/product_packages/edit.js.coffee +4 -0
- data/app/assets/javascripts/spree/backend/product_packages/index.js.coffee +28 -0
- data/app/assets/javascripts/spree/backend/product_packages/new.js.coffee +7 -0
- data/app/controllers/spree/admin/correios_shipping_settings_controller.rb +18 -0
- data/app/controllers/spree/admin/product_packages_controller.rb +12 -0
- data/app/controllers/spree/checkout_controller_decorator.rb +9 -0
- data/app/models/spree/calculator/shipping/correios/base.rb +165 -0
- data/app/models/spree/calculator/shipping/correios/e_sedex.rb +16 -0
- data/app/models/spree/calculator/shipping/correios/e_sedex_express.rb +17 -0
- data/app/models/spree/calculator/shipping/correios/e_sedex_grupo1.rb +17 -0
- data/app/models/spree/calculator/shipping/correios/e_sedex_grupo2.rb +17 -0
- data/app/models/spree/calculator/shipping/correios/e_sedex_grupo3.rb +17 -0
- data/app/models/spree/calculator/shipping/correios/e_sedex_prioritario.rb +17 -0
- data/app/models/spree/calculator/shipping/correios/overweight.rb +25 -0
- data/app/models/spree/calculator/shipping/correios/pac.rb +17 -0
- data/app/models/spree/calculator/shipping/correios/pac_com_contrato.rb +17 -0
- data/app/models/spree/calculator/shipping/correios/sedex.rb +17 -0
- data/app/models/spree/calculator/shipping/correios/sedex10.rb +17 -0
- data/app/models/spree/calculator/shipping/correios/sedex_a_cobrar.rb +17 -0
- data/app/models/spree/calculator/shipping/correios/sedex_a_cobrar_com_contrato.rb +17 -0
- data/app/models/spree/calculator/shipping/correios/sedex_com_contrato1.rb +17 -0
- data/app/models/spree/calculator/shipping/correios/sedex_com_contrato2.rb +17 -0
- data/app/models/spree/calculator/shipping/correios/sedex_com_contrato3.rb +17 -0
- data/app/models/spree/calculator/shipping/correios/sedex_com_contrato4.rb +17 -0
- data/app/models/spree/calculator/shipping/correios/sedex_com_contrato5.rb +17 -0
- data/app/models/spree/calculator/shipping/correios/sedex_hoje.rb +17 -0
- data/app/models/spree/product_package.rb +9 -0
- data/app/models/spree/stock/splitter/correios_package.rb +51 -0
- data/app/models/spree/stock/splitter/correios_weight.rb +31 -0
- data/app/models/spree/stock_location_decorator.rb +10 -0
- data/app/overrides/spree/admin/shared/sub_menu/_configuration/add_correios_shipping_settings_tab.html.erb.deface +3 -0
- data/app/views/spree/admin/correios_shipping_settings/edit.html.erb +28 -0
- data/app/views/spree/admin/product_packages/_form.html.erb +31 -0
- data/app/views/spree/admin/product_packages/edit.html.erb +20 -0
- data/app/views/spree/admin/product_packages/index.html.erb +49 -0
- data/app/views/spree/admin/product_packages/new.html.erb +14 -0
- data/app/views/spree/admin/shared/_correios_tabs.html.erb +11 -0
- data/config/locales/en.yml +7 -0
- data/config/locales/pt-BR.yml +19 -0
- data/config/routes.rb +7 -0
- data/db/migrate/20150303111955_create_product_packages.rb +11 -0
- data/lib/generators/spree_correios_shipping/install/install_generator.rb +19 -0
- data/lib/spree/correios_shipping_configuration.rb +10 -0
- data/lib/spree/shipping_error.rb +3 -0
- data/lib/spree_correios_shipping/engine.rb +69 -0
- data/lib/spree_correios_shipping/version.rb +3 -0
- data/lib/spree_correios_shipping.rb +3 -0
- data/script/rails +7 -0
- data/spec/spec_helper.rb +44 -0
- data/spree_correios_shipping.gemspec +30 -0
- metadata +201 -0
@@ -0,0 +1,17 @@
|
|
1
|
+
module Spree
|
2
|
+
module Calculator::Shipping
|
3
|
+
module Correios
|
4
|
+
class ESedexExpress < Spree::Calculator::Shipping::Correios::Base
|
5
|
+
|
6
|
+
def self.description
|
7
|
+
"e-Sedex Express - 81035"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.service_code
|
11
|
+
:e_sedex_express
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Spree
|
2
|
+
module Calculator::Shipping
|
3
|
+
module Correios
|
4
|
+
class ESedexGrupo1 < Spree::Calculator::Shipping::Correios::Base
|
5
|
+
|
6
|
+
def self.description
|
7
|
+
"e-Sedex Grupo 1 - 81868"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.service_code
|
11
|
+
:e_sedex_grupo_1
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Spree
|
2
|
+
module Calculator::Shipping
|
3
|
+
module Correios
|
4
|
+
class ESedexGrupo2 < Spree::Calculator::Shipping::Correios::Base
|
5
|
+
|
6
|
+
def self.description
|
7
|
+
"e-Sedex Grupo 2 - 81833"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.service_code
|
11
|
+
:e_sedex_grupo_2
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Spree
|
2
|
+
module Calculator::Shipping
|
3
|
+
module Correios
|
4
|
+
class ESedexGrupo3 < Spree::Calculator::Shipping::Correios::Base
|
5
|
+
|
6
|
+
def self.description
|
7
|
+
"e-Sedex Grupo 3 - 81850"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.service_code
|
11
|
+
:e_sedex_grupo_3
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Spree
|
2
|
+
module Calculator::Shipping
|
3
|
+
module Correios
|
4
|
+
class ESedexPrioritario < Spree::Calculator::Shipping::Correios::Base
|
5
|
+
|
6
|
+
def self.description
|
7
|
+
"e-Sedex Prioritario - 81027"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.service_code
|
11
|
+
:e_sedex_prioritario
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Spree
|
2
|
+
module Calculator::Shipping
|
3
|
+
module Correios
|
4
|
+
class Overweight < Spree::Calculator::Shipping::Correios::Base
|
5
|
+
|
6
|
+
def self.description
|
7
|
+
"Acima de 30kg"
|
8
|
+
end
|
9
|
+
|
10
|
+
def available?(package)
|
11
|
+
package_weight > 30 ? true : false
|
12
|
+
end
|
13
|
+
|
14
|
+
def compute_package(package)
|
15
|
+
0.00
|
16
|
+
end
|
17
|
+
|
18
|
+
def deliver_time(package)
|
19
|
+
nil
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Spree
|
2
|
+
module Calculator::Shipping
|
3
|
+
module Correios
|
4
|
+
class Pac < Spree::Calculator::Shipping::Correios::Base
|
5
|
+
|
6
|
+
def self.description
|
7
|
+
"Pac sem contrato - 41106"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.service_code
|
11
|
+
:pac
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Spree
|
2
|
+
module Calculator::Shipping
|
3
|
+
module Correios
|
4
|
+
class PacComContrato < Spree::Calculator::Shipping::Correios::Base
|
5
|
+
|
6
|
+
def self.description
|
7
|
+
"Pac com contrato - 41068"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.service_code
|
11
|
+
:pac_com_contrato
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Spree
|
2
|
+
module Calculator::Shipping
|
3
|
+
module Correios
|
4
|
+
class Sedex < Spree::Calculator::Shipping::Correios::Base
|
5
|
+
|
6
|
+
def self.description
|
7
|
+
"Sedex sem contrato - 40010"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.service_code
|
11
|
+
:sedex
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Spree
|
2
|
+
module Calculator::Shipping
|
3
|
+
module Correios
|
4
|
+
class Sedex10 < Spree::Calculator::Shipping::Correios::Base
|
5
|
+
|
6
|
+
def self.description
|
7
|
+
"Sedex 10 sem contrato - 40215"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.service_code
|
11
|
+
:sedex_10
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Spree
|
2
|
+
module Calculator::Shipping
|
3
|
+
module Correios
|
4
|
+
class SedexACobrar < Spree::Calculator::Shipping::Correios::Base
|
5
|
+
|
6
|
+
def self.description
|
7
|
+
"Sedex a cobrar sem contrato - 40045"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.service_code
|
11
|
+
:sedex_a_cobrar
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Spree
|
2
|
+
module Calculator::Shipping
|
3
|
+
module Correios
|
4
|
+
class SedexACobrarComContrato < Spree::Calculator::Shipping::Correios::Base
|
5
|
+
|
6
|
+
def self.description
|
7
|
+
"Sedex a cobrar com contrato - 40126"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.service_code
|
11
|
+
:sedex_a_cobrar_com_contrato
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Spree
|
2
|
+
module Calculator::Shipping
|
3
|
+
module Correios
|
4
|
+
class SedexComContrato1 < Spree::Calculator::Shipping::Correios::Base
|
5
|
+
|
6
|
+
def self.description
|
7
|
+
"Sedex com Contrato 1 - 40096"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.service_code
|
11
|
+
:sedex_com_contrato_1
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Spree
|
2
|
+
module Calculator::Shipping
|
3
|
+
module Correios
|
4
|
+
class SedexComContrato2 < Spree::Calculator::Shipping::Correios::Base
|
5
|
+
|
6
|
+
def self.description
|
7
|
+
"Sedex com Contrato 2 - 40436"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.service_code
|
11
|
+
:sedex_com_contrato_2
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Spree
|
2
|
+
module Calculator::Shipping
|
3
|
+
module Correios
|
4
|
+
class SedexComContrato3 < Spree::Calculator::Shipping::Correios::Base
|
5
|
+
|
6
|
+
def self.description
|
7
|
+
"Sedex com Contrato 3 - 40444"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.service_code
|
11
|
+
:sedex_com_contrato_3
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Spree
|
2
|
+
module Calculator::Shipping
|
3
|
+
module Correios
|
4
|
+
class SedexComContrato4 < Spree::Calculator::Shipping::Correios::Base
|
5
|
+
|
6
|
+
def self.description
|
7
|
+
"Sedex com Contrato 4 - 40568"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.service_code
|
11
|
+
:sedex_com_contrato_4
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Spree
|
2
|
+
module Calculator::Shipping
|
3
|
+
module Correios
|
4
|
+
class SedexComContrato5 < Spree::Calculator::Shipping::Correios::Base
|
5
|
+
|
6
|
+
def self.description
|
7
|
+
"Sedex com Contrato 5 - 40606"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.service_code
|
11
|
+
:sedex_com_contrato_5
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Spree
|
2
|
+
module Calculator::Shipping
|
3
|
+
module Correios
|
4
|
+
class SedexHoje < Spree::Calculator::Shipping::Correios::Base
|
5
|
+
|
6
|
+
def self.description
|
7
|
+
"Sedex hoje sem contrato - 40290"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.service_code
|
11
|
+
:sedex_hoje
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Spree
|
2
|
+
module Stock
|
3
|
+
module Splitter
|
4
|
+
class CorreiosPackage < Spree::Stock::Splitter::Base
|
5
|
+
attr_reader :packer, :next_splitter
|
6
|
+
|
7
|
+
def available_product_packages
|
8
|
+
ProductPackage.all
|
9
|
+
end
|
10
|
+
|
11
|
+
def split(packages)
|
12
|
+
packages.each do |package|
|
13
|
+
removed_contents = reduce package
|
14
|
+
packages << build_package(removed_contents) unless removed_contents.empty?
|
15
|
+
end
|
16
|
+
return_next packages
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
def reduce(package)
|
21
|
+
removed = []
|
22
|
+
while package.weight > self.threshold.to_f
|
23
|
+
break if package.contents.size == 1
|
24
|
+
removed << package.contents.shift
|
25
|
+
end
|
26
|
+
removed
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
def organize_packages(packages)
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
def boxes_volume
|
35
|
+
boxes_array = available_product_packages.inject([]) { |arr, box| arr << (box.widht * box.height * box.depth) }
|
36
|
+
boxes_array.sort
|
37
|
+
end
|
38
|
+
|
39
|
+
def total_package_volume(package)
|
40
|
+
package.contents.inject(0.0) { |volume, item| volume += (item.width * item.height * item.depth ) }
|
41
|
+
end
|
42
|
+
|
43
|
+
def package_fits_inside_box(package)
|
44
|
+
package_volume = total_package_volume(package)
|
45
|
+
box = boxes_volume.detect { |box| package_volume <= box }
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Spree
|
2
|
+
module Stock
|
3
|
+
module Splitter
|
4
|
+
class CorreiosWeight < Spree::Stock::Splitter::Base
|
5
|
+
attr_reader :packer, :next_splitter
|
6
|
+
|
7
|
+
cattr_accessor :threshold do
|
8
|
+
Spree::CorreiosShipping::Config[:max_shipping_weight]
|
9
|
+
end
|
10
|
+
|
11
|
+
def split(packages)
|
12
|
+
packages.each do |package|
|
13
|
+
removed_contents = reduce package
|
14
|
+
packages << build_package(removed_contents) unless removed_contents.empty?
|
15
|
+
end
|
16
|
+
return_next packages
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
def reduce(package)
|
21
|
+
removed = []
|
22
|
+
while package.weight > self.threshold.to_f
|
23
|
+
break if package.contents.size == 1
|
24
|
+
removed << package.contents.shift
|
25
|
+
end
|
26
|
+
removed
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
Spree::StockLocation.class_eval do
|
2
|
+
validates_presence_of :address1, :city, :zipcode, :country_id
|
3
|
+
validate :state_id_or_state_name_is_present
|
4
|
+
|
5
|
+
def state_id_or_state_name_is_present
|
6
|
+
if state_id.nil? && state_name.nil?
|
7
|
+
errors.add(:state_name, "can't be blank")
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<% content_for :page_title do %>
|
2
|
+
<%= Spree.t(:correios_shipping_settings) %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<%= render 'spree/admin/shared/correios_tabs', current: 'Correios Settings' %>
|
6
|
+
|
7
|
+
<%= form_tag admin_correios_shipping_settings_path, :method => :put do %>
|
8
|
+
<fieldset class="no-border-top">
|
9
|
+
<div data-hook="admin_correios_shipping_settings_form_fields">
|
10
|
+
<div class="row">
|
11
|
+
<div class="col-md-12" data-hook="preferences_fields">
|
12
|
+
<% @preferences.each do |key|
|
13
|
+
type = @config.preference_type(key) %>
|
14
|
+
|
15
|
+
<%= label_tag(key, t(key, scope: :correios_shipping) + ': ') + tag(:br) if type != :boolean %>
|
16
|
+
<%= preference_field_tag(key,@config[key], :type => type) %>
|
17
|
+
<%= label_tag(key, t(key, scope: :correios_shipping)) + tag(:br) if type == :boolean %>
|
18
|
+
|
19
|
+
<% end %>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
|
23
|
+
</fieldset>
|
24
|
+
<div class="form-actions" data-hook="buttons">
|
25
|
+
<%= button Spree.t('actions.update') %>
|
26
|
+
</div>
|
27
|
+
<% end %>
|
28
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<div data-hook="admin_product_package_form_fields" class="row">
|
2
|
+
|
3
|
+
<div class="col-md-3">
|
4
|
+
<div data-hook="length" class="form-group">
|
5
|
+
<%= f.label Spree.t(:length) %>
|
6
|
+
<%= f.text_field :length, class: 'form-control' %>
|
7
|
+
</div>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<div class="col-md-3">
|
11
|
+
<div data-hook="width" class="form-group">
|
12
|
+
<%= f.label Spree.t(:width) %>
|
13
|
+
<%= f.text_field :width, class: 'form-control' %>
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class="col-md-3">
|
18
|
+
<div data-hook="height" class="form-group">
|
19
|
+
<%= f.label Spree.t(:height) %>
|
20
|
+
<%= f.text_field :height, class: 'form-control' %>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div class="col-md-3">
|
25
|
+
<div data-hook="weight" class="form-group">
|
26
|
+
<%= f.label Spree.t(:weight) %>
|
27
|
+
<%= f.text_field :weight, class: 'form-control' %>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
|
31
|
+
</div>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<% content_for :page_title do %>
|
2
|
+
<%= Spree.t(:product_packages) %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<%= render :partial => 'spree/admin/shared/correios_tabs', :locals => { :current => 'Product Packages' } %>
|
6
|
+
<%= render 'spree/admin/shared/error_messages', :target => @product_package %>
|
7
|
+
|
8
|
+
<%= form_for [:admin, @product_package], :html => { :multipart => true } do |f| %>
|
9
|
+
<div class="well">
|
10
|
+
<fieldset data-hook="edit_product_package">
|
11
|
+
<legend align="center"><%= Spree.t(:edit_package) %></legend>
|
12
|
+
<%= render :partial => 'form', :locals => { :f => f } %>
|
13
|
+
<%= render :partial => 'spree/admin/shared/edit_resource_links' %>
|
14
|
+
</fieldset>
|
15
|
+
</div>
|
16
|
+
<% end %>
|
17
|
+
|
18
|
+
<% content_for :head do %>
|
19
|
+
<%= javascript_include_tag 'spree/backend/product_packages/edit.js' %>
|
20
|
+
<% end %>
|
@@ -0,0 +1,49 @@
|
|
1
|
+
<% content_for :head do %>
|
2
|
+
<%= javascript_include_tag 'spree/backend/product_packages/index.js' %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<%= render 'spree/admin/shared/correios_tabs', current: 'Product Packages' %>
|
6
|
+
<%= render 'spree/admin/shared/error_messages', :target => @product_package %>
|
7
|
+
|
8
|
+
<% content_for :page_title do %>
|
9
|
+
<%= Spree.t(:product_packages) %>
|
10
|
+
<% end %>
|
11
|
+
|
12
|
+
<% content_for :page_actions do %>
|
13
|
+
<%= button_link_to(Spree.t(:new_package), new_admin_product_package_url(@product_package), :id => 'new_product_package_link', :class => 'btn-success spree_add_fields pull-right', icon: 'add') %>
|
14
|
+
<% end %>
|
15
|
+
<div id="product_packages" data-hook></div>
|
16
|
+
|
17
|
+
<% unless @product_packages.any? %>
|
18
|
+
<div class="no-objects-found alert alert-info">
|
19
|
+
<%= Spree.t(:no_product_package_found) %>,
|
20
|
+
<%= link_to(Spree.t(:add_one), spree.new_admin_product_package_path(@product_package)) if can? :create, Spree::Product %>!
|
21
|
+
</div>
|
22
|
+
<% else %>
|
23
|
+
<table class="table">
|
24
|
+
<thead data-hook="option_header">
|
25
|
+
<tr data-hook="product_packages_header">
|
26
|
+
<th><%= Spree.t(:length) %></th>
|
27
|
+
<th><%= Spree.t(:width) %></th>
|
28
|
+
<th><%= Spree.t(:height) %></th>
|
29
|
+
<th><%= Spree.t(:weight) %></th>
|
30
|
+
<th class="actions"></th>
|
31
|
+
</tr>
|
32
|
+
</thead>
|
33
|
+
<tbody id="product_packages" data-hook>
|
34
|
+
<% @product_packages.each do |package| %>
|
35
|
+
<tr id="<%= dom_id(package) %>" data-hook="product_package_row">
|
36
|
+
<td><%= package.length %></td>
|
37
|
+
<td><%= package.width %></td>
|
38
|
+
<td><%= package.height %></td>
|
39
|
+
<td><%= package.weight %></td>
|
40
|
+
<td class="actions actions-2 text-right">
|
41
|
+
<%= link_to_edit package, :no_text => true, :data => {:action => 'edit'} %>
|
42
|
+
|
43
|
+
<%= link_to_delete package, { :url => admin_product_package_url(package), :no_text => true }%>
|
44
|
+
</td>
|
45
|
+
</tr>
|
46
|
+
<% end %>
|
47
|
+
</tbody>
|
48
|
+
</table>
|
49
|
+
<% end %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<%= render :partial => 'spree/admin/shared/correios_tabs', :locals => { :current => 'Product Packages' } %>
|
2
|
+
<%= render 'spree/admin/shared/error_messages', :target => @product_package %>
|
3
|
+
|
4
|
+
<%= form_for [:admin, @product_package], :html => { :multipart => true } do |f| %>
|
5
|
+
<div class="well">
|
6
|
+
<fieldset data-hook="new_product_package">
|
7
|
+
<legend align="center"><%= Spree.t(:new_package) %></legend>
|
8
|
+
<%= render :partial => 'form', :locals => { :f => f } %>
|
9
|
+
<%= render :partial => 'spree/admin/shared/new_resource_links' %>
|
10
|
+
</fieldset>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<%= javascript_include_tag 'spree/backend/product_packages/new.js' %>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<% content_for :sidebar do %>
|
2
|
+
<ul class="nav nav-pills nav-stacked" data-hook="admin_correios_settings_tabs">
|
3
|
+
<%= content_tag :li, :class => ('active' if current == 'Correios Settings') do %>
|
4
|
+
<%= link_to_with_icon 'edit', Spree.t(:correios_settings), edit_admin_correios_shipping_settings_path %>
|
5
|
+
<% end if can?(:admin, current_store) %>
|
6
|
+
|
7
|
+
<%= content_tag :li, :class => ('active' if current == 'Product Packages') do %>
|
8
|
+
<%= link_to_with_icon 'gift', Spree.t(:product_packages), admin_product_packages_path %>
|
9
|
+
<% end if can?(:admin, current_store) %>
|
10
|
+
</ul>
|
11
|
+
<% end %>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
pt-BR:
|
2
|
+
or: ou
|
3
|
+
correios_shipping_settings: 'Preferências dos Correios (ECT)'
|
4
|
+
spree:
|
5
|
+
edit_package: Editar Embalagem
|
6
|
+
correios_shipping_settings: 'Preferências dos Correios (ECT)'
|
7
|
+
correios_settings: Preferências
|
8
|
+
product_packages: Embalagens de Produto
|
9
|
+
new_package: Nova Embalagem
|
10
|
+
no_product_package_found: Nenhuma embalagem encontrada
|
11
|
+
length: Comprimento
|
12
|
+
correios_shipping:
|
13
|
+
id_correios: Identificação Correios
|
14
|
+
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!
|
16
|
+
default_item_weight: Peso do item padrão (quando peso não for fornecido)
|
17
|
+
split_shipments: Permitir criar mais de um pacote para envio (Se o pedido passar das confs máximas da ECT)
|
18
|
+
max_shipping_weight: Peso máximo aceito pela ECT
|
19
|
+
|
data/config/routes.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
class CreateProductPackages < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :spree_product_packages do |t|
|
4
|
+
t.integer "length", :default => 0, :null => false
|
5
|
+
t.integer "width", :default => 0, :null => false
|
6
|
+
t.integer "height", :default => 0, :null => false
|
7
|
+
t.integer "weight", :default => 0, :null => false
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|