<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script>
function formatearMiles(valor) {
  const limpio = String(valor || '').replace(/\D/g, '');
  return limpio ? limpio.replace(/\B(?=(\d{3})+(?!\d))/g, '.') : '';
}
document.querySelectorAll('.numero-miles').forEach(function (input) {
  input.value = formatearMiles(input.value);
  input.addEventListener('input', function () {
    const posicion = this.selectionStart;
    const longitudAnterior = this.value.length;
    this.value = formatearMiles(this.value);
    const nuevaPosicion = Math.max(0, posicion + this.value.length - longitudAnterior);
    this.setSelectionRange(nuevaPosicion, nuevaPosicion);
  });
});
function actualizarTituloImpresion() {
  const titulo = document.querySelector('.page-title, main h3, main h4');
  const destino = document.querySelector('.print-report-title');
  if (titulo && destino) destino.textContent = titulo.textContent.trim();
}
window.addEventListener('beforeprint', actualizarTituloImpresion);
actualizarTituloImpresion();

// Mantiene alineados a la derecha los importes y sus encabezados en todas las tablas/reportes.
document.querySelectorAll('table').forEach(function (tabla) {
  const filas = tabla.querySelectorAll('tbody tr, tfoot tr');
  filas.forEach(function (fila) {
    Array.from(fila.children).forEach(function (celda, indice) {
      const texto = celda.textContent.trim();
      if (/^(?:Gs\.\s*)?-?\d{1,3}(?:\.\d{3})*$/.test(texto)) {
        celda.classList.add('text-end');
        const encabezado = tabla.querySelector('thead tr th:nth-child(' + (indice + 1) + ')');
        if (encabezado) encabezado.classList.add('text-end');
      }
    });
  });
});
</script>
</body>
</html>
