Verbale di istruttoria
Rendicontazione bando
Pratica n. {{ practice.application_id }}{% if max_tranches_snapshot > 1 or practice.sequence_number > 1 %} — Tranche {{ practice.sequence_number }}/{{ max_tranches_snapshot }}{% endif %}
{% if practice.period_label %}
{{ practice.period_label }}
{% endif %}
Finanziaria regionale dell'Umbria
Verbale di istruttoria — Rendicontazione
{% if practice.status == 'APPROVED' %}
ESITO: APPROVATA
{% elif practice.status == 'REJECTED' %}
ESITO: RESPINTA
{% elif practice.status == 'AWAITING_AMENDMENT' %}
SOCCORSO ISTRUTTORIO IN CORSO
{% else %}
IN ISTRUTTORIA
{% endif %}
Dati pratica
{# ============ FATTURE ============ #}
Verifica fatture
{% if practice.invoices %}
{% set use_taxable = totals.use_taxable_only is not sameas false %}
| N° |
Data |
Fornitore / Descrizione |
{{ 'Imponibile' if use_taxable else 'Totale' }} dichiarato |
{{ 'Imponibile' if use_taxable else 'Totale' }} ammesso |
Stato |
Motivazione istruttore |
{% for cat_code, items in invoices_by_cat.items() %}
{% set cat_label = categories_map.get(cat_code, cat_code) %}
{% set cat_decl = per_cat_declared.get(cat_code, 0) %}
{% set cat_verif = per_cat_verified.get(cat_code, 0) %}
{% for inv in items %}
{% set cls = 'rejected' if inv.verification_status == 'RESPINTA' else ('partial' if inv.verification_status == 'PARZIALE' else '') %}
{% set declared = inv.taxable if use_taxable else inv.total %}
{% if inv.verification_status == 'PENDING' %}
{% set verified_val = None %}
{% elif inv.verification_status == 'RESPINTA' %}
{% set verified_val = 0 %}
{% elif use_taxable %}
{% set verified_val = inv.taxable_verified if inv.taxable_verified is not none else declared %}
{% else %}
{% set verified_val = inv.total_verified if inv.total_verified is not none else declared %}
{% endif %}
| {{ inv.invoice_number }} |
{{ inv.invoice_date|datefmt }} |
{{ inv.supplier_name }}
{{ inv.description|truncate(80) }}
|
{{ declared|euro }} |
{{ verified_val|euro if verified_val is not none else '—' }} |
{{ inv.verification_status }} |
{{ inv.verification_notes or '—' }} |
{% endfor %}
{% endfor %}
| Totale complessivo |
{{ totals.grand_total_declared|euro }} |
{{ totals.grand_total_verified|euro }} |
|
{% else %}
Nessuna fattura rendicontata.
{% endif %}
{# ============ ULA ============ #}
{% if ula_section_enabled and practice.ula_employees %}
Verifica dipendenti ULA
Soglia incremento richiesta: ≥ {{ '%.2f'|format(ula_threshold) }} · FTE dichiarato: {{ '%.2f'|format(ula_fte_decl) }} · FTE ammesso: {{ '%.2f'|format(ula_fte_verif) }}
| CF |
Dipendente |
Contratto |
Periodo |
FTE dich. |
FTE amm. |
Stato |
Note |
{% for emp in practice.ula_employees %}
{% set cls = 'rejected' if emp.verification_status == 'RESPINTA' else ('partial' if emp.verification_status == 'PARZIALE' else '') %}
{% set fte_verif = emp.fte_pct_verified if emp.fte_pct_verified is not none else emp.fte_pct %}
| {{ emp.codice_fiscale }} |
{{ emp.full_name }} |
{{ contract_labels.get(emp.contract_type, emp.contract_type) }} |
{{ emp.period_start_date|datefmt }} → {{ emp.period_end_date|datefmt }} |
{{ '%.2f'|format(emp.fte_pct|float) }} |
{% if emp.verification_status == 'PENDING' %}—
{% elif emp.verification_status == 'RESPINTA' %}0.00
{% else %}{{ '%.2f'|format(fte_verif|float) }}
{% endif %}
|
{{ emp.verification_status }} |
{{ emp.verification_notes|default('—') }} |
{% endfor %}
{% endif %}
{# ============ DOCUMENTI ============ #}
Verifica documenti
{% if docs_required %}
| Documento |
File allegato |
Esito |
Note istruttore |
{% for dr in docs_required %}
{% set doc = docs_by_code.get(dr.code, {}) %}
{% set stat = doc.verification_status or 'PENDING' %}
{% set cls = 'rejected' if stat in ('NON_VALIDO', 'SCADUTO') else '' %}
{{ dr.label }} {{ dr.code }} |
{% if doc.filename %}{{ doc.filename }}
{% else %}non caricato
{% endif %}
|
{{ stat }} |
{{ doc.verification_notes|default('—') }} |
{% endfor %}
{% else %}
Nessun documento richiesto dallo schema del bando.
{% endif %}
{# ============ CONTROLLI AGGIUNTIVI ============ #}
{% if custom_checks_merged %}
Controlli aggiuntivi (dichiarazioni beneficiario)
| Controllo |
Obbligatorio |
Dichiarato |
Doc. allegato |
Validazione |
Note istruttore |
{% for cc in custom_checks_merged %}
{% set stat = cc.verification_status or 'PENDING' %}
{% set cls = 'rejected' if stat == 'NON_VALIDO' else '' %}
{% set missing = cc.required and not cc.beneficiary_declared %}
{{ cc.label or cc.code }}
{% if cc.description %} {{ cc.description|truncate(180) }}{% endif %}
|
{% if cc.required %}SÌ{% else %}opzionale{% endif %} |
{% if cc.beneficiary_declared %}SÌ{% else %}NO{% endif %} |
{% if cc.requires_document %}
{% if cc.has_document %}SÌ{% else %}NO{% endif %}
{% else %}non richiesto{% endif %}
|
{{ stat }} |
{{ cc.verification_notes or '—' }} |
{% endfor %}
{% endif %}
{# ============ SOCCORSI ============ #}
{% if amendments %}
Soccorso istruttorio
{% for a in amendments %}
{{ a.status|amendstatus }}
· deadline {{ a.deadline|datefmt }}
· aperto il {{ a.created_at|datetimefmt }}
{% if a.closed_at %} · chiuso il {{ a.closed_at|datetimefmt }}{% endif %}
Richiesta istruttore:
{{ a.request_text }}
{% if a.response_text %}
Risposta beneficiario ({{ a.response_at|datetimefmt }}):
{{ a.response_text }}
{% endif %}
{% endfor %}
{% endif %}
{# ============ STORICO TRANCHES PRECEDENTI ============ #}
{% if previous_tranches %}
Storico tranches precedenti
| # |
Periodo / fase |
Data approvazione |
Importo ammesso |
Cumulativo |
{% for t in previous_tranches %}
| T{{ t.sequence_number }} |
{{ t.period_label or '—' }} |
{{ t.reviewed_at|datefmt }} |
{{ t.approved_remission|euro }} |
{{ t.cumulative|euro }} |
{% endfor %}
{% endif %}
{# ============ 5 VOCI UFFICIALI CECILIA ============ #}
Riepilogo finanziario (cap tranche {{ practice.sequence_number }})
(1) Importo massimo ammissibile (cap globale)
{{ totals.max_remission_global|euro }}
{% if totals.already_approved_previous_tranches > 0 %}
già approvato nelle tranche precedenti
− {{ totals.already_approved_previous_tranches|euro }}
max. disponibile per questa tranche
= {{ totals.max_remission_this_tranche|euro }}
{% endif %}
(4) Importo finanziamento erogato
{{ totals.amount_erogato|euro }}
tranches complessive
{{ totals.tranches_count }} / {{ totals.tranches_max }}
(2) Richiesto pre-controllo (ammissibile)
{{ totals.pre_check_admissible|euro }}
dichiarato tranche
{{ totals.grand_total_declared|euro }}
(3) Ammesso post-controllo istruttore
{{ totals.remission_due|euro }}
{% if totals.any_verified %}
verificato tranche
{{ totals.grand_total_verified|euro }}
{% else %}
in attesa di verifica istruttore
{% endif %}
(5) Residuo da restituire
{{ totals.residuo_da_restituire|euro }}
= erogato − approvato precedente − ammesso tranche
{% if practice.status == 'APPROVED' %}
REMISSIONE APPROVATA PER QUESTA TRANCHE
{{ practice.approved_remission|euro }}
{% endif %}
{# ============ CHECKLIST + NOTE ============ #}
{% set checklist = practice.instructor_checklist or {} %}
{% if checklist %}
Checklist finale istruttore
- Documentazione completa e coerente: {{ 'SÌ' if checklist.get('domanda_completa') else 'NO' }}
- Incremento ULA > 1 verificato: {{ 'SÌ' if checklist.get('ula_ok') else 'NO' }}
- Importo erogato entro il range bando: {{ 'SÌ' if checklist.get('erogato_in_range') else 'NO' }}
{% endif %}
{% if practice.instructor_final_notes %}
Note sintetiche di istruttoria
{{ practice.instructor_final_notes }}
{% endif %}
{% if practice.rejection_reason %}
Motivazione del rigetto
{{ practice.rejection_reason }}
{% endif %}
{# ============ FIRMA ============ #}
LUOGO E DATA
Perugia, {{ generated_at }}
ISTRUTTORE
{{ instructor_name or '(firma)' }}
Firma