Manejo de decimales

Un usuario nos comentaba que necesitaba generar un comprobante con 4 decimales y su duda era si la biblioteca lo soportaba y como se podía hacer esto.

Como todos saben, por default, todos los comprobantes generados con EDL siempre salen con 2 decimales, pero esto es algo totalmente opcional y se puede configurar para que cada campo de tipo real pueda tener los decimales deseados, claro siguiendo los lineamientos que da el SAT:

 

  • SubTotal: Puede tener hasta 6 decimales
  • Descuento: Puede tener hasta 6 decimales
  • Total: Puede tener hasta 6 decimales
  • Cantidad: No tiene restricción en el número de decimales.
  • Valor unitario: Puede tener hasta 6 decimales
  • Importe: Puede tener hasta 6 decimales
  • Total de impuestos retenidos: Puede tener hasta 6 decimales
  • Total de impuestos trasladados: Puede tener hasta 6 decimales

 

En la librería todos los campos anteriormente mencionados permiten entre 0 y 6 decimales, esto incluye a la cantidad que como podemos es permitido que contenga más de 6 decimales.

Para indicar cuantos decimales se desea manejar es muy sencillo, solo deben asignar a la propiedad Decimales la cantidad requerida

 

electronicDocument.Data.Total.Decimales   =  5;

 

Si asignas un valor mayor a seis o menor a cero, no será tomado en cuenta y se asignara un dos.

La pregunta más común en este caso, es ¿Que sucede si el valor del atributo contiene más o menos decimales? y para esto podemos ver un ejemplo:

 

electronicDocument.Data.Total.Decimales   =  5;

electronicDocument.Data.Total.Value  =  5.251;  (5.25100)

 

electronicDocument.Data.Total.Decimales   =  2;

electronicDocument.Data.Total.Value  =  5.251;  (5.25)

 

Creemos que con esto queda resuelta la duda, espero les sea de utilidad.

 

Hasta la próxima

4 Replies to “Manejo de decimales”

  1. Este es el error que presenta

    ‘Se generó un error al validar el xml contra el schema. Línea 2 (2305) : Error en la restricción fractionDigits. De acuerdo con su tipo de datos, el atributo ‘subTotal’ no tiene un valor admisible.

    en el XML se peude leer asi el subtotal

    subTotal=”954.827586″

    • Roberto,

      Podrías por favor modificar el ejemplo que genera el CFD, solamente debes de asignar en un campo un valor con 6 decimales y especificar que lo vas a manejar a 6 decimales para ver si puedes reproducir el problema.

      En un futuro te agradeceríamos publicaras tus dudas en el foro y con gusto te estaremos ayudando.

      Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*