From bdd980f13ee76a101855dd62d144dd8b2b51d0ba Mon Sep 17 00:00:00 2001 From: Nathan Coad Date: Wed, 28 May 2014 13:06:09 +1000 Subject: [PATCH] Added an email for missed payment processing --- booking.admin.inc | 16 ++++++++++++++-- booking.emails.inc | 41 +++++++++++++++++++++++++++++++++++++++++ booking.register.inc | 38 +++++++++++++++++++++++++++++++++++++- booking.tokens.inc | 14 +++++++++++++- 4 files changed, 105 insertions(+), 4 deletions(-) diff --git a/booking.admin.inc b/booking.admin.inc index b6f9fd0..5e16506 100644 --- a/booking.admin.inc +++ b/booking.admin.inc @@ -280,6 +280,8 @@ function booking_manual_email() $email_options_array['balance'] = 'Manual Balance Outstanding'; $email_options_array['complete'] = 'Manual Payment Complete'; $email_options_array['travelcomplete'] = 'Manual Travel Form Complete'; + $email_options_array['withdrawal'] = 'Manual Withdrawal Processed'; + $email_options_array['missedpayment'] = 'Manual Missed Payment Email'; //add in the custom email types for ($i = 1; $i <= variable_get('booking_custom_email_count','5'); $i++) @@ -411,13 +413,23 @@ function booking_manual_email_submit($form, &$form_state) { { watchdog('booking', 'Processing a manual travelform complete email to id @info', array ('@info' => $key)); _booking_travelform_confirmation_email($key); - } + } + elseif ($form_state['values']['email-type'] == 'withdrawal') + { + watchdog('booking', 'Processing a manual withdrawal email to id @info', array ('@info' => $key)); + _booking_demoted_to_notcoming_email($key); + } + elseif ($form_state['values']['email-type'] == 'missedpayment') + { + watchdog('booking', 'Processing a manual missedpayment email to id @info', array ('@info' => $key)); + _booking_missedpayment_email($key); + } elseif (strpos($form_state['values']['email-type'], 'custom') !== false) { watchdog('booking', 'Processing a @custom type email to id @info', array ('@custom' => $form_state['values']['email-type'], '@info' => $key)); _booking_custom_email($key, $form_state['values']['email-type']); } - + //increase the counter of people we've emailed $counter++; } } diff --git a/booking.emails.inc b/booking.emails.inc index 3f836a0..ed1f6e0 100644 --- a/booking.emails.inc +++ b/booking.emails.inc @@ -324,6 +324,47 @@ function _booking_demoted_to_notcoming_email($nid) drupal_mail('booking', 'booking_email_custom', $to, $language, $params, $from); } +/** + * Function to generate email to be sent to the attendee if they miss the payment deadline + * + * @param $nid - the registration node + */ +function _booking_missedpayment_email($nid) +{ + global $event; + global $user; + $language = user_preferred_language($user); + + //return without doing anything if we shouldn't send workflow emails + if (variable_get('booking_auto_workflow_email', 0) == 0) + { + watchdog('booking', 'Not sending missed-payment email since that feature is currently disabled.'); + return; + } + + //load the node matching this id + $node = node_load($nid); + $tokens = booking_define_personspecific_tokens($node); + + //calculate the from email address + $from = t('!event Registrations ', array('!event' => $event->booking_eventname, + '!email' => variable_get('booking_contact_email', variable_get('site_mail', ini_get('sendmail_from'))) + )); + + //calculate the remaining parameters + $to = $node->booking_email; + $subject = token_replace(variable_get('booking_email_missedpayment_subject', t('!event', array('!event' => $event->booking_eventname))), $tokens); + //$subject = t('!event withdrawal confirmation', array('!event' => $event->booking_eventname)); + $params['subject'] = $subject; + $params['headers']['Bcc'] = "it@coadcorp.com, " . variable_get('booking_notify_email', variable_get('site_mail', ini_get('sendmail_from'))); + + //retrieve the body of the email + $params['body'] = token_replace(variable_get('booking_email_missedpayment'), $tokens); + + //send the email + drupal_mail('booking', 'booking_email_custom', $to, $language, $params, $from); +} + /** * Function to generate email to be sent to the attendee once they complete their travel form * diff --git a/booking.register.inc b/booking.register.inc index d15ab49..5644194 100644 --- a/booking.register.inc +++ b/booking.register.inc @@ -1328,6 +1328,8 @@ function _booking_update($node) { } } + //status change triggers start here + //check if someone has moved to not-coming list from the booked-in list if ($previous_status->booking_status == 1 && $node->booking_status == 3) { @@ -1363,6 +1365,40 @@ function _booking_update($node) { else watchdog('booking', 'Still no room on the booked in list though.'); } + //check if someone has been demoted to the "missed payment deadline" status from being booked-in + elseif ($previous_status->booking_status == 1 && $node->booking_status == 4) + { + watchdog('booking', 'Detected person moving from Booked In list to Missed Payment Deadline list.'); + + //disable this until we're sure that's what we want to do + + /* + //let this person know they're no longer "booked in" + _booking_missedpayment_email($node->nid); + + //Remove from any study groups + _booking_studygroups_cleanup($node->nid); + + //check if there is room on the booked-in list + if (_booking_check_bookings_full() == False) + { + watchdog('booking', 'Looks like there was room on the booked in list, so lets tell the next person'); + //find the first person on the waiting list + $temp_nid = _booking_get_waitinglist_top(); + + if ($temp_nid != -1) //-1 means there was no one on the waiting list + { + //update their registration status + _booking_change_status($temp_nid,1); + + //send them an email + _booking_promoted_from_waitinglist_email($temp_nid); + } + } + else + watchdog('booking', 'Still no room on the booked in list though.'); + */ + } //if someone is moving to the not-coming list from the waiting list elseif ($previous_status->booking_status == 2 && $node->booking_status == 3) { @@ -1453,7 +1489,7 @@ function _booking_update($node) { ->condition('nid', $node->nid) ->execute(); } - + //end trigger processing } function _booking_delete($node) { diff --git a/booking.tokens.inc b/booking.tokens.inc index 61a09c2..d168a83 100644 --- a/booking.tokens.inc +++ b/booking.tokens.inc @@ -395,7 +395,19 @@ $booking_registration_intro_text = variable_get('booking_registration_intro_text '#description' => t(''), '#default_value' => variable_get('booking_email_notcoming_demotion', $booking_email_notcoming_demotion), ); - + $form['emails']['booking_email_missedpayment_subject'] = array ( + '#type' => 'textfield', + '#title' => t('Subject line for email advising attendee they missed the payment deadline'), + '#size' => 150, + '#maxlength' => 300, + '#default_value' => variable_get('booking_email_missedpayment_subject','[booking:eventname] payment deadline missed'), + ); + $form['emails']['booking_email_missedpayment'] = array( + '#title' => t('Email text to send a person who missed the payment deadline'), + '#type' => 'textarea', + '#description' => t(''), + '#default_value' => variable_get('booking_email_missedpayment', ''), + ); //add a bunch of custom emails for ($i = 1; $i <= variable_get('booking_custom_email_count','5'); $i++)