comee_core 0.1.53 → 0.1.54
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/products_controller.rb +1 -1
- data/app/controllers/comee/core/sales_order_items_controller.rb +8 -2
- data/app/controllers/comee/core/sales_orders_controller.rb +2 -1
- data/app/models/comee/core/fulfillment_center.rb +14 -0
- data/app/models/comee/core/product.rb +2 -0
- data/app/models/comee/core/sales_order.rb +1 -0
- data/app/models/comee/core/sales_order_item.rb +1 -0
- data/app/serializers/comee/core/master_price_serializer.rb +1 -1
- data/app/serializers/comee/core/product_serializer.rb +1 -0
- data/app/serializers/comee/core/sales_order_item_serializer.rb +2 -1
- data/app/serializers/comee/core/sales_order_serializer.rb +1 -0
- data/app/services/comee/core/customer_order_service.rb +6 -4
- data/app/validators/array_validator.rb +23 -0
- data/db/migrate/20230727091518_create_comee_core_fulfillment_centers.rb +14 -0
- data/db/migrate/20230728014322_create_comee_core_products.rb +4 -0
- data/db/migrate/20230812190652_create_comee_core_sales_orders.rb +4 -0
- data/db/migrate/20230812212844_create_comee_core_sales_order_items.rb +5 -0
- data/db/migrate/20230813235946_create_comee_core_master_prices.rb +1 -0
- data/lib/comee/core/version.rb +1 -1
- data/spec/factories/comee/core/fulfillment_centers.rb +9 -0
- data/spec/factories/comee/core/master_prices.rb +1 -0
- data/spec/factories/comee/core/products.rb +1 -0
- data/spec/factories/comee/core/sales_order_items.rb +2 -0
- data/spec/factories/comee/core/sales_orders.rb +1 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1384668dff4008a978c0526a50f3e61c2d7375025fa420577d93bcb87533735
|
4
|
+
data.tar.gz: 4c90e389141355f9c6178d0bb5369360b4a3fce1e61e62d38a58697d89d48712
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2dae046eaefed52198da2a2e90f4c4b167459ce7091ba5b28eb884aa74f3b7ebcd400a32b5aa8df469a1450a51233bcde4c3a8c199537618fc03293893bf2ee
|
7
|
+
data.tar.gz: f05e56528126274994fa7bab6517cba5ea6efffeffff022fd02ebc149c49219db97d45b80d501bc56cdf4910c522205947250924b0a5b1f43f8bb897adab7abc
|
@@ -30,7 +30,7 @@ module Comee
|
|
30
30
|
private
|
31
31
|
|
32
32
|
def model_params
|
33
|
-
params.required(:payload).permit(:code, :name, :description, :parent_id, :thumbnail_image, :preferred_units, images: [])
|
33
|
+
params.required(:payload).permit(:code, :name, :description, :parent_id, :thumbnail_image, :preferred_units, :source_id, images: [])
|
34
34
|
end
|
35
35
|
|
36
36
|
def price_params
|
@@ -5,7 +5,12 @@ module Comee
|
|
5
5
|
|
6
6
|
def index
|
7
7
|
super do
|
8
|
-
Comee::Core::SalesOrderItem.includes(
|
8
|
+
Comee::Core::SalesOrderItem.includes(
|
9
|
+
:sales_order,
|
10
|
+
:customer_order_item,
|
11
|
+
:source,
|
12
|
+
:unit
|
13
|
+
).where(sales_order_id: params[:id])
|
9
14
|
end
|
10
15
|
end
|
11
16
|
|
@@ -24,7 +29,8 @@ module Comee
|
|
24
29
|
|
25
30
|
def model_params
|
26
31
|
params.require(:payload).permit(:sales_order_id, :customer_order_item_id, :product_id, :unit_id, :quantity, :quantity_delivered,
|
27
|
-
:customer_item_no, :price, :delivery_date, :eb_number, :comment, :action_note,
|
32
|
+
:customer_item_no, :price, :delivery_date, :eb_number, :lead_time, :comment, :action_note,
|
33
|
+
:po_reference, :source_id)
|
28
34
|
end
|
29
35
|
end
|
30
36
|
end
|
@@ -6,7 +6,7 @@ module Comee
|
|
6
6
|
|
7
7
|
def index
|
8
8
|
super do
|
9
|
-
Comee::Core::SalesOrder.includes(:sales_order_items).all
|
9
|
+
Comee::Core::SalesOrder.includes(:customer_order, :fulfillment_center, :sales_order_items).all
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
@@ -45,6 +45,7 @@ module Comee
|
|
45
45
|
|
46
46
|
def back_order_params
|
47
47
|
params.permit(payload: [:supplier_id, :order_number, :order_date, :delivery_date, :delivery_address, :invoice_address,
|
48
|
+
:fulfillment_center_id,
|
48
49
|
back_order_items: %i[product_id requested_quantity requested_price supplier_quantity delivery_date]])
|
49
50
|
end
|
50
51
|
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class FulfillmentCenter < ApplicationRecord
|
4
|
+
WAREHOUSE = "Warehouse".freeze
|
5
|
+
PURCHASE = "Purchase".freeze
|
6
|
+
SERVICES = [WAREHOUSE, PURCHASE].freeze
|
7
|
+
|
8
|
+
validates :code, presence: true, uniqueness: true
|
9
|
+
validates :name, :address, :email, presence: true
|
10
|
+
validates :email, format: URI::MailTo::EMAIL_REGEXP
|
11
|
+
validates :service, presence: true, array: {inclusion: {in: SERVICES}}
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Comee
|
2
2
|
module Core
|
3
3
|
class MasterPriceSerializer < ActiveModel::Serializer
|
4
|
-
attributes :id, :purchase_price, :selling_price, :valid_from, :valid_to, :primary, :margin
|
4
|
+
attributes :id, :purchase_price, :selling_price, :valid_from, :valid_to, :primary, :margin, :lead_time
|
5
5
|
belongs_to :product
|
6
6
|
belongs_to :supplier
|
7
7
|
end
|
@@ -1,10 +1,11 @@
|
|
1
1
|
module Comee
|
2
2
|
module Core
|
3
3
|
class SalesOrderItemSerializer < ActiveModel::Serializer
|
4
|
-
attributes :id, :customer_item_no, :quantity, :quantity_delivered, :price, :delivery_date, :eb_number, :comment,
|
4
|
+
attributes :id, :customer_item_no, :quantity, :quantity_delivered, :price, :delivery_date, :eb_number, :lead_time, :comment,
|
5
5
|
:action_note, :po_reference
|
6
6
|
belongs_to :sales_order
|
7
7
|
belongs_to :customer_order_item
|
8
|
+
belongs_to :source
|
8
9
|
belongs_to :unit
|
9
10
|
end
|
10
11
|
end
|
@@ -125,18 +125,19 @@ module Comee
|
|
125
125
|
status: SalesOrder.statuses[:draft]
|
126
126
|
)
|
127
127
|
order_items = order.customer_order_items.includes(:product, :unit)
|
128
|
-
|
128
|
+
client_prices = ClientPrice.where(client: order.client, product_id: order_items.map(&:product_id))
|
129
|
+
master_prices = MasterPrice.where(primary: true, status: Price.statuses[:current], product: order_items.map(&:product))
|
129
130
|
items = order_items.each_with_object([]) do |item, res|
|
130
131
|
next if item.canceled?
|
131
132
|
|
132
133
|
default_unit = item.product.default_unit
|
133
134
|
unit_id = default_unit ? default_unit["id"] : item.unit_id
|
134
135
|
quantity = convert_quantity(item.quantity, item.unit_id, unit_id)
|
135
|
-
client_price =
|
136
|
+
client_price = client_prices.find { |price| price.product_id == item.product_id }
|
137
|
+
master_price = master_prices.find { |price| price.product_id == item.product_id }
|
136
138
|
if client_price
|
137
139
|
price = convert_price(client_price.price, client_price.unit_id, unit_id)
|
138
140
|
else
|
139
|
-
master_price = MasterPrice.find_by(product: item.product, primary: true)
|
140
141
|
raise(StandardError, "No price entry could be found for product `#{item.product.code}`.") unless master_price
|
141
142
|
|
142
143
|
price = convert_price(master_price.selling_price, master_price.unit_id, unit_id)
|
@@ -150,7 +151,8 @@ module Comee
|
|
150
151
|
customer_item_no: item.product.code,
|
151
152
|
quantity: quantity,
|
152
153
|
price: price,
|
153
|
-
delivery_date: item.delivery_date
|
154
|
+
delivery_date: item.delivery_date,
|
155
|
+
lead_time: master_price&.lead_time
|
154
156
|
}
|
155
157
|
end
|
156
158
|
SalesOrderItem.insert_all!(items)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class ArrayValidator < ActiveModel::EachValidator
|
2
|
+
def validate_each(record, attribute, values)
|
3
|
+
Array(values).each do |value|
|
4
|
+
options.each do |key, args|
|
5
|
+
validator_options = {attributes: attribute}
|
6
|
+
validator_options.merge!(args) if args.is_a?(Hash)
|
7
|
+
next if value.nil? && validator_options[:allow_nil]
|
8
|
+
|
9
|
+
next if value.blank? && validator_options[:allow_blank]
|
10
|
+
|
11
|
+
validator_class_name = "#{key.to_s.camelize}Validator"
|
12
|
+
validator_class = begin
|
13
|
+
validator_class_name.constantize
|
14
|
+
rescue NameError
|
15
|
+
"ActiveModel::Validations::#{validator_class_name}".constantize
|
16
|
+
end
|
17
|
+
|
18
|
+
validator = validator_class.new(validator_options)
|
19
|
+
validator.validate_each(record, attribute, value)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class CreateComeeCoreFulfillmentCenters < ActiveRecord::Migration[7.1]
|
2
|
+
def change
|
3
|
+
create_table :comee_core_fulfillment_centers do |t|
|
4
|
+
t.string :code, null: false
|
5
|
+
t.string :name, null: false
|
6
|
+
t.string :address, null: false
|
7
|
+
t.string :email, null: false
|
8
|
+
t.string :service, array: true, null: false
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
add_index :comee_core_fulfillment_centers, :code, unique: true
|
13
|
+
end
|
14
|
+
end
|
@@ -7,6 +7,10 @@ class CreateComeeCoreProducts < ActiveRecord::Migration[7.0]
|
|
7
7
|
t.boolean :leaf, null: false, default: true
|
8
8
|
t.string :ancestry
|
9
9
|
t.jsonb :preferred_units, null: false, default: []
|
10
|
+
t.references :source,
|
11
|
+
null: true,
|
12
|
+
index: {name: "source_on_ccp_indx"},
|
13
|
+
foreign_key: {to_table: :comee_core_fulfillment_centers}
|
10
14
|
|
11
15
|
t.timestamps
|
12
16
|
end
|
@@ -6,6 +6,10 @@ class CreateComeeCoreSalesOrders < ActiveRecord::Migration[7.0]
|
|
6
6
|
null: false,
|
7
7
|
index: {name: "co_on_ccso_indx"},
|
8
8
|
foreign_key: {to_table: :comee_core_customer_orders}
|
9
|
+
t.references :fulfillment_center,
|
10
|
+
null: true,
|
11
|
+
index: {name: "fc_on_ccso_indx"},
|
12
|
+
foreign_key: {to_table: :comee_core_fulfillment_centers}
|
9
13
|
t.float :payment_penalty, null: false, default: 0.0
|
10
14
|
t.integer :status, null: false, default: 0
|
11
15
|
t.float :total_price, null: false, default: 0
|
@@ -17,6 +17,10 @@ class CreateComeeCoreSalesOrderItems < ActiveRecord::Migration[7.0]
|
|
17
17
|
null: false,
|
18
18
|
index: {name: "coi_on_ccsoi_indx"},
|
19
19
|
foreign_key: {to_table: :comee_core_customer_order_items}
|
20
|
+
t.references :source,
|
21
|
+
null: true,
|
22
|
+
index: {name: "source_on_ccsoi_indx"},
|
23
|
+
foreign_key: {to_table: :comee_core_fulfillment_centers}
|
20
24
|
t.string :customer_item_no, null: false
|
21
25
|
t.float :quantity, null: false
|
22
26
|
t.float :quantity_delivered, null: false, default: 0
|
@@ -25,6 +29,7 @@ class CreateComeeCoreSalesOrderItems < ActiveRecord::Migration[7.0]
|
|
25
29
|
t.boolean :canceled, default: false
|
26
30
|
t.date :handover_date
|
27
31
|
t.string :eb_number
|
32
|
+
t.integer :lead_time
|
28
33
|
t.string :comment
|
29
34
|
t.string :action_note
|
30
35
|
t.string :po_reference
|
@@ -8,6 +8,7 @@ class CreateComeeCoreMasterPrices < ActiveRecord::Migration[7.0]
|
|
8
8
|
t.float :status, null: false, default: 0
|
9
9
|
t.boolean :primary, null: false, default: false
|
10
10
|
t.integer :margin, null: false
|
11
|
+
t.integer :lead_time
|
11
12
|
t.references :product,
|
12
13
|
null: false,
|
13
14
|
index: {name: "product_on_ccmp_indx"},
|
data/lib/comee/core/version.rb
CHANGED
@@ -0,0 +1,9 @@
|
|
1
|
+
FactoryBot.define do
|
2
|
+
factory :fulfillment_center, class: "Comee::Core::FulfillmentCenter" do
|
3
|
+
code { Faker::Alphanumeric.alpha(number: 10) }
|
4
|
+
name { Faker::Name.name }
|
5
|
+
address { Faker::Address.street_address }
|
6
|
+
email { Faker::Internet.email }
|
7
|
+
service { Comee::Core::FulfillmentCenter::SERVICES }
|
8
|
+
end
|
9
|
+
end
|
@@ -2,6 +2,7 @@ FactoryBot.define do
|
|
2
2
|
factory :sales_order_item, class: "Comee::Core::SalesOrderItem" do
|
3
3
|
sales_order
|
4
4
|
association :customer_order_item, :with_inventory
|
5
|
+
source factory: :fulfillment_center
|
5
6
|
product
|
6
7
|
unit
|
7
8
|
customer_item_no { Faker::Alphanumeric.alpha(number: 10) }
|
@@ -11,6 +12,7 @@ FactoryBot.define do
|
|
11
12
|
delivery_date { Date.current.advance(months: 1) }
|
12
13
|
handover_date { Date.current }
|
13
14
|
eb_number { Faker::Lorem.word }
|
15
|
+
lead_time { nil }
|
14
16
|
comment { Faker::Lorem.sentence }
|
15
17
|
action_note { Faker::Lorem.sentence }
|
16
18
|
po_reference { Faker::Alphanumeric.alpha(number: 10) }
|
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.54
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henock L.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-12-
|
11
|
+
date: 2023-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_model_serializers
|
@@ -320,6 +320,7 @@ files:
|
|
320
320
|
- app/models/comee/core/edi_order.rb
|
321
321
|
- app/models/comee/core/external_rfq.rb
|
322
322
|
- app/models/comee/core/field_mapping.rb
|
323
|
+
- app/models/comee/core/fulfillment_center.rb
|
323
324
|
- app/models/comee/core/inventory.rb
|
324
325
|
- app/models/comee/core/invoice.rb
|
325
326
|
- app/models/comee/core/invoice_item.rb
|
@@ -372,6 +373,7 @@ files:
|
|
372
373
|
- app/services/comee/core/sales_order_service.rb
|
373
374
|
- app/services/comee/core/token_service.rb
|
374
375
|
- app/utils/comee/core/period.rb
|
376
|
+
- app/validators/array_validator.rb
|
375
377
|
- app/views/comee/core/supplier_mailer/new_order_notification.html.erb
|
376
378
|
- app/views/layouts/comee/core/mailer.html.erb
|
377
379
|
- app/views/layouts/comee/core/mailer.text.erb
|
@@ -379,6 +381,7 @@ files:
|
|
379
381
|
- config/locales/en.yml
|
380
382
|
- config/routes.rb
|
381
383
|
- config/spring.rb
|
384
|
+
- db/migrate/20230727091518_create_comee_core_fulfillment_centers.rb
|
382
385
|
- db/migrate/20230727153013_create_comee_core_units.rb
|
383
386
|
- db/migrate/20230728011037_create_comee_core_currencies.rb
|
384
387
|
- db/migrate/20230728014322_create_comee_core_products.rb
|
@@ -430,6 +433,7 @@ files:
|
|
430
433
|
- spec/factories/comee/core/edi_orders.rb
|
431
434
|
- spec/factories/comee/core/external_rfqs.rb
|
432
435
|
- spec/factories/comee/core/field_mappings.rb
|
436
|
+
- spec/factories/comee/core/fulfillment_centers.rb
|
433
437
|
- spec/factories/comee/core/inventories.rb
|
434
438
|
- spec/factories/comee/core/invoice_items.rb
|
435
439
|
- spec/factories/comee/core/invoices.rb
|