{% extends 'base.html' %}
{% block title %}{{ 'Editar' if activo else 'Nuevo' }} activo fijo{% endblock %}

{% block content %}
<div class="d-flex align-items-center mb-4">
  <a href="{{ url_for('activos.index') }}" class="btn btn-outline-secondary btn-sm me-3">
    <i class="bi bi-arrow-left"></i>
  </a>
  <div>
    <h4 class="fw-bold mb-0" style="color:#0f2744">
      <i class="bi bi-buildings me-2" style="color:#a3e635"></i>
      {{ 'Editar activo' if activo else 'Nuevo activo fijo' }}
    </h4>
    {% if activo %}<p class="text-muted mb-0 mt-1" style="font-size:.82rem">{{ activo.nombre }}</p>{% endif %}
  </div>
</div>

<div class="row">
  <div class="col-lg-8">
    <form method="post">
      <div class="card mb-4">
        <div class="card-header">Identificación</div>
        <div class="card-body row g-3">
          <div class="col-12">
            <label class="form-label">Nombre del activo <span class="text-danger">*</span></label>
            <input type="text" name="nombre" class="form-control" required
                   value="{{ activo.nombre if activo else '' }}"
                   placeholder="ej. Ordenador portátil Dell, Furgoneta de reparto...">
          </div>
          <div class="col-12">
            <label class="form-label">Descripción</label>
            <textarea name="descripcion" class="form-control" rows="2"
                      placeholder="Modelo, número de serie, ubicación...">{{ activo.descripcion if activo and activo.descripcion else '' }}</textarea>
          </div>
          {% if activo %}
          <div class="col-12">
            <div class="form-check">
              <input type="checkbox" name="activo_bool" id="cb_activo" class="form-check-input"
                     {{ 'checked' if activo.activo else '' }}>
              <label class="form-check-label" for="cb_activo">Activo en uso (desmarcar si está dado de baja)</label>
            </div>
          </div>
          {% endif %}
        </div>
      </div>

      <div class="card mb-4">
        <div class="card-header">Datos económicos</div>
        <div class="card-body row g-3">
          <div class="col-md-6">
            <label class="form-label">Fecha de adquisición <span class="text-danger">*</span></label>
            <input type="date" name="fecha_adquisicion" class="form-control" required
                   value="{{ activo.fecha_adquisicion if activo else hoy }}">
          </div>
          <div class="col-md-6">
            <label class="form-label">Coste de adquisición <span class="text-danger">*</span></label>
            <div class="input-group">
              <input type="number" name="coste_adquisicion" class="form-control" step="0.01" min="0" required
                     value="{{ activo.coste_adquisicion if activo else '' }}" placeholder="0.00"
                     oninput="calcPreview()">
              <span class="input-group-text">€</span>
            </div>
          </div>
          <div class="col-md-6">
            <label class="form-label">Valor residual</label>
            <div class="input-group">
              <input type="number" name="valor_residual" class="form-control" step="0.01" min="0"
                     value="{{ activo.valor_residual if activo else 0 }}" placeholder="0.00"
                     oninput="calcPreview()">
              <span class="input-group-text">€</span>
            </div>
            <div class="form-text">Valor estimado al final de la vida útil.</div>
          </div>
          <div class="col-md-3">
            <label class="form-label">Vida útil (años) <span class="text-danger">*</span></label>
            <input type="number" name="vida_util_anios" class="form-control" min="1" max="50" required
                   value="{{ activo.vida_util_anios if activo else 5 }}"
                   oninput="calcPreview()">
          </div>
          <div class="col-md-3">
            <label class="form-label">Método amortización</label>
            <select name="metodo_amortizacion" class="form-select" onchange="calcPreview()">
              <option value="lineal"     {{ 'selected' if activo and activo.metodo_amortizacion == 'lineal' else '' }}>Lineal</option>
              <option value="acelerado"  {{ 'selected' if activo and activo.metodo_amortizacion == 'acelerado' else '' }}>Acelerado (doble)</option>
            </select>
          </div>
          <!-- Preview -->
          <div class="col-12">
            <div class="alert alert-info py-2 mb-0" id="preview-amort" style="font-size:.83rem">
              <i class="bi bi-calculator me-1"></i>
              Cuota anual lineal: <strong id="cuota-preview">—</strong>
            </div>
          </div>
        </div>
      </div>

      <div class="card mb-4">
        <div class="card-header">Cuentas contables</div>
        <div class="card-body row g-3">
          <div class="col-md-6">
            <label class="form-label">Cuenta del activo (Grupo 2)</label>
            <select name="cuenta_id" class="form-select">
              <option value="">— Sin asignar —</option>
              {% for cod, nom in cuentas_activos %}
              <option value="{{ (cuentas_pc | selectattr('codigo','equalto',cod) | list | first).id if (cuentas_pc | selectattr('codigo','equalto',cod) | list) else '' }}"
                      {{ 'selected' if activo and activo.cuenta_id and
                         (cuentas_pc | selectattr('id','equalto',activo.cuenta_id) | list | first) and
                         (cuentas_pc | selectattr('id','equalto',activo.cuenta_id) | list | first).codigo == cod else '' }}>
                {{ cod }} — {{ nom }}
              </option>
              {% endfor %}
            </select>
            <div class="form-text">Cuenta donde se registra el inmovilizado.</div>
          </div>
          <div class="col-md-6">
            <label class="form-label">Cuenta amortización acumulada</label>
            <select name="cuenta_amort_id" class="form-select">
              <option value="">— Sin asignar —</option>
              {% for cod, nom in cuentas_amort %}
              <option value="{{ (cuentas_pc | selectattr('codigo','equalto',cod) | list | first).id if (cuentas_pc | selectattr('codigo','equalto',cod) | list) else '' }}"
                      {{ 'selected' if activo and activo.cuenta_amort_id and
                         (cuentas_pc | selectattr('id','equalto',activo.cuenta_amort_id) | list | first) and
                         (cuentas_pc | selectattr('id','equalto',activo.cuenta_amort_id) | list | first).codigo == cod else '' }}>
                {{ cod }} — {{ nom }}
              </option>
              {% endfor %}
            </select>
            <div class="form-text">Cuenta donde se acumula la amortización.</div>
          </div>
        </div>
      </div>

      <div class="card mb-4">
        <div class="card-header">Notas</div>
        <div class="card-body">
          <textarea name="notas" class="form-control" rows="2">{{ activo.notas if activo and activo.notas else '' }}</textarea>
        </div>
      </div>

      <div class="d-flex gap-2">
        <button type="submit" class="btn btn-primary">
          <i class="bi bi-check2 me-1"></i>{{ 'Guardar cambios' if activo else 'Registrar activo' }}
        </button>
        <a href="{{ url_for('activos.index') }}" class="btn btn-outline-secondary">Cancelar</a>
        {% if activo %}
        <form method="post" action="{{ url_for('activos.eliminar', id=activo.id) }}"
              class="ms-auto" onsubmit="return confirm('¿Eliminar este activo?')">
          <button class="btn btn-outline-danger btn-sm"><i class="bi bi-trash me-1"></i>Eliminar</button>
        </form>
        {% endif %}
      </div>
    </form>
  </div>

  <div class="col-lg-4">
    <div class="card">
      <div class="card-header">Tablas máximas de amortización (AEAT)</div>
      <div class="card-body p-0">
        <table class="table table-sm mb-0" style="font-size:.78rem">
          <thead><tr><th>Tipo de activo</th><th class="text-end">Coef.</th><th class="text-end">Años</th></tr></thead>
          <tbody>
            <tr><td>Edificios industriales</td><td class="text-end">3%</td><td class="text-end">68</td></tr>
            <tr><td>Instalaciones técnicas</td><td class="text-end">12%</td><td class="text-end">18</td></tr>
            <tr><td>Maquinaria</td><td class="text-end">12%</td><td class="text-end">18</td></tr>
            <tr><td>Útiles y herramientas</td><td class="text-end">30%</td><td class="text-end">8</td></tr>
            <tr><td>Mobiliario</td><td class="text-end">10%</td><td class="text-end">20</td></tr>
            <tr><td>Equipos informáticos</td><td class="text-end">25%</td><td class="text-end">8</td></tr>
            <tr><td>Elementos de transporte</td><td class="text-end">16%</td><td class="text-end">14</td></tr>
            <tr><td>Aplicaciones informáticas</td><td class="text-end">33%</td><td class="text-end">6</td></tr>
          </tbody>
        </table>
      </div>
    </div>
  </div>
</div>

<script>
function calcPreview() {
  const coste    = parseFloat(document.querySelector('[name=coste_adquisicion]').value) || 0;
  const residual = parseFloat(document.querySelector('[name=valor_residual]').value)    || 0;
  const vida     = parseInt(document.querySelector('[name=vida_util_anios]').value)     || 0;
  const metodo   = document.querySelector('[name=metodo_amortizacion]').value;
  const base     = coste - residual;
  let cuota      = vida ? base / vida : 0;
  const txt      = cuota.toFixed(2).replace('.', ',') + ' €/año';
  document.getElementById('cuota-preview').textContent = txt + (metodo === 'acelerado' ? ' (1er año, decrece)' : '');
}
calcPreview();
</script>
{% endblock %}
