<?php require_once '../lib/init.php'; if (!$session->isLoggedIn()) { redirect_to('../index.php'); } if (!$ac->hasPermission('delete_rent')) { $mesg = "You don't have permission to access this page"; $session->message($mesg); redirect_to($_SERVER['HTTP_REFERER']); } if (isset($_GET['tid']) && !empty($_GET['tid']) && (isset($_GET['aid']) && !empty($_GET['aid']))) { $tenant_id = (int) $_GET['tid']; $arrears_id = (int) $_GET['aid']; if (!is_int($tenant_id) || !is_int($arrears_id)) { $mesg = "Arrears could not be edited. An invalid value was sent through the URL"; $session->message($mesg); redirect_to("tenants.php"); } else { $arrears = Arrears::findById($arrears_id); echo var_dump($arrears); if ($arrears->deleteArrears()) { $mesg = "Arrears deleted"; $session->message($mesg); redirect_to("tenant_arrears.php?tid={$tenant_id}"); } } }
/** * 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; } } }