comee_core 0.3.6 → 0.3.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 904aacbb433502ee95c7973c9ff1f50d5fe9698998a7600dcb84a038068f5125
4
- data.tar.gz: a943ec5bd2893b7d1cff862f12695f193013740ff3c09606320306dbd252e2a6
3
+ metadata.gz: 6d50f09b407c09781cabe411155b912767ec73af304b20810a58a9632eb13e46
4
+ data.tar.gz: e0e7bb2f1540a1b922088327e04786589da49cf8b6f9f3e5e37d172a5f462643
5
5
  SHA512:
6
- metadata.gz: c14eda451d86694be060e733b8fdc3cf903872faf587b9c74349663bf0badb23ae6cb8dfc7103b8109ea5da3e457eb36b1b6a0b7cb4773697899d144ca0abed1
7
- data.tar.gz: ad1835d0bf82d0002b9f710b5f7439cb218abf4223cbbfa46229d1793e7f6f806107deb2a8334906ca7e4a5d2259d7c80497ea006f980d2d3c6475db9ecf5e2d
6
+ metadata.gz: 1ce44d97aed3a16468341eeda2d707d93c92c776a062491ecb204327b9877892bc812b5ab5e9bc6ba655f25e3f16aa710da2bde7104b624bff07948e29eeeac8
7
+ data.tar.gz: 193244d3ff7f49f941cfa77c3165af55180437ad3b2837fe358e42aebe62072259e1d91a6ae9623fc250477a146081a072946ad131b153ea723c54c3b9822cb4
@@ -0,0 +1,24 @@
1
+ module Comee
2
+ module Core
3
+ class AdditionalServicesController < ApplicationController
4
+ include Common
5
+
6
+ def index
7
+ super do
8
+ AdditionalService.where(sales_order_id: params[:id])
9
+ end
10
+ end
11
+
12
+ def filter
13
+ services = AdditionalService.includes(:sales_order).ransack(params[:q]).result
14
+ render_content(services)
15
+ end
16
+
17
+ private
18
+
19
+ def model_params
20
+ params.require(:payload).permit(:sales_order_id, :name, :unit, :quantity, :price)
21
+ end
22
+ end
23
+ end
24
+ end
@@ -125,7 +125,7 @@ module Comee
125
125
  :client_id, :order_terms, :shipment_address, :delivery_address, :invoice_address,
126
126
  :destination, :handover_date, :shipping_date, :delivery_date, :consignee, :payment_term,
127
127
  :delivery_term, :payment_penalty, :status, :purchase_status, :total_price, :amount_paid,
128
- :pallete_note, :remark, files: [])
128
+ :consolidator_date, :voyage_no, :shipping_arrangement, :pallete_note, :remark, files: [])
129
129
  end
130
130
 
131
131
  def back_order_params
@@ -0,0 +1,30 @@
1
+ module Comee
2
+ module Core
3
+ class AdditionalService < ApplicationRecord
4
+ before_save :calculate_total_price
5
+ after_save :update_sales_order
6
+
7
+ belongs_to :sales_order
8
+
9
+ validates :name, :unit, presence: true
10
+ validates :quantity, :price, presence: true, numericality: {greater_than: 0}
11
+
12
+ def calculate_total_price
13
+ self.total_price = (price * quantity).round(2)
14
+ end
15
+
16
+ def update_sales_order
17
+ sales_order.calculate_total_price
18
+ sales_order.calculate_vat
19
+ end
20
+
21
+ def self.ransackable_attributes(_auth_object = nil)
22
+ %w[id name sales_order_id]
23
+ end
24
+
25
+ def self.ransackable_associations(_auth_object = nil)
26
+ %w[sales_order]
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,14 +1,18 @@
1
1
  module Comee
2
2
  module Core
3
3
  class CustomerOrder < ApplicationRecord
4
+ OWN = "Own".freeze
5
+ AGENT = "Agent".freeze
6
+ SHIPPING_ARRANGEMENTS = [OWN, AGENT].freeze
7
+
4
8
  belongs_to :client
5
9
  has_many :customer_order_items
6
10
  has_one_attached :file
7
11
 
8
12
  enum :status, {draft: 0, submitted: 1, awaiting_confirmation: 2, accepted: 3, canceled: 4}
9
- enum :shipping_arrangement, {own: 0, agent: 1}
10
13
 
11
14
  validates :order_number, :order_date, :delivery_address, :invoice_address, :status, presence: true
15
+ validates :shipping_arrangement, inclusion: {in: SHIPPING_ARRANGEMENTS}, allow_nil: true
12
16
 
13
17
  def self.ransackable_attributes(_auth_object = nil)
14
18
  %w[id client_id delivery_address invoice_address order_number status final_destination consignee]
@@ -1,6 +1,10 @@
1
1
  module Comee
2
2
  module Core
3
3
  class SalesOrder < ApplicationRecord
4
+ OWN = "Own".freeze
5
+ AGENT = "Agent".freeze
6
+ SHIPPING_ARRANGEMENTS = [OWN, AGENT].freeze
7
+
4
8
  before_validation :generate_order_number, if: proc { |so| so.order_number.nil? }
5
9
 
6
10
  before_save :set_parent_client_name
@@ -9,17 +13,17 @@ module Comee
9
13
  belongs_to :fulfillment_center, optional: true
10
14
  belongs_to :client
11
15
  has_many :sales_order_items
16
+ has_many :additional_services
12
17
  has_many_attached :files
13
18
  has_one :customs_detail
14
19
 
15
20
  enum :status, {draft: 0, submitted: 1, confirmed: 2, accepted: 3, canceled: 4}
16
21
  enum :purchase_status, {unprocessed: 0, processed: 1}
17
- enum :shipping_arrangement, {own: 0, agent: 1}
18
22
 
19
23
  validates :order_number, presence: true, uniqueness: true
20
24
  validates :order_date, :status, :purchase_status, presence: true
21
25
  validates :payment_penalty, numericality: {greater_than_or_equal_to: 0, less_than_or_equal_to: 100}, allow_nil: true
22
-
26
+ validates :shipping_arrangement, inclusion: {in: SHIPPING_ARRANGEMENTS}, allow_nil: true
23
27
  validates :amount_paid,
24
28
  presence: true,
25
29
  numericality: {greater_than_or_equal_to: 0},
@@ -27,12 +31,17 @@ module Comee
27
31
 
28
32
  def calculate_total_price
29
33
  sales_order_items = SalesOrderItem.where(sales_order_id: id)
30
- self.total_price = sales_order_items.sum(&:total_price)
34
+ additional_services = AdditionalService.where(sales_order_id: id)
35
+ self.total_price = sales_order_items.sum(&:total_price) + additional_services.sum(&:total_price)
31
36
  end
32
37
 
33
38
  def calculate_vat
34
- total_price = SalesOrderItem.where(sales_order_id: id).sum(&:total_price)
35
- self.vat = (total_price * 0.19).round(2) if client.tax_code == "Inland"
39
+ return unless client.tax_code == "Inland"
40
+
41
+ sales_order_items = SalesOrderItem.where(sales_order_id: id)
42
+ additional_services = AdditionalService.where(sales_order_id: id)
43
+ total_price = sales_order_items.sum(&:total_price) + additional_services.sum(&:total_price)
44
+ self.vat = (total_price * 0.19).round(2)
36
45
  end
37
46
 
38
47
  def set_parent_client_name
@@ -0,0 +1,9 @@
1
+ module Comee
2
+ module Core
3
+ class AdditionalServiceSerializer < ActiveModel::Serializer
4
+ attributes :id, :sales_order_id, :name, :unit, :quantity, :price, :total_price, :sales_order_id
5
+
6
+ belongs_to :sales_order
7
+ end
8
+ end
9
+ end
data/config/routes.rb CHANGED
@@ -147,9 +147,16 @@ Comee::Core::Engine.routes.draw do
147
147
  post "filter"
148
148
  end
149
149
  end
150
- post "/sales_orders/filter", controller: :sales_orders, action: :filter
150
+
151
+ resources :additional_services do
152
+ collection do
153
+ post "filter"
154
+ end
155
+ end
156
+
151
157
  resources :sales_orders do
152
158
  collection do
159
+ post "filter"
153
160
  post "create_back_order", action: :create_back_order
154
161
  end
155
162
  member do
@@ -158,6 +165,7 @@ Comee::Core::Engine.routes.draw do
158
165
  post "confirm"
159
166
  post "accept"
160
167
  post "cancel"
168
+ get "services", controller: :additional_services, action: :index
161
169
  end
162
170
  end
163
171
 
@@ -2,6 +2,6 @@ class RemoveAddressFieldFromSupplierAndClient < ActiveRecord::Migration[7.1]
2
2
  def change
3
3
  remove_column :comee_core_clients, :address, :string
4
4
  remove_column :comee_core_suppliers, :address, :string
5
- remove_column :comee_core_clients, :shipment_addresses, array: true
5
+ remove_column :comee_core_clients, :shipment_addresses, :string, array: true
6
6
  end
7
7
  end
@@ -4,7 +4,7 @@ class AddAdditionalFieldsToOrder < ActiveRecord::Migration[7.1]
4
4
  add_column :comee_core_sales_orders, :consolidator_date, :date
5
5
  add_column :comee_core_customer_orders, :voyage_no, :string
6
6
  add_column :comee_core_sales_orders, :voyage_no, :string
7
- add_column :comee_core_customer_orders, :shipping_arrangement, :integer
8
- add_column :comee_core_sales_orders, :shipping_arrangement, :integer
7
+ add_column :comee_core_customer_orders, :shipping_arrangement, :string
8
+ add_column :comee_core_sales_orders, :shipping_arrangement, :string
9
9
  end
10
10
  end
@@ -0,0 +1,17 @@
1
+ class CreateComeeCoreAdditionalServices < ActiveRecord::Migration[7.1]
2
+ def change
3
+ create_table :comee_core_additional_services do |t|
4
+ t.references :sales_order,
5
+ null: false,
6
+ index: {name: "so_on_ccas_indx"},
7
+ foreign_key: {to_table: :comee_core_sales_orders}
8
+ t.string :name, null: false
9
+ t.float :quantity, null: false
10
+ t.string :unit, null: false
11
+ t.float :price, null: false
12
+ t.float :total_price, null: false
13
+
14
+ t.timestamps
15
+ end
16
+ end
17
+ end
@@ -1,5 +1,5 @@
1
1
  module Comee
2
2
  module Core
3
- VERSION = "0.3.6".freeze
3
+ VERSION = "0.3.8".freeze
4
4
  end
5
5
  end
@@ -0,0 +1,10 @@
1
+ FactoryBot.define do
2
+ factory :additional_service, class: "Comee::Core::AdditionalService" do
3
+ name { Faker::Lorem.sentence }
4
+ quantity { 1 }
5
+ unit { "pc" }
6
+ price { 100 }
7
+ total_price { quantity * price }
8
+ sales_order
9
+ end
10
+ end
@@ -15,6 +15,6 @@ FactoryBot.define do
15
15
  status { 0 }
16
16
  consolidator_date { Date.current }
17
17
  voyage_no { Faker::Alphanumeric.alpha(number: 10) }
18
- shipping_arrangement { Comee::Core::CustomerOrder.shipping_arrangements[:own] }
18
+ shipping_arrangement { Comee::Core::CustomerOrder::OWN }
19
19
  end
20
20
  end
@@ -21,7 +21,7 @@ FactoryBot.define do
21
21
  status { Comee::Core::SalesOrder.statuses[:draft] }
22
22
  consolidator_date { Date.current }
23
23
  voyage_no { Faker::Alphanumeric.alpha(number: 10) }
24
- shipping_arrangement { Comee::Core::SalesOrder.shipping_arrangements[:own] }
24
+ shipping_arrangement { Comee::Core::SalesOrder::OWN }
25
25
  purchase_status { Comee::Core::SalesOrder.purchase_statuses[:unprocessed] }
26
26
  total_price { 0 }
27
27
  amount_paid { 0 }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: comee_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.3.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henock L.
@@ -279,6 +279,7 @@ files:
279
279
  - README.md
280
280
  - Rakefile
281
281
  - app/controllers/comee/core/access_controller.rb
282
+ - app/controllers/comee/core/additional_services_controller.rb
282
283
  - app/controllers/comee/core/agents_controller.rb
283
284
  - app/controllers/comee/core/application_controller.rb
284
285
  - app/controllers/comee/core/application_modules_controller.rb
@@ -323,6 +324,7 @@ files:
323
324
  - app/mailers/comee/core/notification_mailer.rb
324
325
  - app/mailers/comee/core/supplier_mailer.rb
325
326
  - app/models/comee/core/additional_item.rb
327
+ - app/models/comee/core/additional_service.rb
326
328
  - app/models/comee/core/address.rb
327
329
  - app/models/comee/core/agent.rb
328
330
  - app/models/comee/core/application_module.rb
@@ -394,6 +396,7 @@ files:
394
396
  - app/models/comee/core/user.rb
395
397
  - app/models/comee/core/user_application_role.rb
396
398
  - app/notifications/comee/core/back_order_notification.rb
399
+ - app/serializers/comee/core/additional_service_serializer.rb
397
400
  - app/serializers/comee/core/agent_serializer.rb
398
401
  - app/serializers/comee/core/application_module_serializer.rb
399
402
  - app/serializers/comee/core/client_address_serializer.rb
@@ -528,12 +531,14 @@ files:
528
531
  - db/migrate/20240629170409_add_vat_to_sales_orders.rb
529
532
  - db/migrate/20240630063656_add_aliases_field_to_product_lookup.rb
530
533
  - db/migrate/20240630083042_add_agent_to_pickup_schedule.rb
534
+ - db/migrate/20240630122016_create_comee_core_additional_services.rb
531
535
  - lib/comee/core.rb
532
536
  - lib/comee/core/engine.rb
533
537
  - lib/comee/core/version.rb
534
538
  - lib/comee_core.rb
535
539
  - lib/tasks/comee_core_tasks.rake
536
540
  - spec/factories/comee/core/additional_items.rb
541
+ - spec/factories/comee/core/additional_services.rb
537
542
  - spec/factories/comee/core/agents.rb
538
543
  - spec/factories/comee/core/application_modules.rb
539
544
  - spec/factories/comee/core/back_order_items.rb