dscf-marketplace 0.4.3 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2efb9f7107c850ca7e7d328ab4c1c9a1785c50cf9b6b854f426e85f11d1d609f
4
- data.tar.gz: ed4b6f619a6a13e3785386d56072e84d0bf62ad6f041a122b3ae9fab51923e18
3
+ metadata.gz: 3cf7ce0a12c623c5befab2e887f6f5f28d922ed8a6b2ab0a40f3bc02f32f93eb
4
+ data.tar.gz: 1aff775c474842bf4412d15bc5c627a6684afeea44f6e79636398abd12f72ba6
5
5
  SHA512:
6
- metadata.gz: 180b318401c1043e7d0ded241270494d437e18aac507c461594558f87135c4b395b561bf82fcfba0cdac89fbf93784fad91028d11ff49d82219afbddb40ab2ab
7
- data.tar.gz: fea2f807396c0a948d8122099930dc6bf5172458b5246c26af688894fd528ed3ac2c24520f9e5875ed261fbb6be8dc0b44021fe350ab62cde1df9240e5294bf2
6
+ metadata.gz: 41f34897815559dfb2ae6acb376a8a7da8ce9dc04cc7a5d13198b8a82f51e1aeec06ace786adc16d288fba0434f54cc89a771aec39ba94a4990a477af206a990
7
+ data.tar.gz: 21f7fb3efb503de32bcaffaff5aa5baabbc445ac870880aed18c88dc29a5971da89e33c2953b58c267e3e6bc2ac3e19e54cb5a654b62c7856ead7df76ec4ce0c
@@ -3,6 +3,7 @@ module Dscf::Marketplace
3
3
  enum :order_type, {rfq_based: 0, direct_listing: 1}
4
4
  enum :status, {pending: 0, confirmed: 1, processing: 2, completed: 3, cancelled: 4}
5
5
  enum :fulfillment_type, {self_pickup: 0, delivery: 1}
6
+ enum :payment_method, {cash: 0, credit: 1, transfer: 2}, default: :cash
6
7
 
7
8
  belongs_to :quotation, optional: true
8
9
  belongs_to :listing, optional: true
@@ -17,6 +18,7 @@ module Dscf::Marketplace
17
18
  validates :order_type, presence: true
18
19
  validates :status, presence: true
19
20
  validates :fulfillment_type, presence: true
21
+ validates :payment_method, presence: true
20
22
  validates :user, presence: true # Keep for backward compatibility
21
23
  validates :ordered_by, presence: true
22
24
  validates :ordered_to, presence: true
@@ -27,26 +29,30 @@ module Dscf::Marketplace
27
29
 
28
30
  # Ransack configuration for secure filtering
29
31
  def self.ransackable_attributes(_auth_object = nil)
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]
32
+ %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 payment_method total_amount created_at updated_at]
31
33
  end
32
34
 
33
35
  def self.ransackable_associations(_auth_object = nil)
34
36
  %w[quotation listing user ordered_by ordered_to delivery_order dropoff_address order_items]
35
37
  end
36
38
 
37
- def self.create_from_quotation(quotation, dropoff_address = nil)
39
+ def self.create_from_quotation(quotation, dropoff_address = nil, payment_method = nil)
38
40
  return nil unless quotation.accepted?
39
41
 
40
- order = create!(
42
+ attributes = {
41
43
  order_type: :rfq_based,
42
44
  status: :processing,
45
+ fulfillment_type: dropoff_address.present? ? :delivery : :self_pickup,
43
46
  quotation: quotation,
44
47
  user: quotation.request_for_quotation.user, # Keep for backward compatibility
45
48
  ordered_by: quotation.request_for_quotation.user,
46
49
  ordered_to: quotation.business,
47
50
  dropoff_address: dropoff_address,
48
51
  total_amount: quotation.total_price
49
- )
52
+ }
53
+ attributes[:payment_method] = payment_method if payment_method.present?
54
+
55
+ order = create!(attributes)
50
56
 
51
57
  quotation.quotation_items.each do |item|
52
58
  order.order_items.create!(
@@ -62,19 +68,23 @@ module Dscf::Marketplace
62
68
  order
63
69
  end
64
70
 
65
- def self.create_from_listing(listing, user, quantity, dropoff_address = nil)
71
+ def self.create_from_listing(listing, user, quantity, dropoff_address = nil, payment_method = nil)
66
72
  return nil unless listing.status == "active" && quantity <= listing.quantity
67
73
 
68
- order = create!(
74
+ attributes = {
69
75
  order_type: :direct_listing,
70
76
  status: :pending,
77
+ fulfillment_type: dropoff_address.present? ? :delivery : :self_pickup,
71
78
  listing: listing,
72
79
  user: user, # Keep for backward compatibility
73
80
  ordered_by: user,
74
81
  ordered_to: listing.business,
75
82
  dropoff_address: dropoff_address,
76
83
  total_amount: listing.price * quantity
77
- )
84
+ }
85
+ attributes[:payment_method] = payment_method if payment_method.present?
86
+
87
+ order = create!(attributes)
78
88
 
79
89
  order.order_items.create!(
80
90
  listing: listing,
@@ -2,7 +2,7 @@ module Dscf
2
2
  module Marketplace
3
3
  class OrderSerializer < ActiveModel::Serializer
4
4
  attributes :id, :quotation_id, :listing_id, :user_id, :ordered_by_id, :ordered_to_id, :delivery_order_id, :dropoff_address_id,
5
- :order_type, :status, :fulfillment_type, :total_amount,
5
+ :order_type, :status, :fulfillment_type, :payment_method, :total_amount,
6
6
  :buyer_phone, :buyer_email, :seller_name, :seller_phone, :seller_email,
7
7
  :created_at, :updated_at
8
8
 
@@ -0,0 +1,6 @@
1
+ class AddPaymentMethodToDscfMarketplaceOrders < ActiveRecord::Migration[8.0]
2
+ def change
3
+ add_column :dscf_marketplace_orders, :payment_method, :integer, default: 0
4
+ add_index :dscf_marketplace_orders, :payment_method, name: "payment_method_on_dm_orders_idx"
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ class ChangeDefaultPaymentMethodOnOrders < ActiveRecord::Migration[8.0]
2
+ def change
3
+ change_column_default :dscf_marketplace_orders, :payment_method, 0
4
+ end
5
+ end
@@ -1,5 +1,5 @@
1
1
  module Dscf
2
2
  module Marketplace
3
- VERSION = "0.4.3".freeze
3
+ VERSION = "0.4.5".freeze
4
4
  end
5
5
  end
@@ -3,6 +3,7 @@ FactoryBot.define do
3
3
  order_type { :rfq_based }
4
4
  status { :pending }
5
5
  fulfillment_type { :self_pickup }
6
+ payment_method { :cash }
6
7
  association :user, factory: :dscf_core_user # Keep for backward compatibility
7
8
  association :ordered_to, factory: :dscf_core_business
8
9
  association :quotation, factory: :dscf_marketplace_quotation
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.4.3
4
+ version: 0.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Asrat
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-09-25 00:00:00.000000000 Z
10
+ date: 2025-10-07 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rails
@@ -503,6 +503,8 @@ files:
503
503
  - db/migrate/20250909092700_add_notes_to_dscf_marketplace_quotation_items.rb
504
504
  - db/migrate/20250916083536_make_driver_id_nullable_in_delivery_orders.rb
505
505
  - db/migrate/20250917110618_add_dropoff_address_to_dscf_marketplace_orders.rb
506
+ - db/migrate/20251006055550_add_payment_method_to_dscf_marketplace_orders.rb
507
+ - db/migrate/20251006055948_change_default_payment_method_on_orders.rb
506
508
  - db/seeds.rb
507
509
  - lib/dscf/marketplace.rb
508
510
  - lib/dscf/marketplace/engine.rb