Class: ReservedSerialNumber
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- ReservedSerialNumber
- 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
- #qty ⇒ Integer readonly
Belongs to collapse
Delegated Instance Attributes collapse
-
#number ⇒ Object
Alias for Serial_number#number.
Class Method Summary collapse
-
.committed ⇒ ActiveRecord::Relation<ReservedSerialNumber>
A relation of ReservedSerialNumbers that are committed.
-
.was_split ⇒ ActiveRecord::Relation<ReservedSerialNumber>
A relation of ReservedSerialNumbers that are was split.
Instance Method Summary collapse
-
#rejoin_serial_number ⇒ void
Rejoins a previously split serial number back to its original.
-
#split_serial_number ⇒ void
Splits the serial number when quantity is less than the full serial number quantity.
- #was_split? ⇒ Boolean
Methods inherited from ApplicationRecord
ransackable_associations, ransackable_attributes, ransackable_scopes, ransortable_attributes, #to_relation
Methods included from Models::Schedulable
Methods included from Models::AfterCommittable
Methods included from Models::EventPublishable
Instance Attribute Details
#qty ⇒ Integer (readonly)
Validations:
34 |
# File 'app/models/reserved_serial_number.rb', line 34 validates :serial_number, :line_item, :qty, presence: true |
Class Method Details
.committed ⇒ ActiveRecord::Relation<ReservedSerialNumber>
A relation of ReservedSerialNumbers that are committed. Active Record Scope
37 |
# File 'app/models/reserved_serial_number.rb', line 37 scope :committed, -> { where(is_committed: true) } |
.was_split ⇒ ActiveRecord::Relation<ReservedSerialNumber>
A relation of ReservedSerialNumbers that are was split. Active Record Scope
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_item ⇒ LineItem?
Validations:
31 |
# File 'app/models/reserved_serial_number.rb', line 31 belongs_to :line_item, optional: true |
#number ⇒ Object
Alias for Serial_number#number
39 |
# File 'app/models/reserved_serial_number.rb', line 39 delegate :number, to: :serial_number |
#original_serial_number ⇒ SerialNumber?
29 |
# File 'app/models/reserved_serial_number.rb', line 29 belongs_to :original_serial_number, class_name: "SerialNumber", optional: true |
#rejoin_serial_number ⇒ void
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_number ⇒ Integer
27 |
# File 'app/models/reserved_serial_number.rb', line 27 belongs_to :serial_number, optional: true |
#split_serial_number ⇒ void
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
62 63 64 |
# File 'app/models/reserved_serial_number.rb', line 62 def was_split? serial_number_id != original_serial_number_id end |