Sha256: a4e5902899993d1317b27a23d5f988cda7c317f73631f5e6a7e4ab27b129c663

Contents?: true

Size: 1.48 KB

Versions: 39

Compression:

Stored size: 1.48 KB

Contents

module Comee
  module Core
    class SalesOrder < ApplicationRecord
      before_save :total_price
      before_save :set_parent_client_name

      belongs_to :customer_order
      belongs_to :fulfillment_center, optional: true
      belongs_to :client
      has_many :sales_order_items
      has_many_attached :files
      has_one :customs_detail

      enum :status, {draft: 0, submitted: 1, confirmed: 2, canceled: 3}

      validates :order_number, presence: true, uniqueness: true
      validates :order_date, :status, presence: true
      validates :payment_penalty, numericality: {greater_than_or_equal_to: 0, less_than_or_equal_to: 100}, allow_nil: true

      validates :amount_paid,
                presence: true,
                numericality: {greater_than_or_equal_to: 0},
                allow_nil: true

      def total_price
        sales_order_items = SalesOrderItem.where(sales_order_id: id)
        self.total_price = sales_order_items.sum(&:total_price)
      end

      def set_parent_client_name
        self.parent_client_name = client.parent&.name
      end

      def self.ransackable_attributes(_auth_object = nil)
        %w[
          id
          order_number
          status
          customer_order_id
        ]
      end

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

      def files_url
        files.attached? ? files.map { |file| Rails.application.routes.url_helpers.rails_blob_url(file, only_path: false) } : []
      end
    end
  end
end

Version data entries

39 entries across 39 versions & 1 rubygems

Version Path
comee_core-0.2.50 app/models/comee/core/sales_order.rb
comee_core-0.2.49 app/models/comee/core/sales_order.rb
comee_core-0.2.48 app/models/comee/core/sales_order.rb
comee_core-0.2.47 app/models/comee/core/sales_order.rb
comee_core-0.2.46 app/models/comee/core/sales_order.rb
comee_core-0.2.45 app/models/comee/core/sales_order.rb
comee_core-0.2.44 app/models/comee/core/sales_order.rb
comee_core-0.2.43 app/models/comee/core/sales_order.rb
comee_core-0.2.42 app/models/comee/core/sales_order.rb
comee_core-0.2.41 app/models/comee/core/sales_order.rb
comee_core-0.2.40 app/models/comee/core/sales_order.rb
comee_core-0.2.39 app/models/comee/core/sales_order.rb
comee_core-0.2.38 app/models/comee/core/sales_order.rb
comee_core-0.2.37 app/models/comee/core/sales_order.rb
comee_core-0.2.36 app/models/comee/core/sales_order.rb
comee_core-0.2.35 app/models/comee/core/sales_order.rb
comee_core-0.2.34 app/models/comee/core/sales_order.rb
comee_core-0.2.33 app/models/comee/core/sales_order.rb
comee_core-0.2.32 app/models/comee/core/sales_order.rb
comee_core-0.2.31 app/models/comee/core/sales_order.rb