Sha256: 586d07fee585bc39606e7af71b633ad2e9f59ce645d908d2135f073fc410091a

Contents?: true

Size: 1.62 KB

Versions: 1

Compression:

Stored size: 1.62 KB

Contents

class ChargeBookingTemplate < BookingTemplate
  # Charge Rates
  def charge_rate(date = nil, params = {})
    ChargeRate.by_person(params[:person_id]).current(charge_rate_code, date)
  end

  def amount(date = nil, params = {})
    rate = charge_rate(date, params)
    return 0.0 unless rate

    if self.amount_relates_to.present?
      return rate.rate / 100
    else
      return rate.rate
    end
  end

  def booking_parameters(params = {})
    person_id = params.delete(:person_id)

    # Prepare parameters set by template
    booking_params = attributes.reject!{|key, value| !["title", "comments", "credit_account_id", "debit_account_id"].include?(key)}

    params.stringify_keys!

    # Lookup reference
    reference = params['reference']
    unless reference
      ref_type = params['reference_type']
      ref_id = params['reference_id']
      if ref_type.present? and ref_id.present?
        reference = ref_type.constantize.find(ref_id)
      end
    end

    if reference
      # Calculate amount
      booking_params['value_date'] = reference.value_date
      booking_amount = self.amount(reference.value_date, :person_id => person_id)

      case self.amount_relates_to
        when 'reference_amount'
          booking_amount *= reference.amount
        when 'reference_balance'
          booking_amount *= reference.balance
        when 'reference_amount_minus_balance'
          booking_amount *= reference.amount - reference.balance
      end
    end

    booking_amount = booking_amount.try(:round, 2)
    booking_params['amount'] = booking_amount

    # Override by passed in parameters
    booking_params.merge!(params)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bookyt-0.0.1 app/models/charge_booking_template.rb