Rework the demo into a faithful Mago4 look-and-feel and expand it with core ERP modules modelled on the real Mago4 database schema. UI (ispirata a Mago4): - Blue header with logo/search/operation date, desktop-style window tabs - White sidebar with coloured module icons (Anagrafiche, Vendite, Acquisti, Amministrazione, Logistica) - Card-based module landing pages with breadcrumb + tab strip - Document detail forms with left tabs, line grid and totals box Fatturazione (InvoiceMng / MA_SaleDoc): - Document types (Fattura Immediata, DDT, Nota di Credito, ProForma) - Lines with discount/IVA, automatic taxable/tax/total computation - Document states (draft -> printed -> issued / posted_to_inventory) Magazzino (Inventory / MA_InventoryEntries + MA_InventoryReasons): - Inventory movements with load/unload reasons (DebitCreditSign) - Posting a movement actually updates item balances - Causali and stock valuation pages Amministrazione / Scadenzario (AP_AR / MA_PyblsRcvbls): - Open items (receivables/payables) with due date, method, state - Settle action closes the item and recomputes the cash forecast Dashboard riprogettata (focus su scadenze e to-do): - Overdue alert banner, KPI for overdue payables/receivables - Upcoming deadlines table, prioritised "Cose da fare" action list - 30-day cash-flow forecast and customer credit-limit check Adds REST endpoints for invoices, movements, schedules and dashboard data. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
56 lines
3.2 KiB
HTML
56 lines
3.2 KiB
HTML
{% extends "base.html" %}
|
||
{% block title %}Movimenti di Magazzino - Mago4 Demo{% endblock %}
|
||
{% block window_tabs %}<a href="/inventory-movements" class="window-tab active"><i class="material-icons">swap_vert</i> Movimenti</a>{% endblock %}
|
||
|
||
{% block content %}
|
||
<div class="module-bar">
|
||
<div class="module-title">Movimenti di Magazzino</div>
|
||
<div class="breadcrumb"><a href="/">Mago4</a><span class="sep">»</span><a href="/magazzino">Logistica</a><span class="sep">»</span><span class="current">Movimenti</span></div>
|
||
</div>
|
||
<div class="tab-strip">
|
||
<a href="/magazzino">Magazzino</a>
|
||
<a href="/inventory-movements" class="active">Movimenti</a>
|
||
<a href="/warehouse">Giacenze</a>
|
||
<a href="/inventory-reasons">Causali</a>
|
||
</div>
|
||
|
||
<div class="doc-toolbar">
|
||
<button class="tb-btn" title="Nuovo movimento" onclick="alert('Nuovo movimento (demo)')"><i class="material-icons">add_box</i></button>
|
||
<button class="tb-btn" title="Cerca"><i class="material-icons">search</i></button>
|
||
<div class="tb-sep"></div>
|
||
<button class="tb-btn" title="Stampa giornale"><i class="material-icons">print</i></button>
|
||
</div>
|
||
|
||
<div class="content-pad">
|
||
<div class="alert alert-info"><i class="material-icons">info</i> I movimenti <b>confermati</b> aggiornano le giacenze secondo il segno della causale (carico +, scarico −).</div>
|
||
|
||
<div class="panel">
|
||
<div class="panel-header"><h3><i class="material-icons">swap_vert</i> Elenco Movimenti</h3></div>
|
||
<table class="data-table">
|
||
<thead><tr><th>Data Reg.</th><th>Numero</th><th>Causale</th><th class="text-center">Segno</th><th>Cliente/Fornitore</th><th class="text-center">Deposito</th><th class="text-right">Valore</th><th class="text-center">Stato</th><th></th></tr></thead>
|
||
<tbody>
|
||
{% for m in movements %}
|
||
<tr class="row-link" onclick="location.href='/inventory-movements/{{ m.id }}'">
|
||
<td>{{ m.posting_date.strftime("%d/%m/%Y") }}</td>
|
||
<td class="text-bold mono">{{ m.doc_no }}</td>
|
||
<td><span class="mono">{{ m.reason_code }}</span> — {{ m.reason_description }}</td>
|
||
<td class="text-center">
|
||
{% if m.sign.value == 'load' %}<span class="badge badge-load"><i class="material-icons">add</i> Carico</span>
|
||
{% else %}<span class="badge badge-unload"><i class="material-icons">remove</i> Scarico</span>{% endif %}
|
||
</td>
|
||
<td>{{ m.custsupp_name or '—' }}</td>
|
||
<td class="text-center">{{ m.storage }}</td>
|
||
<td class="text-right">€ {{ "%.2f"|format(m.total_amount) }}</td>
|
||
<td class="text-center">
|
||
{% if m.posted %}<span class="badge badge-success"><i class="material-icons">check</i> Confermato</span>
|
||
{% else %}<span class="badge badge-grey">Bozza</span>{% endif %}
|
||
</td>
|
||
<td class="text-center"><i class="material-icons text-blue" style="font-size:17px;">chevron_right</i></td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
{% endblock %}
|