All Downloads are FREE. Search and download functionalities are using the official Maven repository.

mx.emite.sdk.NU Maven / Gradle / Ivy

package mx.emite.sdk;



import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.MathContext;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.Format;
import java.text.NumberFormat;
import java.util.Locale;

import org.apache.log4j.Logger;

public class NU {
	
		
		public final static Locale local = new Locale("es","MX");
		public final static  RoundingMode redondeo = RoundingMode.HALF_EVEN;
		public final static MathContext MC = new MathContext(10, redondeo);
		
		private  final Logger log =  Logger.getLogger(NU.class);
	 //dateTimeFormat = new SimpleDateFormat
     //cardDateFormat = new SimpleDateFormat("MMyyyy");
		private  NumberUtilCache Cache = new NumberUtilCache();
		
		
		private enum Tipos{
			TIPO_DINERO,DOUBLE,ENTERO,MONTO, CODIGOBARRAS
		}
		
		public enum NumeroFormatos{
		DINERO(Tipos.TIPO_DINERO,2),
		DOSDECIMALES(Tipos.DOUBLE,2),
		ENTERO5(Tipos.ENTERO,5),
		ENTERO7(Tipos.ENTERO,5),
		LONG(Tipos.ENTERO,7),
		SINDECIMALES(Tipos.DOUBLE,0),
		DINEROSINDECIMALES(Tipos.TIPO_DINERO,0),
		MONTO(Tipos.MONTO,3),
		CANTIDAD5DECIMALES(Tipos.MONTO,5),
		CANTIDAD10DECIMALES(Tipos.MONTO,10),
		PORCENTAJE(Tipos.MONTO,2),
		CODIGOBARRAS(Tipos.CODIGOBARRAS,0),
		ENTERO3(Tipos.ENTERO,3),
		CANTIDAD8DECIMALES(Tipos.MONTO,8),
		CINCODECIMALES(Tipos.DOUBLE,5);
		;
		
		
		//private  SimpleDateFormat dftc = new SimpleDateFormat("dd/MM/yy HH:mm");
		//private  SimpleDateFormat dft = new SimpleDateFormat();
		//private  SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
		//private  SimpleDateFormat dfc = new SimpleDateFormat("dd/MM/yy");
		//private  SimpleDateFormat dfcfdi = new SimpleDateFormat("yyyy-MM-dd");
		//private  SimpleDateFormat dfmini = new SimpleDateFormat("dd/MM");
		//private  SimpleDateFormat dftarde = new SimpleDateFormat("aa");
		private  final Tipos tipo;
		private final int decimales;
		NumeroFormatos(Tipos tipo){
			this(tipo,2);				
		}
		
		NumeroFormatos(Tipos tipo,int decimales){
			this.tipo=tipo;			
			this.decimales=decimales;
		}
		
		public Format getFormato(){
			switch(tipo){
			case TIPO_DINERO: return NumberFormat.getCurrencyInstance(local);
			case DOUBLE: 	NumberFormat res = NumberFormat.getInstance(local);
							res.setMinimumFractionDigits(decimales);
							res.setMaximumFractionDigits(decimales);
							res.setGroupingUsed(false);
							return res;
			case ENTERO:	return new DecimalFormat(getCeros(decimales));
			case MONTO:	NumberFormat mf = NumberFormat.getInstance(local);
						mf.setMinimumFractionDigits(2);
						mf.setMaximumFractionDigits(decimales);
						mf.setGroupingUsed(false);
						return mf;
			case CODIGOBARRAS: return new DecimalFormat("0000000000.000000",new DecimalFormatSymbols(local));
								
			}
			return null;
		}

		public String getValorFormato() {
			String res="";
			for(int x=0;x T nvl(T a, T b) {
			return (a == null) ? b : a;
		}

		public static  BigDecimal montoimpuesto(BigDecimal subtotal,	BigDecimal tasa) {
			if(subtotal!=null&&tasa!=null){
				BigDecimal monto = subtotal;
				monto = monto.multiply(tasa);
				monto = monto.divide(new BigDecimal(100),3,redondeo);
				return monto;
			}
			return BigDecimal.ZERO;
		}

		public static int comparaNumeros(final Number x, final Number y) {
		    if(isSpecial(x) || isSpecial(y))
		        return Double.compare(x.doubleValue(), y.doubleValue());
		    else
		        return toBigDecimal(x).compareTo(toBigDecimal(y));
		}

		private static boolean isSpecial(final Number x) {
		    boolean specialDouble = x instanceof Double
		            && (Double.isNaN((Double) x) || Double.isInfinite((Double) x));
		    boolean specialFloat = x instanceof Float
		            && (Float.isNaN((Float) x) || Float.isInfinite((Float) x));
		    return specialDouble || specialFloat;
		}

		private static BigDecimal toBigDecimal(final Number number) {
		    if(number instanceof BigDecimal)
		        return (BigDecimal) number;
		    if(number instanceof BigInteger)
		        return new BigDecimal((BigInteger) number);
		    if(number instanceof Byte || number instanceof Short
		            || number instanceof Integer || number instanceof Long)
		        return new BigDecimal(number.longValue());
		    if(number instanceof Float || number instanceof Double)
		        return new BigDecimal(number.doubleValue());

		    try {
		        return new BigDecimal(number.toString());
		    } catch(final NumberFormatException e) {
		        throw new RuntimeException("The given number (\"" + number
		                + "\" of class " + number.getClass().getName()
		                + ") does not have a parsable string representation", e);
		    }
		}
		
		
		/*public  void main(String[] args){
			final BigDecimal factor = divide(BigDecimal.valueOf(9.2),BigDecimal.valueOf(100),3);
			final BigDecimal tasa = divide(BigDecimal.valueOf(16),BigDecimal.valueOf(100),2);//,3,RoundingMode.HALF_UP);
			BigDecimal primaNeta = new BigDecimal(15622.99);
			BigDecimal derechos = new BigDecimal(450);
			BigDecimal recargos =  multiplica(primaNeta,factor,2);
			BigDecimal impuestos = multiplica(primaNeta.add(derechos).add(recargos),tasa,2);
			//BigDecimal tasa=solicitada.tasa;
			BigDecimal primaTotal=primaNeta.add( derechos).add( recargos).add( impuestos);
			//BigDecimal id_Frecuencia_Cobro=frecuencia.getId_Frecuencia_Cobro();
			System.out.print(primaTotal);
			
		}*/
	
		

		
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy