comee_core 0.1.11 → 0.1.13
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/clients_controller.rb +13 -0
- data/app/models/comee/core/client.rb +2 -0
- data/app/models/comee/core/client_price.rb +8 -0
- data/app/models/comee/core/invoice.rb +21 -2
- data/app/models/comee/core/invoice_item.rb +3 -3
- data/app/models/comee/core/sales_order.rb +36 -0
- data/app/models/comee/core/sales_order_item.rb +20 -0
- data/app/serializers/comee/core/client_serializer.rb +7 -0
- data/app/services/comee/core/product_lookup_service.rb +1 -1
- data/config/routes.rb +1 -0
- data/db/migrate/{20230812190652_create_comee_core_client_orders.rb → 20230812190652_create_comee_core_sales_orders.rb} +9 -6
- data/db/migrate/{20230812212844_create_comee_core_client_order_items.rb → 20230812212844_create_comee_core_sales_order_items.rb} +5 -4
- data/db/migrate/20230915205522_create_comee_core_invoices.rb +2 -2
- data/db/migrate/20230915205648_create_comee_core_invoice_items.rb +3 -3
- data/lib/comee/core/version.rb +1 -1
- data/spec/factories/comee/core/invoice_items.rb +1 -1
- data/spec/factories/comee/core/invoices.rb +2 -2
- data/spec/factories/comee/core/sales_order_items.rb +9 -0
- data/spec/factories/comee/core/sales_orders.rb +16 -0
- metadata +11 -9
- data/app/models/comee/core/client_order.rb +0 -23
- data/app/models/comee/core/client_order_item.rb +0 -13
- data/spec/factories/comee/core/client_order_items.rb +0 -8
- data/spec/factories/comee/core/client_orders.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3e105a8c7e7254936a7db749a048935e743a23d2098650380a34a8bf55bc620
|
4
|
+
data.tar.gz: f38e93115c2d99cb771e261a16b86183b4a06dc497f937b67be1af502f1f9d0d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 136ec7b8f11718c0822ccacb0177c39e602a95e0b182f136a5cead06b11e06ffb8df5924aa2671841eb00f889bbaf794578444b06c92b305b739cca4bc77008e
|
7
|
+
data.tar.gz: 49ddfc65ef76c8c0fef5a0cf51e9d881f0eb621afa04a6f61dea4b89f0d914bde27a6cdc3b1d1d8952885dc30ddffbb9444bd277c76705faef6d7f4484786781
|
@@ -15,6 +15,14 @@ module Comee
|
|
15
15
|
period = Period.new(valid_from, valid_to)
|
16
16
|
errors.add(:base, "Price validity date range is not correct.") unless period.valid?
|
17
17
|
end
|
18
|
+
|
19
|
+
def self.ransackable_attributes(auth_object = nil)
|
20
|
+
["valid_from", "valid_to", "new_price", "old_price", "product_id", "client_id"]
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.ransackable_associations(auth_object = nil)
|
24
|
+
[]
|
25
|
+
end
|
18
26
|
end
|
19
27
|
end
|
20
28
|
end
|
@@ -2,9 +2,11 @@ module Comee
|
|
2
2
|
module Core
|
3
3
|
class Invoice < ApplicationRecord
|
4
4
|
before_save :update_invoice_total
|
5
|
-
belongs_to :
|
5
|
+
belongs_to :sales_order
|
6
6
|
has_many :invoice_items
|
7
7
|
|
8
|
+
has_noticed_notifications model_name: "Comee::Core::Notification"
|
9
|
+
|
8
10
|
enum :status, {draft: 0, approved: 1}
|
9
11
|
enum :payment_status, {not_settled: 0, settled: 1}
|
10
12
|
|
@@ -12,7 +14,7 @@ module Comee
|
|
12
14
|
validates :date_issued, :payment_term, :status, :payment_status, presence: true
|
13
15
|
validates :additional_charges, :total_price, numericality: {greater_than_or_equal_to: 0, allow_nil: true}
|
14
16
|
|
15
|
-
delegate(:order_number, to: :
|
17
|
+
delegate(:order_number, to: :sales_order)
|
16
18
|
|
17
19
|
def update_invoice_total
|
18
20
|
self.additional_charges ||= 0
|
@@ -20,6 +22,23 @@ module Comee
|
|
20
22
|
self.total_price -= additional_charges_was if additional_charges_was && additional_charges_changed?
|
21
23
|
self.total_price += additional_charges
|
22
24
|
end
|
25
|
+
|
26
|
+
def self.ransackable_attributes(auth_object = nil)
|
27
|
+
[
|
28
|
+
"sales_order_id",
|
29
|
+
"invoice_no",
|
30
|
+
"date_issued",
|
31
|
+
"ship_name",
|
32
|
+
"delivery_date",
|
33
|
+
"voyage_no",
|
34
|
+
"status",
|
35
|
+
"payment_status"
|
36
|
+
]
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.ransackable_associations(auth_object = nil)
|
40
|
+
["sales_order"]
|
41
|
+
end
|
23
42
|
end
|
24
43
|
end
|
25
44
|
end
|
@@ -4,14 +4,14 @@ module Comee
|
|
4
4
|
before_save { self.total_price = unit_price * quantity }
|
5
5
|
after_save :update_invoice_total
|
6
6
|
|
7
|
-
belongs_to :
|
7
|
+
belongs_to :sales_order_item
|
8
8
|
belongs_to :invoice
|
9
9
|
|
10
10
|
validates :quantity, :unit_price, presence: true, numericality: {greater_than: 0}
|
11
11
|
validates :total_price, numericality: {greater_than_or_equal_to: 0, allow_nil: true}
|
12
12
|
|
13
|
-
delegate(:product_code, to: :
|
14
|
-
delegate(:product_name, to: :
|
13
|
+
delegate(:product_code, to: :sales_order_item)
|
14
|
+
delegate(:product_name, to: :sales_order_item)
|
15
15
|
|
16
16
|
def update_invoice_total
|
17
17
|
invoice.total_price = InvoiceItem.where(invoice: invoice).map(&:total_price).sum
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class SalesOrder < ApplicationRecord
|
4
|
+
belongs_to :client
|
5
|
+
has_many :sales_order_items
|
6
|
+
|
7
|
+
enum :status, {draft: 0, confirmed: 1}
|
8
|
+
|
9
|
+
validates :order_number, presence: true, uniqueness: true
|
10
|
+
validates :order_date, :expected_delivery_date, :delivery_address, :invoice_address, :status, presence: true
|
11
|
+
validates :payment_no_of_days,
|
12
|
+
:payment_discount,
|
13
|
+
:payment_penalty,
|
14
|
+
presence: true,
|
15
|
+
numericality: {greater_than_or_equal_to: 0, less_than_or_equal_to: 100}
|
16
|
+
|
17
|
+
delegate(:name, to: :client, prefix: true)
|
18
|
+
|
19
|
+
def self.ransackable_attributes(auth_object = nil)
|
20
|
+
[
|
21
|
+
"delivery_address",
|
22
|
+
"expected_delivery_date",
|
23
|
+
"invoice_address",
|
24
|
+
"order_date",
|
25
|
+
"order_number",
|
26
|
+
"status",
|
27
|
+
"client_id"
|
28
|
+
]
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.ransackable_associations(auth_object = nil)
|
32
|
+
[]
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class SalesOrderItem < ApplicationRecord
|
4
|
+
before_validation :set_delivery_date, if: proc { delivery_date.nil? }
|
5
|
+
|
6
|
+
belongs_to :sales_order
|
7
|
+
belongs_to :product
|
8
|
+
|
9
|
+
validates :delivery_date, presence: true
|
10
|
+
validates :quantity, :price, presence: true, numericality: {greater_than: 0}
|
11
|
+
|
12
|
+
delegate(:name, to: :product, prefix: true)
|
13
|
+
delegate(:code, to: :product, prefix: true)
|
14
|
+
|
15
|
+
def set_delivery_date
|
16
|
+
self.delivery_date = sales_order.expected_delivery_date
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -5,7 +5,7 @@ module Comee
|
|
5
5
|
##
|
6
6
|
# This method returns a translated code for a given +code+. The +code+ can be
|
7
7
|
# for a supplier or a client. The source of the +code+ is described using the +from+
|
8
|
-
# parameter. The +from+ parameter is a
|
8
|
+
# parameter. The +from+ parameter is a hash which specifies the id of the source
|
9
9
|
# supplier/client as `itemable_id`, and the data type of the source as itemable_type.
|
10
10
|
# We specify the id and type because the ProductLookup model has a polymorphic relationship
|
11
11
|
# with supplier and client.
|
data/config/routes.rb
CHANGED
@@ -1,24 +1,27 @@
|
|
1
|
-
class
|
1
|
+
class CreateComeeCoreSalesOrders < ActiveRecord::Migration[7.0]
|
2
2
|
def change
|
3
|
-
create_table :
|
3
|
+
create_table :comee_core_sales_orders do |t|
|
4
4
|
t.string :order_number, null: false
|
5
5
|
t.date :order_date, null: false, default: -> { "CURRENT_DATE" }
|
6
|
-
t.date :
|
6
|
+
t.date :expected_delivery_date, null: false
|
7
7
|
t.references :client,
|
8
8
|
null: false,
|
9
9
|
index: {name: "client_on_ccco_indx"},
|
10
10
|
foreign_key: {to_table: :comee_core_clients}
|
11
|
-
t.json :
|
11
|
+
t.json :client_terms
|
12
|
+
t.integer :payment_no_of_days, null: false, default: 0
|
13
|
+
t.float :payment_discount, null: false, default: 0.0
|
14
|
+
t.float :payment_penalty, null: false, default: 0.0
|
12
15
|
t.integer :status, null: false, default: 0
|
13
16
|
t.string :delivery_address, null: false
|
14
17
|
t.string :invoice_address, null: false
|
15
|
-
t.string :remark
|
16
18
|
t.float :total_price, null: true, default: 0
|
17
19
|
t.float :amount_paid, null: true, default: 0
|
18
20
|
t.float :amount_due, null: true, default: 0
|
21
|
+
t.string :remark
|
19
22
|
|
20
23
|
t.timestamps
|
21
24
|
end
|
22
|
-
add_index :
|
25
|
+
add_index :comee_core_sales_orders, :order_number, unique: true
|
23
26
|
end
|
24
27
|
end
|
@@ -1,16 +1,17 @@
|
|
1
|
-
class
|
1
|
+
class CreateComeeCoreSalesOrderItems < ActiveRecord::Migration[7.0]
|
2
2
|
def change
|
3
|
-
create_table :
|
4
|
-
t.references :
|
3
|
+
create_table :comee_core_sales_order_items do |t|
|
4
|
+
t.references :sales_order,
|
5
5
|
null: false,
|
6
6
|
index: {name: "co_on_coi_indx"},
|
7
|
-
foreign_key: {to_table: :
|
7
|
+
foreign_key: {to_table: :comee_core_sales_orders}
|
8
8
|
t.references :product,
|
9
9
|
null: false,
|
10
10
|
index: {name: "po_on_coi_indx"},
|
11
11
|
foreign_key: {to_table: :comee_core_products}
|
12
12
|
t.integer :quantity, null: false
|
13
13
|
t.integer :price, null: false
|
14
|
+
t.date :delivery_date, null: false
|
14
15
|
|
15
16
|
t.timestamps
|
16
17
|
end
|
@@ -2,10 +2,10 @@ class CreateComeeCoreInvoices < ActiveRecord::Migration[7.0]
|
|
2
2
|
def change
|
3
3
|
create_table :comee_core_invoices do |t|
|
4
4
|
t.string :invoice_no, null: false
|
5
|
-
t.references :
|
5
|
+
t.references :sales_order,
|
6
6
|
null: false,
|
7
7
|
index: {name: "co_on_cci_indx"},
|
8
|
-
foreign_key: {to_table: :
|
8
|
+
foreign_key: {to_table: :comee_core_sales_orders}
|
9
9
|
t.date :date_issued, null: false
|
10
10
|
t.string :ship_name
|
11
11
|
t.date :delivery_date
|
@@ -1,10 +1,10 @@
|
|
1
1
|
class CreateComeeCoreInvoiceItems < ActiveRecord::Migration[7.0]
|
2
2
|
def change
|
3
3
|
create_table :comee_core_invoice_items do |t|
|
4
|
-
t.references :
|
4
|
+
t.references :sales_order_item,
|
5
5
|
null: false,
|
6
|
-
index: {name: "
|
7
|
-
foreign_key: {to_table: :
|
6
|
+
index: {name: "soi_on_ccii_indx"},
|
7
|
+
foreign_key: {to_table: :comee_core_sales_order_items}
|
8
8
|
t.float :quantity, null: false
|
9
9
|
t.float :unit_price, null: false
|
10
10
|
t.float :total_price, null: false
|
data/lib/comee/core/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
FactoryBot.define do
|
2
2
|
factory :invoice, class: "Comee::Core::Invoice" do
|
3
3
|
invoice_no { Faker::Alphanumeric.alpha(number: 8) }
|
4
|
-
|
4
|
+
sales_order
|
5
5
|
date_issued { Date.current }
|
6
6
|
ship_name { Faker::Name.name }
|
7
7
|
delivery_date { Date.current.advance(days: -7) }
|
@@ -10,7 +10,7 @@ FactoryBot.define do
|
|
10
10
|
total_price { 0 }
|
11
11
|
payment_term { Faker::Lorem.sentence }
|
12
12
|
notifications_sent { 0 }
|
13
|
-
status {
|
13
|
+
status { Comee::Core::Invoice.statuses[:draft] }
|
14
14
|
payment_status { 0 }
|
15
15
|
end
|
16
16
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
FactoryBot.define do
|
2
|
+
factory :sales_order, class: "Comee::Core::SalesOrder" do
|
3
|
+
order_number { Faker::Alphanumeric.alpha(number: 10) }
|
4
|
+
order_date { Date.current }
|
5
|
+
expected_delivery_date { Date.current.advance(month: 1) }
|
6
|
+
client
|
7
|
+
client_terms { Faker::Lorem.sentence }
|
8
|
+
payment_no_of_days { 7 }
|
9
|
+
payment_discount { 0 }
|
10
|
+
payment_penalty { 0 }
|
11
|
+
status { Comee::Core::SalesOrder.statuses[:draft] }
|
12
|
+
delivery_address { Faker::Address.full_address }
|
13
|
+
invoice_address { Faker::Address.full_address }
|
14
|
+
remark { Faker::Lorem.sentence }
|
15
|
+
end
|
16
|
+
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.13
|
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-09-
|
11
|
+
date: 2023-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_model_serializers
|
@@ -232,6 +232,7 @@ files:
|
|
232
232
|
- Rakefile
|
233
233
|
- app/controllers/comee/core/access_controller.rb
|
234
234
|
- app/controllers/comee/core/application_controller.rb
|
235
|
+
- app/controllers/comee/core/clients_controller.rb
|
235
236
|
- app/controllers/comee/core/currencies_controller.rb
|
236
237
|
- app/controllers/comee/core/notifications_controller.rb
|
237
238
|
- app/controllers/comee/core/product_types_controller.rb
|
@@ -247,8 +248,6 @@ files:
|
|
247
248
|
- app/models/comee/core/back_order.rb
|
248
249
|
- app/models/comee/core/back_order_item.rb
|
249
250
|
- app/models/comee/core/client.rb
|
250
|
-
- app/models/comee/core/client_order.rb
|
251
|
-
- app/models/comee/core/client_order_item.rb
|
252
251
|
- app/models/comee/core/client_price.rb
|
253
252
|
- app/models/comee/core/currency.rb
|
254
253
|
- app/models/comee/core/invoice.rb
|
@@ -258,10 +257,13 @@ files:
|
|
258
257
|
- app/models/comee/core/product.rb
|
259
258
|
- app/models/comee/core/product_lookup.rb
|
260
259
|
- app/models/comee/core/product_type.rb
|
260
|
+
- app/models/comee/core/sales_order.rb
|
261
|
+
- app/models/comee/core/sales_order_item.rb
|
261
262
|
- app/models/comee/core/supplier.rb
|
262
263
|
- app/models/comee/core/unit.rb
|
263
264
|
- app/models/comee/core/user.rb
|
264
265
|
- app/notifications/comee/core/new_order_notification.rb
|
266
|
+
- app/serializers/comee/core/client_serializer.rb
|
265
267
|
- app/serializers/comee/core/currency_serializer.rb
|
266
268
|
- app/serializers/comee/core/product_serializer.rb
|
267
269
|
- app/serializers/comee/core/product_type_serializer.rb
|
@@ -288,8 +290,8 @@ files:
|
|
288
290
|
- db/migrate/20230728123928_create_comee_core_back_orders.rb
|
289
291
|
- db/migrate/20230728125723_create_comee_core_back_order_items.rb
|
290
292
|
- db/migrate/20230730061225_create_comee_core_notifications.rb
|
291
|
-
- db/migrate/
|
292
|
-
- db/migrate/
|
293
|
+
- db/migrate/20230812190652_create_comee_core_sales_orders.rb
|
294
|
+
- db/migrate/20230812212844_create_comee_core_sales_order_items.rb
|
293
295
|
- db/migrate/20230813235946_create_comee_core_master_prices.rb
|
294
296
|
- db/migrate/20230814151601_create_comee_core_client_prices.rb
|
295
297
|
- db/migrate/20230914041307_create_comee_core_external_products.rb
|
@@ -302,8 +304,6 @@ files:
|
|
302
304
|
- lib/tasks/comee_core_tasks.rake
|
303
305
|
- spec/factories/comee/core/back_order_items.rb
|
304
306
|
- spec/factories/comee/core/back_orders.rb
|
305
|
-
- spec/factories/comee/core/client_order_items.rb
|
306
|
-
- spec/factories/comee/core/client_orders.rb
|
307
307
|
- spec/factories/comee/core/client_prices.rb
|
308
308
|
- spec/factories/comee/core/clients.rb
|
309
309
|
- spec/factories/comee/core/currencies.rb
|
@@ -314,6 +314,8 @@ files:
|
|
314
314
|
- spec/factories/comee/core/product_lookups.rb
|
315
315
|
- spec/factories/comee/core/product_types.rb
|
316
316
|
- spec/factories/comee/core/products.rb
|
317
|
+
- spec/factories/comee/core/sales_order_items.rb
|
318
|
+
- spec/factories/comee/core/sales_orders.rb
|
317
319
|
- spec/factories/comee/core/suppliers.rb
|
318
320
|
- spec/factories/comee/core/units.rb
|
319
321
|
- spec/factories/comee/core/users.rb
|
@@ -339,7 +341,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
339
341
|
- !ruby/object:Gem::Version
|
340
342
|
version: '0'
|
341
343
|
requirements: []
|
342
|
-
rubygems_version: 3.4.
|
344
|
+
rubygems_version: 3.4.20
|
343
345
|
signing_key:
|
344
346
|
specification_version: 4
|
345
347
|
summary: An engine for the COMee ERP.
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module Comee
|
2
|
-
module Core
|
3
|
-
class ClientOrder < ApplicationRecord
|
4
|
-
belongs_to :client
|
5
|
-
has_many :client_order_items
|
6
|
-
|
7
|
-
enum :status, {draft: 0, confirmed: 1}
|
8
|
-
|
9
|
-
validates :order_number, presence: true, uniqueness: true
|
10
|
-
validates :order_date, :delivery_date, :terms, :delivery_address, :invoice_address, :status, presence: true
|
11
|
-
|
12
|
-
delegate(:name, to: :client, prefix: true)
|
13
|
-
|
14
|
-
def self.ransackable_attributes(auth_object = nil)
|
15
|
-
["delivery_address", "delivery_date", "invoice_address", "order_date", "order_number", "status", "client_id"]
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.ransackable_associations(auth_object = nil)
|
19
|
-
[]
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
module Comee
|
2
|
-
module Core
|
3
|
-
class ClientOrderItem < ApplicationRecord
|
4
|
-
belongs_to :client_order
|
5
|
-
belongs_to :product
|
6
|
-
|
7
|
-
validates :quantity, :price, presence: true, numericality: {greater_than: 0}
|
8
|
-
|
9
|
-
delegate(:name, to: :product, prefix: true)
|
10
|
-
delegate(:code, to: :product, prefix: true)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
FactoryBot.define do
|
2
|
-
factory :client_order, class: "Comee::Core::ClientOrder" do
|
3
|
-
order_number { Faker::Alphanumeric.alpha(number: 10) }
|
4
|
-
order_date { Date.current }
|
5
|
-
delivery_date { Date.current.advance(month: 1) }
|
6
|
-
client
|
7
|
-
terms { {payment_terms: "NET 30 days", currency: "Euro", freight_terms: "FOB"} }
|
8
|
-
status { Comee::Core::ClientOrder.statuses[:draft] }
|
9
|
-
delivery_address { Faker::Address.full_address }
|
10
|
-
invoice_address { Faker::Address.full_address }
|
11
|
-
remark { Faker::Lorem.sentence }
|
12
|
-
end
|
13
|
-
end
|