示例#1
0
 public static function payHspRequest($hspReqest)
 {
     try {
         // Check if sensitive data is changed by admin and write to log
         try {
             $log = Logger::getInstance();
             $exsistingRequest = $hspReqest->getHspRequest($hspReqest->getId());
             $mssg = $exsistingRequest->isDataChangedByAdmin($hspReqest);
             if ($mssg != false) {
                 $log->info($mssg);
             }
         } catch (Exception $e) {
         }
         $hspReqestTemp = $hspReqest->getHspRequest($hspReqest->getId());
         $hspSummary = new HspSummary();
         $empId = $hspReqestTemp->getEmployeeId();
         $year = date('Y', strtotime($hspReqestTemp->getDateIncurred()));
         $hspReqestTemp->setDatePaid($hspReqest->getDatePaid());
         $hspRecordArr = array();
         $amount = $hspReqest->getExpenseAmount();
         $hspId = $hspReqestTemp->getHspId();
         switch ($hspId) {
             case 1:
                 $personalHspSummary = HspSummary::fetchHspSummary($year, 1, $empId);
                 $amountLimit = $personalHspSummary[0]->getTotalAccrued() - $personalHspSummary[0]->getTotalUsed();
                 break;
             case 2:
                 $personalHspSummary = HspSummary::fetchHspSummary($year, 1, $empId);
                 if (count($personalHspSummary) == 2) {
                     $index = $personalHspSummary[0]->getHspPlanName() == 'HRA' ? 0 : 1;
                 } else {
                     $index = 0;
                 }
                 $amountLimit = $personalHspSummary[$index]->getTotalAccrued() - $personalHspSummary[$index]->getTotalUsed();
                 break;
             case 3:
                 $personalHspSummary = HspSummary::fetchHspSummary($year, 1, $empId);
                 $index = count($personalHspSummary) == 2 ? 1 : 0;
                 $amountLimit = $personalHspSummary[$index]->getAnnualLimit() - $personalHspSummary[$index]->getTotalUsed();
                 break;
         }
         if ($amount > $amountLimit) {
             throw new HspPaymentRequestException('Request amount cannot exceed the annual limit', HspPaymentRequestException::EXCEED_LIMIT);
         }
         $server = $_SERVER['HTTP_HOST'];
         $path = str_replace(__FILE__, '', $_SERVER['REQUEST_URI']);
         $link = 'http://' . $server . $path . '&benefitcode=Benefits&action=View_Edit_Hsp_Request&id=' . $hspReqest->getId();
         //$log->debug("BC before ter :" . $terminated);
         //$log->debug("BC before hsp :" . $hspValue);
         //$log->debug("BC before total :" . $totalUsed);
         $msg = 'SAVE_SUCCESS';
         $hspReqest->payHspRequest();
         // For updating Total Used in HSP Summary
         Hsp::updateUsedPerPayment($year, $hspReqestTemp->getHspId(), $empId, $hspReqest->getExpenseAmount());
         $hspMailNotification = new HspMailNotification();
         $hspMailNotification->sendHspPaymentAcceptNotification($hspReqestTemp, $link);
     } catch (HspPaymentRequestException $e) {
         switch ($e->getCode()) {
             case HspPaymentRequestException::INVALID_ROW_COUNT:
                 $msg = 'SAVE_FAILURE';
                 break;
             case HspPaymentRequestException::EXCEED_LIMIT:
                 $msg = 'SAVE_REQUEST_LIMIT_EXCEED_FAILURE';
                 break;
             default:
                 $msg = 'UNKNOWN_ERROR_FAILURE';
                 break;
         }
     }
     $_SESSION['paid'] = "Yes";
     $id = $_GET['id'];
     self::redirect($msg, "?benefitcode=Benefits&action=View_Hsp_Request&id={$id}");
 }