{% extends 'base.html.twig' %} {% block title %}Detalle del Documento{% endblock %} {% block page_title %}Documento {{ documento.serie ? documento.serie ~ '-' : '' }}{{ documento.numero }}{% endblock %} {% block breadcrumb %} {% endblock %} {% block content_header %} {% endblock %} {% block content %}
Documento {{ documento.estadoLabel }}
{{ documento.proveedor.nit }} {{ documento.fechaEmision|date('d/m/Y') }} Saldo {{ documento.moneda.codigo }} {{ documento.saldoPendiente|number_format(2, '.', ',') }}

Operaciones del documento

Observaciones, desbloqueo operativo y referencias externas.

Observaciones

Guardado independiente sin recalcular la factura.

Historial
{% for item in observacionHistorial %}
{{ item.accion|capitalize }}{% if item.usuario %} por {{ item.usuario.nombre }}{% endif %} {{ item.createdAt|date('d/m/Y H:i') }}
{% if item.observacion %}
{{ item.observacion }}
{% else %}
Observacion eliminada
{% endif %}
{% else %}

Sin historial de observaciones.

{% endfor %}

Desbloqueo operativo

{{ desbloqueoEstado.message }}

{% if documento.desbloqueadoHasta %}

Ultimo desbloqueo: {{ documento.desbloqueadoAt ? documento.desbloqueadoAt|date('d/m/Y H:i') : '-' }} {% if documento.desbloqueadoBy %} por {{ documento.desbloqueadoBy.nombre }}{% endif %} · valido hasta {{ documento.desbloqueadoHasta|date('d/m/Y H:i') }}

{% endif %}
{% if desbloqueoEstado.active %} Activo {% elseif desbloqueoEstado.can_unlock %} Bloqueado {% else %} No aplica {% endif %}
{% if desbloqueoEstado.can_unlock %}
{% if not is_granted('ROLE_DESBLOQUEAR_FACTURA') %} {% endif %}
{% endif %}
Historial de desbloqueos
{% for item in desbloqueoHistorial %}
{{ item.usuario ? item.usuario.nombre : 'Usuario eliminado' }} · {{ item.claveRequerida ? 'con clave' : 'por rol' }} {{ item.createdAt|date('d/m/Y H:i') }}
{{ item.motivo }}
{% else %}

Sin desbloqueos registrados.

{% endfor %}

Documento relacionado

Referencia rapida a entradas, cambios u otros documentos externos.

{% if documentoRelacionadoPreview %} {% elseif documento.documentoRelacionadoNumero or documento.referencia %} {% else %}

Sin numero relacionado registrado.

{% endif %}
{# Información General #}

Información General

Datos principales del documento

Proveedor
{{ documento.proveedor.razonSocial }}
NIT
{{ documento.proveedor.nit }}
Tipo de Documento
{{ documento.tipoDocumento.codigo }} {{ documento.tipoDocumento.nombre }}
Serie y Número
{{ documento.serie ? documento.serie ~ '-' : '' }}{{ documento.numero }}
Fechas

Emisión

{{ documento.fechaEmision|date('d/m/Y') }}

Recepción

{{ documento.fechaRecepcion|date('d/m/Y') }}

Vencimiento

{{ documento.fechaVencimiento|date('d/m/Y') }}

Moneda
{{ documento.moneda.codigo }} - {{ documento.moneda.nombre }}
{# Detalle de Líneas #}

Detalle de Líneas

{{ lineas|length }} línea(s) de detalle

Editar lineas
{% if lineas|length > 0 %}
{% for linea in lineas %} {% endfor %}
# Descripción Cantidad Precio Unit. Subtotal Impuesto Total
{{ linea.linea }} {{ linea.descripcion }} {{ linea.cantidad|round(0, 'common')|number_format(0, '.', ',') }} {{ linea.precioUnitario|number_format(2, '.', ',') }} {{ (linea.cantidad * linea.precioUnitario)|number_format(2, '.', ',') }} {{ linea.impuestoMonto|number_format(2, '.', ',') }} {{ documento.moneda.codigo }} {{ linea.totalLinea|number_format(2, '.', ',') }}
{% else %} {% include 'components/_empty_state.html.twig' with { title: 'No hay líneas registradas', message: 'Este documento todavía no tiene detalle de líneas.' } only %} {% endif %}
{# Detalle de Retenciones #}

Detalle de Retenciones

Resumen de retenciones vinculadas a este documento

{% if retencionDetalle.items|length > 0 %}
{% for ret in retencionDetalle.items %}

{{ ret.tipo }}

Base: {{ documento.moneda.codigo }} {{ ret.base|number_format(2, '.', ',') }}

{% if documento.moneda.codigo != 'GTQ' %}

Base: GTQ {{ (ret.base * documento.tipoCambio)|number_format(2, '.', ',') }}

{% endif %}

Porcentaje: {{ ret.porcentaje }}{{ ret.porcentaje is not null ? '%' : '' }}

Monto: {{ documento.moneda.codigo }} {{ ret.monto|number_format(2, '.', ',') }}

{% if documento.moneda.codigo != 'GTQ' %}

Monto: GTQ {{ (ret.monto * documento.tipoCambio)|number_format(2, '.', ',') }}

{% endif %}
{% endfor %}

Retencion calculada

{{ documento.moneda.codigo }} {{ retencionDetalle.total|number_format(2, '.', ',') }}

{% if documento.moneda.codigo != 'GTQ' %}

GTQ {{ (retencionDetalle.total * documento.tipoCambio)|number_format(2, '.', ',') }}

{% endif %}

Retencion real

{{ retencionResumen.moneda }} {{ retencionResumen.monto_real|number_format(2, '.', ',') }}

{% if retencionResumen.moneda != 'GTQ' %}

GTQ {{ (retencionResumen.monto_real * documento.tipoCambio)|number_format(2, '.', ',') }}

{% endif %}

Estado

{{ retencionResumen.estado ?? 'Pendiente' }}

{% if retencionDetalle.total > 0 %} {% if retencionResumen.codigo_sat %}

Registro de retencion SAT

No. retencion: {{ retencionResumen.codigo_sat }}

{% endif %} {% if not retencionResumen.codigo_sat %}

Calculada: {{ retencionResumen.moneda }} {{ retencionDetalle.total|number_format(2, '.', ',') }}

{% endif %}
Saldo retención: {{ retencionResumen.moneda }} {{ retencionResumen.saldo|number_format(2, '.', ',') }}
Estado: {{ retencionResumen.estado ?? 'Pendiente' }}
{% else %} {% include 'components/_empty_state.html.twig' with { title: 'Sin retención generada', message: 'El cálculo de este documento no generó una retención aplicable.' } only %} {% endif %}
{% else %} {% include 'components/_empty_state.html.twig' with { title: 'Sin retenciones configuradas', message: 'Este documento no tiene retenciones fiscales configuradas.' } only %} {% endif %}
{# Detalle de Pagos #}

Detalle de Pagos

{{ pagosAplicados|length }} pago(s) aplicado(s)

{% if pagosAplicados|length > 0 %} {% for pago in pagosAplicados %} {% endfor %}
Código Fecha Monto Forma de Pago Estado
PAY-{{ '%05d'|format(pago.pagoId) }} {{ pago.fecha|date('d/m/Y') }} {{ pago.monedaCodigo }} {{ pago.monto|number_format(2, '.', ',') }} {{ pago.formaPago }} {% if pago.estado == 'Aplicado' %} Aplicado {% elseif pago.estado == 'Anulado' %} Anulado {% else %} {{ pago.estado }} {% endif %}
{% else %} {% include 'components/_empty_state.html.twig' with { title: 'No hay pagos aplicados', message: 'No se han aplicado pagos a este documento.' } only %} {% endif %}
{# Totales #}
Subtotal
{{ documento.moneda.codigo }} {{ documento.subtotal|number_format(2, '.', ',') }}
IVA (12%)
{{ documento.moneda.codigo }} {{ documento.impuestoTotal|number_format(2, '.', ',') }}
Retenciones
-{{ documento.moneda.codigo }} {{ (documento.retencionMontoReal ?? documento.retencionTotal)|number_format(2, '.', ',') }}
IDP incluido
{{ documento.moneda.codigo }} {{ documento.idpTotal|number_format(2, '.', ',') }}
Pagos Aplicados
-{{ documento.moneda.codigo }} {{ totalPagosAplicados|number_format(2, '.', ',') }}
TOTAL A PAGAR
{{ documento.moneda.codigo }} {{ documento.saldoPendiente|number_format(2, '.', ',') }}
{% if documento.moneda.codigo != 'GTQ' %}
Equivalente en GTQ: Q {{ (documento.saldoPendiente * documento.tipoCambio)|number_format(2, '.', ',') }}
{% endif %}
{% endblock %}