Saltar a contenido

Reglas transversales del e-CF (fórmulas, tolerancia y topes)

Extraídas del Formato Comprobante Fiscal Electrónico (e-CF) V1.0 y del Informe Técnico e-CF v1.0 usando el texto cacheado en resources/dgii/txt/. Es la parte que el agente transversal de la auditoría no llegó a completar.

Fórmulas de los totalizadores

Campo Fórmula
Monto Ítem (campo 39) Precio Unitario × Cantidad − Monto Descuento + Monto Recargo
Total ITBIS Tasa N (campos 101-103) Monto Gravado ITBIS TasaN × Tasa ITBIS N
Total ITBIS (campo 100) Total ITBIS Tasa1 + Total ITBIS Tasa2 + Total ITBIS Tasa3
Monto del Impuesto Adicional (campo 104) ISC Específico + ISC Ad Valorem + Otros Impuestos Adicionales
Monto Total (campo 110) Monto Gravado Total + Monto Exento + Total ITBIS + Monto del Impuesto Adicional
Monto Total con paginación Debe ser igual a la sumatoria de Monto Subtotal Página

El ISC entra en la base imponible del ITBIS

"Si existen impuestos selectivos al consumo que formen parte de la base imponible del ITBIS, estos se sumarán al monto gravado antes de multiplicarlo por la tasa de ITBIS. Sólo forman parte de la base imponible del ITBIS los impuestos selectivos al consumo con códigos desde 006 hasta 039." — Formato e-CF, campo 101

Es decir, con ISC la fórmula del ITBIS por tasa es (Monto Gravado TasaN + ISC) × Tasa N.

Implementado en UtilPdfClient::itbisLinea() / iscDeLinea(): el ISC de la línea (campos isc_especifico e isc_advalorem, y los impuestos adicionales con códigos 006-039) se suma al monto antes de aplicar la tasa. Cubierto por RiPayloadTest.

Regla de tolerancia (Informe Técnico §12)

"Se admite como regla de tolerancia para cada línea del Detalle una diferencia de ± 1 unidad del valor del precio por la cantidad de ítems. A su vez, se define una tolerancia global sobre el monto total del e-CF, que será equivalente al total de líneas del Detalle. Si la diferencia de los montos supera la tolerancia, el e-CF será aceptado condicional."

✅ Implementado tal cual en App\Http\Requests\Concerns\ValidatesEcfTotals (tolerancia = max(1, número de líneas)).

Regla de redondeo (Informe Técnico §13)

Dos decimales en general, con excepciones expresas (nota al pie 19):

Campo Decimales
Precio Unitario Ítem 4
Precio Unitario Ítem Otra Moneda 4
Tipo de Cambio 4
Subcantidad 3
Todos los demás importes 2

✅ Implementado con money4() / money3() en XmlBuilder y decimal:0,4 en los FormRequests.

Regla propia de la Nota de Crédito (tipo 34)

"Si se emite un e-CF tipo 34, el monto total deberá ser menor o igual al monto total del e-CF modificado. Si un e-CF es afectado por varias notas de crédito, la sumatoria de los montos de las notas de crédito deberá ser menor o igual al monto total del e-CF que se afecta." — Formato e-CF, campo 110, nota 30

Implementado en Ecf34Request::validacionesDelTipo(). Se denormalizó documents.modified_e_ncf para poder sumar las notas anteriores sin recorrer los payloads; las notas rechazadas se excluyen (son nulas fiscalmente y no consumen saldo acreditable). Si el NCF modificado es de serie B/A/P o de otro proveedor no está en nuestra base y la regla la hace valer la DGII. Cubierto por TopeNotaCreditoTest.

Corrección de texto (código de modificación 2)

Con el código 2 el Monto Ítem —y por tanto el Monto Totaldebe ser cero: la nota no tiene efecto económico (Formato e-CF, campo 39, nota c). ✅ Implementado y cubierto por tests.

Topes de repetición y longitudes

Sección Tope
Líneas de detalle 1.000 (10.000 en el tipo 32 por debajo de RD$250.000)
Formas de pago 7
Impuestos adicionales (totales) 20
Impuestos adicionales (por línea) 2
Subtotales informativos 20
Descuentos/recargos globales 20
Sub descuentos / sub recargos por línea 12
Códigos de producto por línea 5
Páginas (sección Paginación) 100
Nombre del ítem 80 caracteres
Descripción del ítem 1.000 caracteres
Razón social 150 caracteres
Descripción de descuento/recargo 45 caracteres
Razón de modificación 90 caracteres

Estructura del e-NCF

E + tipo (2 dígitos) + secuencial (10 dígitos) = 13 caracteres. Se toma de los rangos autorizados por la DGII, que vencen el 31 de diciembre del año siguiente al de su autorización. El NCF Modificado de una nota puede ser de serie E (13), B (11) o A/P (19), porque puede referirse a comprobantes anteriores a la facturación electrónica.