Merge in from pre_0.1 branch
git-svn-id: file:///svn-source/pmgr/trunk/site@847 97e9348a-65ac-dc4b-aefc-98561f571b83
This commit is contained in:
@@ -4,26 +4,38 @@ class TransactionsController extends AppController {
|
||||
|
||||
var $components = array('RequestHandler');
|
||||
|
||||
var $sidemenu_links =
|
||||
array(array('name' => 'Transactions', 'header' => true),
|
||||
array('name' => 'All', 'url' => array('controller' => 'transactions', 'action' => 'all')),
|
||||
array('name' => 'Invoices', 'url' => array('controller' => 'transactions', 'action' => 'invoice')),
|
||||
array('name' => 'Receipts', 'url' => array('controller' => 'transactions', 'action' => 'receipt')),
|
||||
array('name' => 'Deposits', 'url' => array('controller' => 'transactions', 'action' => 'deposit')),
|
||||
);
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
**************************************************************************
|
||||
**************************************************************************
|
||||
* override: sideMenuLinks
|
||||
* - Generates controller specific links for the side menu
|
||||
* override: addGridViewSideMenuLinks
|
||||
* - Adds grid view navigation side menu links
|
||||
*/
|
||||
function sideMenuLinks() {
|
||||
return array_merge(parent::sideMenuLinks(), $this->sidemenu_links);
|
||||
|
||||
function addGridViewSideMenuLinks() {
|
||||
parent::addGridViewSideMenuLinks();
|
||||
|
||||
$this->addSideMenuLink('Invoices',
|
||||
array('controller' => 'transactions', 'action' => 'invoice'), null,
|
||||
'CONTROLLER');
|
||||
$this->addSideMenuLink('Receipts',
|
||||
array('controller' => 'transactions', 'action' => 'receipt'), null,
|
||||
'CONTROLLER');
|
||||
$this->addSideMenuLink('Deposits',
|
||||
array('controller' => 'transactions', 'action' => 'deposit'), null,
|
||||
'CONTROLLER');
|
||||
$this->addSideMenuLink('All',
|
||||
array('controller' => 'transactions', 'action' => 'all'), null,
|
||||
'CONTROLLER');
|
||||
|
||||
// REVISIT <AP>: 20090824
|
||||
// Right now, we wish to keep things simple. Don't make these
|
||||
// links available to non-admin users.
|
||||
if (empty($this->params['admin']))
|
||||
$this->sideMenuEnable('CONTROLLER', $this->std_area, false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
**************************************************************************
|
||||
**************************************************************************
|
||||
@@ -36,10 +48,9 @@ class TransactionsController extends AppController {
|
||||
function invoice() { $this->gridView('Invoices'); }
|
||||
function receipt() { $this->gridView('Receipts'); }
|
||||
function deposit() {
|
||||
$this->sidemenu_links = array
|
||||
(array('name' => 'Operations', 'header' => true),
|
||||
array('name' => 'New Deposit', 'url' => array('controller' => 'tenders',
|
||||
'action' => 'deposit')));
|
||||
/* $this->addSideMenuLink('New Deposit', */
|
||||
/* array('controller' => 'tenders', 'action' => 'deposit'), null, */
|
||||
/* 'CONTROLLER', $this->new_area); */
|
||||
$this->gridView('Deposits');
|
||||
}
|
||||
|
||||
@@ -84,10 +95,6 @@ class TransactionsController extends AppController {
|
||||
if (in_array($params['action'], array('invoice', 'receipt', 'deposit')))
|
||||
$conditions[] = array('Transaction.type' => strtoupper($params['action']));
|
||||
|
||||
// REVISIT <AP>: 20090811
|
||||
// No security issues have been worked out yet
|
||||
$conditions[] = array('Account.level >=' => 5);
|
||||
|
||||
return $conditions;
|
||||
}
|
||||
|
||||
@@ -105,7 +112,7 @@ class TransactionsController extends AppController {
|
||||
* - handles the creation of a charge invoice
|
||||
*/
|
||||
|
||||
function postInvoice() {
|
||||
function postInvoice($redirect = true) {
|
||||
if (!$this->RequestHandler->isPost()) {
|
||||
echo('<H2>THIS IS NOT A POST FOR SOME REASON</H2>');
|
||||
return;
|
||||
@@ -120,6 +127,17 @@ class TransactionsController extends AppController {
|
||||
die("<H1>INVOICE FAILED</H1>");
|
||||
}
|
||||
|
||||
if ($redirect) {
|
||||
if (!empty($this->data['Customer']['id']))
|
||||
$this->redirect(array('controller' => 'customers',
|
||||
'action' => 'receipt',
|
||||
$this->data['Customer']['id']));
|
||||
else
|
||||
$this->redirect(array('controller' => 'leases',
|
||||
'action' => 'view',
|
||||
$this->data['Lease']['id']));
|
||||
}
|
||||
|
||||
$this->layout = null;
|
||||
$this->autoLayout = false;
|
||||
$this->autoRender = false;
|
||||
@@ -133,7 +151,7 @@ class TransactionsController extends AppController {
|
||||
* - handles the creation of a receipt
|
||||
*/
|
||||
|
||||
function postReceipt() {
|
||||
function postReceipt($redirect = true) {
|
||||
if (!$this->RequestHandler->isPost()) {
|
||||
echo('<H2>THIS IS NOT A POST FOR SOME REASON</H2>');
|
||||
return;
|
||||
@@ -157,6 +175,11 @@ class TransactionsController extends AppController {
|
||||
die("<H1>RECEIPT FAILED</H1>");
|
||||
}
|
||||
|
||||
if ($redirect)
|
||||
$this->redirect(array('controller' => 'customers',
|
||||
'action' => 'view',
|
||||
$this->data['Customer']['id']));
|
||||
|
||||
$this->layout = null;
|
||||
$this->autoLayout = false;
|
||||
$this->autoRender = false;
|
||||
@@ -269,7 +292,7 @@ class TransactionsController extends AppController {
|
||||
$this->Session->setFlash(__('Unable to Create Deposit', true));
|
||||
$this->redirect(array('controller' => 'tenders', 'action'=>'deposit'));
|
||||
}
|
||||
|
||||
|
||||
// Present the deposit slip to the user
|
||||
$this->redirect(array('controller' => 'transactions',
|
||||
'action' => 'deposit_slip',
|
||||
@@ -370,9 +393,11 @@ class TransactionsController extends AppController {
|
||||
* irreversibly destroys the data. It is not for normal use.
|
||||
*/
|
||||
|
||||
function destroy($id = null) {
|
||||
function destroy($id) {
|
||||
$this->Transaction->id = $id;
|
||||
$customer_id = $this->Transaction->field('customer_id');
|
||||
$this->Transaction->destroy($id);
|
||||
//$this->redirect(array('action' => 'index'));
|
||||
$this->redirect(array('controller' => 'customers', 'action' => 'view', $customer_id));
|
||||
}
|
||||
|
||||
|
||||
@@ -388,42 +413,35 @@ class TransactionsController extends AppController {
|
||||
('first',
|
||||
array('contain' =>
|
||||
array(// Models
|
||||
'Account(id,name)',
|
||||
'Ledger(id,name)',
|
||||
'Account(id,name,level)',
|
||||
'Ledger(id,sequence)',
|
||||
'NsfTender(id,name)',
|
||||
),
|
||||
'conditions' => array(array('Transaction.id' => $id),
|
||||
// REVISIT <AP>: 20090811
|
||||
// No security issues have been worked out yet
|
||||
array('OR' =>
|
||||
array(array('Account.level >=' => 5),
|
||||
array('Account.id' => null))),
|
||||
),
|
||||
));
|
||||
|
||||
// REVISIT <AP>: 20090815
|
||||
// for debug purposes only (pr output)
|
||||
$this->Transaction->stats($id);
|
||||
|
||||
if (empty($transaction)) {
|
||||
$this->Session->setFlash(__('Invalid Item.', true));
|
||||
$this->redirect(array('action'=>'index'));
|
||||
}
|
||||
|
||||
if ($transaction['Transaction']['type'] === 'DEPOSIT' || $this->params['dev']) {
|
||||
$this->sidemenu_links[] =
|
||||
array('name' => 'Operations', 'header' => true);
|
||||
$transaction['Account']['link'] =
|
||||
$transaction['Account']['level'] >=
|
||||
$this->Permission->level('controller.accounts');
|
||||
|
||||
if ($transaction['Transaction']['type'] === 'DEPOSIT')
|
||||
$this->sidemenu_links[] =
|
||||
array('name' => 'View Slip', 'url' => array('action' => 'deposit_slip', $id));
|
||||
if ($this->params['dev'])
|
||||
$this->sidemenu_links[] =
|
||||
array('name' => 'Destroy', 'url' => array('action' => 'destroy', $id),
|
||||
'confirmMessage' => ("This may leave the database in an unstable state." .
|
||||
" Do NOT do this unless you know what you're doing." .
|
||||
" Proceed anyway?"));
|
||||
}
|
||||
if ($transaction['Transaction']['type'] === 'DEPOSIT')
|
||||
$this->addSideMenuLink('View Slip',
|
||||
array('action' => 'deposit_slip', $id), null,
|
||||
'ACTION');
|
||||
|
||||
$this->addSideMenuLink('Destroy',
|
||||
array('action' => 'destroy', $id),
|
||||
array('confirmMessage' =>
|
||||
"This may leave the database in an unstable state." .
|
||||
" Do NOT do this unless you know what you're doing." .
|
||||
" Proceed anyway?"),
|
||||
'ACTION', $this->admin_area);
|
||||
|
||||
// OK, prepare to render.
|
||||
$title = 'Transaction #' . $transaction['Transaction']['id'];
|
||||
@@ -440,15 +458,12 @@ class TransactionsController extends AppController {
|
||||
*/
|
||||
|
||||
function deposit_slip($id) {
|
||||
// Build a container for the deposit slip data
|
||||
$deposit = array('types' => array());
|
||||
|
||||
$this->id = $id;
|
||||
$deposit +=
|
||||
$this->Transaction->find('first', array('contain' => false));
|
||||
// Find the deposit transaction
|
||||
$this->Transaction->id = $id;
|
||||
$deposit = $this->Transaction->find('first', array('contain' => false));
|
||||
|
||||
// Get a summary of all forms of tender in the deposit
|
||||
$result = $this->Transaction->find
|
||||
$tenders = $this->Transaction->find
|
||||
('all',
|
||||
array('link' => array('DepositTender' =>
|
||||
array('fields' => array(),
|
||||
@@ -463,16 +478,17 @@ class TransactionsController extends AppController {
|
||||
'group' => 'TenderType.id',
|
||||
));
|
||||
|
||||
if (empty($result)) {
|
||||
die();
|
||||
// Verify the deposit exists, and that something was actually deposited
|
||||
if (empty($deposit) || empty($tenders)) {
|
||||
$this->Session->setFlash(__('Invalid Deposit.', true));
|
||||
$this->redirect(array('action'=>'deposit'));
|
||||
}
|
||||
|
||||
// Add the summary to our deposit slip data container
|
||||
foreach ($result AS $type) {
|
||||
$deposit['types'][$type['TenderType']['id']] =
|
||||
$type['TenderType'] + $type[0];
|
||||
$deposit['types'] = array();
|
||||
foreach ($tenders AS $tender) {
|
||||
$deposit['types'][$tender['TenderType']['id']] =
|
||||
$tender['TenderType'] + $tender[0];
|
||||
}
|
||||
|
||||
$deposit_total = 0;
|
||||
@@ -482,10 +498,9 @@ class TransactionsController extends AppController {
|
||||
if ($deposit['Transaction']['amount'] != $deposit_total)
|
||||
$this->INTERNAL_ERROR("Deposit items do not add up to deposit slip total");
|
||||
|
||||
$this->sidemenu_links[] =
|
||||
array('name' => 'Operations', 'header' => true);
|
||||
$this->sidemenu_links[] =
|
||||
array('name' => 'View Transaction', 'url' => array('action' => 'view', $id));
|
||||
$this->addSideMenuLink('View',
|
||||
array('action' => 'view', $id), null,
|
||||
'ACTION');
|
||||
|
||||
$title = 'Deposit Slip';
|
||||
$this->set(compact('title', 'deposit'));
|
||||
|
||||
Reference in New Issue
Block a user