/**
 * 
 */
package com.ejie.ad74a.util;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.util.Currency;
import java.util.Locale;

/**
 * Clase de utilidad relacionada con precios
 * @author BICUGUAL
 *
 */
public class UtilPrecios {

	private UtilPrecios() {	}
	
	
	/**
	 * Devuelve el importe con 4 decimales y redodeo hacia arriba calculando la
	 * parte proporcional del mismo si el numero de dias para el importe a aplicar
	 * es menor que la mensualidad
	 * 
	 * @param diasPrecio
	 * @param diasMensualidad
	 * @param importeMensualidad
	 * @return
	 */
	public static BigDecimal calcularImporte(long diasPrecio, long diasMensualidad, BigDecimal importeMensualidad) {

		// Si los dias a facturar no cubren toda la mensualidad calculamos la parte
		// proporcional
		if (diasPrecio < diasMensualidad) {

			BigDecimal diasXImporte = BigDecimal.valueOf(diasPrecio).multiply(importeMensualidad);

			return diasXImporte.divide(BigDecimal.valueOf(diasMensualidad), 4, RoundingMode.HALF_UP);
		}

		return importeMensualidad.setScale(4, RoundingMode.HALF_UP);
	}
	
	public static String importeToString(BigDecimal number) {
		NumberFormat nf = NumberFormat.getCurrencyInstance();
		nf.setCurrency(Currency.getInstance(new Locale("ES", "ES")));
		return nf.format(number);
	}
	
	public static String importeToStringSinEur(BigDecimal number, boolean conRedondeo) {
		
		String retorno = null;
		BigDecimal numberRedondeo = number;
		
		if (number != null) {
			if (conRedondeo) {
				numberRedondeo = numberRedondeo.setScale(2, RoundingMode.HALF_UP);
			}
			
			retorno = numberRedondeo.toString().replace(".", "pto").replace(",", "cma");
			retorno = retorno.replace("pto", ",").replace("cma", ".");
			
			if (!retorno.contains(",")) {
				retorno = retorno + ",00";
			}
		}
		
		return retorno;
	}
	
}
