GESTIONALE DOGRE - DEFINIZIONE AGEVOLATA
Pacchetto completo, pronto all'uso              -  22 settembre 2026 (agg.)
========================================================================

Dentro c'e' TUTTO: il programma, il database con i vostri dati gia'
riallineati e la configurazione. Si scompatta e funziona.


------------------------------------------------------------------------
ACCESSO

  Password (uguale per tutti):  Prospetto-permanente-9184!

  admin         supervisore   amministratore dell'installazione
  supervisore   supervisore   tutto, piu' la sezione Amministrazione
  operatore     operatore     pratiche, incassi, piani
  lettura       sola lettura  consulta e basta

  CAMBIATELA. Da riga di comando, dentro la cartella del programma:
    C:\xampp\php\php.exe api\setup.php --reset-users "la-vostra-password"


------------------------------------------------------------------------
INSTALLAZIONE IN LOCALE (XAMPP)

  1. Scompattate questo archivio dentro la cartella htdocs di XAMPP.
     Deve risultare:  C:\xampp\htdocs\gestionale-dogre\
  2. Avviate APACHE dal pannello di XAMPP. MySQL non serve.
  3. Aprite:  http://localhost/gestionale-dogre/


------------------------------------------------------------------------
INSTALLAZIONE SUL SERVER (FTP)   ***  LEGGETE QUESTO  ***

  Caricate la cartella gestionale-dogre sul server.

  ATTENZIONE, e' l'errore che vi ha buttati fuori l'ultima volta:

    NON usate la modalita' "sincronizza" o "mirror" del client FTP
    (FileZilla, WinSCP). Quella modalita' CANCELLA sul server i file
    che non ci sono nell'origine: cancella data/dogre.db, e con lui
    spariscono utenti e dati. Il programma se ne crea uno nuovo e
    vuoto, e da quel momento nessuna password funziona piu'.

  Usate un caricamento normale, in SOVRASCRITTURA.
  Caricate data/dogre.db in modalita' BINARIA.

  Se sul server, accanto al database, trovate dogre.db-wal o
  dogre.db-shm, cancellateli: appartengono al database vecchio.

  VERIFICA: a caricamento finito, data/dogre.db sul server deve pesare
  circa 15,5 MB (16.211.968 byte). Se pesa circa 192 KB e' quello vuoto,
  e il caricamento non ha funzionato.

  QUANDO IN FUTURO VI MANDO SOLO IL PROGRAMMA: si carica SOPRA, e la
  cartella data/ NON si tocca. Li' dentro ci sono il vostro database e
  gli allegati delle pratiche. data/ non si sovrascrive e non si
  sincronizza, mai.


------------------------------------------------------------------------
NOVITA' DI QUESTA VERSIONE: DOVE SI SPEDISCE

  L'indirizzo dell'anagrafica dice dove STA il contribuente. Per
  notificare serve l'altra cosa: dove ARRIVA la raccomandata. E le due
  non coincidono - un condominio si notifica presso l'amministratore,
  una societa' puo' avere la sede altrove.

  Il programma ora legge dalla vostra banca dati anche:

    - il RECAPITO DI SPEDIZIONE, con il nome del destinatario
      ("CONDOMINIO X C/O AMM.RE Y"), indirizzo, interno, scala, piano
      e PEC propria.               787 contribuenti ce l'hanno.
    - il RAPPRESENTANTE LEGALE, con nome, codice fiscale e PEC.
                                  2.145 contribuenti ce l'hanno.
    - scala, piano e INTERNO dell'indirizzo di residenza.

  Quando c'e' il recapito di spedizione, e' QUELLO a valere: e' li' che
  avete sempre spedito. Se il contribuente non ha una PEC propria si usa
  quella del rappresentante.

  Nel PIANO DI NOTIFICA (CSV) ci sono due colonne nuove: DESTINATARIO
  (il nome da mettere sulla busta) e RECAPITO, che dice se sta usando
  "Spedizione" o "Residenza". Sull'annualita' in scadenza sono 550
  posizioni su 5.162 che vanno a un indirizzo diverso da quello
  anagrafico: prima quelle buste sarebbero partite verso il posto
  sbagliato.

  (Dopo la pulizia delle righe di troppo - vedi qui sotto - il piano
  diventa 304 su 3.161.)

  Lo vedete nella scheda del contribuente, riquadro "Dove si spedisce",
  e lo correggete dalla stessa finestra di "Modifica anagrafica".

  NOTIFICA TENTATA E NON RIUSCITA: 230 posizioni portano ora la nota.
  Non sono "ancora da spedire", sono "tornate indietro" e vanno
  rinotificate. Il termine di decadenza intanto corre uguale.


------------------------------------------------------------------------
UNA COSA DA DECIDERE: 4.619 RIGHE DI TROPPO

  Il trasferimento non cancella mai niente: e' la regola che protegge il
  vostro lavoro. Ma la lettura della banca dati e' stata corretta in un
  punto - le annualita' BIA gia' riprese da un avviso di accertamento,
  che il lettore vecchio contava DUE VOLTE - e quelle righe sono rimaste
  in archivio dal trasferimento precedente.

  Sono 4.619 righe per EUR 1.006.545,65. Finche' ci sono, il prospetto
  e' gonfiato di quella cifra.

  Non le ho cancellate io: cancellare dati dal vostro archivio e' una
  vostra decisione. C'e' uno strumento che le mostra e, se volete, le
  toglie:

    php strumenti\righe-superate.php                  elenca e basta
    php strumenti\righe-superate.php --csv elenco.csv salva il dettaglio
    php strumenti\righe-superate.php --elimina        cancella

  Senza --elimina non tocca niente. Cancella solo le righe che nessuno
  ha toccato: niente righe corrette a mano, niente righe in pratica.
  Serve che la copia del .FDB sia in data\banca-dati\.

  Prima di --elimina: copiate data\dogre.db da qualche parte.


------------------------------------------------------------------------
COSA C'E' DENTRO

  35.034 anagrafiche  (787 con recapito di spedizione,
                       2.145 con rappresentante legale)
  21.874 posizioni debitorie, per EUR 22.728.594,79 di residuo

  Di quelle, 4.619 righe per EUR 1.006.545,65 sono superate (vedi il
  capitolo qui sopra). Togliendole - ed e' una decisione vostra - si
  arriva ai numeri giusti:

  17.255 posizioni per EUR 21.722.049,14
         in scadenza al 31/12/2026: 3.161 posizioni, EUR 5.949.463,98

  Ho provato la pulizia su una copia: toglie esattamente quelle 4.619 e
  i totali tornano a questi.

  Aprite la voce di menu CONTRIBUENTI: c'e' tutto li'.


------------------------------------------------------------------------
IL PIANO DI NOTIFICA

  Nel PROSPETTO, vista "Per posizione".

  Pulsante "Piano di notifica (CSV)": scarica TUTTE le posizioni del
  filtro - non le trecento a schermo - con termine di decadenza, giorni
  che mancano, che cosa manca, destinatario, recapito, PEC, indirizzo
  postale, rappresentante legale, dovuto e residuo. Ordinato per
  annualita'.

  Registrazione in blocco: si spuntano le righe notificate, si scrive la
  data e gli estremi dell'atto, e si preme "Registra la notifica". Fino
  a 2.000 per volta. Da li' quelle posizioni non portano piu' scadenza e
  partono i 60 giorni per il ricorso.

  Il programma NON SPEDISCE NIENTE: registra che la notifica c'e' stata.


------------------------------------------------------------------------
L'ASSISTENTE NELLA GUIDA

  In cima alla voce GUIDA c'e' "Chiedi all'assistente": si scrive la
  domanda in italiano e risponde. Sa il manuale del programma, i numeri
  aggiornati dell'archivio e anche i singoli contribuenti:

    Quanto deve il contribuente 209?
    Cerca BNCLCN59P54E506O
    Quanto deve Bianco Luciana?
    Quanto residuo scade il 31 dicembre?
    Quante rate posso concedere su un accertamento da 12.000 euro?

  COME FA A RISPONDERE SUI CONTRIBUENTI SENZA MANDARE I DATI FUORI.
  Quando la domanda riguarda una persona, il modello dice soltanto CHE
  COSA cercare; a cercarlo e a scrivere la risposta e' il programma, che
  legge l'archivio qui dentro. Nomi, codici fiscali, indirizzi e importi
  non escono mai verso il servizio di intelligenza artificiale. Sotto
  quelle risposte, al posto del nome del modello, c'e' scritto "letto
  dall'archivio del programma".

  Se nella domanda c'e' gia' un codice fiscale, una partita IVA o
  "contribuente 209", il modello non viene nemmeno interpellato: la
  risposta arriva in cinquanta millisecondi, e arriva anche quando i
  modelli gratuiti sono tutti occupati.

  CORRETTO IN QUESTA VERSIONE: l'assistente poteva restare fermo su "Sto
  guardando". Il tempo era un limite per modello e non complessivo:
  sette modelli per novanta secondi fanno dieci minuti e mezzo di
  attesa. Ora il budget e' di 45 secondi in tutto, e se il server non
  riesce a uscire su Internet lo dice invece di restare appeso.

  Le risposte che scrive il modello sono un aiuto, non una fonte. Su
  termini, importi e decadenze la parola definitiva ce l'hanno la
  schermata e il regolamento.

  IL FILE api\config.local.php CONTIENE LA CHIAVE OPENROUTER.
  Non pubblicate questo archivio: chi ha il file ha la chiave. E quella
  chiave e' passata in chiaro dentro una chat, quindi consideratela
  esposta: su openrouter.ai/keys si revoca e se ne fa un'altra in trenta
  secondi, basta sostituire 'apiKey' nel file.


------------------------------------------------------------------------
DUE COSE DA SISTEMARE QUANDO ENTRATE

  1. L'ENTE DELLA CONVENZIONE risulta "Comune di Lecce". Se la
     convenzione e' quella di Montesilvano si cambia in
     AMMINISTRAZIONE -> Convenzione. E' un'etichetta, ma finisce sulle
     lettere e sulle ricevute.

  2. Nelle pratiche ce n'e' una di prova, "prova prova"
     (protocollo DA-2026-000001). Cancellatela quando volete.


------------------------------------------------------------------------
TRE COSE SU CUI ASPETTO UNA VOSTRA RISPOSTA

  Sono emerse dalla verifica della banca dati e sono decisioni di
  merito, non di codice. Finche' non mi dite, il programma non le tocca.

  1. SITUAZIONE sugli accertamenti: 146 avvisi con codice 4, 48 con 33,
     8 con 10, 5 con 21, 2 con 15. Che cosa vogliono dire? Se uno di
     quei codici significa "annullato", quegli avvisi non vanno definiti.

  2. IMPORTORIDOTTO: su 150 avvisi e' diverso da IMPORTO (EUR
     1.126.163,75 di residuo). Il programma prende IMPORTO. Che cos'e'
     quella riduzione?

  3. ACCONTO: 24 avvisi ce l'hanno valorizzato (EUR 430.231 di residuo)
     e il residuo da versare NON lo sottrae. Su alcune righe l'acconto
     e' piu' grande dell'importo stesso, quindi non e' detto che sia un
     pagamento su quell'avviso.


------------------------------------------------------------------------
REQUISITI

  PHP 8.0 o superiore, con pdo_sqlite e mbstring.
  Apache con mod_rewrite. MySQL non serve.
  La cartella data/ deve essere scrivibile dal server web.
  Per l'assistente serve che il server esca su Internet in HTTPS verso
  openrouter.ai. Se non puo', il resto funziona lo stesso: il riquadro
  semplicemente non compare.
  Per righe-superate.php serve l'estensione PDO_Firebird e la copia del
  .FDB in data/banca-dati/.
