diff --git a/CRM/Grant/Form/Task/GrantPayment.php b/CRM/Grant/Form/Task/GrantPayment.php index 39468a24bb19c8fc0a536b8a3f5ed6fe3bf7fb38..32787c0d39fc2381e3bd9132467537467ec23555 100755 --- a/CRM/Grant/Form/Task/GrantPayment.php +++ b/CRM/Grant/Form/Task/GrantPayment.php @@ -174,18 +174,26 @@ class CRM_Grant_Form_Task_GrantPayment extends CRM_Core_Form for ($i=0; $i<$daoCount; $i=$i+$maxLimit) { $dao = CRM_Grant_DAO_Grant::executeQuery($query." LIMIT $i, $maxLimit"); $grantPayment = $payment_details = $amountsTotal = $details = array(); - while( $dao->fetch() ) { - if (isset($amountsTotal[$dao->id])) { + while( $dao->fetch() ) { + if (isset($amountsTotal[$dao->id])) { $amountsTotal[$dao->id] += $dao->total_amount; } else { $amountsTotal[$dao->id] = $dao->total_amount; } if ( !empty( $payment_details[$dao->id] ) ) { - $payment_details[$dao->id] .= '</td></tr><tr><td width="15%" >'.date("Y-m-d", strtotime($values['payment_date'])).'</td><td width="15%" >'.$dao->grant_id.'</td><td width="50%" >'.CRM_Grant_BAO_GrantProgram::getDisplayName( $dao->id ).'</td><td width="20%" >'.CRM_Utils_Money::format( $dao->total_amount,null, null,false ); + // List all payments on this cheque (if contact has multiple applications being paid) + $payment_details[$dao->id] .= '</td></tr><tr><td width="15%" >'. + date("Y-m-d", strtotime($values['payment_date'])).'</td><td width="15%" >'. + $dao->grant_id.'</td><td width="50%" >'.CRM_Grant_BAO_GrantProgram::getDisplayName( $dao->id ). + '</td><td width="20%" >'.CRM_Utils_Money::format( $dao->total_amount,null, null,false ); } else { - $payment_details[$dao->id] = date("Y-m-d", strtotime($values['payment_date'])).'</td><td width="15%" >'.$dao->grant_id.'</td><td width="50%" >'.CRM_Grant_BAO_GrantProgram::getDisplayName( $dao->id ).'</td><td width="20%" >'.CRM_Utils_Money::format( $dao->total_amount,null, null,false ); + $payment_details[$dao->id] = date("Y-m-d", strtotime($values['payment_date'])).'</td><td width="15%" >'. + $dao->grant_id.'</td><td width="50%" >'.CRM_Grant_BAO_GrantProgram::getDisplayName( $dao->id ). + '</td><td width="20%" >'.CRM_Utils_Money::format( $dao->total_amount,null, null,false ); } + + // Aggregate payments per contact id if ( !empty( $details[$dao->id]['total_amount'] ) ) { $details[$dao->id]['total_amount'] += $dao->total_amount; } else { @@ -210,57 +218,63 @@ class CRM_Grant_Form_Task_GrantPayment extends CRM_Core_Form } else { $details[$dao->id]['payment_reason'][$dao->payment_reason] = $dao->payment_reason; } - $totalAmount = 0; - $words = new CRM_Grant_Words(); - foreach ($details as $id => $value) { - $grantPayment[$id]['contact_id'] = $id; - $grantPayment[$id]['financial_type_id'] = $values['financial_type_id']; - $grantPayment[$id]['payment_batch_number'] = $values['payment_batch_number']; - $grantPayment[$id]['payment_number'] = $values['payment_number']; - $grantPayment[$id]['payment_date'] = date("Y-m-d", strtotime($values['payment_date'])); - $grantPayment[$id]['payment_created_date'] = date('Y-m-d'); - $grantPayment[$id]['payable_to_name'] = CRM_Grant_BAO_GrantProgram::getDisplayName( $id ); - $grantPayment[$id]['payable_to_address'] = - CRM_Utils_Array::value('address', CRM_Grant_BAO_GrantProgram::getAddress($id, NULL, true)); - $grantPayment[$id]['amount'] = $details[$id]['total_amount']; - $grantPayment[$id]['currency'] = $details[$id]['currency']; - $grantPayment[$id]['payment_status_id' ] = 1; - if ( $this->_prid ) { - $grantPayment[$id]['payment_reason' ] = implode(', ', $details[$id]['payment_reason']); - $grantPayment[$id]['replaces_payment_id'] = $this->_prid; - $grantPayment[$id]['payment_status_id' ] = CRM_Core_OptionGroup::getValue( 'grant_payment_status', 'Reprinted', 'name' ); - } else { - $grantPayment[$id]['payment_reason' ] = implode(', ', $details[$id]['grant_program_id']); - $grantPayment[$id]['replaces_payment_id'] = 'NULL'; - } - $grantPayment[$id]['payment_details'] = $payment_details[$id]; - $values['payment_number']++; - $totalAmount += $details[$id]['total_amount']; + } + $totalAmount = 0; + $words = new CRM_Grant_Words(); + foreach ($details as $id => $value) { + $grantPayment[$id]['contact_id'] = $id; + $grantPayment[$id]['financial_type_id'] = $values['financial_type_id']; + $grantPayment[$id]['payment_batch_number'] = $values['payment_batch_number']; + $grantPayment[$id]['payment_number'] = $values['payment_number']; + $grantPayment[$id]['payment_date'] = date("Y-m-d", strtotime($values['payment_date'])); + $grantPayment[$id]['payment_created_date'] = date('Y-m-d'); + $grantPayment[$id]['payable_to_name'] = CRM_Grant_BAO_GrantProgram::getDisplayName( $id ); + $grantPayment[$id]['payable_to_address'] = + CRM_Utils_Array::value('address', CRM_Grant_BAO_GrantProgram::getAddress($id, NULL, true)); + $grantPayment[$id]['amount'] = $details[$id]['total_amount']; + $grantPayment[$id]['currency'] = $details[$id]['currency']; + $grantPayment[$id]['payment_status_id' ] = 1; + if ( $this->_prid ) { + $grantPayment[$id]['payment_reason' ] = implode(', ', $details[$id]['payment_reason']); + $grantPayment[$id]['replaces_payment_id'] = $this->_prid; + $grantPayment[$id]['payment_status_id' ] = CRM_Core_OptionGroup::getValue( 'grant_payment_status', 'Reprinted', 'name' ); + } else { + $grantPayment[$id]['payment_reason' ] = implode(', ', $details[$id]['grant_program_id']); + $grantPayment[$id]['replaces_payment_id'] = 'NULL'; } - foreach ( $grantPayment as $grantKey => $values ) { - $row = array(); - $grantValues = $values; - if ( $this->_prid ) { - require_once 'CRM/Grant/DAO/GrantPayment.php'; - $dao = new CRM_Grant_DAO_GrantPayment( ); - $dao->id = $this->_prid; - $dao->payment_status_id = CRM_Core_OptionGroup::getValue( 'grant_payment_status', 'Stopped', 'name' ); - $dao->save(); - } - require_once 'CRM/Grant/Words.php'; - $words = new CRM_Grant_Words(); - $amountInWords = ucwords($words->convert_number_to_words($values['amount'])); - $grantPayment[$grantKey]['total_in_words'] = $values['total_in_words'] = $grantValues['total_in_words'] = $amountInWords; - $result = CRM_Grant_BAO_GrantPayment::add( &$values, $ids = array()); - $grantPayment[$grantKey]['amount'] = $values['amount']; - if ($curr_id == $grantKey) { - $grantTotalPayment[$grantKey] = $grantPayment[$grantKey]; - $grantTotalPayment[$grantKey]['amount'] = $amountsTotal[$grantKey]; - } - $contactPayments[$grantKey] = $result->id; - unset($grantPayment[$grantKey]['payment_status_id']); - $grantPayment[$grantKey]['payment_id'] = $grantValues['payment_id'] = $result->payment_number; + $grantPayment[$id]['payment_details'] = $payment_details[$id]; + $values['payment_number']++; + $totalAmount += $details[$id]['total_amount']; + } + + foreach ( $grantPayment as $grantKey => $grantInfo ) { + $row = array(); + $grantValues = $grantInfo; + if ( $this->_prid ) { + require_once 'CRM/Grant/DAO/GrantPayment.php'; + $dao = new CRM_Grant_DAO_GrantPayment( ); + $dao->id = $this->_prid; + $dao->payment_status_id = CRM_Core_OptionGroup::getValue( 'grant_payment_status', 'Stopped', 'name' ); + $dao->save(); } + require_once 'CRM/Grant/Words.php'; + $words = new CRM_Grant_Words(); + $amountInWords = ucwords($words->convert_number_to_words($grantInfo['amount'])); + $grantPayment[$grantKey]['total_in_words'] = $grantInfo['total_in_words'] = + $grantValues['total_in_words'] = $amountInWords; + $grantPayment[$grantKey]['amount'] = $grantInfo['amount']; + if ($curr_id == $grantKey) { + $grantTotalPayment[$grantKey] = $grantPayment[$grantKey]; + $grantTotalPayment[$grantKey]['amount'] = $amountsTotal[$grantKey]; + } + // Save payment + $savePayment = $grantPayment[$grantKey]; + $savePayment['payable_to_address'] = str_replace('<br /> ', '', $savePayment['payable_to_address']); + $result = CRM_Grant_BAO_GrantPayment::add(&$savePayment, $ids = array()); + + $grantPayment[$grantKey]['payment_id'] = $result->payment_number; + $contactPayments[$grantKey] = $result->id; + unset($grantPayment[$grantKey]['payment_status_id']); } $grandTotal += $totalAmount; $downloadNamePDF = check_plain('grantPayment');