Full width home advertisement

Facturacion CFDi

CFDi en Java

Post Page Advertisement [Top]

 CARTA PORTE 3.0 EN JAVA CODIGO FUENTE

 

CLASE QUE GENERA UN XML CFDI DE CARTA PORTE 3.0 EN JAVA

GENERA EL ARCHIVO XML Y EL BASE64 DEL XML PARA ENVIARLO A TU PAC , 

EL XML LO SELLA CON LOS CERTIFICADOS CSD DEL RFC EMISOR


package com.sistemaspymes.cfdi40;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;

import javax.xml.datatype.XMLGregorianCalendar;

import com.generarxml.cfdi40.Configuracion;
import com.generarxml.cfdi40.CrearXmlCFDi40;
import com.generarxml.cfdi40.Utilerias;
import com.generarxml.cfdi40.CrearXmlCFDi40.RespuestaGenerarXML;

import mx.gob.sat.cartaporte30.CartaPorte;
import mx.gob.sat.cartaporte30.CartaPorte.FiguraTransporte;
import mx.gob.sat.cartaporte30.CartaPorte.FiguraTransporte.TiposFigura;
import mx.gob.sat.cartaporte30.CartaPorte.Mercancias;
import mx.gob.sat.cartaporte30.CartaPorte.Mercancias.Mercancia;
import mx.gob.sat.cartaporte30.CartaPorte.Mercancias.TransporteAereo;
import mx.gob.sat.cartaporte30.CartaPorte.Ubicaciones;
import mx.gob.sat.cartaporte30.CartaPorte.Ubicaciones.Ubicacion;
import mx.gob.sat.cartaporte30.CartaPorte.Ubicaciones.Ubicacion.Domicilio;
import mx.gob.sat.cfd._4.Comprobante;
import mx.gob.sat.cfd._4.Comprobante.Conceptos;
import mx.gob.sat.cfd._4.Comprobante.Conceptos.Concepto;
import mx.gob.sat.cfd._4.Comprobante.Conceptos.Concepto.Impuestos;
import mx.gob.sat.cfd._4.Comprobante.Conceptos.Concepto.Impuestos.Retenciones;
import mx.gob.sat.cfd._4.Comprobante.Conceptos.Concepto.Impuestos.Retenciones.Retencion;
import mx.gob.sat.cfd._4.Comprobante.Conceptos.Concepto.Impuestos.Traslados;
import mx.gob.sat.cfd._4.Comprobante.Conceptos.Concepto.Impuestos.Traslados.Traslado;
import mx.gob.sat.cfd._4.Comprobante.Emisor;
import mx.gob.sat.cfd._4.Comprobante.Receptor;
import mx.gob.sat.sitio_internet.cfd.catalogos.CPais;
import mx.gob.sat.sitio_internet.cfd.catalogos.cartaporte.CCodigoTransporteAereo;
import mx.gob.sat.sitio_internet.cfd.catalogos.cartaporte.CTipoPermiso;

/**
 *
 * ESTE EJEMPLO TREA MONTOS REALES, AL GENERAR EL XML
 * LO ENVIAS A TU PAC Y SE TIMBRA AUTOMATICO (solo cambia los csd de prueba por los de tu pac)
 * */

public class EjemploCartaPorte30 {

    public EjemploCartaPorte30() {}
    
    public void ejecutar(){

        //CONFIGURACION DE EJECUCION
        Configuracion configXML = new Configuracion();
        configXML.setLicencia("316ac9e0543522b89b0e32707fb42bb4");
        configXML.setInfoSistema("SI");
        configXML.setComprobanteTipo("CARTA_PORTE");
       
       
        String so=System.getProperty("os.name");
        if(so.contains("Linux"))
        {
            //ruta donde se genera el xml sellado para enviarlo al pac (LINUX)
            configXML.setRutaXML("/home/carlos/Documentos/xml/");
        }
        if(so.contains("Windows"))
        {
            //ruta donde se genera el xml sellado para enviarlo al pac (WINDOWS)
            configXML.setRutaXML("C:\\Users\\52871\\eclipse-workspace\\xml\\");
        }
        configXML.setArchivoXML("ejemplo_carta_porte.xml");
        //CERTIFICADOS DE PRUEBAS
        String KEY=System.getProperty("user.dir")+"/libcfdi40/pruebas/EKU9003173C9.key";
        String CER=System.getProperty("user.dir")+"/libcfdi40/pruebas/EKU9003173C9.cer";
        String CONTRASENA="12345678a";
        configXML.setCer(CER);
        configXML.setKey(KEY);
        configXML.setContresena(CONTRASENA);
        configXML.setValidar_pre("SI"); // VALIDAR LA INFORMACION INGRESADA ANTES DE CREAR EL ARCHIVO XML - TIEMPO DE EJECUCION 5 A 8 SEGUNDOS
        //configXML.setValidar_pos("SI"); // VALIDAR LA INFORMACION INGRESADA DESPUES DE CREAR EL ARCHIVO XML - TIEMPO DE EJECUCION 5 A 8 SEGUNDOS

CARTA PORTE 3.0 EN JAVA CFDI SAT MEXICO


       
        /*COMPROBANTE*/
        Comprobante comprobante = new Comprobante();
        comprobante.setSerie("A");
        comprobante.setFolio("1");
        /*FORMATO DE FECHA*/
        String FORMATER = "yyyy-MM-dd'T'HH:mm:ss";
        Date date = new Date();
        XMLGregorianCalendar fechaComprobante = Utilerias.getFechaXMLGregorian(date, FORMATER);
        comprobante.setFecha(fechaComprobante);
        comprobante.setSubTotal(new BigDecimal(25000.00).setScale(2, RoundingMode.HALF_UP));
        comprobante.setTotal(new BigDecimal(28000.00).setScale(2, RoundingMode.HALF_UP));
        String moneda="MXN";
        comprobante.setMoneda(Utilerias.getMonedaComprobante(moneda));
        String tipocomprobante="I";
        comprobante.setTipoDeComprobante(Utilerias.getTipoDeComprobante(tipocomprobante));
        comprobante.setFormaPago("01");
        String metododepago="PUE";
        comprobante.setMetodoPago(Utilerias.getMetodoDePagoComprobante(metododepago));
        //comprobante.setCondicionesDePago("CONDIDCIONES");
        //comprobante.setDescuento(new BigDecimal(100.00));
        comprobante.setTipoCambio(new BigDecimal(1.0).setScale(0, RoundingMode.HALF_UP));
        comprobante.setLugarExpedicion("45079");
        comprobante.setExportacion("01");
        /*EMISOR*/
        Emisor emisor = new Emisor();
        emisor.setRfc("EKU9003173C9");
        emisor.setRegimenFiscal("601");
        emisor.setNombre("ESCUELA KEMPER URGATE");
        comprobante.setEmisor(emisor);
       
        /*RECEPTOR*/
        Receptor receptor = new Receptor();
        receptor.setNombre("UNIVERSIDAD ROBOTICA ESPAÑOLA");
        receptor.setRfc("URE180429TM6");
        receptor.setDomicilioFiscalReceptor("86991");
        receptor.setRegimenFiscalReceptor("601");
        //receptor.setNumRegIdTrib("0000000000000");
        //String pais="MEX";
        //CPais paisComprobante = Utilerias.getPaisComprobante(pais);
        //receptor.setResidenciaFiscal(paisComprobante);
        String usoCFDI="G01";
        receptor.setUsoCFDI(Utilerias.getUsoCFDiComprobante(usoCFDI));
        comprobante.setReceptor(receptor);

        /*CONCEPTOS*/
        Conceptos conceptos = new Conceptos();
        /*CONCEPTO*/
        Concepto concepto1 = new Concepto();
        concepto1.setClaveProdServ("78101500");
        concepto1.setClaveUnidad("H87");
        concepto1.setNoIdentificacion("0001");
        concepto1.setCantidad(new BigDecimal(1));
        concepto1.setUnidad("Pieza");
        concepto1.setDescripcion("Concepto 10");
        concepto1.setValorUnitario(new BigDecimal(25000.00).setScale(2, RoundingMode.HALF_UP));
        concepto1.setImporte(new BigDecimal(25000.00).setScale(2, RoundingMode.HALF_UP));
        concepto1.setObjetoImp("02");
        /*IMPUESTOS CONCEPTO*/
        Impuestos impuestosConcepto1 = new Impuestos();
        /*IMPUESTOS TRASLADOS*/
        Traslados trasladosConcepto1 = new Traslados();
        /*IMPUESTO TRASLADO*/
        Traslado trasladoConcepto1 = new Traslado();
        trasladoConcepto1.setBase(new BigDecimal(25000.00).setScale(2, RoundingMode.HALF_UP));
        trasladoConcepto1.setImporte(new BigDecimal(4000.00).setScale(2, RoundingMode.HALF_UP));
        trasladoConcepto1.setImpuesto("002");
        trasladoConcepto1.setTasaOCuota(new BigDecimal(0.160000).setScale(6, RoundingMode.HALF_UP));
        String tipoFactorTraslado1="Tasa";
        trasladoConcepto1.setTipoFactor(Utilerias.getTipoFactorImpuestoConceptoComprobante(tipoFactorTraslado1));
        trasladosConcepto1.getTraslado().add(trasladoConcepto1);
       
        //retenciones concepto
        Retenciones retencionesConcepto1 = new Retenciones();
        //retencion concepto
        Retencion retencionConcepto = new Retencion();
        retencionConcepto.setBase(new BigDecimal(25000.00).setScale(2, RoundingMode.HALF_UP));
        retencionConcepto.setImporte(new BigDecimal(1000.00).setScale(2, RoundingMode.HALF_UP));
        retencionConcepto.setImpuesto("002");
        retencionConcepto.setTasaOCuota(new BigDecimal(0.040000).setScale(6, RoundingMode.HALF_UP));
        String tipoFactorRetencion1="Tasa";
        retencionConcepto.setTipoFactor(Utilerias.getTipoFactorImpuestoConceptoComprobante(tipoFactorRetencion1));
        retencionesConcepto1.getRetencion().add(retencionConcepto);
        //agregar retenciones y traslados
        impuestosConcepto1.setTraslados(trasladosConcepto1);
        impuestosConcepto1.setRetenciones(retencionesConcepto1);
        //agregar impuestos al concepto
        concepto1.setImpuestos(impuestosConcepto1);
        //agragar concepto al nodo conceptos
        conceptos.getConcepto().add(concepto1);
        //agragar conceptos al comprobante
        comprobante.setConceptos(conceptos);
       
        /*IMPUESTOS COMPROBANTE*/
        Comprobante.Impuestos impuestosComprobante = new Comprobante.Impuestos();
       
        //RETENCIONES COMPROBANTE
        Comprobante.Impuestos.Retenciones retencionesComprobante = new Comprobante.Impuestos.Retenciones();
        //RETENCION COMPROBANTE
        Comprobante.Impuestos.Retenciones.Retencion retencionComprobante = new Comprobante.Impuestos.Retenciones.Retencion();
        retencionComprobante.setImporte(new BigDecimal(1000.00));
        retencionComprobante.setImpuesto("002");
        retencionesComprobante.getRetencion().add(retencionComprobante);
        impuestosComprobante.setRetenciones(retencionesComprobante);
    
       
        /*TRASLADOS COMPROBANTE*/
        Comprobante.Impuestos.Traslados trasladosComprobante = new Comprobante.Impuestos.Traslados();
        /*TRASLADO COMPROBANTE*/
        Comprobante.Impuestos.Traslados.Traslado trasladoComprobante = new Comprobante.Impuestos.Traslados.Traslado();
        trasladoComprobante.setImpuesto("002");
        String tipoFactorComprobante="Tasa";
        trasladoComprobante.setBase(new BigDecimal(25000).setScale(2, RoundingMode.HALF_UP));
        trasladoComprobante.setTipoFactor(Utilerias.getTipoFactorImpuestoConceptoComprobante(tipoFactorComprobante));
        trasladoComprobante.setTasaOCuota(new BigDecimal(0.160000).setScale(6, RoundingMode.HALF_UP));
        trasladoComprobante.setImporte(new BigDecimal(4000.00).setScale(2, RoundingMode.HALF_UP));
        trasladosComprobante.getTraslado().add(trasladoComprobante);
        impuestosComprobante.setTraslados(trasladosComprobante);
       
        //impuestosComprobante.setTotalImpuestosRetenidos(new BigDecimal(100));
        impuestosComprobante.setTotalImpuestosTrasladados(new BigDecimal(4000.00).setScale(2, RoundingMode.HALF_UP));
        impuestosComprobante.setTotalImpuestosRetenidos(new BigDecimal(1000.00).setScale(2, RoundingMode.HALF_UP));
        comprobante.setImpuestos(impuestosComprobante);
       
        //COMPLEMENTO CARTA PORTE
        CartaPorte cartaPorte = new CartaPorte();
        cartaPorte.setVersion("3.0");
        cartaPorte.setTranspInternac("No");
        cartaPorte.setIdCCP("CCCBCD94-870A-4332-A52A-A52AA52AA52A");
        //cartaPorte.setTotalDistRec(new BigDecimal(2).setScale(2, RoundingMode.HALF_UP));
        //UBICACIONES
        Ubicaciones ubicaciones = new Ubicaciones();
        //UBICACION 1  , PUEDE SER LA UBICACION ORIGEN
        Ubicacion ubicacionOrigen = new Ubicacion();
        //ubicacionOrigen.setIDUbicacion("OR000001");
        ubicacionOrigen.setTipoUbicacion("Origen");
        ubicacionOrigen.setRFCRemitenteDestinatario("EKU9003173C9");
        String FORMATER_FechaHoraSalidaLlegada = "yyyy-MM-dd'T'HH:mm:ss";
        Date date_FechaHoraSalidaLlegada = new Date();
        XMLGregorianCalendar FechaHoraSalidaLlegada = Utilerias.getFechaXMLGregorian(date_FechaHoraSalidaLlegada, FORMATER_FechaHoraSalidaLlegada);
        ubicacionOrigen.setFechaHoraSalidaLlegada(FechaHoraSalidaLlegada);
        ubicacionOrigen.setTipoEstacion("01");
        ubicacionOrigen.setNumEstacion("EA1810");
        ubicacionOrigen.setNombreEstacion("La Palma");
       
        Domicilio domicilioUbicacionOrigen = new Domicilio();
       
        String SpaisDomicilioUbicacionOrigen="MEX";
        CPais paisDomicilioUbicacionOrigen = Utilerias.getPaisComprobante(SpaisDomicilioUbicacionOrigen);
        domicilioUbicacionOrigen.setPais(paisDomicilioUbicacionOrigen);
        domicilioUbicacionOrigen.setNumeroExterior("004");
        domicilioUbicacionOrigen.setLocalidad("23");
        domicilioUbicacionOrigen.setEstado("COA");
        domicilioUbicacionOrigen.setColonia("0347");
        domicilioUbicacionOrigen.setCodigoPostal("25350");
        domicilioUbicacionOrigen.setCalle("Cancun Chetumal");
        ubicacionOrigen.setDomicilio(domicilioUbicacionOrigen);
       
        //UBICACION 2  , PUEDE SER LA UBICACION DESTINO
        Ubicacion ubicacionDestino = new Ubicacion();
        //ubicacionDestino.setIDUbicacion("OR000001");
        ubicacionDestino.setTipoUbicacion("Destino");
        ubicacionDestino.setRFCRemitenteDestinatario("EKU9003173C9");
        //ubicacionDestino.setDistanciaRecorrida(new BigDecimal(1).setScale(2, RoundingMode.HALF_UP));
        String FORMATER_FechaHoraSalidaLlegadaUbicacionDestino = "yyyy-MM-dd'T'HH:mm:ss";
        Date date_FechaHoraSalidaLlegadaUbicacionDestino = new Date();
        XMLGregorianCalendar FechaHoraSalidaLlegadaUbicacionDestino = Utilerias.getFechaXMLGregorian(date_FechaHoraSalidaLlegadaUbicacionDestino, FORMATER_FechaHoraSalidaLlegadaUbicacionDestino);
        ubicacionDestino.setFechaHoraSalidaLlegada(FechaHoraSalidaLlegadaUbicacionDestino);
        ubicacionDestino.setTipoEstacion("02");
        ubicacionDestino.setNumEstacion("EA1814");
        ubicacionDestino.setNombreEstacion("Pista Morelos");
       
        Domicilio domicilioUbicacionDestino = new Domicilio();
       
        String SpaisDomicilioUbicacionDestino="MEX";
        CPais paisDomicilioUbicacionDestino = Utilerias.getPaisComprobante(SpaisDomicilioUbicacionDestino);
        domicilioUbicacionDestino.setPais(paisDomicilioUbicacionDestino);
        domicilioUbicacionDestino.setNumeroExterior("004");
        domicilioUbicacionDestino.setLocalidad("23");
        domicilioUbicacionDestino.setEstado("COA");
        domicilioUbicacionDestino.setColonia("0347");
        domicilioUbicacionDestino.setCodigoPostal("25350");
        domicilioUbicacionDestino.setCalle("Cancun Chetumal");
        ubicacionDestino.setDomicilio(domicilioUbicacionDestino);
       
        //AGREGAR UBICACION AL NODO UBICACIONES
        ubicaciones.getUbicacion().add(ubicacionOrigen);
        ubicaciones.getUbicacion().add(ubicacionDestino);
       
       
        //MERCANCIAS
        Mercancias mercancias = new Mercancias();
        mercancias.setPesoBrutoTotal(new BigDecimal(1.0).setScale(2, RoundingMode.HALF_UP));
        mercancias.setUnidadPeso("XBX");
        mercancias.setNumTotalMercancias(1);
        //mercancia 1
        Mercancia mercancia1 = new Mercancia();
        mercancia1.setBienesTransp("11121900");
        mercancia1.setDescripcion("productos de perfumeria");
        mercancia1.setCantidad(new BigDecimal(1.0).setScale(2, RoundingMode.HALF_UP));
        mercancia1.setClaveUnidad("XBX");
        mercancia1.setPesoEnKg(new BigDecimal(1.0).setScale(2, RoundingMode.HALF_UP));
        mercancia1.setMaterialPeligroso("No");
        mercancia1.setValorMercancia(new BigDecimal(50000.00).setScale(2, RoundingMode.HALF_UP));
        String monedaM1="MXN";
        mercancia1.setMoneda(Utilerias.getMonedaComprobante(monedaM1));
        mercancia1.setDimensiones("30/40/30plg");
       
        TransporteAereo transporteAereo = new TransporteAereo();
        transporteAereo.setRFCEmbarcador("WATM640917J45");
        CTipoPermiso tipoPermiso_=CTipoPermiso.fromValue("TPTA01");
        transporteAereo.setPermSCT(tipoPermiso_);
        transporteAereo.setNumPolizaSeguro("154647");
        transporteAereo.setNumPermisoSCT("0X2XTXZ0X5X0X3X2X1X0");
        transporteAereo.setNumeroGuia("803117555500");
        transporteAereo.setNombreEmbarcador("FULANITO");
        transporteAereo.setNombreAseg("SEGUROS SA DE CV");
        transporteAereo.setMatriculaAeronave("AB1-MEX");
        transporteAereo.setLugarContrato("MEX");
        transporteAereo.setCodigoTransportista(CCodigoTransporteAereo.fromValue("CA149"));
        //agregar la mercancia al nodo de mercancias
        mercancias.getMercancia().add(mercancia1);
        //agregar el metodo de trasporte al nodo mercancias
        mercancias.setTransporteAereo(transporteAereo);
    
       
        //Figura transporte
        FiguraTransporte figuratrasporte = new FiguraTransporte();
        TiposFigura tiposFigura = new TiposFigura();
        tiposFigura.setTipoFigura("01");
        tiposFigura.setRFCFigura("WERX631016S30");
        tiposFigura.setNumLicencia("a234567890");
        tiposFigura.setNombreFigura("XAIME WEIR ROJO");
        figuratrasporte.getTiposFigura().add(tiposFigura);
       
        cartaPorte.setMercancias(mercancias);
        cartaPorte.setFiguraTransporte(figuratrasporte);
        cartaPorte.setUbicaciones(ubicaciones);
       
       
        Comprobante.Complemento complemento = new Comprobante.Complemento();
        complemento.getAny().add(cartaPorte);
       
        //comprobante.setComplemento(complemento);  //AGREGAR COMPLEMENTO FORMA ANTERIOR
        //comprobante.getComplemento().add(complemento);     //AGREGAR COMPLEMENTO NUEVA FORMA
        comprobante.setComplemento(complemento);
       
       
        /*GENERAR XML*/
        CrearXmlCFDi40 xml = new CrearXmlCFDi40(comprobante, configXML);
        RespuestaGenerarXML res = xml.generarXMLCFDi40();

        System.out.println("Ruta xml generado: "+res.getRutaArchivoXML());
        System.out.println("Archivo XML en string: "+res.getArchivoXMLtexto());
        System.out.println("Archivo XML en Base64: "+res.getArchivoXMLBase64());
    }

}

Buscas una forma de implementar la factura electronica de manera facil

solo llenando una plantilla de texto con los datos de la factura

o llenando un arreglo de datos con los datos de la factura

tenemos una libreria para generar el xml cfdi de una factura electronica

visita nuestra pagina web

https://factura.cfdi.red/



No hay comentarios:

Publicar un comentario

Bottom Ad [Post Page]

| Designed by Colorlib