comee_core 0.2.10 → 0.2.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/comee/core/client_prices_controller.rb +5 -1
  3. data/app/controllers/comee/core/clients_controller.rb +7 -1
  4. data/app/controllers/comee/core/customer_order_items_controller.rb +11 -1
  5. data/app/controllers/comee/core/customer_orders_controller.rb +10 -1
  6. data/app/controllers/comee/core/product_lookups_controller.rb +15 -1
  7. data/app/controllers/comee/core/quotation_request_items_controller.rb +1 -0
  8. data/app/controllers/comee/core/sales_order_items_controller.rb +2 -2
  9. data/app/controllers/comee/core/sales_orders_controller.rb +5 -3
  10. data/app/models/comee/core/customer_order_item.rb +4 -2
  11. data/app/models/comee/core/sales_order.rb +5 -7
  12. data/app/models/comee/core/sales_order_item.rb +2 -1
  13. data/app/serializers/comee/core/customer_order_item_serializer.rb +2 -1
  14. data/app/serializers/comee/core/quotation_request_item_serializer.rb +2 -1
  15. data/app/serializers/comee/core/sales_order_item_serializer.rb +2 -2
  16. data/app/serializers/comee/core/sales_order_serializer.rb +5 -2
  17. data/app/services/comee/core/customer_order_service.rb +11 -1
  18. data/app/services/comee/core/quotation_request_service.rb +1 -0
  19. data/config/routes.rb +1 -0
  20. data/db/migrate/20230811102708_create_comee_core_customer_order_items.rb +1 -0
  21. data/db/migrate/20230812190652_create_comee_core_sales_orders.rb +12 -4
  22. data/db/migrate/20230812212844_create_comee_core_sales_order_items.rb +1 -0
  23. data/db/migrate/20231121132709_create_comee_core_quotation_request_items.rb +1 -0
  24. data/lib/comee/core/version.rb +1 -1
  25. data/spec/factories/comee/core/customer_order_items.rb +1 -0
  26. data/spec/factories/comee/core/quotation_request_items.rb +1 -0
  27. data/spec/factories/comee/core/sales_order_items.rb +1 -0
  28. data/spec/factories/comee/core/sales_orders.rb +12 -3
  29. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 275dd64cebdedf362d37f4693eaeb8ced27c3569cdb3c90dbc37f0ae6d47e726
4
- data.tar.gz: 16518da0b9c9bc06440d511b3aca1faca8e2bb820b919b9446ebfa66c89bc870
3
+ metadata.gz: 854004edc559daff1dd6605fc7b95b1f83602629d2e59771a487226c95833350
4
+ data.tar.gz: 48fe39dcd8d5867fb4abff691bd615f1eb434b7e01cc31771bb0a1a57765af09
5
5
  SHA512:
6
- metadata.gz: 00ddf02a0dba120f9d9d406002cdf20f1fbb81b2810b0e25bb67a6bec4dce6826c72fefec945980e098bde0c0ea7f5a51d8955d0756d01dfea959af9fd31c199
7
- data.tar.gz: 25dcc78f332c7946e8271e71ae44c6c89f7900522a6ce45fc1695f78ceab2e832d69ff0908c60a0fcb45a7a16d298632f2deeb8fe9ae4b5bcc5970bf3717928e
6
+ metadata.gz: d47550e712d840c8b1d62fd3b0a7b5a34b5bd8aaf71e6fbbc48cede293d9192d0a2d6801f9176c5d09d5d42b688c28cbb7b468ea035253131f4bb049d55ffb03
7
+ data.tar.gz: 743df5145f4670590dbeeb08c36d32a9fea41a465ae05e8594230c554e76abb9e540122c57455a1744a8f7fd575b08ee93802c695f336188cba9dc1b773d9daf
@@ -65,7 +65,11 @@ module Comee
65
65
 
66
66
  def fetch_one
67
67
  price = ClientPrice.includes(:client, :product, :unit, :product_lookup)
68
- .find_by(client_id: params[:id], product_id: fetch_one_params[:product_id])
68
+ .find_by(
69
+ client_id: params[:id],
70
+ product_id: fetch_one_params[:product_id],
71
+ status: Price.statuses[:current]
72
+ )
69
73
  render_content(price)
70
74
  end
71
75
 
@@ -3,8 +3,14 @@ module Comee
3
3
  class ClientsController < ApplicationController
4
4
  include Common
5
5
 
6
+ def index
7
+ super do
8
+ Client.includes(:parent, :agents, :contacts, :client_warehouses, :user, :currency).all
9
+ end
10
+ end
11
+
6
12
  def filter
7
- clients = Client.includes(:parent, :agents, :contacts, :client_warehouses).ransack(params[:q]).result
13
+ clients = Client.includes(:parent, :agents, :contacts, :client_warehouses, :user, :currency).ransack(params[:q]).result
8
14
  render_content(clients)
9
15
  end
10
16
 
@@ -3,6 +3,15 @@ module Comee
3
3
  class CustomerOrderItemsController < ApplicationController
4
4
  include Common
5
5
 
6
+ def index
7
+ super do
8
+ [
9
+ CustomerOrderItem.includes(:product, :unit).all,
10
+ fields: ["unit"]
11
+ ]
12
+ end
13
+ end
14
+
6
15
  def cancel
7
16
  CustomerOrderItem.where(id: params[:ids]).update_all(canceled: true)
8
17
  render json: {success: true}
@@ -10,7 +19,7 @@ module Comee
10
19
 
11
20
  def filter
12
21
  data = CustomerOrderItem.includes(:product, :unit).ransack(params[:q]).result
13
- render_content(data)
22
+ render_content(data, {fields: ["unit"]})
14
23
  end
15
24
 
16
25
  def destroy
@@ -30,6 +39,7 @@ module Comee
30
39
  params.require(:payload)
31
40
  .permit(
32
41
  :customer_item_no,
42
+ :customer_item_description,
33
43
  :quantity,
34
44
  :price,
35
45
  :total_price,
@@ -5,6 +5,15 @@ module Comee
5
5
 
6
6
  before_action :set_service, only: %i[create_with_items submit submit_for_confirmation accept cancel]
7
7
 
8
+ def index
9
+ super do
10
+ [
11
+ CustomerOrder.includes(:client, :customer_order_items).all,
12
+ fields: ["client", "customer_order_items.unit"]
13
+ ]
14
+ end
15
+ end
16
+
8
17
  def create_with_items
9
18
  order = @service.create(create_with_item_params)
10
19
  render json: {success: true, data: serialize(order)}
@@ -59,7 +68,7 @@ module Comee
59
68
  .permit(
60
69
  :order_number, :order_date, :order_terms, :consignee, :shipment_address, :final_destination,
61
70
  :final_delivery_date, :handover_date, :shipping_date, :delivery_address, :invoice_address, :status, :client_id,
62
- items: %i[customer_item_no product_id quantity price total_price unit_id delivery_date]
71
+ items: %i[customer_item_no customer_item_description product_id quantity price total_price unit_id delivery_date]
63
72
  )
64
73
  end
65
74
 
@@ -9,13 +9,27 @@ module Comee
9
9
  end
10
10
  end
11
11
 
12
+ def fetch_one
13
+ lookup = ProductLookup.includes(:product)
14
+ .find_by(
15
+ itemable_id: params[:id],
16
+ itemable_type: "Comee::Core::Client",
17
+ product_id: fetch_one_params[:product_id]
18
+ )
19
+ render_content(lookup)
20
+ end
21
+
12
22
  def filter
13
- data = ProductLookup.ransack(params[:q]).result
23
+ data = ProductLookup.includes(:product).ransack(params[:q]).result
14
24
  render_content(data)
15
25
  end
16
26
 
17
27
  private
18
28
 
29
+ def fetch_one_params
30
+ params.permit(:product_id)
31
+ end
32
+
19
33
  def model_params
20
34
  params.required(:payload).permit(:code, :itemable_id, :itemable_type, :item_description, :product_id)
21
35
  end
@@ -30,6 +30,7 @@ module Comee
30
30
  params.require(:payload)
31
31
  .permit(
32
32
  :customer_item_no,
33
+ :customer_item_description,
33
34
  :price,
34
35
  :quantity,
35
36
  :margin,
@@ -29,8 +29,8 @@ module Comee
29
29
 
30
30
  def model_params
31
31
  params.require(:payload).permit(:sales_order_id, :customer_order_item_id, :product_id, :unit_id, :quantity, :quantity_delivered,
32
- :customer_item_no, :price, :handover_date, :delivery_date, :eb_number, :lead_time, :comment,
33
- :action_note, :po_reference, :pallet_no, :source_id)
32
+ :customer_item_no, :customer_item_description, :price, :handover_date, :delivery_date,
33
+ :eb_number, :lead_time, :comment, :action_note, :po_reference, :pallet_no, :source_id)
34
34
  end
35
35
  end
36
36
  end
@@ -58,9 +58,11 @@ module Comee
58
58
  private
59
59
 
60
60
  def model_params
61
- params.require(:payload).permit(:order_number, :customer_order_id, :payment_penalty, :payment_term, :delivery_term, :status,
62
- :fulfillment_center_id, :total_price, :amount_paid, :pallete_note, :handover_date, :remark,
63
- :consignee, :client_id, files: [])
61
+ params.require(:payload).permit(:order_number, :order_date, :customer_order_id, :fulfillment_center_id, :client_id,
62
+ :order_terms, :shipment_address, :delivery_address, :invoice_address, :destination,
63
+ :handover_date, :shipping_date, :delivery_date, :consignee, :payment_term, :deivery_term,
64
+ :payment_penalty, :status, :total_price, :amount_paid, :pallete_note, :remark,
65
+ files: [])
64
66
  end
65
67
 
66
68
  def back_order_params
@@ -7,14 +7,16 @@ module Comee
7
7
  belongs_to :product
8
8
  belongs_to :unit
9
9
 
10
- validates :customer_item_no, :quantity, :price, :delivery_date, presence: true
10
+ validates :customer_item_no, :customer_item_description, :quantity, :price, :delivery_date, presence: true
11
+ validates :quantity, :price, numericality: {greater_than_or_equal_to: 0}
12
+ validates :total_price, numericality: {greater_than_or_equal_to: 0}, allow_nil: true
11
13
 
12
14
  def calculate_total_price
13
15
  self.total_price = price * quantity
14
16
  end
15
17
 
16
18
  def self.ransackable_attributes(_auth_object = nil)
17
- %w[id customer_order_id product_id unit_id]
19
+ %w[id customer_order_id product_id unit_id customer_item_no customer_item_description delivery_date]
18
20
  end
19
21
 
20
22
  def self.ransackable_associations(_auth_object = nil)
@@ -14,15 +14,13 @@ module Comee
14
14
  enum :status, {draft: 0, submitted: 1, confirmed: 2, canceled: 3}
15
15
 
16
16
  validates :order_number, presence: true, uniqueness: true
17
- validates :status, presence: true
18
- validates :payment_penalty,
19
- presence: true,
20
- numericality: {greater_than_or_equal_to: 0, less_than_or_equal_to: 100}
17
+ validates :order_date, :status, presence: true
18
+ validates :payment_penalty, numericality: {greater_than_or_equal_to: 0, less_than_or_equal_to: 100}, allow_nil: true
21
19
 
22
- validates :total_price,
23
- :amount_paid,
20
+ validates :amount_paid,
24
21
  presence: true,
25
- numericality: {greater_than_or_equal_to: 0}
22
+ numericality: {greater_than_or_equal_to: 0},
23
+ allow_nil: true
26
24
 
27
25
  def total_price
28
26
  sales_order_items = SalesOrderItem.where(sales_order_id: id)
@@ -10,7 +10,7 @@ module Comee
10
10
  belongs_to :source, class_name: "Comee::Core::FulfillmentCenter", optional: true
11
11
  has_many :shipment_items
12
12
 
13
- validates :customer_item_no, :delivery_date, presence: true
13
+ validates :customer_item_no, :customer_item_description, :delivery_date, presence: true
14
14
  validates :quantity, :price, presence: true, numericality: {greater_than: 0}
15
15
  validates :quantity_delivered, numericality: {greater_than_or_equal_to: 0}
16
16
 
@@ -22,6 +22,7 @@ module Comee
22
22
  %w[
23
23
  id
24
24
  customer_item_no
25
+ customer_item_description
25
26
  customer_order_item_id
26
27
  delivery_date
27
28
  eb_number
@@ -1,7 +1,8 @@
1
1
  module Comee
2
2
  module Core
3
3
  class CustomerOrderItemSerializer < ActiveModel::Serializer
4
- attributes :id, :customer_item_no, :quantity, :price, :total_price, :delivery_date, :canceled
4
+ attributes :id, :customer_item_no, :customer_item_description, :quantity, :price, :total_price, :delivery_date,
5
+ :canceled, :customer_order_id, :product_id, :unit_id
5
6
  belongs_to :product
6
7
  belongs_to :unit
7
8
  belongs_to :customer_order
@@ -1,7 +1,8 @@
1
1
  module Comee
2
2
  module Core
3
3
  class QuotationRequestItemSerializer < ActiveModel::Serializer
4
- attributes :id, :customer_item_no, :price, :margin, :margin_type, :valid_from, :valid_to, :quantity, :expected_delivery_date
4
+ attributes :id, :customer_item_no, :customer_item_description, :price, :margin, :margin_type, :valid_from, :valid_to,
5
+ :quantity, :expected_delivery_date
5
6
  belongs_to :product
6
7
  belongs_to :quotation_request
7
8
  belongs_to :unit
@@ -1,8 +1,8 @@
1
1
  module Comee
2
2
  module Core
3
3
  class SalesOrderItemSerializer < ActiveModel::Serializer
4
- attributes :id, :customer_item_no, :quantity, :quantity_delivered, :price, :handover_date, :delivery_date, :eb_number,
5
- :lead_time, :comment, :action_note, :po_reference, :total_price
4
+ attributes :id, :customer_item_no, :customer_item_description, :quantity, :quantity_delivered, :price, :handover_date,
5
+ :delivery_date, :eb_number, :lead_time, :comment, :action_note, :po_reference, :total_price
6
6
 
7
7
  belongs_to :sales_order
8
8
  belongs_to :customer_order_item
@@ -1,12 +1,15 @@
1
1
  module Comee
2
2
  module Core
3
3
  class SalesOrderSerializer < ActiveModel::Serializer
4
- attributes :id, :order_number, :payment_penalty, :status, :total_price, :payment_term, :delivery_term, :amount_paid,
5
- :pallete_note, :handover_date, :remark, :parent_client_name, :created_by, :files_url, :customs_detail, :consignee
4
+ attributes :id, :order_number, :order_date, :order_terms, :shipment_address, :delivery_address, :invoice_address,
5
+ :destination, :handover_date, :shipping_date, :delivery_date, :consignee, :parent_client_name, :payment_term,
6
+ :delivery_term, :payment_penalty, :status, :total_price, :amount_paid, :pallete_note, :remark, :created_by,
7
+ :files_url
6
8
  belongs_to :customer_order
7
9
  belongs_to :client
8
10
  belongs_to :fulfillment_center
9
11
  has_many :sales_order_items
12
+ has_one :customs_detail
10
13
  end
11
14
  end
12
15
  end
@@ -138,9 +138,18 @@ module Comee
138
138
  CustomerOrder.transaction do
139
139
  sales_order = SalesOrder.create!(
140
140
  order_number: order.order_number,
141
+ order_date: order.order_date,
141
142
  customer_order: order,
142
143
  status: SalesOrder.statuses[:draft],
143
144
  client: order.client,
145
+ order_terms: order.order_terms,
146
+ shipment_address: order.shipment_address,
147
+ invoice_address: order.invoice_address,
148
+ delivery_address: order.delivery_address,
149
+ destination: order.final_destination,
150
+ handover_date: order.handover_date,
151
+ shipping_date: order.shipping_date,
152
+ delivery_date: order.final_delivery_date,
144
153
  consignee: order.consignee,
145
154
  created_by: accepted_by || ""
146
155
  )
@@ -173,7 +182,8 @@ module Comee
173
182
  customer_order_item_id: item.id,
174
183
  product_id: item.product_id,
175
184
  unit_id: unit_id,
176
- customer_item_no: item.product.code,
185
+ customer_item_no: item.customer_item_no,
186
+ customer_item_description: item.customer_item_description,
177
187
  quantity: quantity,
178
188
  price: price,
179
189
  total_price: quantity * price,
@@ -118,6 +118,7 @@ module Comee
118
118
  product_id: item.product_id,
119
119
  unit_id: item.unit_id,
120
120
  customer_item_no: item.customer_item_no,
121
+ customer_item_description: item.customer_item_description,
121
122
  quantity: item.quantity,
122
123
  price: item.price,
123
124
  delivery_date: item.expected_delivery_date,
data/config/routes.rb CHANGED
@@ -88,6 +88,7 @@ Comee::Core::Engine.routes.draw do
88
88
  post "create_agent"
89
89
  post "create_contact"
90
90
  post "price", controller: :client_prices, action: :fetch_one
91
+ post "product_lookup", controller: :product_lookups, action: :fetch_one
91
92
  end
92
93
  collection do
93
94
  post "filter"
@@ -14,6 +14,7 @@ class CreateComeeCoreCustomerOrderItems < ActiveRecord::Migration[7.1]
14
14
  index: {name: "unit_on_cccuoi_indx"},
15
15
  foreign_key: {to_table: :comee_core_units}
16
16
  t.string :customer_item_no, null: false
17
+ t.string :customer_item_description, null: false
17
18
  t.float :quantity, null: false, default: 0
18
19
  t.float :price, null: false, default: 0
19
20
  t.float :total_price, null: false, default: 0
@@ -2,6 +2,7 @@ class CreateComeeCoreSalesOrders < ActiveRecord::Migration[7.0]
2
2
  def change
3
3
  create_table :comee_core_sales_orders do |t|
4
4
  t.string :order_number, null: false
5
+ t.date :order_date, null: false
5
6
  t.references :customer_order,
6
7
  null: false,
7
8
  index: {name: "co_on_ccso_indx"},
@@ -14,16 +15,23 @@ class CreateComeeCoreSalesOrders < ActiveRecord::Migration[7.0]
14
15
  null: false,
15
16
  index: {name: "client_on_ccso_indx"},
16
17
  foreign_key: {to_table: :comee_core_clients}
18
+ t.string :order_terms
19
+ t.string :shipment_address
20
+ t.string :delivery_address
21
+ t.string :invoice_address
22
+ t.string :destination
23
+ t.date :shipping_date
24
+ t.date :delivery_date
25
+ t.date :handover_date
17
26
  t.string :consignee
18
27
  t.string :parent_client_name
19
28
  t.string :payment_term
20
29
  t.string :delivery_term
21
- t.float :payment_penalty, null: false, default: 0.0
30
+ t.float :payment_penalty, default: 0
22
31
  t.integer :status, null: false, default: 0
23
- t.float :total_price, null: false, default: 0
24
- t.float :amount_paid, null: false, default: 0
32
+ t.float :total_price, default: 0.0
33
+ t.float :amount_paid, default: 0.0
25
34
  t.string :pallete_note
26
- t.date :handover_date
27
35
  t.string :remark
28
36
  t.string :created_by
29
37
 
@@ -22,6 +22,7 @@ class CreateComeeCoreSalesOrderItems < ActiveRecord::Migration[7.0]
22
22
  index: {name: "source_on_ccsoi_indx"},
23
23
  foreign_key: {to_table: :comee_core_fulfillment_centers}
24
24
  t.string :customer_item_no, null: false
25
+ t.string :customer_item_description, null: false
25
26
  t.float :quantity, null: false
26
27
  t.float :quantity_delivered, null: false, default: 0
27
28
  t.float :price, null: false
@@ -10,6 +10,7 @@ class CreateComeeCoreQuotationRequestItems < ActiveRecord::Migration[7.1]
10
10
  index: {name: "rfq_on_ccrfqi_indx"},
11
11
  foreign_key: {to_table: :comee_core_quotation_requests}
12
12
  t.string :customer_item_no
13
+ t.string :customer_item_description
13
14
  t.float :quantity, null: false
14
15
  t.float :price, null: false, default: 0
15
16
  t.float :margin, null: false, default: 0
@@ -1,5 +1,5 @@
1
1
  module Comee
2
2
  module Core
3
- VERSION = "0.2.10".freeze
3
+ VERSION = "0.2.12".freeze
4
4
  end
5
5
  end
@@ -4,6 +4,7 @@ FactoryBot.define do
4
4
  product
5
5
  unit
6
6
  customer_item_no { Faker::Alphanumeric.alpha(number: 10) }
7
+ customer_item_description { Faker::Lorem.sentence }
7
8
  quantity { 1 }
8
9
  price { 1.5 }
9
10
  total_price { quantity * price }
@@ -4,6 +4,7 @@ FactoryBot.define do
4
4
  quotation_request
5
5
  unit
6
6
  customer_item_no { Faker::Alphanumeric.alpha(number: 10) }
7
+ customer_item_description { Faker::Lorem.sentence }
7
8
  quantity { 10 }
8
9
  price { 0 }
9
10
  margin { 0 }
@@ -6,6 +6,7 @@ FactoryBot.define do
6
6
  product
7
7
  unit
8
8
  customer_item_no { Faker::Alphanumeric.alpha(number: 10) }
9
+ customer_item_description { Faker::Lorem.sentence }
9
10
  quantity { 100 }
10
11
  quantity_delivered { 0 }
11
12
  price { 50 }
@@ -1,19 +1,28 @@
1
1
  FactoryBot.define do
2
2
  factory :sales_order, class: "Comee::Core::SalesOrder" do
3
3
  order_number { Faker::Alphanumeric.alpha(number: 10) }
4
+ order_date { Date.current }
4
5
  customer_order
5
6
  fulfillment_center
6
7
  client
8
+ order_terms { Faker::Lorem.sentence }
9
+ shipment_address { Faker::Address.full_address }
10
+ delivery_address { Faker::Address.full_address }
11
+ invoice_address { Faker::Address.full_address }
12
+ destination { Faker::Address.city }
13
+ handover_date { Date.current.advance(weeks: 1) }
14
+ shipping_date { Date.current.advance(days: 10) }
15
+ delivery_date { Date.current.advance(days: 15) }
16
+ consignee { Faker::Name.name }
17
+ parent_client_name { Faker::Name.name }
7
18
  payment_term { Faker::Lorem.sentence }
8
19
  delivery_term { Faker::Lorem.sentence }
9
20
  payment_penalty { 0 }
21
+ status { Comee::Core::SalesOrder.statuses[:draft] }
10
22
  total_price { 0 }
11
23
  amount_paid { 0 }
12
- status { Comee::Core::SalesOrder.statuses[:draft] }
13
24
  pallete_note { Faker::Lorem.sentence }
14
- consignee { Faker::Name.name }
15
25
  remark { Faker::Lorem.sentence }
16
- parent_client_name { Faker::Name.name }
17
26
  created_by { Faker::Name.name }
18
27
  end
19
28
  end
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.2.10
4
+ version: 0.2.12
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-02-04 00:00:00.000000000 Z
11
+ date: 2024-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_model_serializers