dscf-marketplace 0.3.6 → 0.3.8

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: 2118a22dd49f19b75b611bcdbb8ca04485e641b0eef6c1314d3557f8e2bd9144
4
- data.tar.gz: 94e03aa2b185429dc02b0698fc3a39b4efb8ff497f473b23c81c9ed05c9f9407
3
+ metadata.gz: 7f0a8453f29e83aba38efbacb2e592d3dda7a77f8dce6ab5901ca3a10bb3f104
4
+ data.tar.gz: 66537058e5fad58e20f04e1df403333bb4ecfbe6eb14e1d6f175c065e2d3d966
5
5
  SHA512:
6
- metadata.gz: e931358752fc3d8623e021bc95b0bd5ab40b66950aee72bc5ec2df3f3e4d66e49bddcc4ea6aa24a7ca6cd6ccde522b74398d7aef2d38af64da3ac213369473e9
7
- data.tar.gz: 949bb44f979f5edaaf6aaa7035cc51ca93ccfed13ae9fb5d0fd010543e670d09f19fbadbb403a661d57e6e787bc25a036e5166bc4118fdd7354b43b24d840b41
6
+ metadata.gz: 8224d26f9a832d04343e5c1e4ffc362eddc764c79eec6fa09ab64200a2b505cfd4518b35e092a7a43e2deb7ed6b90db3289621043524ec7cf691b87ff20d6953
7
+ data.tar.gz: 027a3151dd4339ef9686462911af60a7ec906f79d8ff786d7990b30f3749aa06f1fbcec0aea883f80be3b0580cf077f748dcda01a6421d44bbb8c3be61fe41f3
@@ -78,7 +78,7 @@ module Dscf
78
78
 
79
79
  def default_serializer_includes
80
80
  {
81
- index: [ :business, :supplier_product ],
81
+ index: [ :business, supplier_product: [ :product ] ],
82
82
  show: [ :business, :supplier_product, :order_items ],
83
83
  create: [ :business, :supplier_product ],
84
84
  update: [ :business, :supplier_product ]
@@ -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,29 +20,31 @@ 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!(
39
41
  order_type: :rfq_based,
40
- status: :pending,
42
+ status: :processing,
41
43
  quotation: quotation,
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
- # For now, use the pickup address as both pickup and dropoff
76
- # In a real implementation, you'd need to get the buyer's delivery address
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,
@@ -1,5 +1,5 @@
1
1
  module Dscf
2
2
  module Marketplace
3
- VERSION = "0.3.6".freeze
3
+ VERSION = "0.3.8".freeze
4
4
  end
5
5
  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,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dscf-marketplace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.3.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Asrat
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-09-16 00:00:00.000000000 Z
10
+ date: 2025-09-17 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rails