public function get_id_handler() { global $FANNIE_OP_DB; $dbc = FannieDB::get($FANNIE_OP_DB); $cardno = $this->id; $notice = new CustomerNotificationsModel($dbc); if (isset($_REQUEST['savebtn'])) { $pk = isset($_REQUEST['pref_k']) ? $_REQUEST['pref_k'] : array(); $pv = isset($_REQUEST['pref_v']) ? $_REQUEST['pref_v'] : array(); if (is_array($pk) && is_array($pv) && count($pk) == count($pv)) { $availModel = new CustAvailablePrefsModel($dbc); $prefModel = new CustPreferencesModel($dbc); for ($i = 0; $i < count($pk); $i++) { $availModel->pref_key($pk[$i]); $availModel->load(); $prefModel->pref_key($pk[$i]); $prefModel->card_no($cardno); $prefModel->custAvailablePrefID($availModel->custAvailablePrefID()); $prefModel->pref_value($pv[$i]); $prefModel->save(); if ($pk[$i] == 'email_receipt' && filter_var($pv[$i], FILTER_VALIDATE_EMAIL)) { $notice->reset(); $notice->cardNo($cardno); $notice->source('email_receipt'); $notice->type('memlist'); $exists = $notice->find(); if (count($exists) > 0) { $notice = array_pop($exists); } $notice->message('✉'); $notice->save(); } elseif ($pk[$i] == 'email_receipt') { $notice->reset(); $notice->cardNo($cardno); $notice->source('email_receipt'); $notice->type('memlist'); foreach ($notice->find() as $obj) { $obj->delete(); } } } $this->add_onload_command("showBootstrapAlert('#alert-area', 'success', 'Saved Settings');\n"); } } return true; }
public function run() { $dbc = FannieDB::get($this->config->get('OP_DB')); $equityP = $dbc->prepare(' SELECT e.payments, e.startdate FROM ' . $this->config->get('TRANS_DB') . $dbc->sep() . 'equity_live_balance AS e WHERE e.memnum = ? '); $accounts = \COREPOS\Fannie\API\member\MemberREST::get(); foreach ($accounts as $account) { if ($account['startDate'] != '' && $account['startDate'] != '0000-00-00 00:00:00') { // date has been assigned already continue; } $equityR = $dbc->execute($equityP, array($account['cardNo'])); if (!$equityR || $dbc->numRows($equityR) == 0) { // no equity continue; } $equity = $dbc->fetchRow($equityR); /** If an equity payment has been made, assign start date to that equity payment's date. If equity is not fully paid, set the end date one year in the future. */ if ($equity['payments'] > 0) { if ($account['startDate'] == '' || $account['startDate'] == '0000-00-00 00:00:00') { $account['startDate'] = $equity['startdate']; } if ($equity['payments'] < 100) { $ts = strtotime($equity['startdate']); $next_year = date('Y-m-d', mktime(0, 0, 0, date('n', $ts), date('j', $ts), date('Y', $ts) + 1)); $account['endDate'] = $next_year; } $account['contactAllowed'] = 1; $resp = \COREPOS\Fannie\API\member\MemberREST::post($account['cardNo'], $account); if ($resp['errors'] > 0) { $this->cronMsg('Error setting account dates for account #' . $account['cardNo']); } } } /** Re-fetch accounts with update dates and set notification message in custReceiptMessages and/or CustomerNotifications */ $accounts = \COREPOS\Fannie\API\member\MemberREST::get(); $old_table = false; if ($dbc->tableExists('custReceiptMessage')) { $dbc->query("DELETE FROM custReceiptMessage WHERE msg_text LIKE 'EQUITY OWED% == %'"); $old_table = true; } $new_table = false; if ($dbc->tableExists('CustomerNotifications')) { $dbc->query('DELETE FROM CustomerNotifications WHERE source=\'SetMemDatesTask\''); $new_table = true; } foreach ($accounts as $account) { if ($account['endDate'] == '' || $account['endDate'] == '0000-00-00 00:00:00') { // no due date continue; } if ($account['memberStatus'] != 'PC') { // not a member continue; } $equityR = $dbc->execute($equityP, array($account['cardNo'])); if (!$equityR || $dbc->numRows($equityR) == 0) { // no equity continue; } $equity = $dbc->fetchRow($equityR); if ($equity['payments'] >= 100) { // clear end date from paid-in-full $account['endDate'] = '0000-00-00 00:00:00'; $resp = \COREPOS\Fannie\API\member\MemberREST::post($account['cardNo'], $account); continue; } $msg = 'EQUITY OWED $' . sprintf('%.2f', 100 - $equity['payments']) . ' == DUE DATE ' . date('m/d/Y', strtotime($account['endDate'])); if ($old_table) { $model = new CustReceiptMessageModel($dbc); $model->card_no($account['cardNo']); $model->msg_text($msg); $model->modifier_module('WfcEquityMessage'); $model->save(); } if ($new_table) { $model = new CustomerNotificationsModel($dbc); $model->cardNo($account['cardNo']); $model->source('SetMemDatesTask'); $model->type('receipt'); $model->message($msg); $model->modifierModule('WfcEquityMessage'); $model->save(); } } }