{% extends 'base.html' %} {% block content %}

Contabilidad SaaS

Facturación de uso de plataforma por institución: planes, suscripciones, liquidaciones, pagos, Mercado Pago e historial.

Excel PDF Portal institución
Facturado activo
$ {{ '%.2f'|format(total_billed) }}
Cobrado
$ {{ '%.2f'|format(total_paid) }}
Deuda
$ {{ '%.2f'|format(total_debt) }}
Vencidas
{{ overdue_count }}
{% if tab in ['dashboard','invoices','payments','history'] %}
Filtros de gestión
Limpiar
{% endif %} {% if tab == 'plans' %}
Planes comerciales
{% for p in plans %} {% else %}{% endfor %}
PlanMensualPor turnoProfesionales incluidosExtra profesionalTurnos incluidosActivoAcciones
{{ p.name }}
{{ p.description or '' }}
$ {{ '%.2f'|format(p.monthly_price or 0) }} $ {{ '%.2f'|format(p.price_per_appointment or 0) }} {{ p.included_professionals }} $ {{ '%.2f'|format(p.extra_professional_price or 0) }} {{ p.included_appointments }} {% if p.active %}{% else %}No{% endif %}
Sin planes cargados.
{% elif tab == 'subscriptions' %}
Suscripciones por institución
{% for s in subscriptions %} {% else %}{% endfor %}
InstituciónPlanInicioDía cobroEstadoGenerarAcciones
{{ s.institution.name }}{{ s.plan.name }}{{ s.start_date.strftime('%d/%m/%Y') if s.start_date else '—' }}{{ s.billing_day }}{{ s.status }}
Sin suscripciones.
{% elif tab == 'payments' %}
Últimos pagos registrados
{% for p in payments %}{% else %}{% endfor %}
FechaInstituciónFacturaMétodoEstadoImporteReferenciaComprobante
{{ p.payment_date.strftime('%d/%m/%Y') }}{{ p.invoice.institution.name }}{{ p.invoice.period }}{{ p.method }}{{ p.status or p.mercadopago_status or 'registrado' }}$ {{ '%.2f'|format(p.amount) }}{{ p.reference or p.mercadopago_payment_id or '—' }}
Sin pagos.
{% elif tab == 'history' %}
Historial por institución
{% if history_institution %}

{{ history_institution.name }}

CUIT: {{ history_institution.cuit or '—' }}

Facturado
$ {{ '%.2f'|format(history_totals.billed) }}
Pagado
$ {{ '%.2f'|format(history_totals.paid) }}
Deuda
$ {{ '%.2f'|format(history_totals.debt) }}
{% endif %}
Liquidaciones históricas
{% for i in history_invoices %}{% else %}{% endfor %}
PeríodoTotalPagadoDeudaEstadoPDF
{{ i.period }}$ {{ '%.2f'|format(i.total_amount or 0) }}$ {{ '%.2f'|format(i.paid_amount or 0) }}$ {{ '%.2f'|format(i.debt_amount) }}{{ i.status }}PDF
Seleccioná una institución para ver su historial.
Pagos históricos
{% for p in history_payments %}{% else %}{% endfor %}
FechaPeriodoMétodoImporteReferencia
{{ p.payment_date.strftime('%d/%m/%Y') }}{{ p.invoice.period }}{{ p.method }}$ {{ '%.2f'|format(p.amount or 0) }}{{ p.reference or p.mercadopago_payment_id or '—' }}
Sin pagos para mostrar.
{% elif tab == 'mercadopago' %}
Configuración Mercado Pago
Actual: {{ mp_config.access_token_masked or 'sin configurar' }}. Por seguridad no se muestra completo.
Debe ser HTTPS real para recibir webhooks. En local podés usar ngrok.
Webhook público

Configurá esta URL en Mercado Pago:

{{ (mp_config.public_base_url or request.host_url.rstrip('/')) }}/webhooks/mercadopago

Estado: {% if mp_config.enabled %}configurado{% else %}sin token{% endif %}

La aprobación final se registra por webhook. El retorno del navegador solo informa al usuario.

{% else %}
Liquidaciones SaaSMostrando {{ invoices|length }} registros
{% for i in invoices %}{% else %}{% endfor %}
PeríodoInstituciónTurnosProfesionalesTotalPagadoDeudaVenceEstadoAcciones
{{ i.period }}{{ i.institution.name }}
{{ i.institution.cuit or 'Sin CUIT' }}
{{ i.appointment_count }}
$ {{ '%.2f'|format(i.appointment_amount or 0) }}
{{ i.professional_count }}
$ {{ '%.2f'|format(i.extra_professional_amount or 0) }}
$ {{ '%.2f'|format(i.total_amount or 0) }}$ {{ '%.2f'|format(i.paid_amount or 0) }}$ {{ '%.2f'|format(i.debt_amount) }}{{ i.due_date.strftime('%d/%m/%Y') if i.due_date else '—' }}{{ i.status }}
PDF{% if i.status != 'anulada' %}
{% if i.mercadopago_init_point or i.mercadopago_sandbox_init_point %}Abrir link{% endif %}{% if (i.paid_amount or 0)==0 %}{% endif %}{% endif %}
{% if i.mercadopago_status %}
MP: {{ i.mercadopago_status }} {{ i.mercadopago_status_detail or '' }}
{% endif %}
Sin liquidaciones generadas.
{% endif %} {% endblock %} {% block scripts %}{{ super() }} {% endblock %}