Sha256: ad09ae73a9a3168e8792ec50878dd4a35c971f1d7187fe8e89a57ff8e0595378
Contents?: true
Size: 1.73 KB
Versions: 16
Compression:
Stored size: 1.73 KB
Contents
module Ecom module Core class ResourceRequisitionItem < ApplicationRecord PENDING = 'Pending'.freeze APPROVED = 'Approved'.freeze REJECTED = 'Rejected'.freeze STATUSES = [PENDING, APPROVED, REJECTED].freeze belongs_to :resource_requisition belongs_to :resource_type belongs_to :requested_quantity_measurement_unit, class_name: 'Ecom::Core::MeasurementUnit' belongs_to :awaiting_quantity_measurement_unit, class_name: 'Ecom::Core::MeasurementUnit' validates :due_date, presence: true validates :requested_quantity, presence: true, numericality: { greater_than: 0 } validates :awaiting_quantity, presence: true, numericality: { greater_than: 0 } validates :status, presence: true, inclusion: STATUSES validate :quantity_validator def quantity_validator if requested_quantity.nil? || awaiting_quantity.nil? || requested_quantity_measurement_unit_id.nil? || awaiting_quantity_measurement_unit_id.nil? return end requested_quantity_measurement_unit = Ecom::Core::MeasurementUnit.find_by(id: requested_quantity_measurement_unit_id) awaiting_quantity_measurement_unit = Ecom::Core::MeasurementUnit.find_by(id: awaiting_quantity_measurement_unit_id) requested_quantity_in_si_unit = requested_quantity / requested_quantity_measurement_unit.conversion_factor awaiting_quantity_in_si_unit = awaiting_quantity / awaiting_quantity_measurement_unit.conversion_factor return unless awaiting_quantity_in_si_unit > requested_quantity_in_si_unit errors.add(:awaiting_quantity, 'awaiting quantity can not be greater than requested quantity') end end end end
Version data entries
16 entries across 16 versions & 1 rubygems