comee_core 0.2.77 → 0.2.80

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: c856b39462e1a5e71b4e0398036d1daa01f60d79164a64f990bc5c7bdc9e34ca
4
+ data.tar.gz: 52c91c793ac39d46498947f1a6029e033bb1d783b26a95ff263a183f593bb87d
5
5
  SHA512:
6
- metadata.gz: 93a6951c69e987c7c7fde0a7468e159dba7e2dae57890a899d998b90fe1809e8a7e372f0360cc08b1b8ff02316d3e2e628fa7e3ce7ae8b8cca009a5ef5542394
7
- data.tar.gz: 8b16d2e2b22c9e7b76a799d6404a5378f6992aede3fdb025be7daf8622d3045149aef7a7812e11b2dffc17b727a15bd1d950e0982612c2236c69d5e4631d3951
6
+ metadata.gz: ddaf17d4909e3acbf5c59553e4b1f06c49997df81b8aaab402bfb47065feca08a6dc88d50f321c0ad28f8dd42dda47e57417fe0bd6fc09b971ccf6eebc49c467
7
+ data.tar.gz: 72716a00dd82da58da08db687205b4a20f4194fd6d815481a04b99089f0de8cc8647d50d41be62c1054f306989fcf45f62af1dbef53b156b0243f71f0b1f1001
@@ -17,7 +17,7 @@ module Comee
17
17
  private
18
18
 
19
19
  def model_params
20
- params.require(:payload).permit(:code, :name, :address, :locale, :payment_terms, :currency_id)
20
+ params.require(:payload).permit(:code, :name, :address, :locale, :payment_terms, :currency_id, :vat_number, :tax_code)
21
21
  end
22
22
  end
23
23
  end
@@ -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
@@ -1,12 +1,13 @@
1
1
  module Comee
2
2
  module Core
3
3
  class PurchaseOrder < ApplicationRecord
4
- before_save :total_price
4
+ before_validation :generate_po_number, if: proc { |po| po.po_number.nil? }
5
+ before_save :total_price, :set_terms
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,
@@ -32,12 +33,23 @@ module Comee
32
33
  status
33
34
  delivery_address
34
35
  delivery_date
36
+ order_reference
35
37
  ]
36
38
  end
37
39
 
40
+ def generate_po_number
41
+ self.po_number = Util.generate_number("PurchaseOrder", "po_number")
42
+ end
43
+
38
44
  def self.ransackable_associations(_auth_object = nil)
39
45
  %w[supplier unit]
40
46
  end
47
+
48
+ def set_terms
49
+ return if terms
50
+
51
+ self.terms = supplier.payment_terms
52
+ end
41
53
  end
42
54
  end
43
55
  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
@@ -2,7 +2,7 @@ module Comee
2
2
  module Core
3
3
  class PurchaseOrderSerializer < ActiveModel::Serializer
4
4
  attributes :id, :po_number, :supplier_id, :order_date, :status, :delivery_address, :delivery_date, :terms, :total_price,
5
- :created_at, :updated_at
5
+ :order_reference, :created_at, :updated_at
6
6
  belongs_to :supplier
7
7
  end
8
8
  end
@@ -1,7 +1,7 @@
1
1
  module Comee
2
2
  module Core
3
3
  class SupplierSerializer < ActiveModel::Serializer
4
- attributes :id, :code, :name, :address, :locale, :user_id, :payment_terms
4
+ attributes :id, :code, :name, :address, :locale, :user_id, :payment_terms, :tax_code, :vat_number
5
5
  belongs_to :currency
6
6
  end
7
7
  end
@@ -139,7 +139,6 @@ module Comee
139
139
  sales_order = nil
140
140
  CustomerOrder.transaction do
141
141
  sales_order = SalesOrder.create!(
142
- order_number: order.order_number,
143
142
  order_date: order.order_date,
144
143
  customer_order: order,
145
144
  status: SalesOrder.statuses[:draft],
@@ -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
@@ -0,0 +1,5 @@
1
+ class AddOrderReferenceToPurchaseOrder < ActiveRecord::Migration[7.1]
2
+ def change
3
+ add_column :comee_core_purchase_orders, :order_reference, :string, null: true
4
+ end
5
+ end
@@ -1,5 +1,5 @@
1
1
  module Comee
2
2
  module Core
3
- VERSION = "0.2.77".freeze
3
+ VERSION = "0.2.80".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,7 @@
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
+ order_reference { Faker::Alphanumeric.alpha(number: 8) }
4
5
  supplier
5
6
  order_date { Date.current }
6
7
  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.80
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-04 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
@@ -471,6 +472,7 @@ files:
471
472
  - db/migrate/20240503040722_create_comee_core_client_addresses.rb
472
473
  - db/migrate/20240515173010_add_serial_no_to_line_items.rb
473
474
  - db/migrate/20240601094028_add_additional_fields.rb
475
+ - db/migrate/20240602171355_add_order_reference_to_purchase_order.rb
474
476
  - lib/comee/core.rb
475
477
  - lib/comee/core/engine.rb
476
478
  - lib/comee/core/version.rb