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

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

#publish_event

Instance Attribute Details

#qtyObject (readonly)



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

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:



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

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

.was_splitActiveRecord::Relation<ReservedSerialNumber>

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

Returns:

See Also:



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

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:



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

belongs_to :line_item, optional: true

#numberObject

Alias for Serial_number#number

Returns:

  • (Object)

    Serial_number#number

See Also:



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

delegate :number, to: :serial_number

#original_serial_numberSerialNumber



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

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

#rejoin_serial_numberObject



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

def rejoin_serial_number
	if original_serial_number
		split_serial_number = serial_number
		orig_serial_number = original_serial_number
		self.update(serial_number_id: original_serial_number_id, :original_serial_number_id => nil)
		orig_serial_number.rejoin(split_serial_number)
	end
end

#serial_numberSerialNumber

Validations:



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

belongs_to :serial_number, optional: true

#split_serial_numberObject



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

def split_serial_number
	if qty < serial_number.qty
		new_serial_number = serial_number.split(qty)
		self.update(serial_number_id: new_serial_number.id, :original_serial_number_id => serial_number_id)
	end
end

#was_split?Boolean

Returns:

  • (Boolean)


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

def was_split?
	serial_number_id != original_serial_number_id
end