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 Schedulable

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 Schedulable

config

Methods included from Models::AfterCommittable

#after_commit

Methods included from Models::EventPublishable

#publish_event

Instance Attribute Details

#qtyObject (readonly)



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

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:



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

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

.was_splitActiveRecord::Relation<ReservedSerialNumber>

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

Returns:

See Also:



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

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

Instance Method Details

#line_itemLineItem

Returns:

See Also:

Validations:



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

belongs_to :line_item, optional: true

#numberObject

Alias for Serial_number#number

Returns:

  • (Object)

    Serial_number#number

See Also:



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

delegate :number, to: :serial_number

#original_serial_numberSerialNumber



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

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

#rejoin_serial_numberObject



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

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_numberSerialNumber

Validations:



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

belongs_to :serial_number, optional: true

#split_serial_numberObject



37
38
39
40
41
42
# File 'app/models/reserved_serial_number.rb', line 37

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)


53
54
55
# File 'app/models/reserved_serial_number.rb', line 53

def was_split?
  serial_number_id != original_serial_number_id
end