Sha256: 7c463cf6029c962843c35f9c6bc4336129403bb3c03470aceaa0f3694b5e0320

Contents?: true

Size: 1.44 KB

Versions: 24

Compression:

Stored size: 1.44 KB

Contents

module Comee
  module Core
    class CustomerOrderItem < ApplicationRecord
      default_scope { order(serial_no: :asc) }

      before_save :calculate_total_price, :fetch_customer_item_alias

      belongs_to :customer_order
      belongs_to :product
      belongs_to :unit

      validates :serial_no, :customer_item_no, :customer_item_description, :quantity, :price, :delivery_date, presence: true
      validates :quantity, :price, numericality: {greater_than_or_equal_to: 0}
      validates :total_price, numericality: {greater_than_or_equal_to: 0}, allow_nil: true
      validates :serial_no, numericality: {greater_than: 0, only_integer: true}

      def calculate_total_price
        self.total_price = (price * quantity).round(2)
      end

      def fetch_customer_item_alias
        self.customer_item_alias = "" unless customer_order && product_id
        client_id = customer_order.client.parent_id || customer_order.client_id
        lookup = ProductLookup.find_by(
          itemable_id: client_id,
          itemable_type: "Comee::Core::Client",
          product_id: product_id
        )
        self.customer_item_alias = lookup&.aliases
      end

      def self.ransackable_attributes(_auth_object = nil)
        %w[id customer_order_id product_id unit_id customer_item_no customer_item_description delivery_date]
      end

      def self.ransackable_associations(_auth_object = nil)
        %w[customer_order product unit]
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
comee_core-0.3.62 app/models/comee/core/customer_order_item.rb
comee_core-0.3.61 app/models/comee/core/customer_order_item.rb
comee_core-0.3.60 app/models/comee/core/customer_order_item.rb
comee_core-0.3.59 app/models/comee/core/customer_order_item.rb
comee_core-0.3.58 app/models/comee/core/customer_order_item.rb
comee_core-0.3.57 app/models/comee/core/customer_order_item.rb
comee_core-0.3.56 app/models/comee/core/customer_order_item.rb
comee_core-0.3.55 app/models/comee/core/customer_order_item.rb
comee_core-0.3.54 app/models/comee/core/customer_order_item.rb
comee_core-0.3.53 app/models/comee/core/customer_order_item.rb
comee_core-0.3.51 app/models/comee/core/customer_order_item.rb
comee_core-0.3.50 app/models/comee/core/customer_order_item.rb
comee_core-0.3.49 app/models/comee/core/customer_order_item.rb
comee_core-0.3.48 app/models/comee/core/customer_order_item.rb
comee_core-0.3.47 app/models/comee/core/customer_order_item.rb
comee_core-0.3.46 app/models/comee/core/customer_order_item.rb
comee_core-0.3.45 app/models/comee/core/customer_order_item.rb
comee_core-0.3.44 app/models/comee/core/customer_order_item.rb
comee_core-0.3.43 app/models/comee/core/customer_order_item.rb
comee_core-0.3.42 app/models/comee/core/customer_order_item.rb