Sha256: e3da290d77f1348b91d13f2cee25709de64a4750de7b7021d3f2873a9a38c012

Contents?: true

Size: 1.8 KB

Versions: 21

Compression:

Stored size: 1.8 KB

Contents

module Comee
  module Core
    class PurchaseOrderItem < ApplicationRecord
      before_save :calculate_total_price, :calculate_confirmation_values
      after_save :update_purchase_order
      after_destroy :update_purchase_order

      has_one :purchase_order_item_diff

      enum status: {active: 0, canceled: 1}

      belongs_to :purchase_order
      belongs_to :product
      belongs_to :unit

      validates :quantity, presence: true, numericality: {greater_than: 0}
      validates :price, presence: true, numericality: {greater_than_or_equal_to: 0}
      validates :status, :delivery_date, presence: true
      validates :serial_no, presence: true, numericality: {greater_than: 0, only_integer: true}

      delegate(:po_number, to: :purchase_order, prefix: false)

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

      def calculate_confirmation_values
        self.confirmed_price = price unless confirmed_price

        self.confirmed_quantity = quantity unless confirmed_quantity

        self.confirmed_delivery_date = delivery_date unless confirmed_delivery_date

        self.confirmed_total_price = (confirmed_price * confirmed_quantity).round(2)
      end

      def update_purchase_order
        purchase_order.calculate_total_price
        purchase_order.calculate_vat
        purchase_order.save!
      end

      def self.ransackable_attributes(_auth_object = nil)
        %w[
          id
          purchase_order_id
          unit_id
          quantity
          confirmed_quantity
          price
          confirmed_price
          delivery_date
          confirmed_delivery_date
          status
        ]
      end

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

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
comee_core-0.3.36 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.35 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.34 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.33 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.32 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.31 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.30 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.29 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.28 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.27 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.26 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.25 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.24 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.23 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.22 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.21 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.20 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.19 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.18 app/models/comee/core/purchase_order_item.rb
comee_core-0.3.17 app/models/comee/core/purchase_order_item.rb