Exemple #1
0
 /**
  * Format the amount
  * 
  * @param integer $amount
  * @param integer $decimals
  * @param string $decPoint
  * @param string $thousandSep
  * @param string $currency
  * @return int
  */
 public function formatAmount($amount, $decimals, $decPoint, $thousandSep, $currency)
 {
     return Utils::getformattedAmount($amount, $decimals, $decPoint, $thousandSep, $currency);
 }
 /**
  * Method to fetch per diem values from database
  *
  * @Route("/secured/expense/perdiemvalues", name="OpitOpitHrmTravelBundle_expense_perdiemvalues")
  * @Template()
  * @Method({"POST"})
  */
 public function fetchPerDiemValuesAction()
 {
     // Get the currency format options.
     $currencyConfig = $this->container->getParameter('currency_config');
     $currencyFormat = $currencyConfig['currency_format'];
     $entityManager = $this->getDoctrine()->getManager();
     $perDiemAmounts = $entityManager->getRepository('OpitOpitHrmTravelBundle:TEPerDiem')->findAll();
     $values = array();
     foreach ($perDiemAmounts as $value) {
         $values[$value->getHours()] = Utils::getformattedAmount($value->getAmount(), $currencyFormat['decimals'], $currencyFormat['dec_point'], $currencyFormat['thousands_sep'], 'EUR');
     }
     return new JsonResponse($values);
 }
 /**
  * @internal
  */
 public function calculatePerDiem($arrivalDateTime, $departureDateTime)
 {
     $currencyFormat = $this->config['currency_format'];
     $departureTimeHour = intval($departureDateTime->format('H'));
     $departureDate = $departureDateTime->format('Y-m-d');
     $arrivalTimeHour = intval($arrivalDateTime->format('H'));
     $arrivalDate = $arrivalDateTime->format('Y-m-d');
     $perDiemAmount = 0;
     $daysBetweenArrivalDeparture = 0;
     $totalTravelHoursOnSameDay = 0;
     $daysBetweenPerDiem = 0;
     $departureDayTravelHours = 0;
     $arrivalDayTravelHours = 0;
     $departureDayPerDiem = 0;
     $arrivalDayPerDiem = 0;
     $fullDays = 0;
     if ($departureDate !== $arrivalDate) {
         while ($departureTimeHour < 24) {
             $departureTimeHour++;
             $departureDayTravelHours++;
         }
         $departureDayPerDiem = $this->entityManager->getRepository('OpitOpitHrmTravelBundle:TEPerDiem')->findAmountToPay($departureDayTravelHours);
         $perDiemAmount += $departureDayPerDiem;
         while ($arrivalTimeHour > 0) {
             $arrivalTimeHour--;
             $arrivalDayTravelHours++;
         }
         $arrivalDayPerDiem = $this->entityManager->getRepository('OpitOpitHrmTravelBundle:TEPerDiem')->findAmountToPay($arrivalDayTravelHours);
         $perDiemAmount += $arrivalDayPerDiem;
         $daysBetweenArrivalDeparture = date_diff(new \DateTime($departureDate), new \DateTime($arrivalDate));
         $fullDays = $daysBetweenArrivalDeparture->days - 1;
         $daysBetweenPerDiem = $this->entityManager->getRepository('OpitOpitHrmTravelBundle:TEPerDiem')->findAmountToPay(24) * $fullDays;
         $perDiemAmount += $daysBetweenPerDiem;
     } else {
         $totalTravelHoursOnSameDay = 0;
         while ($departureTimeHour < $arrivalTimeHour) {
             $departureTimeHour++;
             $totalTravelHoursOnSameDay++;
         }
         $perDiemAmount += $this->entityManager->getRepository('OpitOpitHrmTravelBundle:TEPerDiem')->findAmountToPay($totalTravelHoursOnSameDay);
     }
     return array('totalTravelHoursOnSameDay' => $totalTravelHoursOnSameDay, 'departureHours' => $departureDayTravelHours, 'departurePerDiem' => Utils::getformattedAmount($departureDayPerDiem, $currencyFormat['decimals'], $currencyFormat['dec_point'], $currencyFormat['thousands_sep'], 'EUR'), 'arrivalHours' => $arrivalDayTravelHours, 'arrivalPerDiem' => Utils::getformattedAmount($arrivalDayPerDiem, $currencyFormat['decimals'], $currencyFormat['dec_point'], $currencyFormat['thousands_sep'], 'EUR'), 'daysBetween' => $fullDays, 'daysBetweenPerDiem' => Utils::getformattedAmount($daysBetweenPerDiem, $currencyFormat['decimals'], $currencyFormat['dec_point'], $currencyFormat['thousands_sep'], 'EUR'), 'totalPerDiem' => Utils::getformattedAmount($perDiemAmount, $currencyFormat['decimals'], $currencyFormat['dec_point'], $currencyFormat['thousands_sep'], 'EUR'));
 }
Exemple #4
0
 public function testGetformattedAmount()
 {
     $decimals = 2;
     $decPoint = ',';
     $thousandSep = ' ';
     $result = Utils::getformattedAmount(10050, $decimals, $decPoint, $thousandSep, 'HUF');
     $this->assertEquals('10 050', $result, 'Utils::getformattedAmount The amount format does not match.');
     $result2 = Utils::getformattedAmount(10050, $decimals, $decPoint, $thousandSep, 'EUR');
     $this->assertEquals('10 050,00', $result2, 'Utils::getformattedAmount The amount format does not match.');
 }