comee_core 0.3.6 → 0.3.7

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: 9cf7c91a847172c08d9e35c46340095ff403ffb61939a5a7b69f830fa2394228
4
+ data.tar.gz: 55174a1b2a8a304b3ee99995b98efdd52557889b5d57b3623e016df11a29e34a
5
5
  SHA512:
6
- metadata.gz: c14eda451d86694be060e733b8fdc3cf903872faf587b9c74349663bf0badb23ae6cb8dfc7103b8109ea5da3e457eb36b1b6a0b7cb4773697899d144ca0abed1
7
- data.tar.gz: ad1835d0bf82d0002b9f710b5f7439cb218abf4223cbbfa46229d1793e7f6f806107deb2a8334906ca7e4a5d2259d7c80497ea006f980d2d3c6475db9ecf5e2d
6
+ metadata.gz: b1b2f94a733c313e13ff4ad02c1a2189561d21beef7be6c9cf9089e5320950811b4ddaddf51e7c50e54eefd2918793b3b57b22d1978007df27fcbf8955fdea80
7
+ data.tar.gz: c6e916957bae4a9f6b29643c2f92e73d362e62b74a84610d0d2750b3e0465b3c8d1f4dba000d8d74d83d147fafc58a25dded8755eac92ba3e2b5139d75cd7c6c
@@ -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
@@ -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
@@ -9,6 +9,7 @@ module Comee
9
9
  belongs_to :fulfillment_center, optional: true
10
10
  belongs_to :client
11
11
  has_many :sales_order_items
12
+ has_many :additional_services
12
13
  has_many_attached :files
13
14
  has_one :customs_detail
14
15
 
@@ -27,12 +28,17 @@ module Comee
27
28
 
28
29
  def calculate_total_price
29
30
  sales_order_items = SalesOrderItem.where(sales_order_id: id)
30
- self.total_price = sales_order_items.sum(&:total_price)
31
+ additional_services = AdditionalService.where(sales_order_id: id)
32
+ self.total_price = sales_order_items.sum(&:total_price) + additional_services.sum(&:total_price)
31
33
  end
32
34
 
33
35
  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"
36
+ return unless client.tax_code == "Inland"
37
+
38
+ sales_order_items = SalesOrderItem.where(sales_order_id: id)
39
+ additional_services = AdditionalService.where(sales_order_id: id)
40
+ total_price = sales_order_items.sum(&:total_price) + additional_services.sum(&:total_price)
41
+ self.vat = (total_price * 0.19).round(2)
36
42
  end
37
43
 
38
44
  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
 
@@ -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.7".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
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.7
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