comee_core 0.3.41 → 0.3.42

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: 945ebcfda26158faf04eeb992d73078a05ece14bf999e93287d4f9a40a536f3e
4
- data.tar.gz: b85605bbe210dafc52a8f1e0f29f572c5ee258cbc65bfa11bfaee65ab88edcc3
3
+ metadata.gz: 5543b44e3e8230affe2c45fa5850176535bff3c1e52ae12e7943265db65e840d
4
+ data.tar.gz: 8a53148bbf0c6a70e1efa88070820b5892bf871d24f8c50b7a2926626f652c04
5
5
  SHA512:
6
- metadata.gz: 1c67e379c9ae392240d543c73a99cb89f3084db1648df9ad2310fb5054589fb32a1cb8ab4a2270f1ceaa7f9eefcb018a19cf3c5d56c15de8b0ebb414f6048c76
7
- data.tar.gz: 6d7578c2ebbf76fcba4ecf48e4ee43130f30a9b73ed5bd83d53e4cffafeb1d8f95dd4dbfbd451edbca971a4722cad75f5c55a8b3dea33aa8373b359ba0f349bf
6
+ metadata.gz: 2224cc02486c9aa4e57429827fce56803b5ac5a2ef4b5fb28b5e5b464e1f1f4e00694b3be0b03111175a74787f5ccf22373d0c7e3a67441221af2bd3f42b375d
7
+ data.tar.gz: e636c80554eb4262e96660fae38c767f2052d2553e89815bbc2faf6716eeb66ec56077679c22cb973829dfbf3f947e01c0f0039cab2fb782424f634be53cc355
@@ -1,11 +1,17 @@
1
1
  module Comee
2
2
  module Core
3
3
  class Invoice < ApplicationRecord
4
+ ADVANCE = "Advance".freeze
5
+ DELIVERY = "Delivery".freeze
6
+ DIRECT = "Direct".freeze
7
+
8
+ INVOICE_TYPES = [ADVANCE, DELIVERY, DIRECT].freeze
9
+
4
10
  before_validation :generate_invoice_no, if: proc { |inv| inv.invoice_no.nil? }
5
11
  before_save :calculate_due_date, unless: proc { |inv| inv.date_issued.nil? }
6
12
 
7
13
  belongs_to :sales_order
8
- belongs_to :pod
14
+ belongs_to :pod, optional: true
9
15
  belongs_to :invoice_address,
10
16
  -> { where(address_type: ClientAddress::INVOICING_ADDRESS) },
11
17
  class_name: "Comee::Core::ClientAddress"
@@ -23,9 +29,35 @@ module Comee
23
29
  validates :total_price, numericality: {greater_than_or_equal_to: 0, allow_nil: true}
24
30
  validates :amount_paid, numericality: {greater_than_or_equal_to: 0, allow_nil: true}
25
31
 
32
+ validates :pct_advanced,
33
+ presence: true,
34
+ numericality: {greater_than: 0, less_than_or_equal_to: 100},
35
+ if: -> { advance? }
36
+ validates :pct_advanced,
37
+ absence: true,
38
+ if: -> { delivery? || direct? }
39
+ validates :pod_id,
40
+ presence: true,
41
+ if: -> { delivery? }
42
+ validates :pod_id,
43
+ absence: true,
44
+ if: -> { advance? }
45
+
26
46
  delegate(:order_number, to: :sales_order, prefix: false)
27
47
  delegate(:reference_no, to: :pod, prefix: true)
28
48
 
49
+ def delivery?
50
+ invoice_type == DELIVERY
51
+ end
52
+
53
+ def advance?
54
+ invoice_type == ADVANCE
55
+ end
56
+
57
+ def direct?
58
+ invoice_type == DIRECT
59
+ end
60
+
29
61
  def calculate_total_price
30
62
  self.total_price = calculate_total
31
63
  end
@@ -56,6 +88,7 @@ module Comee
56
88
  id
57
89
  sales_order_id
58
90
  invoice_no
91
+ invoice_type
59
92
  date_issued
60
93
  ship_name
61
94
  delivery_date
@@ -0,0 +1,7 @@
1
+ class UpdateInvoiceFields < ActiveRecord::Migration[7.1]
2
+ def change
3
+ change_column_null :comee_core_invoices, :pod_id, true
4
+ add_column :comee_core_invoices, :invoice_type, :string, default: "Delivery"
5
+ add_column :comee_core_invoices, :pct_advanced, :float, null: true
6
+ end
7
+ end
@@ -1,5 +1,5 @@
1
1
  module Comee
2
2
  module Core
3
- VERSION = "0.3.41".freeze
3
+ VERSION = "0.3.42".freeze
4
4
  end
5
5
  end
@@ -2,12 +2,14 @@ FactoryBot.define do
2
2
  factory :invoice, class: "Comee::Core::Invoice" do
3
3
  invoice_no { nil }
4
4
  sales_order
5
+ invoice_type { Comee::Core::Invoice::DELIVERY }
5
6
  pod
6
7
  date_issued { Date.current }
7
8
  due_date { Date.current.advance(days: 10) }
8
9
  total_price { 0 }
9
10
  amount_paid { 0 }
10
11
  payment_term { Faker::Lorem.sentence }
12
+ pct_advanced { nil }
11
13
  notifications_sent { 0 }
12
14
  status { Comee::Core::Invoice.statuses[:draft] }
13
15
  payment_status { Comee::Core::Invoice.payment_statuses[:not_paid] }
@@ -20,5 +22,16 @@ FactoryBot.define do
20
22
  trait :issued do
21
23
  status { Comee::Core::Invoice.statuses[:issued] }
22
24
  end
25
+
26
+ trait :advance do
27
+ invoice_type { Comee::Core::Invoice::ADVANCE }
28
+ pod { nil }
29
+ pct_advanced { 25 }
30
+ end
31
+
32
+ trait :direct do
33
+ invoice_type { Comee::Core::Invoice::DIRECT }
34
+ pct_advanced { nil }
35
+ end
23
36
  end
24
37
  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.3.41
4
+ version: 0.3.42
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-08-03 00:00:00.000000000 Z
11
+ date: 2024-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_model_serializers
@@ -535,6 +535,7 @@ files:
535
535
  - db/migrate/20240731080746_create_comee_core_credit_note_items.rb
536
536
  - db/migrate/20240731081502_create_comee_core_credit_note_additional_items.rb
537
537
  - db/migrate/20240803194006_change_reference_in_invoice_to_polymorphic.rb
538
+ - db/migrate/20240803231700_update_invoice_fields.rb
538
539
  - lib/comee/core.rb
539
540
  - lib/comee/core/engine.rb
540
541
  - lib/comee/core/version.rb