dscf-marketplace 0.3.95 → 0.3.96

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: 5878fba3426fc915f242010ea6bdb33c005c9ef025b024927bae599c507bfe03
4
- data.tar.gz: 7088299b3f36bb604631e8613d08abf6e36bbc333654e353d024ea3963f1733c
3
+ metadata.gz: 995d1749e7bc2caebbdfcaaef9ba08ca94d8ae3b6b71d7241c4d979ebdf8668c
4
+ data.tar.gz: e8725566a7aa2b5ea1d8b5b1dc78f464e87fdf2a9b8a0788918dec215b5b2fb4
5
5
  SHA512:
6
- metadata.gz: 02ab38c3146642161812dbcb3b9de94d748af96ada56bf9d159eb183659b8f5c50eb1223d484d5219a2b98327f86ff4b107e817cf856b1904d5dd72db76536ca
7
- data.tar.gz: 9b3815919000c5f5b57cf93ffd3bd1af6f165efcf1ff4ab1debedc9efb3e36a6c4ca0fffcbe58aea16fb0236c21d104b328d506178b6bdcb7480d399d07e15a2
6
+ metadata.gz: 64a8101ea7155a3918dcceaef775a87b24d0534b8db003c439a676956374bd9afa7e71ea66ace1be00fde9d5eecb1656741e8048819515df75823cb0ec91aece
7
+ data.tar.gz: 9c28c9fe4b743de98be18fd3d1d01471e571e8a83b792042e84080a04bb5c0912e0637d398876520f5fe6082ba2ea1a008032903460afe8994af4da48b1d1d19
@@ -24,7 +24,31 @@ module Dscf
24
24
 
25
25
  def accept
26
26
  @obj = find_record
27
- if @obj.accept!
27
+
28
+ fulfillment_type = params[:fulfillment_type]
29
+ dropoff_address_id = params[:dropoff_address_id]
30
+
31
+ # Validate fulfillment_type
32
+ unless fulfillment_type.present? && Dscf::Marketplace::Order.fulfillment_types.keys.include?(fulfillment_type)
33
+ render_error("Invalid or missing fulfillment_type", status: :unprocessable_entity)
34
+ return
35
+ end
36
+
37
+ dropoff_address = nil
38
+ if dropoff_address_id.present?
39
+ dropoff_address = Dscf::Core::Address.find_by(id: dropoff_address_id) if defined?(Dscf::Core::Address)
40
+ unless dropoff_address && dropoff_address.user_id == current_user.id
41
+ render_error("Invalid dropoff_address_id", status: :unprocessable_entity)
42
+ return
43
+ end
44
+ end
45
+
46
+ if fulfillment_type == "delivery" && dropoff_address.nil?
47
+ render_error("dropoff_address_id required for delivery", status: :unprocessable_entity)
48
+ return
49
+ end
50
+
51
+ if @obj.accept!(fulfillment_type: fulfillment_type, dropoff_address: dropoff_address)
28
52
  render_success("quotations.success.accepted", data: @obj)
29
53
  else
30
54
  render_error("quotations.errors.accept_failed")
@@ -70,7 +70,7 @@ module Dscf
70
70
  update_columns(status: "expired") if valid_until <= Time.current
71
71
  end
72
72
 
73
- def accept!
73
+ def accept!(options = {})
74
74
  return false unless sent?
75
75
  return false if within_validity_period? == false
76
76
 
@@ -81,17 +81,11 @@ module Dscf
81
81
  request_for_quotation.update!(status: "selected", selected_quotation: self)
82
82
 
83
83
  # Create order from accepted quotation
84
- create_order_from_quotation
84
+ create_order_from_quotation(options)
85
85
 
86
86
  true
87
87
  end
88
88
 
89
- def create_order_from_quotation
90
- return if order.present?
91
-
92
- Order.create_from_quotation(self)
93
- end
94
-
95
89
  def reject!
96
90
  return false unless sent?
97
91
 
@@ -123,16 +117,21 @@ module Dscf
123
117
  quotation_items.exists? && quotation_items.all? { |item| item.unit_price.present? }
124
118
  end
125
119
 
126
- def create_order_from_quotation
120
+ def create_order_from_quotation(options = {})
127
121
  return if order.present?
128
122
 
123
+ fulfillment_type = options[:fulfillment_type] || "self_pickup"
124
+ dropoff_address = options[:dropoff_address]
125
+
129
126
  order = Dscf::Marketplace::Order.create!(
130
127
  order_type: :rfq_based,
131
128
  status: :pending,
129
+ fulfillment_type: fulfillment_type,
132
130
  quotation: self,
133
131
  user: request_for_quotation.user, # Keep for backward compatibility
134
132
  ordered_by: request_for_quotation.user,
135
133
  ordered_to: business,
134
+ dropoff_address: dropoff_address,
136
135
  total_amount: total_price
137
136
  )
138
137
 
@@ -1,5 +1,5 @@
1
1
  module Dscf
2
2
  module Marketplace
3
- VERSION = "0.3.95".freeze
3
+ VERSION = "0.3.96".freeze
4
4
  end
5
5
  end
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.95
4
+ version: 0.3.96
5
5
  platform: ruby
6
6
  authors:
7
7
  - Asrat