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
Al momento de validar un XML 2.0 me indica que se violo el squema por digitos pero el XML solo tiene 6 decimales cambie el paremetro que indicas aqui pero sigue validando al parecer a 4 decimales
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″
Modifique el XML y reduje a 2 decimales y permitio pasar la validacion. como se peude modificar a que admita 6 decimales
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