{{ errore }}
{% endif %}
{% if gesan_precedente or arca_precedente %}
È presente un'elaborazione precedente, non ancora confermata in questa sessione
-
{% if gesan_precedente %}
- Gesan: Anagrafica.txt e ImportCompleto.txt pronti da un avvio precedente ({{ file_pronti_dettaglio.anagrafica.modificato }}). {% endif %} {% if arca_precedente %}
- Arca Evolution: {{ n_dotes_esistenti }} testata/e già scritte nel file ponte, non ancora controllate in questa sessione. {% endif %}
Vuoi iniziare una nuova elaborazione (azzera tutte le spunte e i file pronti) oppure riprendere quella precedente (lascia tutto com'è, così com'era)? Scegline una per continuare.
{% call toggle_card('import_gesan', 'blue', 'Import', 'Prelievo da Esolver e anteprima normalizzata', indicatore_esito(step1_confermato, true)) %}{{ badge('blue', '⇩') }}{% endcall %}
{% call toggle_card('controlli_gesan', 'blue', 'Controlli & Verifiche', 'Anomalie sui dati letti dal file movimenti', indicatore_esito(risultato, risultato.tutto_ok if risultato else true)) %}{{ badge('blue', '✓') }}{% endcall %}
{{ cerchio_passo(1, step1_confermato) }}
Prelievo file da Esolver
{{ settings.esolver_dir }}
{% if esito_azzeramento %}
Elaborazione precedente azzerata ({{ esito_azzeramento.n }} file rimossi). Pronto per un nuovo prelievo da Esolver.
{% endif %}
{{ monitor_esolver() }}
{% if riepilogo %}
{% if riepilogo.errore %}
{{ riepilogo.errore }}
{% else %}
{{ riepilogo.numero_file_esolver }} file trovati in Esolver.
-
{% for op in riepilogo.operazioni %}
- {{ op }} {% endfor %}
Ignorati (nome senza "Anagrafica"/"MovCont"): {{ riepilogo.file_ignorati|join(', ') }}
{% endif %}
Verifica integrità riuscita: ogni file di Esolver ha una copia identica in Gesan.
{% else %}
Verifica integrità fallita: dimensione dei file non corrispondente tra Esolver e Gesan.
Per sicurezza nessuna cartella viene ripulita: controlla a mano prima di riprovare.
{% endif %}
{% endif %}
{% endif %}
{% if esito_pulizia %}
{% if esito_pulizia.ok %}
Gesan ripulita ({{ esito_pulizia.n_gesan }} file rimossi).
{% if esito_pulizia.esolver_svuotata %}Esolver ripulita ({{ esito_pulizia.n_esolver }} file rimossi).
{% else %}Esolver lasciata invariata su richiesta.{% endif %}
{% else %}
La verifica non è più valida (i file in Gesan sono cambiati): nessuna pulizia effettuata, riprova il prelievo.
{% endif %}
{% endif %}
{{ cerchio_passo(2, risultato) }}
Anteprima normalizzata
{{ settings.target_dir }}
{% for chiave, etichetta in [('anagrafica', 'Anagrafica.txt'), ('movcont', 'ImportCompleto.txt')] %}
{% set info = file_pronti_dettaglio[chiave] %}
{% if info %}
{{ spunta() }}
{% else %}
{% endif %}
{{ etichetta }}
{% if info %}
{{ "%.1f"|format(info.dimensione / 1024) }} KB · {{ info.modificato }}
{% else %}
non ancora prelevato
{% endif %}
{% endfor %}
{% if not r.arca_disponibile %}
{% if r.righe_malformate %}
{% endif %}
{% if r.righe_orfane %}
{% endif %}
{% if r.anagrafiche_mancanti_dettaglio %}
{% endif %}
{% if r.codici_fiscali_incoerenti %}
{% endif %}
Connessione ad Arca non configurata: il confronto "cliente già presente" non è disponibile, tutte le anagrafiche sono mostrate come nuove.
{% endif %}
Anagrafiche
{{ r.totale_anagrafiche }}
{{ r.nuovi_clienti_reali }} nuovi clienti reali · {{ r.nuove_anagrafiche - r.nuovi_clienti_reali }} solo su CCORRI
Documenti
{{ r.totale_documenti }}
di cui {{ r.documenti_fatture }} fatture (FTV) · {{ r.documenti_ricevute }} ricevute (FTR)
{% if r.righe_orfane %}{{ r.righe_orfane|length }} righe orfane{% endif %}
Totale importo
€ {{ r.totale_importo|euro }}
Anomalie
{{ r.documenti_con_anomalie }}
Bollo
€ {{ r.totale_bollo|euro }}
{% if r.documenti_bollo_mancante %}
{{ r.documenti_bollo_mancante }} document{{ 'o' if r.documenti_bollo_mancante == 1 else 'i' }} senza bollo dovuto
{% else %}
nessun bollo mancante
{% endif %}
{{ r.righe_malformate|length }} riga/e con meno campi del previsto (probabile riga troncata)
-
{% for m in r.righe_malformate %}
- Riga {{ m.riga_txt }}{% if m.tipo %} ({{ m.tipo }}){% endif %}: {{ m.campi_trovati }} campi trovati, ne servono almeno {{ m.campi_attesi }} {% endfor %}
{{ r.righe_orfane|length }} riga/e RIG senza una testata TES corrispondente
Righe file: {{ r.righe_orfane|map(attribute='riga_txt')|join(', ') }}. Controlla che il file MovCont non sia troncato.
| Cod. esterno | N. documenti | Documenti coinvolti |
|---|---|---|
| {{ m.codice_cliente_esterno }} | {{ m.numero_documenti }} | {{ m.documenti_label }} |
{{ r.codici_fiscali_incoerenti }} documento/i con codice fiscale diverso da quello registrato in anagrafica per lo stesso codice cliente — vedi il badge "CF incoerente" nella tabella Documenti.
{% endif %}
{% if r.documenti_duplicati %}
{{ r.documenti_duplicati }} numero/i documento ripetuto — vedi il badge "duplicato" nella tabella Documenti.
{% endif %}
{% if r.documenti_bollo_mancante %}
{{ r.documenti_bollo_mancante }} documento/i senza il bollo da 2 € pur avendo un imponibile (al netto del bollo stesso) superiore a 77,47 € — vedi il badge "bollo mancante" nella tabella Documenti.
{% endif %}
{% set rc = r.riepilogo_cassa %}
Riepilogo cassa — tentativo
Ricostruito dai soli dati del file movimenti: manca la suddivisione per Unità Operativa (non è nel
tracciato) e, sul registro Ricevute, Ticket e Quota risultano accorpati in un'unica riga anziché separati
come nel riepilogo di Web Hospital. Sul registro Fatture i totali coincidono esattamente col PDF.
| Tipo | N. doc. | Incasso | Imponibile | Bollo | IVA |
|---|---|---|---|---|---|
| {{ b.etichetta }} ({{ b.registro }}) | {{ b.n_documenti }} | {{ b.totale_incasso|euro }} | {{ b.totale_imponibile|euro }} | {{ b.totale_bollo|euro }} | {{ b.totale_iva|euro }} |
| Totale | {{ rc.totale_generale.n_documenti }} | {{ rc.totale_generale.totale_incasso|euro }} | {{ rc.totale_generale.totale_imponibile|euro }} | {{ rc.totale_generale.totale_bollo|euro }} | {{ rc.totale_generale.totale_iva|euro }} |
| Codice | Descrizione | Occ. | Qtà | Importo |
|---|---|---|---|---|
| {{ p.codice }} | {{ p.descrizione }} | {{ p.occorrenze }} | {{ p.quantita }} | {{ p.importo|euro }} |
| Cod. esterno | Nominativo | Codice fiscale | Comune | Stato | Documento | Codice Arca | |
|---|---|---|---|---|---|---|---|
| {% if doppio %} {% endif %} | {{ a.codice_cliente_esterno }} | {{ a.nome_completo }} | {{ a.codice_fiscale or "—" }} | {{ a.comune }} {{ a.provincia }} | {% if a.gia_in_arca %}già in Arca ({{ a.cd_cf_arca }}) {% else %}nuovo cliente{% endif %} {% if a.codice_duplicato %}codice duplicato{% endif %} {% if a.codice_fiscale_malformato %}CF formato non valido{% endif %} | {% if a.tipo_documento_batch == "fattura" %}Fattura {% elif a.tipo_documento_batch == "ricevuta" %}Ricevuta {% elif doppio %}FatturaRicevuta {% else %}—{% endif %} | {% if doppio %} due codici diversi — vedi dettaglio {% elif a.codice_arca_previsto == "CCORRI" %} CCORRI {% elif a.codice_arca_previsto == "nuovo codice" %} nuovo codice {% elif a.codice_arca_riservato %} {{ a.codice_arca_previsto }} riservato {% else %} {{ a.codice_arca_previsto or "—" }} {% endif %} |
|
Fattura
codice Arca:
{% if a.codice_arca_fattura == "nuovo codice" %}nuovo codice
{% elif a.codice_arca_riservato %}{{ a.codice_arca_fattura }} riservato
{% else %}{{ a.codice_arca_fattura or "—" }}{% endif %}
Ricevuta
codice Arca:
{{ a.codice_arca_ricevuta }}
|
|||||||
| Reg. | Progressivo | Data | Cliente | Pagamento | Incasso | Importo righe | Anomalie/Bolli | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ tes.tipo_documento }} {% if tes.tipo_documento == '703' %}F {% elif tes.tipo_documento == '701' %}R{% endif %} | {{ tes.progressivo }} | {{ tes.data_documento.strftime("%d/%m/%Y") if tes.data_documento else "—" }} | {{ tes.codice_cliente_esterno }} | {{ tes.codice_pagamento or "—" }} {% if tes.pagamento_descrizione %}{{ tes.pagamento_descrizione }}{% endif %} | {{ tes.somma_incasso|euro }} | {{ d.totale_righe|euro }} {{ d.righe|length }} {{ 'riga' if d.righe|length == 1 else 'righe' }} | {% if d.scostamento %}importo non torna{% endif %} {% if d.anagrafica_mancante %}anagrafica mancante{% endif %} {% if d.codice_fiscale_incoerente %}CF incoerente{% endif %} {% if d.documento_duplicato %}duplicato{% endif %} {% if d.senza_righe %}senza righe{% endif %} {% if d.bollo_mancante %}bollo mancante{% endif %} {% if d.ha_bollo %}bollo 2 €{% endif %} | |||||||||||||
|
||||||||||||||||||||
{% set fatture_errore = esito_import_fatture and esito_import_fatture.errore %}
{% set ricevute_errore = esito_import_ricevute and esito_import_ricevute.errore %}
{% set fatture_fatto = fatture_importate or (esito_import_fatture and not esito_import_fatture.errore) %}
{% set ricevute_fatto = ricevute_importate or (esito_import_ricevute and not esito_import_ricevute.errore) %}
{% endif %}
{% endfor %}
{% if esito_verifica %}
{% set ev = esito_verifica %}
{% if ev.n_dotes == 0 %}
{% set dr = ev.dorig %}
{% set dr_bloccante = dr.codice_cliente_non_valido or dr.articoli_non_trovati or dr.iva_non_coerente %}
{% set ds = ev.dorigspesa %}
{% endif %}
{% endif %}
{% endif %}
{% call toggle_card('import_arca', 'amber', 'Import', 'Scrittura nel file Access ponte (Fatture/Ricevute)', mini_badge('F', 'Fatture', fatture_fatto, fatture_errore) + mini_badge('R', 'Ricevute', ricevute_fatto, ricevute_errore)) %}{{ badge('amber', '⇩') }}{% endcall %}
{% call toggle_card('controlli_arca', 'amber', 'Controlli & Verifiche', 'DOTes, DORig, DORigSpesa confrontati con Arca', indicatore_esito(esito_verifica, esito_verifica.tutto_ok if esito_verifica else true)) %}{{ badge('amber', '✓') }}{% endcall %}
3. Scrivi nel file Access
{{ settings.arca_bridge_accdb }}
Controlla prima l'anteprima di Gesan: questo passo scrive davvero nel file Access ponte.
Esegui sempre "Importa Fatture" prima di "Importa Ricevute" sullo stesso batch (le ricevute si
accodano sopra, le fatture azzerano e ripartono da zero).
{% if fatture_errore %}✗ ultimo tentativo fallito
{% elif fatture_fatto %}✓ già fatto per questo batch{% endif %}
{% if ricevute_errore %}✗ ultimo tentativo fallito
{% elif ricevute_fatto %}✓ già fatto per questo batch{% endif %}
{% for etichetta, esito in [("Fatture", esito_import_fatture), ("Ricevute", esito_import_ricevute)] %}
{% if esito %}
Import {{ etichetta }} {% if esito.errore %}fallito{% else %}completato{% endif %}
{% if esito.errore %}Passo:
{% endif %}
{{ esito.passo_fallito or "?" }} — {{ esito.errore }}-
{% for passo in esito.passi_eseguiti %}
- {{ passo }} {% endfor %}
{{ esito.nuovi_clienti|length }} anagrafiche codificate, ultimo codice:
{% endif %}
{{ esito.ultimo_codice_cliente }}
{% set riusati = esito.nuovi_clienti|selectattr('riusato_dal_registro')|list %}
{% if riusati %}
{{ riusati|length }} codici riusati dal registro locale (gia' assegnati in un batch precedente non ancora in Arca):
{{ riusati|map(attribute='codice_cliente')|join(', ') }}
{% endif %}
4. Verifica dati scritti
DOTes / DORig / DORigSpesa in {{ settings.arca_bridge_accdb }}
Legge quello che c'è ora nel file Access ponte e lo confronta con Arca (sola lettura): non serve aver
appena eseguito l'import in questa stessa sessione — si può ricontrollare in qualsiasi momento, anche
dopo aver sistemato qualcosa in Arca.
Nessun documento scritto ancora in DOTes: esegui prima "Importa Fatture"/"Importa Ricevute".
{% else %}
{% if not ev.arca_disponibile %}
Connessione ad Arca non configurata: i confronti con Arca (duplicati, articoli, aliquote) non sono
disponibili, solo il controllo sul formato dei codici cliente.
{% endif %}
{% set dt = ev.dotes %}
{% if not dt.codice_cliente_non_valido and not dt.possibili_duplicati %}
{% endif %}
{% if dt.possibili_duplicati %}
{% endif %}
Nessuna anomalia: codici cliente coerenti, nessun documento risulta già in Arca.
{% endif %}
{% if dt.codice_cliente_non_valido %}
{{ dt.codice_cliente_non_valido|length }} testata/e con codice cliente non valido
Il codice non inizia per "C": il cliente non è stato risolto contro Arca, oppure la sua anagrafica non era nel file Anagrafica.txt di questo batch.
-
{% for r in dt.codice_cliente_non_valido %}
- Id_DoTes {{ r.Id_DoTes }} — {{ r.Cd_Do }} {{ r.NumeroDoc }} — Cd_CF: {{ r.Cd_CF }} {% endfor %}
{{ dt.possibili_duplicati|length }} documento/i probabilmente già presente/i in Arca
Stesso Cd_Do, divisione, numero documento, data ed esercizio già trovati nella tabella DOTes reale di Arca.
-
{% for r in dt.possibili_duplicati %}
- {{ r.Cd_Do }} {{ r.NumeroDoc }} del {{ r.DataDoc }} — Cd_CN {{ r.Cd_CN }} — Cd_CF {{ r.Cd_CF }} {% endfor %}
{% if not dr.codice_cliente_non_valido and not dr.articoli_non_trovati and not dr.iva_non_coerente %}
{% endif %}
{% if dr.articoli_non_trovati %}
{% endif %}
{% if dr.articoli_senza_conto %}
{% endif %}
{% if dr.iva_non_coerente %}
{% endif %}
Nessuna anomalia bloccante: codici cliente coerenti, articoli e aliquote riconosciuti da Arca.
{% endif %}
{% if dr.codice_cliente_non_valido %}
{{ dr.codice_cliente_non_valido|length }} riga/e con codice cliente non valido
-
{% for r in dr.codice_cliente_non_valido %}
- Id_DORig {{ r.Id_DORig }} — {{ r.NumeroDoc }} — Cd_CF: {{ r.Cd_CF }} {% endfor %}
{{ dr.articoli_non_trovati|length }} articolo/i non trovato/i in Arca
Verranno importati comunque con la descrizione del file, ma senza un conto di contabilità corretto (si userà il conto generico) — meglio censirli in Arca prima di fare l'Import Documenti.
| Codice | Descrizione | Occ. |
|---|---|---|
| {{ a.codice }} | {{ a.descrizione }} | {{ a.occorrenze }} |
{{ dr.articoli_senza_conto|length }} articolo/i trovato/i in Arca ma senza conto di contabilità configurato
Il codice esiste in Arca (AR) ma senza Cd_CGConto_VI: verrà usato il conto generico di fallback invece di quello specifico dell'articolo.
| Codice | Descrizione | Occ. |
|---|---|---|
| {{ a.codice }} | {{ a.descrizione }} | {{ a.occorrenze }} |
{{ dr.iva_non_coerente|length }} codice/i IVA non trovato/i in Arca
-
{% for i in dr.iva_non_coerente %}
- {{ i.codice }} — {{ i.occorrenze }} riga/e {% endfor %}
{{ ds.documenti_bollo_elettronico }} documento/i con bollo in DORigSpesa (fattura, potenzialmente elettronica) ·
{{ ds.documenti_bollo_non_elettronico }} documento/i con bollo rimasto in DORig (ricevuta, non elettronica).
{% if ds.documenti_incoerenti %}
{{ ds.documenti_incoerenti|length }} documento/i con bollo sia in DORigSpesa sia in DORig
Non dovrebbe succedere: Id_DoTes {{ ds.documenti_incoerenti|join(', ') }}.
| Reg. | Numero | Data | Cliente | Pagamento | Totale | Anomalie/Bolli | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ t.cd_do }} {% if t.cd_do == 'FTV' %}F {% elif t.cd_do == 'FTR' %}R{% endif %} | {{ t.numero_doc }} | {{ t.data_doc_fmt }} | {{ t.cd_cf }} | {{ t.codice_pagamento or "—" }} {% if t.pagamento_descrizione %}{{ t.pagamento_descrizione }}{% endif %} | {{ d.totale|euro }} {{ d.righe|length }} {{ 'riga' if d.righe|length == 1 else 'righe' }} | {% if d.codice_cliente_non_valido %}cliente non valido{% endif %} {% if d.articolo_problema %}articolo/conto da controllare{% endif %} {% if d.iva_problema %}IVA non riconosciuta{% endif %} {% if d.duplicato %}già in Arca{% endif %} {% if d.ha_bollo %}bollo{% endif %} | |||||||||||||||
|
|||||||||||||||||||||
Esegui tutto il flusso in automatico
Prelievo da Esolver → Anteprima → Importa Fatture → Importa Ricevute → Verifica, tutto in un solo
passaggio, senza fermarsi a chiedere conferma ad ogni singolo step. Si ferma comunque subito al primo
passo che fallisce senza proseguire sui successivi, e non svuota mai da sola la cartella di rete Esolver
(solo quella di lavoro Gesan, e solo se il prelievo risulta integro) — quella parte resta un passo
manuale, dalla sezione Gesan.
{{ monitor_esolver() }}
{% if diretta %}
{% if riepilogo and not riepilogo.errore %}
{% endif %}
Prelievo completato: {{ riepilogo.numero_file_esolver }} file trovati in Esolver.
{% if esito_pulizia and esito_pulizia.ok %}Cartella Gesan ripulita ({{ esito_pulizia.n_gesan }} file).{% endif %}
{% endif %}
{% if risultato %}
Anteprima Gesan: {{ risultato.totale_anagrafiche }} anagrafiche, {{ risultato.totale_documenti }} documenti, {{ risultato.documenti_con_anomalie }} anomalia/e.
{% endif %}
{% if esito_import_fatture and not esito_import_fatture.errore %}
Importa Fatture completato.
{% endif %}
{% if esito_import_ricevute and not esito_import_ricevute.errore %}
Importa Ricevute completato.
{% endif %}
{% if esito_verifica %}
Verifica completata: DOTes {{ esito_verifica.n_dotes }} testate, DORig {{ esito_verifica.dorig.n_righe }} righe, DORigSpesa {{ esito_verifica.dorigspesa.n_righe }} righe.
{% endif %}
Azzeramento Dati
Svuota le tabelle di lavoro del file ponte, per ripartire da zero
Operazione irreversibile: cancella ogni dato del batch corrente non ancora importato in Arca (e i due file di lavoro Anagrafica.txt/ImportCompleto.txt). Non tocca il database live di Arca Evolution.
Tabelle svuotate ({{ tabelle_azzerabili|length }})
{% for t in tabelle_azzerabili %}
{{ t }}
{% endfor %}
Mai toccate
-
{% for nome, motivo in tabelle_escluse %}
- {{ nome }} — {{ motivo }} {% endfor %}
{% if esito_azzeramento_dati.errore %}
Azzeramento interrotto{% if esito_azzeramento_dati.tabella_fallita %} su "{{ esito_azzeramento_dati.tabella_fallita }}"{% endif %}: {{ esito_azzeramento_dati.errore }}
{% if esito_azzeramento_dati.tabelle %}
{% endif %}
Svuotate prima dell'errore: {{ esito_azzeramento_dati.tabelle|join(', ') }}
{% endif %}
{% else %}
Fatto: {{ esito_azzeramento_dati.tabelle|length }} tabelle svuotate, {{ esito_azzeramento_dati.n_file }} file di lavoro eliminati.
{% endif %}
Manuale d'uso
Come si usa il programma, sezione per sezione
Cosa fa ogni pulsante in Gesan, Arca Evolution, Importazione Diretta e in questa stessa sezione Strumenti — con la legenda di icone e badge.
Apri il manuale
Si apre in una nuova scheda — resta disponibile anche offline, salvato dentro il progetto.
Manuale di installazione
Guida passo-passo per il setup su un nuovo cliente Windows
Prerequisiti software (con link diretti agli installer), cosa includere/escludere nel pacchetto da trasferire, configurazione del driver ODBC/DSN per Arca Evolution, file
Apri il manuale
.env e processo di aggiornamento per un PC fuori rete.
Si apre in una nuova scheda — resta disponibile anche offline, salvato dentro il progetto.