Files
MarineInvoice/Archivos Creados/dashboard.html
T
alro65 35d460b127 Initial commit — MarineInvoice v1.0
Multi-tenant marine invoicing system: Stripe payments, PDF generation,
digital signatures, QR codes, SMTP email, bilingual templates.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-05 01:54:08 -04:00

93 lines
4.5 KiB
HTML

{% extends "base.html" %}
{% block title %}Dashboard — MarineInvoice Pro{% endblock %}
{% block content %}
<h1 class="page-title">Dashboard</h1>
<p class="page-subtitle">Bienvenido, {{ current_user.full_name or current_user.username }}</p>
<!-- Stat cards -->
<div class="grid-4 mb-4">
<div class="stat-card"><div class="stat-icon">🏢</div><div class="stat-label">Compañías</div><div class="stat-value">{{ companies|length }}</div></div>
<div class="stat-card"><div class="stat-icon">👥</div><div class="stat-label">Clientes</div><div class="stat-value">{{ total_clients }}</div></div>
<div class="stat-card"><div class="stat-icon">📄</div><div class="stat-label">Invoices</div><div class="stat-value">{{ total_invoices }}</div></div>
<div class="stat-card"><div class="stat-icon">📋</div><div class="stat-label">Cotizaciones</div><div class="stat-value">{{ total_quotes }}</div></div>
</div>
<!-- Total facturado banner -->
<div style="background:linear-gradient(135deg,#1a2744 0%,#243560 100%);border-radius:12px;padding:20px 28px;margin-bottom:24px;display:flex;align-items:center;justify-content:space-between;">
<div>
<div style="color:#c9a84c;font-size:12px;font-weight:600;letter-spacing:1px;text-transform:uppercase;">Total Facturado (Invoices)</div>
<div style="color:white;font-size:32px;font-weight:700;margin-top:4px;">${{ "%.2f"|format(total_billed) }}</div>
</div>
<div style="font-size:40px;opacity:0.4;">💰</div>
</div>
<!-- Two columns: Invoices | Cotizaciones -->
<div style="display:grid;grid-template-columns:1fr 1fr;gap:20px;">
<!-- INVOICES -->
<div class="card" style="margin-bottom:0;">
<div class="card-header" style="border-left:4px solid #c9a84c;padding-left:12px;">
<span class="card-title" style="color:#c9a84c;">📄 Últimos Invoices</span>
<a href="/invoices" class="btn btn-primary btn-sm">Ver todos</a>
</div>
{% if recent_invoices %}
{% for inv in recent_invoices %}
{% set client = inv.client %}
<div class="list-item" style="padding:10px 0;">
<div class="list-item-info">
<h4 style="font-size:13px;margin-bottom:2px;">
{{ inv.number }}
{% if inv.status == 'draft' %}<span class="badge badge-gold">Borrador</span>
{% elif inv.status == 'sent' %}<span class="badge badge-blue">Enviado</span>
{% elif inv.status == 'paid' %}<span class="badge badge-green">Pagado</span>
{% else %}<span class="badge" style="background:#eee;color:#666;">Cancelado</span>{% endif %}
</h4>
<p style="font-size:11px;color:var(--gray);">{{ client.name if client else '—' }} · {{ inv.date }}</p>
</div>
<span style="font-weight:700;color:#c9a84c;font-size:13px;">${{ "%.2f"|format(inv.total) }}</span>
</div>
{% endfor %}
{% else %}
<div class="empty-state" style="padding:30px 0;">
<div class="emoji">📄</div>
<h3>No hay invoices aún</h3>
<p>Ve a <a href="/invoices">Invoices</a> para crear uno</p>
</div>
{% endif %}
</div>
<!-- COTIZACIONES -->
<div class="card" style="margin-bottom:0;">
<div class="card-header" style="border-left:4px solid #4a90d9;padding-left:12px;">
<span class="card-title" style="color:#4a90d9;">📋 Últimas Cotizaciones</span>
<a href="/quotes" class="btn btn-secondary btn-sm">Ver todas</a>
</div>
{% if recent_quotes %}
{% for qt in recent_quotes %}
{% set client = qt.client %}
<div class="list-item" style="padding:10px 0;">
<div class="list-item-info">
<h4 style="font-size:13px;margin-bottom:2px;">
{{ qt.number }}
{% if qt.status == 'draft' %}<span class="badge badge-gold">Borrador</span>
{% elif qt.status == 'sent' %}<span class="badge badge-blue">Enviado</span>
{% elif qt.status == 'accepted' %}<span class="badge badge-green">Aceptado</span>
{% else %}<span class="badge" style="background:#fde8e8;color:#c0392b;">Rechazado</span>{% endif %}
</h4>
<p style="font-size:11px;color:var(--gray);">{{ client.name if client else '—' }} · {{ qt.date }}</p>
</div>
<span style="font-weight:700;color:#4a90d9;font-size:13px;">${{ "%.2f"|format(qt.total) }}</span>
</div>
{% endfor %}
{% else %}
<div class="empty-state" style="padding:30px 0;">
<div class="emoji">📋</div>
<h3>No hay cotizaciones aún</h3>
<p>Ve a <a href="/quotes">Cotizaciones</a> para crear una</p>
</div>
{% endif %}
</div>
</div>
{% endblock %}