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 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