Skip to end of metadata
Go to start of metadata

This page covers specification and sizing for sponsored enhancements to CiviPledge and CiviEvent. Funding has not been finalized.

Estimate

Project

Number of Hours

1. Record pledge payments different from scheduled amount and modify future pledge payment amounts.

40 hours (funded)

2. Record pledge payments made by someone other than the original pledger.

20 hours

3. Record fee adjustments against paid event fees.

25 hours

Total Hours

85 hours

Specifications

1. Record pledge payments different from scheduled amount and modify future pledge payment amounts

This modification affects back-office (admin / staff) recording of pledge payments (both Record and "Submit Credit Card payment" modes). Currently, payment amount on the "Record Payment" form is read-only (holds the scheduled payment amount).

Adjust pledge payment when recording a payment

  • Add link next to Amount Field -> "adjust payment amount"
  • Clicking this link opens the amount field for input
  • User can enter a different amount (more or less than scheduled amount)
  • Contribution and pledge payment.actual_amount will be set to value entered.
  • If user enters a different amount, show a radio button with two options:
    • o Adjust Pledge Payment Schedule?" (default)
    • [ ] Adjust Total Pledge Amount?"
  • If "Adjust Pledge Payment Schedule" is selected - payment schedule is adjusted as follows:
    • If this is NOT the last scheduled payment: add or subtract the difference between expected and actual amount to the NEXT scheduled payment.
    • If this is the last scheduled payment, and payment is LESS than expected: insert one more pledge payment record for the remaining amount due, using the existing payment interval.
    • If this is the last scheduled payment, and payment is MORE than expected: set contribution and pledge payment to amount entered. Also adjust the Total Pledge Amount (civicrm_pledge.amount) to reflect the new total paid. NOTE: The calculated "Amount Paid" value for the pledge will automatically show the actual (larger) amount on pledge listings since it's the same a actual_amount rows.
  • If "Adjust Total Pledge Amount" is selected
    • Adjust the Total Pledge Amount (add or subtract) accordingly (civicrm_pledge.amount). The payment schedule (amounts / dates for future pending pledge payments) is not modified.

Adjust pledge payment amount for scheduled (pending) payments

  • Change link on Pledge Payment selector from "Edit Schedule" to "Edit Scheduled Payment"
  • Add "Scheduled Amount" as an editable field to the '"Edit Pledge Payment" form (default is current scheduled_amount)
  • If user enters a different amount, show a radio button with two options:
    • o Adjust Pledge Payment Schedule?" (default)
    • [ ] Adjust Total Pledge Amount?"
  • Same post-process rules as above...

Use buildForm hook to limit user options

  • If a site wants to force either the Yes or No behavior for "Adjust Total Pledge Amount" - they can implement a buildForm hook which replaces the radio button w/ a hidden field containing the desired option.

Proposed schema change - add actual_amount paid to pledge payment table

  • Add 'actual_amount' column to civicrm_pledge_payment table to record the amount received. (This is a cache of the amount stored in the linked contribution record - and is being added to prevent performance issues while calculating 'Total Paid' for Pledge selectors and reporting.)
  • Post process is modified for the Contribution form, and for online pledge payments to always record the 'actual amount' in the new pledge_payment column.
  • Pledge selector query is modified to use actual_amount when calculated Total Paid column.
  • Pledge payment selector can be simplified to use actual_amount rather than joining on contribution record
  • If user edits contribution record which is linked to a pledge_payment and modifies the contribution amount, update pledge_payment.actual_amount so records are kept in synch

Fix 'Pledge Acknowledgment' activity record to log original pledge amount

  • Currently we generate an activity record when a new pledge is recorded (activity type = Pledge Acknowledgment). However, we do not include basic Pledge info in the activity record (the Description column is empty). Modify this behavior to include pledge amount and schedule in activity.description:

    Total Amount $ 600.00
    To be paid in 12 installments of $ 50.00 every 1 month(s)

2. Record pledge payments made by someone other than the original pledger.

This modification affects back-office (admin / staff) recording of pledge payments (both Record and "Submit Credit Card payment" modes). Currently, when a pledge payment is recorded - the contribution is automatically linked to the original pledger's contact record (contributor's display name is read-only on the form).

  • Add link next to contributor name -> "change contributor"
  • Clicking this link expands a section where user can select an existing contact (via autocomplete search) or choose to enter a new contact (via profile-driven modal dialog). This is same interface as entering a new contribution w/o first selecting contact record.
  • Contribution associated with pledge payment is then linked to selected / new contributor (and will be displayed in their contribution tab. All other pledge payment processing is unchanged (payment is credited against pledge total due, etc.).

3. Record fee adjustments against paid event fees

This modification affects back-office (admin / staff) recording of adjustments to event fees. Currently, once a participant is registered for an event, the Event Level field (which includes the fee) is not editable (read-only).

  • Add link next to Fee Level field (Edit Participant form) -> "adjust fee"
  • Clicking this link displays a new section with two fields
    • Text input field -> "Fee Adjustment". This field accepts positive or negative monetary values.
    • Contribution Type (select field). Sites using this feature will be able to create new contribution types for Refunds and Additional Charges/Adjustments as needed.
    • For refunds, user enters a negative amount. For additional charges, user enters a positive amount.
  • When the form is submitted:
    • Participant record fee_amount column is updated to reflect adjustment
    • A new contribution record is inserted, with a negative (refund) or positive value (additional charge). This contribution record is linked to the existing participant record via insertion of an additional participant_payment record.
      Exclusions
      • For this implementation, adjustment receipt email will NOT be generated automatically. Staff will need to manually send mail to the participant.
      • Based on initial testing of this approach, it appears that refunds / adjustments are properly displayed and totaled on existing Event and Contribution Reports without any coding changes required. However, if reports need to be modified, this may result in some additional costs for the project.
Labels
  • None

Creative Commons License
Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution-Share Alike 3.0 United States Licence.