Sha256: 2c90a2f216b7beaceecc54b1576849d6ee36245ac5e1d259aa2bbeb27240799e

Contents?: true

Size: 1.53 KB

Versions: 38

Compression:

Stored size: 1.53 KB

Contents

module Comee
  module Core
    class Invoice < ApplicationRecord
      before_validation :generate_invoice_no, if: proc { |inv| inv.invoice_no.nil? }

      belongs_to :sales_order
      belongs_to :pod
      has_many :invoice_items
      has_many :additional_items
      has_many :payments

      has_noticed_notifications model_name: "Comee::Core::Notification"

      enum :status, {draft: 0, approved: 1, issued: 2}
      enum :payment_status, {not_paid: 0, partially_paid: 1, fully_paid: 2, overpaid: 3}

      validates :invoice_no, uniqueness: true
      validates :status, :payment_status, presence: true
      validates :total_price, numericality: {greater_than_or_equal_to: 0, allow_nil: true}
      validates :amount_paid, numericality: {greater_than_or_equal_to: 0, allow_nil: true}

      delegate(:order_number, to: :sales_order, prefix: false)
      delegate(:reference_no, to: :pod, prefix: true)

      def update_total_price
        self.total_price = invoice_items.sum(:total_price) + additional_items.sum(:total_price)
        save!
      end

      def self.ransackable_attributes(_auth_object = nil)
        %w[
          id
          sales_order_id
          invoice_no
          date_issued
          ship_name
          delivery_date
          voyage_no
          status
          payment_status
        ]
      end

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

      def generate_invoice_no
        self.invoice_no = Util.generate_number("Invoice", "invoice_no")
      end
    end
  end
end

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
comee_core-0.3.16 app/models/comee/core/invoice.rb
comee_core-0.3.15 app/models/comee/core/invoice.rb
comee_core-0.3.14 app/models/comee/core/invoice.rb
comee_core-0.3.13 app/models/comee/core/invoice.rb
comee_core-0.3.12 app/models/comee/core/invoice.rb
comee_core-0.3.11 app/models/comee/core/invoice.rb
comee_core-0.3.10 app/models/comee/core/invoice.rb
comee_core-0.3.9 app/models/comee/core/invoice.rb
comee_core-0.3.8 app/models/comee/core/invoice.rb
comee_core-0.3.7 app/models/comee/core/invoice.rb
comee_core-0.3.6 app/models/comee/core/invoice.rb
comee_core-0.3.5 app/models/comee/core/invoice.rb
comee_core-0.3.4 app/models/comee/core/invoice.rb
comee_core-0.3.3 app/models/comee/core/invoice.rb
comee_core-0.3.2 app/models/comee/core/invoice.rb
comee_core-0.3.1 app/models/comee/core/invoice.rb
comee_core-0.3.0 app/models/comee/core/invoice.rb
comee_core-0.2.99 app/models/comee/core/invoice.rb
comee_core-0.2.98 app/models/comee/core/invoice.rb
comee_core-0.2.97 app/models/comee/core/invoice.rb