comee_core 0.1.41 → 0.1.42

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: d5af8bf8f2c1f9cf058e249237279cb6ae6019d0189c549c8bd5c6f421d4774a
4
- data.tar.gz: 711689393088d435d720d49497d9e52e5db34cf15e4889fd4a020deb180fa0ae
3
+ metadata.gz: 8f2d74070213df1fea936e46a543155499b3742ebfcc0839ea70a2b0c50fdcce
4
+ data.tar.gz: f13c1b22e30336eb7f29dad368c980353a7df4beb50dcd31511c39dff07623bb
5
5
  SHA512:
6
- metadata.gz: ce2b456011d92074efffb23b2a1ba2df3f6818bd8d487b888fa5c4a9353ae4cea90af41a7b4fb0e4567070b1583c1f4a11eb308bce465a01fd8666d05eb574b4
7
- data.tar.gz: ba7e824700d03d946fa3a1e30d4d0189dd0ac0b96a792482d10c611c70823eb345dfd75d8114e3905ffe48435cb231ba140cccbc180f524f92498af8ac2b84f9
6
+ metadata.gz: fe2db09b7f98937a11d3ac76e3af3cada77174df23b576fe3f533fb86d9b17c57d7ac832ce66a226c7dca3e71590fad0a36191f0a537e9605b79d9276ef8d5bb
7
+ data.tar.gz: c47dbd31bc6263ce685317721cc63e42116853299e967bfee5c7b8c7354bcdfc76357c4efe3efbbe3bfc4d5167dda292be953b8264b5770011ee0673c73b8a60
@@ -2,21 +2,7 @@ module Comee
2
2
  module Core
3
3
  class SalesOrdersController < ApplicationController
4
4
  include Common
5
- before_action :set_object, only: %i[show update confirm cancel]
6
-
7
- def confirm
8
- @obj.confirm
9
- render json: {success: true, data: serialize(@obj.reload)}
10
- rescue StandardError => e
11
- render json: {success: false, error: e.message}
12
- end
13
-
14
- def cancel
15
- @obj.cancel
16
- render json: {success: true, data: serialize(@obj.reload)}
17
- rescue StandardError => e
18
- render json: {success: false, error: e.message}
19
- end
5
+ before_action :set_service, only: %i[submit confirm cancel]
20
6
 
21
7
  def index
22
8
  super do
@@ -29,6 +15,27 @@ module Comee
29
15
  render json: {success: true, data: serialize(@sales_order)}
30
16
  end
31
17
 
18
+ def submit
19
+ order = @service.submit(params[:id])
20
+ render json: {success: true, data: serialize(order)}
21
+ rescue StandardError => e
22
+ render json: {success: false, error: e.message}
23
+ end
24
+
25
+ def confirm
26
+ order = @service.confirm(params[:id])
27
+ render json: {success: true, data: serialize(order)}
28
+ rescue StandardError => e
29
+ render json: {success: false, error: e.message}
30
+ end
31
+
32
+ def cancel
33
+ order = @service.cancel(params[:id])
34
+ render json: {success: true, data: serialize(order)}
35
+ rescue StandardError => e
36
+ render json: {success: false, error: e.message}
37
+ end
38
+
32
39
  private
33
40
 
34
41
  def model_params
@@ -40,6 +47,10 @@ module Comee
40
47
  params.permit(payload: [:supplier_id, :order_number, :order_date, :delivery_date, :delivery_address, :invoice_address,
41
48
  back_order_items: %i[product_id requested_quantity requested_price supplier_quantity delivery_date]])
42
49
  end
50
+
51
+ def set_service
52
+ @service = SalesOrderService.new
53
+ end
43
54
  end
44
55
  end
45
56
  end
@@ -6,7 +6,7 @@ module Comee
6
6
  belongs_to :customer_order
7
7
  has_many :sales_order_items
8
8
 
9
- enum :status, {draft: 0, validated: 1, authorized: 2, approved: 3, cancelled: 4, confirmed: 5, finalized: 6}
9
+ enum :status, {draft: 0, submitted: 1, confirmed: 2, canceled: 3}
10
10
 
11
11
  validates :order_number, presence: true, uniqueness: true
12
12
  validates :status, presence: true
@@ -25,20 +25,6 @@ module Comee
25
25
  self.total_price = total_price
26
26
  end
27
27
 
28
- def confirm
29
- raise(StandardError, "Sales order is already confirmed.") if SalesOrder.statuses[status] == SalesOrder.statuses[:confirmed]
30
-
31
- self.status = SalesOrder.statuses[:confirmed]
32
- save
33
- end
34
-
35
- def cancel
36
- raise(StandardError, "Sales order is already cancelled.") if SalesOrder.statuses[status] == SalesOrder.statuses[:cancelled]
37
-
38
- self.status = SalesOrder.statuses[:cancelled]
39
- save
40
- end
41
-
42
28
  def self.ransackable_attributes(_auth_object = nil)
43
29
  %w[
44
30
  order_number
@@ -136,6 +136,48 @@ module Comee
136
136
  rescue StandardError => e
137
137
  {success: false, error: e.message}
138
138
  end
139
+
140
+ def submit(id)
141
+ order = SalesOrder.find_by(id: id)
142
+ raise(StandardError, "Sales order with id `#{id}` not found.") unless order
143
+
144
+ unless SalesOrder.statuses[order.status] == SalesOrder.statuses[:draft]
145
+ raise(StandardError, "Sales order should be in draft state.")
146
+ end
147
+
148
+ raise(StandardError, "Sales order should have at least one item.") unless order.sales_order_items.count.positive?
149
+
150
+ raise(StandardError, "All items are canceled for sales order.") if order.sales_order_items.all?(&:canceled?)
151
+
152
+ order.update!(status: SalesOrder.statuses[:submitted])
153
+ order
154
+ end
155
+
156
+ def confirm(id)
157
+ order = SalesOrder.find_by(id: id)
158
+ raise(StandardError, "Sales order with id `#{id}` not found.") unless order
159
+
160
+ unless SalesOrder.statuses[order.status] == SalesOrder.statuses[:submitted]
161
+ raise(StandardError, "Sales order should be in submitted state.")
162
+ end
163
+
164
+ raise(StandardError, "Sales order should have at least one item.") unless order.sales_order_items.count.positive?
165
+
166
+ raise(StandardError, "All items are canceled for sales order.") if order.sales_order_items.all?(&:canceled?)
167
+
168
+ order.update!(status: SalesOrder.statuses[:confirmed])
169
+ order
170
+ end
171
+
172
+ def cancel(id)
173
+ order = SalesOrder.find_by(id: id)
174
+ raise(StandardError, "Sales order with id `#{id}` not found.") unless order
175
+
176
+ raise(StandardError, "Sales order is already canceled.") if SalesOrder.statuses[order.status] == SalesOrder.statuses[:canceled]
177
+
178
+ order.update!(status: SalesOrder.statuses[:canceled])
179
+ order
180
+ end
139
181
  end
140
182
  end
141
183
  end
data/config/routes.rb CHANGED
@@ -76,7 +76,7 @@ Comee::Core::Engine.routes.draw do
76
76
  end
77
77
  member do
78
78
  get "items", controller: :sales_order_items, action: :index
79
- get "/sales_order/filter/", controller: :sales_orders, action: :filter
79
+ post "submit"
80
80
  post "confirm"
81
81
  post "cancel"
82
82
  end
@@ -17,6 +17,7 @@ class CreateComeeCoreSalesOrderItems < ActiveRecord::Migration[7.0]
17
17
  t.float :quantity_delivered, null: false, default: 0
18
18
  t.float :price, null: false
19
19
  t.date :delivery_date, null: false
20
+ t.boolean :canceled, default: false
20
21
  t.date :handover_date
21
22
  t.string :eb_number
22
23
 
@@ -1,5 +1,5 @@
1
1
  module Comee
2
2
  module Core
3
- VERSION = "0.1.41".freeze
3
+ VERSION = "0.1.42".freeze
4
4
  end
5
5
  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.41
4
+ version: 0.1.42
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-11-29 00:00:00.000000000 Z
11
+ date: 2023-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_model_serializers