comee_core 0.3.6 → 0.3.7

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: 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