Class: ReservedSerialNumber

Inherits:
ApplicationRecord show all
Defined in:
app/models/reserved_serial_number.rb

Overview

== Schema Information

Table name: reserved_serial_numbers
Database name: primary

id :integer not null, primary key
is_committed :boolean
qty :integer
created_at :datetime
updated_at :datetime
line_item_id :integer not null
original_serial_number_id :integer
serial_number_id :integer

Indexes

index_reserved_serial_numbers_on_line_item_id (line_item_id)
index_reserved_serial_numbers_on_serial_number_id (serial_number_id)

Foreign Keys

fk_rails_... (line_item_id => line_items.id) ON DELETE => cascade

Constant Summary

Constants included from Models::Schedulable

Models::Schedulable::SIMPLE_FORM_OPTIONS

Instance Attribute Summary collapse

Belongs to collapse

Delegated Instance Attributes collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from ApplicationRecord

ransackable_associations, ransackable_attributes, ransackable_scopes, ransortable_attributes, #to_relation

Methods included from Models::Schedulable

config

Methods included from Models::AfterCommittable

#after_commit

Methods included from Models::EventPublishable

#publish_event

Instance Attribute Details

#qtyInteger (readonly)

Returns:

  • (Integer)

Validations:



34
# File 'app/models/reserved_serial_number.rb', line 34

validates :serial_number, :line_item, :qty, presence: true

Class Method Details

.committedActiveRecord::Relation<ReservedSerialNumber>

A relation of ReservedSerialNumbers that are committed. Active Record Scope

Returns:

See Also:



37
# File 'app/models/reserved_serial_number.rb', line 37

scope :committed, -> { where(is_committed: true) }

.was_splitActiveRecord::Relation<ReservedSerialNumber>

A relation of ReservedSerialNumbers that are was split. Active Record Scope

Returns:

See Also:



36
# File 'app/models/reserved_serial_number.rb', line 36

scope :was_split, -> { where("reserved_serial_numbers.serial_number_id != reserved_serial_numbers.original_serial_number_id") }

Instance Method Details

#line_itemLineItem?

Returns:

Validations:



31
# File 'app/models/reserved_serial_number.rb', line 31

belongs_to :line_item, optional: true

#numberObject

Alias for Serial_number#number

Returns:

  • (Object)

    Serial_number#number

See Also:



39
# File 'app/models/reserved_serial_number.rb', line 39

delegate :number, to: :serial_number

#original_serial_numberSerialNumber?

Returns:



29
# File 'app/models/reserved_serial_number.rb', line 29

belongs_to :original_serial_number, class_name: "SerialNumber", optional: true

#rejoin_serial_numbervoid

This method returns an undefined value.

Rejoins a previously split serial number back to its original.



52
53
54
55
56
57
58
59
# File 'app/models/reserved_serial_number.rb', line 52

def rejoin_serial_number
  return unless original_serial_number

  split_serial_number = serial_number
  orig_serial_number = original_serial_number
  update(serial_number_id: original_serial_number_id, original_serial_number_id: nil)
  orig_serial_number.rejoin(split_serial_number)
end

#serial_numberInteger

Returns:

  • (Integer)


27
# File 'app/models/reserved_serial_number.rb', line 27

belongs_to :serial_number, optional: true

#split_serial_numbervoid

This method returns an undefined value.

Splits the serial number when quantity is less than the full serial number quantity.



43
44
45
46
47
48
# File 'app/models/reserved_serial_number.rb', line 43

def split_serial_number
  return unless qty < serial_number.qty

  new_serial_number = serial_number.split(qty)
  update(serial_number_id: new_serial_number.id, original_serial_number_id: serial_number_id)
end

#was_split?Boolean

Returns:

  • (Boolean)


62
63
64
# File 'app/models/reserved_serial_number.rb', line 62

def was_split?
  serial_number_id != original_serial_number_id
end