Sha256: d9fe689367af0b9b34ae1194e49d3b00501477c8fc57b18d65deb42a6c7eab13

Contents?: true

Size: 1.68 KB

Versions: 94

Compression:

Stored size: 1.68 KB

Contents

module Comee
  module Core
    class PurchaseRequisitionItem < ApplicationRecord
      before_save :calculate_total_price
      after_save :calculate_requisition_price
      after_save :update_requisition_purchase_status, if: proc { |item| item.fully_processed? }

      enum processing_status: {unprocessed: 0, partially_processed: 1, fully_processed: 2}

      belongs_to :product
      belongs_to :unit
      belongs_to :supplier
      belongs_to :purchase_requisition
      belongs_to :purchase_order_item, optional: true

      validates :processing_status, :delivery_date, presence: true
      validates :quantity, :price, presence: true, numericality: {greater_than_or_equal_to: 0}

      def calculate_total_price
        self.total_price = price * quantity
      end

      def calculate_requisition_price
        purchase_requisition.total_price = purchase_requisition.calculate_total_price
        purchase_requisition.save!
      end

      def update_requisition_purchase_status
        return unless purchase_requisition.purchase_requisition_items.all.all?(&:fully_processed?)

        purchase_requisition.purchase_status = PurchaseRequisition.purchase_statuses[:processed]
        purchase_requisition.save!
      end

      def self.ransackable_attributes(_auth_object = nil)
        %w[
          delivery_date
          id
          price
          processing_status
          product_id
          purchase_order_item_id
          purchase_requisition_id
          quantity
          supplier_id
          total_price
          unit_id
          created_at
          updated_at
        ]
      end

      def self.ransackable_associations(_auth_object = nil)
        []
      end
    end
  end
end

Version data entries

94 entries across 94 versions & 1 rubygems

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