dscf-marketplace 0.9.3 → 0.9.4

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
  SHA256:
3
- metadata.gz: 58e2c52ef9974bd9dda7994468e59ec441a17e44871df8d543f4c1e15127e5ec
4
- data.tar.gz: 727cbb1d7c8bd88d9cabd362fbec25dacd46b43a8b505c298c4cdbc6fb0c9788
3
+ metadata.gz: 3344e182285e4e49140063b5e39456c4c51f9485460da13ec7e5a6e948fc0b3c
4
+ data.tar.gz: 9abdca4e70f5c315fa000ca5950d9dfc503dae85a167b3cef087e7c511757ccd
5
5
  SHA512:
6
- metadata.gz: e9f1daeddec065e76828a30c4b87d2b8fdbe82a795f013b0a83ccb6c67480587beccc02c1cfec7a19bd95b5e0201a9e5894034d0cf8c58f5d5de11de949e0e9f
7
- data.tar.gz: 4cb9a5a0086261329b19f894b92e4b023c8ec21aa2478b50a542371fe2c66b684c259517f0136c6fba4f21547470faf5487c2d5f91c3d4037040fb71ab8e026f
6
+ metadata.gz: '09781023abf0128615ddd44b516240f2fe32d83b582fb072fd4f86c40ea329e991b2dccfa0221512db413ba189b5955f0762f745bcf03adcab5c2d15a01cb2cd'
7
+ data.tar.gz: ed58b55872828a27773e9f72852f3ee301beb896b7b44df8fd841a2dd7b61d7d1e1ed56fc32e7fd2108f43526b854f12115ad57a0d3765f4a1cee3028945f5b1
@@ -41,6 +41,7 @@ module Dscf::Marketplace
41
41
  validate :bank_transfer_reference_required_for_completed_orders
42
42
 
43
43
  before_validation :clear_payment_references_for_cash
44
+ before_validation :auto_assign_dropoff_address, if: :delivery?
44
45
  before_save :calculate_total_amount
45
46
 
46
47
  # Ransack configuration for secure filtering
@@ -208,6 +209,38 @@ module Dscf::Marketplace
208
209
 
209
210
  private
210
211
 
212
+ def auto_assign_dropoff_address
213
+ return if dropoff_address_id.present? || dropoff_address.present?
214
+
215
+ user_address = ordered_by&.addresses&.find_by(address_type: :shipping) || ordered_by&.addresses&.first
216
+ if user_address.present?
217
+ self.dropoff_address = user_address
218
+ return
219
+ end
220
+
221
+ return unless defined?(Dscf::Marketplace::Retailer)
222
+
223
+ retailer = Dscf::Marketplace::Retailer.find_by(user_id: ordered_by_id)
224
+ if retailer&.location.present?
225
+ lat_str, lng_str = retailer.location.split(",")
226
+ lat = lat_str.to_f
227
+ lng = lng_str.to_f
228
+
229
+ if lat != 0.0 && lng != 0.0 && defined?(Dscf::Core::Address)
230
+ self.dropoff_address = Dscf::Core::Address.create!(
231
+ user_id: ordered_by_id,
232
+ address_type: :shipping,
233
+ country: "Ethiopia",
234
+ city: "Addis Ababa",
235
+ latitude: lat,
236
+ longitude: lng
237
+ )
238
+ end
239
+ end
240
+ rescue => e
241
+ Rails.logger.warn "Failed to auto-assign delivery address from retailer location: #{e.message}"
242
+ end
243
+
211
244
  def quotation_or_listing_present
212
245
  unless quotation.present? || listing.present? || order_items.any? { |item| item.source_type == "Dscf::Marketplace::AggregatorListing" }
213
246
  errors.add(:base, "Either quotation or listing must be present")
@@ -1,5 +1,5 @@
1
1
  module Dscf
2
2
  module Marketplace
3
- VERSION = "0.9.3".freeze
3
+ VERSION = "0.9.4".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dscf-marketplace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3
4
+ version: 0.9.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Asrat
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2026-06-25 00:00:00.000000000 Z
10
+ date: 2026-06-26 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rails