Implemented a list that checks for collected rents. There is AccountsController::collected, which I'm keeping at the moment, but I decided to move the logic into ledger_entries, since ultimately that's what we want a list of and it doesn't make sense to add a bunch of LedgerEntry logic into the jqGrid query of AccountsController. Of course, right now there is hardcoded calendar functions, and hardcoded exclusion of the Concession Account. I will probably offer up two calendars to provide a range, and a list of checkboxes of each payable account.
git-svn-id: file:///svn-source/pmgr/branches/invoice_receipt_20090629@318 97e9348a-65ac-dc4b-aefc-98561f571b83
This commit is contained in:
@@ -139,6 +139,84 @@ class AccountsController extends AppController {
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
**************************************************************************
|
||||
**************************************************************************
|
||||
* action: collected
|
||||
* - Displays the items actually collected for the period
|
||||
* e.g. How much was collected in rent from 4/1/09 - 5/1/09
|
||||
*/
|
||||
function collected($id) {
|
||||
//if ($this->data) {
|
||||
//pr($this->data);
|
||||
//}
|
||||
|
||||
/* $tillable_account = $this->Account->relatedAccounts('tillable'); */
|
||||
/* $depositable_account = $this->Account->relatedAccounts('depositable'); */
|
||||
|
||||
$ledger_entries =
|
||||
$this->Account->Ledger->LedgerEntry->find
|
||||
('all',
|
||||
array('link' => array
|
||||
('Ledger' =>
|
||||
array('fields' => array('sequence'),
|
||||
|
||||
'Account' =>
|
||||
array('fields' => array('id', 'name')),
|
||||
),
|
||||
|
||||
'MonetarySource' =>
|
||||
array('fields' => array('name')),
|
||||
|
||||
'Customer' =>
|
||||
array('fields' => array('name')),
|
||||
|
||||
'Transaction' =>
|
||||
array('fields' => array('stamp')),
|
||||
|
||||
// Income / Receipt flow
|
||||
// debit: Receipt credit: A/R <-- this entry
|
||||
// debit: A/R credit: Income <-- CRLE, below
|
||||
//
|
||||
// We're searching for the Receipt<->A/R entries,
|
||||
// which are credits on the A/R account. Find the
|
||||
// reconciling A/R entries (except for unassigned
|
||||
// pre-payments, all A/R credits should have one).
|
||||
'CreditReconciliationLedgerEntry' =>
|
||||
array('alias' => 'RLedgerEntry',
|
||||
'fields' => true,
|
||||
|
||||
'Transaction' =>
|
||||
array('alias' => 'RTransaction',
|
||||
'fields' => array('stamp')),
|
||||
|
||||
// Debit should be A/R; Credit is Account of interest
|
||||
'CreditLedger' =>
|
||||
array('alias' => 'RLedger',
|
||||
'fields' => true,
|
||||
|
||||
'Account' =>
|
||||
array('alias' => 'RAccount',
|
||||
'fields' => true,
|
||||
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
'fields' => array('LedgerEntry.*', 'Reconciliation.amount'),
|
||||
'conditions' => array(array('RAccount.id' => $id),
|
||||
//array('Account.tillable' => 1),
|
||||
),
|
||||
));
|
||||
|
||||
pr(compact('ledger_entries'));
|
||||
|
||||
$title = 'Collected Whatever';
|
||||
$this->set(compact('title', 'ledger_entries'));
|
||||
//$this->render('/empty');
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
**************************************************************************
|
||||
**************************************************************************
|
||||
@@ -258,6 +336,9 @@ class AccountsController extends AppController {
|
||||
array('name' => 'Operations', 'header' => true);
|
||||
$this->sidemenu_links[] =
|
||||
array('name' => 'New Ledger', 'url' => array('action' => 'newledger', $id));
|
||||
$this->sidemenu_links[] =
|
||||
array('name' => 'Collected', 'url' => array('controller' => 'ledger_entries',
|
||||
'action' => 'collected', $id));
|
||||
|
||||
// Prepare to render
|
||||
$title = 'Account: ' . $account['Account']['name'];
|
||||
|
||||
@@ -16,6 +16,16 @@ class LedgerEntriesController extends AppController {
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
**************************************************************************
|
||||
**************************************************************************
|
||||
* action: index / etc
|
||||
* - Generate a listing of ledger_entries
|
||||
*/
|
||||
|
||||
function collected() { $this->jqGridView('Collected Entries', null, 'collected'); }
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
**************************************************************************
|
||||
**************************************************************************
|
||||
@@ -56,6 +66,40 @@ class LedgerEntriesController extends AppController {
|
||||
),
|
||||
);
|
||||
|
||||
if ($params['action'] === 'collected') {
|
||||
$link['DebitLedger']['fields'][] = 'sequence';
|
||||
$link['DebitLedger']['Account']['fields'][] = 'id';
|
||||
$link['DebitLedger']['Account']['fields'][] = 'name';
|
||||
|
||||
$link['MonetarySource']['fields'][] = 'name';
|
||||
$link['Customer']['fields'][] = 'name';
|
||||
$link['Transaction']['fields'][] = 'id';
|
||||
$link['Transaction']['fields'][] = 'stamp';
|
||||
|
||||
// Income / Receipt flow
|
||||
// debit: Receipt credit: A/R <-- this entry
|
||||
// debit: A/R credit: Income <-- CRLE, below
|
||||
//
|
||||
// We're searching for the Receipt<->A/R entries,
|
||||
// which are credits on the A/R account. Find the
|
||||
// reconciling A/R entries (except for unassigned
|
||||
// pre-payments, all A/R credits should have one).
|
||||
$link['CreditReconciliationLedgerEntry']['alias'] = 'RLedgerEntry';
|
||||
$link['CreditReconciliationLedgerEntry']['Transaction']['alias'] = 'RTransaction';
|
||||
|
||||
// Debit should be A/R; Credit is Account of interest
|
||||
$link['CreditReconciliationLedgerEntry']['CreditLedger']['alias'] = 'RLedger';
|
||||
$link['CreditReconciliationLedgerEntry']['CreditLedger']['Account']['alias'] = 'RAccount';
|
||||
|
||||
$link['DebitReconciliationLedgerEntry']['alias'] = 'DRLE';
|
||||
$link['DebitReconciliationLedgerEntry']['linkalias'] = 'DRLE_R';
|
||||
$link['DebitReconciliationLedgerEntry']['DebitLedger']['alias'] = 'DL';
|
||||
$link['DebitReconciliationLedgerEntry']['DebitLedger']['Account']['alias'] = 'DA';
|
||||
|
||||
//$link['DebitReconciliationLedgerEntry']['conditions'] =
|
||||
|
||||
}
|
||||
|
||||
if (isset($params['custom']['account_ftype'])) {
|
||||
$ftype = $params['custom']['account_ftype'];
|
||||
$ftype = ucfirst($ftype);
|
||||
@@ -130,7 +174,13 @@ class LedgerEntriesController extends AppController {
|
||||
? $params['custom']['account_type']
|
||||
: null);
|
||||
|
||||
return $model->ledgerContextFields2($ledger_id, $account_id, $account_type);
|
||||
$fields = $model->ledgerContextFields2($ledger_id, $account_id, $account_type);
|
||||
|
||||
if ($params['action'] === 'collected') {
|
||||
$fields[] = 'Reconciliation.amount';
|
||||
}
|
||||
|
||||
return $fields;
|
||||
}
|
||||
|
||||
function jqGridDataConditions(&$params, &$model) {
|
||||
@@ -143,6 +193,23 @@ class LedgerEntriesController extends AppController {
|
||||
|
||||
$conditions = parent::jqGridDataConditions($params, $model);
|
||||
|
||||
if ($params['action'] === 'collected') {
|
||||
$conditions[] = array('RAccount.id' => $params['custom']['collected_account_id']);
|
||||
//$conditions[] = array('DebitAccount.tillable' => 1);
|
||||
//$conditions[] = array('RLedgerEntry.amount != LedgerEntry.amount');
|
||||
//$conditions[] = array('Reconciliation.amount < RLedgerEntry.amount');
|
||||
$conditions[] = array('DA.payable' => 1);
|
||||
$conditions[] = array('NOT' => array('DA.name' => 'Concession'));
|
||||
//$conditions[] = array('DA.name' => 'Check');
|
||||
//$conditions[] = array('DA.name' => 'Cash');
|
||||
//$conditions[] = array('Transaction.stamp >=' => '2009-03-26');
|
||||
//$conditions[] = array('Transaction.stamp <' => '2009-04-11');
|
||||
//$conditions[] = array('Transaction.stamp >=' => '2009-04-11');
|
||||
//$conditions[] = array('Transaction.stamp <' => '2009-05-09');
|
||||
$conditions[] = array('Transaction.stamp >=' => '2009-05-09');
|
||||
$conditions[] = array('Transaction.stamp <' => '2009-06-11');
|
||||
}
|
||||
|
||||
if ($params['action'] === 'ledger') {
|
||||
$conditions[] = $model->ledgerContextConditions($ledger_id, $account_type);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user