comee_core 0.2.77 → 0.2.78

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: 67f60892b641a96e68c79d6abad6c4a2d22c6d1f0f8b5f146868045b25dc854d
4
- data.tar.gz: eb47395320794e11719f4ade052386c16c4f860c2ee963a80afb92f995ca5314
3
+ metadata.gz: db149c577c382a2c6391f5b4c0592fc47232b8fefdd539c89466090faae94589
4
+ data.tar.gz: 89e2db779b311190a5a613724797f4ba508cf4e3d30852b5b9ce4afb71fc5591
5
5
  SHA512:
6
- metadata.gz: 93a6951c69e987c7c7fde0a7468e159dba7e2dae57890a899d998b90fe1809e8a7e372f0360cc08b1b8ff02316d3e2e628fa7e3ce7ae8b8cca009a5ef5542394
7
- data.tar.gz: 8b16d2e2b22c9e7b76a799d6404a5378f6992aede3fdb025be7daf8622d3045149aef7a7812e11b2dffc17b727a15bd1d950e0982612c2236c69d5e4631d3951
6
+ metadata.gz: 0b55050b8f0038213ca45891c432dad8704d62f0b1c6be93e0c71e27076d4abc6617101fcbb4cb3c5b7cb77d4a1f2862365966793161ee563fdbdd7e659848d4
7
+ data.tar.gz: '04198d263b312bdc81842202bddc54fb9e73b9b7b916bdeb6392eb0549f3b4abc59be68ab6b09b93669404007ee5b5635658dcba95d321520171546d24f4dd91'
@@ -1,6 +1,8 @@
1
1
  module Comee
2
2
  module Core
3
3
  class Invoice < ApplicationRecord
4
+ before_validation :generate_invoice_no, if: proc { |inv| inv.invoice_no.nil? }
5
+
4
6
  belongs_to :sales_order
5
7
  belongs_to :pod
6
8
  has_many :invoice_items
@@ -12,7 +14,7 @@ module Comee
12
14
  enum :status, {draft: 0, approved: 1, issued: 2}
13
15
  enum :payment_status, {not_paid: 0, partially_paid: 1, fully_paid: 2, overpaid: 3}
14
16
 
15
- validates :invoice_no, presence: true, uniqueness: true
17
+ validates :invoice_no, uniqueness: true
16
18
  validates :status, :payment_status, presence: true
17
19
  validates :total_price, numericality: {greater_than_or_equal_to: 0, allow_nil: true}
18
20
  validates :amount_paid, numericality: {greater_than_or_equal_to: 0, allow_nil: true}
@@ -42,6 +44,10 @@ module Comee
42
44
  def self.ransackable_associations(_auth_object = nil)
43
45
  ["sales_order"]
44
46
  end
47
+
48
+ def generate_invoice_no
49
+ self.invoice_no = Util.generate_number("Invoice", "invoice_no")
50
+ end
45
51
  end
46
52
  end
47
53
  end
@@ -2,11 +2,12 @@ module Comee
2
2
  module Core
3
3
  class PurchaseOrder < ApplicationRecord
4
4
  before_save :total_price
5
+ before_validation :generate_po_number, if: proc { |po| po.po_number.nil? }
5
6
 
6
7
  belongs_to :supplier
7
8
  has_many :purchase_order_items
8
9
 
9
- validates :po_number, presence: true, uniqueness: true
10
+ validates :po_number, uniqueness: true
10
11
  validates :order_date, :delivery_address, :status, :delivery_date, presence: true
11
12
  enum status: {
12
13
  draft: 0,
@@ -35,6 +36,10 @@ module Comee
35
36
  ]
36
37
  end
37
38
 
39
+ def generate_po_number
40
+ self.po_number = Util.generate_number("PurchaseOrder", "po_number")
41
+ end
42
+
38
43
  def self.ransackable_associations(_auth_object = nil)
39
44
  %w[supplier unit]
40
45
  end
@@ -1,14 +1,14 @@
1
1
  module Comee
2
2
  module Core
3
3
  class PurchaseRequisition < ApplicationRecord
4
- # before_save :calculate_total_price
4
+ before_validation :generate_requisition_no, if: proc { |pr| pr.requisition_no.nil? }
5
5
 
6
6
  has_many :purchase_requisition_items
7
7
 
8
8
  enum :status, {draft: 0, submitted: 1, approved: 2, rejected: 3}
9
9
  enum :purchase_status, {unprocessed: 0, processed: 1}
10
10
 
11
- validates :requisition_no, presence: true, uniqueness: true
11
+ validates :requisition_no, uniqueness: true
12
12
  validates :requisition_date, :status, :purchase_status, presence: true
13
13
 
14
14
  def self.ransackable_attributes(_auth_object = nil)
@@ -23,6 +23,10 @@ module Comee
23
23
  items = PurchaseRequisitionItem.where(purchase_requisition_id: id)
24
24
  self.total_price = items.sum(&:total_price)
25
25
  end
26
+
27
+ def generate_requisition_no
28
+ self.requisition_no = Util.generate_number("PurchaseRequisition", "requisition_no")
29
+ end
26
30
  end
27
31
  end
28
32
  end
@@ -1,6 +1,8 @@
1
1
  module Comee
2
2
  module Core
3
3
  class SalesOrder < ApplicationRecord
4
+ before_validation :generate_order_number, if: proc { |so| so.order_number.nil? }
5
+
4
6
  before_save :total_price
5
7
  before_save :set_parent_client_name
6
8
 
@@ -49,6 +51,10 @@ module Comee
49
51
  def files_url
50
52
  files.attached? ? files.map { |file| Rails.application.routes.url_helpers.rails_blob_url(file, only_path: false) } : []
51
53
  end
54
+
55
+ def generate_order_number
56
+ self.order_number = Util.generate_number("SalesOrder", "order_number")
57
+ end
52
58
  end
53
59
  end
54
60
  end
@@ -0,0 +1,24 @@
1
+ module Comee
2
+ module Core
3
+ class Util
4
+ # This method generates document numbers with a certain prefix
5
+ # and a serial suffix
6
+ def self.generate_number(clz, field)
7
+ clz_hash = {
8
+ "PurchaseRequisition" => "PR",
9
+ "PurchaseOrder" => "PO",
10
+ "Invoice" => "IN",
11
+ "SalesOrder" => "SO"
12
+ }
13
+ clazz_name = "Comee::Core::#{clz}"
14
+ clazz = clazz_name.constantize
15
+ last = clazz.last
16
+
17
+ return "#{clz_hash[clz]}1" unless last
18
+
19
+ num = last.send(field)[2..].to_i
20
+ "#{clz_hash[clz]}#{num + 1}"
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,5 +1,5 @@
1
1
  module Comee
2
2
  module Core
3
- VERSION = "0.2.77".freeze
3
+ VERSION = "0.2.78".freeze
4
4
  end
5
5
  end
@@ -1,6 +1,6 @@
1
1
  FactoryBot.define do
2
2
  factory :invoice, class: "Comee::Core::Invoice" do
3
- invoice_no { Faker::Alphanumeric.alpha(number: 8) }
3
+ invoice_no { nil }
4
4
  sales_order
5
5
  pod
6
6
  date_issued { Date.current }
@@ -1,6 +1,6 @@
1
1
  FactoryBot.define do
2
2
  factory :purchase_order, class: "Comee::Core::PurchaseOrder" do
3
- po_number { Faker::Alphanumeric.alpha(number: 20) }
3
+ po_number { nil }
4
4
  supplier
5
5
  order_date { Date.current }
6
6
  status { 0 }
@@ -1,6 +1,6 @@
1
1
  FactoryBot.define do
2
2
  factory :purchase_requisition, class: "Comee::Core::PurchaseRequisition" do
3
- requisition_no { Faker::Alphanumeric.alpha(number: 10) }
3
+ requisition_no { nil } # { Faker::Alphanumeric.alpha(number: 10) }
4
4
  requisition_date { Date.current }
5
5
  delivery_date { Date.current.advance(days: 10) }
6
6
  remark { Faker::Lorem.sentence }
@@ -1,6 +1,6 @@
1
1
  FactoryBot.define do
2
2
  factory :sales_order, class: "Comee::Core::SalesOrder" do
3
- order_number { Faker::Alphanumeric.alpha(number: 10) }
3
+ order_number { nil }
4
4
  order_date { Date.current }
5
5
  customer_order
6
6
  fulfillment_center
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.77
4
+ version: 0.2.78
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-06-01 00:00:00.000000000 Z
11
+ date: 2024-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_model_serializers
@@ -402,6 +402,7 @@ files:
402
402
  - app/services/comee/core/sales_order_service.rb
403
403
  - app/services/comee/core/token_service.rb
404
404
  - app/utils/comee/core/period.rb
405
+ - app/utils/comee/core/util.rb
405
406
  - app/validators/array_validator.rb
406
407
  - app/views/comee/core/supplier_mailer/new_order_notification.html.erb
407
408
  - app/views/layouts/comee/core/mailer.html.erb