public function run() { global $FANNIE_PLUGIN_SETTINGS, $FANNIE_AR_DEPARTMENTS, $FANNIE_TRANS_DB, $FANNIE_OP_DB; $dbc = FannieDB::get($FANNIE_PLUGIN_SETTINGS['StaffArPayrollDB']); $chkQ = 'SELECT staffArDateID FROM StaffArDates WHERE ' . $dbc->datediff($dbc->now(), 'tdate') . ' = 0 '; $chkR = $dbc->query($chkQ); if ($dbc->num_rows($chkR) == 0) { // not scheduled for today return true; } /** Update plugin's table from legacy table, if present. Can go away once WFC transistions away from legacy table. */ $legacy_table = $FANNIE_TRANS_DB . $dbc->sep() . 'staffAR'; if ($dbc->tableExists($legacy_table)) { $query = 'SELECT cardNo, adjust FROM ' . $legacy_table; $result = $dbc->query($query); $cards = ''; $args = array(); while ($row = $dbc->fetch_row($result)) { $model = new StaffArAccountsModel($dbc); $model->card_no($row['cardNo']); $model->nextPayment($row['adjust']); $model->save(); $cards .= '?,'; $args[] = $row['cardNo']; } // remove records that aren't in legacy table if (count($args) > 0) { $cards = substr($cards, 0, strlen($cards) - 1); $query = "DELETE FROM StaffArAccounts WHERE card_no NOT IN ({$cards})"; $prep = $dbc->prepare($query); $dbc->execute($prep, $args); } } // end legacy table handling // build department list $ar_dept = 0; $ret = preg_match_all("/[0-9]+/", $FANNIE_AR_DEPARTMENTS, $depts); $depts = array_pop($depts); if (!is_array($depts) || count($depts) == 0) { $this->cronMsg('Could not locate any AR departments in Fannie configuration', FannieLogger::NOTICE); return false; } else { $ar_dept = $depts[0]; } $dept_desc = ''; $dept_model = new DepartmentsModel($dbc); $dept_model->whichDB($FANNIE_OP_DB); $dept_model->dept_no($ar_dept); if ($dept_model->load()) { $dept_desc = $dept_model->dept_name(); } $dtrans = $FANNIE_TRANS_DB . $dbc->sep() . 'dtransactions'; $emp = isset($FANNIE_PLUGIN_SETTINGS['StaffArPayrollEmpNo']) ? $FANNIE_PLUGIN_SETTINGS['StaffArPayrollEmpNo'] : 1001; $reg = isset($FANNIE_PLUGIN_SETTINGS['StaffArPayrollRegNo']) ? $FANNIE_PLUGIN_SETTINGS['StaffArPayrollRegNo'] : 20; $query = 'SELECT MAX(trans_no) as maxt FROM ' . $dtrans . ' WHERE emp_no=? AND register_no=?'; $prep = $dbc->prepare($query); $result = $dbc->execute($prep, array($emp, $reg)); $trans_no = 1; if ($dbc->num_rows($result) > 0) { $row = $dbc->fetch_row($result); if ($row['maxt'] != '') { $trans_no = $row['maxt'] + 1; } } $model = new StaffArAccountsModel($dbc); foreach ($model->find() as $obj) { if ($obj->nextPayment() == 0) { // no need to write empty records continue; } $record = DTrans::$DEFAULTS; $record['emp_no'] = $emp; $record['register_no'] = $reg; $record['trans_no'] = $trans_no; $record['trans_id'] = 1; $record['trans_type'] = 'D'; $record['card_no'] = $obj->card_no(); $record['department'] = $ar_dept; $record['description'] = $dept_desc; $record['upc'] = sprintf('%.2fDP%d', $obj->nextPayment(), $ar_dept); $record['total'] = sprintf('%.2f', $obj->nextPayment()); $record['unitPrice'] = sprintf('%.2f', $obj->nextPayment()); $record['regPrice'] = sprintf('%.2f', $obj->nextPayment()); $p = DTrans::parameterize($record, 'datetime', date("'Y-m-d 23:59:59'", strtotime('yesterday'))); $query = "INSERT INTO {$dtrans} ({$p['columnString']}) VALUES ({$p['valueString']})"; $prep = $dbc->prepare($query); $write = $dbc->execute($prep, $p['arguments']); if ($write === false) { $this->cronMsg('Error making staff AR deduction for #' . $obj->card_no(), FannieLogger::ERROR); } $trans_no++; } }
public function get_view() { global $FANNIE_PLUGIN_SETTINGS, $FANNIE_OP_DB, $FANNIE_TRANS_DB; $this->add_script('js/accounts.js'); $dbc = FannieDB::get($FANNIE_PLUGIN_SETTINGS['StaffArPayrollDB']); $model = new StaffArAccountsModel($dbc); $info = array(); $in = ''; $args = array(); foreach ($model->find('card_no') as $obj) { $info[$obj->card_no()] = array('id' => $obj->staffArAccountID(), 'payroll' => $obj->payrollIdentifier(), 'amount' => $obj->nextPayment()); $in .= '?,'; $args[] = $obj->card_no(); } $in = substr($in, 0, strlen($in) - 1); $custdata = $FANNIE_OP_DB . $dbc->sep() . 'custdata'; $balances = $FANNIE_TRANS_DB . $dbc->sep() . 'ar_live_balance'; $query = "SELECT c.CardNo, c.LastName, c.FirstName, n.balance\n FROM {$custdata} AS c\n LEFT JOIN {$balances} as n ON c.CardNo=n.card_no\n WHERE\n c.personNum=1\n AND c.CardNo IN ({$in})"; $prep = $dbc->prepare($query); $result = $dbc->execute($prep, $args); while ($row = $dbc->fetch_row($result)) { $info[$row['CardNo']]['name'] = $row['LastName'] . ', ' . $row['FirstName']; $info[$row['CardNo']]['balance'] = $row['balance']; } $ret = '<div id="mainDisplayDiv">'; $query = 'SELECT tdate FROM StaffArDates WHERE tdate >= ' . $dbc->now(); $next = 'Unknown'; $result = $dbc->query($query); if ($dbc->num_rows($result) > 0) { $row = $dbc->fetch_row($result); $next = $row['tdate']; } $ret .= '<h4>Next deduction is scheduled for: ' . $next; $ret .= ' (<a href="StaffArDatesPage.php">View Schedule</a>)</h4>'; $ret .= '<form onsubmit="return false;">'; // for reset function $ret .= '<p>'; $ret .= '<button type="button" onclick="useCurrent(); return false;" class="btn btn-default"> Set New to Current Balance</button>'; $ret .= ' '; $ret .= '<button type="reset" class="btn btn-default">Reset</button>'; $ret .= ' '; $ret .= '<button type="submit" onclick="saveForm(); return false;" class="btn btn-default"> Save New as Next Deduction</button>'; $ret .= '</p>'; $ret .= '<table class="table">'; $ret .= '<tr><th>Mem#</th><th>PayrollID</th><th>Name</th><th>Current</th> <th>Next Deduction</th><th>New Deduction</th><th> </td></tr>'; foreach ($info as $card_no => $data) { $ret .= sprintf('<tr class="accountrow" id="row%d"> <td class="cardnotext">%d</td> <td class="payidtext">%s</td> <td class="nametext">%s</td> <td class="currentbalance">%.2f</td> <td>%.2f</td> <td><div class="input-group"> <span class="input-group-addon">$</span> <input type="text" class="nextdeduct form-control" value="%.2f" /> </div></td> <td><a href="" onclick="removeAccount(%d); return false;">Remove from List</a></td> </tr>', $card_no, $card_no, $data['payroll'], $data['name'], $data['balance'], $data['amount'], $data['amount'], $card_no); } $ret .= '</table>'; $ret .= '<p>'; $ret .= '<button type="button" onclick="useCurrent(); return false;" class="btn btn-default"> Set New to Current Balance</button>'; $ret .= ' '; $ret .= '<button type="reset" class="btn btn-default">Reset</button>'; $ret .= ' '; $ret .= '<button type="submit" onclick="saveForm(); return false;" class="btn btn-default"> Save New as Next Deduction</button>'; $ret .= '</form>'; $ret .= '</div>'; $ret .= '<hr />'; $ret .= '<h4>Add User To List</h4>'; $ret .= '<div class="form-group form-inline">'; $ret .= '<label>Mem#</label>: <input type="text" id="newMem" class="form-control" />'; $ret .= ' '; $ret .= '<label>Payroll#</label>: <input type="text" id="newPayID" class="form-control" />'; $ret .= ' '; $ret .= '<button type="submit" onclick="addNew(); return false;" class="btn btn-default">Add</button>'; $ret .= '</div>'; return $ret; }