comee_core 0.3.33 → 0.3.34

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: e6c589c25e5e2b41ad83a56f366e896c5b7faf3688a83c9f5374fb32da59b627
4
- data.tar.gz: 1bf5521076bda84877681a8332fcd2164b3cd44f7b45e06e9cf77e07dcfbfb5d
3
+ metadata.gz: 9971c642206d96b99ecbda1d612bd2386dbefc6730f8a3e7f23def6361c78ffd
4
+ data.tar.gz: d9bd7b9810239fcf374985e89c547bf34c6281535894ac6b436a6119632b6f57
5
5
  SHA512:
6
- metadata.gz: 638fe7dbf70fff745c9141b57f436788d77ae03d2fd9ae684181504d3e9a5a024c65ce59cc7cbf4d85ba30b1bc3eabc2b2ea3706a00e76619a02f644d756f89a
7
- data.tar.gz: f81537b7037404f9ab7d4a911cee199b2909c33d7a021668a44864baa92d2dbbbe1130b1301fab00df96bc7b14b111c3d2d0e8a312c6ffae4baf47a9a7cc6494
6
+ metadata.gz: d0882a7a03c3df0a1ba03ea4adce54275646b98eb479fb5194bde80d2582f97b50fa325cda9342211947bc47b3f3cb48079b787cd7392bc0617654046849eb29
7
+ data.tar.gz: 1614c0c02b6078704698662d5578557c1379ef1e99a1f0fc3fe88b6072f95ad2caa24cdb597c80c24937c13aca527e766dde9caa325e5de1da34b29afc54fbe6
@@ -43,6 +43,7 @@ module Comee
43
43
  :serial_no,
44
44
  :customer_item_no,
45
45
  :customer_item_description,
46
+ :customer_item_alias,
46
47
  :quantity,
47
48
  :price,
48
49
  :total_price,
@@ -50,7 +51,8 @@ module Comee
50
51
  :canceled,
51
52
  :product_id,
52
53
  :customer_order_id,
53
- :unit_id
54
+ :unit_id,
55
+ :use_alias
54
56
  )
55
57
  end
56
58
  end
@@ -99,9 +99,9 @@ module Comee
99
99
  def model_params
100
100
  params.require(:payload)
101
101
  .permit(:sales_order_id, :customer_order_item_id, :product_id, :unit_id, :quantity, :quantity_delivered,
102
- :serial_no, :quantity_canceled, :customer_item_no, :customer_item_description, :price, :handover_date,
103
- :delivery_date, :eb_number, :lead_time, :comment, :action_note, :purchase_order_item_id, :pallet_no,
104
- :source_id, :processing_status)
102
+ :serial_no, :quantity_canceled, :customer_item_no, :customer_item_description, :customer_item_alias,
103
+ :use_alias, :price, :handover_date, :delivery_date, :eb_number, :lead_time, :comment, :action_note,
104
+ :purchase_order_item_id, :pallet_no, :source_id, :processing_status)
105
105
  end
106
106
 
107
107
  def cancel_quantity_params
@@ -1,10 +1,16 @@
1
1
  module Comee
2
2
  module Core
3
3
  class DeliveryNote < ApplicationRecord
4
+ before_validation :generate_reference_no, if: proc { |dn| dn.reference_no.nil? }
5
+
4
6
  belongs_to :pod
5
7
  has_many :shipment_instruction_items
6
8
 
7
- validates :reference_no, presence: true
9
+ validates :reference_no, presence: true, uniqueness: true
10
+
11
+ def generate_reference_no
12
+ self.reference_no = Util.generate_number("DeliveryNote", "reference_no", "DN")
13
+ end
8
14
  end
9
15
  end
10
16
  end
@@ -2,6 +2,7 @@ module Comee
2
2
  module Core
3
3
  class Invoice < ApplicationRecord
4
4
  before_validation :generate_invoice_no, if: proc { |inv| inv.invoice_no.nil? }
5
+ before_save :calculate_due_date, unless: proc { |inv| inv.date_issued.nil? }
5
6
 
6
7
  belongs_to :sales_order
7
8
  belongs_to :pod
@@ -14,7 +15,7 @@ module Comee
14
15
  enum :status, {draft: 0, approved: 1, issued: 2}
15
16
  enum :payment_status, {not_paid: 0, partially_paid: 1, fully_paid: 2, overpaid: 3}
16
17
 
17
- validates :invoice_no, uniqueness: true
18
+ validates :invoice_no, uniqueness: {case_sensitive: false}
18
19
  validates :status, :payment_status, presence: true
19
20
  validates :total_price, numericality: {greater_than_or_equal_to: 0, allow_nil: true}
20
21
  validates :amount_paid, numericality: {greater_than_or_equal_to: 0, allow_nil: true}
@@ -32,6 +33,10 @@ module Comee
32
33
  self.vat = (calculate_total * 0.19).round(2)
33
34
  end
34
35
 
36
+ def calculate_due_date
37
+ self.due_date = date_issued + 30.days
38
+ end
39
+
35
40
  def calculate_total
36
41
  items = InvoiceItem.where(invoice_id: id)
37
42
  additionals = AdditionalItem.where(invoice_id: id)
@@ -57,7 +62,8 @@ module Comee
57
62
  end
58
63
 
59
64
  def generate_invoice_no
60
- self.invoice_no = Util.generate_number("Invoice", "invoice_no")
65
+ year = Date.current.year.to_s
66
+ self.invoice_no = Util.generate_number("Invoice", "invoice_no", year, "-", 100001)
61
67
  end
62
68
  end
63
69
  end
@@ -46,7 +46,7 @@ module Comee
46
46
  end
47
47
 
48
48
  def generate_po_number
49
- self.po_number = Util.generate_number("PurchaseOrder", "po_number")
49
+ self.po_number = Util.generate_number("PurchaseOrder", "po_number", "PO")
50
50
  end
51
51
 
52
52
  def self.ransackable_associations(_auth_object = nil)
@@ -25,7 +25,7 @@ module Comee
25
25
  end
26
26
 
27
27
  def generate_requisition_no
28
- self.requisition_no = Util.generate_number("PurchaseRequisition", "requisition_no")
28
+ self.requisition_no = Util.generate_number("PurchaseRequisition", "requisition_no", "PR")
29
29
  end
30
30
  end
31
31
  end
@@ -80,7 +80,7 @@ module Comee
80
80
  end
81
81
 
82
82
  def generate_order_number
83
- self.order_number = Util.generate_number("SalesOrder", "order_number")
83
+ self.order_number = Util.generate_number("SalesOrder", "order_number", "SO")
84
84
  end
85
85
  end
86
86
  end
@@ -1,8 +1,8 @@
1
1
  module Comee
2
2
  module Core
3
3
  class CustomerOrderItemSerializer < ActiveModel::Serializer
4
- attributes :id, :serial_no, :customer_item_no, :customer_item_description, :quantity, :price, :total_price, :delivery_date,
5
- :canceled, :customer_order_id, :product_id, :unit_id
4
+ attributes :id, :serial_no, :customer_item_no, :customer_item_description, :customer_item_alias, :use_alias,
5
+ :quantity, :price, :total_price, :delivery_date, :canceled, :customer_order_id, :product_id, :unit_id
6
6
  belongs_to :product
7
7
  belongs_to :unit
8
8
  belongs_to :customer_order
@@ -1,9 +1,10 @@
1
1
  module Comee
2
2
  module Core
3
3
  class SalesOrderItemSerializer < ActiveModel::Serializer
4
- attributes :id, :serial_no, :customer_item_no, :customer_item_description, :quantity, :quantity_delivered, :quantity_canceled,
5
- :price, :handover_date, :delivery_date, :eb_number, :lead_time, :comment, :action_note, :purchase_order_item_id,
6
- :price_diff, :quantity_diff, :total_price, :canceled, :processing_status, :additional_details, :created_at
4
+ attributes :id, :serial_no, :customer_item_no, :customer_item_description, :customer_item_alias, :use_alias, :quantity,
5
+ :quantity_delivered, :quantity_canceled, :price, :handover_date, :delivery_date, :eb_number, :lead_time,
6
+ :comment, :action_note, :purchase_order_item_id, :price_diff, :quantity_diff, :total_price, :canceled,
7
+ :processing_status, :additional_details, :created_at
7
8
  belongs_to :sales_order
8
9
  belongs_to :customer_order_item
9
10
  belongs_to :source
@@ -217,6 +217,7 @@ module Comee
217
217
  delivery_date: item.delivery_date,
218
218
  handover_date: order.handover_date,
219
219
  lead_time: master_price&.lead_time,
220
+ use_alias: item.use_alias,
220
221
  additional_details: {
221
222
  supplier_id: master_price.supplier_id,
222
223
  supplier_name: master_price.supplier.name,
@@ -3,21 +3,28 @@ module Comee
3
3
  class Util
4
4
  # This method generates document numbers with a certain prefix
5
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
- }
6
+ def self.generate_number(clz, field, prefix, sep = nil, start = 1)
7
+ # clz_hash = {
8
+ # "PurchaseRequisition" => "PR",
9
+ # "PurchaseOrder" => "PO",
10
+ # "Invoice" => "IN",
11
+ # "SalesOrder" => "SO",
12
+ # "DeliveryNote" => "DN"
13
+ # }
13
14
  clazz_name = "Comee::Core::#{clz}"
14
15
  clazz = clazz_name.constantize
15
16
  last = clazz.last
16
17
 
17
- return "#{clz_hash[clz]}1" unless last
18
+ return "#{prefix}#{sep}#{start}" unless last
18
19
 
19
- num = last.send(field)[2..].to_i
20
- "#{clz_hash[clz]}#{num + 1}"
20
+ index = prefix.length
21
+ val = last.send(field)
22
+ pref = val.slice(0, index)
23
+ suff = sep ? val.slice(index + 1, val.length).to_i : val.slice(index, val.length).to_i
24
+
25
+ return "#{prefix}#{sep}#{start}" unless prefix == pref
26
+
27
+ "#{prefix}#{sep}#{suff + 1}"
21
28
  end
22
29
  end
23
30
  end
@@ -0,0 +1,6 @@
1
+ class AddUseAliasFieldToLineItems < ActiveRecord::Migration[7.1]
2
+ def change
3
+ add_column :comee_core_customer_order_items, :use_alias, :boolean, default: false
4
+ add_column :comee_core_sales_order_items, :use_alias, :boolean, default: false
5
+ end
6
+ end
@@ -1,5 +1,5 @@
1
1
  module Comee
2
2
  module Core
3
- VERSION = "0.3.33".freeze
3
+ VERSION = "0.3.34".freeze
4
4
  end
5
5
  end
@@ -6,11 +6,13 @@ FactoryBot.define do
6
6
  unit
7
7
  customer_item_no { Faker::Alphanumeric.alpha(number: 10) }
8
8
  customer_item_description { Faker::Lorem.sentence }
9
+ customer_item_alias { Faker::Alphanumeric.alpha(number: 10) }
9
10
  quantity { 1 }
10
11
  price { 1.5 }
11
12
  total_price { quantity * price }
12
13
  delivery_date { Date.current }
13
14
  canceled { false }
15
+ use_alias { false }
14
16
 
15
17
  trait :with_inventory do
16
18
  after(:create) do |item|
@@ -1,6 +1,6 @@
1
1
  FactoryBot.define do
2
2
  factory :delivery_note, class: "Comee::Core::DeliveryNote" do
3
3
  pod
4
- reference_no { Faker::Alphanumeric.alpha(number: 10) }
4
+ reference_no { nil }
5
5
  end
6
6
  end
@@ -10,6 +10,7 @@ FactoryBot.define do
10
10
  customer_item_no { Faker::Alphanumeric.alpha(number: 10) }
11
11
  customer_item_alias { Faker::Alphanumeric.alpha(number: 10) }
12
12
  customer_item_description { Faker::Lorem.sentence }
13
+ use_alias { false }
13
14
  quantity { customer_order_item.quantity }
14
15
  quantity_diff { 0 }
15
16
  quantity_delivered { 0 }
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.33
4
+ version: 0.3.34
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-07-18 00:00:00.000000000 Z
11
+ date: 2024-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_model_serializers
@@ -526,6 +526,7 @@ files:
526
526
  - db/migrate/20240630122016_create_comee_core_additional_services.rb
527
527
  - db/migrate/20240716143922_add_customer_item_alias_to_customer_and_sales_order.rb
528
528
  - db/migrate/20240718103456_make_delivery_note_no_and_goods_issue_date_optional.rb
529
+ - db/migrate/20240720091730_add_use_alias_field_to_line_items.rb
529
530
  - lib/comee/core.rb
530
531
  - lib/comee/core/engine.rb
531
532
  - lib/comee/core/version.rb