dscf-marketplace 0.2.4 → 0.2.5
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 +6 -6
- data/app/models/dscf/marketplace/order.rb +14 -6
- data/app/models/dscf/marketplace/product.rb +2 -2
- data/app/models/dscf/marketplace/quotation.rb +3 -1
- data/app/serializers/dscf/marketplace/order_serializer.rb +3 -1
- data/app/services/dscf/marketplace/my_resource_service.rb +2 -2
- data/config/environments/production.rb +6 -0
- data/config/locales/en.yml +95 -8
- data/db/migrate/20250903061154_add_ordered_fields_to_orders.rb +12 -0
- data/db/migrate/20250903061306_populate_ordered_fields_for_existing_orders.rb +34 -0
- data/lib/dscf/marketplace/version.rb +1 -1
- data/spec/factories/dscf/marketplace/orders.rb +9 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f8934e507e46d96767591f68f26790969449c058d6eb4a21dd5af54448d383e
|
4
|
+
data.tar.gz: 24b96ff375ebc4893b38e57e7afc84f4f28a7e7e4120b58d992c03481802bbc8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 444ee5aa9c80f4db2a8f86c2873466a97fc51f9bdc91923e5e6bf7ea5652427986769878fc0834f0acd43cfae58af3bac62bb3ab1e44d3f341da4dcd96c284ae
|
7
|
+
data.tar.gz: 8f0e2a29a64b6fa9e770564ecbd9f6217955e3b7a37b7e7af4965728f52b21c30e01b0e7c47e09d102a3ea8610eed7d8fc1d027958030354cf205d68221fdddd
|
@@ -48,21 +48,21 @@ module Dscf
|
|
48
48
|
|
49
49
|
def model_params
|
50
50
|
params.require(:order).permit(
|
51
|
-
:quotation_id, :listing_id, :user_id, :delivery_order_id,
|
51
|
+
:quotation_id, :listing_id, :user_id, :ordered_by_id, :ordered_to_id, :delivery_order_id,
|
52
52
|
:order_type, :status, :fulfillment_type
|
53
53
|
)
|
54
54
|
end
|
55
55
|
|
56
56
|
def eager_loaded_associations
|
57
|
-
[ :quotation, :listing, :user, :delivery_order, :order_items ]
|
57
|
+
[ :quotation, :listing, :user, :ordered_by, :ordered_to, :delivery_order, :order_items ]
|
58
58
|
end
|
59
59
|
|
60
60
|
def default_serializer_includes
|
61
61
|
{
|
62
|
-
index: [ :user, :quotation, :listing ],
|
63
|
-
show: [ :user, :quotation, :listing, :delivery_order, :order_items ],
|
64
|
-
create: [ :user, :quotation, :listing ],
|
65
|
-
update: [ :user, :quotation, :listing ]
|
62
|
+
index: [ :user, :ordered_by, :ordered_to, :quotation, :listing ],
|
63
|
+
show: [ :user, :ordered_by, :ordered_to, :quotation, :listing, :delivery_order, :order_items ],
|
64
|
+
create: [ :user, :ordered_by, :ordered_to, :quotation, :listing ],
|
65
|
+
update: [ :user, :ordered_by, :ordered_to, :quotation, :listing ]
|
66
66
|
}
|
67
67
|
end
|
68
68
|
end
|
@@ -6,25 +6,29 @@ module Dscf::Marketplace
|
|
6
6
|
|
7
7
|
belongs_to :quotation, optional: true
|
8
8
|
belongs_to :listing, optional: true
|
9
|
-
belongs_to :user, class_name: "Dscf::Core::User"
|
9
|
+
belongs_to :user, class_name: "Dscf::Core::User" # Keep for backward compatibility
|
10
|
+
belongs_to :ordered_by, class_name: "Dscf::Core::User"
|
11
|
+
belongs_to :ordered_to, class_name: "Dscf::Core::Business"
|
10
12
|
belongs_to :delivery_order, optional: true
|
11
13
|
has_many :order_items, dependent: :destroy
|
12
14
|
|
13
15
|
validates :order_type, presence: true
|
14
16
|
validates :status, presence: true
|
15
17
|
validates :fulfillment_type, presence: true
|
16
|
-
validates :user, presence: true
|
18
|
+
validates :user, presence: true # Keep for backward compatibility
|
19
|
+
validates :ordered_by, presence: true
|
20
|
+
validates :ordered_to, presence: true
|
17
21
|
validate :quotation_or_listing_present
|
18
22
|
|
19
23
|
before_save :calculate_total_amount
|
20
24
|
|
21
25
|
# Ransack configuration for secure filtering
|
22
26
|
def self.ransackable_attributes(_auth_object = nil)
|
23
|
-
%w[id quotation_id listing_id user_id delivery_order_id order_type status fulfillment_type total_amount created_at updated_at]
|
27
|
+
%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]
|
24
28
|
end
|
25
29
|
|
26
30
|
def self.ransackable_associations(_auth_object = nil)
|
27
|
-
%w[quotation listing user delivery_order order_items]
|
31
|
+
%w[quotation listing user ordered_by ordered_to delivery_order order_items]
|
28
32
|
end
|
29
33
|
|
30
34
|
def self.create_from_quotation(quotation)
|
@@ -34,7 +38,9 @@ module Dscf::Marketplace
|
|
34
38
|
order_type: :rfq_based,
|
35
39
|
status: :pending,
|
36
40
|
quotation: quotation,
|
37
|
-
user: quotation.request_for_quotation.user,
|
41
|
+
user: quotation.request_for_quotation.user, # Keep for backward compatibility
|
42
|
+
ordered_by: quotation.request_for_quotation.user,
|
43
|
+
ordered_to: quotation.business,
|
38
44
|
total_amount: quotation.total_price
|
39
45
|
)
|
40
46
|
|
@@ -59,7 +65,9 @@ module Dscf::Marketplace
|
|
59
65
|
order_type: :direct_listing,
|
60
66
|
status: :pending,
|
61
67
|
listing: listing,
|
62
|
-
user: user,
|
68
|
+
user: user, # Keep for backward compatibility
|
69
|
+
ordered_by: user,
|
70
|
+
ordered_to: listing.business,
|
63
71
|
total_amount: listing.price * quantity
|
64
72
|
)
|
65
73
|
|
@@ -57,13 +57,13 @@ module Dscf
|
|
57
57
|
|
58
58
|
def thumbnail_url
|
59
59
|
return nil unless thumbnail.attached?
|
60
|
-
Rails.application.routes.url_helpers.rails_blob_url(thumbnail,
|
60
|
+
Rails.application.routes.url_helpers.rails_blob_url(thumbnail, host: Rails.application.config.action_mailer.default_url_options[:host])
|
61
61
|
end
|
62
62
|
|
63
63
|
def images_urls
|
64
64
|
return [] unless images.attached?
|
65
65
|
images.map do |image|
|
66
|
-
Rails.application.routes.url_helpers.rails_blob_url(image,
|
66
|
+
Rails.application.routes.url_helpers.rails_blob_url(image, host: Rails.application.config.action_mailer.default_url_options[:host])
|
67
67
|
end
|
68
68
|
end
|
69
69
|
end
|
@@ -140,7 +140,9 @@ module Dscf
|
|
140
140
|
order_type: :rfq_based,
|
141
141
|
status: :pending,
|
142
142
|
quotation: self,
|
143
|
-
user: request_for_quotation.user,
|
143
|
+
user: request_for_quotation.user, # Keep for backward compatibility
|
144
|
+
ordered_by: request_for_quotation.user,
|
145
|
+
ordered_to: business,
|
144
146
|
total_amount: total_price
|
145
147
|
)
|
146
148
|
|
@@ -1,13 +1,15 @@
|
|
1
1
|
module Dscf
|
2
2
|
module Marketplace
|
3
3
|
class OrderSerializer < ActiveModel::Serializer
|
4
|
-
attributes :id, :quotation_id, :listing_id, :user_id, :delivery_order_id,
|
4
|
+
attributes :id, :quotation_id, :listing_id, :user_id, :ordered_by_id, :ordered_to_id, :delivery_order_id,
|
5
5
|
:order_type, :status, :fulfillment_type, :total_amount,
|
6
6
|
:created_at, :updated_at
|
7
7
|
|
8
8
|
belongs_to :quotation
|
9
9
|
belongs_to :listing
|
10
10
|
belongs_to :user
|
11
|
+
belongs_to :ordered_by
|
12
|
+
belongs_to :ordered_to
|
11
13
|
belongs_to :delivery_order
|
12
14
|
has_many :order_items
|
13
15
|
end
|
@@ -6,8 +6,8 @@ module Dscf
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def my_orders(params = {})
|
9
|
-
orders = Dscf::Marketplace::Order.where(
|
10
|
-
.includes(:quotation, :listing, :user, :delivery_order, :order_items)
|
9
|
+
orders = Dscf::Marketplace::Order.where(ordered_by: @current_user)
|
10
|
+
.includes(:quotation, :listing, :user, :ordered_by, :ordered_to, :delivery_order, :order_items)
|
11
11
|
|
12
12
|
apply_filters(orders, params)
|
13
13
|
end
|
data/config/locales/en.yml
CHANGED
@@ -75,6 +75,20 @@ en:
|
|
75
75
|
update: "Failed to update supplier product"
|
76
76
|
destroy: "Failed to delete supplier product"
|
77
77
|
|
78
|
+
supplier_products:
|
79
|
+
success:
|
80
|
+
index: "Supplier products retrieved successfully"
|
81
|
+
show: "Supplier product details retrieved successfully"
|
82
|
+
create: "Supplier product created successfully"
|
83
|
+
update: "Supplier product updated successfully"
|
84
|
+
destroy: "Supplier product deleted successfully"
|
85
|
+
errors:
|
86
|
+
index: "Failed to retrieve supplier products"
|
87
|
+
show: "Failed to retrieve supplier product details"
|
88
|
+
create: "Failed to create supplier product"
|
89
|
+
update: "Failed to update supplier product"
|
90
|
+
destroy: "Failed to delete supplier product"
|
91
|
+
|
78
92
|
listing:
|
79
93
|
success:
|
80
94
|
index: "Listings retrieved successfully"
|
@@ -82,6 +96,9 @@ en:
|
|
82
96
|
create: "Listing created successfully"
|
83
97
|
update: "Listing updated successfully"
|
84
98
|
destroy: "Listing deleted successfully"
|
99
|
+
activated: "Listing activated successfully"
|
100
|
+
paused: "Listing paused successfully"
|
101
|
+
sold_out: "Listing marked as sold out successfully"
|
85
102
|
errors:
|
86
103
|
index: "Failed to retrieve listings"
|
87
104
|
show: "Failed to retrieve listing details"
|
@@ -96,12 +113,16 @@ en:
|
|
96
113
|
create: "RFQ created successfully"
|
97
114
|
update: "RFQ updated successfully"
|
98
115
|
destroy: "RFQ deleted successfully"
|
116
|
+
sent: "RFQ sent successfully"
|
117
|
+
closed: "RFQ closed successfully"
|
99
118
|
errors:
|
100
119
|
index: "Failed to retrieve RFQs"
|
101
120
|
show: "Failed to retrieve RFQ details"
|
102
121
|
create: "Failed to create RFQ"
|
103
122
|
update: "Failed to update RFQ"
|
104
123
|
destroy: "Failed to delete RFQ"
|
124
|
+
sent: "Failed to send RFQ"
|
125
|
+
closed: "Failed to close RFQ"
|
105
126
|
|
106
127
|
rfq_item:
|
107
128
|
success:
|
@@ -127,6 +148,7 @@ en:
|
|
127
148
|
accept: "Quotation accepted successfully"
|
128
149
|
reject: "Quotation rejected successfully"
|
129
150
|
send_quotation: "Quotation sent successfully"
|
151
|
+
sent: "Quotation sent successfully"
|
130
152
|
errors:
|
131
153
|
index: "Failed to retrieve quotations"
|
132
154
|
show: "Failed to retrieve quotation details"
|
@@ -136,6 +158,7 @@ en:
|
|
136
158
|
accept: "Failed to accept quotation"
|
137
159
|
reject: "Failed to reject quotation"
|
138
160
|
send_quotation: "Failed to send quotation"
|
161
|
+
sent: "Failed to send quotation"
|
139
162
|
|
140
163
|
quotation_item:
|
141
164
|
success:
|
@@ -161,6 +184,7 @@ en:
|
|
161
184
|
destroy: "Order deleted successfully"
|
162
185
|
confirm: "Order confirmed successfully"
|
163
186
|
cancel: "Order cancelled successfully"
|
187
|
+
complete: "Order completed successfully"
|
164
188
|
errors:
|
165
189
|
index: "Failed to retrieve orders"
|
166
190
|
show: "Failed to retrieve order details"
|
@@ -169,6 +193,7 @@ en:
|
|
169
193
|
destroy: "Failed to delete order"
|
170
194
|
confirm: "Failed to confirm order"
|
171
195
|
cancel: "Failed to cancel order"
|
196
|
+
complete: "Failed to complete order"
|
172
197
|
|
173
198
|
order_item:
|
174
199
|
success:
|
@@ -207,6 +232,29 @@ en:
|
|
207
232
|
complete_delivery: "Failed to complete delivery"
|
208
233
|
mark_failed: "Failed to mark delivery as failed"
|
209
234
|
|
235
|
+
delivery_orders:
|
236
|
+
success:
|
237
|
+
index: "Delivery orders retrieved successfully"
|
238
|
+
show: "Delivery order details retrieved successfully"
|
239
|
+
create: "Delivery order created successfully"
|
240
|
+
update: "Delivery order updated successfully"
|
241
|
+
destroy: "Delivery order deleted successfully"
|
242
|
+
picked_up: "Delivery order picked up successfully"
|
243
|
+
delivery_started: "Delivery started successfully"
|
244
|
+
delivery_completed: "Delivery completed successfully"
|
245
|
+
marked_failed: "Delivery marked as failed"
|
246
|
+
index.success: "Delivery orders retrieved successfully"
|
247
|
+
errors:
|
248
|
+
index: "Failed to retrieve delivery orders"
|
249
|
+
show: "Failed to retrieve delivery order details"
|
250
|
+
create: "Failed to create delivery order"
|
251
|
+
update: "Failed to update delivery order"
|
252
|
+
destroy: "Failed to delete delivery order"
|
253
|
+
picked_up: "Failed to pickup delivery order"
|
254
|
+
delivery_started: "Failed to start delivery"
|
255
|
+
delivery_completed: "Failed to complete delivery"
|
256
|
+
marked_failed: "Failed to mark delivery as failed"
|
257
|
+
|
210
258
|
delivery_order_item:
|
211
259
|
success:
|
212
260
|
index: "Delivery order items retrieved successfully"
|
@@ -227,6 +275,26 @@ en:
|
|
227
275
|
report_issue: "Failed to report issue"
|
228
276
|
dispute_delivery: "Failed to dispute delivery"
|
229
277
|
|
278
|
+
delivery_order_items:
|
279
|
+
success:
|
280
|
+
index: "Delivery order items retrieved successfully"
|
281
|
+
show: "Delivery order item details retrieved successfully"
|
282
|
+
create: "Delivery order item created successfully"
|
283
|
+
update: "Delivery order item updated successfully"
|
284
|
+
destroy: "Delivery order item deleted successfully"
|
285
|
+
receiver_confirmed: "Item confirmed by receiver successfully"
|
286
|
+
issue_reported: "Issue reported successfully"
|
287
|
+
delivery_disputed: "Delivery disputed successfully"
|
288
|
+
errors:
|
289
|
+
index: "Failed to retrieve delivery order items"
|
290
|
+
show: "Failed to retrieve delivery order item details"
|
291
|
+
create: "Failed to create delivery order item"
|
292
|
+
update: "Failed to update delivery order item"
|
293
|
+
destroy: "Failed to delete delivery order item"
|
294
|
+
receiver_confirmed: "Failed to confirm item"
|
295
|
+
issue_reported: "Failed to report issue"
|
296
|
+
delivery_disputed: "Failed to dispute delivery"
|
297
|
+
|
230
298
|
delivery_vehicle:
|
231
299
|
success:
|
232
300
|
index: "Delivery vehicles retrieved successfully"
|
@@ -241,17 +309,35 @@ en:
|
|
241
309
|
update: "Failed to update delivery vehicle"
|
242
310
|
destroy: "Failed to delete delivery vehicle"
|
243
311
|
|
244
|
-
# Authentication
|
245
|
-
auth:
|
246
|
-
success:
|
247
|
-
otp_sent: "OTP sent successfully"
|
248
|
-
errors:
|
249
|
-
invalid_fin: "Invalid FIN number"
|
250
|
-
|
251
312
|
# Business
|
252
313
|
business:
|
253
314
|
success:
|
254
315
|
has_business_check: "Business check completed successfully"
|
316
|
+
index: "Businesses retrieved successfully"
|
317
|
+
show: "Business details retrieved successfully"
|
318
|
+
create: "Business created successfully"
|
319
|
+
update: "Business updated successfully"
|
320
|
+
destroy: "Business deleted successfully"
|
321
|
+
errors:
|
322
|
+
index: "Failed to retrieve businesses"
|
323
|
+
show: "Failed to retrieve business details"
|
324
|
+
create: "Failed to create business"
|
325
|
+
update: "Failed to update business"
|
326
|
+
destroy: "Failed to delete business"
|
327
|
+
|
328
|
+
businesses:
|
329
|
+
success:
|
330
|
+
index: "Businesses retrieved successfully"
|
331
|
+
show: "Business details retrieved successfully"
|
332
|
+
create: "Business created successfully"
|
333
|
+
update: "Business updated successfully"
|
334
|
+
destroy: "Business deleted successfully"
|
335
|
+
errors:
|
336
|
+
index: "Failed to retrieve businesses"
|
337
|
+
show: "Failed to retrieve business details"
|
338
|
+
create: "Failed to create business"
|
339
|
+
update: "Failed to update business"
|
340
|
+
destroy: "Failed to delete business"
|
255
341
|
|
256
342
|
# Global fallback messages
|
257
343
|
operations:
|
@@ -263,4 +349,5 @@ en:
|
|
263
349
|
errors:
|
264
350
|
validation_failed: "Validation failed"
|
265
351
|
operation_failed: "Operation failed"
|
266
|
-
record_not_found: "Record not found"
|
352
|
+
record_not_found: "Record not found"
|
353
|
+
supplier_not_found: "Supplier not found"
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class AddOrderedFieldsToOrders < ActiveRecord::Migration[8.0]
|
2
|
+
def change
|
3
|
+
add_column :dscf_marketplace_orders, :ordered_by_id, :bigint
|
4
|
+
add_column :dscf_marketplace_orders, :ordered_to_id, :bigint
|
5
|
+
|
6
|
+
add_foreign_key :dscf_marketplace_orders, :dscf_core_users, column: :ordered_by_id
|
7
|
+
add_foreign_key :dscf_marketplace_orders, :dscf_core_businesses, column: :ordered_to_id
|
8
|
+
|
9
|
+
add_index :dscf_marketplace_orders, :ordered_by_id, name: "ordered_by_id_on_dm_orders_idx"
|
10
|
+
add_index :dscf_marketplace_orders, :ordered_to_id, name: "ordered_to_id_on_dm_orders_idx"
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
class PopulateOrderedFieldsForExistingOrders < ActiveRecord::Migration[8.0]
|
2
|
+
def up
|
3
|
+
# Populate ordered_by_id from user_id for existing orders
|
4
|
+
execute <<-SQL
|
5
|
+
UPDATE dscf_marketplace_orders
|
6
|
+
SET ordered_by_id = user_id
|
7
|
+
WHERE ordered_by_id IS NULL AND user_id IS NOT NULL
|
8
|
+
SQL
|
9
|
+
|
10
|
+
# Populate ordered_to_id for RFQ-based orders
|
11
|
+
execute <<-SQL
|
12
|
+
UPDATE dscf_marketplace_orders
|
13
|
+
SET ordered_to_id = dscf_marketplace_quotations.business_id
|
14
|
+
FROM dscf_marketplace_quotations
|
15
|
+
WHERE dscf_marketplace_orders.quotation_id = dscf_marketplace_quotations.id
|
16
|
+
AND dscf_marketplace_orders.ordered_to_id IS NULL
|
17
|
+
AND dscf_marketplace_orders.order_type = 0
|
18
|
+
SQL
|
19
|
+
|
20
|
+
# Populate ordered_to_id for direct listing orders
|
21
|
+
execute <<-SQL
|
22
|
+
UPDATE dscf_marketplace_orders
|
23
|
+
SET ordered_to_id = dscf_marketplace_listings.business_id
|
24
|
+
FROM dscf_marketplace_listings
|
25
|
+
WHERE dscf_marketplace_orders.listing_id = dscf_marketplace_listings.id
|
26
|
+
AND dscf_marketplace_orders.ordered_to_id IS NULL
|
27
|
+
AND dscf_marketplace_orders.order_type = 1
|
28
|
+
SQL
|
29
|
+
end
|
30
|
+
|
31
|
+
def down
|
32
|
+
# No need to rollback data population
|
33
|
+
end
|
34
|
+
end
|
@@ -3,19 +3,27 @@ FactoryBot.define do
|
|
3
3
|
order_type { :rfq_based }
|
4
4
|
status { :pending }
|
5
5
|
fulfillment_type { :self_pickup }
|
6
|
-
association :user, factory: :dscf_core_user
|
6
|
+
association :user, factory: :dscf_core_user # Keep for backward compatibility
|
7
|
+
association :ordered_to, factory: :dscf_core_business
|
7
8
|
association :quotation, factory: :dscf_marketplace_quotation
|
8
9
|
listing { nil }
|
9
10
|
|
11
|
+
# Ensure ordered_by is set to the same as user for backward compatibility
|
12
|
+
after(:build) do |order|
|
13
|
+
order.ordered_by = order.user
|
14
|
+
end
|
15
|
+
|
10
16
|
trait :rfq_based do
|
11
17
|
order_type { :rfq_based }
|
12
18
|
association :quotation, factory: :dscf_marketplace_quotation
|
19
|
+
# ordered_to will be set from quotation.business in the model
|
13
20
|
end
|
14
21
|
|
15
22
|
trait :direct_listing do
|
16
23
|
order_type { :direct_listing }
|
17
24
|
association :listing, factory: :dscf_marketplace_listing
|
18
25
|
quotation { nil }
|
26
|
+
# ordered_to will be set from listing.business in the model
|
19
27
|
end
|
20
28
|
|
21
29
|
trait :self_pickup 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.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Asrat
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-09-
|
10
|
+
date: 2025-09-03 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: rails
|
@@ -469,6 +469,7 @@ files:
|
|
469
469
|
- app/serializers/dscf/marketplace/unit_conversion_serializer.rb
|
470
470
|
- app/serializers/dscf/marketplace/unit_serializer.rb
|
471
471
|
- app/services/dscf/marketplace/my_resource_service.rb
|
472
|
+
- config/environments/production.rb
|
472
473
|
- config/locales/en.yml
|
473
474
|
- config/routes.rb
|
474
475
|
- db/migrate/20250827172043_create_dscf_marketplace_categories.rb
|
@@ -493,6 +494,8 @@ files:
|
|
493
494
|
- db/migrate/20250901074746_add_delivery_order_to_orders.rb
|
494
495
|
- db/migrate/20250901075511_add_delivery_vehicle_to_delivery_orders.rb
|
495
496
|
- db/migrate/20250901080134_add_fulfillment_type_to_orders.rb
|
497
|
+
- db/migrate/20250903061154_add_ordered_fields_to_orders.rb
|
498
|
+
- db/migrate/20250903061306_populate_ordered_fields_for_existing_orders.rb
|
496
499
|
- lib/dscf/marketplace.rb
|
497
500
|
- lib/dscf/marketplace/engine.rb
|
498
501
|
- lib/dscf/marketplace/version.rb
|