solidus_tec_estimator 1.0.2 → 1.0.4

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
  SHA256:
3
- metadata.gz: ec04ac8776ab72173ed80d8e4c94ec6f7f96e09e67fb05f86588d680fe2cdaa3
4
- data.tar.gz: 7f0019e36d4c414e1489b53c6489fb1e2d50fe25d0f6a8fefaba2e832fc0f340
3
+ metadata.gz: 3cea9190ff9059d6ba553fcac90d0452323a87f8df52c96b06101717516c95a7
4
+ data.tar.gz: 2bcd8fcdaeeda88b8b83b1dbbad6c1742492884b7d82045447effc37aef92c60
5
5
  SHA512:
6
- metadata.gz: f40c6c0d165ece193dc40263667b4fa08043bdcac88431af801aeb9b0584d2aef128f1d12e0d1c3c4b3b3e29e93b0e6378f43523964631e906fcc52f35319862
7
- data.tar.gz: 30da2db3d0463e33ca81c86ddab5c1f7d1a40b063d6d47e4fa77d4ac3e5de31510c8113c591cc145cc2bd4c8e4f2cf2352ab0536f67c1668a4ca8ec620c4504e
6
+ metadata.gz: 5fcc90dbeed6618efceee3c250d6d65c5367452dc9f6802ff1645b3294658e418ca5c8ba2893af0455857e15d69a1b666e6a5a9257b6c3a69af182d596421104
7
+ data.tar.gz: 3b016c9cdb534fec3c2a8d82d529b13b7b8967ee7e1c62a7c0c3e52e487de52a27874f87556eaa3104c19c37b1e4a5a3b8646e98ad7e110c7c043f4bb81a23a1
@@ -14,7 +14,7 @@ module SolidusTecEstimator
14
14
  end
15
15
  end.compact
16
16
  rates += providers(package).map do |provider|
17
- provider_shipping_methods = provider.spree_shipping_methods.available_to_store(package.shipment.order.store).available_in_stock_location(package.stock_location)
17
+ provider_shipping_methods = remove_unavailable_methods(shipping_methods: provider.spree_shipping_methods, package: package)
18
18
  provider.class_name.constantize.new(package, provider_shipping_methods).shipping_rates
19
19
  end.flatten.compact
20
20
 
@@ -32,10 +32,8 @@ module SolidusTecEstimator
32
32
  end
33
33
 
34
34
  def shipping_methods(package)
35
- package.shipping_methods
36
- .available_to_store(package.shipment.order.store)
37
- .available_for_address(package.shipment.order.ship_address)
38
- .where(available_to_users: true)
35
+ remove_unavailable_methods(shipping_methods: package.shipping_methods, package: package)
36
+ .where(provider_id: nil)
39
37
  .includes(:calculator)
40
38
  .to_a.select do |ship_method|
41
39
  calculator = ship_method.calculator
@@ -47,5 +45,12 @@ module SolidusTecEstimator
47
45
  SolidusTecEstimator::Provider.where(active: true)
48
46
  end
49
47
 
48
+ def remove_unavailable_methods shipping_methods:, package:
49
+ shipping_methods.available_to_store(package.shipment.order.store)
50
+ .available_in_stock_location(package.stock_location)
51
+ .available_for_address(package.shipment.order.ship_address)
52
+ .where(available_to_users: true)
53
+ end
54
+
50
55
  end
51
56
  end
@@ -1,5 +1,11 @@
1
1
  module SolidusTecEstimator
2
2
  class Provider < ApplicationRecord
3
3
  has_many :spree_shipping_methods, class_name: "Spree::ShippingMethod"
4
+
5
+ after_create :install_provider
6
+
7
+ def install_provider
8
+ self.class_name.constantize.install
9
+ end
4
10
  end
5
11
  end
@@ -8,6 +8,18 @@ module SolidusTecEstimator
8
8
  @shipping_methods = shipping_methods
9
9
  end
10
10
 
11
+ def self.install
12
+ Spree::ShippingMethod.find_or_create_by(code: self.name.underscore) do |shipping_method|
13
+ shipping_method.name = "Entrega de moto"
14
+ shipping_method.carrier = "Entrega local"
15
+ shipping_method.code = self.name.underscore
16
+ shipping_method.calculator = Spree::Calculator::Shipping::FlatRate.create
17
+ shipping_method.shipping_categories = [Spree::ShippingCategory.first]
18
+ shipping_method.available_to_users = false
19
+ shipping_method.provider_id = SolidusTecEstimator::Provider.find_by(class_name: self.to_s).id
20
+ end
21
+ end
22
+
11
23
  def shipping_rates
12
24
  shipping_rates = []
13
25
  if ship_address_city == "São João da Boa Vista" && tem_estoque_na_f1? && package.weight <= 10000
@@ -27,16 +39,7 @@ module SolidusTecEstimator
27
39
  end
28
40
 
29
41
  def build_shipping_rate(package)
30
- shipping_method = Spree::ShippingMethod.find_or_create_by(
31
- carrier: "Entrega local",
32
- service_level: ""
33
- ) do |shipping_method|
34
- shipping_method.name = "Entrega de moto"
35
- shipping_method.calculator = Spree::Calculator::Shipping::FlatRate.create
36
- shipping_method.shipping_categories = Spree::ShippingCategory.all
37
- shipping_method.available_to_users = true
38
- shipping_method.provider_id = SolidusTecEstimator::Provider.find_by(class_name: self.class.to_s).id
39
- end
42
+ shipping_method = Spree::ShippingMethod.find_by(code: self.class.to_s.underscore)
40
43
 
41
44
  time_now = Time.now.in_time_zone('America/Sao_Paulo')
42
45
  if time_now < time_now.change({hour: 16}) && time_now.on_weekday?
@@ -60,7 +63,7 @@ module SolidusTecEstimator
60
63
  end
61
64
 
62
65
  def ship_address_city
63
- Cep.find_by(codigo_postal: package.order.last_zipcode).try(:localidade) || package.order.ship_address.city
66
+ Cep.find_by(codigo_postal: package.order.ship_address&.zipcode).try(:localidade) || package.order.ship_address.city
64
67
  end
65
68
 
66
69
  def self.calculate_delivery_time rate
@@ -1,3 +1,3 @@
1
1
  module SolidusTecEstimator
2
- VERSION = '1.0.2'
2
+ VERSION = '1.0.4'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_tec_estimator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - ulysses
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-08-28 00:00:00.000000000 Z
11
+ date: 2024-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: solidus_core