comee_core 0.1.96 → 0.1.98
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/comee/core/agents_controller.rb +13 -0
- data/app/controllers/comee/core/application_controller.rb +15 -2
- data/app/controllers/comee/core/back_orders_controller.rb +2 -2
- data/app/controllers/comee/core/client_prices_controller.rb +3 -10
- data/app/controllers/comee/core/client_warehouses_controller.rb +13 -0
- data/app/controllers/comee/core/clients_controller.rb +42 -9
- data/app/controllers/comee/core/contacts_controller.rb +13 -0
- data/app/controllers/comee/core/customer_order_items_controller.rb +3 -2
- data/app/controllers/comee/core/customer_orders_controller.rb +3 -3
- data/app/controllers/comee/core/item_statuses_controller.rb +2 -2
- data/app/controllers/comee/core/notifications_controller.rb +4 -4
- data/app/controllers/comee/core/product_lookups_controller.rb +2 -2
- data/app/controllers/comee/core/products_controller.rb +7 -9
- data/app/controllers/comee/core/purchase_order_items_controller.rb +2 -2
- data/app/controllers/comee/core/purchase_orders_controller.rb +2 -2
- data/app/controllers/comee/core/quotation_request_items_controller.rb +2 -2
- data/app/controllers/comee/core/quotation_requests_controller.rb +8 -9
- data/app/controllers/comee/core/sales_order_items_controller.rb +1 -1
- data/app/controllers/comee/core/sales_orders_controller.rb +13 -7
- data/app/controllers/comee/core/shipment_items_controller.rb +13 -13
- data/app/controllers/comee/core/suppliers_controller.rb +4 -6
- data/app/controllers/comee/core/unit_conversions_controller.rb +1 -1
- data/app/controllers/comee/core/units_controller.rb +1 -1
- data/app/controllers/concerns/comee/core/common.rb +33 -7
- data/app/models/comee/core/agent.rb +7 -0
- data/app/models/comee/core/client.rb +4 -1
- data/app/models/comee/core/client_warehouse.rb +8 -0
- data/app/models/comee/core/contact.rb +7 -0
- data/app/models/comee/core/customer_order_item.rb +6 -0
- data/app/models/comee/core/master_price.rb +1 -0
- data/app/models/comee/core/price.rb +2 -1
- data/app/models/comee/core/sales_order.rb +1 -2
- data/app/models/comee/core/sales_order_item.rb +6 -1
- data/app/models/comee/core/supplier.rb +2 -0
- data/app/serializers/comee/core/agent_serializer.rb +7 -0
- data/app/serializers/comee/core/client_serializer.rb +4 -1
- data/app/serializers/comee/core/client_warehouse_serializer.rb +8 -0
- data/app/serializers/comee/core/contact_serializer.rb +7 -0
- data/app/serializers/comee/core/product_serializer.rb +2 -2
- data/app/serializers/comee/core/sales_order_item_serializer.rb +1 -1
- data/app/serializers/comee/core/supplier_serializer.rb +1 -0
- data/app/services/comee/core/customer_order_service.rb +7 -2
- data/config/routes.rb +7 -1
- data/db/migrate/20230728122618_create_comee_core_suppliers.rb +4 -0
- data/db/migrate/20230728123039_create_comee_core_clients.rb +4 -0
- data/db/migrate/20230728123458_create_comee_core_agents.rb +23 -0
- data/db/migrate/20230728123559_create_comee_core_contacts.rb +34 -0
- data/db/migrate/20230811102708_create_comee_core_customer_order_items.rb +1 -0
- data/db/migrate/20230812212844_create_comee_core_sales_order_items.rb +1 -0
- data/db/migrate/20230813235946_create_comee_core_master_prices.rb +2 -1
- data/db/migrate/20230814151601_create_comee_core_client_prices.rb +2 -1
- data/db/migrate/20240119100125_create_comee_core_client_warehouses.rb +15 -0
- data/lib/comee/core/version.rb +1 -1
- data/spec/factories/comee/core/agents.rb +8 -0
- data/spec/factories/comee/core/client_prices.rb +1 -1
- data/spec/factories/comee/core/client_warehouses.rb +8 -0
- data/spec/factories/comee/core/clients.rb +2 -1
- data/spec/factories/comee/core/contacts.rb +8 -0
- data/spec/factories/comee/core/customer_order_items.rb +1 -0
- data/spec/factories/comee/core/fulfillment_centers.rb +1 -1
- data/spec/factories/comee/core/master_prices.rb +1 -0
- data/spec/factories/comee/core/sales_order_items.rb +1 -0
- data/spec/factories/comee/core/suppliers.rb +1 -0
- metadata +35 -12
- data/app/models/comee/core/warehouse_shipment.rb +0 -70
- data/app/models/comee/core/warehouse_shipment_item.rb +0 -37
- data/db/migrate/20231003080017_create_comee_core_warehouse_shipments.rb +0 -17
- data/db/migrate/20231004105455_create_comee_core_warehouse_shipment_items.rb +0 -17
- data/spec/factories/comee/core/warehouse_shipment_items.rb +0 -7
- data/spec/factories/comee/core/warehouse_shipments.rb +0 -9
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: comee_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.98
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henock L.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-01-
|
11
|
+
date: 2024-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_model_serializers
|
@@ -128,6 +128,20 @@ dependencies:
|
|
128
128
|
- - ">="
|
129
129
|
- !ruby/object:Gem::Version
|
130
130
|
version: '0'
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: database_cleaner-active_record
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ">="
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0'
|
138
|
+
type: :development
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0'
|
131
145
|
- !ruby/object:Gem::Dependency
|
132
146
|
name: factory_bot_rails
|
133
147
|
requirement: !ruby/object:Gem::Requirement
|
@@ -185,7 +199,7 @@ dependencies:
|
|
185
199
|
- !ruby/object:Gem::Version
|
186
200
|
version: '0'
|
187
201
|
- !ruby/object:Gem::Dependency
|
188
|
-
name:
|
202
|
+
name: rspec-retry
|
189
203
|
requirement: !ruby/object:Gem::Requirement
|
190
204
|
requirements:
|
191
205
|
- - ">="
|
@@ -199,7 +213,7 @@ dependencies:
|
|
199
213
|
- !ruby/object:Gem::Version
|
200
214
|
version: '0'
|
201
215
|
- !ruby/object:Gem::Dependency
|
202
|
-
name:
|
216
|
+
name: rubocop-rspec
|
203
217
|
requirement: !ruby/object:Gem::Requirement
|
204
218
|
requirements:
|
205
219
|
- - ">="
|
@@ -213,7 +227,7 @@ dependencies:
|
|
213
227
|
- !ruby/object:Gem::Version
|
214
228
|
version: '0'
|
215
229
|
- !ruby/object:Gem::Dependency
|
216
|
-
name:
|
230
|
+
name: shoulda-matchers
|
217
231
|
requirement: !ruby/object:Gem::Requirement
|
218
232
|
requirements:
|
219
233
|
- - ">="
|
@@ -227,7 +241,7 @@ dependencies:
|
|
227
241
|
- !ruby/object:Gem::Version
|
228
242
|
version: '0'
|
229
243
|
- !ruby/object:Gem::Dependency
|
230
|
-
name:
|
244
|
+
name: simplecov
|
231
245
|
requirement: !ruby/object:Gem::Requirement
|
232
246
|
requirements:
|
233
247
|
- - ">="
|
@@ -251,10 +265,13 @@ files:
|
|
251
265
|
- README.md
|
252
266
|
- Rakefile
|
253
267
|
- app/controllers/comee/core/access_controller.rb
|
268
|
+
- app/controllers/comee/core/agents_controller.rb
|
254
269
|
- app/controllers/comee/core/application_controller.rb
|
255
270
|
- app/controllers/comee/core/back_orders_controller.rb
|
256
271
|
- app/controllers/comee/core/client_prices_controller.rb
|
272
|
+
- app/controllers/comee/core/client_warehouses_controller.rb
|
257
273
|
- app/controllers/comee/core/clients_controller.rb
|
274
|
+
- app/controllers/comee/core/contacts_controller.rb
|
258
275
|
- app/controllers/comee/core/currencies_controller.rb
|
259
276
|
- app/controllers/comee/core/customer_order_items_controller.rb
|
260
277
|
- app/controllers/comee/core/customer_orders_controller.rb
|
@@ -282,12 +299,15 @@ files:
|
|
282
299
|
- app/jobs/comee_core/application_job.rb
|
283
300
|
- app/mailers/comee/core/application_mailer.rb
|
284
301
|
- app/mailers/comee/core/supplier_mailer.rb
|
302
|
+
- app/models/comee/core/agent.rb
|
285
303
|
- app/models/comee/core/application_record.rb
|
286
304
|
- app/models/comee/core/back_order.rb
|
287
305
|
- app/models/comee/core/back_order_item.rb
|
288
306
|
- app/models/comee/core/client.rb
|
289
307
|
- app/models/comee/core/client_order.rb
|
290
308
|
- app/models/comee/core/client_price.rb
|
309
|
+
- app/models/comee/core/client_warehouse.rb
|
310
|
+
- app/models/comee/core/contact.rb
|
291
311
|
- app/models/comee/core/currency.rb
|
292
312
|
- app/models/comee/core/customer_order.rb
|
293
313
|
- app/models/comee/core/customer_order_item.rb
|
@@ -323,11 +343,12 @@ files:
|
|
323
343
|
- app/models/comee/core/unit.rb
|
324
344
|
- app/models/comee/core/unit_conversion.rb
|
325
345
|
- app/models/comee/core/user.rb
|
326
|
-
- app/models/comee/core/warehouse_shipment.rb
|
327
|
-
- app/models/comee/core/warehouse_shipment_item.rb
|
328
346
|
- app/notifications/comee/core/back_order_notification.rb
|
347
|
+
- app/serializers/comee/core/agent_serializer.rb
|
329
348
|
- app/serializers/comee/core/client_price_serializer.rb
|
330
349
|
- app/serializers/comee/core/client_serializer.rb
|
350
|
+
- app/serializers/comee/core/client_warehouse_serializer.rb
|
351
|
+
- app/serializers/comee/core/contact_serializer.rb
|
331
352
|
- app/serializers/comee/core/currency_serializer.rb
|
332
353
|
- app/serializers/comee/core/customer_order_item_serializer.rb
|
333
354
|
- app/serializers/comee/core/customer_order_serializer.rb
|
@@ -372,6 +393,8 @@ files:
|
|
372
393
|
- db/migrate/20230728014330_create_comee_core_users.rb
|
373
394
|
- db/migrate/20230728122618_create_comee_core_suppliers.rb
|
374
395
|
- db/migrate/20230728123039_create_comee_core_clients.rb
|
396
|
+
- db/migrate/20230728123458_create_comee_core_agents.rb
|
397
|
+
- db/migrate/20230728123559_create_comee_core_contacts.rb
|
375
398
|
- db/migrate/20230728123928_create_comee_core_back_orders.rb
|
376
399
|
- db/migrate/20230728125723_create_comee_core_back_order_items.rb
|
377
400
|
- db/migrate/20230730061225_create_comee_core_notifications.rb
|
@@ -387,8 +410,6 @@ files:
|
|
387
410
|
- db/migrate/20230929115336_create_comee_core_order_sources.rb
|
388
411
|
- db/migrate/20230929130910_create_comee_core_client_orders.rb
|
389
412
|
- db/migrate/20231003073316_create_comee_core_inventories.rb
|
390
|
-
- db/migrate/20231003080017_create_comee_core_warehouse_shipments.rb
|
391
|
-
- db/migrate/20231004105455_create_comee_core_warehouse_shipment_items.rb
|
392
413
|
- db/migrate/20231101113358_create_comee_core_edi_orders.rb
|
393
414
|
- db/migrate/20231121094339_create_comee_core_quotation_requests.rb
|
394
415
|
- db/migrate/20231121132709_create_comee_core_quotation_request_items.rb
|
@@ -407,16 +428,20 @@ files:
|
|
407
428
|
- db/migrate/20240109185749_create_comee_core_transport_availability.rb
|
408
429
|
- db/migrate/20240109185931_create_comee_core_time_slots.rb
|
409
430
|
- db/migrate/20240111112140_create_comee_core_pickup_schedules.rb
|
431
|
+
- db/migrate/20240119100125_create_comee_core_client_warehouses.rb
|
410
432
|
- lib/comee/core.rb
|
411
433
|
- lib/comee/core/engine.rb
|
412
434
|
- lib/comee/core/version.rb
|
413
435
|
- lib/comee_core.rb
|
414
436
|
- lib/tasks/comee_core_tasks.rake
|
437
|
+
- spec/factories/comee/core/agents.rb
|
415
438
|
- spec/factories/comee/core/back_order_items.rb
|
416
439
|
- spec/factories/comee/core/back_orders.rb
|
417
440
|
- spec/factories/comee/core/client_orders.rb
|
418
441
|
- spec/factories/comee/core/client_prices.rb
|
442
|
+
- spec/factories/comee/core/client_warehouses.rb
|
419
443
|
- spec/factories/comee/core/clients.rb
|
444
|
+
- spec/factories/comee/core/contacts.rb
|
420
445
|
- spec/factories/comee/core/currencies.rb
|
421
446
|
- spec/factories/comee/core/customer_order_items.rb
|
422
447
|
- spec/factories/comee/core/customer_orders.rb
|
@@ -451,8 +476,6 @@ files:
|
|
451
476
|
- spec/factories/comee/core/unit_conversions.rb
|
452
477
|
- spec/factories/comee/core/units.rb
|
453
478
|
- spec/factories/comee/core/users.rb
|
454
|
-
- spec/factories/comee/core/warehouse_shipment_items.rb
|
455
|
-
- spec/factories/comee/core/warehouse_shipments.rb
|
456
479
|
homepage: https://www.mks.com
|
457
480
|
licenses:
|
458
481
|
- MIT
|
@@ -1,70 +0,0 @@
|
|
1
|
-
module Comee
|
2
|
-
module Core
|
3
|
-
class WarehouseShipment < ApplicationRecord
|
4
|
-
belongs_to :client
|
5
|
-
has_many :warehouse_shipment_items
|
6
|
-
|
7
|
-
enum :status, {draft: 0, submitted: 1, acknowledged: 2, delivered: 3}
|
8
|
-
|
9
|
-
validates :reference_number, presence: true, uniqueness: true
|
10
|
-
validates :destination, :delivery_date, :status, presence: true
|
11
|
-
|
12
|
-
def self.ransackable_attributes(_auth_object = nil)
|
13
|
-
%w[id client_id delivery_date destination id reference_number status]
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.ransackable_associations(_auth_object = nil)
|
17
|
-
[]
|
18
|
-
end
|
19
|
-
|
20
|
-
def submit
|
21
|
-
self.status = WarehouseShipment.statuses[:submitted]
|
22
|
-
save!
|
23
|
-
self
|
24
|
-
end
|
25
|
-
|
26
|
-
def acknowledge
|
27
|
-
error = "Warehouse shipment should have a `submitted` status before acknowledgement."
|
28
|
-
raise(StandardError, error) unless WarehouseShipment.statuses[status] == WarehouseShipment.statuses[:submitted]
|
29
|
-
|
30
|
-
self.status = WarehouseShipment.statuses[:acknowledged]
|
31
|
-
save!
|
32
|
-
items = warehouse_shipment_items.includes(:sales_order_item)
|
33
|
-
return self unless items.count.positive?
|
34
|
-
|
35
|
-
updates = items.map do |item|
|
36
|
-
order_item = item.sales_order_item
|
37
|
-
{
|
38
|
-
id: order_item.id,
|
39
|
-
sales_order_id: order_item.sales_order_id,
|
40
|
-
unit_id: order_item.unit_id,
|
41
|
-
customer_order_item_id: order_item.customer_order_item_id,
|
42
|
-
quantity: order_item.quantity,
|
43
|
-
quantity_delivered: order_item.quantity_delivered,
|
44
|
-
price: order_item.price,
|
45
|
-
delivery_date: order_item.delivery_date,
|
46
|
-
eb_number: order_item.eb_number
|
47
|
-
}
|
48
|
-
end
|
49
|
-
SalesOrderItem.upsert_all(updates)
|
50
|
-
self
|
51
|
-
end
|
52
|
-
|
53
|
-
def deliver
|
54
|
-
error = "Warehouse shipment should have an `acknowledged` status before delivery."
|
55
|
-
raise(StandardError, error) unless WarehouseShipment.statuses[status] == WarehouseShipment.statuses[:acknowledged]
|
56
|
-
|
57
|
-
self.status = WarehouseShipment.statuses[:delivered]
|
58
|
-
save!
|
59
|
-
order_items = warehouse_shipment_items.includes(:sales_order_item).map(&:sales_order_item)
|
60
|
-
return self unless order_items.count.positive?
|
61
|
-
|
62
|
-
order_items.each do |sales_order_item|
|
63
|
-
sales_order_item.update(quantity_delivered: sales_order_item.quantity)
|
64
|
-
end
|
65
|
-
# SalesOrderItem.where(id: order_items.map(&:id)).update_all(quantity_delivered: sales_order_item.quantity)
|
66
|
-
self
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
module Comee
|
2
|
-
module Core
|
3
|
-
class WarehouseShipmentItem < ApplicationRecord
|
4
|
-
before_save :update_inventory
|
5
|
-
|
6
|
-
belongs_to :warehouse_shipment
|
7
|
-
belongs_to :sales_order_item
|
8
|
-
|
9
|
-
validates :quantity, presence: true
|
10
|
-
validate :validate_inventory_quantity
|
11
|
-
|
12
|
-
def validate_inventory_quantity
|
13
|
-
return unless quantity && sales_order_item
|
14
|
-
|
15
|
-
inventory = Inventory.find_by(product_id: sales_order_item.customer_order_item.product_id)
|
16
|
-
unless inventory
|
17
|
-
errors.add(:base, "Inventory entry not found for product `#{sales_order_item.customer_order_item.product.name}`.")
|
18
|
-
return
|
19
|
-
end
|
20
|
-
|
21
|
-
old_quantity = quantity_was || 0
|
22
|
-
diff = inventory.quantity - (quantity - old_quantity)
|
23
|
-
errors.add(:quantity, "exceeds available quantity in inventory by #{diff.abs}.") if diff.negative?
|
24
|
-
end
|
25
|
-
|
26
|
-
def update_inventory
|
27
|
-
inventory = Inventory.find_by(product_id: sales_order_item.customer_order_item.product_id)
|
28
|
-
return unless quantity_changed?
|
29
|
-
|
30
|
-
old_quantity = quantity_was || 0
|
31
|
-
diff = quantity - old_quantity
|
32
|
-
inventory.quantity -= diff
|
33
|
-
inventory.save!
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
class CreateComeeCoreWarehouseShipments < ActiveRecord::Migration[7.0]
|
2
|
-
def change
|
3
|
-
create_table :comee_core_warehouse_shipments do |t|
|
4
|
-
t.string :reference_number, null: false
|
5
|
-
t.string :destination, null: false
|
6
|
-
t.date :delivery_date, null: false
|
7
|
-
t.references :client,
|
8
|
-
null: false,
|
9
|
-
index: {name: "client_on_ccws_indx"},
|
10
|
-
foreign_key: {to_table: :comee_core_clients}
|
11
|
-
t.integer :status, null: false, default: 0
|
12
|
-
|
13
|
-
t.timestamps
|
14
|
-
end
|
15
|
-
add_index :comee_core_warehouse_shipments, :reference_number, unique: true
|
16
|
-
end
|
17
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
class CreateComeeCoreWarehouseShipmentItems < ActiveRecord::Migration[7.0]
|
2
|
-
def change
|
3
|
-
create_table :comee_core_warehouse_shipment_items do |t|
|
4
|
-
t.references :warehouse_shipment,
|
5
|
-
null: false,
|
6
|
-
index: {name: "ws_on_ccwsi_indx"},
|
7
|
-
foreign_key: {to_table: :comee_core_warehouse_shipments}
|
8
|
-
t.references :sales_order_item,
|
9
|
-
null: false,
|
10
|
-
index: {name: "soi_on_ccwsi_indx"},
|
11
|
-
foreign_key: {to_table: :comee_core_sales_order_items}
|
12
|
-
t.integer :quantity, null: false
|
13
|
-
|
14
|
-
t.timestamps
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,9 +0,0 @@
|
|
1
|
-
FactoryBot.define do
|
2
|
-
factory :warehouse_shipment, class: "Comee::Core::WarehouseShipment" do
|
3
|
-
reference_number { Faker::Alphanumeric.alpha(number: 8) }
|
4
|
-
destination { Faker::Lorem.sentence }
|
5
|
-
delivery_date { Date.current.advance(month: 1) }
|
6
|
-
status { Comee::Core::WarehouseShipment.statuses[:draft] }
|
7
|
-
client
|
8
|
-
end
|
9
|
-
end
|