comee_core 0.2.96 → 0.2.97
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/goods_received_notes_controller.rb +22 -0
- data/app/controllers/comee/core/stock_transfer_request_items_controller.rb +18 -0
- data/app/controllers/comee/core/stock_transfer_requests_controller.rb +19 -0
- data/app/controllers/comee/core/store_items_controller.rb +18 -0
- data/app/controllers/comee/core/stores_controller.rb +18 -0
- data/app/models/comee/core/goods_issued_item.rb +14 -0
- data/app/models/comee/core/goods_issued_note.rb +11 -0
- data/app/models/comee/core/goods_received_note.rb +28 -0
- data/app/models/comee/core/received_item.rb +22 -0
- data/app/models/comee/core/reorder_report.rb +27 -0
- data/app/models/comee/core/reorder_report_item.rb +18 -0
- data/app/models/comee/core/stock_transfer_request.rb +52 -0
- data/app/models/comee/core/stock_transfer_request_item.rb +22 -0
- data/app/models/comee/core/store.rb +14 -0
- data/app/models/comee/core/store_item.rb +18 -0
- data/app/serializers/comee/core/goods_received_note_serializer.rb +8 -0
- data/app/serializers/comee/core/stock_transfer_request_item_serializer.rb +9 -0
- data/app/serializers/comee/core/stock_transfer_request_serializer.rb +12 -0
- data/app/serializers/comee/core/store_item_serializer.rb +9 -0
- data/app/serializers/comee/core/store_serializer.rb +8 -0
- data/app/services/comee/core/goods_received_note_service.rb +69 -0
- data/config/routes.rb +30 -0
- data/db/migrate/20240401115953_create_comee_core_stores.rb +16 -0
- data/db/migrate/20240401123233_create_comee_core_store_items.rb +18 -0
- data/db/migrate/20240401124757_create_comee_core_stock_transfer_requests.rb +29 -0
- data/db/migrate/20240401131549_create_comee_core_stock_transfer_request_items.rb +17 -0
- data/db/migrate/20240401192505_create_comee_core_reorder_reports.rb +14 -0
- data/db/migrate/20240401193503_create_comee_core_reorder_report_items.rb +17 -0
- data/db/migrate/20240406120401_create_comee_core_goods_received_notes.rb +17 -0
- data/db/migrate/20240406124821_create_comee_core_received_items.rb +21 -0
- data/db/migrate/20240406142113_create_comee_core_goods_issued_notes.rb +14 -0
- data/db/migrate/20240406162711_create_comee_core_goods_issued_items.rb +17 -0
- data/lib/comee/core/version.rb +1 -1
- data/spec/factories/comee/core/goods_issued_items.rb +7 -0
- data/spec/factories/comee/core/goods_issued_notes.rb +7 -0
- data/spec/factories/comee/core/goods_received_notes.rb +11 -0
- data/spec/factories/comee/core/received_items.rb +10 -0
- data/spec/factories/comee/core/reorder_report_items.rb +7 -0
- data/spec/factories/comee/core/reorder_reports.rb +7 -0
- data/spec/factories/comee/core/stock_transfer_request_items.rb +7 -0
- data/spec/factories/comee/core/stock_transfer_requests.rb +13 -0
- data/spec/factories/comee/core/store_items.rb +8 -0
- data/spec/factories/comee/core/stores.rb +9 -0
- metadata +43 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c8e51d4338bca0293010bb351722f44c8f2f653eb8afe8aca1b9abf152b2f98
|
4
|
+
data.tar.gz: b11f9d292f843c1798812e9f8fdf9447f13c34b6543f1f4c2d4d30e7bff413bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04d1973d5085f0961d4c47f569eeebdb7b7aea89f1c6b65c926095b027f9da10251bd77fbef14883bf8f681a25e12de5bf1938d75f8e22c64af6999d1a47ae1c
|
7
|
+
data.tar.gz: b211b69a816ece7e4354e9e81f643683d9f3b491041b404838e89d2f5730ac8d3744f07edc3c70f6915ec6cb347da77e2a4e58dc0c2313d0e19e66cc6109fda2
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class GoodsReceivedNotesController < ApplicationController
|
4
|
+
include Common
|
5
|
+
|
6
|
+
def generate
|
7
|
+
service = GoodsReceivedNoteService.new
|
8
|
+
grn = service.generate_received_note(params[:id])
|
9
|
+
render_content(grn)
|
10
|
+
rescue StandardError => e
|
11
|
+
render json: {success: false, error: e.message}
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def model_params
|
17
|
+
params.require(:payload).permit(:grn_number, :date_of_receipt, :total_quantity, :total_amount, :received_condition, :comments,
|
18
|
+
:purchase_order_id)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class StockTransferRequestItemsController < ApplicationController
|
4
|
+
include Common
|
5
|
+
|
6
|
+
def filter
|
7
|
+
data = StockTransferRequestItem.ransack(params[:q]).result
|
8
|
+
render_content(data)
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def model_params
|
14
|
+
params.require(:payload).permit(:quantity, :sales_order_item_id, :stock_transfer_request_id)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class StockTransferRequestsController < ApplicationController
|
4
|
+
include Common
|
5
|
+
|
6
|
+
def filter
|
7
|
+
data = StockTransferRequest.ransack(params[:q]).result
|
8
|
+
render_content(data)
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def model_params
|
14
|
+
params.require(:payload).permit(:reference_number, :reference_date, :due_date, :remark, :status, :from_id, :to_id,
|
15
|
+
:initiated_by_id, :sales_order_id)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class StoreItemsController < ApplicationController
|
4
|
+
include Common
|
5
|
+
|
6
|
+
def filter
|
7
|
+
data = StoreItem.ransack(params[:q]).result
|
8
|
+
render_content(data)
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def model_params
|
14
|
+
params.require(:payload).permit(:quantity, :reorder_threshold, :product_id, :store_id)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class StoresController < ApplicationController
|
4
|
+
include Common
|
5
|
+
|
6
|
+
def filter
|
7
|
+
data = Store.ransack(params[:q]).result
|
8
|
+
render_content(data)
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def model_params
|
14
|
+
params.require(:payload).permit(:code, :name, :address, :email, :warehouse_manager_id)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class GoodsIssuedItem < ApplicationRecord
|
4
|
+
belongs_to :stock_transfer_request_item
|
5
|
+
belongs_to :goods_issued_note
|
6
|
+
|
7
|
+
def product
|
8
|
+
stock_transfer_request_item.sales_order_item.product
|
9
|
+
end
|
10
|
+
|
11
|
+
validates :quantity, presence: true
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class GoodsIssuedNote < ApplicationRecord
|
4
|
+
belongs_to :stock_transfer_request
|
5
|
+
has_many :goods_issued_items
|
6
|
+
|
7
|
+
validates :gin_number, :stock_transfer_request, uniqueness: true
|
8
|
+
validates :date_issued, :gin_number, presence: true
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class GoodsReceivedNote < ApplicationRecord
|
4
|
+
before_create :set_grn_number
|
5
|
+
belongs_to :purchase_order
|
6
|
+
has_many :received_items
|
7
|
+
|
8
|
+
validates :grn_number, uniqueness: true
|
9
|
+
validates :date_of_receipt, presence: true
|
10
|
+
validates :total_quantity, :total_amount, presence: true, numericality: {greater_than_or_equal_to: 0}
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def set_grn_number
|
15
|
+
self.grn_number = generate_grn_number
|
16
|
+
end
|
17
|
+
|
18
|
+
def generate_grn_number
|
19
|
+
loop do
|
20
|
+
number = SecureRandom.random_number(10000000)
|
21
|
+
grn_number = "GRN-#{number}"
|
22
|
+
|
23
|
+
break grn_number unless GoodsReceivedNote.where(grn_number: grn_number).exists?
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class ReceivedItem < ApplicationRecord
|
4
|
+
belongs_to :goods_received_note
|
5
|
+
belongs_to :purchase_order_item
|
6
|
+
before_save :update_total_price
|
7
|
+
validate :check_quantity_received
|
8
|
+
|
9
|
+
validates :quantity_ordered, :quantity_received, :unit_price, :total_price, presence: true,
|
10
|
+
numericality: {greater_than_or_equal_to: 0}
|
11
|
+
|
12
|
+
def update_total_price
|
13
|
+
self.total_price ||= 0
|
14
|
+
self.total_price = unit_price * quantity_received
|
15
|
+
end
|
16
|
+
|
17
|
+
def check_quantity_received
|
18
|
+
errors.add(:quantity_received, "can't be greater than quantity ordered") if quantity_received.to_i > quantity_ordered.to_i
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class ReorderReport < ApplicationRecord
|
4
|
+
before_create :set_reference_number
|
5
|
+
belongs_to :store
|
6
|
+
has_many :reorder_report_items
|
7
|
+
|
8
|
+
validates :report_date, presence: true
|
9
|
+
validates :reference_number, uniqueness: true
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def set_reference_number
|
14
|
+
self.reference_number = generate_reference_number
|
15
|
+
end
|
16
|
+
|
17
|
+
def generate_reference_number
|
18
|
+
loop do
|
19
|
+
number = SecureRandom.random_number(10000000)
|
20
|
+
reference_number = "RR-#{number}"
|
21
|
+
|
22
|
+
break reference_number unless ReorderReport.where(reference_number: reference_number).exists?
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class ReorderReportItem < ApplicationRecord
|
4
|
+
belongs_to :reorder_report
|
5
|
+
belongs_to :product
|
6
|
+
|
7
|
+
validates :quantity, presence: true
|
8
|
+
|
9
|
+
def self.ransackable_attributes(_auth_object = nil)
|
10
|
+
%w[created_at id id_value product_id quantity reorder_report_id updated_at]
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.ransackable_associations
|
14
|
+
%w[reorder_report product]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class StockTransferRequest < ApplicationRecord
|
4
|
+
before_create :set_reference_number
|
5
|
+
|
6
|
+
belongs_to :from, class_name: "Comee::Core::Store", optional: true
|
7
|
+
belongs_to :to, class_name: "Comee::Core::FulfillmentCenter", optional: true
|
8
|
+
belongs_to :initiated_by, class_name: "Comee::Core::User", optional: true
|
9
|
+
belongs_to :sales_order
|
10
|
+
has_many :stock_transfer_request_items
|
11
|
+
|
12
|
+
validates :reference_number, uniqueness: true
|
13
|
+
validates :reference_number, :reference_date, :due_date, :status, presence: true
|
14
|
+
validate :validate_due_date_is_after_reference_date, if: -> { due_date.present? && reference_date.present? }
|
15
|
+
enum status: {
|
16
|
+
draft: 0,
|
17
|
+
issued: 1,
|
18
|
+
accepted: 2,
|
19
|
+
transferred: 3
|
20
|
+
}
|
21
|
+
def validate_due_date_is_after_reference_date
|
22
|
+
return if due_date > reference_date
|
23
|
+
|
24
|
+
errors.add(:due_date, "must be after reference date")
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.ransackable_attributes(_auth_object = nil)
|
28
|
+
%w[created_at due_date from_id id id_value initiated_by_id reference_date reference_number remark
|
29
|
+
sales_order_id status to_id updated_at]
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.ransackable_associations(_auth_object = nil)
|
33
|
+
%w[from initiated_by sales_order to]
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def set_reference_number
|
39
|
+
self.reference_number = generate_reference_number
|
40
|
+
end
|
41
|
+
|
42
|
+
def generate_reference_number
|
43
|
+
loop do
|
44
|
+
number = SecureRandom.random_number(10000000)
|
45
|
+
reference_number = "STR-#{number}"
|
46
|
+
|
47
|
+
break reference_number unless StockTransferRequest.where(reference_number: reference_number).exists?
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class StockTransferRequestItem < ApplicationRecord
|
4
|
+
belongs_to :sales_order_item
|
5
|
+
belongs_to :stock_transfer_request
|
6
|
+
|
7
|
+
validates :quantity, presence: true
|
8
|
+
|
9
|
+
def product
|
10
|
+
sales_order_item.product
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.ransackable_attributes(_auth_object = nil)
|
14
|
+
%w[created_at id id_value quantity sales_order_item_id stock_transfer_request_id updated_at]
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.ransackable_associations(_auth_object = nil)
|
18
|
+
%w[sales_order_item stock_transfer_request]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class Store < ApplicationRecord
|
4
|
+
belongs_to :warehouse_manager, class_name: "Comee::Core::User", optional: true
|
5
|
+
|
6
|
+
validates :name, :address, :email, :code, presence: true
|
7
|
+
validates :email, format: {with: URI::MailTo::EMAIL_REGEXP}
|
8
|
+
|
9
|
+
def self.ransackable_attributes(_auth_object = nil)
|
10
|
+
%w[address code created_at email id id_value name updated_at]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class StoreItem < ApplicationRecord
|
4
|
+
belongs_to :product
|
5
|
+
belongs_to :store
|
6
|
+
|
7
|
+
validates :quantity, :reorder_threshold, presence: true
|
8
|
+
|
9
|
+
def self.ransackable_attributes(_auth_object = nil)
|
10
|
+
%w[created_at id id_value product_id quantity reorder_threshold store_id updated_at]
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.ransackable_associations(_auth_object = nil)
|
14
|
+
%w[product store]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class StockTransferRequestSerializer < ActiveModel::Serializer
|
4
|
+
attributes :id, :reference_number, :reference_date, :due_date, :remark, :status
|
5
|
+
belongs_to :from
|
6
|
+
belongs_to :to
|
7
|
+
belongs_to :initiated_by
|
8
|
+
belongs_to :sales_order
|
9
|
+
has_many :stock_transfer_request_items
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class GoodsReceivedNoteService
|
4
|
+
def generate_received_note(id)
|
5
|
+
goods_received_note = nil
|
6
|
+
|
7
|
+
begin
|
8
|
+
purchase_order = PurchaseOrder.find(id)
|
9
|
+
rescue ActiveRecord::RecordNotFound
|
10
|
+
raise StandardError, "Purchase Order does not exist."
|
11
|
+
end
|
12
|
+
|
13
|
+
if GoodsReceivedNote.exists?(purchase_order: purchase_order)
|
14
|
+
raise StandardError, "Goods Received Note already exists for this purchase order"
|
15
|
+
end
|
16
|
+
|
17
|
+
GoodsReceivedNote.transaction do
|
18
|
+
purchase_order_items = PurchaseOrderItem.where(purchase_order_id: purchase_order.id)
|
19
|
+
|
20
|
+
goods_received_note = GoodsReceivedNote.create!(
|
21
|
+
date_of_receipt: Date.current,
|
22
|
+
total_quantity: 0, # set initial quantity
|
23
|
+
total_amount: 0, # set initial amount
|
24
|
+
received_condition: "",
|
25
|
+
comments: "",
|
26
|
+
purchase_order_id: purchase_order.id
|
27
|
+
)
|
28
|
+
|
29
|
+
begin
|
30
|
+
ReceivedItem.insert_all(
|
31
|
+
purchase_order_items.map do |poi|
|
32
|
+
{
|
33
|
+
purchase_order_item_id: poi.id,
|
34
|
+
goods_received_note_id: goods_received_note.id,
|
35
|
+
unit_price: poi.price,
|
36
|
+
total_price: poi.total_price,
|
37
|
+
quantity_ordered: poi.quantity,
|
38
|
+
quantity_received: 0
|
39
|
+
}
|
40
|
+
end
|
41
|
+
)
|
42
|
+
rescue StandardError => e
|
43
|
+
raise StandardError, "Failed to generate received note items: #{e.message}"
|
44
|
+
end
|
45
|
+
total_quantity = calculate_grn_total_quantity(goods_received_note)
|
46
|
+
total_price = calculate_grn_total_price(goods_received_note)
|
47
|
+
goods_received_note.update!(total_amount: total_price, total_quantity: total_quantity)
|
48
|
+
end
|
49
|
+
goods_received_note
|
50
|
+
rescue StandardError
|
51
|
+
raise
|
52
|
+
end
|
53
|
+
|
54
|
+
def check_grn_existence(purchase_order)
|
55
|
+
return unless GoodsReceivedNote.exists?(purchase_order_id: purchase_order.id)
|
56
|
+
|
57
|
+
raise(StandardError, "Goods Received Note already exists for this purchase order")
|
58
|
+
end
|
59
|
+
|
60
|
+
def calculate_grn_total_quantity(goods_received_note)
|
61
|
+
goods_received_note.received_items.sum(:quantity_received)
|
62
|
+
end
|
63
|
+
|
64
|
+
def calculate_grn_total_price(goods_received_note)
|
65
|
+
goods_received_note.received_items.sum(:total_price)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/config/routes.rb
CHANGED
@@ -175,4 +175,34 @@ Comee::Core::Engine.routes.draw do
|
|
175
175
|
resources :application_modules
|
176
176
|
|
177
177
|
resources :user_application_roles
|
178
|
+
|
179
|
+
resources :stores do
|
180
|
+
collection do
|
181
|
+
post "filter"
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
resources :store_items do
|
186
|
+
collection do
|
187
|
+
post "filter"
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
resources :stock_transfer_requests do
|
192
|
+
collection do
|
193
|
+
post "filter"
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
resources :stock_transfer_request_items do
|
198
|
+
collection do
|
199
|
+
post "filter"
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
resources :goods_received_notes do
|
204
|
+
member do
|
205
|
+
post "generate"
|
206
|
+
end
|
207
|
+
end
|
178
208
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class CreateComeeCoreStores < ActiveRecord::Migration[7.1]
|
2
|
+
def change
|
3
|
+
create_table :comee_core_stores do |t|
|
4
|
+
t.string :code, null: false
|
5
|
+
t.string :name, null: false
|
6
|
+
t.string :address, null: false
|
7
|
+
t.string :email, null: false
|
8
|
+
t.references :warehouse_manager,
|
9
|
+
null: false,
|
10
|
+
index: {name: "wm_on_ccstr_indx"},
|
11
|
+
foreign_key: {to_table: :comee_core_users}
|
12
|
+
|
13
|
+
t.timestamps
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class CreateComeeCoreStoreItems < ActiveRecord::Migration[7.1]
|
2
|
+
def change
|
3
|
+
create_table :comee_core_store_items do |t|
|
4
|
+
t.float :quantity, null: false
|
5
|
+
t.float :reorder_threshold, null: false, default: 10
|
6
|
+
t.references :product,
|
7
|
+
null: false,
|
8
|
+
index: {name: "product_on_ccsi_indx"},
|
9
|
+
foreign_key: {to_table: :comee_core_products}
|
10
|
+
t.references :store,
|
11
|
+
null: false,
|
12
|
+
index: {name: "store_on_ccsi_indx"},
|
13
|
+
foreign_key: {to_table: :comee_core_stores}
|
14
|
+
|
15
|
+
t.timestamps
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class CreateComeeCoreStockTransferRequests < ActiveRecord::Migration[7.1]
|
2
|
+
def change
|
3
|
+
create_table :comee_core_stock_transfer_requests do |t|
|
4
|
+
t.string :reference_number, null: false
|
5
|
+
t.date :reference_date, null: false, default: Date.current
|
6
|
+
t.date :due_date, null: false
|
7
|
+
t.string :remark
|
8
|
+
t.references :from,
|
9
|
+
null: false,
|
10
|
+
index: {name: "from_on_ccstr_indx"},
|
11
|
+
foreign_key: {to_table: :comee_core_stores}
|
12
|
+
t.references :to,
|
13
|
+
null: false,
|
14
|
+
index: {name: "to_on_ccstr_indx"},
|
15
|
+
foreign_key: {to_table: :comee_core_fulfillment_centers}
|
16
|
+
t.integer :status, null: false, default: 0
|
17
|
+
t.references :initiated_by,
|
18
|
+
null: false,
|
19
|
+
index: {name: "initiated_by_on_ccstr_indx"},
|
20
|
+
foreign_key: {to_table: :comee_core_users}
|
21
|
+
t.references :sales_order,
|
22
|
+
null: false,
|
23
|
+
index: {name: "so_on_ccstr_indx"},
|
24
|
+
foreign_key: {to_table: :comee_core_sales_orders}
|
25
|
+
|
26
|
+
t.timestamps
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class CreateComeeCoreStockTransferRequestItems < ActiveRecord::Migration[7.1]
|
2
|
+
def change
|
3
|
+
create_table :comee_core_stock_transfer_request_items do |t|
|
4
|
+
t.float :quantity, null: false
|
5
|
+
t.references :sales_order_item,
|
6
|
+
null: false,
|
7
|
+
index: {name: "soi_on_ccsri_indx"},
|
8
|
+
foreign_key: {to_table: :comee_core_sales_order_items}
|
9
|
+
t.references :stock_transfer_request,
|
10
|
+
null: false,
|
11
|
+
index: {name: "sri_on_ccsri_indx"},
|
12
|
+
foreign_key: {to_table: :comee_core_stock_transfer_requests}
|
13
|
+
|
14
|
+
t.timestamps
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class CreateComeeCoreReorderReports < ActiveRecord::Migration[7.1]
|
2
|
+
def change
|
3
|
+
create_table :comee_core_reorder_reports do |t|
|
4
|
+
t.string :reference_number
|
5
|
+
t.date :report_date, null: false, default: Date.current
|
6
|
+
t.references :store,
|
7
|
+
null: false,
|
8
|
+
index: {name: "store_on_ccrr_index"},
|
9
|
+
foreign_key: {to_table: :comee_core_stores}
|
10
|
+
|
11
|
+
t.timestamps
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class CreateComeeCoreReorderReportItems < ActiveRecord::Migration[7.1]
|
2
|
+
def change
|
3
|
+
create_table :comee_core_reorder_report_items do |t|
|
4
|
+
t.float :quantity, null: false
|
5
|
+
t.references :reorder_report,
|
6
|
+
null: false,
|
7
|
+
index: {name: "reorder_report_on_ccrri_index"},
|
8
|
+
foreign_key: {to_table: :comee_core_reorder_reports}
|
9
|
+
t.references :product,
|
10
|
+
null: false,
|
11
|
+
index: {name: "product_on_ccrri_index"},
|
12
|
+
foreign_key: {to_table: :comee_core_products}
|
13
|
+
|
14
|
+
t.timestamps
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class CreateComeeCoreGoodsReceivedNotes < ActiveRecord::Migration[7.1]
|
2
|
+
def change
|
3
|
+
create_table :comee_core_goods_received_notes do |t|
|
4
|
+
t.string :grn_number
|
5
|
+
t.string :date_of_receipt
|
6
|
+
t.float :total_quantity, null: false
|
7
|
+
t.float :total_amount, null: false
|
8
|
+
t.string :received_condition
|
9
|
+
t.string :comments
|
10
|
+
t.references :purchase_order,
|
11
|
+
null: false,
|
12
|
+
index: {name: "po_on_ccgrn_indx"},
|
13
|
+
foreign_key: {to_table: :comee_core_purchase_orders}
|
14
|
+
t.timestamps
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class CreateComeeCoreReceivedItems < ActiveRecord::Migration[7.1]
|
2
|
+
def change
|
3
|
+
create_table :comee_core_received_items do |t|
|
4
|
+
t.float :quantity_ordered, null: false
|
5
|
+
t.float :quantity_received, null: false
|
6
|
+
t.float :unit_price, null: false
|
7
|
+
t.float :total_price, null: false
|
8
|
+
t.references :goods_received_note,
|
9
|
+
null: false,
|
10
|
+
index: {name: "grn_on_ccri_indx"},
|
11
|
+
foreign_key: {to_table: :comee_core_goods_received_notes}
|
12
|
+
|
13
|
+
t.references :purchase_order_item,
|
14
|
+
null: false,
|
15
|
+
index: {name: "poi_on_ccri_indx"},
|
16
|
+
foreign_key: {to_table: :comee_core_purchase_order_items}
|
17
|
+
|
18
|
+
t.timestamps
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class CreateComeeCoreGoodsIssuedNotes < ActiveRecord::Migration[7.1]
|
2
|
+
def change
|
3
|
+
create_table :comee_core_goods_issued_notes do |t|
|
4
|
+
t.string :gin_number, null: false
|
5
|
+
t.date :date_issued, null: false
|
6
|
+
t.references :stock_transfer_request,
|
7
|
+
null: false,
|
8
|
+
index: {name: "str_on_ccgin_indx"},
|
9
|
+
foreign_key: {to_table: :comee_core_stock_transfer_requests}
|
10
|
+
|
11
|
+
t.timestamps
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class CreateComeeCoreGoodsIssuedItems < ActiveRecord::Migration[7.1]
|
2
|
+
def change
|
3
|
+
create_table :comee_core_goods_issued_items do |t|
|
4
|
+
t.float :quantity, null: false
|
5
|
+
t.references :stock_transfer_request_item,
|
6
|
+
null: false,
|
7
|
+
index: {name: "stri_on_ccgit_index"},
|
8
|
+
foreign_key: {to_table: :comee_core_stock_transfer_request_items}
|
9
|
+
t.references :goods_issued_note,
|
10
|
+
null: false,
|
11
|
+
index: {name: "gin_on_ccgit_index"},
|
12
|
+
foreign_key: {to_table: :comee_core_goods_issued_notes}
|
13
|
+
|
14
|
+
t.timestamps
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/comee/core/version.rb
CHANGED
@@ -0,0 +1,11 @@
|
|
1
|
+
FactoryBot.define do
|
2
|
+
factory :goods_received_note, class: "Comee::Core::GoodsReceivedNote" do
|
3
|
+
grn_number { Faker::Alphanumeric.alpha(number: 10) }
|
4
|
+
date_of_receipt { Date.current }
|
5
|
+
total_quantity { Faker::Number.between(from: 1, to: 20) }
|
6
|
+
total_amount { Faker::Number.between(from: 100, to: 2000) }
|
7
|
+
received_condition { Faker::Lorem.word }
|
8
|
+
comments { Faker::Lorem.sentence }
|
9
|
+
purchase_order
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
FactoryBot.define do
|
2
|
+
factory :received_item, class: "Comee::Core::ReceivedItem" do
|
3
|
+
quantity_ordered { 10 }
|
4
|
+
quantity_received { 10 }
|
5
|
+
unit_price { Faker::Number.between(from: 100, to: 200) }
|
6
|
+
total_price { Faker::Number.between(from: 100, to: 2000) }
|
7
|
+
goods_received_note
|
8
|
+
purchase_order_item
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
FactoryBot.define do
|
2
|
+
factory :stock_transfer_request, class: "Comee::Core::StockTransferRequest" do
|
3
|
+
reference_number { Faker::Alphanumeric.alpha(number: 10) }
|
4
|
+
reference_date { Date.current }
|
5
|
+
due_date { Date.current.advance(days: 10) }
|
6
|
+
remark { Faker::Lorem.word }
|
7
|
+
from factory: :store
|
8
|
+
to factory: :fulfillment_center
|
9
|
+
status { 0 }
|
10
|
+
initiated_by factory: :user
|
11
|
+
sales_order
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
FactoryBot.define do
|
2
|
+
factory :store, class: "Comee::Core::Store" do
|
3
|
+
code { Faker::Alphanumeric.alpha(number: 8) }
|
4
|
+
name { Faker::Name.name }
|
5
|
+
address { Faker::Address.street_address }
|
6
|
+
email { Faker::Internet.email }
|
7
|
+
warehouse_manager factory: :user
|
8
|
+
end
|
9
|
+
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.2.
|
4
|
+
version: 0.2.97
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henock L.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-06-
|
11
|
+
date: 2024-06-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_model_serializers
|
@@ -294,6 +294,7 @@ files:
|
|
294
294
|
- app/controllers/comee/core/customs_details_controller.rb
|
295
295
|
- app/controllers/comee/core/external_rfqs_controller.rb
|
296
296
|
- app/controllers/comee/core/fulfillment_centers_controller.rb
|
297
|
+
- app/controllers/comee/core/goods_received_notes_controller.rb
|
297
298
|
- app/controllers/comee/core/item_statuses_controller.rb
|
298
299
|
- app/controllers/comee/core/lookups_controller.rb
|
299
300
|
- app/controllers/comee/core/notifications_controller.rb
|
@@ -305,6 +306,10 @@ files:
|
|
305
306
|
- app/controllers/comee/core/sales_order_items_controller.rb
|
306
307
|
- app/controllers/comee/core/sales_orders_controller.rb
|
307
308
|
- app/controllers/comee/core/shipment_items_controller.rb
|
309
|
+
- app/controllers/comee/core/stock_transfer_request_items_controller.rb
|
310
|
+
- app/controllers/comee/core/stock_transfer_requests_controller.rb
|
311
|
+
- app/controllers/comee/core/store_items_controller.rb
|
312
|
+
- app/controllers/comee/core/stores_controller.rb
|
308
313
|
- app/controllers/comee/core/suppliers_controller.rb
|
309
314
|
- app/controllers/comee/core/unit_conversions_controller.rb
|
310
315
|
- app/controllers/comee/core/units_controller.rb
|
@@ -337,6 +342,9 @@ files:
|
|
337
342
|
- app/models/comee/core/email_setting.rb
|
338
343
|
- app/models/comee/core/external_rfq.rb
|
339
344
|
- app/models/comee/core/fulfillment_center.rb
|
345
|
+
- app/models/comee/core/goods_issued_item.rb
|
346
|
+
- app/models/comee/core/goods_issued_note.rb
|
347
|
+
- app/models/comee/core/goods_received_note.rb
|
340
348
|
- app/models/comee/core/inventory.rb
|
341
349
|
- app/models/comee/core/invoice.rb
|
342
350
|
- app/models/comee/core/invoice_item.rb
|
@@ -360,12 +368,19 @@ files:
|
|
360
368
|
- app/models/comee/core/purchase_requisition_item.rb
|
361
369
|
- app/models/comee/core/quotation_request.rb
|
362
370
|
- app/models/comee/core/quotation_request_item.rb
|
371
|
+
- app/models/comee/core/received_item.rb
|
372
|
+
- app/models/comee/core/reorder_report.rb
|
373
|
+
- app/models/comee/core/reorder_report_item.rb
|
363
374
|
- app/models/comee/core/role.rb
|
364
375
|
- app/models/comee/core/sales_order.rb
|
365
376
|
- app/models/comee/core/sales_order_item.rb
|
366
377
|
- app/models/comee/core/shipment_instruction.rb
|
367
378
|
- app/models/comee/core/shipment_instruction_item.rb
|
368
379
|
- app/models/comee/core/shipment_item.rb
|
380
|
+
- app/models/comee/core/stock_transfer_request.rb
|
381
|
+
- app/models/comee/core/stock_transfer_request_item.rb
|
382
|
+
- app/models/comee/core/store.rb
|
383
|
+
- app/models/comee/core/store_item.rb
|
369
384
|
- app/models/comee/core/supplier.rb
|
370
385
|
- app/models/comee/core/supplier_invoice.rb
|
371
386
|
- app/models/comee/core/supplier_payment.rb
|
@@ -389,6 +404,7 @@ files:
|
|
389
404
|
- app/serializers/comee/core/customs_detail_serializer.rb
|
390
405
|
- app/serializers/comee/core/external_rfq_serializer.rb
|
391
406
|
- app/serializers/comee/core/fulfillment_center_serializer.rb
|
407
|
+
- app/serializers/comee/core/goods_received_note_serializer.rb
|
392
408
|
- app/serializers/comee/core/item_status_serializer.rb
|
393
409
|
- app/serializers/comee/core/lookup_serializer.rb
|
394
410
|
- app/serializers/comee/core/master_price_serializer.rb
|
@@ -405,6 +421,10 @@ files:
|
|
405
421
|
- app/serializers/comee/core/sales_order_serializer.rb
|
406
422
|
- app/serializers/comee/core/shipment_instruction_item_serializer.rb
|
407
423
|
- app/serializers/comee/core/shipment_item_serializer.rb
|
424
|
+
- app/serializers/comee/core/stock_transfer_request_item_serializer.rb
|
425
|
+
- app/serializers/comee/core/stock_transfer_request_serializer.rb
|
426
|
+
- app/serializers/comee/core/store_item_serializer.rb
|
427
|
+
- app/serializers/comee/core/store_serializer.rb
|
408
428
|
- app/serializers/comee/core/supplier_serializer.rb
|
409
429
|
- app/serializers/comee/core/unit_conversion_serializer.rb
|
410
430
|
- app/serializers/comee/core/unit_serializer.rb
|
@@ -412,6 +432,7 @@ files:
|
|
412
432
|
- app/serializers/comee/core/user_serializer.rb
|
413
433
|
- app/services/comee/core/beo_service.rb
|
414
434
|
- app/services/comee/core/customer_order_service.rb
|
435
|
+
- app/services/comee/core/goods_received_note_service.rb
|
415
436
|
- app/services/comee/core/product_lookup_service.rb
|
416
437
|
- app/services/comee/core/quotation_request_service.rb
|
417
438
|
- app/services/comee/core/sales_order_service.rb
|
@@ -482,6 +503,16 @@ files:
|
|
482
503
|
- db/migrate/20240328132454_create_comee_core_supplier_invoices.rb
|
483
504
|
- db/migrate/20240328132713_create_comee_core_payment_orders.rb
|
484
505
|
- db/migrate/20240328132921_create_comee_core_supplier_payments.rb
|
506
|
+
- db/migrate/20240401115953_create_comee_core_stores.rb
|
507
|
+
- db/migrate/20240401123233_create_comee_core_store_items.rb
|
508
|
+
- db/migrate/20240401124757_create_comee_core_stock_transfer_requests.rb
|
509
|
+
- db/migrate/20240401131549_create_comee_core_stock_transfer_request_items.rb
|
510
|
+
- db/migrate/20240401192505_create_comee_core_reorder_reports.rb
|
511
|
+
- db/migrate/20240401193503_create_comee_core_reorder_report_items.rb
|
512
|
+
- db/migrate/20240406120401_create_comee_core_goods_received_notes.rb
|
513
|
+
- db/migrate/20240406124821_create_comee_core_received_items.rb
|
514
|
+
- db/migrate/20240406142113_create_comee_core_goods_issued_notes.rb
|
515
|
+
- db/migrate/20240406162711_create_comee_core_goods_issued_items.rb
|
485
516
|
- db/migrate/20240407083617_create_comee_core_email_settings.rb
|
486
517
|
- db/migrate/20240503040722_create_comee_core_client_addresses.rb
|
487
518
|
- lib/comee/core.rb
|
@@ -509,6 +540,9 @@ files:
|
|
509
540
|
- spec/factories/comee/core/email_settings.rb
|
510
541
|
- spec/factories/comee/core/external_rfqs.rb
|
511
542
|
- spec/factories/comee/core/fulfillment_centers.rb
|
543
|
+
- spec/factories/comee/core/goods_issued_items.rb
|
544
|
+
- spec/factories/comee/core/goods_issued_notes.rb
|
545
|
+
- spec/factories/comee/core/goods_received_notes.rb
|
512
546
|
- spec/factories/comee/core/inventories.rb
|
513
547
|
- spec/factories/comee/core/invoice_items.rb
|
514
548
|
- spec/factories/comee/core/invoices.rb
|
@@ -531,12 +565,19 @@ files:
|
|
531
565
|
- spec/factories/comee/core/purchase_requisitions.rb
|
532
566
|
- spec/factories/comee/core/quotation_request_items.rb
|
533
567
|
- spec/factories/comee/core/quotation_requests.rb
|
568
|
+
- spec/factories/comee/core/received_items.rb
|
569
|
+
- spec/factories/comee/core/reorder_report_items.rb
|
570
|
+
- spec/factories/comee/core/reorder_reports.rb
|
534
571
|
- spec/factories/comee/core/roles.rb
|
535
572
|
- spec/factories/comee/core/sales_order_items.rb
|
536
573
|
- spec/factories/comee/core/sales_orders.rb
|
537
574
|
- spec/factories/comee/core/shipment_instruction_items.rb
|
538
575
|
- spec/factories/comee/core/shipment_instructions.rb
|
539
576
|
- spec/factories/comee/core/shipment_items.rb
|
577
|
+
- spec/factories/comee/core/stock_transfer_request_items.rb
|
578
|
+
- spec/factories/comee/core/stock_transfer_requests.rb
|
579
|
+
- spec/factories/comee/core/store_items.rb
|
580
|
+
- spec/factories/comee/core/stores.rb
|
540
581
|
- spec/factories/comee/core/supplier_invoices.rb
|
541
582
|
- spec/factories/comee/core/supplier_payments.rb
|
542
583
|
- spec/factories/comee/core/suppliers.rb
|