app/models/dorsale/expense_gun/expense.rb in dorsale-3.0.3 vs app/models/dorsale/expense_gun/expense.rb in dorsale-3.1.0
- old
+ new
@@ -1,74 +1,78 @@
-module Dorsale
- module ExpenseGun
- class Expense < ActiveRecord::Base
- self.table_name = "dorsale_expense_gun_expenses"
- include AASM
+class Dorsale::ExpenseGun::Expense < ActiveRecord::Base
+ self.table_name = "dorsale_expense_gun_expenses"
+ include AASM
- has_many :expense_lines, inverse_of: :expense, dependent: :destroy, class_name: ::Dorsale::ExpenseGun::ExpenseLine
+ has_many :expense_lines, inverse_of: :expense, dependent: :destroy, class_name: ::Dorsale::ExpenseGun::ExpenseLine
- has_many :attachments,
- :as => :attachable,
- :dependent => :destroy,
- :class_name => ::Dorsale::Alexandrie::Attachment
+ has_many :attachments,
+ :as => :attachable,
+ :dependent => :destroy,
+ :class_name => ::Dorsale::Alexandrie::Attachment
+ belongs_to :user, class_name: User
+ validates :user, presence: true
- belongs_to :user, class_name: User
- validates :user, presence: true
+ validates :name, presence: true
+ validates :date, presence: true
- validates :name, presence: true
- validates :date, presence: true
+ accepts_nested_attributes_for :expense_lines,
+ :allow_destroy => true,
+ :reject_if => proc { |attr| attr["name"].blank? }
- def initialize(*args)
- super
- self.date = Time.zone.now.to_date if self.date.nil?
- end
+ default_scope -> {
+ order(id: :desc)
+ }
- # Sum of line amounts
- def total_all_taxes
- expense_lines.map(&:total_all_taxes).sum
- end
+ def initialize(*args)
+ super
+ self.date = Time.zone.now.to_date if self.date.nil?
+ end
- # Sum of line emplee payback
- def total_employee_payback
- expense_lines.map(&:employee_payback).sum
- end
+ # Sum of line amounts
+ def total_all_taxes
+ expense_lines.map(&:total_all_taxes).sum
+ end
- # Sum of deductible deductible vat
- def total_vat_deductible
- expense_lines.map(&:total_vat_deductible).sum
- end
+ # Sum of line emplee payback
+ def total_employee_payback
+ expense_lines.map(&:employee_payback).sum
+ end
- def current_state
- aasm.current_state
- end
+ # Sum of deductible deductible vat
+ def total_vat_deductible
+ expense_lines.map(&:total_vat_deductible).sum
+ end
- aasm(column: :state, whiny_transitions: false) do
- state :new, initial: true
- state :submited
- state :accepted
- state :refused
- state :canceled
+ def current_state
+ aasm.current_state
+ end
- event :submit do
- transitions from: :new, to: :submited
- end
+ aasm(column: :state, whiny_transitions: false) do
+ state :new, initial: true
+ state :submited
+ state :accepted
+ state :refused
+ state :canceled
- event :accept do
- transitions from: :submited, to: :accepted
- end
+ event :go_to_submited do
+ transitions from: :new, to: :submited
+ end
- event :refuse do
- transitions from: :submited, to: :refused
- end
+ event :go_to_accepted do
+ transitions from: :submited, to: :accepted
+ end
- event :cancel do
- transitions from: [:new, :submited, :accepted], to: :canceled
- end
- end
+ event :go_to_refused do
+ transitions from: :submited, to: :refused
+ end
- def may_edit?
- current_state == :new
- end
+ event :go_to_canceled do
+ transitions from: [:new, :submited, :accepted], to: :canceled
end
end
+
+ def may_edit?
+ current_state == :new
+ end
+
end