/** * 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')); }
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.'); }