comee_core 0.2.46 → 0.2.47

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: 320ff819758bf27f27b9082927bfe52b2a42bb77af6399fee2d67b221bab47a2
4
- data.tar.gz: 19c9b9896bf83b0f231a9e5ac9b3327dff3545b356f87d13d84108755beecf0d
3
+ metadata.gz: 3d634ab9d176cff8de70d3f9773017f390827ba6819d0201801fd23b316c3ec2
4
+ data.tar.gz: 364538a72a9bf036f947f2391efe2854ca1e89cce87eccb7c4ca615b295306b7
5
5
  SHA512:
6
- metadata.gz: 4a106d96bbed3e53f31e8a32b7db634ecc45641c749a1b465654084f47f731b02da69166212580a6fbd20cd9fdcb2580d2ebd79788dd5901c5a7e6e652a169ef
7
- data.tar.gz: a01ddba01a4b2498f50ea1c525585afb3d03f7d9cb0e153ee49d363212a6fed9caf04ba53099f48f90279f88315bf73a656dccbabb85341b1f09ca7bd3ef36ed
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
@@ -1,5 +1,5 @@
1
1
  module Comee
2
2
  module Core
3
- VERSION = "0.2.46".freeze
3
+ VERSION = "0.2.47".freeze
4
4
  end
5
5
  end
@@ -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,10 @@
1
+ FactoryBot.define do
2
+ factory :supplier_invoice_item, class: "Comee::Core::SupplierInvoiceItem" do
3
+ purchase_order_item
4
+ supplier_invoice
5
+ quantity { 10 }
6
+ unit
7
+ unit_price { 5 }
8
+ total_price { quantity * unit_price }
9
+ end
10
+ 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
@@ -0,0 +1,8 @@
1
+ FactoryBot.define do
2
+ factory :supplier_payment, class: "Comee::Core::SupplierPayment" do
3
+ payment_order
4
+ supplier_invoice
5
+ amount { 30 }
6
+ remark { Faker::Lorem.sentence }
7
+ end
8
+ 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.46
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-28 00:00:00.000000000 Z
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