Giter VIP home page Giter VIP logo

Comments (13)

pablo avatar pablo commented on August 29, 2024

Buenísimo. Acá no tenemos casos con redondeo entonces es complicado para nosotros probar. Damos retorno en breve.

from rshk-jsifenlib.

pablo avatar pablo commented on August 29, 2024

Podrías probar con este release @cilicio?

Está solucionado este tema según tu explicación.

from rshk-jsifenlib.

trinidadmarcelo avatar trinidadmarcelo commented on August 29, 2024

También estoy atento a esta nueva release!

from rshk-jsifenlib.

pablo avatar pablo commented on August 29, 2024

@trinidadmarcelo podés probar con el RELEASE https://github.com/roshkadev/rshk-jsifenlib/releases/tag/v0.2.4-rc-01

from rshk-jsifenlib.

cilicio avatar cilicio commented on August 29, 2024

Hola Pablo, en Gs creo que es el valor correcto.

from rshk-jsifenlib.

cilicio avatar cilicio commented on August 29, 2024

En dolares no me lanza error, pero no estoy seguro si es lo que se busca. Probé con 51.32. El resultado del redondeo me trae (0.18). Según interpreto de la documentación, si buscamos redondear hacia abajo debería ser 0.32.

from rshk-jsifenlib.

cilicio avatar cilicio commented on August 29, 2024

Intenté utilizar un valor negativo -0.18 para dRedon, buscando hacer el redondeo hacía arriba, y me rechazó con el mensaje: XML malformado: [El valor -0.18 del elemento: dRedon es invalido]. Por lo que entiendo que solo se puede hacer redondeo hacia abajo.

from rshk-jsifenlib.

trinidadmarcelo avatar trinidadmarcelo commented on August 29, 2024
  • En dólares, el dTotGralOpe no lo hace correctamente a continuacion parte del xml para que se entienda mejor, el valor debería ser 996.5 y en este caso dRedon debería ser -0.08 y no 0.08 pero tenemos lo siguiente:

<gTotSub><dSubExe>0</dSubExe><dSubExo>0</dSubExo><dSub5>996.42</dSub5><dSub10>0</dSub10><dTotOpe>996.42</dTotOpe><dTotDesc>0.00</dTotDesc><dTotDescGlotem>0</dTotDescGlotem><dTotAntItem>0</dTotAntItem><dTotAnt>0</dTotAnt><dPorcDescTotal>0.00</dPorcDescTotal><dDescTotal>0.00</dDescTotal><dAnticipo>0</dAnticipo><dRedon>0.08</dRedon><dComi>0</dComi><dTotGralOpe>996.34</dTotGralOpe><dIVA5>47.45</dIVA5><dIVA10>0</dIVA10><dLiqTotIVA5>0</dLiqTotIVA5><dLiqTotIVA10>0</dLiqTotIVA10><dIVAComi>0.00</dIVAComi><dTotIVA>47.45</dTotIVA><dBaseGrav5>948.97</dBaseGrav5><dBaseGrav10>0</dBaseGrav10><dTBasGraIVA>948.97</dTBasGraIVA><dTotalGs>7153721.20</dTotalGs></gTotSub>

  • En guaraníes, el iva lo hace en base a dTotOpe y no de dTotGralOpe, esto es correcto?

<gTotSub><dSubExe>0</dSubExe><dSubExo>0</dSubExo><dSub5>0</dSub5><dSub10>21152246</dSub10><dTotOpe>21152246</dTotOpe><dTotDesc>0.00</dTotDesc><dTotDescGlotem>0</dTotDescGlotem><dTotAntItem>0</dTotAntItem><dTotAnt>0</dTotAnt><dPorcDescTotal>0.00</dPorcDescTotal><dDescTotal>0.00</dDescTotal><dAnticipo>0</dAnticipo><dRedon>46</dRedon><dComi>0</dComi><dTotGralOpe>21152200</dTotGralOpe><dIVA5>0</dIVA5><dIVA10>1922931</dIVA10><dLiqTotIVA5>0</dLiqTotIVA5><dLiqTotIVA10>0</dLiqTotIVA10><dIVAComi>0</dIVAComi><dTotIVA>1922931</dTotIVA><dBaseGrav5>0</dBaseGrav5><dBaseGrav10>19229315</dBaseGrav10><dTBasGraIVA>19229315</dTBasGraIVA></gTotSub>

from rshk-jsifenlib.

pablo avatar pablo commented on August 29, 2024

Según la documentación, en moneda extranjera se debería poder hacer redondeo hacia abajo y hacia arriba:

Observación: Para monedas extranjeras o cualquier otro cálculo que contenga decimales, las reglas de validación aceptarán redondeos de 50 céntimos (por encima o por debajo).

Al menos eso entiendo yo. Sin embargo, en el XSD claramente se puede ver que no acepta números negativos.

	<!-- Campo de redondeo -->
	<xs:simpleType name="tdCRed">
		<xs:annotation>
			<xs:documentation>
				Campo de redondeo
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:decimal">
			<xs:totalDigits value="8"/>
			<xs:fractionDigits value="4"/>			
			<xs:minInclusive value="0"/>
			<xs:maxInclusive value="9999.9999"/>
		</xs:restriction>
	</xs:simpleType>

Qué sugieren @trinidadmarcelo y @cilicio que haga la librería para que sea lo más correcta posible?

from rshk-jsifenlib.

trinidadmarcelo avatar trinidadmarcelo commented on August 29, 2024

@pablo @cilicio , se me ocurre de esta manera y me funcionó:

En redondeoOficialOtrasMonedas

public static BigDecimal redondeoOficialOtrasMonedas(BigDecimal value) { BigDecimal fiftyCents = new BigDecimal("0.5"); BigDecimal dividedValue = value.divide(fiftyCents, 0, RoundingMode.HALF_UP); BigDecimal roundedValue = dividedValue.multiply(fiftyCents); if (roundedValue.compareTo(value) == 1) { return roundedValue.subtract(value).multiply((new BigDecimal("-1.0"))); } else { return roundedValue.subtract(value); } }

Y luego en TgTotSub

en la linea 111
this.dRedon = RedondeoUtil.redondeoOficialSET(cMoneOpe, this.dTotOpe); this.dTotGralOpe = this.dTotOpe.subtract(this.dRedon).add(SifenUtil.coalesce(this.dComi, BigDecimal.ZERO)); this.dRedon = this.dRedon.abs();

from rshk-jsifenlib.

cilicio avatar cilicio commented on August 29, 2024

@trinidadmarcelo

  • En guaraníes, el iva lo hace en base a dTotOpe y no de dTotGralOpe, esto es correcto?

Según mi interpretación de la documentación, siempre se calcula en base a dTotOpe.

En cuanto a tu implementación:

  • Veo que utilizas el valor absoluto luego luego de calcular el total general, y me parece razonable, aunque no encontré nada sobre esto en la documentación.
  • Para probar los resultado utilicé dos valores:
    -- 51.32, para que me redondee a 51.5 y
    -- 51.16 para que me redondee, que entiendo que debe ser a 51

En la primera, redondea de forma correcta.
En la segunda redondea a 51.32, ya que le suma 0.16, siendo que debía restar.

Entonces modifique tu función de la siguiente manera:
en vez de:
if (roundedValue.compareTo(value) == 1) { return roundedValue.subtract(value).multiply((new BigDecimal("-1.0"))); } else { return roundedValue.subtract(value); } }

solo utilicé:

return roundedValue.subtract(value).multiply((new BigDecimal("-1.0")));

y en ambos me salió el valor correcto.

Me parece que al hacer el valor absoluto luego se consigue lo que se buscaba en este return.

from rshk-jsifenlib.

cilicio avatar cilicio commented on August 29, 2024

Olvidé mencionar todos los casos fueron aprobados en el ambiente de prueba de Sifen, aparentemente no tiene una validación fuerte.

from rshk-jsifenlib.

trinidadmarcelo avatar trinidadmarcelo commented on August 29, 2024

Excelente @cilicio, @pablo aguardamos estos ajustes en el próximo release

from rshk-jsifenlib.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.