How to: Calcular valor mínimo y valor maximo en mercancías de Comercio Exterior 1.1 Cfdi en USD.

En este post voy a explicar como realizar los cálculos de los valores máximos y mínimos de concepto para el complemento de comercio exterior 1.1.

Cosas que debes de saber antes.

  • Este post se escribió el 3 de Marzo de 2020, verifica que las reglas de validación son vigentes todavía en el Anexo 20.
  • El post trata la regla CCE205, solo el calculo de valores mínimos y máximos del nodo Concepto.
  • Si necesitas consultar la regla CCE216 puedes consultar este post.
  • El complemento de comercio exterior  siempre se expresa en USD.
  • No usare conversiones entre unidades de medida.
  • Los números de decimales usados para el redondeo son 2 en USD.

Caso de ejemplo:

Voy a usar el siguiente Cfdi para el tutorial:

 Realizando el calculo de limites:

He codificado una pequeña aplicación de consola para realizar el calculo del ejemplo junto con el código fuente de la utilería. El programa toma los inputs fijos no lee el archivo ejemplo. Debes de tener cuidado con el método que elijas para leer el archivo, si tomas los datos del cfdi mediante serialización es posible que el número de decimales no coincida con el documento original. Por ejemplo: 18.9000 en el cfdi puede retornar en 18.9 en un objeto tipo decimal o double, para el programa es el mismo valor para las fórmulas no.

¿Que pasos sigo para realizar el calculo?.

  1. Itera en los nodos Concepto del cfdi.
  2. Por cada nodo Concepto. Obten todos los nodos Mercancía que tengan el mismo Número de identificación que el concepto (excluyendo aquellos con ValorDolares en 0 y 1).
  3. En caso de que no exista ningún nodo mercancía valido, pasa al siguiente Concepto.
  4. Itera todos los nodos Concepto del Cfdi y obtén la sumatoria del campo Importe de todos los conceptos con el mismo Numero de identificación que el concepto actual (2 o mas conceptos pueden tener el mismo numero de identificación y dos o mas nodos mercancías pueden tener el mismo numero de identificación).
  5. Obten el valor TipoCambio del Cfdi (si el Cfdi fue emitido en MXN, este valor puede no existir, debes usar 1 en su lugar).
  6. Obten el valor TipoCambioUSD del complemento de ComercioExterior
  7. Obten el numero de decimales de la sumatoria de Importes de Concepto.
  8. Obten el número de decimales del valor TipoCambio del Cfdi (si el Cfdi fue emitido en MXN, este valor puede no existir, debes usar 2 en su lugar).
  9. Obten el número de decimales del valor TipoCambioUSD.
  10. Ejecuta el calculo de valor mínimo  y valor máximo.
  11. Redondea los valores y máximos de acuerdo a la Moneda usada en el Comprobante.
  12. Calcula el monto de ValorDolares que es igual a la Sumatoria del campo ValorDolares de los nodos Mercancía con el mismo NumeroIdentificacion (algunos PAC calculan el campo ValorDolares multiplicando el campo CantidadAduana * ValorUnitarioAduana por cada nodo mercancia).
  13. Verifica que al monto ValorDolares esté dentro del valor máximo y mínimo.

Puntos a tener en cuenta.

El calculo de valores mínimos y máximos puede variar dependiendo del lenguaje que uses, el tipo de dato o la precisión de los cálculos, esto es más evidente cuando manejas números con muchos decimales.

Referencias: