Files
cantarire-etichetare/cantarire/templates/recipes/list.html
T
ske087 bff6d70b17 Initial commit: aplicatie de cantarire si etichetare
Aplicatie Flask + SQLite pentru productie alimentara: cantarirea
componentelor unui produs finit si tiparirea etichetei prin QZ Tray.

- produse finite (retete) formate din componente cantarite
- designer vizual de etichete (mm/px, zona sigura, campuri variabile,
  cod QR cu continut din mai multe bucati)
- legare produs finit -> sablon de eticheta
- navigare pe doua taburi: Cantarire / Setari
- administrare: componente, produse finite, sabloane, campuri, istoric
- backup, resetare baza de date, checklist de pregatire, /healthz
- CLI de administrare si serviciu systemd pentru productie
- vendor/syncpulse-scale-bridge (GPL-3.0-or-later) pentru citirea cantarului
2026-10-18 23:38:45 +03:00

52 lines
2.0 KiB
HTML

{% extends "base.html" %}
{% block title %}Produse finite{% endblock %}
{% block content %}
<section class="page-head">
<div>
<h1>Produse finite</h1>
<p class="subtitle">Rețetele care se cântăresc și se etichetează.</p>
</div>
<a class="btn primary" href="{{ url_for('recipes.create') }}">+ Produs finit</a>
</section>
<section class="card">
{% if recipes %}
<div class="table-wrap">
<table class="table">
<thead>
<tr><th>Cod</th><th>Denumire</th><th class="num">Componente</th><th class="num">Țintă</th><th>Etichetă</th><th>Stare</th><th></th></tr>
</thead>
<tbody>
{% for r in recipes %}
<tr class="{{ 'row-muted' if not r.active }}">
<td><code>{{ r.code }}</code></td>
<td>{{ r.name }}</td>
<td class="num">{{ r.component_count }}</td>
<td class="num">{{ (r.target_weight|weight ~ ' ' ~ r.unit) if r.target_weight else "—" }}</td>
<td>
{% if r.template_name %}{{ r.template_name }}
{% else %}<span class="muted">implicit</span>{% endif %}
</td>
<td>
{% if r.active %}<span class="badge ok">activ</span>
{% else %}<span class="badge off">inactiv</span>{% endif %}
</td>
<td class="right nowrap">
<a class="link" href="{{ url_for('recipes.edit', recipe_id=r.id) }}">Editează</a>
<form class="inline" method="post" action="{{ url_for('recipes.remove', recipe_id=r.id) }}"
onsubmit="return confirm('Ștergi produsul finit {{ r.code }}? Dacă are pachete în istoric, va fi doar dezactivat.');">
<button class="link danger" type="submit">Șterge</button>
</form>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% else %}
<p class="muted">Nu există produse finite. <a href="{{ url_for('recipes.create') }}">Creează primul</a>.</p>
{% endif %}
</section>
{% endblock %}