Skip to content

Instantly share code, notes, and snippets.

@fbencosme
Last active March 21, 2026 04:29
Show Gist options
  • Select an option

  • Save fbencosme/cca7bb5d4a1146e00f38e0be39e43e32 to your computer and use it in GitHub Desktop.

Select an option

Save fbencosme/cca7bb5d4a1146e00f38e0be39e43e32 to your computer and use it in GitHub Desktop.
Guia de Simulacion e-CF - DGII Certificacion MKMVentas
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Guia de Simulacion e-CF - DGII Certificacion</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background: #f5f5f5; color: #333; line-height: 1.6; }
.container { max-width: 900px; margin: 0 auto; padding: 20px; }
h1 { text-align: center; color: #1a5632; margin-bottom: 5px; font-size: 1.8rem; }
.subtitle { text-align: center; color: #666; margin-bottom: 30px; font-size: 0.95rem; }
h2 { color: #1a5632; border-bottom: 2px solid #1a5632; padding-bottom: 5px; margin: 30px 0 15px; font-size: 1.3rem; }
h3 { color: #2d7a4f; margin: 20px 0 10px; font-size: 1.1rem; }
.alert { background: #fff3cd; border-left: 4px solid #ffc107; padding: 12px 16px; margin: 15px 0; border-radius: 4px; }
.alert-info { background: #d1ecf1; border-left-color: #17a2b8; }
.alert-danger { background: #f8d7da; border-left-color: #dc3545; }
.alert-success { background: #d4edda; border-left-color: #28a745; }
.alert strong { display: block; margin-bottom: 4px; }
table { width: 100%; border-collapse: collapse; margin: 15px 0; background: #fff; border-radius: 6px; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
th { background: #1a5632; color: #fff; padding: 10px 12px; text-align: left; font-size: 0.85rem; }
td { padding: 8px 12px; border-bottom: 1px solid #eee; font-size: 0.85rem; }
tr:hover { background: #f0f8f0; }
.mono { font-family: 'Consolas', monospace; font-size: 0.8rem; }
.step { background: #fff; border-radius: 8px; padding: 20px; margin: 15px 0; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
.step-number { display: inline-block; background: #1a5632; color: #fff; width: 28px; height: 28px; border-radius: 50%; text-align: center; line-height: 28px; font-weight: bold; margin-right: 8px; font-size: 0.9rem; }
.step-title { font-weight: bold; font-size: 1.05rem; color: #1a5632; }
.checklist { list-style: none; padding: 0; }
.checklist li { padding: 6px 0 6px 32px; position: relative; cursor: pointer; user-select: none; }
.checklist li::before { display: none; }
.checklist input[type="checkbox"] { position: absolute; left: 0; top: 8px; width: 18px; height: 18px; accent-color: #1a5632; cursor: pointer; }
.checklist li.checked { text-decoration: line-through; color: #999; }
.badge { display: inline-block; padding: 2px 8px; border-radius: 4px; font-size: 0.75rem; font-weight: bold; }
.badge-31 { background: #cce5ff; color: #004085; }
.badge-32 { background: #d4edda; color: #155724; }
.badge-33 { background: #f8d7da; color: #721c24; }
.badge-34 { background: #fff3cd; color: #856404; }
.badge-41 { background: #e2e3e5; color: #383d41; }
.badge-43 { background: #d1ecf1; color: #0c5460; }
.badge-44 { background: #e8daef; color: #4a235a; }
.badge-45 { background: #d5f5e3; color: #1e8449; }
.badge-46 { background: #fdebd0; color: #784212; }
.badge-47 { background: #fadbd8; color: #78281f; }
.footer { text-align: center; color: #999; margin-top: 40px; font-size: 0.8rem; padding: 20px; border-top: 1px solid #ddd; }
@media print {
body { background: #fff; }
.container { max-width: 100%; }
.step { box-shadow: none; border: 1px solid #ddd; }
table { box-shadow: none; }
}
</style>
</head>
<body>
<div class="container">
<h1>Guia de Pruebas de Simulacion e-CF</h1>
<p class="subtitle">DGII - Paso 4: Certificacion de Facturacion Electronica -- MKMVentas</p>
<div class="alert alert-info">
<strong>Objetivo</strong>
Generar y enviar comprobantes fiscales electronicos (e-CF) con datos de operaciones reales simuladas,
para demostrar que el sistema puede emitir correctamente cada tipo de comprobante.
</div>
<!-- ==================== CLIENTES DE PRUEBA ==================== -->
<h2>1. Clientes de Prueba</h2>
<p>Se han creado los siguientes clientes de prueba. Utilice el cliente correspondiente segun el tipo de comprobante que necesite generar:</p>
<table>
<thead>
<tr>
<th>Nombre del Cliente</th>
<th>Tipo e-CF</th>
<th>RNC</th>
<th>Cedula</th>
<th>Pertenece a</th>
</tr>
</thead>
<tbody>
<tr>
<td>CLIENTE PRUEBA CREDITO FISCAL (31)</td>
<td><span class="badge badge-31">31</span> Credito Fiscal</td>
<td class="mono">131880681</td>
<td>--</td>
<td><em>RNC prueba DGII</em></td>
</tr>
<tr>
<td>CLIENTE PRUEBA CONSUMO (32)</td>
<td><span class="badge badge-32">32</span> Consumo</td>
<td>--</td>
<td class="mono">00111382693</td>
<td>--</td>
</tr>
<tr>
<td>CLIENTE PRUEBA MENOR (41)</td>
<td><span class="badge badge-41">41</span> Menor</td>
<td>--</td>
<td class="mono">00118505577</td>
<td>--</td>
</tr>
<tr>
<td>CLIENTE PRUEBA GASTOS MENORES (43)</td>
<td><span class="badge badge-43">43</span> Gastos Menores</td>
<td>--</td>
<td>--</td>
<td>--</td>
</tr>
<tr>
<td>CLIENTE PRUEBA REGIMEN ESPECIAL (44)</td>
<td><span class="badge badge-44">44</span> Regimen Especial</td>
<td class="mono">130507945</td>
<td>--</td>
<td>AAAA INTERNATIONAL</td>
</tr>
<tr>
<td>CLIENTE PRUEBA GUBERNAMENTAL (45)</td>
<td><span class="badge badge-45">45</span> Gubernamental</td>
<td class="mono">401007452</td>
<td>--</td>
<td>INAPA</td>
</tr>
<tr>
<td>CLIENTE PRUEBA EXPORTACION (46)</td>
<td><span class="badge badge-46">46</span> Exportaciones</td>
<td>--</td>
<td>--</td>
<td><em>Cliente extranjero</em></td>
</tr>
<tr>
<td>CLIENTE PRUEBA PAGOS EXTERIOR (47)</td>
<td><span class="badge badge-47">47</span> Pagos al Exterior</td>
<td>--</td>
<td>--</td>
<td><em>Cliente extranjero</em></td>
</tr>
</tbody>
</table>
<!-- ==================== CONTADORES ==================== -->
<h2>2. Comprobantes Requeridos por DGII</h2>
<p>El portal de certificacion requiere la cantidad exacta de comprobantes aceptados para cada tipo:</p>
<table>
<thead>
<tr>
<th>Tipo e-CF</th>
<th>Descripcion</th>
<th>Cantidad</th>
<th>Cliente a Usar</th>
<th>Monto Sugerido</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="badge badge-31">31</span></td>
<td>Credito Fiscal</td>
<td><strong>4</strong></td>
<td>CLIENTE PRUEBA CREDITO FISCAL (31)</td>
<td>Cualquier monto</td>
</tr>
<tr>
<td><span class="badge badge-32">32</span></td>
<td>Consumo &gt;= 250,000</td>
<td><strong>2</strong></td>
<td>CLIENTE PRUEBA CONSUMO (32)</td>
<td>&gt;= RD$250,000.00</td>
</tr>
<tr>
<td><span class="badge badge-33">33</span></td>
<td>Nota de Credito</td>
<td><strong>1</strong></td>
<td>(Contra una factura tipo 31 posteada)</td>
<td>Parcial o total</td>
</tr>
<tr>
<td><span class="badge badge-34">34</span></td>
<td>Nota de Debito</td>
<td><strong>2</strong></td>
<td>(Contra una factura tipo 31 posteada)</td>
<td>Cualquier monto</td>
</tr>
<tr>
<td><span class="badge badge-41">41</span></td>
<td>Menor (Compras)</td>
<td><strong>2</strong></td>
<td>CLIENTE PRUEBA MENOR (41)</td>
<td>Cualquier monto</td>
</tr>
<tr>
<td><span class="badge badge-43">43</span></td>
<td>Gastos Menores</td>
<td><strong>2</strong></td>
<td>CLIENTE PRUEBA GASTOS MENORES (43)</td>
<td>Cualquier monto</td>
</tr>
<tr>
<td><span class="badge badge-44">44</span></td>
<td>Regimen Especial</td>
<td><strong>2</strong></td>
<td>CLIENTE PRUEBA REGIMEN ESPECIAL (44)</td>
<td>Cualquier monto</td>
</tr>
<tr>
<td><span class="badge badge-45">45</span></td>
<td>Gubernamental</td>
<td><strong>2</strong></td>
<td>CLIENTE PRUEBA GUBERNAMENTAL (45)</td>
<td>Cualquier monto</td>
</tr>
<tr>
<td><span class="badge badge-46">46</span></td>
<td>Exportaciones</td>
<td><strong>2</strong></td>
<td>CLIENTE PRUEBA EXPORTACION (46)</td>
<td>Cualquier monto</td>
</tr>
<tr>
<td><span class="badge badge-47">47</span></td>
<td>Pagos al Exterior</td>
<td><strong>2</strong></td>
<td>CLIENTE PRUEBA PAGOS EXTERIOR (47)</td>
<td>Cualquier monto</td>
</tr>
<tr style="background: #f0f8f0;">
<td><span class="badge badge-32">32 RFCE</span></td>
<td>Resumen Consumo &lt; 250,000</td>
<td><strong>4</strong></td>
<td>CLIENTE PRUEBA CONSUMO (32)</td>
<td>&lt; RD$250,000.00</td>
</tr>
<tr style="background: #f0f8f0;">
<td><span class="badge badge-32">32</span></td>
<td>Consumo &lt; 250,000 (portal)</td>
<td><strong>4</strong></td>
<td>(Se suben al portal despues del RFCE)</td>
<td>&lt; RD$250,000.00</td>
</tr>
</tbody>
</table>
<div class="alert">
<strong>Total aproximado: 27 comprobantes</strong>
23 facturas + 1 NC + 2 ND + 4 RFCE (generados automaticamente) + 4 consumo subidos al portal.
</div>
<!-- ==================== PASOS ==================== -->
<h2>3. Instrucciones Paso a Paso</h2>
<div class="step">
<p><span class="step-number">1</span><span class="step-title">Crear Facturas Regulares (tipos 31, 41, 43, 44, 45, 46, 47)</span></p>
<ul class="checklist">
<li><input type="checkbox">Ir a <strong>Cuentas por Cobrar -&gt; Facturas -&gt; Nueva Factura</strong></li>
<li><input type="checkbox">Seleccionar el <strong>cliente de prueba</strong> correspondiente al tipo</li>
<li><input type="checkbox">Agregar al menos 1 producto con cantidad y precio</li>
<li><input type="checkbox">Guardar la factura</li>
<li><input type="checkbox">Hacer clic en <strong>"Postear"</strong> -- esto genera el e-NCF y envia el e-CF a DGII automaticamente</li>
<li><input type="checkbox">Verificar en el historial e-CF que el comprobante fue <strong>Aceptado</strong></li>
<li><input type="checkbox">Repetir segun la cantidad requerida por tipo</li>
</ul>
<div class="alert alert-info">
<strong>Orden sugerido:</strong> Empiece con las 4 facturas tipo 31 (Credito Fiscal) ya que necesitara al menos 3 de ellas posteadas para crear la NC y las 2 ND.
</div>
</div>
<div class="step">
<p><span class="step-number">2</span><span class="step-title">Crear Facturas de Consumo &gt;= RD$250,000 (tipo 32)</span></p>
<ul class="checklist">
<li><input type="checkbox">Usar el cliente <strong>CLIENTE PRUEBA CONSUMO (32)</strong></li>
<li><input type="checkbox">Crear 2 facturas con monto total <strong>&gt;= RD$250,000.00</strong> cada una</li>
<li><input type="checkbox">Postear ambas -- se envian como e-CF tipo 32 directamente a DGII</li>
</ul>
</div>
<div class="step">
<p><span class="step-number">3</span><span class="step-title">Crear Facturas de Consumo &lt; RD$250,000 (tipo 32 RFCE)</span></p>
<ul class="checklist">
<li><input type="checkbox">Usar el cliente <strong>CLIENTE PRUEBA CONSUMO (32)</strong></li>
<li><input type="checkbox">Crear 4 facturas con monto total <strong>&lt; RD$250,000.00</strong> cada una</li>
<li><input type="checkbox">Postear las 4 facturas</li>
<li><input type="checkbox">Ir a <strong>Parametros -&gt; e-CF -&gt; Reportes</strong> y generar el <strong>RFCE</strong> del mes</li>
<li><input type="checkbox">Esperar que DGII acepte los 4 RFCE</li>
<li><input type="checkbox">Descargar los XML firmados originales de cada factura</li>
<li><input type="checkbox">Subir los 4 XML al portal DGII en la seccion <strong>"Facturas de consumo &lt; 250Mil"</strong>, uno por uno</li>
</ul>
<div class="alert alert-danger">
<strong>Importante:</strong> Los XML que se suben al portal deben ser los MISMOS que generaron el RFCE. No se pueden regenerar porque la firma digital cambiaria y DGII rechazaria el comprobante, reiniciando TODAS las pruebas.
</div>
</div>
<div class="step">
<p><span class="step-number">4</span><span class="step-title">Crear Nota de Credito (tipo 33)</span></p>
<ul class="checklist">
<li><input type="checkbox">Ir a <strong>Cuentas por Cobrar -&gt; Notas de Credito -&gt; Nueva</strong></li>
<li><input type="checkbox">Seleccionar una <strong>factura tipo 31 ya posteada</strong></li>
<li><input type="checkbox">Seleccionar las lineas a devolver (parcial o total)</li>
<li><input type="checkbox">Guardar y <strong>Postear</strong> la nota de credito</li>
<li><input type="checkbox">El sistema envia el e-CF tipo 33 automaticamente</li>
</ul>
</div>
<div class="step">
<p><span class="step-number">5</span><span class="step-title">Crear Notas de Debito (tipo 34)</span></p>
<ul class="checklist">
<li><input type="checkbox">Crear 2 notas de debito contra facturas tipo 31 posteadas</li>
<li><input type="checkbox">Postear cada una</li>
<li><input type="checkbox">El sistema envia el e-CF tipo 34 automaticamente</li>
</ul>
</div>
<div class="step">
<p><span class="step-number">6</span><span class="step-title">Generar Representacion Impresa</span></p>
<ul class="checklist">
<li><input type="checkbox">Para <strong>cada factura posteada</strong>, generar el PDF (boton de impresora o descarga)</li>
<li><input type="checkbox">El PDF debe incluir el <strong>codigo QR</strong> con los datos del e-CF</li>
<li><input type="checkbox">Conservar todos los PDF -- DGII los revisara en el siguiente paso de certificacion</li>
</ul>
<div class="alert">
<strong>Requisito DGII:</strong> La representacion impresa debe contener los mismos datos que el e-CF enviado, incluyendo el QR con: RNC emisor, e-NCF, monto total, ITBIS, codigo de seguridad y URL de verificacion.
</div>
</div>
<div class="step">
<p><span class="step-number">7</span><span class="step-title">Verificar en el Portal DGII</span></p>
<ul class="checklist">
<li><input type="checkbox">Ir al portal de certificacion DGII</li>
<li><input type="checkbox">Verificar que todos los contadores lleguen a la meta</li>
<li><input type="checkbox"><strong>NO hacer clic en "DESCARGAR COMPROBANTES"</strong> -- esto reinicia todas las pruebas</li>
</ul>
</div>
<!-- ==================== ORDEN ==================== -->
<h2>4. Orden Recomendado de Envio</h2>
<div class="alert alert-success">
<strong>Siga este orden estrictamente para evitar rechazos:</strong>
</div>
<table>
<thead>
<tr>
<th>Orden</th>
<th>Que enviar</th>
<th>Cantidad</th>
<th>Esperar antes de continuar</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>1ro</strong></td>
<td>Facturas regulares: tipos 31, 41, 43, 44, 45, 46, 47 + Consumo &gt;=250K (32)</td>
<td>18</td>
<td>Esperar que el portal muestre los aceptados</td>
</tr>
<tr>
<td><strong>2do</strong></td>
<td>NC (33) y ND (34) -- referencian facturas del paso 1</td>
<td>3</td>
<td>Esperar que el portal muestre los aceptados</td>
</tr>
<tr>
<td><strong>3ro</strong></td>
<td>RFCE (resumenes de consumo &lt; 250K)</td>
<td>4</td>
<td>Esperar que el portal muestre 4/4 RFCE aceptados</td>
</tr>
<tr>
<td><strong>4to</strong></td>
<td>Subir XML de consumo &lt; 250K al portal</td>
<td>4</td>
<td>Verificar 4/4 consumo aceptados</td>
</tr>
</tbody>
</table>
<!-- ==================== ERRORES ==================== -->
<h2>5. Errores Comunes a Evitar</h2>
<table>
<thead>
<tr>
<th>Error</th>
<th>Consecuencia</th>
<th>Como evitarlo</th>
</tr>
</thead>
<tbody>
<tr>
<td>Hacer clic en "DESCARGAR COMPROBANTES"</td>
<td style="color: #dc3545; font-weight: bold;">Reinicia TODAS las pruebas a 0</td>
<td>Nunca tocar ese boton</td>
</tr>
<tr>
<td>Enviar NC/ND antes de que las facturas referenciadas esten aceptadas</td>
<td style="color: #dc3545;">Rechazo + posible reinicio</td>
<td>Esperar confirmacion en el portal</td>
</tr>
<tr>
<td>Subir consumo &lt;250K al portal antes de que RFCE este aceptado</td>
<td style="color: #dc3545;">Reinicio de todas las pruebas</td>
<td>Esperar 4/4 RFCE aceptados</td>
</tr>
<tr>
<td>Regenerar/refirmar XML de consumo para subir al portal</td>
<td style="color: #dc3545;">Firma no coincide con RFCE -&gt; reinicio total</td>
<td>Usar el XML original guardado por el sistema</td>
</tr>
<tr>
<td>Usar secuencias ya utilizadas</td>
<td>Rechazo del comprobante</td>
<td>Las secuencias se asignan automaticamente</td>
</tr>
</tbody>
</table>
<div class="footer">
<p>MKMVentas -- Guia de Simulacion e-CF para Certificacion DGII</p>
<p>Generado el 21 de marzo de 2026</p>
</div>
</div>
<script>
// Persist checkbox state in localStorage
const STORAGE_KEY = 'dgii-simulacion-checklist';
function loadState() {
try {
return JSON.parse(localStorage.getItem(STORAGE_KEY)) || {};
} catch { return {}; }
}
function saveState(state) {
localStorage.setItem(STORAGE_KEY, JSON.stringify(state));
}
const state = loadState();
const checkboxes = document.querySelectorAll('.checklist input[type="checkbox"]');
checkboxes.forEach((cb, i) => {
const key = 'cb-' + i;
// Restore state
if (state[key]) {
cb.checked = true;
cb.parentElement.classList.add('checked');
}
// Listen for changes
cb.addEventListener('change', () => {
state[key] = cb.checked;
cb.parentElement.classList.toggle('checked', cb.checked);
saveState(state);
});
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment