bscf-core 0.3.5 → 0.3.7
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/lib/generators/bscf/core/install_generator.rb +26 -0
- data/spec/factories/bscf/core/delivery_orders.rb +26 -3
- data/spec/factories/bscf/core/vehicles.rb +11 -0
- metadata +9 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed028b7e42ca653b4e5784c312ce047afc265df7097326a41cfdbfca49c9a03d
|
4
|
+
data.tar.gz: be61e538a2fcbcd0fc510d931487f12d7cadabcad68a9ac4b917b70408df9bf6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc73de41b00992923c5bfdb670568f3d511e40d80e8e2ad3f1ea1ba396275acbadd3a511d6eeb47a3a26216ee2ea7ffef9beaa9685feac4c43c66060ee84ec6d
|
7
|
+
data.tar.gz: 837d1989f861fb81ac36324e14a5d102c764a9cd5bac87f1d25006bf86e355e233f1ba90673f869e768169f1b4c4e2b28b97d6fa9aa15452e21be67f63f2cfb3
|
@@ -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
@@ -0,0 +1,26 @@
|
|
1
|
+
module Bscf
|
2
|
+
module Core
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
source_root File.expand_path("templates", __dir__)
|
5
|
+
desc "Install BSCF Core"
|
6
|
+
|
7
|
+
def copy_migrations
|
8
|
+
say_status :copying, "migrations"
|
9
|
+
rake "bscf_core:install:migrations"
|
10
|
+
end
|
11
|
+
|
12
|
+
def mount_engine
|
13
|
+
route "mount Bscf::Core::Engine => '/bscf'"
|
14
|
+
end
|
15
|
+
|
16
|
+
def run_migrations
|
17
|
+
say_status :running, "migrations"
|
18
|
+
rake "db:migrate"
|
19
|
+
end
|
20
|
+
|
21
|
+
def finished
|
22
|
+
say "BSCF Core has been installed successfully!"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -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.7
|
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,10 +334,14 @@ 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
|
339
343
|
- lib/bscf_core.rb
|
344
|
+
- lib/generators/bscf/core/install_generator.rb
|
340
345
|
- lib/tasks/bscf/core_tasks.rake
|
341
346
|
- lib/tasks/release.rake
|
342
347
|
- spec/factories/bscf/core/addresses.rb
|
@@ -357,6 +362,7 @@ files:
|
|
357
362
|
- spec/factories/bscf/core/user_profiles.rb
|
358
363
|
- spec/factories/bscf/core/user_roles.rb
|
359
364
|
- spec/factories/bscf/core/users.rb
|
365
|
+
- spec/factories/bscf/core/vehicles.rb
|
360
366
|
- spec/factories/bscf/core/virtual_account_transactions.rb
|
361
367
|
- spec/factories/bscf/core/virtual_accounts.rb
|
362
368
|
- spec/factories/bscf/core/wholesaler_products.rb
|
@@ -381,7 +387,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
381
387
|
- !ruby/object:Gem::Version
|
382
388
|
version: '0'
|
383
389
|
requirements: []
|
384
|
-
rubygems_version: 3.6.
|
390
|
+
rubygems_version: 3.6.2
|
385
391
|
specification_version: 4
|
386
392
|
summary: An Engine for Supply Chain Financing
|
387
393
|
test_files: []
|