comee_core 0.2.46 → 0.2.47
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/models/comee/core/payment_order.rb +20 -0
- data/app/models/comee/core/supplier_invoice.rb +32 -0
- data/app/models/comee/core/supplier_invoice_item.rb +20 -0
- data/app/models/comee/core/supplier_payment.rb +29 -0
- data/db/migrate/20240328132454_create_comee_core_supplier_invoices.rb +19 -0
- data/db/migrate/20240328132625_create_comee_core_supplier_invoice_items.rb +23 -0
- data/db/migrate/20240328132713_create_comee_core_payment_orders.rb +16 -0
- data/db/migrate/20240328132921_create_comee_core_supplier_payments.rb +18 -0
- data/lib/comee/core/version.rb +1 -1
- data/spec/factories/comee/core/payment_orders.rb +9 -0
- data/spec/factories/comee/core/supplier_invoice_items.rb +10 -0
- data/spec/factories/comee/core/supplier_invoices.rb +15 -0
- data/spec/factories/comee/core/supplier_payments.rb +8 -0
- metadata +14 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d634ab9d176cff8de70d3f9773017f390827ba6819d0201801fd23b316c3ec2
|
4
|
+
data.tar.gz: 364538a72a9bf036f947f2391efe2854ca1e89cce87eccb7c4ca615b295306b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0538cffa099fcf9b7d423ce3e6815ab64f9570355ed65240cd56427d648a930b1c355fdc57003739d16435773d764409d59d038121a1ff194a5a07341db0fab1'
|
7
|
+
data.tar.gz: a94b47936abb583cd19448363a22144ad976cffdf16e7b3a2256b1ac7d9bce9d869fe6289ddf313844680dbfbae46bcfa594db153b6d4994da28469da97e5462
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class PaymentOrder < ApplicationRecord
|
4
|
+
belongs_to :currency
|
5
|
+
has_many :supplier_payments
|
6
|
+
|
7
|
+
enum :status, {pending: 0, processed: 1}
|
8
|
+
validates :date_issued, :status, presence: true
|
9
|
+
validates :amount, presence: true, numericality: {greater_than: 0}
|
10
|
+
|
11
|
+
def self.ransackable_attributes(_auth_object = nil)
|
12
|
+
%w[id reference_no date_issued status]
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.ransackable_associations(_auth_object = nil)
|
16
|
+
%w[currency]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class SupplierInvoice < ApplicationRecord
|
4
|
+
belongs_to :purchase_order
|
5
|
+
has_many :supplier_invoice_items
|
6
|
+
has_many :supplier_payments
|
7
|
+
|
8
|
+
enum :status, {draft: 0, approved: 1}
|
9
|
+
enum :payment_status, {not_paid: 0, partially_paid: 1, fully_paid: 2, overpaid: 3}
|
10
|
+
|
11
|
+
validates :invoice_no, presence: true, uniqueness: true
|
12
|
+
validates :status, :payment_status, presence: true
|
13
|
+
validates :total_price, numericality: {greater_than_or_equal_to: 0, allow_nil: true}
|
14
|
+
validates :amount_paid, numericality: {greater_than_or_equal_to: 0, allow_nil: true}
|
15
|
+
|
16
|
+
def self.ransackable_attributes(_auth_object = nil)
|
17
|
+
%w[
|
18
|
+
id
|
19
|
+
purchase_order_id
|
20
|
+
invoice_no
|
21
|
+
date_issued
|
22
|
+
status
|
23
|
+
payment_status
|
24
|
+
]
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.ransackable_associations(_auth_object = nil)
|
28
|
+
["purchase_order"]
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class SupplierInvoiceItem < ApplicationRecord
|
4
|
+
before_save { self.total_price = unit_price * quantity }
|
5
|
+
after_save :update_invoice_price
|
6
|
+
|
7
|
+
belongs_to :purchase_order_item
|
8
|
+
belongs_to :supplier_invoice
|
9
|
+
belongs_to :unit
|
10
|
+
|
11
|
+
validates :quantity, :unit_price, presence: true, numericality: {greater_than: 0}
|
12
|
+
validates :total_price, numericality: {greater_than_or_equal_to: 0, allow_nil: true}
|
13
|
+
|
14
|
+
def update_invoice_price
|
15
|
+
supplier_invoice.total_price = supplier_invoice.supplier_invoice_items.sum(:total_price)
|
16
|
+
supplier_invoice.save!
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Comee
|
2
|
+
module Core
|
3
|
+
class SupplierPayment < ApplicationRecord
|
4
|
+
belongs_to :payment_order
|
5
|
+
belongs_to :supplier_invoice
|
6
|
+
|
7
|
+
validates :amount, presence: true, numericality: {greater_than: 0}
|
8
|
+
validate :validate_amount
|
9
|
+
|
10
|
+
def self.ransackable_attributes(_auth_object = nil)
|
11
|
+
%w[id created_at updated_at]
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.ransackable_associations(_auth_object = nil)
|
15
|
+
%w[payment_deposit invoice]
|
16
|
+
end
|
17
|
+
|
18
|
+
def validate_amount
|
19
|
+
return unless amount && payment_order
|
20
|
+
|
21
|
+
running_total = payment_order.supplier_payments.sum(:amount)
|
22
|
+
running_total -= amount_was if id
|
23
|
+
remaining = payment_order.amount - running_total
|
24
|
+
error = "Amount exceeded. The maximum amount you can set is #{remaining}"
|
25
|
+
errors.add(:base, error) if amount > remaining
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class CreateComeeCoreSupplierInvoices < ActiveRecord::Migration[7.1]
|
2
|
+
def change
|
3
|
+
create_table :comee_core_supplier_invoices do |t|
|
4
|
+
t.references :purchase_order,
|
5
|
+
null: false,
|
6
|
+
index: {name: "po_on_ccsi_indx"},
|
7
|
+
foreign_key: {to_table: :comee_core_purchase_orders}
|
8
|
+
t.string :invoice_no, null: false
|
9
|
+
t.date :date_issued
|
10
|
+
t.float :total_price
|
11
|
+
t.float :amount_paid, default: 0
|
12
|
+
t.integer :status, null: false, default: 0
|
13
|
+
t.integer :payment_status, null: false, default: 0
|
14
|
+
|
15
|
+
t.timestamps
|
16
|
+
end
|
17
|
+
add_index :comee_core_supplier_invoices, :invoice_no, unique: true
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class CreateComeeCoreSupplierInvoiceItems < ActiveRecord::Migration[7.1]
|
2
|
+
def change
|
3
|
+
create_table :comee_core_supplier_invoice_items do |t|
|
4
|
+
t.references :purchase_order_item,
|
5
|
+
null: false,
|
6
|
+
index: {name: "poi_on_ccsii_indx"},
|
7
|
+
foreign_key: {to_table: :comee_core_purchase_order_items}
|
8
|
+
t.references :supplier_invoice,
|
9
|
+
null: false,
|
10
|
+
index: {name: "si_on_ccsii2_indx"},
|
11
|
+
foreign_key: {to_table: :comee_core_supplier_invoices}
|
12
|
+
t.float :quantity, null: false
|
13
|
+
t.references :unit,
|
14
|
+
null: false,
|
15
|
+
index: {name: "unit_on_ccsii2_indx"},
|
16
|
+
foreign_key: {to_table: :comee_core_units}
|
17
|
+
t.float :unit_price, null: false
|
18
|
+
t.float :total_price
|
19
|
+
|
20
|
+
t.timestamps
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class CreateComeeCorePaymentOrders < ActiveRecord::Migration[7.1]
|
2
|
+
def change
|
3
|
+
create_table :comee_core_payment_orders do |t|
|
4
|
+
t.string :reference_no
|
5
|
+
t.date :date_issued, null: false
|
6
|
+
t.references :currency,
|
7
|
+
null: false,
|
8
|
+
index: {name: "currency_on_ccpo_indx"},
|
9
|
+
foreign_key: {to_table: :comee_core_currencies}
|
10
|
+
t.float :amount, null: false
|
11
|
+
t.integer :status, null: false, default: 0
|
12
|
+
|
13
|
+
t.timestamps
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class CreateComeeCoreSupplierPayments < ActiveRecord::Migration[7.1]
|
2
|
+
def change
|
3
|
+
create_table :comee_core_supplier_payments do |t|
|
4
|
+
t.references :payment_order,
|
5
|
+
null: false,
|
6
|
+
index: {name: "po_on_ccsp_indx"},
|
7
|
+
foreign_key: {to_table: :comee_core_payment_orders}
|
8
|
+
t.references :supplier_invoice,
|
9
|
+
null: false,
|
10
|
+
index: {name: "si_on_ccsp_indx"},
|
11
|
+
foreign_key: {to_table: :comee_core_supplier_invoices}
|
12
|
+
t.float :amount, null: false
|
13
|
+
t.string :remark
|
14
|
+
|
15
|
+
t.timestamps
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/comee/core/version.rb
CHANGED
@@ -0,0 +1,9 @@
|
|
1
|
+
FactoryBot.define do
|
2
|
+
factory :payment_order, class: "Comee::Core::PaymentOrder" do
|
3
|
+
reference_no { Faker::Alphanumeric.alpha(number: 10) }
|
4
|
+
date_issued { Date.current }
|
5
|
+
currency
|
6
|
+
amount { 100 }
|
7
|
+
status { Comee::Core::PaymentOrder.statuses[:pending] }
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
FactoryBot.define do
|
2
|
+
factory :supplier_invoice, class: "Comee::Core::SupplierInvoice" do
|
3
|
+
purchase_order
|
4
|
+
invoice_no { Faker::Alphanumeric.alpha(number: 8) }
|
5
|
+
date_issued { Date.current }
|
6
|
+
total_price { 0 }
|
7
|
+
amount_paid { 0 }
|
8
|
+
status { Comee::Core::SupplierInvoice.statuses[:draft] }
|
9
|
+
payment_status { Comee::Core::SupplierInvoice.payment_statuses[:not_paid] }
|
10
|
+
|
11
|
+
trait :approved do
|
12
|
+
status { Comee::Core::SupplierInvoice.statuses[:approved] }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
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.47
|
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-03-
|
11
|
+
date: 2024-03-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_model_serializers
|
@@ -325,6 +325,7 @@ files:
|
|
325
325
|
- app/models/comee/core/order_source.rb
|
326
326
|
- app/models/comee/core/payment.rb
|
327
327
|
- app/models/comee/core/payment_deposit.rb
|
328
|
+
- app/models/comee/core/payment_order.rb
|
328
329
|
- app/models/comee/core/pickup_schedule.rb
|
329
330
|
- app/models/comee/core/pod.rb
|
330
331
|
- app/models/comee/core/price.rb
|
@@ -343,6 +344,9 @@ files:
|
|
343
344
|
- app/models/comee/core/shipment_instruction_item.rb
|
344
345
|
- app/models/comee/core/shipment_item.rb
|
345
346
|
- app/models/comee/core/supplier.rb
|
347
|
+
- app/models/comee/core/supplier_invoice.rb
|
348
|
+
- app/models/comee/core/supplier_invoice_item.rb
|
349
|
+
- app/models/comee/core/supplier_payment.rb
|
346
350
|
- app/models/comee/core/time_slot.rb
|
347
351
|
- app/models/comee/core/transport_availability.rb
|
348
352
|
- app/models/comee/core/unit.rb
|
@@ -440,6 +444,10 @@ files:
|
|
440
444
|
- db/migrate/20240314111307_create_comee_core_purchase_requisition_items.rb
|
441
445
|
- db/migrate/20240325155406_create_comee_core_purchase_order_item_diffs.rb
|
442
446
|
- db/migrate/20240328033103_add_total_price_to_purchase_order.rb
|
447
|
+
- db/migrate/20240328132454_create_comee_core_supplier_invoices.rb
|
448
|
+
- db/migrate/20240328132625_create_comee_core_supplier_invoice_items.rb
|
449
|
+
- db/migrate/20240328132713_create_comee_core_payment_orders.rb
|
450
|
+
- db/migrate/20240328132921_create_comee_core_supplier_payments.rb
|
443
451
|
- lib/comee/core.rb
|
444
452
|
- lib/comee/core/engine.rb
|
445
453
|
- lib/comee/core/version.rb
|
@@ -471,6 +479,7 @@ files:
|
|
471
479
|
- spec/factories/comee/core/notifications.rb
|
472
480
|
- spec/factories/comee/core/order_sources.rb
|
473
481
|
- spec/factories/comee/core/payment_deposits.rb
|
482
|
+
- spec/factories/comee/core/payment_orders.rb
|
474
483
|
- spec/factories/comee/core/payments.rb
|
475
484
|
- spec/factories/comee/core/pickup_schedules.rb
|
476
485
|
- spec/factories/comee/core/pods.rb
|
@@ -488,6 +497,9 @@ files:
|
|
488
497
|
- spec/factories/comee/core/shipment_instruction_items.rb
|
489
498
|
- spec/factories/comee/core/shipment_instructions.rb
|
490
499
|
- spec/factories/comee/core/shipment_items.rb
|
500
|
+
- spec/factories/comee/core/supplier_invoice_items.rb
|
501
|
+
- spec/factories/comee/core/supplier_invoices.rb
|
502
|
+
- spec/factories/comee/core/supplier_payments.rb
|
491
503
|
- spec/factories/comee/core/suppliers.rb
|
492
504
|
- spec/factories/comee/core/time_slots.rb
|
493
505
|
- spec/factories/comee/core/transport_availabilities.rb
|