comee_core 0.1.52 → 0.1.53
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 +4 -4
- data/app/controllers/comee/core/customer_order_items_controller.rb +11 -1
- data/app/controllers/comee/core/quotation_request_items_controller.rb +1 -0
- data/app/controllers/comee/core/quotation_requests_controller.rb +10 -1
- data/app/models/comee/core/customer_order.rb +1 -1
- data/app/models/comee/core/customer_order_item.rb +1 -1
- data/app/models/comee/core/quotation_request.rb +1 -1
- data/app/serializers/comee/core/customer_order_item_serializer.rb +1 -1
- data/app/serializers/comee/core/quotation_request_item_serializer.rb +1 -1
- data/app/serializers/comee/core/quotation_request_serializer.rb +1 -1
- data/app/services/comee/core/quotation_request_service.rb +51 -1
- data/config/routes.rb +1 -0
- data/db/migrate/20230811083239_create_comee_core_customer_orders.rb +1 -1
- data/db/migrate/20230811102708_create_comee_core_customer_order_items.rb +1 -0
- data/db/migrate/20231121094339_create_comee_core_quotation_requests.rb +4 -0
- data/db/migrate/20231121132709_create_comee_core_quotation_request_items.rb +1 -0
- data/lib/comee/core/version.rb +1 -1
- data/spec/factories/comee/core/customer_order_items.rb +1 -0
- data/spec/factories/comee/core/quotation_request_items.rb +1 -0
- data/spec/factories/comee/core/quotation_requests.rb +4 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 738e68a65b4d7a96b3f0ea50a6e25da73e42d09f0ef888c49060a45ebc2fb39e
|
4
|
+
data.tar.gz: e42799a2bd3b0cfde406636e972ec258462df1df24dae8f4a051002eecc69294
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e680be5bdcf25fce5cd6fe5ee833c856fcf7eff59600b6cd8741a65d3713d36fd868bb6cac0bc25c2fe420c610ebce61617559b9da112ebdf214c818e5de407a
|
7
|
+
data.tar.gz: 343a4eff4586c0ea69d51960250a73766b710284c0f68724bbcb975f3b060080a288ca04e965dee8d7736d0e802af7fb3196f8f1ff841f494e9d5ec3cbd5fb40
|
@@ -27,7 +27,17 @@ module Comee
|
|
27
27
|
private
|
28
28
|
|
29
29
|
def model_params
|
30
|
-
params.require(:payload)
|
30
|
+
params.require(:payload)
|
31
|
+
.permit(
|
32
|
+
:customer_item_no,
|
33
|
+
:quantity,
|
34
|
+
:price,
|
35
|
+
:delivery_date,
|
36
|
+
:canceled,
|
37
|
+
:product_id,
|
38
|
+
:customer_order_id,
|
39
|
+
:unit_id
|
40
|
+
)
|
31
41
|
end
|
32
42
|
end
|
33
43
|
end
|
@@ -52,10 +52,19 @@ module Comee
|
|
52
52
|
render json: {success: false, error: e.message}
|
53
53
|
end
|
54
54
|
|
55
|
+
def convert
|
56
|
+
service = QuotationRequestService.new
|
57
|
+
order = service.convert_to_order(params[:id])
|
58
|
+
render json: {success: true, data: serialize(order)}
|
59
|
+
rescue StandardError => e
|
60
|
+
render json: {success: false, error: e.message}
|
61
|
+
end
|
62
|
+
|
55
63
|
private
|
56
64
|
|
57
65
|
def model_params
|
58
|
-
params.require(:payload)
|
66
|
+
params.require(:payload)
|
67
|
+
.permit(:reference_no, :order_number, :order_date, :delivery_address, :invoice_address, :status, :client_id)
|
59
68
|
end
|
60
69
|
|
61
70
|
def rfq_params
|
@@ -7,7 +7,7 @@ module Comee
|
|
7
7
|
|
8
8
|
enum :status, {draft: 0, submitted: 1, awaiting_confirmation: 2, accepted: 3, canceled: 4}
|
9
9
|
|
10
|
-
validates :order_number, :order_date, :
|
10
|
+
validates :order_number, :order_date, :delivery_address, :invoice_address, :status, presence: true
|
11
11
|
|
12
12
|
def self.ransackable_attributes(_auth_object = nil)
|
13
13
|
%w[client_id delivery_address invoice_address order_number status]
|
@@ -5,7 +5,7 @@ module Comee
|
|
5
5
|
belongs_to :product
|
6
6
|
belongs_to :unit
|
7
7
|
|
8
|
-
validates :quantity, :price, :delivery_date, presence: true
|
8
|
+
validates :customer_item_no, :quantity, :price, :delivery_date, presence: true
|
9
9
|
|
10
10
|
def self.ransackable_attributes(_auth_object = nil)
|
11
11
|
%w[customer_order_id product_id unit_id]
|
@@ -6,7 +6,7 @@ module Comee
|
|
6
6
|
belongs_to :client
|
7
7
|
has_many :quotation_request_items
|
8
8
|
|
9
|
-
enum :status, {draft: 0, submitted: 1, awaiting_confirmation: 2, confirmed: 3}
|
9
|
+
enum :status, {draft: 0, submitted: 1, awaiting_confirmation: 2, confirmed: 3, converted: 4}
|
10
10
|
|
11
11
|
validates :status, presence: true
|
12
12
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Comee
|
2
2
|
module Core
|
3
3
|
class CustomerOrderItemSerializer < ActiveModel::Serializer
|
4
|
-
attributes :id, :quantity, :price, :delivery_date, :canceled
|
4
|
+
attributes :id, :customer_item_no, :quantity, :price, :delivery_date, :canceled
|
5
5
|
belongs_to :product
|
6
6
|
belongs_to :customer_order
|
7
7
|
belongs_to :unit
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Comee
|
2
2
|
module Core
|
3
3
|
class QuotationRequestItemSerializer < ActiveModel::Serializer
|
4
|
-
attributes :id, :price, :discount, :valid_from, :valid_to
|
4
|
+
attributes :id, :customer_item_no, :price, :discount, :valid_from, :valid_to
|
5
5
|
belongs_to :product
|
6
6
|
belongs_to :quotation_request
|
7
7
|
belongs_to :unit
|
@@ -4,7 +4,14 @@ module Comee
|
|
4
4
|
def create_request_with_items(params)
|
5
5
|
request = nil
|
6
6
|
QuotationRequest.transaction do
|
7
|
-
request = QuotationRequest.create!(
|
7
|
+
request = QuotationRequest.create!(
|
8
|
+
client_id: params[:client_id],
|
9
|
+
status: QuotationRequest.statuses[:draft],
|
10
|
+
order_number: params[:order_number],
|
11
|
+
order_date: params[:order_date],
|
12
|
+
delivery_address: params[:delivery_address],
|
13
|
+
invoice_address: params[:invoice_address]
|
14
|
+
)
|
8
15
|
items = params[:items]
|
9
16
|
items.each do |item|
|
10
17
|
item[:price] = 0
|
@@ -80,6 +87,49 @@ module Comee
|
|
80
87
|
end
|
81
88
|
rfq
|
82
89
|
end
|
90
|
+
|
91
|
+
def convert_to_order(id)
|
92
|
+
rfq = QuotationRequest.find(id)
|
93
|
+
if QuotationRequest.statuses[rfq.status] != QuotationRequest.statuses[:confirmed]
|
94
|
+
raise(StandardError, "RFQ should be in confirmed state for conversion to order.")
|
95
|
+
end
|
96
|
+
|
97
|
+
if rfq.quotation_request_items.any? { |item| item.customer_item_no.nil? }
|
98
|
+
raise(StandardError, "All RFQ items should have customer item number set.")
|
99
|
+
end
|
100
|
+
|
101
|
+
order = nil
|
102
|
+
CustomerOrder.transaction do
|
103
|
+
order = CustomerOrder.create!(
|
104
|
+
order_number: rfq.order_number,
|
105
|
+
order_date: Date.current,
|
106
|
+
client_id: rfq.client_id,
|
107
|
+
order_terms: "",
|
108
|
+
delivery_address: rfq.delivery_address,
|
109
|
+
invoice_address: rfq.invoice_address,
|
110
|
+
status: CustomerOrder.statuses[:draft]
|
111
|
+
)
|
112
|
+
|
113
|
+
items = rfq.quotation_request_items.each_with_object([]) do |item, res|
|
114
|
+
res << {
|
115
|
+
customer_order_id: order.id,
|
116
|
+
product_id: item.product_id,
|
117
|
+
unit_id: item.unit_id,
|
118
|
+
customer_item_no: item.customer_item_no,
|
119
|
+
quantity: item.quantity,
|
120
|
+
price: item.price,
|
121
|
+
delivery_date: item.expected_delivery_date,
|
122
|
+
canceled: false
|
123
|
+
}
|
124
|
+
end
|
125
|
+
|
126
|
+
CustomerOrderItem.insert_all!(items)
|
127
|
+
rfq.status = QuotationRequest.statuses[:converted]
|
128
|
+
rfq.save!
|
129
|
+
end
|
130
|
+
|
131
|
+
order
|
132
|
+
end
|
83
133
|
end
|
84
134
|
end
|
85
135
|
end
|
data/config/routes.rb
CHANGED
@@ -7,7 +7,7 @@ class CreateComeeCoreCustomerOrders < ActiveRecord::Migration[7.1]
|
|
7
7
|
null: false,
|
8
8
|
index: {name: "client_on_cccuo_indx"},
|
9
9
|
foreign_key: {to_table: :comee_core_clients}
|
10
|
-
t.string :order_terms
|
10
|
+
t.string :order_terms
|
11
11
|
t.string :delivery_address, null: false
|
12
12
|
t.string :invoice_address, null: false
|
13
13
|
t.integer :status, null: false, default: 0
|
@@ -13,6 +13,7 @@ class CreateComeeCoreCustomerOrderItems < ActiveRecord::Migration[7.1]
|
|
13
13
|
null: false,
|
14
14
|
index: {name: "unit_on_cccuoi_indx"},
|
15
15
|
foreign_key: {to_table: :comee_core_units}
|
16
|
+
t.string :customer_item_no, null: false
|
16
17
|
t.float :quantity, null: false, default: 0
|
17
18
|
t.float :price, null: false, default: 0
|
18
19
|
t.date :delivery_date, null: false
|
@@ -2,6 +2,10 @@ class CreateComeeCoreQuotationRequests < ActiveRecord::Migration[7.1]
|
|
2
2
|
def change
|
3
3
|
create_table :comee_core_quotation_requests do |t|
|
4
4
|
t.string :reference_no, null: false
|
5
|
+
t.string :order_number, null: false
|
6
|
+
t.date :order_date, null: false
|
7
|
+
t.string :delivery_address, null: false
|
8
|
+
t.string :invoice_address, null: false
|
5
9
|
t.references :client,
|
6
10
|
null: false,
|
7
11
|
index: {name: "client_on_ccrfq_indx"},
|
@@ -9,6 +9,7 @@ class CreateComeeCoreQuotationRequestItems < ActiveRecord::Migration[7.1]
|
|
9
9
|
null: false,
|
10
10
|
index: {name: "rfq_on_ccrfqi_indx"},
|
11
11
|
foreign_key: {to_table: :comee_core_quotation_requests}
|
12
|
+
t.string :customer_item_no
|
12
13
|
t.float :quantity, null: false
|
13
14
|
t.float :price, null: false, default: 0
|
14
15
|
t.float :discount, null: false, default: 0
|
data/lib/comee/core/version.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
FactoryBot.define do
|
2
2
|
factory :quotation_request, class: "Comee::Core::QuotationRequest" do
|
3
3
|
reference_no { "RFQ-#{client.code}-#{DateTime.now.to_i}" }
|
4
|
+
order_number { Faker::Alphanumeric.alpha(number: 10) }
|
5
|
+
order_date { Date.current }
|
6
|
+
delivery_address { Faker::Address.street_address }
|
7
|
+
invoice_address { Faker::Address.street_address }
|
4
8
|
client
|
5
9
|
status { 0 }
|
6
10
|
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.1.
|
4
|
+
version: 0.1.53
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henock L.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-12-
|
11
|
+
date: 2023-12-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_model_serializers
|