Sha256: 983e314a5257e303e698df25dedeb8a1a788f1ffc528a918f1eba1484db97f9d
Contents?: true
Size: 1.96 KB
Versions: 5
Compression:
Stored size: 1.96 KB
Contents
module Comee module Core class SalesOrderItem < ApplicationRecord before_save :calculate_total_price after_save :update_sales_order_purchase_status, if: proc { |item| item.fully_processed? } enum processing_status: {unprocessed: 0, partially_processed: 1, fully_processed: 2} belongs_to :sales_order belongs_to :customer_order_item belongs_to :product belongs_to :unit belongs_to :source, class_name: "Comee::Core::FulfillmentCenter", optional: true belongs_to :purchase_order_item, optional: true has_many :shipment_items validates :customer_item_no, :customer_item_description, :delivery_date, :processing_status, presence: true validates :quantity, :price, presence: true, numericality: {greater_than: 0} validates :quantity_delivered, :quantity_canceled, numericality: {greater_than_or_equal_to: 0} delegate(:po_number, to: :purchase_order_item, prefix: false, allow_nil: true) def calculate_total_price self.total_price = price * quantity end def quantity_remaining quantity - (quantity_delivered + quantity_canceled) end def update_sales_order_purchase_status return unless sales_order.sales_order_items.all.all?(&:fully_processed?) sales_order.purchase_status = SalesOrder.purchase_statuses[:processed] sales_order.save! end def self.ransackable_attributes(_auth_object = nil) %w[ id customer_item_no customer_item_description customer_order_item_id delivery_date eb_number handover_date lead_time product_id sales_order_id purchase_order_item_id source_id unit_id processing_status ] end def self.ransackable_associations(_auth_object = nil) %w[customer_order_item product sales_order purchase_order_item source unit] end end end end
Version data entries
5 entries across 5 versions & 1 rubygems