app/models/booking_template.rb in has_accounts-1.1.3 vs app/models/booking_template.rb in has_accounts-2.0.0
- old
+ new
@@ -45,13 +45,17 @@
end
end
# Tagging
# =======
- acts_as_taggable
- attr_accessible :tag_list
+ if defined?(ActsAsTaggableOn) && ActsAsTaggableOn::Tag.table_exists?
+ acts_as_taggable
+ attr_accessible :tag_list
+ acts_as_taggable_on :include_in_saldo
+ end
+
def booking_parameters(params = {})
params = HashWithIndifferentAccess.new(params)
# Prepare parameters set by template
booking_params = attributes.reject{|key, value| !["title", "comments", "credit_account_id", "debit_account_id"].include?(key)}
@@ -91,20 +95,31 @@
# Override by passed in parameters
HashWithIndifferentAccess.new(booking_params.merge!(params))
end
# Factory methods
+ # ===============
def build_booking(params = {})
Booking.new(booking_parameters(params))
end
def create_booking(params = {})
Booking.create(booking_parameters(params))
end
+ # Build booking for template
+ #
+ # Raises an exception if template for given [code] cannot be found.
+ #
+ # @param code [String] to lookup template
+ # @param params [Hash] parameters to set on the Booking
+ # @return [Booking] unsaved Booking
def self.build_booking(code, params = {})
- find_by_code(code).try(:build_booking, params)
+ template = find_by_code(code)
+ raise "BookingTemplate not found for '#{code}'" unless template
+
+ template.build_booking params
end
def self.create_booking(code, params = {})
find_by_code(code).try(:create_booking, params)
end
@@ -145,12 +160,9 @@
line_item.price = self.amount
end
line_item
end
-
- # Tagging
- acts_as_taggable_on :include_in_saldo
# Importer
# ========
attr_accessible :matcher