dscf-marketplace 0.3.7 → 0.3.9
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 +4 -4
- data/app/controllers/dscf/marketplace/orders_controller.rb +1 -1
- data/app/models/dscf/marketplace/order.rb +8 -4
- data/app/serializers/dscf/marketplace/order_serializer.rb +2 -1
- data/app/services/dscf/marketplace/delivery_order_service.rb +2 -3
- data/db/migrate/20250917110618_add_dropoff_address_to_dscf_marketplace_orders.rb +6 -0
- data/lib/dscf/marketplace/version.rb +1 -1
- data/spec/factories/dscf/marketplace/orders.rb +2 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 235f55ed51171b519c91c2d56661f050c3e922926c93664b582f828c9b4fd08e
|
4
|
+
data.tar.gz: f81528ff043e259757cd636e3187e00df19b7e21d7495d4e2c534276ed24eda3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d56da33dccaa8cc818a6c09730024ed70fe182cbe163c6e2537153b873691d7861c2f7d999c1bb578d8979dcf1d6282b974ec9f018d52938017ebe08d03e38d
|
7
|
+
data.tar.gz: 530ae8f3a4f60983a14de2a6d414b3bff9860eb6f4a5c683f457cbedc8a9c8b06d2389db0bed5a86719c44b20b8cabe07fbe218873d938f378dd1c94917cae32
|
@@ -67,7 +67,7 @@ module Dscf
|
|
67
67
|
|
68
68
|
def model_params
|
69
69
|
params.require(:order).permit(
|
70
|
-
:quotation_id, :listing_id, :user_id, :ordered_by_id, :ordered_to_id, :delivery_order_id,
|
70
|
+
:quotation_id, :listing_id, :user_id, :ordered_by_id, :ordered_to_id, :delivery_order_id, :dropoff_address_id,
|
71
71
|
:order_type, :status, :fulfillment_type,
|
72
72
|
order_items_attributes: [ :id, :quotation_item_id, :listing_id, :product_id, :unit_id, :quantity, :unit_price, :status, :_destroy ]
|
73
73
|
)
|
@@ -10,6 +10,7 @@ module Dscf::Marketplace
|
|
10
10
|
belongs_to :ordered_by, class_name: "Dscf::Core::User"
|
11
11
|
belongs_to :ordered_to, class_name: "Dscf::Core::Business"
|
12
12
|
belongs_to :delivery_order, optional: true
|
13
|
+
belongs_to :dropoff_address, class_name: "Dscf::Core::Address", optional: true
|
13
14
|
has_many :order_items, dependent: :destroy, autosave: true
|
14
15
|
accepts_nested_attributes_for :order_items, allow_destroy: true
|
15
16
|
|
@@ -19,20 +20,21 @@ module Dscf::Marketplace
|
|
19
20
|
validates :user, presence: true # Keep for backward compatibility
|
20
21
|
validates :ordered_by, presence: true
|
21
22
|
validates :ordered_to, presence: true
|
23
|
+
validates :dropoff_address, presence: true, if: :delivery?
|
22
24
|
validate :quotation_or_listing_present
|
23
25
|
|
24
26
|
before_save :calculate_total_amount
|
25
27
|
|
26
28
|
# Ransack configuration for secure filtering
|
27
29
|
def self.ransackable_attributes(_auth_object = nil)
|
28
|
-
%w[id quotation_id listing_id user_id ordered_by_id ordered_to_id delivery_order_id order_type status fulfillment_type total_amount created_at updated_at]
|
30
|
+
%w[id quotation_id listing_id user_id ordered_by_id ordered_to_id delivery_order_id dropoff_address_id order_type status fulfillment_type total_amount created_at updated_at]
|
29
31
|
end
|
30
32
|
|
31
33
|
def self.ransackable_associations(_auth_object = nil)
|
32
|
-
%w[quotation listing user ordered_by ordered_to delivery_order order_items]
|
34
|
+
%w[quotation listing user ordered_by ordered_to delivery_order dropoff_address order_items]
|
33
35
|
end
|
34
36
|
|
35
|
-
def self.create_from_quotation(quotation)
|
37
|
+
def self.create_from_quotation(quotation, dropoff_address = nil)
|
36
38
|
return nil unless quotation.accepted?
|
37
39
|
|
38
40
|
order = create!(
|
@@ -42,6 +44,7 @@ module Dscf::Marketplace
|
|
42
44
|
user: quotation.request_for_quotation.user, # Keep for backward compatibility
|
43
45
|
ordered_by: quotation.request_for_quotation.user,
|
44
46
|
ordered_to: quotation.business,
|
47
|
+
dropoff_address: dropoff_address,
|
45
48
|
total_amount: quotation.total_price
|
46
49
|
)
|
47
50
|
|
@@ -59,7 +62,7 @@ module Dscf::Marketplace
|
|
59
62
|
order
|
60
63
|
end
|
61
64
|
|
62
|
-
def self.create_from_listing(listing, user, quantity)
|
65
|
+
def self.create_from_listing(listing, user, quantity, dropoff_address = nil)
|
63
66
|
return nil unless listing.status == "active" && quantity <= listing.quantity
|
64
67
|
|
65
68
|
order = create!(
|
@@ -69,6 +72,7 @@ module Dscf::Marketplace
|
|
69
72
|
user: user, # Keep for backward compatibility
|
70
73
|
ordered_by: user,
|
71
74
|
ordered_to: listing.business,
|
75
|
+
dropoff_address: dropoff_address,
|
72
76
|
total_amount: listing.price * quantity
|
73
77
|
)
|
74
78
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Dscf
|
2
2
|
module Marketplace
|
3
3
|
class OrderSerializer < ActiveModel::Serializer
|
4
|
-
attributes :id, :quotation_id, :listing_id, :user_id, :ordered_by_id, :ordered_to_id, :delivery_order_id,
|
4
|
+
attributes :id, :quotation_id, :listing_id, :user_id, :ordered_by_id, :ordered_to_id, :delivery_order_id, :dropoff_address_id,
|
5
5
|
:order_type, :status, :fulfillment_type, :total_amount,
|
6
6
|
:created_at, :updated_at
|
7
7
|
|
@@ -11,6 +11,7 @@ module Dscf
|
|
11
11
|
belongs_to :ordered_by
|
12
12
|
belongs_to :ordered_to
|
13
13
|
belongs_to :delivery_order
|
14
|
+
belongs_to :dropoff_address
|
14
15
|
has_many :order_items
|
15
16
|
end
|
16
17
|
end
|
@@ -72,9 +72,8 @@ module Dscf::Marketplace
|
|
72
72
|
def create_delivery_order_items(delivery_order, orders, pickup_address)
|
73
73
|
orders.each do |order|
|
74
74
|
order.order_items.each do |order_item|
|
75
|
-
#
|
76
|
-
|
77
|
-
dropoff_address = pickup_address # Temporary fallback
|
75
|
+
# Use the order's dropoff address for delivery orders
|
76
|
+
dropoff_address = order.dropoff_address
|
78
77
|
|
79
78
|
DeliveryOrderItem.create!(
|
80
79
|
delivery_order: delivery_order,
|
@@ -0,0 +1,6 @@
|
|
1
|
+
class AddDropoffAddressToDscfMarketplaceOrders < ActiveRecord::Migration[8.0]
|
2
|
+
def change
|
3
|
+
add_reference :dscf_marketplace_orders, :dropoff_address, null: true, foreign_key: {to_table: :dscf_core_addresses}
|
4
|
+
add_index :dscf_marketplace_orders, :dropoff_address_id, name: "dropoff_address_id_on_dm_orders_idx"
|
5
|
+
end
|
6
|
+
end
|
@@ -28,10 +28,12 @@ FactoryBot.define do
|
|
28
28
|
|
29
29
|
trait :self_pickup do
|
30
30
|
fulfillment_type { :self_pickup }
|
31
|
+
dropoff_address { nil }
|
31
32
|
end
|
32
33
|
|
33
34
|
trait :delivery do
|
34
35
|
fulfillment_type { :delivery }
|
36
|
+
association :dropoff_address, factory: :dscf_core_address
|
35
37
|
end
|
36
38
|
|
37
39
|
trait :confirmed do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dscf-marketplace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Asrat
|
@@ -501,6 +501,7 @@ files:
|
|
501
501
|
- db/migrate/20250903061306_populate_ordered_fields_for_existing_orders.rb
|
502
502
|
- db/migrate/20250909092700_add_notes_to_dscf_marketplace_quotation_items.rb
|
503
503
|
- db/migrate/20250916083536_make_driver_id_nullable_in_delivery_orders.rb
|
504
|
+
- db/migrate/20250917110618_add_dropoff_address_to_dscf_marketplace_orders.rb
|
504
505
|
- lib/dscf/marketplace.rb
|
505
506
|
- lib/dscf/marketplace/engine.rb
|
506
507
|
- lib/dscf/marketplace/version.rb
|