/**
  * Record a payment of an outstanding rent balance
  * @param int $arrears_id The ID used to identify the arrears
  * @param int $amount The amount payed to settle the arrears
  * @param string $start Date specifying start of a month
  * @param string $end Date specifying end of a month
  * @param string $mode The mode of payment for the transaction
  * @param object $session A session object declared in global scope
  * @return boolean
  */
 public function payArrears($arrears_id, $amount, $start, $end, $mode, $session)
 {
     $arrears = Arrears::findById($arrears_id);
     $bal = $arrears->getAmountOwed();
     $bal = (int) $this->_sanitizeMoneyString($bal);
     $db = Database::getInstance();
     $mysqli = $db->getConnection();
     // Initialize object to keep track of transaction details
     $ap = new ArrearsPaid();
     $ap->setTenantId($this->id);
     $ap->setPaymentAmount($amount);
     $ap->setStartPeriod($start);
     $ap->setEndPeriod($end);
     $ap->setDatePaid();
     $ap->generateReceiptNo();
     $ap->setPaymentMode($mode);
     $ap->setReceivingAgent($session);
     if ($amount == $bal) {
         // All arrears cleared
         $status = PaymentStatus::findByPeriod($this->id, $start, $end);
         $status->setStatus(1);
         $mysqli->autocommit(false);
         $ap->save();
         $arrears->delete();
         $_SESSION['arrears_obj'] = $this->arrears_obj = serialize($arrears);
         $status->save();
         if (!$mysqli->commit()) {
             $mysqli->rollback();
             $mysqli->autocommit(true);
             return false;
         } else {
             $mysqli->autocommit(true);
             return true;
         }
     } elseif ($amount < $bal) {
         // Arrears partially cleared
         $new_arrears = (int) $bal - (int) $amount;
         $arrears->setAmountOwed($new_arrears);
         $mysqli->autocommit(false);
         $ap->save();
         $arrears->save();
         if (!$mysqli->commit()) {
             $mysqli->rollback();
             $mysqli->autocommit(true);
             return false;
         } else {
             $mysqli->autocommit(true);
             return true;
         }
     }
 }