{% extends "base.html" %} {% block title %}Conturi clienti — Gateway RAR AUTOPASS{% endblock %} {% block content %} {# Metadate verbe de ciclu de viata (eticheta, ruta, clasa). #} {% set VERBS = { 'activate': ('Activeaza', '/admin/activate', ''), 'block': ('Blocheaza', '/admin/block', ''), 'archive': ('Arhiveaza', '/admin/archive', ''), 'delete': ('Sterge', '/admin/delete', 'danger') } %} {# Tier-uri selectabile in panou (cod, eticheta). Aliniat cu app/plans.py#PLANS. #} {% set TIERS = [('free', 'Gratuit'), ('standard', 'Standard'), ('pro', 'Pro'), ('premium', 'Premium')] %} {% macro lifecycle_block(title, rows, block_id, bulk_verbs, row_verbs) %}

{{ title }} ({{ rows|length }})

{% if rows %} {# Bara bulk: form propriu (id=bulk-); checkbox-urile randurilor se leaga prin atributul HTML5 form= (fara form-uri imbricate). Ascunsa pana exista o selectie (JS). #}
{% for acct in rows %} {% endfor %}
IDCompanieCUIEmailPlan curentPlan cerutStareInregistratActiuni
{{ acct.id }} {{ acct.name }} {{ acct.cui or "—" }} {{ acct.email or "—" }} {# Plan EFECTIV acum (prominent): trial Pro activ ridica free->pro. #}
{{ acct.tier_efectiv_label }} {% if acct.trial_activ %} trial{% if acct.trial_zile %} · {{ acct.trial_zile }} {{ 'zi' if acct.trial_zile == 1 else 'zile' }} ramase{% endif %} → apoi {{ acct.tier_label }} {% endif %}
{# Schimbare plan inline: select tier de baza + Aplica. Form propriu (nu imbricat in bulk-form). Aplica INCHEIE trial-ul si seteaza planul ales ca real, cu efect imediat. #}
{# Acorda/prelungeste trial Pro de N zile, fara a schimba tier-ul de baza. #}
{{ acct.requested_plan_label }} {{ acct.status }} {{ acct.created_at or "—" }}
{% for v in row_verbs %} {% set label, action, cls = VERBS[v] %} {# Confirm fara nume interpolat: un apostrof in numele firmei (free-form) ar rupe string-ul JS din atributul inline (entitatea ' e decodata inainte de parse). #}
{% if v == 'activate' and not acct.is_complete %} {% else %} {% endif %}
{% endfor %}
{% else %}

Niciun cont.

{% endif %}
{% endmacro %}

Conturi clienti

Inapoi la dashboard
{% if error %} {% endif %} {{ lifecycle_block("Conturi in asteptare", pending, "pending", ['activate', 'block', 'archive', 'delete'], ['activate', 'block', 'archive', 'delete']) }} {{ lifecycle_block("Conturi active", active, "active", ['block', 'archive', 'delete'], ['block', 'archive', 'delete']) }} {# Conturi suspendate (blocate/arhivate): reactivare sau stergere. Stare reala in pill. #} {{ lifecycle_block("Conturi blocate / arhivate", suspended, "suspended", ['activate', 'delete'], ['activate', 'delete']) }} {% endblock %}