comee_core 0.3.33 → 0.3.34

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