comee_core 0.3.6 → 0.3.8

Sign up to get free protection for your applications and to get access to all the features.
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