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

mx.emite.sdk.enums.sat.RegimenesFiscales Maven / Gradle / Ivy

Go to download

Este kit de consumo provee a los integradores de Apis de Java para construir software que consuma los diferentes servicios web publicados por Emite Facturacion

The newest version!
package mx.emite.sdk.enums.sat;

import org.apache.commons.lang3.StringUtils;
import org.beanio.types.TypeConversionException;

import lombok.Getter;
import mx.emite.sdk.errores.ApiException;
import mx.emite.sdk.errores.I_Api_Errores;
import mx.emite.sdk.utils.Utilerias;

@Getter
public enum RegimenesFiscales implements Sat{
	
	GENERALDELEYPERSONASMORALES(601,"General de Ley Personas Morales"),
	PERSONASMORALESCONFINESNOLUCRATIVOS(603,"Personas Morales con Fines no Lucrativos"),
	SUELDOSYSALARIOSEINGRESOSASIMILADOSASALARIOS(605,"Sueldos y Salarios e Ingresos Asimilados a Salarios"),
	ARRENDAMIENTO(606,"Arrendamiento"),
	DEMASINGRESOS(608,"Demás ingresos"),
	CONSOLIDACION(609,"Consolidación"),
	RESIDENTESENELEXTRANJEROSINESTABLECIMIENTOPERMANENTEENMEXICO(610,"Residentes en el Extranjero sin Establecimiento Permanente en México"),
	INGRESOSPORDIVIDENDOSSOCIOSYACCIONISTAS(611,"Ingresos por Dividendos (socios y accionistas)"),
	PERSONASFISICASCONACTIVIDADESEMPRESARIALESYPROFESIONALES(612,"Personas Fisicas con Actividades Empresariales y Profesionales"),
	INGRESOSPORINTERESES(614,"Ingresos por intereses"),
	SINOBLIGACIONESFISCALES(616,"Sin obligaciones fiscales"),
	SOCIEDADESCOOPERATIVASDEPRODUCCIONQUEOPTANPORDIFERIRSUSINGRESOS(620,"Sociedades Cooperativas de Producción que optan por diferir sus ingresos"),
	INCORPORACIONFISCAL(621,"Incorporación Fiscal"),
	ACTIVIDADESAGRICOLASGANADERASSILVICOLASYPESQUERAS(622,"Actividades Agrícolas, Ganaderas, Silvícolas y Pesqueras"),
	OPCIONALPARAGRUPOSDESOCIEDADES(623,"Opcional para Grupos de Sociedades"),
	COORDINADOS(624,"Coordinados"),
	;
	
	final Integer idSat;
	final String descripcion;
	
	
	RegimenesFiscales(Integer idSat,String descripcion){
		this.idSat=idSat;
		this.descripcion=descripcion;
	}

	/**
	 * Busca un regimen de acuerdo a su descripción
	 * @param descripcion de acuerdo al catalogo del SAT
	 * @return RegimenesFiscales valor del enum de acuerdo al regimen
	 */
	public static RegimenesFiscales busca(String descripcion) {
		if(StringUtils.isEmpty(descripcion))
			return null;
		if(StringUtils.startsWithIgnoreCase(descripcion,"regimen ")||StringUtils.startsWithIgnoreCase(descripcion,"régimen "))
			descripcion = descripcion.substring(8);
		if(StringUtils.startsWithIgnoreCase(descripcion,"regimen de ")||StringUtils.startsWithIgnoreCase(descripcion,"régimen de "))
			descripcion = descripcion.substring(11);
		for(RegimenesFiscales m:values()){
			if(Utilerias.compara(m.descripcion,descripcion))
				return m;
			else if(Utilerias.compara(m.idSat.toString(),descripcion))
				return m;
		}
		return null;
	}
	
	/**
	 * Busca un regimen de acuerdo a su id del SAT
	 * @param idSat de acuerdo al catalogo del SAT
	 * @return RegimenesFiscales valor del enum de acuerdo al regimen
	 */
	public static RegimenesFiscales id(Integer idSat) {
		for(RegimenesFiscales m:values()){
			if(m.idSat.equals(idSat))
				return m;
		}
		return null;
	}
	
	public Integer getIdRegimen(){
		return idSat;
	}

	public static RegimenesFiscales[] regimenes() {
		return values();
	}
	
	public static RegimenesFiscales unmarshall(String metodo) throws ApiException{
		if(StringUtils.isEmpty(metodo))
			return null;
		final RegimenesFiscales estado =  RegimenesFiscales.busca(metodo);		
		if(estado==null)
			throw new ApiException(I_Api_Errores.CLIENTE_XML_INVALIDO,"El régimen "+metodo+" no se encuentra en el catálogo de regimenes del SAT");
		else
			return estado;
	}
	
	
	public static String marshall(RegimenesFiscales v) throws Exception {
		if(v==null)
			return null;
		return v.getDescripcion();
	}
	
	public static Object parse(String text) throws TypeConversionException, ApiException {
		return unmarshall(text);
	}
	
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy