From 45ae013e996cf2e75d753a21a321bb1951292931 Mon Sep 17 00:00:00 2001 From: abijah Date: Wed, 17 Jun 2009 09:00:38 +0000 Subject: [PATCH] Removed remnants of the Containable behavior (which we've already put into the application model. Modified the account model to look for all unreconciled transactions, not just those from the current ledger. Added a mechanism to find unreconciled transactions up the chain, including lease and customer. git-svn-id: file:///svn-source/pmgr/branches/ledger_transactions_20090605/site@159 97e9348a-65ac-dc4b-aefc-98561f571b83 --- models/account.php | 11 ++++------- models/customer.php | 34 ++++++++++++++++++++++++++++++---- models/lease.php | 19 +++++++++++++++++++ models/ledger.php | 2 -- models/unit.php | 2 -- 5 files changed, 53 insertions(+), 15 deletions(-) diff --git a/models/account.php b/models/account.php index 9538803..b8b29fd 100644 --- a/models/account.php +++ b/models/account.php @@ -100,13 +100,11 @@ class Account extends AppModel { $contain = array('CurrentLedger' => array('fields' => array('CurrentLedger.id'))); } - $this->Behaviors->attach('Containable'); $account = $this->find('first', array ('contain' => $contain, 'fields' => array(), 'conditions' => array(array('Account.id' => $id)), )); - $this->Behaviors->detach('Containable'); if ($all) { $ledger_ids = array(); @@ -199,7 +197,8 @@ class Account extends AppModel { ************************************************************************** ************************************************************************** * function: findUnreconciledLedgerEntries - * - Returns summary data from the requested account. + * - Returns ledger entries that are not yet reconciled + * (such as charges not paid). */ function findUnreconciledLedgerEntries($id = null) { @@ -207,7 +206,7 @@ class Account extends AppModel { $unreconciled['debits'] = $this->find ('all', array ('link' => array - ('CurrentLedger' => array + ('Ledger' => array ('fields' => array(), 'DebitLedgerEntry' => array ('fields' => array('id', 'amount'), @@ -229,7 +228,7 @@ class Account extends AppModel { $unreconciled['credits'] = $this->find ('all', array ('link' => array - ('CurrentLedger' => array + ('Ledger' => array ('fields' => array(), 'CreditLedgerEntry' => array ('fields' => array('id', 'amount'), @@ -268,7 +267,6 @@ class Account extends AppModel { // (not just the balance), so we may have to query all // ledgers, as dictated by the $all parameter. - $this->Behaviors->attach('Containable'); $account = $this->find('first', array('contain' => ($all @@ -280,7 +278,6 @@ class Account extends AppModel { 'conditions' => array (array('Account.id' => $id)) )); - $this->Behaviors->detach('Containable'); $stats = array(); if ($all) { diff --git a/models/customer.php b/models/customer.php index 827026d..dc22db0 100644 --- a/models/customer.php +++ b/models/customer.php @@ -39,13 +39,11 @@ class Customer extends AppModel { /* 'args' => compact('id', 'link'), */ /* )); */ - $this->Behaviors->attach('Containable'); $customer = $this->find('first', array('contain' => array('Lease' => array('fields' => array('id'))), 'fields' => array('account_id'), 'conditions' => array(array('Customer.id' => $id)))); - $this->Behaviors->detach('Containable'); $entries = $this->Account->findLedgerEntriesRelatedToAccount ($customer['Customer']['account_id'], @@ -69,6 +67,36 @@ class Customer extends AppModel { } + /************************************************************************** + ************************************************************************** + ************************************************************************** + * function: findUnreconciledLedgerEntries + * - Returns ledger entries that are not yet reconciled + * (such as charges not paid). + */ + + function findUnreconciledLedgerEntries($id = null) { + $customer = $this->find('first', + array('contain' => + array('Lease' => array('fields' => array('id'))), + 'fields' => array('account_id'), + 'conditions' => array(array('Customer.id' => $id)))); + + $unreconciled = $this->Account->findUnreconciledLedgerEntries + ($customer['Customer']['account_id']); + + foreach ($customer['Lease'] AS $lease) { + $lease_unrec = $this->Lease->findUnreconciledLedgerEntries($lease['id']); + $unreconciled['debits'] = array_merge($unreconciled['debits'], + $lease_unrec['debits']); + $unreconciled['credits'] = array_merge($unreconciled['credits'], + $lease_unrec['credits']); + } + + return $unreconciled; + } + + /************************************************************************** ************************************************************************** ************************************************************************** @@ -132,7 +160,6 @@ class Customer extends AppModel { return null; // Get the basic information necessary - $this->Behaviors->attach('Containable'); $customer = $this->find('first', array('contain' => array('Account' => array @@ -143,7 +170,6 @@ class Customer extends AppModel { ), 'conditions' => array (array('Customer.id' => $id)))); - $this->Behaviors->detach('Containable'); // Get stats from the customer account, and each lease $stats['Account'] = $this->Account->stats($customer['Account']['id']); diff --git a/models/lease.php b/models/lease.php index a7da73e..a611e85 100644 --- a/models/lease.php +++ b/models/lease.php @@ -91,6 +91,25 @@ class Lease extends AppModel { } + /************************************************************************** + ************************************************************************** + ************************************************************************** + * function: findUnreconciledLedgerEntries + * - Returns ledger entries that are not yet reconciled + * (such as charges not paid). + */ + + function findUnreconciledLedgerEntries($id = null) { + $lease = $this->find('first', array + ('recursive' => -1, + 'fields' => array('account_id'), + 'conditions' => array(array('id' => $id)), + )); + + return $this->Account->findUnreconciledLedgerEntries($lease['Lease']['account_id']); + } + + /************************************************************************** ************************************************************************** ************************************************************************** diff --git a/models/ledger.php b/models/ledger.php index 56cbf7e..25f8f33 100644 --- a/models/ledger.php +++ b/models/ledger.php @@ -57,7 +57,6 @@ class Ledger extends AppModel { /* )); */ if (!isset($account_type)) { - $this->Behaviors->attach('Containable'); $ledger = $this->find('first', array ('contain' => array ('Account' => array @@ -67,7 +66,6 @@ class Ledger extends AppModel { 'fields' => array(), 'conditions' => array(array('Ledger.id' => $id)), )); - $this->Behaviors->detach('Containable'); $account_type = $ledger['Account']['type']; } diff --git a/models/unit.php b/models/unit.php index f7aa047..69b92e7 100644 --- a/models/unit.php +++ b/models/unit.php @@ -70,7 +70,6 @@ class Unit extends AppModel { return null; // Get the basic information necessary - $this->Behaviors->attach('Containable'); $unit = $this->find('first', array('contain' => array ('Lease' => array @@ -82,7 +81,6 @@ class Unit extends AppModel { 'conditions' => array (array('Unit.id' => $id)), )); - $this->Behaviors->detach('Containable'); // Get the stats for the current lease $stats['CurrentLease'] = $this->Lease->stats($unit['CurrentLease']['id']);