Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error Autofactura #32

Open
DiegoGitpy opened this issue May 1, 2023 · 0 comments
Open

Error Autofactura #32

DiegoGitpy opened this issue May 1, 2023 · 0 comments

Comments

@DiegoGitpy
Copy link

Buenos dias,

Estoy intentando enviar el XML de Autofactura por el momento arroja el error indicado mas abajo, la de factura y nc funcionan correctamente:
"Exception in thread "main" java.lang.ArithmeticException: / by zero
at java.base/java.math.BigDecimal.divideAndRound(BigDecimal.java:4675)" abajo el mapeo del DE, me estaba fijando el codigo y veo que el valor del divisor toma del campo descuento, pero el documento no cuenta con descuento

XML:

final Logger logger = Logger.getLogger(App.class.toString());

    LocalDateTime currentDate = LocalDateTime.now();

    // Grupo A
    DocumentoElectronico DE = new DocumentoElectronico();
    DE.setdFecFirma(currentDate);
    DE.setdSisFact((short) 1);

    // Grupo B
    TgOpeDE gOpeDE = new TgOpeDE();
    gOpeDE.setiTipEmi(TTipEmi.NORMAL);
    DE.setgOpeDE(gOpeDE);

    // Grupo C
    TgTimb gTimb = new TgTimb();
    gTimb.setiTiDE(TTiDE.AUTOFACTURA_ELECTRONICA);
    gTimb.setdNumTim(12560442);
    gTimb.setdEst("001");
    gTimb.setdPunExp("001");
    gTimb.setdNumDoc("0000001");
    gTimb.setdFeIniT(LocalDate.parse("2023-02-08"));
    DE.setgTimb(gTimb);

    // Grupo D
    String FechaEmision = ("2023-04-28T17:55:34");
    DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
    fechaEmiDe = LocalDateTime.parse(FechaEmision, formatter);
    TdDatGralOpe dDatGralOpe = new TdDatGralOpe();
    dDatGralOpe.setdFeEmiDE(fechaEmiDe);

    TgOpeCom gOpeCom = new TgOpeCom();
    gOpeCom.setiTipTra(TTipTra.PRESTACION_SERVICIOS);

    gOpeCom.setiTImp(TTImp.NINGUNO);
    gOpeCom.setcMoneOpe(CMondT.PYG);
    dDatGralOpe.setgOpeCom(gOpeCom);

    TgEmis gEmis = new TgEmis();
    gEmis.setdRucEm("80011000");
    gEmis.setdDVEmi("0");

    gEmis.setiTipCont(TiTipCont.PERSONA_JURIDICA);
    gEmis.setdNomEmi("DE generado en ambiente de prueba - sin valor comercial ni fiscal");
    gEmis.setdDirEmi("San Martin 620");
    gEmis.setdNumCas("620");
    gEmis.setcDepEmi(TDepartamento.CAPITAL);
    gEmis.setcCiuEmi(1);
    gEmis.setdDesCiuEmi("ASUNCION (DISTRITO)");
    gEmis.setdTelEmi("021 688 6510");
    gEmis.setdEmailE("[email protected]");

    List<TgActEco> gActEcoList = new ArrayList<>();
    TgActEco gActEco = new TgActEco();
    gActEco.setcActEco("81290");
    gActEco.setdDesActEco("OTRAS ACTIVIDADES DE LIMPIEZA DE EDIFICIOS E INDUSTRIAL");
    gActEcoList.add(gActEco);

    gEmis.setgActEcoList(gActEcoList);
    dDatGralOpe.setgEmis(gEmis);

    TgDatRec gDatRec = new TgDatRec();

    gDatRec.setiNatRec(TiNatRec.NO_CONTRIBUYENTE);

    gDatRec.setiTipIDRec(TiTipDocRec.CEDULA_PARAGUAYA);

    gDatRec.setdNumIDRec("4420256");
    gDatRec.setdNomRec("Diego Perez");
    gDatRec.setiTiContRec(TiTipCont.PERSONA_FISICA);

    gDatRec.setiTiOpe(TiTiOpe.B2C);
    gDatRec.setiTiContRec(TiTipCont.PERSONA_FISICA);

    gDatRec.setcPaisRec(PaisType.PRY);

    dDatGralOpe.setgDatRec(gDatRec);
    DE.setgDatGralOpe(dDatGralOpe);

    // Grupo E
    TgDtipDE gDtipDE = new TgDtipDE();

    TgCamFE gCamFE = new TgCamFE();
    gCamFE.setiIndPres(TiIndPres.OPERACION_ELECTRONICA);
    gDtipDE.setgCamFE(gCamFE);

    // Grupo Autofactura
    TgCamAE gCamAE = new TgCamAE();
    gCamAE.setiNatVen(TiNatVen.NO_CONTRIBUYENTE);
    gCamAE.setiTipIDVen(TiTipDoc.CEDULA_PARAGUAYA);
    gCamAE.setdNumIDVen("333333");
    gCamAE.setdNomVen("Juan Perez");
    gCamAE.setdDirVen("Las Palmas 720");
    gCamAE.setdNumCasVen(720);
    gCamAE.setcDepVen(TDepartamento.CAPITAL);
    gCamAE.setcDisVen((short) 1);
    gCamAE.setcCiuVen(1);

    // Datos de la transaccion es decir donde se realizó el servicio
    gCamAE.setcDepProv(TDepartamento.CAPITAL);
    gCamAE.setcDisProv((short) 1);
    gCamAE.setcCiuProv(1);

    gDtipDE.setgCamAE(gCamAE);

    // FIN GRUPO AUTOFACTURA

    TgCamCond gCamCond = new TgCamCond();
    gCamCond.setiCondOpe(TiCondOpe.CONTADO);
    // gCamCond.setgPaConEIniList();

    List<TgPaConEIni> gPaConEIniList = new ArrayList<>();
    TgPaConEIni gPaConEIni = new TgPaConEIni();
    gPaConEIni.setiTiPago(TiTiPago.CHEQUE);
    gPaConEIni.setdMonTiPag(BigDecimal.valueOf(500000));
    gPaConEIni.setcMoneTiPag(CMondT.PYG);

    // Datos del cheque
    TgPagCheq gPagCheq = new TgPagCheq();
    gPagCheq.setdNumCheq("00000001");
    gPagCheq.setdBcoEmi("Itau");

    gPaConEIni.setgPagCheq(gPagCheq);

    gPaConEIniList.add(gPaConEIni);

    gCamCond.setgPaConEIniList(gPaConEIniList);

    gDtipDE.setgCamCond(gCamCond);

    int count = Item.size();

    List<TgCamItem> gCamItemList = new ArrayList<>();

    for (int i = 0; i < count; i++) {
        TgCamItem gCamItem = new TgCamItem();
        gCamItem.setdCodInt("SERV-00001");

        // dDesProSer Descripcion Item
        gCamItem.setdDesProSer("Consultoría");

        gCamItem.setcUniMed(TcUniMed.UNI);
        gCamItem.setdCantProSer(BigDecimal.valueOf(1));

        // Seccion Campos que describen los precios, descuentos y valor total por ítem
        TgValorItem gValorItem = new TgValorItem();
        gValorItem.setdPUniProSer(BigDecimal.valueOf(500000));

        TgValorRestaItem gValorRestaItem = new TgValorRestaItem();
        gValorRestaItem.setdDescItem(BigDecimal.valueOf(50000));

        gValorItem.setgValorRestaItem(gValorRestaItem);
        gCamItem.setgValorItem(gValorItem);

        TgCamIVA gCamIVA = new TgCamIVA();
        gCamIVA.setiAfecIVA(TiAfecIVA.EXENTO);
        gCamIVA.setdPropIVA(BigDecimal.valueOf(0));
        gCamIVA.setdTasaIVA(BigDecimal.valueOf(0));

        gCamItem.setgCamIVA(gCamIVA);

        gCamItemList.add(gCamItem);
    }

    gDtipDE.setgCamItemList(gCamItemList);
    DE.setgDtipDE(gDtipDE);
    DE.setgTotSub(new TgTotSub());

    logger.info("CDC del Documento Electrónico -> " + DE.obtenerCDC());

    String CDC = DE.obtenerCDC();

    String xml = DE.generarXml();
    ImprimirXML(xml);

gracias de antemano

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant