bscf-core 0.3.5 → 0.3.6
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/models/bscf/core/delivery_order.rb +9 -10
- data/app/models/bscf/core/vehicle.rb +12 -0
- data/db/migrate/20250410115524_create_bscf_core_vehicles.rb +17 -0
- data/db/migrate/20250410181144_add_delivery_details_to_delivery_orders.rb +10 -0
- data/db/migrate/20250410181145_add_actual_delivery_time_to_delivery_orders.rb +5 -0
- data/lib/bscf/core/version.rb +1 -1
- data/spec/factories/bscf/core/delivery_orders.rb +26 -3
- data/spec/factories/bscf/core/vehicles.rb +11 -0
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f663a88fd05be1fcf61a27b261cf3705cf813492cf81cb5ca4b995a475335b0
|
4
|
+
data.tar.gz: 3027a949d685908b5fa68253b93adf3ab34d36645d643aecd7d73037a04c0bf7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f0e784375d6ceb2d2bb801a9b89788d9c281a68e965dc3b15ba651a2a6f72dbdfc045be1bd4cc4f65450d0cb7d4e7b11e13d6dd4933b11fd750f8a0af3e7388
|
7
|
+
data.tar.gz: 40af2d0ffd652e1f8405533d1f8701676c372c907265f9ce6a4e6d9df43e034d27fd8538cfaeca52e5e8ebeb366605ca3aa9743ef14aec3cb0ec004b27278eab
|
@@ -1,30 +1,29 @@
|
|
1
1
|
module Bscf::Core
|
2
2
|
class DeliveryOrder < ApplicationRecord
|
3
3
|
belongs_to :order
|
4
|
-
belongs_to :
|
4
|
+
belongs_to :pickup_address, class_name: "Bscf::Core::Address"
|
5
|
+
belongs_to :dropoff_address, class_name: "Bscf::Core::Address"
|
6
|
+
belongs_to :driver, class_name: "Bscf::Core::User", optional: true
|
5
7
|
|
6
8
|
has_many :delivery_order_items, dependent: :destroy
|
7
9
|
has_many :order_items, through: :delivery_order_items
|
8
10
|
has_many :products, through: :delivery_order_items
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
-
attribute :actual_delivery_time, :datetime
|
13
|
-
|
14
|
-
validates :contact_phone, :status, :estimated_delivery_time, presence: true
|
12
|
+
validates :buyer_phone, :seller_phone, :driver_phone,
|
13
|
+
:status, :estimated_delivery_time, presence: true
|
15
14
|
validate :end_time_after_start_time, if: -> { delivery_start_time.present? && delivery_end_time.present? }
|
16
15
|
|
17
16
|
before_save :update_delivery_times
|
18
17
|
before_save :calculate_actual_delivery_time
|
19
|
-
|
20
18
|
after_save :sync_items_status, if: :saved_change_to_status?
|
21
19
|
|
22
20
|
enum :status, {
|
23
21
|
pending: 0,
|
24
22
|
in_transit: 1,
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
picked_up: 2,
|
24
|
+
delivered: 3,
|
25
|
+
failed: 4,
|
26
|
+
cancelled: 5
|
28
27
|
}
|
29
28
|
|
30
29
|
def delivery_duration
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Bscf::Core
|
2
|
+
class Vehicle < ApplicationRecord
|
3
|
+
belongs_to :driver, class_name: "Bscf::Core::User", optional: true
|
4
|
+
|
5
|
+
validates :plate_number, presence: true, uniqueness: { case_sensitive: false }
|
6
|
+
validates :vehicle_type, presence: true
|
7
|
+
validates :brand, presence: true
|
8
|
+
validates :model, presence: true
|
9
|
+
validates :year, presence: true, numericality: { only_integer: true, greater_than: 1900, less_than_or_equal_to: Time.current.year }
|
10
|
+
validates :color, presence: true
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class CreateBscfCoreVehicles < ActiveRecord::Migration[8.0]
|
2
|
+
def change
|
3
|
+
create_table :bscf_core_vehicles do |t|
|
4
|
+
t.references :driver, foreign_key: { to_table: :bscf_core_users }, null: true
|
5
|
+
t.string :plate_number, null: false
|
6
|
+
t.string :vehicle_type, null: false
|
7
|
+
t.string :brand, null: false
|
8
|
+
t.string :model, null: false
|
9
|
+
t.integer :year, null: false
|
10
|
+
t.string :color, null: false
|
11
|
+
|
12
|
+
t.timestamps
|
13
|
+
end
|
14
|
+
|
15
|
+
add_index :bscf_core_vehicles, :plate_number, unique: true
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class AddDeliveryDetailsToDeliveryOrders < ActiveRecord::Migration[8.0]
|
2
|
+
def change
|
3
|
+
add_reference :bscf_core_delivery_orders, :driver, foreign_key: { to_table: :bscf_core_users }
|
4
|
+
add_reference :bscf_core_delivery_orders, :pickup_address, null: false, foreign_key: { to_table: :bscf_core_addresses }
|
5
|
+
add_column :bscf_core_delivery_orders, :buyer_phone, :string, null: false
|
6
|
+
add_column :bscf_core_delivery_orders, :seller_phone, :string, null: false
|
7
|
+
rename_column :bscf_core_delivery_orders, :delivery_address_id, :dropoff_address_id
|
8
|
+
rename_column :bscf_core_delivery_orders, :contact_phone, :driver_phone
|
9
|
+
end
|
10
|
+
end
|
data/lib/bscf/core/version.rb
CHANGED
@@ -1,11 +1,34 @@
|
|
1
1
|
FactoryBot.define do
|
2
2
|
factory :delivery_order, class: 'Bscf::Core::DeliveryOrder' do
|
3
3
|
association :order
|
4
|
-
association :
|
5
|
-
|
4
|
+
association :pickup_address, factory: :address
|
5
|
+
association :dropoff_address, factory: :address
|
6
|
+
driver { nil }
|
7
|
+
|
8
|
+
buyer_phone { Faker::PhoneNumber.phone_number }
|
9
|
+
seller_phone { Faker::PhoneNumber.phone_number }
|
10
|
+
driver_phone { Faker::PhoneNumber.phone_number }
|
6
11
|
delivery_notes { Faker::Lorem.paragraph }
|
7
12
|
estimated_delivery_time { 2.days.from_now }
|
8
|
-
|
13
|
+
delivery_start_time { nil }
|
14
|
+
delivery_end_time { nil }
|
9
15
|
status { :pending }
|
16
|
+
|
17
|
+
trait :with_driver do
|
18
|
+
association :driver, factory: :user
|
19
|
+
end
|
20
|
+
|
21
|
+
trait :in_transit do
|
22
|
+
with_driver
|
23
|
+
status { :in_transit }
|
24
|
+
delivery_start_time { Time.current }
|
25
|
+
end
|
26
|
+
|
27
|
+
trait :delivered do
|
28
|
+
with_driver
|
29
|
+
status { :delivered }
|
30
|
+
delivery_start_time { 2.hours.ago }
|
31
|
+
delivery_end_time { Time.current }
|
32
|
+
end
|
10
33
|
end
|
11
34
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
FactoryBot.define do
|
2
|
+
factory :vehicle, class: 'Bscf::Core::Vehicle' do
|
3
|
+
association :driver, factory: :user
|
4
|
+
sequence(:plate_number) { |n| "ABC#{n}123" }
|
5
|
+
vehicle_type { [ 'Truck', 'Van', 'Pickup' ].sample }
|
6
|
+
brand { [ 'Toyota', 'Ford', 'Mercedes', 'Volvo' ].sample }
|
7
|
+
model { [ 'Hilux', 'Transit', 'Actros', 'FH16' ].sample }
|
8
|
+
year { rand(2015..Time.current.year) }
|
9
|
+
color { [ 'White', 'Black', 'Silver', 'Blue' ].sample }
|
10
|
+
end
|
11
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bscf-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Asrat
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-04-
|
10
|
+
date: 2025-04-10 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: active_model_serializers
|
@@ -305,6 +305,7 @@ files:
|
|
305
305
|
- app/models/bscf/core/user.rb
|
306
306
|
- app/models/bscf/core/user_profile.rb
|
307
307
|
- app/models/bscf/core/user_role.rb
|
308
|
+
- app/models/bscf/core/vehicle.rb
|
308
309
|
- app/models/bscf/core/virtual_account.rb
|
309
310
|
- app/models/bscf/core/virtual_account_transaction.rb
|
310
311
|
- app/models/bscf/core/wholesaler_product.rb
|
@@ -333,6 +334,9 @@ files:
|
|
333
334
|
- db/migrate/20250402120554_create_bscf_core_wholesaler_products.rb
|
334
335
|
- db/migrate/20250403190620_create_bscf_core_business_documents.rb
|
335
336
|
- db/migrate/20250403194629_create_active_storage_tables.active_storage.rb
|
337
|
+
- db/migrate/20250410115524_create_bscf_core_vehicles.rb
|
338
|
+
- db/migrate/20250410181144_add_delivery_details_to_delivery_orders.rb
|
339
|
+
- db/migrate/20250410181145_add_actual_delivery_time_to_delivery_orders.rb
|
336
340
|
- lib/bscf/core.rb
|
337
341
|
- lib/bscf/core/engine.rb
|
338
342
|
- lib/bscf/core/version.rb
|
@@ -357,6 +361,7 @@ files:
|
|
357
361
|
- spec/factories/bscf/core/user_profiles.rb
|
358
362
|
- spec/factories/bscf/core/user_roles.rb
|
359
363
|
- spec/factories/bscf/core/users.rb
|
364
|
+
- spec/factories/bscf/core/vehicles.rb
|
360
365
|
- spec/factories/bscf/core/virtual_account_transactions.rb
|
361
366
|
- spec/factories/bscf/core/virtual_accounts.rb
|
362
367
|
- spec/factories/bscf/core/wholesaler_products.rb
|
@@ -381,7 +386,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
381
386
|
- !ruby/object:Gem::Version
|
382
387
|
version: '0'
|
383
388
|
requirements: []
|
384
|
-
rubygems_version: 3.6.
|
389
|
+
rubygems_version: 3.6.2
|
385
390
|
specification_version: 4
|
386
391
|
summary: An Engine for Supply Chain Financing
|
387
392
|
test_files: []
|