comee_core 0.1.12 → 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/models/comee/core/client_price.rb +8 -0
- data/app/models/comee/core/invoice.rb +6 -4
- 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/services/comee/core/product_lookup_service.rb +1 -1
- 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 +1 -1
- data/spec/factories/comee/core/sales_order_items.rb +9 -0
- data/spec/factories/comee/core/sales_orders.rb +16 -0
- metadata +9 -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
|
@@ -23,7 +25,7 @@ module Comee
|
|
23
25
|
|
24
26
|
def self.ransackable_attributes(auth_object = nil)
|
25
27
|
[
|
26
|
-
"
|
28
|
+
"sales_order_id",
|
27
29
|
"invoice_no",
|
28
30
|
"date_issued",
|
29
31
|
"ship_name",
|
@@ -35,7 +37,7 @@ module Comee
|
|
35
37
|
end
|
36
38
|
|
37
39
|
def self.ransackable_associations(auth_object = nil)
|
38
|
-
[]
|
40
|
+
["sales_order"]
|
39
41
|
end
|
40
42
|
end
|
41
43
|
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.
|
@@ -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) }
|
@@ -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
|
@@ -248,8 +248,6 @@ files:
|
|
248
248
|
- app/models/comee/core/back_order.rb
|
249
249
|
- app/models/comee/core/back_order_item.rb
|
250
250
|
- app/models/comee/core/client.rb
|
251
|
-
- app/models/comee/core/client_order.rb
|
252
|
-
- app/models/comee/core/client_order_item.rb
|
253
251
|
- app/models/comee/core/client_price.rb
|
254
252
|
- app/models/comee/core/currency.rb
|
255
253
|
- app/models/comee/core/invoice.rb
|
@@ -259,6 +257,8 @@ files:
|
|
259
257
|
- app/models/comee/core/product.rb
|
260
258
|
- app/models/comee/core/product_lookup.rb
|
261
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
|
262
262
|
- app/models/comee/core/supplier.rb
|
263
263
|
- app/models/comee/core/unit.rb
|
264
264
|
- app/models/comee/core/user.rb
|
@@ -290,8 +290,8 @@ files:
|
|
290
290
|
- db/migrate/20230728123928_create_comee_core_back_orders.rb
|
291
291
|
- db/migrate/20230728125723_create_comee_core_back_order_items.rb
|
292
292
|
- db/migrate/20230730061225_create_comee_core_notifications.rb
|
293
|
-
- db/migrate/
|
294
|
-
- db/migrate/
|
293
|
+
- db/migrate/20230812190652_create_comee_core_sales_orders.rb
|
294
|
+
- db/migrate/20230812212844_create_comee_core_sales_order_items.rb
|
295
295
|
- db/migrate/20230813235946_create_comee_core_master_prices.rb
|
296
296
|
- db/migrate/20230814151601_create_comee_core_client_prices.rb
|
297
297
|
- db/migrate/20230914041307_create_comee_core_external_products.rb
|
@@ -304,8 +304,6 @@ files:
|
|
304
304
|
- lib/tasks/comee_core_tasks.rake
|
305
305
|
- spec/factories/comee/core/back_order_items.rb
|
306
306
|
- spec/factories/comee/core/back_orders.rb
|
307
|
-
- spec/factories/comee/core/client_order_items.rb
|
308
|
-
- spec/factories/comee/core/client_orders.rb
|
309
307
|
- spec/factories/comee/core/client_prices.rb
|
310
308
|
- spec/factories/comee/core/clients.rb
|
311
309
|
- spec/factories/comee/core/currencies.rb
|
@@ -316,6 +314,8 @@ files:
|
|
316
314
|
- spec/factories/comee/core/product_lookups.rb
|
317
315
|
- spec/factories/comee/core/product_types.rb
|
318
316
|
- spec/factories/comee/core/products.rb
|
317
|
+
- spec/factories/comee/core/sales_order_items.rb
|
318
|
+
- spec/factories/comee/core/sales_orders.rb
|
319
319
|
- spec/factories/comee/core/suppliers.rb
|
320
320
|
- spec/factories/comee/core/units.rb
|
321
321
|
- spec/factories/comee/core/users.rb
|
@@ -341,7 +341,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
341
341
|
- !ruby/object:Gem::Version
|
342
342
|
version: '0'
|
343
343
|
requirements: []
|
344
|
-
rubygems_version: 3.4.
|
344
|
+
rubygems_version: 3.4.20
|
345
345
|
signing_key:
|
346
346
|
specification_version: 4
|
347
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
|