Compare commits

..

4 commits

Author SHA1 Message Date
d588e31095 Auto-sync: 20260503_230000 2026-05-03 23:00:02 +02:00
15d0d4c5aa Auto-sync: 20260503_220000 2026-05-03 22:00:03 +02:00
9fce927738 Auto-sync: 20260502_120000 2026-05-02 12:00:02 +02:00
40e7870b56 Auto-sync: 20260502_110001 2026-05-02 11:00:03 +02:00
21 changed files with 690 additions and 554 deletions

Binary file not shown.

Binary file not shown.

BIN
.DS_Store vendored

Binary file not shown.

View file

@ -2,88 +2,88 @@ class CaiMapping {
static const Map<String, String> testi = { static const Map<String, String> testi = {
// HEADER // HEADER
'data_incidente': 'data_sinistro', 'dataIncidente': 'data_sinistro',
'ora': 'ora', 'ora': 'ora',
'luogo': 'luogo_sinistro', 'luogo': 'luogo_sinistro',
'testimoni': 'testimoni1', 'testimoni': 'testimoni1',
// VEICOLO A // VEICOLO A
'Cognome_contraente_A': 'cognome_contraenteA', 'cognomeContraenteA': 'cognome_contraenteA',
'Nome_contraente_A': 'nome_contraenteA', 'nomeContraenteA': 'nome_contraenteA',
'Codice_Fiscale_contraente_A': 'codice_fiscale_contrA', 'codiceFiscaleContraenteA': 'codice_fiscale_contrA',
'Indirizzo_contraente_A': 'indirizzo_contrA', 'indirizzoContraenteA': 'indirizzo_contrA',
'CAP_contraente_A': 'cap_contrA', 'capContraenteA': 'cap_contrA',
'Stato_contraente_A': 'stato_contrA', 'statoContraenteA': 'stato_contrA',
'N_telefono_mail_contraente_A': 'tel_contrA', 'nTelefonoMailContraenteA': 'tel_contrA',
'Marca_e_Tipo_A': 'marcaA', 'marcaETipoA': 'marcaA',
'Targa_A': 'targa_veicoloA', 'targaA': 'targa_veicoloA',
'Stato_immatricolazione_A': 'stato_im_veicoloA', 'statoImmatricolazioneA': 'stato_im_veicoloA',
'Rimorchio_A': 'targa_rimorchioA', 'rimorchioA': 'targa_rimorchioA',
'Stato_immatricolazione2_A': 'stato_im_rimorchioA', 'statoImmatricolazione2A': 'stato_im_rimorchioA',
'Denominazione_A': 'COMPAGNIA', 'denominazioneA': 'COMPAGNIA',
'Numero_Polizza_A': 'numero_polizzaA', 'numeroPolizzaA': 'numero_polizzaA',
'N_carta_verde_A': 'CVA', 'nCartaVerdeA': 'CVA',
'Data_Inizio_Dal_A': 'ass_dalA', 'dataInizioDalA': 'ass_dalA',
'Data_Scadenza_Al_A': 'ass_alA', 'dataScadenzaAlA': 'ass_alA',
'Agenzia_A': 'AGENZIA_A', 'agenziaA': 'AGENZIA_A',
'Denominazione_agenzia_A': 'denom_A', 'denominazioneAgenziaA': 'denom_A',
'Indirizzo_agenzia_A': 'ind_ag_A', 'indirizzoAgenziaA': 'ind_ag_A',
'Stato_agenzia_A': 'ag_stat_A', 'statoAgenziaA': 'ag_stat_A',
'N_tel_mail_agenzia_A': 'tel_ag_A', 'nTelMailAgenziaA': 'tel_ag_A',
'Cognome_cond_A': 'cogn_cond_A', 'cognomeCondA': 'cogn_cond_A',
'Nome_cond_A': 'nome_cond_A', 'nomeCondA': 'nome_cond_A',
'Data_nascita_cond_A': 'dnascita_condA', 'dataNascitaCondA': 'dnascita_condA',
'Cod_fiscale_cond_A': 'codice_fiscale_conduA', 'codFiscaleCondA': 'codice_fiscale_conduA',
'Indirizzo_cond_A': 'indir_conduA', 'indirizzoCondA': 'indir_conduA',
'Stato_cond_A': 'stato_conduA', 'statoCondA': 'stato_conduA',
'N_tel_mail_cond_A': 'tel_conduA', 'nTelMailCondA': 'tel_conduA',
'N_Patente_cond_A': 'n_p_conduA', 'nPatenteCondA': 'n_p_conduA',
'Scadenza_cond_A': 'condu_scad_A', 'scadenzaCondA': 'condu_scad_A',
// --- AGGIUNTO CATEGORIA A --- // --- AGGIUNTO CATEGORIA A ---
'Categoria_cond_A': 'cat_A', // <--- VERIFICA QUESTO NOME NEL PDF (es. cat_A, catA, CategA...) 'categoriaCondA': 'cat_A', // <--- VERIFICA QUESTO NOME NEL PDF (es. cat_A, catA, CategA...)
'danni_visibili_A': 'danni_vis_A1', 'danniVisibiliA': 'danni_vis_A1',
'osservazioni_A': 'osservazioniA', 'osservazioniA': 'osservazioniA',
// VEICOLO B // VEICOLO B
'Cognome_contraente_B': 'cognome_contraenteB', 'cognomeContraenteB': 'cognome_contraenteB',
'Nome_contraente_B': 'nome_contraenteB', 'nomeContraenteB': 'nome_contraenteB',
'Codice_Fiscale_contraente_B': 'codice_fiscale_contrB', 'codiceFiscaleContraenteB': 'codice_fiscale_contrB',
'Indirizzo_contraente_B': 'indirizzo_contrB', 'indirizzoContraenteB': 'indirizzo_contrB',
'CAP_contraente_B': 'cap_contrB', 'capContraenteB': 'cap_contrB',
'Stato_contraente_B': 'stato_contrB', 'statoContraenteB': 'stato_contrB',
'N_telefono_mail_contraente_B': 'tel_contrB', 'nTelefonoMailContraenteB': 'tel_contrB',
'Marca_e_Tipo_B': 'marcaB', 'marcaETipoB': 'marcaB',
'Targa_B': 'targa_veicoloB', 'targaB': 'targa_veicoloB',
'Stato_immatricolazione_B': 'stato_im_veicoloB', 'statoImmatricolazioneB': 'stato_im_veicoloB',
'Rimorchio_B': 'targa_rimorchioB', 'rimorchioB': 'targa_rimorchioB',
'Stato_immatricolazione2_B': 'stato_im_rimorchioB', 'statoImmatricolazione2B': 'stato_im_rimorchioB',
'Denominazione_B': 'compagnia1', 'denominazioneB': 'compagnia1',
'Numero_Polizza_B': 'numero_polizzaB', 'numeroPolizzaB': 'numero_polizzaB',
'N_carta_verde_B': 'CVB', 'nCartaVerdeB': 'CVB',
'Data_Inizio_Dal_B': 'ass_dalB', 'dataInizioDalB': 'ass_dalB',
'Data_Scadenza_Al_B': 'ass_alB', 'dataScadenzaAlB': 'ass_alB',
'Agenzia_B': 'AGENZIA_B', 'agenziaB': 'AGENZIA_B',
'Denominazione_agenzia_B': 'denom_B', 'denominazioneAgenziaB': 'denom_B',
'Indirizzo_agenzia_B': 'ind_ag_B', 'indirizzoAgenziaB': 'ind_ag_B',
'Stato_agenzia_B': 'ag_stat_B', 'statoAgenziaB': 'ag_stat_B',
'N_tel_mail_agenzia_B': 'tel_ag_B', 'nTelMailAgenziaB': 'tel_ag_B',
'Cognome_cond_B': 'cogn_cond_B', 'cognomeCondB': 'cogn_cond_B',
'Nome_cond_B': 'nome_cond_B', 'nomeCondB': 'nome_cond_B',
'Data_nascita_cond_B': 'dnascita_condB', 'dataNascitaCondB': 'dnascita_condB',
'Cod_fiscale_cond_B': 'codice_fiscale_conduB', 'codFiscaleCondB': 'codice_fiscale_conduB',
'Indirizzo_cond_B': 'indir_conduB', 'indirizzoCondB': 'indir_conduB',
'Stato_cond_B': 'stato_conduB', 'statoCondB': 'stato_conduB',
'N_tel_mail_cond_B': 'tel_conduB', 'nTelMailCondB': 'tel_conduB',
'N_Patente_cond_B': 'n_p_conduB', 'nPatenteCondB': 'n_p_conduB',
'Scadenza_cond_B': 'condu_scad_B', 'scadenzaCondB': 'condu_scad_B',
// --- AGGIUNTO CATEGORIA B --- // --- AGGIUNTO CATEGORIA B ---
'Categoria_cond_B': 'cat_B', // <--- VERIFICA QUESTO NOME NEL PDF 'categoriaCondB': 'cat_B', // <--- VERIFICA QUESTO NOME NEL PDF
'danni_visibili_B': 'danni_vis_B1', 'danniVisibiliB': 'danni_vis_B1',
'osservazioni_B': 'osservazioniB', 'osservazioniB': 'osservazioniB',
}; };
// CHECKBOX // CHECKBOX

View file

@ -18,13 +18,13 @@ class CidDataManager {
return { return {
'lato': lato, 'lato': lato,
'generali': { 'generali': {
'data': GlobalData.data_incidente, 'data': GlobalData.dataIncidente,
'ora': GlobalData.ora, 'ora': GlobalData.ora,
'luogo': GlobalData.luogo, 'luogo': GlobalData.luogo,
'feriti': GlobalData.feriti, 'feriti': GlobalData.feriti,
'testimoni': GlobalData.testimoni, 'testimoni': GlobalData.testimoni,
'danni_materiali': GlobalData.Veicoli_danni_materiali_oltre, 'danni_materiali': GlobalData.veicoliDanniMaterialiOltre,
'oggetti_diversi': GlobalData.Oggetti_diversi_danni_materiali, 'oggetti_diversi': GlobalData.oggettiDiversiDanniMateriali,
}, },
'circostanze': _serializeCircostanze(lato == 'A' ? GlobalData.circostanzeA : GlobalData.circostanzeB), 'circostanze': _serializeCircostanze(lato == 'A' ? GlobalData.circostanzeA : GlobalData.circostanzeB),
@ -40,49 +40,51 @@ class CidDataManager {
'firma': _serializePunti(lato == 'A' ? GlobalData.puntiFirmaA : GlobalData.puntiFirmaB), 'firma': _serializePunti(lato == 'A' ? GlobalData.puntiFirmaA : GlobalData.puntiFirmaB),
'contraente': { 'contraente': {
'cognome': val(GlobalData.Cognome_contraente_A, GlobalData.Cognome_contraente_B, lato), 'cognome': val(GlobalData.cognomeContraenteA, GlobalData.cognomeContraenteB, lato),
'nome': val(GlobalData.Nome_contraente_A, GlobalData.Nome_contraente_B, lato), 'nome': val(GlobalData.nomeContraenteA, GlobalData.nomeContraenteB, lato),
'cf': val(GlobalData.Codice_Fiscale_contraente_A, GlobalData.Codice_Fiscale_contraente_B, lato), 'cf': val(GlobalData.codiceFiscaleContraenteA, GlobalData.codiceFiscaleContraenteB, lato),
'indirizzo': val(GlobalData.Indirizzo_contraente_A, GlobalData.Indirizzo_contraente_B, lato), 'indirizzo': val(GlobalData.indirizzoContraenteA, GlobalData.indirizzoContraenteB, lato),
'cap': val(GlobalData.CAP_contraente_A, GlobalData.CAP_contraente_B, lato), 'cap': val(GlobalData.capContraenteA, GlobalData.capContraenteB, lato),
'stato': val(GlobalData.Stato_contraente_A, GlobalData.Stato_contraente_B, lato), 'stato': val(GlobalData.statoContraenteA, GlobalData.statoContraenteB, lato),
'tel': val(GlobalData.N_telefono_mail_contraente_A, GlobalData.N_telefono_mail_contraente_B, lato), 'tel': val(GlobalData.nTelefonoMailContraenteA, GlobalData.nTelefonoMailContraenteB, lato),
'email': val(GlobalData.emailContraenteA, GlobalData.emailContraenteB, lato),
}, },
'veicolo': { 'veicolo': {
'marca': val(GlobalData.Marca_e_Tipo_A, GlobalData.Marca_e_Tipo_B, lato), 'marca': val(GlobalData.marcaETipoA, GlobalData.marcaETipoB, lato),
'targa': val(GlobalData.Targa_A, GlobalData.Targa_B, lato), 'targa': val(GlobalData.targaA, GlobalData.targaB, lato),
'stato_imm': val(GlobalData.Stato_immatricolazione_A, GlobalData.Stato_immatricolazione_B, lato), 'stato_imm': val(GlobalData.statoImmatricolazioneA, GlobalData.statoImmatricolazioneB, lato),
'stato_imm2': val(GlobalData.Stato_immatricolazione2_A, GlobalData.Stato_immatricolazione2_B, lato), 'stato_imm2': val(GlobalData.statoImmatricolazione2A, GlobalData.statoImmatricolazione2B, lato),
'rimorchio': val(GlobalData.Rimorchio_A, GlobalData.Rimorchio_B, lato), 'rimorchio': val(GlobalData.rimorchioA, GlobalData.rimorchioB, lato),
}, },
'assicurazione': { 'assicurazione': {
'denominazione': val(GlobalData.Denominazione_A, GlobalData.Denominazione_B, lato), 'denominazione': val(GlobalData.denominazioneA, GlobalData.denominazioneB, lato),
'polizza': val(GlobalData.Numero_Polizza_A, GlobalData.Numero_Polizza_B, lato), 'polizza': val(GlobalData.numeroPolizzaA, GlobalData.numeroPolizzaB, lato),
'agenzia': val(GlobalData.Agenzia_A, GlobalData.Agenzia_B, lato), 'agenzia': val(GlobalData.agenziaA, GlobalData.agenziaB, lato),
'denom_agenzia': val(GlobalData.Denominazione_agenzia_A, GlobalData.Denominazione_agenzia_B, lato), 'denom_agenzia': val(GlobalData.denominazioneAgenziaA, GlobalData.denominazioneAgenziaB, lato),
'indirizzo_agenzia': val(GlobalData.Indirizzo_agenzia_A, GlobalData.Indirizzo_agenzia_B, lato), 'indirizzo_agenzia': val(GlobalData.indirizzoAgenziaA, GlobalData.indirizzoAgenziaB, lato),
'stato_agenzia': val(GlobalData.Stato_agenzia_A, GlobalData.Stato_agenzia_B, lato), 'stato_agenzia': val(GlobalData.statoAgenziaA, GlobalData.statoAgenziaB, lato),
'tel_agenzia': val(GlobalData.N_tel_mail_agenzia_A, GlobalData.N_tel_mail_agenzia_B, lato), 'tel_agenzia': val(GlobalData.nTelMailAgenziaA, GlobalData.nTelMailAgenziaB, lato),
'carta_verde': val(GlobalData.N_carta_verde_A, GlobalData.N_carta_verde_B, lato), 'carta_verde': val(GlobalData.nCartaVerdeA, GlobalData.nCartaVerdeB, lato),
'validita_dal': val(GlobalData.Data_Inizio_Dal_A, GlobalData.Data_Inizio_Dal_B, lato), 'validita_dal': val(GlobalData.dataInizioDalA, GlobalData.dataInizioDalB, lato),
'validita_al': val(GlobalData.Data_Scadenza_Al_A, GlobalData.Data_Scadenza_Al_B, lato), 'validita_al': val(GlobalData.dataScadenzaAlA, GlobalData.dataScadenzaAlB, lato),
'flag_danni': valB(GlobalData.FLAG_danni_mat_assicurati_A, GlobalData.FLAG_danni_mat_assicurati_B, lato), 'flag_danni': valB(GlobalData.flagDanniMatAssicuratiA, GlobalData.flagDanniMatAssicuratiB, lato),
}, },
'conducente': { 'conducente': {
'cognome': val(GlobalData.Cognome_cond_A, GlobalData.Cognome_cond_B, lato), 'cognome': val(GlobalData.cognomeCondA, GlobalData.cognomeCondB, lato),
'nome': val(GlobalData.Nome_cond_A, GlobalData.Nome_cond_B, lato), 'nome': val(GlobalData.nomeCondA, GlobalData.nomeCondB, lato),
'nascita': val(GlobalData.Data_nascita_cond_A, GlobalData.Data_nascita_cond_B, lato), 'nascita': val(GlobalData.dataNascitaCondA, GlobalData.dataNascitaCondB, lato),
'cf': val(GlobalData.Cod_fiscale_cond_A, GlobalData.Cod_fiscale_cond_B, lato), 'cf': val(GlobalData.codFiscaleCondA, GlobalData.codFiscaleCondB, lato),
'indirizzo': val(GlobalData.Indirizzo_cond_A, GlobalData.Indirizzo_cond_B, lato), 'indirizzo': val(GlobalData.indirizzoCondA, GlobalData.indirizzoCondB, lato),
'stato': val(GlobalData.Stato_cond_A, GlobalData.Stato_cond_B, lato), 'stato': val(GlobalData.statoCondA, GlobalData.statoCondB, lato),
'tel': val(GlobalData.N_tel_mail_cond_A, GlobalData.N_tel_mail_cond_B, lato), 'tel': val(GlobalData.nTelMailCondA, GlobalData.nTelMailCondB, lato),
'patente': val(GlobalData.N_Patente_cond_A, GlobalData.N_Patente_cond_B, lato), 'email': val(GlobalData.emailCondA, GlobalData.emailCondB, lato),
'cat_patente': val(GlobalData.Categoria_cond_A, GlobalData.Categoria_cond_B, lato), 'patente': val(GlobalData.nPatenteCondA, GlobalData.nPatenteCondB, lato),
'scad_patente': val(GlobalData.Scadenza_cond_A, GlobalData.Scadenza_cond_B, lato), 'cat_patente': val(GlobalData.categoriaCondA, GlobalData.categoriaCondB, lato),
'scad_patente': val(GlobalData.scadenzaCondA, GlobalData.scadenzaCondB, lato),
}, },
'danni_osservazioni': { 'danni_osservazioni': {
'visibili': val(GlobalData.danni_visibili_A, GlobalData.danni_visibili_B, lato), 'visibili': val(GlobalData.danniVisibiliA, GlobalData.danniVisibiliB, lato),
'osservazioni': val(GlobalData.osservazioni_A, GlobalData.osservazioni_B, lato), 'osservazioni': val(GlobalData.osservazioniA, GlobalData.osservazioniB, lato),
} }
}; };
} }
@ -93,13 +95,13 @@ class CidDataManager {
// 1. Dati Comuni // 1. Dati Comuni
if (data['generali'] != null) { if (data['generali'] != null) {
var gen = data['generali']; var gen = data['generali'];
if ((gen['data'] ?? "").isNotEmpty) GlobalData.data_incidente = gen['data']; if ((gen['data'] ?? "").isNotEmpty) GlobalData.dataIncidente = gen['data'];
if ((gen['ora'] ?? "").isNotEmpty) GlobalData.ora = gen['ora']; if ((gen['ora'] ?? "").isNotEmpty) GlobalData.ora = gen['ora'];
if ((gen['luogo'] ?? "").isNotEmpty) GlobalData.luogo = gen['luogo']; if ((gen['luogo'] ?? "").isNotEmpty) GlobalData.luogo = gen['luogo'];
if (gen['feriti'] != null) GlobalData.feriti = gen['feriti']; if (gen['feriti'] != null) GlobalData.feriti = gen['feriti'];
if (gen['testimoni'] != null) GlobalData.testimoni = gen['testimoni']; if (gen['testimoni'] != null) GlobalData.testimoni = gen['testimoni'];
if (gen['danni_materiali'] != null) GlobalData.Veicoli_danni_materiali_oltre = gen['danni_materiali']; if (gen['danni_materiali'] != null) GlobalData.veicoliDanniMaterialiOltre = gen['danni_materiali'];
if (gen['oggetti_diversi'] != null) GlobalData.Oggetti_diversi_danni_materiali = gen['oggetti_diversi']; if (gen['oggetti_diversi'] != null) GlobalData.oggettiDiversiDanniMateriali = gen['oggetti_diversi'];
} }
// --- PROTEZIONE GRAFICO (CASSETTO 1) --- // --- PROTEZIONE GRAFICO (CASSETTO 1) ---
@ -156,57 +158,59 @@ class CidDataManager {
if (data['contraente'] != null) { if (data['contraente'] != null) {
var c = data['contraente']; var c = data['contraente'];
setVal((v) => GlobalData.Cognome_contraente_A = v, (v) => GlobalData.Cognome_contraente_B = v, c['cognome']); setVal((v) => GlobalData.cognomeContraenteA = v, (v) => GlobalData.cognomeContraenteB = v, c['cognome']);
setVal((v) => GlobalData.Nome_contraente_A = v, (v) => GlobalData.Nome_contraente_B = v, c['nome']); setVal((v) => GlobalData.nomeContraenteA = v, (v) => GlobalData.nomeContraenteB = v, c['nome']);
setVal((v) => GlobalData.Codice_Fiscale_contraente_A = v, (v) => GlobalData.Codice_Fiscale_contraente_B = v, c['cf']); setVal((v) => GlobalData.codiceFiscaleContraenteA = v, (v) => GlobalData.codiceFiscaleContraenteB = v, c['cf']);
setVal((v) => GlobalData.Indirizzo_contraente_A = v, (v) => GlobalData.Indirizzo_contraente_B = v, c['indirizzo']); setVal((v) => GlobalData.indirizzoContraenteA = v, (v) => GlobalData.indirizzoContraenteB = v, c['indirizzo']);
setVal((v) => GlobalData.CAP_contraente_A = v, (v) => GlobalData.CAP_contraente_B = v, c['cap']); setVal((v) => GlobalData.capContraenteA = v, (v) => GlobalData.capContraenteB = v, c['cap']);
setVal((v) => GlobalData.Stato_contraente_A = v, (v) => GlobalData.Stato_contraente_B = v, c['stato']); setVal((v) => GlobalData.statoContraenteA = v, (v) => GlobalData.statoContraenteB = v, c['stato']);
setVal((v) => GlobalData.N_telefono_mail_contraente_A = v, (v) => GlobalData.N_telefono_mail_contraente_B = v, c['tel']); setVal((v) => GlobalData.nTelefonoMailContraenteA = v, (v) => GlobalData.nTelefonoMailContraenteB = v, c['tel']);
setVal((v) => GlobalData.emailContraenteA = v, (v) => GlobalData.emailContraenteB = v, c['email']);
} }
if (data['veicolo'] != null) { if (data['veicolo'] != null) {
var v = data['veicolo']; var v = data['veicolo'];
setVal((v) => GlobalData.Marca_e_Tipo_A = v, (v) => GlobalData.Marca_e_Tipo_B = v, v['marca']); setVal((v) => GlobalData.marcaETipoA = v, (v) => GlobalData.marcaETipoB = v, v['marca']);
setVal((v) => GlobalData.Targa_A = v, (v) => GlobalData.Targa_B = v, v['targa']); setVal((v) => GlobalData.targaA = v, (v) => GlobalData.targaB = v, v['targa']);
setVal((v) => GlobalData.Stato_immatricolazione_A = v, (v) => GlobalData.Stato_immatricolazione_B = v, v['stato_imm']); setVal((v) => GlobalData.statoImmatricolazioneA = v, (v) => GlobalData.statoImmatricolazioneB = v, v['stato_imm']);
setVal((v) => GlobalData.Stato_immatricolazione2_A = v, (v) => GlobalData.Stato_immatricolazione2_B = v, v['stato_imm2']); setVal((v) => GlobalData.statoImmatricolazione2A = v, (v) => GlobalData.statoImmatricolazione2B = v, v['stato_imm2']);
setVal((v) => GlobalData.Rimorchio_A = v, (v) => GlobalData.Rimorchio_B = v, v['rimorchio']); setVal((v) => GlobalData.rimorchioA = v, (v) => GlobalData.rimorchioB = v, v['rimorchio']);
} }
if (data['assicurazione'] != null) { if (data['assicurazione'] != null) {
var a = data['assicurazione']; var a = data['assicurazione'];
setVal((v) => GlobalData.Denominazione_A = v, (v) => GlobalData.Denominazione_B = v, a['denominazione']); setVal((v) => GlobalData.denominazioneA = v, (v) => GlobalData.denominazioneB = v, a['denominazione']);
setVal((v) => GlobalData.Numero_Polizza_A = v, (v) => GlobalData.Numero_Polizza_B = v, a['polizza']); setVal((v) => GlobalData.numeroPolizzaA = v, (v) => GlobalData.numeroPolizzaB = v, a['polizza']);
setVal((v) => GlobalData.Agenzia_A = v, (v) => GlobalData.Agenzia_B = v, a['agenzia']); setVal((v) => GlobalData.agenziaA = v, (v) => GlobalData.agenziaB = v, a['agenzia']);
setVal((v) => GlobalData.Denominazione_agenzia_A = v, (v) => GlobalData.Denominazione_agenzia_B = v, a['denom_agenzia']); setVal((v) => GlobalData.denominazioneAgenziaA = v, (v) => GlobalData.denominazioneAgenziaB = v, a['denom_agenzia']);
setVal((v) => GlobalData.Indirizzo_agenzia_A = v, (v) => GlobalData.Indirizzo_agenzia_B = v, a['indirizzo_agenzia']); setVal((v) => GlobalData.indirizzoAgenziaA = v, (v) => GlobalData.indirizzoAgenziaB = v, a['indirizzo_agenzia']);
setVal((v) => GlobalData.Stato_agenzia_A = v, (v) => GlobalData.Stato_agenzia_B = v, a['stato_agenzia']); setVal((v) => GlobalData.statoAgenziaA = v, (v) => GlobalData.statoAgenziaB = v, a['stato_agenzia']);
setVal((v) => GlobalData.N_tel_mail_agenzia_A = v, (v) => GlobalData.N_tel_mail_agenzia_B = v, a['tel_agenzia']); setVal((v) => GlobalData.nTelMailAgenziaA = v, (v) => GlobalData.nTelMailAgenziaB = v, a['tel_agenzia']);
setVal((v) => GlobalData.N_carta_verde_A = v, (v) => GlobalData.N_carta_verde_B = v, a['carta_verde']); setVal((v) => GlobalData.nCartaVerdeA = v, (v) => GlobalData.nCartaVerdeB = v, a['carta_verde']);
setVal((v) => GlobalData.Data_Inizio_Dal_A = v, (v) => GlobalData.Data_Inizio_Dal_B = v, a['validita_dal']); setVal((v) => GlobalData.dataInizioDalA = v, (v) => GlobalData.dataInizioDalB = v, a['validita_dal']);
setVal((v) => GlobalData.Data_Scadenza_Al_A = v, (v) => GlobalData.Data_Scadenza_Al_B = v, a['validita_al']); setVal((v) => GlobalData.dataScadenzaAlA = v, (v) => GlobalData.dataScadenzaAlB = v, a['validita_al']);
setBool((v) => GlobalData.FLAG_danni_mat_assicurati_A = v, (v) => GlobalData.FLAG_danni_mat_assicurati_B = v, a['flag_danni']); setBool((v) => GlobalData.flagDanniMatAssicuratiA = v, (v) => GlobalData.flagDanniMatAssicuratiB = v, a['flag_danni']);
} }
if (data['conducente'] != null) { if (data['conducente'] != null) {
var c = data['conducente']; var c = data['conducente'];
setVal((v) => GlobalData.Cognome_cond_A = v, (v) => GlobalData.Cognome_cond_B = v, c['cognome']); setVal((v) => GlobalData.cognomeCondA = v, (v) => GlobalData.cognomeCondB = v, c['cognome']);
setVal((v) => GlobalData.Nome_cond_A = v, (v) => GlobalData.Nome_cond_B = v, c['nome']); setVal((v) => GlobalData.nomeCondA = v, (v) => GlobalData.nomeCondB = v, c['nome']);
setVal((v) => GlobalData.Data_nascita_cond_A = v, (v) => GlobalData.Data_nascita_cond_B = v, c['nascita']); setVal((v) => GlobalData.dataNascitaCondA = v, (v) => GlobalData.dataNascitaCondB = v, c['nascita']);
setVal((v) => GlobalData.Cod_fiscale_cond_A = v, (v) => GlobalData.Cod_fiscale_cond_B = v, c['cf']); setVal((v) => GlobalData.codFiscaleCondA = v, (v) => GlobalData.codFiscaleCondB = v, c['cf']);
setVal((v) => GlobalData.Indirizzo_cond_A = v, (v) => GlobalData.Indirizzo_cond_B = v, c['indirizzo']); setVal((v) => GlobalData.indirizzoCondA = v, (v) => GlobalData.indirizzoCondB = v, c['indirizzo']);
setVal((v) => GlobalData.Stato_cond_A = v, (v) => GlobalData.Stato_cond_B = v, c['stato']); setVal((v) => GlobalData.statoCondA = v, (v) => GlobalData.statoCondB = v, c['stato']);
setVal((v) => GlobalData.N_tel_mail_cond_A = v, (v) => GlobalData.N_tel_mail_cond_B = v, c['tel']); setVal((v) => GlobalData.nTelMailCondA = v, (v) => GlobalData.nTelMailCondB = v, c['tel']);
setVal((v) => GlobalData.N_Patente_cond_A = v, (v) => GlobalData.N_Patente_cond_B = v, c['patente']); setVal((v) => GlobalData.emailCondA = v, (v) => GlobalData.emailCondB = v, c['email']);
setVal((v) => GlobalData.Categoria_cond_A = v, (v) => GlobalData.Categoria_cond_B = v, c['cat_patente']); setVal((v) => GlobalData.nPatenteCondA = v, (v) => GlobalData.nPatenteCondB = v, c['patente']);
setVal((v) => GlobalData.Scadenza_cond_A = v, (v) => GlobalData.Scadenza_cond_B = v, c['scad_patente']); setVal((v) => GlobalData.categoriaCondA = v, (v) => GlobalData.categoriaCondB = v, c['cat_patente']);
setVal((v) => GlobalData.scadenzaCondA = v, (v) => GlobalData.scadenzaCondB = v, c['scad_patente']);
} }
if (data['danni_osservazioni'] != null) { if (data['danni_osservazioni'] != null) {
var d = data['danni_osservazioni']; var d = data['danni_osservazioni'];
setVal((v) => GlobalData.danni_visibili_A = v, (v) => GlobalData.danni_visibili_B = v, d['visibili']); setVal((v) => GlobalData.danniVisibiliA = v, (v) => GlobalData.danniVisibiliB = v, d['visibili']);
setVal((v) => GlobalData.osservazioni_A = v, (v) => GlobalData.osservazioni_B = v, d['osservazioni']); setVal((v) => GlobalData.osservazioniA = v, (v) => GlobalData.osservazioniB = v, d['osservazioni']);
} }
} }

View file

@ -65,7 +65,7 @@ class _Comp1_5ScreenState extends State<Comp1_5Screen> {
} }
void _initControllers() { void _initControllers() {
_data = TextEditingController(text: GlobalData.data_incidente); _data = TextEditingController(text: GlobalData.dataIncidente);
if (_data.text.isEmpty) { if (_data.text.isEmpty) {
_data.text = DateFormat('dd/MM/yyyy').format(DateTime.now()); _data.text = DateFormat('dd/MM/yyyy').format(DateTime.now());
} }
@ -79,8 +79,8 @@ class _Comp1_5ScreenState extends State<Comp1_5Screen> {
_testimoni = TextEditingController(text: GlobalData.testimoni); _testimoni = TextEditingController(text: GlobalData.testimoni);
_feriti = GlobalData.feriti; _feriti = GlobalData.feriti;
_danniVeicoli = GlobalData.Veicoli_danni_materiali_oltre; _danniVeicoli = GlobalData.veicoliDanniMaterialiOltre;
_danniCose = GlobalData.Oggetti_diversi_danni_materiali; _danniCose = GlobalData.oggettiDiversiDanniMateriali;
} }
// --- POPUP INFORMATIVO --- // --- POPUP INFORMATIVO ---
@ -276,12 +276,12 @@ class _Comp1_5ScreenState extends State<Comp1_5Screen> {
return; return;
} }
GlobalData.data_incidente = _data.text; GlobalData.dataIncidente = _data.text;
GlobalData.ora = _ora.text; GlobalData.ora = _ora.text;
GlobalData.luogo = _luogo.text.toUpperCase(); GlobalData.luogo = _luogo.text.toUpperCase();
GlobalData.feriti = _feriti; GlobalData.feriti = _feriti;
GlobalData.Veicoli_danni_materiali_oltre = _danniVeicoli; GlobalData.veicoliDanniMaterialiOltre = _danniVeicoli;
GlobalData.Oggetti_diversi_danni_materiali = _danniCose; GlobalData.oggettiDiversiDanniMateriali = _danniCose;
GlobalData.testimoni = _testimoni.text.toUpperCase(); GlobalData.testimoni = _testimoni.text.toUpperCase();
Navigator.push(context, MaterialPageRoute(builder: (context) => const Comp6_7Screen())); Navigator.push(context, MaterialPageRoute(builder: (context) => const Comp6_7Screen()));

View file

@ -28,8 +28,8 @@ class _Comp10ScreenState extends State<Comp10Screen> {
? Set.from(GlobalData.puntiUrtoB_List) ? Set.from(GlobalData.puntiUrtoB_List)
: Set.from(GlobalData.puntiUrtoA_List); : Set.from(GlobalData.puntiUrtoA_List);
_controllerDanni = TextEditingController(text: isB ? GlobalData.danni_visibili_B : GlobalData.danni_visibili_A); _controllerDanni = TextEditingController(text: isB ? GlobalData.danniVisibiliB : GlobalData.danniVisibiliA);
_controllerOsservazioni = TextEditingController(text: isB ? GlobalData.osservazioni_B : GlobalData.osservazioni_A); _controllerOsservazioni = TextEditingController(text: isB ? GlobalData.osservazioniB : GlobalData.osservazioniA);
_hitboxes = isB ? _getHitboxesB() : _getHitboxesA(); _hitboxes = isB ? _getHitboxesB() : _getHitboxesA();
// MOSTRA IL POPUP INFORMATIVO ANIMATO AL CARICAMENTO // MOSTRA IL POPUP INFORMATIVO ANIMATO AL CARICAMENTO
@ -210,12 +210,12 @@ class _Comp10ScreenState extends State<Comp10Screen> {
setState(() { setState(() {
if (isB) { if (isB) {
GlobalData.puntiUrtoB_List = _selectedSectors.toList(); GlobalData.puntiUrtoB_List = _selectedSectors.toList();
GlobalData.danni_visibili_B = _controllerDanni.text.toUpperCase(); GlobalData.danniVisibiliB = _controllerDanni.text.toUpperCase();
GlobalData.osservazioni_B = _controllerOsservazioni.text.toUpperCase(); GlobalData.osservazioniB = _controllerOsservazioni.text.toUpperCase();
} else { } else {
GlobalData.puntiUrtoA_List = _selectedSectors.toList(); GlobalData.puntiUrtoA_List = _selectedSectors.toList();
GlobalData.danni_visibili_A = _controllerDanni.text.toUpperCase(); GlobalData.danniVisibiliA = _controllerDanni.text.toUpperCase();
GlobalData.osservazioni_A = _controllerOsservazioni.text.toUpperCase(); GlobalData.osservazioniA = _controllerOsservazioni.text.toUpperCase();
} }
}); });
Navigator.push(context, MaterialPageRoute(builder: (c) => const Comp12Screen())); Navigator.push(context, MaterialPageRoute(builder: (c) => const Comp12Screen()));

View file

@ -147,9 +147,9 @@ class _Comp16ScreenState extends State<Comp16Screen> with WidgetsBindingObserver
void _verificaStatoPostScambio() { void _verificaStatoPostScambio() {
bool datiOk = false; bool datiOk = false;
if (GlobalData.latoCorrente == 'A') { if (GlobalData.latoCorrente == 'A') {
datiOk = GlobalData.Cognome_contraente_B.trim().isNotEmpty && GlobalData.Targa_B.trim().isNotEmpty; datiOk = GlobalData.cognomeContraenteB.trim().isNotEmpty && GlobalData.targaB.trim().isNotEmpty;
} else { } else {
datiOk = GlobalData.Cognome_contraente_A.trim().isNotEmpty && GlobalData.Targa_A.trim().isNotEmpty; datiOk = GlobalData.cognomeContraenteA.trim().isNotEmpty && GlobalData.targaA.trim().isNotEmpty;
} }
if (mounted) { if (mounted) {
@ -301,8 +301,8 @@ class _Comp16ScreenState extends State<Comp16Screen> with WidgetsBindingObserver
bool isA = GlobalData.latoCorrente == 'A'; bool isA = GlobalData.latoCorrente == 'A';
// Telefoni dei due conducenti // Telefoni dei due conducenti
String telA = GlobalData.N_tel_mail_cond_A.isNotEmpty ? GlobalData.N_tel_mail_cond_A : GlobalData.N_telefono_mail_contraente_A; String telA = GlobalData.nTelMailCondA.isNotEmpty ? GlobalData.nTelMailCondA : GlobalData.nTelefonoMailContraenteA;
String telB = GlobalData.N_tel_mail_cond_B.isNotEmpty ? GlobalData.N_tel_mail_cond_B : GlobalData.N_telefono_mail_contraente_B; String telB = GlobalData.nTelMailCondB.isNotEmpty ? GlobalData.nTelMailCondB : GlobalData.nTelefonoMailContraenteB;
Future<bool> eseguiVerifica(String tel, String nome, Function(String, String) onSuccess) async { Future<bool> eseguiVerifica(String tel, String nome, Function(String, String) onSuccess) async {
if (tel.isEmpty) return true; // Se non c'è numero (improbabile), skippa if (tel.isEmpty) return true; // Se non c'è numero (improbabile), skippa
@ -328,8 +328,8 @@ class _Comp16ScreenState extends State<Comp16Screen> with WidgetsBindingObserver
// Flusso OTP per A // Flusso OTP per A
if (telA.isNotEmpty) { if (telA.isNotEmpty) {
String nomeA = "${GlobalData.Nome_cond_A} ${GlobalData.Cognome_cond_A}".trim(); String nomeA = "${GlobalData.nomeCondA} ${GlobalData.cognomeCondA}".trim();
if (nomeA.isEmpty) nomeA = "${GlobalData.Nome_contraente_A} ${GlobalData.Cognome_contraente_A}".trim(); if (nomeA.isEmpty) nomeA = "${GlobalData.nomeContraenteA} ${GlobalData.cognomeContraenteA}".trim();
bool okA = await eseguiVerifica(telA, "Conducente A: $nomeA", (dataOra, id) { bool okA = await eseguiVerifica(telA, "Conducente A: $nomeA", (dataOra, id) {
GlobalData.feaVerifiedA = true; GlobalData.otpDataOraA = dataOra; GlobalData.otpIdA = id; GlobalData.feaVerifiedA = true; GlobalData.otpDataOraA = dataOra; GlobalData.otpIdA = id;
}); });
@ -338,8 +338,8 @@ class _Comp16ScreenState extends State<Comp16Screen> with WidgetsBindingObserver
// Flusso OTP per B // Flusso OTP per B
if (telB.isNotEmpty) { if (telB.isNotEmpty) {
String nomeB = "${GlobalData.Nome_cond_B} ${GlobalData.Cognome_cond_B}".trim(); String nomeB = "${GlobalData.nomeCondB} ${GlobalData.cognomeCondB}".trim();
if (nomeB.isEmpty) nomeB = "${GlobalData.Nome_contraente_B} ${GlobalData.Cognome_contraente_B}".trim(); if (nomeB.isEmpty) nomeB = "${GlobalData.nomeContraenteB} ${GlobalData.cognomeContraenteB}".trim();
bool okB = await eseguiVerifica(telB, "Conducente B: $nomeB", (dataOra, id) { bool okB = await eseguiVerifica(telB, "Conducente B: $nomeB", (dataOra, id) {
GlobalData.feaVerifiedB = true; GlobalData.otpDataOraB = dataOra; GlobalData.otpIdB = id; GlobalData.feaVerifiedB = true; GlobalData.otpDataOraB = dataOra; GlobalData.otpIdB = id;
}); });
@ -495,12 +495,12 @@ class _Comp16ScreenState extends State<Comp16Screen> with WidgetsBindingObserver
try { try {
bool isA = GlobalData.latoCorrente == 'A'; bool isA = GlobalData.latoCorrente == 'A';
String polizzaChiScrive = (isA ? GlobalData.Numero_Polizza_A : GlobalData.Numero_Polizza_B).trim(); String polizzaChiScrive = (isA ? GlobalData.numeroPolizzaA : GlobalData.numeroPolizzaB).trim();
String targaChiScrive = (isA ? GlobalData.Targa_A : GlobalData.Targa_B).trim(); String targaChiScrive = (isA ? GlobalData.targaA : GlobalData.targaB).trim();
String firmaChiScrive = "${isA ? GlobalData.Nome_contraente_A : GlobalData.Nome_contraente_B} ${isA ? GlobalData.Cognome_contraente_A : GlobalData.Cognome_contraente_B}"; String firmaChiScrive = "${isA ? GlobalData.nomeContraenteA : GlobalData.nomeContraenteB} ${isA ? GlobalData.cognomeContraenteA : GlobalData.cognomeContraenteB}";
String contattoChiScrive = (isA ? GlobalData.N_telefono_mail_contraente_A : GlobalData.N_telefono_mail_contraente_B).trim(); String contattoChiScrive = (isA ? GlobalData.nTelefonoMailContraenteA : GlobalData.nTelefonoMailContraenteB).trim();
String compagniaUtente = (isA ? GlobalData.Denominazione_A : GlobalData.Denominazione_B).trim().toUpperCase(); String compagniaUtente = (isA ? GlobalData.denominazioneA : GlobalData.denominazioneB).trim().toUpperCase();
String emailDestinatario = ""; String emailDestinatario = "";
if (GlobalData.assicurazioni.containsKey(compagniaUtente)) { if (GlobalData.assicurazioni.containsKey(compagniaUtente)) {
@ -519,7 +519,7 @@ class _Comp16ScreenState extends State<Comp16Screen> with WidgetsBindingObserver
String oggetto = "DENUNCIA SINISTRO - Polizza n. $polizzaChiScrive - Targa $targaChiScrive"; String oggetto = "DENUNCIA SINISTRO - Polizza n. $polizzaChiScrive - Targa $targaChiScrive";
String corpo = "Spett.le Compagnia,\n\n" String corpo = "Spett.le Compagnia,\n\n"
"Con la presente inoltro in allegato il modulo CAI relativo al sinistro avvenuto in data ${GlobalData.data_incidente} alle ore ${GlobalData.ora} nel comune di ${GlobalData.luogo}.\n\n" "Con la presente inoltro in allegato il modulo CAI relativo al sinistro avvenuto in data ${GlobalData.dataIncidente} alle ore ${GlobalData.ora} nel comune di ${GlobalData.luogo}.\n\n"
"Rimaniamo in attesa dell'apertura del fascicolo.\n\n" "Rimaniamo in attesa dell'apertura del fascicolo.\n\n"
"Cordiali saluti,\n$firmaChiScrive\nContatto: $contattoChiScrive"; "Cordiali saluti,\n$firmaChiScrive\nContatto: $contattoChiScrive";

View file

@ -120,37 +120,37 @@ class _Comp6_7ScreenState extends State<Comp6_7Screen> {
} }
if (isB) { if (isB) {
_cognome = TextEditingController(text: GlobalData.Cognome_contraente_B); _cognome = TextEditingController(text: GlobalData.cognomeContraenteB);
_nome = TextEditingController(text: GlobalData.Nome_contraente_B); _nome = TextEditingController(text: GlobalData.nomeContraenteB);
_cf = TextEditingController(text: GlobalData.Codice_Fiscale_contraente_B); _cf = TextEditingController(text: GlobalData.codiceFiscaleContraenteB);
_indirizzo = TextEditingController(text: GlobalData.Indirizzo_contraente_B); _indirizzo = TextEditingController(text: GlobalData.indirizzoContraenteB);
_cap = TextEditingController(text: GlobalData.CAP_contraente_B); _cap = TextEditingController(text: GlobalData.capContraenteB);
_stato = TextEditingController(text: GlobalData.Stato_contraente_B.isEmpty ? "ITALIA" : GlobalData.Stato_contraente_B); _stato = TextEditingController(text: GlobalData.statoContraenteB.isEmpty ? "ITALIA" : GlobalData.statoContraenteB);
_tel = TextEditingController(text: GlobalData.N_telefono_mail_contraente_B); _tel = TextEditingController(text: GlobalData.nTelefonoMailContraenteB);
_email = TextEditingController(text: GlobalData.Email_contraente_B); _email = TextEditingController(text: GlobalData.emailContraenteB);
_marca = TextEditingController(text: GlobalData.Marca_e_Tipo_B); _marca = TextEditingController(text: GlobalData.marcaETipoB);
_targa = TextEditingController(text: GlobalData.Targa_B); _targa = TextEditingController(text: GlobalData.targaB);
_statoImm = TextEditingController(text: GlobalData.Stato_immatricolazione_B.isEmpty ? "ITALIA" : GlobalData.Stato_immatricolazione_B); _statoImm = TextEditingController(text: GlobalData.statoImmatricolazioneB.isEmpty ? "ITALIA" : GlobalData.statoImmatricolazioneB);
_rimorchio = TextEditingController(text: pulisciBarre(GlobalData.Rimorchio_B, "/")); _rimorchio = TextEditingController(text: pulisciBarre(GlobalData.rimorchioB, "/"));
_statoImm2 = TextEditingController(text: pulisciBarre(GlobalData.Stato_immatricolazione2_B, "/")); _statoImm2 = TextEditingController(text: pulisciBarre(GlobalData.statoImmatricolazione2B, "/"));
} else { } else {
_cognome = TextEditingController(text: GlobalData.Cognome_contraente_A); _cognome = TextEditingController(text: GlobalData.cognomeContraenteA);
_nome = TextEditingController(text: GlobalData.Nome_contraente_A); _nome = TextEditingController(text: GlobalData.nomeContraenteA);
_cf = TextEditingController(text: GlobalData.Codice_Fiscale_contraente_A); _cf = TextEditingController(text: GlobalData.codiceFiscaleContraenteA);
_indirizzo = TextEditingController(text: GlobalData.Indirizzo_contraente_A); _indirizzo = TextEditingController(text: GlobalData.indirizzoContraenteA);
_cap = TextEditingController(text: GlobalData.CAP_contraente_A); _cap = TextEditingController(text: GlobalData.capContraenteA);
_stato = TextEditingController(text: GlobalData.Stato_contraente_A.isEmpty ? "ITALIA" : GlobalData.Stato_contraente_A); _stato = TextEditingController(text: GlobalData.statoContraenteA.isEmpty ? "ITALIA" : GlobalData.statoContraenteA);
_tel = TextEditingController(text: GlobalData.N_telefono_mail_contraente_A); _tel = TextEditingController(text: GlobalData.nTelefonoMailContraenteA);
_email = TextEditingController(text: GlobalData.Email_contraente_A); _email = TextEditingController(text: GlobalData.emailContraenteA);
_marca = TextEditingController(text: GlobalData.Marca_e_Tipo_A); _marca = TextEditingController(text: GlobalData.marcaETipoA);
_targa = TextEditingController(text: GlobalData.Targa_A); _targa = TextEditingController(text: GlobalData.targaA);
_statoImm = TextEditingController(text: GlobalData.Stato_immatricolazione_A.isEmpty ? "ITALIA" : GlobalData.Stato_immatricolazione_A); _statoImm = TextEditingController(text: GlobalData.statoImmatricolazioneA.isEmpty ? "ITALIA" : GlobalData.statoImmatricolazioneA);
_rimorchio = TextEditingController(text: pulisciBarre(GlobalData.Rimorchio_A, "/")); _rimorchio = TextEditingController(text: pulisciBarre(GlobalData.rimorchioA, "/"));
_statoImm2 = TextEditingController(text: pulisciBarre(GlobalData.Stato_immatricolazione2_A, "/")); _statoImm2 = TextEditingController(text: pulisciBarre(GlobalData.statoImmatricolazione2A, "/"));
} }
} }
@ -413,33 +413,33 @@ class _Comp6_7ScreenState extends State<Comp6_7Screen> {
} }
if (currentIsB) { if (currentIsB) {
GlobalData.Cognome_contraente_B = _cognome.text.trim().toUpperCase(); GlobalData.cognomeContraenteB = _cognome.text.trim().toUpperCase();
GlobalData.Nome_contraente_B = _nome.text.trim().toUpperCase(); GlobalData.nomeContraenteB = _nome.text.trim().toUpperCase();
GlobalData.Codice_Fiscale_contraente_B = cfInserito; GlobalData.codiceFiscaleContraenteB = cfInserito;
GlobalData.Indirizzo_contraente_B = _indirizzo.text.trim().toUpperCase(); GlobalData.indirizzoContraenteB = _indirizzo.text.trim().toUpperCase();
GlobalData.CAP_contraente_B = _cap.text.trim(); GlobalData.capContraenteB = _cap.text.trim();
GlobalData.Stato_contraente_B = _stato.text.trim().toUpperCase(); GlobalData.statoContraenteB = _stato.text.trim().toUpperCase();
GlobalData.N_telefono_mail_contraente_B = telefono; GlobalData.nTelefonoMailContraenteB = telefono;
GlobalData.Email_contraente_B = email.toLowerCase(); GlobalData.emailContraenteB = email.toLowerCase();
GlobalData.Marca_e_Tipo_B = _marca.text.trim().toUpperCase(); GlobalData.marcaETipoB = _marca.text.trim().toUpperCase();
GlobalData.Targa_B = _targa.text.trim().toUpperCase(); GlobalData.targaB = _targa.text.trim().toUpperCase();
GlobalData.Stato_immatricolazione_B = _statoImm.text.trim().toUpperCase(); GlobalData.statoImmatricolazioneB = _statoImm.text.trim().toUpperCase();
GlobalData.Rimorchio_B = rimorchioFinale; GlobalData.rimorchioB = rimorchioFinale;
GlobalData.Stato_immatricolazione2_B = statoImm2Finale; GlobalData.statoImmatricolazione2B = statoImm2Finale;
} else { } else {
GlobalData.Cognome_contraente_A = _cognome.text.trim().toUpperCase(); GlobalData.cognomeContraenteA = _cognome.text.trim().toUpperCase();
GlobalData.Nome_contraente_A = _nome.text.trim().toUpperCase(); GlobalData.nomeContraenteA = _nome.text.trim().toUpperCase();
GlobalData.Codice_Fiscale_contraente_A = cfInserito; GlobalData.codiceFiscaleContraenteA = cfInserito;
GlobalData.Indirizzo_contraente_A = _indirizzo.text.trim().toUpperCase(); GlobalData.indirizzoContraenteA = _indirizzo.text.trim().toUpperCase();
GlobalData.CAP_contraente_A = _cap.text.trim(); GlobalData.capContraenteA = _cap.text.trim();
GlobalData.Stato_contraente_A = _stato.text.trim().toUpperCase(); GlobalData.statoContraenteA = _stato.text.trim().toUpperCase();
GlobalData.N_telefono_mail_contraente_A = telefono; GlobalData.nTelefonoMailContraenteA = telefono;
GlobalData.Email_contraente_A = email.toLowerCase(); GlobalData.emailContraenteA = email.toLowerCase();
GlobalData.Marca_e_Tipo_A = _marca.text.trim().toUpperCase(); GlobalData.marcaETipoA = _marca.text.trim().toUpperCase();
GlobalData.Targa_A = _targa.text.trim().toUpperCase(); GlobalData.targaA = _targa.text.trim().toUpperCase();
GlobalData.Stato_immatricolazione_A = _statoImm.text.trim().toUpperCase(); GlobalData.statoImmatricolazioneA = _statoImm.text.trim().toUpperCase();
GlobalData.Rimorchio_A = rimorchioFinale; GlobalData.rimorchioA = rimorchioFinale;
GlobalData.Stato_immatricolazione2_A = statoImm2Finale; GlobalData.statoImmatricolazione2A = statoImm2Finale;
} }
// <-- SALVATAGGIO DEI DATI NELLA TASTIERA DI SISTEMA (Per l'Autofill) --> // <-- SALVATAGGIO DEI DATI NELLA TASTIERA DI SISTEMA (Per l'Autofill) -->

View file

@ -51,17 +51,17 @@ class _Comp8ScreenState extends State<Comp8Screen> {
} }
void _initControllers() { void _initControllers() {
String denominazioneSalvata = isB ? GlobalData.Denominazione_B : GlobalData.Denominazione_A; String denominazioneSalvata = isB ? GlobalData.denominazioneB : GlobalData.denominazioneA;
_polizza = TextEditingController(text: isB ? GlobalData.Numero_Polizza_B : GlobalData.Numero_Polizza_A); _polizza = TextEditingController(text: isB ? GlobalData.numeroPolizzaB : GlobalData.numeroPolizzaA);
_cartaVerde = TextEditingController(text: isB ? GlobalData.N_carta_verde_B : GlobalData.N_carta_verde_A); _cartaVerde = TextEditingController(text: isB ? GlobalData.nCartaVerdeB : GlobalData.nCartaVerdeA);
_validoDal = TextEditingController(text: isB ? GlobalData.Data_Inizio_Dal_B : GlobalData.Data_Inizio_Dal_A); _validoDal = TextEditingController(text: isB ? GlobalData.dataInizioDalB : GlobalData.dataInizioDalA);
_validoAl = TextEditingController(text: isB ? GlobalData.Data_Scadenza_Al_B : GlobalData.Data_Scadenza_Al_A); _validoAl = TextEditingController(text: isB ? GlobalData.dataScadenzaAlB : GlobalData.dataScadenzaAlA);
_agenzia = TextEditingController(text: isB ? GlobalData.Agenzia_B : GlobalData.Agenzia_A); _agenzia = TextEditingController(text: isB ? GlobalData.agenziaB : GlobalData.agenziaA);
_denomAgenzia = TextEditingController(text: isB ? GlobalData.Denominazione_agenzia_B : GlobalData.Denominazione_agenzia_A); _denomAgenzia = TextEditingController(text: isB ? GlobalData.denominazioneAgenziaB : GlobalData.denominazioneAgenziaA);
_indirizzoAgenzia = TextEditingController(text: isB ? GlobalData.Indirizzo_agenzia_B : GlobalData.Indirizzo_agenzia_A); _indirizzoAgenzia = TextEditingController(text: isB ? GlobalData.indirizzoAgenziaB : GlobalData.indirizzoAgenziaA);
_statoAgenzia = TextEditingController(text: (isB ? GlobalData.Stato_agenzia_B : GlobalData.Stato_agenzia_A).isEmpty ? "ITALIA" : (isB ? GlobalData.Stato_agenzia_B : GlobalData.Stato_agenzia_A)); _statoAgenzia = TextEditingController(text: (isB ? GlobalData.statoAgenziaB : GlobalData.statoAgenziaA).isEmpty ? "ITALIA" : (isB ? GlobalData.statoAgenziaB : GlobalData.statoAgenziaA));
_telAgenzia = TextEditingController(text: isB ? GlobalData.N_tel_mail_agenzia_B : GlobalData.N_tel_mail_agenzia_A); _telAgenzia = TextEditingController(text: isB ? GlobalData.nTelMailAgenziaB : GlobalData.nTelMailAgenziaA);
_danniMaterialiAssicurati = isB ? GlobalData.FLAG_danni_mat_assicurati_B : GlobalData.FLAG_danni_mat_assicurati_A; _danniMaterialiAssicurati = isB ? GlobalData.flagDanniMatAssicuratiB : GlobalData.flagDanniMatAssicuratiA;
_compagniaManuale = TextEditingController(); _compagniaManuale = TextEditingController();
if (denominazioneSalvata.isNotEmpty) { if (denominazioneSalvata.isNotEmpty) {
@ -265,29 +265,29 @@ class _Comp8ScreenState extends State<Comp8Screen> {
String denomFinale = (_selectedAssicurazione == "ALTRO (Inserimento manuale)") ? _compagniaManuale.text.toUpperCase() : (_selectedAssicurazione ?? ""); String denomFinale = (_selectedAssicurazione == "ALTRO (Inserimento manuale)") ? _compagniaManuale.text.toUpperCase() : (_selectedAssicurazione ?? "");
if (isB) { if (isB) {
GlobalData.Denominazione_B = denomFinale; GlobalData.denominazioneB = denomFinale;
GlobalData.Numero_Polizza_B = _polizza.text.toUpperCase(); GlobalData.numeroPolizzaB = _polizza.text.toUpperCase();
GlobalData.N_carta_verde_B = _cartaVerde.text.toUpperCase(); GlobalData.nCartaVerdeB = _cartaVerde.text.toUpperCase();
GlobalData.Data_Inizio_Dal_B = _validoDal.text; GlobalData.dataInizioDalB = _validoDal.text;
GlobalData.Data_Scadenza_Al_B = _validoAl.text; GlobalData.dataScadenzaAlB = _validoAl.text;
GlobalData.Agenzia_B = _agenzia.text.toUpperCase(); GlobalData.agenziaB = _agenzia.text.toUpperCase();
GlobalData.Denominazione_agenzia_B = _denomAgenzia.text.toUpperCase(); GlobalData.denominazioneAgenziaB = _denomAgenzia.text.toUpperCase();
GlobalData.Indirizzo_agenzia_B = _indirizzoAgenzia.text.toUpperCase(); GlobalData.indirizzoAgenziaB = _indirizzoAgenzia.text.toUpperCase();
GlobalData.Stato_agenzia_B = _statoAgenzia.text.toUpperCase(); GlobalData.statoAgenziaB = _statoAgenzia.text.toUpperCase();
GlobalData.N_tel_mail_agenzia_B = _telAgenzia.text.toUpperCase(); GlobalData.nTelMailAgenziaB = _telAgenzia.text.toUpperCase();
GlobalData.FLAG_danni_mat_assicurati_B = _danniMaterialiAssicurati; GlobalData.flagDanniMatAssicuratiB = _danniMaterialiAssicurati;
} else { } else {
GlobalData.Denominazione_A = denomFinale; GlobalData.denominazioneA = denomFinale;
GlobalData.Numero_Polizza_A = _polizza.text.toUpperCase(); GlobalData.numeroPolizzaA = _polizza.text.toUpperCase();
GlobalData.N_carta_verde_A = _cartaVerde.text.toUpperCase(); GlobalData.nCartaVerdeA = _cartaVerde.text.toUpperCase();
GlobalData.Data_Inizio_Dal_A = _validoDal.text; GlobalData.dataInizioDalA = _validoDal.text;
GlobalData.Data_Scadenza_Al_A = _validoAl.text; GlobalData.dataScadenzaAlA = _validoAl.text;
GlobalData.Agenzia_A = _agenzia.text.toUpperCase(); GlobalData.agenziaA = _agenzia.text.toUpperCase();
GlobalData.Denominazione_agenzia_A = _denomAgenzia.text.toUpperCase(); GlobalData.denominazioneAgenziaA = _denomAgenzia.text.toUpperCase();
GlobalData.Indirizzo_agenzia_A = _indirizzoAgenzia.text.toUpperCase(); GlobalData.indirizzoAgenziaA = _indirizzoAgenzia.text.toUpperCase();
GlobalData.Stato_agenzia_A = _statoAgenzia.text.toUpperCase(); GlobalData.statoAgenziaA = _statoAgenzia.text.toUpperCase();
GlobalData.N_tel_mail_agenzia_A = _telAgenzia.text.toUpperCase(); GlobalData.nTelMailAgenziaA = _telAgenzia.text.toUpperCase();
GlobalData.FLAG_danni_mat_assicurati_A = _danniMaterialiAssicurati; GlobalData.flagDanniMatAssicuratiA = _danniMaterialiAssicurati;
} }
Navigator.push(context, MaterialPageRoute(builder: (c) => const Comp9Screen())); Navigator.push(context, MaterialPageRoute(builder: (c) => const Comp9Screen()));
} }

View file

@ -56,29 +56,29 @@ class _Comp9ScreenState extends State<Comp9Screen> {
void _initControllers() { void _initControllers() {
if (isB) { if (isB) {
_cognome = TextEditingController(text: GlobalData.Cognome_cond_B); _cognome = TextEditingController(text: GlobalData.cognomeCondB);
_nome = TextEditingController(text: GlobalData.Nome_cond_B); _nome = TextEditingController(text: GlobalData.nomeCondB);
_cf = TextEditingController(text: GlobalData.Cod_fiscale_cond_B); _cf = TextEditingController(text: GlobalData.codFiscaleCondB);
_nascita = TextEditingController(text: GlobalData.Data_nascita_cond_B); _nascita = TextEditingController(text: GlobalData.dataNascitaCondB);
_indirizzo = TextEditingController(text: GlobalData.Indirizzo_cond_B); _indirizzo = TextEditingController(text: GlobalData.indirizzoCondB);
_stato = TextEditingController(text: GlobalData.Stato_cond_B.isEmpty ? "ITALIA" : GlobalData.Stato_cond_B); _stato = TextEditingController(text: GlobalData.statoCondB.isEmpty ? "ITALIA" : GlobalData.statoCondB);
_tel = TextEditingController(text: GlobalData.N_tel_mail_cond_B); _tel = TextEditingController(text: GlobalData.nTelMailCondB);
_email = TextEditingController(text: GlobalData.Email_cond_B); _email = TextEditingController(text: GlobalData.emailCondB);
_patente = TextEditingController(text: GlobalData.N_Patente_cond_B); _patente = TextEditingController(text: GlobalData.nPatenteCondB);
_scadenza = TextEditingController(text: GlobalData.Scadenza_cond_B); _scadenza = TextEditingController(text: GlobalData.scadenzaCondB);
_setupCategoria(GlobalData.Categoria_cond_B); _setupCategoria(GlobalData.categoriaCondB);
} else { } else {
_cognome = TextEditingController(text: GlobalData.Cognome_cond_A); _cognome = TextEditingController(text: GlobalData.cognomeCondA);
_nome = TextEditingController(text: GlobalData.Nome_cond_A); _nome = TextEditingController(text: GlobalData.nomeCondA);
_cf = TextEditingController(text: GlobalData.Cod_fiscale_cond_A); _cf = TextEditingController(text: GlobalData.codFiscaleCondA);
_nascita = TextEditingController(text: GlobalData.Data_nascita_cond_A); _nascita = TextEditingController(text: GlobalData.dataNascitaCondA);
_indirizzo = TextEditingController(text: GlobalData.Indirizzo_cond_A); _indirizzo = TextEditingController(text: GlobalData.indirizzoCondA);
_stato = TextEditingController(text: GlobalData.Stato_cond_A.isEmpty ? "ITALIA" : GlobalData.Stato_cond_A); _stato = TextEditingController(text: GlobalData.statoCondA.isEmpty ? "ITALIA" : GlobalData.statoCondA);
_tel = TextEditingController(text: GlobalData.N_tel_mail_cond_A); _tel = TextEditingController(text: GlobalData.nTelMailCondA);
_email = TextEditingController(text: GlobalData.Email_cond_A); _email = TextEditingController(text: GlobalData.emailCondA);
_patente = TextEditingController(text: GlobalData.N_Patente_cond_A); _patente = TextEditingController(text: GlobalData.nPatenteCondA);
_scadenza = TextEditingController(text: GlobalData.Scadenza_cond_A); _scadenza = TextEditingController(text: GlobalData.scadenzaCondA);
_setupCategoria(GlobalData.Categoria_cond_A); _setupCategoria(GlobalData.categoriaCondA);
} }
} }
@ -171,8 +171,8 @@ class _Comp9ScreenState extends State<Comp9Screen> {
if (_cognome.text.trim().isNotEmpty && _nome.text.trim().isNotEmpty) return; if (_cognome.text.trim().isNotEmpty && _nome.text.trim().isNotEmpty) return;
// 2. Controllo se esistono i dati del contraente da importare // 2. Controllo se esistono i dati del contraente da importare
String contraenteNome = isB ? GlobalData.Nome_contraente_B : GlobalData.Nome_contraente_A; String contraenteNome = isB ? GlobalData.nomeContraenteB : GlobalData.nomeContraenteA;
String contraenteCognome = isB ? GlobalData.Cognome_contraente_B : GlobalData.Cognome_contraente_A; String contraenteCognome = isB ? GlobalData.cognomeContraenteB : GlobalData.cognomeContraenteA;
if (contraenteNome.isEmpty && contraenteCognome.isEmpty) return; if (contraenteNome.isEmpty && contraenteCognome.isEmpty) return;
@ -218,29 +218,29 @@ class _Comp9ScreenState extends State<Comp9Screen> {
void _importaDati() { void _importaDati() {
setState(() { setState(() {
if (isB) { if (isB) {
_cognome.text = GlobalData.Cognome_contraente_B; _cognome.text = GlobalData.cognomeContraenteB;
_nome.text = GlobalData.Nome_contraente_B; _nome.text = GlobalData.nomeContraenteB;
_cf.text = GlobalData.Codice_Fiscale_contraente_B; _cf.text = GlobalData.codiceFiscaleContraenteB;
String addr = GlobalData.Indirizzo_contraente_B; String addr = GlobalData.indirizzoContraenteB;
if (GlobalData.CAP_contraente_B.isNotEmpty) addr += " ${GlobalData.CAP_contraente_B}"; if (GlobalData.capContraenteB.isNotEmpty) addr += " ${GlobalData.capContraenteB}";
_indirizzo.text = addr.trim(); _indirizzo.text = addr.trim();
_stato.text = GlobalData.Stato_contraente_B.isNotEmpty ? GlobalData.Stato_contraente_B : "ITALIA"; _stato.text = GlobalData.statoContraenteB.isNotEmpty ? GlobalData.statoContraenteB : "ITALIA";
_tel.text = GlobalData.N_telefono_mail_contraente_B; _tel.text = GlobalData.nTelefonoMailContraenteB;
_email.text = GlobalData.Email_contraente_B; _email.text = GlobalData.emailContraenteB;
} else { } else {
_cognome.text = GlobalData.Cognome_contraente_A; _cognome.text = GlobalData.cognomeContraenteA;
_nome.text = GlobalData.Nome_contraente_A; _nome.text = GlobalData.nomeContraenteA;
_cf.text = GlobalData.Codice_Fiscale_contraente_A; _cf.text = GlobalData.codiceFiscaleContraenteA;
String addr = GlobalData.Indirizzo_contraente_A; String addr = GlobalData.indirizzoContraenteA;
if (GlobalData.CAP_contraente_A.isNotEmpty) addr += " ${GlobalData.CAP_contraente_A}"; if (GlobalData.capContraenteA.isNotEmpty) addr += " ${GlobalData.capContraenteA}";
_indirizzo.text = addr.trim(); _indirizzo.text = addr.trim();
_stato.text = GlobalData.Stato_contraente_A.isNotEmpty ? GlobalData.Stato_contraente_A : "ITALIA"; _stato.text = GlobalData.statoContraenteA.isNotEmpty ? GlobalData.statoContraenteA : "ITALIA";
_tel.text = GlobalData.N_telefono_mail_contraente_A; _tel.text = GlobalData.nTelefonoMailContraenteA;
_email.text = GlobalData.Email_contraente_A; _email.text = GlobalData.emailContraenteA;
} }
}); });
} }
@ -365,29 +365,29 @@ class _Comp9ScreenState extends State<Comp9Screen> {
} }
if (isB) { if (isB) {
GlobalData.Cognome_cond_B = _cognome.text.toUpperCase(); GlobalData.cognomeCondB = _cognome.text.toUpperCase();
GlobalData.Nome_cond_B = _nome.text.toUpperCase(); GlobalData.nomeCondB = _nome.text.toUpperCase();
GlobalData.Cod_fiscale_cond_B = _cf.text.toUpperCase(); GlobalData.codFiscaleCondB = _cf.text.toUpperCase();
GlobalData.Data_nascita_cond_B = _nascita.text; GlobalData.dataNascitaCondB = _nascita.text;
GlobalData.Indirizzo_cond_B = _indirizzo.text.trim().toUpperCase(); GlobalData.indirizzoCondB = _indirizzo.text.trim().toUpperCase();
GlobalData.Stato_cond_B = _stato.text.trim().toUpperCase(); GlobalData.statoCondB = _stato.text.trim().toUpperCase();
GlobalData.N_tel_mail_cond_B = telefono; GlobalData.nTelMailCondB = telefono;
GlobalData.Email_cond_B = email.toLowerCase(); GlobalData.emailCondB = email.toLowerCase();
GlobalData.N_Patente_cond_B = _patente.text.trim().toUpperCase(); GlobalData.nPatenteCondB = _patente.text.trim().toUpperCase();
GlobalData.Categoria_cond_B = catFinale; GlobalData.categoriaCondB = catFinale;
GlobalData.Scadenza_cond_B = _scadenza.text; GlobalData.scadenzaCondB = _scadenza.text;
} else { } else {
GlobalData.Cognome_cond_A = _cognome.text.toUpperCase(); GlobalData.cognomeCondA = _cognome.text.toUpperCase();
GlobalData.Nome_cond_A = _nome.text.toUpperCase(); GlobalData.nomeCondA = _nome.text.toUpperCase();
GlobalData.Cod_fiscale_cond_A = _cf.text.toUpperCase(); GlobalData.codFiscaleCondA = _cf.text.toUpperCase();
GlobalData.Data_nascita_cond_A = _nascita.text; GlobalData.dataNascitaCondA = _nascita.text;
GlobalData.Indirizzo_cond_A = _indirizzo.text.trim().toUpperCase(); GlobalData.indirizzoCondA = _indirizzo.text.trim().toUpperCase();
GlobalData.Stato_cond_A = _stato.text.trim().toUpperCase(); GlobalData.statoCondA = _stato.text.trim().toUpperCase();
GlobalData.N_tel_mail_cond_A = telefono; GlobalData.nTelMailCondA = telefono;
GlobalData.Email_cond_A = email.toLowerCase(); GlobalData.emailCondA = email.toLowerCase();
GlobalData.N_Patente_cond_A = _patente.text.trim().toUpperCase(); GlobalData.nPatenteCondA = _patente.text.trim().toUpperCase();
GlobalData.Categoria_cond_A = catFinale; GlobalData.categoriaCondA = catFinale;
GlobalData.Scadenza_cond_A = _scadenza.text; GlobalData.scadenzaCondA = _scadenza.text;
} }
// Salvataggio silente del profilo utente // Salvataggio silente del profilo utente

View file

@ -10,27 +10,27 @@ class GlobalData {
static bool isPro = false; // Stato abbonamento RevenueCat static bool isPro = false; // Stato abbonamento RevenueCat
// --- DATI GENERALI (NON CANCELLATI DAI RESET PARZIALI) --- // --- DATI GENERALI (NON CANCELLATI DAI RESET PARZIALI) ---
static String data_incidente = ""; static String dataIncidente = "";
static String ora = ""; static String ora = "";
static String luogo = ""; static String luogo = "";
static String testimoni = ""; static String testimoni = "";
static bool feriti = false; static bool feriti = false;
static bool Veicoli_danni_materiali_oltre = false; static bool veicoliDanniMaterialiOltre = false;
static bool Oggetti_diversi_danni_materiali = false; static bool oggettiDiversiDanniMateriali = false;
// --- DATI LATO A (BLU) --- // --- DATI LATO A (BLU) ---
static String Cognome_contraente_A = ""; static String Nome_contraente_A = ""; static String Codice_Fiscale_contraente_A = ""; static String Indirizzo_contraente_A = ""; static String CAP_contraente_A = ""; static String Stato_contraente_A = ""; static String N_telefono_mail_contraente_A = ""; static String Email_contraente_A = ""; static String cognomeContraenteA = ""; static String nomeContraenteA = ""; static String codiceFiscaleContraenteA = ""; static String indirizzoContraenteA = ""; static String capContraenteA = ""; static String statoContraenteA = ""; static String nTelefonoMailContraenteA = ""; static String emailContraenteA = "";
static String Marca_e_Tipo_A = ""; static String Targa_A = ""; static String Stato_immatricolazione_A = ""; static String Rimorchio_A = ""; static String Stato_immatricolazione2_A = ""; static String marcaETipoA = ""; static String targaA = ""; static String statoImmatricolazioneA = ""; static String rimorchioA = ""; static String statoImmatricolazione2A = "";
static String Denominazione_A = ""; static String Numero_Polizza_A = ""; static String N_carta_verde_A = ""; static String Data_Inizio_Dal_A = ""; static String Data_Scadenza_Al_A = ""; static String Agenzia_A = ""; static String Denominazione_agenzia_A = ""; static String Indirizzo_agenzia_A = ""; static String Stato_agenzia_A = ""; static String N_tel_mail_agenzia_A = ""; static bool FLAG_danni_mat_assicurati_A = false; static String denominazioneA = ""; static String numeroPolizzaA = ""; static String nCartaVerdeA = ""; static String dataInizioDalA = ""; static String dataScadenzaAlA = ""; static String agenziaA = ""; static String denominazioneAgenziaA = ""; static String indirizzoAgenziaA = ""; static String statoAgenziaA = ""; static String nTelMailAgenziaA = ""; static bool flagDanniMatAssicuratiA = false;
static String Cognome_cond_A = ""; static String Nome_cond_A = ""; static String Data_nascita_cond_A = ""; static String Cod_fiscale_cond_A = ""; static String Indirizzo_cond_A = ""; static String Stato_cond_A = ""; static String N_tel_mail_cond_A = ""; static String Email_cond_A = ""; static String N_Patente_cond_A = ""; static String Scadenza_cond_A = ""; static String Categoria_cond_A = ""; static String cognomeCondA = ""; static String nomeCondA = ""; static String dataNascitaCondA = ""; static String codFiscaleCondA = ""; static String indirizzoCondA = ""; static String statoCondA = ""; static String nTelMailCondA = ""; static String emailCondA = ""; static String nPatenteCondA = ""; static String scadenzaCondA = ""; static String categoriaCondA = "";
static List<String> puntiUrtoA_List = []; static String danni_visibili_A = ""; static String osservazioni_A = ""; static Map<int, bool> circostanzeA = {}; static int totaleCrocetteA = 0; static List<Offset?> puntiFirmaA = []; static List<String> puntiUrtoA_List = []; static String danniVisibiliA = ""; static String osservazioniA = ""; static Map<int, bool> circostanzeA = {}; static int totaleCrocetteA = 0; static List<Offset?> puntiFirmaA = [];
// --- DATI LATO B (GIALLO) --- // --- DATI LATO B (GIALLO) ---
static String Cognome_contraente_B = ""; static String Nome_contraente_B = ""; static String Codice_Fiscale_contraente_B = ""; static String Indirizzo_contraente_B = ""; static String CAP_contraente_B = ""; static String Stato_contraente_B = ""; static String N_telefono_mail_contraente_B = ""; static String Email_contraente_B = ""; static String cognomeContraenteB = ""; static String nomeContraenteB = ""; static String codiceFiscaleContraenteB = ""; static String indirizzoContraenteB = ""; static String capContraenteB = ""; static String statoContraenteB = ""; static String nTelefonoMailContraenteB = ""; static String emailContraenteB = "";
static String Marca_e_Tipo_B = ""; static String Targa_B = ""; static String Stato_immatricolazione_B = ""; static String Rimorchio_B = ""; static String Stato_immatricolazione2_B = ""; static String marcaETipoB = ""; static String targaB = ""; static String statoImmatricolazioneB = ""; static String rimorchioB = ""; static String statoImmatricolazione2B = "";
static String Denominazione_B = ""; static String Numero_Polizza_B = ""; static String N_carta_verde_B = ""; static String Data_Inizio_Dal_B = ""; static String Data_Scadenza_Al_B = ""; static String Agenzia_B = ""; static String Denominazione_agenzia_B = ""; static String Indirizzo_agenzia_B = ""; static String Stato_agenzia_B = ""; static String N_tel_mail_agenzia_B = ""; static bool FLAG_danni_mat_assicurati_B = false; static String denominazioneB = ""; static String numeroPolizzaB = ""; static String nCartaVerdeB = ""; static String dataInizioDalB = ""; static String dataScadenzaAlB = ""; static String agenziaB = ""; static String denominazioneAgenziaB = ""; static String indirizzoAgenziaB = ""; static String statoAgenziaB = ""; static String nTelMailAgenziaB = ""; static bool flagDanniMatAssicuratiB = false;
static String Cognome_cond_B = ""; static String Nome_cond_B = ""; static String Data_nascita_cond_B = ""; static String Cod_fiscale_cond_B = ""; static String Indirizzo_cond_B = ""; static String Stato_cond_B = ""; static String N_tel_mail_cond_B = ""; static String Email_cond_B = ""; static String N_Patente_cond_B = ""; static String Scadenza_cond_B = ""; static String Categoria_cond_B = ""; static String cognomeCondB = ""; static String nomeCondB = ""; static String dataNascitaCondB = ""; static String codFiscaleCondB = ""; static String indirizzoCondB = ""; static String statoCondB = ""; static String nTelMailCondB = ""; static String emailCondB = ""; static String nPatenteCondB = ""; static String scadenzaCondB = ""; static String categoriaCondB = "";
static List<String> puntiUrtoB_List = []; static String danni_visibili_B = ""; static String osservazioni_B = ""; static Map<int, bool> circostanzeB = {}; static int totaleCrocetteB = 0; static List<Offset?> puntiFirmaB = []; static List<String> puntiUrtoB_List = []; static String danniVisibiliB = ""; static String osservazioniB = ""; static Map<int, bool> circostanzeB = {}; static int totaleCrocetteB = 0; static List<Offset?> puntiFirmaB = [];
// --- DATI FEA (Firma Elettronica Avanzata) --- // --- DATI FEA (Firma Elettronica Avanzata) ---
static bool feaVerifiedA = false; static bool feaVerifiedA = false;
@ -125,8 +125,8 @@ class GlobalData {
// --- RESET TOTALE --- // --- RESET TOTALE ---
static void reset() { static void reset() {
latoCorrente = 'A'; latoCorrente = 'A';
data_incidente = ""; ora = ""; luogo = ""; testimoni = ""; feriti = false; dataIncidente = ""; ora = ""; luogo = ""; testimoni = ""; feriti = false;
Veicoli_danni_materiali_oltre = false; Oggetti_diversi_danni_materiali = false; veicoliDanniMaterialiOltre = false; oggettiDiversiDanniMateriali = false;
resetA(); resetA();
resetB(); resetB();
elementi = []; tratti = []; elementi = []; tratti = [];
@ -145,20 +145,20 @@ class GlobalData {
} }
static void resetA() { static void resetA() {
Cognome_contraente_A = ""; Nome_contraente_A = ""; Codice_Fiscale_contraente_A = ""; Indirizzo_contraente_A = ""; CAP_contraente_A = ""; Stato_contraente_A = ""; N_telefono_mail_contraente_A = ""; Email_contraente_A = ""; cognomeContraenteA = ""; nomeContraenteA = ""; codiceFiscaleContraenteA = ""; indirizzoContraenteA = ""; capContraenteA = ""; statoContraenteA = ""; nTelefonoMailContraenteA = ""; emailContraenteA = "";
Marca_e_Tipo_A = ""; Targa_A = ""; Stato_immatricolazione_A = ""; Rimorchio_A = ""; Stato_immatricolazione2_A = ""; marcaETipoA = ""; targaA = ""; statoImmatricolazioneA = ""; rimorchioA = ""; statoImmatricolazione2A = "";
Denominazione_A = ""; Numero_Polizza_A = ""; N_carta_verde_A = ""; Data_Inizio_Dal_A = ""; Data_Scadenza_Al_A = ""; Agenzia_A = ""; Denominazione_agenzia_A = ""; Indirizzo_agenzia_A = ""; Stato_agenzia_A = ""; N_tel_mail_agenzia_A = ""; FLAG_danni_mat_assicurati_A = false; denominazioneA = ""; numeroPolizzaA = ""; nCartaVerdeA = ""; dataInizioDalA = ""; dataScadenzaAlA = ""; agenziaA = ""; denominazioneAgenziaA = ""; indirizzoAgenziaA = ""; statoAgenziaA = ""; nTelMailAgenziaA = ""; flagDanniMatAssicuratiA = false;
Cognome_cond_A = ""; Nome_cond_A = ""; Data_nascita_cond_A = ""; Cod_fiscale_cond_A = ""; Indirizzo_cond_A = ""; Stato_cond_A = ""; N_tel_mail_cond_A = ""; Email_cond_A = ""; N_Patente_cond_A = ""; Scadenza_cond_A = ""; Categoria_cond_A = ""; cognomeCondA = ""; nomeCondA = ""; dataNascitaCondA = ""; codFiscaleCondA = ""; indirizzoCondA = ""; statoCondA = ""; nTelMailCondA = ""; emailCondA = ""; nPatenteCondA = ""; scadenzaCondA = ""; categoriaCondA = "";
puntiUrtoA_List = []; danni_visibili_A = ""; osservazioni_A = ""; circostanzeA = {}; totaleCrocetteA = 0; puntiFirmaA = []; puntiUrtoA_List = []; danniVisibiliA = ""; osservazioniA = ""; circostanzeA = {}; totaleCrocetteA = 0; puntiFirmaA = [];
feaVerifiedA = false; otpDataOraA = ""; otpIdA = ""; feaVerifiedA = false; otpDataOraA = ""; otpIdA = "";
} }
static void resetB() { static void resetB() {
Cognome_contraente_B = ""; Nome_contraente_B = ""; Codice_Fiscale_contraente_B = ""; Indirizzo_contraente_B = ""; CAP_contraente_B = ""; Stato_contraente_B = ""; N_telefono_mail_contraente_B = ""; Email_contraente_B = ""; cognomeContraenteB = ""; nomeContraenteB = ""; codiceFiscaleContraenteB = ""; indirizzoContraenteB = ""; capContraenteB = ""; statoContraenteB = ""; nTelefonoMailContraenteB = ""; emailContraenteB = "";
Marca_e_Tipo_B = ""; Targa_B = ""; Stato_immatricolazione_B = ""; Rimorchio_B = ""; Stato_immatricolazione2_B = ""; marcaETipoB = ""; targaB = ""; statoImmatricolazioneB = ""; rimorchioB = ""; statoImmatricolazione2B = "";
Denominazione_B = ""; Numero_Polizza_B = ""; N_carta_verde_B = ""; Data_Inizio_Dal_B = ""; Data_Scadenza_Al_B = ""; Agenzia_B = ""; Denominazione_agenzia_B = ""; Indirizzo_agenzia_B = ""; Stato_agenzia_B = ""; N_tel_mail_agenzia_B = ""; FLAG_danni_mat_assicurati_B = false; denominazioneB = ""; numeroPolizzaB = ""; nCartaVerdeB = ""; dataInizioDalB = ""; dataScadenzaAlB = ""; agenziaB = ""; denominazioneAgenziaB = ""; indirizzoAgenziaB = ""; statoAgenziaB = ""; nTelMailAgenziaB = ""; flagDanniMatAssicuratiB = false;
Cognome_cond_B = ""; Nome_cond_B = ""; Data_nascita_cond_B = ""; Cod_fiscale_cond_B = ""; Indirizzo_cond_B = ""; Stato_cond_B = ""; N_tel_mail_cond_B = ""; Email_cond_B = ""; N_Patente_cond_B = ""; Scadenza_cond_B = ""; Categoria_cond_B = ""; cognomeCondB = ""; nomeCondB = ""; dataNascitaCondB = ""; codFiscaleCondB = ""; indirizzoCondB = ""; statoCondB = ""; nTelMailCondB = ""; emailCondB = ""; nPatenteCondB = ""; scadenzaCondB = ""; categoriaCondB = "";
puntiUrtoB_List = []; danni_visibili_B = ""; osservazioni_B = ""; circostanzeB = {}; totaleCrocetteB = 0; puntiFirmaB = []; puntiUrtoB_List = []; danniVisibiliB = ""; osservazioniB = ""; circostanzeB = {}; totaleCrocetteB = 0; puntiFirmaB = [];
feaVerifiedB = false; otpDataOraB = ""; otpIdB = ""; feaVerifiedB = false; otpDataOraB = ""; otpIdB = "";
} }
@ -167,30 +167,30 @@ class GlobalData {
idScambioTemporaneo = null; idScambioTemporaneo = null;
// Header // Header
data_incidente = "01/01/2024"; ora = "12:30"; luogo = "ROMA, VIA DEL CORSO 10"; testimoni = "SIG. BIANCHI GIOVANNI, VIA VERDI 5, MILANO"; dataIncidente = "01/01/2024"; ora = "12:30"; luogo = "ROMA, VIA DEL CORSO 10"; testimoni = "SIG. BIANCHI GIOVANNI, VIA VERDI 5, MILANO";
feriti = false; Veicoli_danni_materiali_oltre = false; Oggetti_diversi_danni_materiali = true; feriti = false; veicoliDanniMaterialiOltre = false; oggettiDiversiDanniMateriali = true;
if (latoCorrente == 'A') { if (latoCorrente == 'A') {
// Dati A // Dati A
Cognome_contraente_A = "ROSSI"; Nome_contraente_A = "MARIO"; Codice_Fiscale_contraente_A = "RSSMRA80A01H501U"; Indirizzo_contraente_A = "VIA ROMA 1"; CAP_contraente_A = "00100"; Stato_contraente_A = "ITALIA"; N_telefono_mail_contraente_A = "333.1234567"; Email_contraente_A = "mario.rossi@email.it"; cognomeContraenteA = "ROSSI"; nomeContraenteA = "MARIO"; codiceFiscaleContraenteA = "RSSMRA80A01H501U"; indirizzoContraenteA = "VIA ROMA 1"; capContraenteA = "00100"; statoContraenteA = "ITALIA"; nTelefonoMailContraenteA = "333.1234567"; emailContraenteA = "mario.rossi@email.it";
Marca_e_Tipo_A = "FIAT PANDA"; Targa_A = "AA123AA"; Stato_immatricolazione_A = "IT"; Rimorchio_A = ""; Stato_immatricolazione2_A = ""; marcaETipoA = "FIAT PANDA"; targaA = "AA123AA"; statoImmatricolazioneA = "IT"; rimorchioA = ""; statoImmatricolazione2A = "";
Denominazione_A = "GENERALI"; Numero_Polizza_A = "123456"; N_carta_verde_A = "CV-001"; Data_Inizio_Dal_A = "01/01/2023"; Data_Scadenza_Al_A = "01/01/2024"; denominazioneA = "GENERALI"; numeroPolizzaA = "123456"; nCartaVerdeA = "CV-001"; dataInizioDalA = "01/01/2023"; dataScadenzaAlA = "01/01/2024";
Agenzia_A = "ROMA"; Denominazione_agenzia_A = "AG. CENTRALE"; Indirizzo_agenzia_A = "VIA PO 20"; Stato_agenzia_A = "IT"; N_tel_mail_agenzia_A = "ag@mail.it"; FLAG_danni_mat_assicurati_A = true; agenziaA = "ROMA"; denominazioneAgenziaA = "AG. CENTRALE"; indirizzoAgenziaA = "VIA PO 20"; statoAgenziaA = "IT"; nTelMailAgenziaA = "ag@mail.it"; flagDanniMatAssicuratiA = true;
Cognome_cond_A = "ROSSI"; Nome_cond_A = "MARIO"; Data_nascita_cond_A = "01/01/1980"; Cod_fiscale_cond_A = "RSSMRA80"; Indirizzo_cond_A = "VIA ROMA 1"; Stato_cond_A = "IT"; N_tel_mail_cond_A = "333.1234567"; Email_cond_A = "mario.rossi@email.it"; cognomeCondA = "ROSSI"; nomeCondA = "MARIO"; dataNascitaCondA = "01/01/1980"; codFiscaleCondA = "RSSMRA80"; indirizzoCondA = "VIA ROMA 1"; statoCondA = "IT"; nTelMailCondA = "333.1234567"; emailCondA = "mario.rossi@email.it";
N_Patente_cond_A = "PAT-001"; Scadenza_cond_A = "01/01/2030"; Categoria_cond_A = "B"; nPatenteCondA = "PAT-001"; scadenzaCondA = "01/01/2030"; categoriaCondA = "B";
puntiUrtoA_List = ["Anteriore"]; danni_visibili_A = "PARAURTI ROTTO"; osservazioni_A = "RAGIONE PIENA"; circostanzeA = {1:true}; puntiUrtoA_List = ["Anteriore"]; danniVisibiliA = "PARAURTI ROTTO"; osservazioniA = "RAGIONE PIENA"; circostanzeA = {1:true};
puntiFirmaA = [const Offset(0,0), const Offset(10,10)]; puntiFirmaA = [const Offset(0,0), const Offset(10,10)];
tratti = [TrattoPenna([const Offset(10,10), const Offset(100,100)], tipo: 'penna')]; tratti = [TrattoPenna([const Offset(10,10), const Offset(100,100)], tipo: 'penna')];
resetB(); resetB();
} else { } else {
// Dati B // Dati B
Cognome_contraente_B = "VERDI"; Nome_contraente_B = "LUIGI"; Codice_Fiscale_contraente_B = "VRDLGU90B02F205Z"; Indirizzo_contraente_B = "MILANO"; CAP_contraente_B = "20100"; Stato_contraente_B = "ITALIA"; N_telefono_mail_contraente_B = "340.9876543"; Email_contraente_B = "luigi.verdi@email.it"; cognomeContraenteB = "VERDI"; nomeContraenteB = "LUIGI"; codiceFiscaleContraenteB = "VRDLGU90B02F205Z"; indirizzoContraenteB = "MILANO"; capContraenteB = "20100"; statoContraenteB = "ITALIA"; nTelefonoMailContraenteB = "340.9876543"; emailContraenteB = "luigi.verdi@email.it";
Marca_e_Tipo_B = "FORD FIESTA"; Targa_B = "BB987BB"; Stato_immatricolazione_B = "IT"; Rimorchio_B = ""; Stato_immatricolazione2_B = ""; marcaETipoB = "FORD FIESTA"; targaB = "BB987BB"; statoImmatricolazioneB = "IT"; rimorchioB = ""; statoImmatricolazione2B = "";
Denominazione_B = "ALLIANZ"; Numero_Polizza_B = "987654"; N_carta_verde_B = "CV-002"; Data_Inizio_Dal_B = "01/01/2023"; Data_Scadenza_Al_B = "01/01/2024"; denominazioneB = "ALLIANZ"; numeroPolizzaB = "987654"; nCartaVerdeB = "CV-002"; dataInizioDalB = "01/01/2023"; dataScadenzaAlB = "01/01/2024";
Agenzia_B = "MILANO"; Denominazione_agenzia_B = "AG. NORD"; Indirizzo_agenzia_B = "VIA DANTE 1"; Stato_agenzia_B = "IT"; N_tel_mail_agenzia_B = "mi@mail.it"; FLAG_danni_mat_assicurati_B = false; agenziaB = "MILANO"; denominazioneAgenziaB = "AG. NORD"; indirizzoAgenziaB = "VIA DANTE 1"; statoAgenziaB = "IT"; nTelMailAgenziaB = "mi@mail.it"; flagDanniMatAssicuratiB = false;
Cognome_cond_B = "VERDI"; Nome_cond_B = "LUIGI"; Data_nascita_cond_B = "02/02/1990"; Cod_fiscale_cond_B = "VRDLGU90"; Indirizzo_cond_B = "MILANO"; Stato_cond_B = "IT"; N_tel_mail_cond_B = "340.9876543"; Email_cond_B = "luigi.verdi@email.it"; cognomeCondB = "VERDI"; nomeCondB = "LUIGI"; dataNascitaCondB = "02/02/1990"; codFiscaleCondB = "VRDLGU90"; indirizzoCondB = "MILANO"; statoCondB = "IT"; nTelMailCondB = "340.9876543"; emailCondB = "luigi.verdi@email.it";
N_Patente_cond_B = "PAT-002"; Scadenza_cond_B = "02/02/2030"; Categoria_cond_B = "B"; nPatenteCondB = "PAT-002"; scadenzaCondB = "02/02/2030"; categoriaCondB = "B";
puntiUrtoB_List = ["Posteriore"]; danni_visibili_B = "PARAURTI POST ROTTO"; osservazioni_B = "NON HO VISTO"; circostanzeB = {12:true}; puntiUrtoB_List = ["Posteriore"]; danniVisibiliB = "PARAURTI POST ROTTO"; osservazioniB = "NON HO VISTO"; circostanzeB = {12:true};
puntiFirmaB = [const Offset(0,0), const Offset(10,10)]; puntiFirmaB = [const Offset(0,0), const Offset(10,10)];
resetA(); resetA();
} }

View file

@ -54,23 +54,23 @@ class PdfEngine {
}); });
// 1.1 GESTIONE SPECIALE DANNI (Split forzato a 20 caratteri) // 1.1 GESTIONE SPECIALE DANNI (Split forzato a 20 caratteri)
_riempiCampoSplit(mappaCampi, GlobalData.danni_visibili_A, "DANNI_VIS_A1", "DANNI_VIS_A2"); _riempiCampoSplit(mappaCampi, GlobalData.danniVisibiliA, "DANNI_VIS_A1", "DANNI_VIS_A2");
_riempiCampoSplit(mappaCampi, GlobalData.danni_visibili_B, "DANNI_VIS_B1", "DANNI_VIS_B2"); _riempiCampoSplit(mappaCampi, GlobalData.danniVisibiliB, "DANNI_VIS_B1", "DANNI_VIS_B2");
// 2. CHECKBOX // 2. CHECKBOX
_scriviX(mappaCampi, [GlobalData.feriti ? CaiMapping.feriti_SI : CaiMapping.feriti_NO]); _scriviX(mappaCampi, [GlobalData.feriti ? CaiMapping.feriti_SI : CaiMapping.feriti_NO]);
_scriviX(mappaCampi, [GlobalData.Veicoli_danni_materiali_oltre ? CaiMapping.danni_veicoli_SI : CaiMapping.danni_veicoli_NO]); _scriviX(mappaCampi, [GlobalData.veicoliDanniMaterialiOltre ? CaiMapping.danni_veicoli_SI : CaiMapping.danni_veicoli_NO]);
_scriviX(mappaCampi, [GlobalData.Oggetti_diversi_danni_materiali ? CaiMapping.danni_oggetti_SI : CaiMapping.danni_oggetti_NO]); _scriviX(mappaCampi, [GlobalData.oggettiDiversiDanniMateriali ? CaiMapping.danni_oggetti_SI : CaiMapping.danni_oggetti_NO]);
_scriviX(mappaCampi, [GlobalData.FLAG_danni_mat_assicurati_A ? CaiMapping.danni_mat_A_SI : CaiMapping.danni_mat_A_NO]); _scriviX(mappaCampi, [GlobalData.flagDanniMatAssicuratiA ? CaiMapping.danni_mat_A_SI : CaiMapping.danni_mat_A_NO]);
_scriviX(mappaCampi, [GlobalData.FLAG_danni_mat_assicurati_B ? CaiMapping.danni_mat_B_SI : CaiMapping.danni_mat_B_NO]); _scriviX(mappaCampi, [GlobalData.flagDanniMatAssicuratiB ? CaiMapping.danni_mat_B_SI : CaiMapping.danni_mat_B_NO]);
String catA = GlobalData.Categoria_cond_A.toUpperCase().trim(); String catA = GlobalData.categoriaCondA.toUpperCase().trim();
if (catA == 'A') _scriviX(mappaCampi, ['cat_a_A']); if (catA == 'A') _scriviX(mappaCampi, ['cat_a_A']);
else if (catA == 'B') _scriviX(mappaCampi, ['cat_b_A']); else if (catA == 'B') _scriviX(mappaCampi, ['cat_b_A']);
else if (catA.isNotEmpty) _scriviTesto(mappaCampi, ['cat_altro_A'], catA); else if (catA.isNotEmpty) _scriviTesto(mappaCampi, ['cat_altro_A'], catA);
String catB = GlobalData.Categoria_cond_B.toUpperCase().trim(); String catB = GlobalData.categoriaCondB.toUpperCase().trim();
if (catB == 'A') _scriviX(mappaCampi, ['cat_a_B']); if (catB == 'A') _scriviX(mappaCampi, ['cat_a_B']);
else if (catB == 'B') _scriviX(mappaCampi, ['cat_b_B']); else if (catB == 'B') _scriviX(mappaCampi, ['cat_b_B']);
else if (catB.isNotEmpty) _scriviTesto(mappaCampi, ['cat_altro_B'], catB); else if (catB.isNotEmpty) _scriviTesto(mappaCampi, ['cat_altro_B'], catB);
@ -196,10 +196,10 @@ class PdfEngine {
page.graphics.drawString("VEICOLO A (Blu)", boldFont, bounds: Rect.fromLTWH(0, currentY, colWidth, 20), brush: PdfSolidBrush(PdfColor(0, 0, 200))); page.graphics.drawString("VEICOLO A (Blu)", boldFont, bounds: Rect.fromLTWH(0, currentY, colWidth, 20), brush: PdfSolidBrush(PdfColor(0, 0, 200)));
currentY += 25; currentY += 25;
String nomeA = "${GlobalData.Nome_cond_A} ${GlobalData.Cognome_cond_A}".trim(); String nomeA = "${GlobalData.nomeCondA} ${GlobalData.cognomeCondA}".trim();
if (nomeA.isEmpty) nomeA = "${GlobalData.Nome_contraente_A} ${GlobalData.Cognome_contraente_A}".trim(); if (nomeA.isEmpty) nomeA = "${GlobalData.nomeContraenteA} ${GlobalData.cognomeContraenteA}".trim();
String cfA = GlobalData.Cod_fiscale_cond_A.isNotEmpty ? GlobalData.Cod_fiscale_cond_A : GlobalData.Codice_Fiscale_contraente_A; String cfA = GlobalData.codFiscaleCondA.isNotEmpty ? GlobalData.codFiscaleCondA : GlobalData.codiceFiscaleContraenteA;
String telA = GlobalData.N_tel_mail_cond_A.isNotEmpty ? GlobalData.N_tel_mail_cond_A : GlobalData.N_telefono_mail_contraente_A; String telA = GlobalData.nTelMailCondA.isNotEmpty ? GlobalData.nTelMailCondA : GlobalData.nTelefonoMailContraenteA;
page.graphics.drawString("Conducente: $nomeA", regularFont, bounds: Rect.fromLTWH(0, currentY, colWidth, 20)); page.graphics.drawString("Conducente: $nomeA", regularFont, bounds: Rect.fromLTWH(0, currentY, colWidth, 20));
currentY += 20; currentY += 20;
@ -235,10 +235,10 @@ class PdfEngine {
page.graphics.drawString("VEICOLO B (Giallo)", boldFont, bounds: Rect.fromLTWH(startXB, currentY, colWidth, 20), brush: PdfSolidBrush(PdfColor(200, 150, 0))); page.graphics.drawString("VEICOLO B (Giallo)", boldFont, bounds: Rect.fromLTWH(startXB, currentY, colWidth, 20), brush: PdfSolidBrush(PdfColor(200, 150, 0)));
currentY += 25; currentY += 25;
String nomeB = "${GlobalData.Nome_cond_B} ${GlobalData.Cognome_cond_B}".trim(); String nomeB = "${GlobalData.nomeCondB} ${GlobalData.cognomeCondB}".trim();
if (nomeB.isEmpty) nomeB = "${GlobalData.Nome_contraente_B} ${GlobalData.Cognome_contraente_B}".trim(); if (nomeB.isEmpty) nomeB = "${GlobalData.nomeContraenteB} ${GlobalData.cognomeContraenteB}".trim();
String cfB = GlobalData.Cod_fiscale_cond_B.isNotEmpty ? GlobalData.Cod_fiscale_cond_B : GlobalData.Codice_Fiscale_contraente_B; String cfB = GlobalData.codFiscaleCondB.isNotEmpty ? GlobalData.codFiscaleCondB : GlobalData.codiceFiscaleContraenteB;
String telB = GlobalData.N_tel_mail_cond_B.isNotEmpty ? GlobalData.N_tel_mail_cond_B : GlobalData.N_telefono_mail_contraente_B; String telB = GlobalData.nTelMailCondB.isNotEmpty ? GlobalData.nTelMailCondB : GlobalData.nTelefonoMailContraenteB;
page.graphics.drawString("Conducente: $nomeB", regularFont, bounds: Rect.fromLTWH(startXB, currentY, colWidth, 20)); page.graphics.drawString("Conducente: $nomeB", regularFont, bounds: Rect.fromLTWH(startXB, currentY, colWidth, 20));
currentY += 20; currentY += 20;
@ -434,88 +434,88 @@ class PdfEngine {
static String _valoreDaGlobal(String key) { static String _valoreDaGlobal(String key) {
switch (key) { switch (key) {
case 'data_incidente': return GlobalData.data_incidente; case 'dataIncidente': return GlobalData.dataIncidente;
case 'ora': return GlobalData.ora; case 'ora': return GlobalData.ora;
case 'luogo': return GlobalData.luogo; case 'luogo': return GlobalData.luogo;
case 'testimoni': return GlobalData.testimoni; case 'testimoni': return GlobalData.testimoni;
case 'danni_visibili_A': return GlobalData.danni_visibili_A; case 'danniVisibiliA': return GlobalData.danniVisibiliA;
case 'osservazioni_A': return GlobalData.osservazioni_A; case 'osservazioniA': return GlobalData.osservazioniA;
case 'danni_visibili_B': return GlobalData.danni_visibili_B; case 'danniVisibiliB': return GlobalData.danniVisibiliB;
case 'osservazioni_B': return GlobalData.osservazioni_B; case 'osservazioniB': return GlobalData.osservazioniB;
case 'Cognome_contraente_A': return GlobalData.Cognome_contraente_A; case 'cognomeContraenteA': return GlobalData.cognomeContraenteA;
case 'Nome_contraente_A': return GlobalData.Nome_contraente_A; case 'nomeContraenteA': return GlobalData.nomeContraenteA;
case 'Codice_Fiscale_contraente_A': return GlobalData.Codice_Fiscale_contraente_A; case 'codiceFiscaleContraenteA': return GlobalData.codiceFiscaleContraenteA;
case 'Indirizzo_contraente_A': return GlobalData.Indirizzo_contraente_A; case 'indirizzoContraenteA': return GlobalData.indirizzoContraenteA;
case 'CAP_contraente_A': return GlobalData.CAP_contraente_A; case 'capContraenteA': return GlobalData.capContraenteA;
case 'Stato_contraente_A': return GlobalData.Stato_contraente_A; case 'statoContraenteA': return GlobalData.statoContraenteA;
case 'N_telefono_mail_contraente_A': case 'nTelefonoMailContraenteA':
return GlobalData.Email_contraente_A.isNotEmpty return GlobalData.emailContraenteA.isNotEmpty
? "${GlobalData.N_telefono_mail_contraente_A} - ${GlobalData.Email_contraente_A}" ? "${GlobalData.nTelefonoMailContraenteA} - ${GlobalData.emailContraenteA}"
: GlobalData.N_telefono_mail_contraente_A; : GlobalData.nTelefonoMailContraenteA;
case 'Marca_e_Tipo_A': return GlobalData.Marca_e_Tipo_A; case 'marcaETipoA': return GlobalData.marcaETipoA;
case 'Targa_A': return GlobalData.Targa_A; case 'targaA': return GlobalData.targaA;
case 'Stato_immatricolazione_A': return GlobalData.Stato_immatricolazione_A; case 'statoImmatricolazioneA': return GlobalData.statoImmatricolazioneA;
case 'Rimorchio_A': return GlobalData.Rimorchio_A; case 'rimorchioA': return GlobalData.rimorchioA;
case 'Stato_immatricolazione2_A': return GlobalData.Stato_immatricolazione2_A; case 'statoImmatricolazione2A': return GlobalData.statoImmatricolazione2A;
case 'Denominazione_A': return GlobalData.Denominazione_A; case 'denominazioneA': return GlobalData.denominazioneA;
case 'Numero_Polizza_A': return GlobalData.Numero_Polizza_A; case 'numeroPolizzaA': return GlobalData.numeroPolizzaA;
case 'N_carta_verde_A': return GlobalData.N_carta_verde_A; case 'nCartaVerdeA': return GlobalData.nCartaVerdeA;
case 'Data_Inizio_Dal_A': return GlobalData.Data_Inizio_Dal_A; case 'dataInizioDalA': return GlobalData.dataInizioDalA;
case 'Data_Scadenza_Al_A': return GlobalData.Data_Scadenza_Al_A; case 'dataScadenzaAlA': return GlobalData.dataScadenzaAlA;
case 'Agenzia_A': return GlobalData.Agenzia_A; case 'agenziaA': return GlobalData.agenziaA;
case 'Indirizzo_agenzia_A': return GlobalData.Indirizzo_agenzia_A; case 'indirizzoAgenziaA': return GlobalData.indirizzoAgenziaA;
case 'Stato_agenzia_A': return GlobalData.Stato_agenzia_A; case 'statoAgenziaA': return GlobalData.statoAgenziaA;
case 'Denominazione_agenzia_A': return GlobalData.Denominazione_agenzia_A; case 'denominazioneAgenziaA': return GlobalData.denominazioneAgenziaA;
case 'N_tel_mail_agenzia_A': return GlobalData.N_tel_mail_agenzia_A; case 'nTelMailAgenziaA': return GlobalData.nTelMailAgenziaA;
case 'Cognome_cond_A': return GlobalData.Cognome_cond_A; case 'cognomeCondA': return GlobalData.cognomeCondA;
case 'Nome_cond_A': return GlobalData.Nome_cond_A; case 'nomeCondA': return GlobalData.nomeCondA;
case 'Data_nascita_cond_A': return GlobalData.Data_nascita_cond_A; case 'dataNascitaCondA': return GlobalData.dataNascitaCondA;
case 'Cod_fiscale_cond_A': return GlobalData.Cod_fiscale_cond_A; case 'codFiscaleCondA': return GlobalData.codFiscaleCondA;
case 'Indirizzo_cond_A': return GlobalData.Indirizzo_cond_A; case 'indirizzoCondA': return GlobalData.indirizzoCondA;
case 'Stato_cond_A': return GlobalData.Stato_cond_A; case 'statoCondA': return GlobalData.statoCondA;
case 'N_tel_mail_cond_A': case 'nTelMailCondA':
return GlobalData.Email_cond_A.isNotEmpty return GlobalData.emailCondA.isNotEmpty
? "${GlobalData.N_tel_mail_cond_A} - ${GlobalData.Email_cond_A}" ? "${GlobalData.nTelMailCondA} - ${GlobalData.emailCondA}"
: GlobalData.N_tel_mail_cond_A; : GlobalData.nTelMailCondA;
case 'N_Patente_cond_A': return GlobalData.N_Patente_cond_A; case 'nPatenteCondA': return GlobalData.nPatenteCondA;
case 'Scadenza_cond_A': return GlobalData.Scadenza_cond_A; case 'scadenzaCondA': return GlobalData.scadenzaCondA;
case 'Cognome_contraente_B': return GlobalData.Cognome_contraente_B; case 'cognomeContraenteB': return GlobalData.cognomeContraenteB;
case 'Nome_contraente_B': return GlobalData.Nome_contraente_B; case 'nomeContraenteB': return GlobalData.nomeContraenteB;
case 'Codice_Fiscale_contraente_B': return GlobalData.Codice_Fiscale_contraente_B; case 'codiceFiscaleContraenteB': return GlobalData.codiceFiscaleContraenteB;
case 'Indirizzo_contraente_B': return GlobalData.Indirizzo_contraente_B; case 'indirizzoContraenteB': return GlobalData.indirizzoContraenteB;
case 'CAP_contraente_B': return GlobalData.CAP_contraente_B; case 'capContraenteB': return GlobalData.capContraenteB;
case 'Stato_contraente_B': return GlobalData.Stato_contraente_B; case 'statoContraenteB': return GlobalData.statoContraenteB;
case 'N_telefono_mail_contraente_B': case 'nTelefonoMailContraenteB':
return GlobalData.Email_contraente_B.isNotEmpty return GlobalData.emailContraenteB.isNotEmpty
? "${GlobalData.N_telefono_mail_contraente_B} - ${GlobalData.Email_contraente_B}" ? "${GlobalData.nTelefonoMailContraenteB} - ${GlobalData.emailContraenteB}"
: GlobalData.N_telefono_mail_contraente_B; : GlobalData.nTelefonoMailContraenteB;
case 'Marca_e_Tipo_B': return GlobalData.Marca_e_Tipo_B; case 'marcaETipoB': return GlobalData.marcaETipoB;
case 'Targa_B': return GlobalData.Targa_B; case 'targaB': return GlobalData.targaB;
case 'Stato_immatricolazione_B': return GlobalData.Stato_immatricolazione_B; case 'statoImmatricolazioneB': return GlobalData.statoImmatricolazioneB;
case 'Rimorchio_B': return GlobalData.Rimorchio_B; case 'rimorchioB': return GlobalData.rimorchioB;
case 'Stato_immatricolazione2_B': return GlobalData.Stato_immatricolazione2_B; case 'statoImmatricolazione2B': return GlobalData.statoImmatricolazione2B;
case 'Denominazione_B': return GlobalData.Denominazione_B; case 'denominazioneB': return GlobalData.denominazioneB;
case 'Numero_Polizza_B': return GlobalData.Numero_Polizza_B; case 'numeroPolizzaB': return GlobalData.numeroPolizzaB;
case 'N_carta_verde_B': return GlobalData.N_carta_verde_B; case 'nCartaVerdeB': return GlobalData.nCartaVerdeB;
case 'Data_Inizio_Dal_B': return GlobalData.Data_Inizio_Dal_B; case 'dataInizioDalB': return GlobalData.dataInizioDalB;
case 'Data_Scadenza_Al_B': return GlobalData.Data_Scadenza_Al_B; case 'dataScadenzaAlB': return GlobalData.dataScadenzaAlB;
case 'Agenzia_B': return GlobalData.Agenzia_B; case 'agenziaB': return GlobalData.agenziaB;
case 'Indirizzo_agenzia_B': return GlobalData.Indirizzo_agenzia_B; case 'indirizzoAgenziaB': return GlobalData.indirizzoAgenziaB;
case 'Stato_agenzia_B': return GlobalData.Stato_agenzia_B; case 'statoAgenziaB': return GlobalData.statoAgenziaB;
case 'Denominazione_agenzia_B': return GlobalData.Denominazione_agenzia_B; case 'denominazioneAgenziaB': return GlobalData.denominazioneAgenziaB;
case 'N_tel_mail_agenzia_B': return GlobalData.N_tel_mail_agenzia_B; case 'nTelMailAgenziaB': return GlobalData.nTelMailAgenziaB;
case 'Cognome_cond_B': return GlobalData.Cognome_cond_B; case 'cognomeCondB': return GlobalData.cognomeCondB;
case 'Nome_cond_B': return GlobalData.Nome_cond_B; case 'nomeCondB': return GlobalData.nomeCondB;
case 'Data_nascita_cond_B': return GlobalData.Data_nascita_cond_B; case 'dataNascitaCondB': return GlobalData.dataNascitaCondB;
case 'Cod_fiscale_cond_B': return GlobalData.Cod_fiscale_cond_B; case 'codFiscaleCondB': return GlobalData.codFiscaleCondB;
case 'Indirizzo_cond_B': return GlobalData.Indirizzo_cond_B; case 'indirizzoCondB': return GlobalData.indirizzoCondB;
case 'Stato_cond_B': return GlobalData.Stato_cond_B; case 'statoCondB': return GlobalData.statoCondB;
case 'N_tel_mail_cond_B': case 'nTelMailCondB':
return GlobalData.Email_cond_B.isNotEmpty return GlobalData.emailCondB.isNotEmpty
? "${GlobalData.N_tel_mail_cond_B} - ${GlobalData.Email_cond_B}" ? "${GlobalData.nTelMailCondB} - ${GlobalData.emailCondB}"
: GlobalData.N_tel_mail_cond_B; : GlobalData.nTelMailCondB;
case 'N_Patente_cond_B': return GlobalData.N_Patente_cond_B; case 'nPatenteCondB': return GlobalData.nPatenteCondB;
case 'Scadenza_cond_B': return GlobalData.Scadenza_cond_B; case 'scadenzaCondB': return GlobalData.scadenzaCondB;
default: return ""; default: return "";
} }
} }

View file

@ -10,34 +10,34 @@ class ProfiloService {
bool isA = lato == 'A'; bool isA = lato == 'A';
// Sezione 6-7 Contraente e Veicolo // Sezione 6-7 Contraente e Veicolo
await prefs.setString('${_prefix}nome_contraente', isA ? GlobalData.Nome_contraente_A : GlobalData.Nome_contraente_B); await prefs.setString('${_prefix}nome_contraente', isA ? GlobalData.nomeContraenteA : GlobalData.nomeContraenteB);
await prefs.setString('${_prefix}cognome_contraente', isA ? GlobalData.Cognome_contraente_A : GlobalData.Cognome_contraente_B); await prefs.setString('${_prefix}cognome_contraente', isA ? GlobalData.cognomeContraenteA : GlobalData.cognomeContraenteB);
await prefs.setString('${_prefix}cf_contraente', isA ? GlobalData.Codice_Fiscale_contraente_A : GlobalData.Codice_Fiscale_contraente_B); await prefs.setString('${_prefix}cf_contraente', isA ? GlobalData.codiceFiscaleContraenteA : GlobalData.codiceFiscaleContraenteB);
await prefs.setString('${_prefix}indirizzo_contraente', isA ? GlobalData.Indirizzo_contraente_A : GlobalData.Indirizzo_contraente_B); await prefs.setString('${_prefix}indirizzo_contraente', isA ? GlobalData.indirizzoContraenteA : GlobalData.indirizzoContraenteB);
await prefs.setString('${_prefix}cap_contraente', isA ? GlobalData.CAP_contraente_A : GlobalData.CAP_contraente_B); await prefs.setString('${_prefix}cap_contraente', isA ? GlobalData.capContraenteA : GlobalData.capContraenteB);
await prefs.setString('${_prefix}stato_contraente', isA ? GlobalData.Stato_contraente_A : GlobalData.Stato_contraente_B); await prefs.setString('${_prefix}stato_contraente', isA ? GlobalData.statoContraenteA : GlobalData.statoContraenteB);
await prefs.setString('user_tel', lato == 'A' ? GlobalData.N_telefono_mail_contraente_A : GlobalData.N_telefono_mail_contraente_B); await prefs.setString('user_tel', lato == 'A' ? GlobalData.nTelefonoMailContraenteA : GlobalData.nTelefonoMailContraenteB);
await prefs.setString('user_email', lato == 'A' ? GlobalData.Email_contraente_A : GlobalData.Email_contraente_B); await prefs.setString('user_email', lato == 'A' ? GlobalData.emailContraenteA : GlobalData.emailContraenteB);
await prefs.setString('${_prefix}marca_tipo', isA ? GlobalData.Marca_e_Tipo_A : GlobalData.Marca_e_Tipo_B); await prefs.setString('${_prefix}marca_tipo', isA ? GlobalData.marcaETipoA : GlobalData.marcaETipoB);
await prefs.setString('${_prefix}targa', isA ? GlobalData.Targa_A : GlobalData.Targa_B); await prefs.setString('${_prefix}targa', isA ? GlobalData.targaA : GlobalData.targaB);
await prefs.setString('${_prefix}stato_imm', isA ? GlobalData.Stato_immatricolazione_A : GlobalData.Stato_immatricolazione_B); await prefs.setString('${_prefix}stato_imm', isA ? GlobalData.statoImmatricolazioneA : GlobalData.statoImmatricolazioneB);
// Sezione 8 Assicurazione // Sezione 8 Assicurazione
await prefs.setString('${_prefix}denominazione_ass', isA ? GlobalData.Denominazione_A : GlobalData.Denominazione_B); await prefs.setString('${_prefix}denominazione_ass', isA ? GlobalData.denominazioneA : GlobalData.denominazioneB);
await prefs.setString('${_prefix}polizza_ass', isA ? GlobalData.Numero_Polizza_A : GlobalData.Numero_Polizza_B); await prefs.setString('${_prefix}polizza_ass', isA ? GlobalData.numeroPolizzaA : GlobalData.numeroPolizzaB);
await prefs.setString('${_prefix}agenzia_ass', isA ? GlobalData.Agenzia_A : GlobalData.Agenzia_B); await prefs.setString('${_prefix}agenzia_ass', isA ? GlobalData.agenziaA : GlobalData.agenziaB);
// Sezione 9 Conducente // Sezione 9 Conducente
await prefs.setString('${_prefix}nome_cond', isA ? GlobalData.Nome_cond_A : GlobalData.Nome_cond_B); await prefs.setString('${_prefix}nome_cond', isA ? GlobalData.nomeCondA : GlobalData.nomeCondB);
await prefs.setString('${_prefix}cognome_cond', isA ? GlobalData.Cognome_cond_A : GlobalData.Cognome_cond_B); await prefs.setString('${_prefix}cognome_cond', isA ? GlobalData.cognomeCondA : GlobalData.cognomeCondB);
await prefs.setString('${_prefix}data_nascita_cond', isA ? GlobalData.Data_nascita_cond_A : GlobalData.Data_nascita_cond_B); await prefs.setString('${_prefix}data_nascita_cond', isA ? GlobalData.dataNascitaCondA : GlobalData.dataNascitaCondB);
await prefs.setString('${_prefix}cf_cond', isA ? GlobalData.Cod_fiscale_cond_A : GlobalData.Cod_fiscale_cond_B); await prefs.setString('${_prefix}cf_cond', isA ? GlobalData.codFiscaleCondA : GlobalData.codFiscaleCondB);
await prefs.setString('${_prefix}indirizzo_cond', isA ? GlobalData.Indirizzo_cond_A : GlobalData.Indirizzo_cond_B); await prefs.setString('${_prefix}indirizzo_cond', isA ? GlobalData.indirizzoCondA : GlobalData.indirizzoCondB);
await prefs.setString('user_cond_tel', lato == 'A' ? GlobalData.N_tel_mail_cond_A : GlobalData.N_tel_mail_cond_B); await prefs.setString('user_cond_tel', lato == 'A' ? GlobalData.nTelMailCondA : GlobalData.nTelMailCondB);
await prefs.setString('user_cond_email', lato == 'A' ? GlobalData.Email_cond_A : GlobalData.Email_cond_B); await prefs.setString('user_cond_email', lato == 'A' ? GlobalData.emailCondA : GlobalData.emailCondB);
await prefs.setString('${_prefix}patente_cond', isA ? GlobalData.N_Patente_cond_A : GlobalData.N_Patente_cond_B); await prefs.setString('${_prefix}patente_cond', isA ? GlobalData.nPatenteCondA : GlobalData.nPatenteCondB);
await prefs.setString('${_prefix}scadenza_cond', isA ? GlobalData.Scadenza_cond_A : GlobalData.Scadenza_cond_B); await prefs.setString('${_prefix}scadenza_cond', isA ? GlobalData.scadenzaCondA : GlobalData.scadenzaCondB);
} }
/// Verifica se esiste un profilo salvato (almeno un cognome contraente o una targa). /// Verifica se esiste un profilo salvato (almeno un cognome contraente o una targa).
@ -55,59 +55,59 @@ class ProfiloService {
String getStr(String key) => prefs.getString('$_prefix$key') ?? ""; String getStr(String key) => prefs.getString('$_prefix$key') ?? "";
if (isA) { if (isA) {
GlobalData.Nome_contraente_A = getStr('nome_contraente'); GlobalData.nomeContraenteA = getStr('nome_contraente');
GlobalData.Cognome_contraente_A = getStr('cognome_contraente'); GlobalData.cognomeContraenteA = getStr('cognome_contraente');
GlobalData.Codice_Fiscale_contraente_A = getStr('cf_contraente'); GlobalData.codiceFiscaleContraenteA = getStr('cf_contraente');
GlobalData.Indirizzo_contraente_A = getStr('indirizzo_contraente'); GlobalData.indirizzoContraenteA = getStr('indirizzo_contraente');
GlobalData.CAP_contraente_A = getStr('cap_contraente'); GlobalData.capContraenteA = getStr('cap_contraente');
GlobalData.Stato_contraente_A = getStr('stato_contraente'); GlobalData.statoContraenteA = getStr('stato_contraente');
GlobalData.N_telefono_mail_contraente_A = prefs.getString('user_tel') ?? ""; GlobalData.nTelefonoMailContraenteA = prefs.getString('user_tel') ?? "";
GlobalData.Email_contraente_A = prefs.getString('user_email') ?? ""; GlobalData.emailContraenteA = prefs.getString('user_email') ?? "";
GlobalData.Marca_e_Tipo_A = getStr('marca_tipo'); GlobalData.marcaETipoA = getStr('marca_tipo');
GlobalData.Targa_A = getStr('targa'); GlobalData.targaA = getStr('targa');
GlobalData.Stato_immatricolazione_A = getStr('stato_imm'); GlobalData.statoImmatricolazioneA = getStr('stato_imm');
GlobalData.Denominazione_A = getStr('denominazione_ass'); GlobalData.denominazioneA = getStr('denominazione_ass');
GlobalData.Numero_Polizza_A = getStr('polizza_ass'); GlobalData.numeroPolizzaA = getStr('polizza_ass');
GlobalData.Agenzia_A = getStr('agenzia_ass'); GlobalData.agenziaA = getStr('agenzia_ass');
GlobalData.Nome_cond_A = getStr('nome_cond'); GlobalData.nomeCondA = getStr('nome_cond');
GlobalData.Cognome_cond_A = getStr('cognome_cond'); GlobalData.cognomeCondA = getStr('cognome_cond');
GlobalData.Data_nascita_cond_A = getStr('data_nascita_cond'); GlobalData.dataNascitaCondA = getStr('data_nascita_cond');
GlobalData.Cod_fiscale_cond_A = getStr('cf_cond'); GlobalData.codFiscaleCondA = getStr('cf_cond');
GlobalData.Indirizzo_cond_A = getStr('indirizzo_cond'); GlobalData.indirizzoCondA = getStr('indirizzo_cond');
GlobalData.N_tel_mail_cond_A = prefs.getString('user_cond_tel') ?? ""; GlobalData.nTelMailCondA = prefs.getString('user_cond_tel') ?? "";
GlobalData.Email_cond_A = prefs.getString('user_cond_email') ?? ""; GlobalData.emailCondA = prefs.getString('user_cond_email') ?? "";
GlobalData.N_Patente_cond_A = getStr('patente_cond'); GlobalData.nPatenteCondA = getStr('patente_cond');
GlobalData.Scadenza_cond_A = getStr('scadenza_cond'); GlobalData.scadenzaCondA = getStr('scadenza_cond');
} else { } else {
GlobalData.Nome_contraente_B = getStr('nome_contraente'); GlobalData.nomeContraenteB = getStr('nome_contraente');
GlobalData.Cognome_contraente_B = getStr('cognome_contraente'); GlobalData.cognomeContraenteB = getStr('cognome_contraente');
GlobalData.Codice_Fiscale_contraente_B = getStr('cf_contraente'); GlobalData.codiceFiscaleContraenteB = getStr('cf_contraente');
GlobalData.Indirizzo_contraente_B = getStr('indirizzo_contraente'); GlobalData.indirizzoContraenteB = getStr('indirizzo_contraente');
GlobalData.CAP_contraente_B = getStr('cap_contraente'); GlobalData.capContraenteB = getStr('cap_contraente');
GlobalData.Stato_contraente_B = getStr('stato_contraente'); GlobalData.statoContraenteB = getStr('stato_contraente');
GlobalData.N_telefono_mail_contraente_B = prefs.getString('user_tel') ?? ""; GlobalData.nTelefonoMailContraenteB = prefs.getString('user_tel') ?? "";
GlobalData.Email_contraente_B = prefs.getString('user_email') ?? ""; GlobalData.emailContraenteB = prefs.getString('user_email') ?? "";
GlobalData.Marca_e_Tipo_B = getStr('marca_tipo'); GlobalData.marcaETipoB = getStr('marca_tipo');
GlobalData.Targa_B = getStr('targa'); GlobalData.targaB = getStr('targa');
GlobalData.Stato_immatricolazione_B = getStr('stato_imm'); GlobalData.statoImmatricolazioneB = getStr('stato_imm');
GlobalData.Denominazione_B = getStr('denominazione_ass'); GlobalData.denominazioneB = getStr('denominazione_ass');
GlobalData.Numero_Polizza_B = getStr('polizza_ass'); GlobalData.numeroPolizzaB = getStr('polizza_ass');
GlobalData.Agenzia_B = getStr('agenzia_ass'); GlobalData.agenziaB = getStr('agenzia_ass');
GlobalData.Nome_cond_B = getStr('nome_cond'); GlobalData.nomeCondB = getStr('nome_cond');
GlobalData.Cognome_cond_B = getStr('cognome_cond'); GlobalData.cognomeCondB = getStr('cognome_cond');
GlobalData.Data_nascita_cond_B = getStr('data_nascita_cond'); GlobalData.dataNascitaCondB = getStr('data_nascita_cond');
GlobalData.Cod_fiscale_cond_B = getStr('cf_cond'); GlobalData.codFiscaleCondB = getStr('cf_cond');
GlobalData.Indirizzo_cond_B = getStr('indirizzo_cond'); GlobalData.indirizzoCondB = getStr('indirizzo_cond');
GlobalData.N_tel_mail_cond_B = prefs.getString('user_cond_tel') ?? ""; GlobalData.nTelMailCondB = prefs.getString('user_cond_tel') ?? "";
GlobalData.Email_cond_B = prefs.getString('user_cond_email') ?? ""; GlobalData.emailCondB = prefs.getString('user_cond_email') ?? "";
GlobalData.N_Patente_cond_B = getStr('patente_cond'); GlobalData.nPatenteCondB = getStr('patente_cond');
GlobalData.Scadenza_cond_B = getStr('scadenza_cond'); GlobalData.scadenzaCondB = getStr('scadenza_cond');
} }
} }
} }

View file

@ -1,5 +1,8 @@
# Change Log # Change Log
- **2026-05-02**: Completato il refactoring massivo di `global_data.dart`. Oltre 60 variabili statiche sono state convertite in `lowerCamelCase` per estinguere il debito tecnico ed eliminare i warning del linter. Garantita la retrocompatibilità del salvataggio dati JSON e `SharedPreferences` modificando le chiavi in `cai_mapping.dart`.
- **2026-05-02**: Creazione del test `data_exchange_test.dart` per validare lo scambio dati P2P e JSON. Risolto bug critico pre-esistente in `cid_data_manager.dart` inserendo i campi email nell'esportazione e importazione per evitarne la perdita durante lo scambio Firebase.
- **2026-05-01**: Installato il pacchetto `firebase_analytics` e configurato il tracciamento esplicito dell'evento `app_open` all'interno di `main.dart` per monitorare correttamente i download derivanti dalla campagna Google Ads. - **2026-05-01**: Installato il pacchetto `firebase_analytics` e configurato il tracciamento esplicito dell'evento `app_open` all'interno di `main.dart` per monitorare correttamente i download derivanti dalla campagna Google Ads.
- **2026-05-01**: Revisione delle metriche di acquisizione utenti (536 download da Ads, 306 Organici negli ultimi 90 giorni). Sospesa temporaneamente la campagna Google Ads tramite la dashboard. - **2026-05-01**: Revisione delle metriche di acquisizione utenti (536 download da Ads, 306 Organici negli ultimi 90 giorni). Sospesa temporaneamente la campagna Google Ads tramite la dashboard.
- **2026-04-28**: Modificato il campo "Telefono / Email" in due campi separati in `comp_6-7.dart` (Contraente) e `comp_9.dart` (Conducente) con implementazione Regex per formati internazionali ed email. Aggiornata logica `pdf_engine.dart` per stampare la stringa concatenata nel PDF e aggiornato il salvataggio locale `profilo_service.dart`. **Eseguito e validato test end-to-end** (`full_flow_test.dart`) verificando l'autocompilazione delle email, il bypass OTP e la generazione integra del file PDF. - **2026-04-28**: Modificato il campo "Telefono / Email" in due campi separati in `comp_6-7.dart` (Contraente) e `comp_9.dart` (Conducente) con implementazione Regex per formati internazionali ed email. Aggiornata logica `pdf_engine.dart` per stampare la stringa concatenata nel PDF e aggiornato il salvataggio locale `profilo_service.dart`. **Eseguito e validato test end-to-end** (`full_flow_test.dart`) verificando l'autocompilazione delle email, il bypass OTP e la generazione integra del file PDF.

View file

@ -13,7 +13,7 @@ L'app "CAI Facile" è in uno stato avanzato di sviluppo. Lo scambio dati remoto,
- **Monetizzazione**: Sistema di abbonamenti (In-App Purchases) attivo tramite RevenueCat con Paywall integrato sul flusso di Scambio Dati. - **Monetizzazione**: Sistema di abbonamenti (In-App Purchases) attivo tramite RevenueCat con Paywall integrato sul flusso di Scambio Dati.
## Problemi Aperti / TODO ## Problemi Aperti / TODO
- **Debito Tecnico**: Sono presenti variabili non formattate in `lowerCamelCase` all'interno di `lib/global_data.dart` (es. `Cod_fiscale_cond_B`). - (Nessun debito tecnico critico noto al momento)
## Marketing / Pubblicità ## Marketing / Pubblicità
- **Acquisizione Utenti (Google Ads)**: Campagna attiva dal 6 marzo al 1 maggio 2026. Risultati ultimi 90gg: 536 download da annunci e 306 organici. La campagna è stata **messa in pausa** il 1 maggio 2026 dopo aver validato il modello di acquisizione. - **Acquisizione Utenti (Google Ads)**: Campagna attiva dal 6 marzo al 1 maggio 2026. Risultati ultimi 90gg: 536 download da annunci e 306 organici. La campagna è stata **messa in pausa** il 1 maggio 2026 dopo aver validato il modello di acquisizione.

View file

@ -0,0 +1,58 @@
# 🗄️ Features Archive
Questo documento è un archivio tecnico completo che descrive tutte le funzionalità (features) principali presenti all'interno dell'applicazione **CAI Facile**, spiegando lo scopo ("Cosa fa") e l'implementazione tecnica a livello di codice ("Come lo fa").
---
## 1. Compilazione Guidata del Modulo CID
* **File Coinvolti**: `comp_1-5.dart` fino a `comp_15.dart`, `comp_16.dart`, `global_data.dart`
* **Cosa fa**: Trasforma il complesso modulo cartaceo ministeriale della Constatazione Amichevole in un flusso guidato step-by-step (wizard) ottimizzato per smartphone.
* **Come lo fa**: Lo stato dell'intera compilazione viene mantenuto in RAM tramite le variabili statiche della classe `GlobalData`.
- Utilizza validatori Regex nei form (es. email e telefoni internazionali).
- La **localizzazione automatica** in `comp_1-5.dart` usa i package `geolocator` e `geocoding` per recuperare le coordinate GPS del telefono e tradurle nel nome della strada/città dell'incidente senza che l'utente debba digitarla.
- La **dinamica dell'incidente** viene disegnata dall'utente su un `CustomPaint` vettoriale (`PainterV40`), permettendo il piazzamento di veicoli (auto, moto, furgoni), frecce e percorsi liberi.
## 2. Autocompilazione e Persistenza Locale (Profilo Utente)
* **File Coinvolti**: `services/profilo_service.dart`
* **Cosa fa**: Evita la noiosa riscrittura manuale dei dati anagrafici e della polizza assicurativa per i futuri incidenti o compilazioni.
* **Come lo fa**: Ad ogni salvataggio del modulo, il servizio estrae i dati del contraente, del veicolo, dell'assicurazione e del conducente da `GlobalData` e li memorizza sul dispositivo fisico usando le `SharedPreferences` (sistema chiave-valore nativo di iOS/Android). All'avvio dell'app o della sezione, l'app interroga la cache e popola automaticamente i text field.
## 3. Scambio Dati P2P via Firebase e QR Code
* **File Coinvolti**: `scambio_dati_screen.dart`, `cid_data_manager.dart`, `firebase_exchange.dart`
* **Cosa fa**: Risolve il problema di dover compilare a mano un solo telefono o scambiarsi i telefoni durante l'incidente. Il Veicolo A e il Veicolo B possono compilare la propria parte sui rispettivi smartphone per poi unire i dati magicamente.
* **Come lo fa**: L'architettura si basa su **Google Cloud Firestore**.
- Il Conducente A (Host) preme "Ricevi Dati", il sistema genera una Sessione univoca sul DB e genera un **QR Code** con l'ID sessione.
- Il Conducente B (Guest) scansiona il QR Code col pacchetto `mobile_scanner`, si connette a Firestore, e invia in formato JSON i propri dati.
- La classe `CidDataManager` serializza i dati di `GlobalData` lato A e lato B isolandoli, per evitare sovrascritture incrociate (es. il Veicolo B non può sovrascrivere il disegno del grafico del Veicolo A).
## 4. Motore di Generazione PDF e Sigillo Crittografico
* **File Coinvolti**: `pdf_engine.dart`, `cai_mapping.dart`
* **Cosa fa**: Stampa i dati raccolti sul modulo grafico ministeriale del CID e genera il file PDF legalmente valido e condivisibile via WhatsApp/Mail.
* **Come lo fa**: Usa la libreria `Syncfusion Flutter PDF`.
- Legge un template vergine `assets/CAI_p1.pdf`.
- Itera sul dizionario in `cai_mapping.dart` che collega le variabili di `GlobalData` ai nomi esatti dei `PdfTextBoxField` e `PdfCheckBoxField` del form PDF.
- Appiattisce i campi interattivi (`flattenAllFields()`) trasformandoli in testo statico per impedirne la modifica successiva.
- *Advanced*: Renderizza il `Canvas` del disegno e i punti vettoriali delle `Firme Autografe` in PNG per stamparli sopra il documento.
## 5. Monetizzazione In-App (Paywall)
* **File Coinvolti**: `screens/paywall_screen.dart`, `services/subscription_service.dart`
* **Cosa fa**: Sistema di barriera all'accesso (Paywall) che sblocca le funzioni premium dell'app (es. la possibilità di usare lo Scambio Dati).
* **Come lo fa**: L'app si appoggia a **RevenueCat** (`purchases_flutter`). Il servizio si inizializza all'apertura dell'app distinguendo se è su iOS (certificati P8) o su Android (chiavi API Google Play). L'acquisto non è un abbonamento ricorrente, ma uno sblocco "Una-Tantum" locale da 0,99€ che altera il flag `isPro` dell'utente.
## 6. Verifica Copertura RCA (Anti-Frode)
* **File Coinvolti**: `verifica_rca_screen.dart`, `test_scraping.dart`
* **Cosa fa**: Permette all'utente di inserire la targa della controparte per scoprire immediatamente se il veicolo è assicurato oppure no.
* **Come lo fa**: In assenza di API pubbliche gratuite, utilizza un proxy di web scraping (`test_scraping.dart`) che effettua chiamate HTTP mascherate simulando un browser verso portali governativi (es. Il Portale dell'Automobilista). Intercetta la risposta HTML, la parsifica e restituisce alla UI l'informazione cruda sulla polizza.
## 7. Firma Elettronica Avanzata (FEA) 🚧 *In corso*
* **File Coinvolti**: `screens/fea_verification_screen.dart`, `pdf_engine.dart`
* **Cosa fa**: Previene il disconoscimento della firma digitale garantendole pieno valore legale.
* **Come lo fa**:
- L'utente inserisce il cellulare e riceve un **OTP (One Time Password)** via SMS, confermando in maniera inequivocabile l'identità hardware al momento della firma sul display.
- Il sistema appende una **Pagina 2 (Attestato FEA)** al PDF generato con l'ID univoco della transazione OTP e l'orario certificato.
- Infine, `pdf_engine.dart` carica da root bundle il file `assets/certificate.pfx` (chiave privata) e usa `PdfSignature` per **sigillare crittograficamente** l'intero PDF. Qualsiasi alterazione al PDF effettuata dopo il salvataggio invaliderà automaticamente la certificazione in Adobe Acrobat.
## 8. Soccorsi Rapidi (Pronto Soccorso / Carro Attrezzi)
* **File Coinvolti**: `carro_attr.dart`, `ps.dart`
* **Cosa fa**: Interfacce di emergenza rapide per l'utente in panico post-incidente, mostrando in un clic il carro attrezzi più vicino o l'ospedale più vicino.
* **Come lo fa**: Esegue query geospaziali calcolando la distanza tra le coordinate dell'utente (ottenute via `geolocator`) e i punti di interesse nelle vicinanze. Avvia intent nativi (es. `url_launcher` con schemi `tel:`) per chiamare istantaneamente l'ospedale o l'officina selezionata.

View file

@ -1,12 +1,11 @@
# Next Session # Next Session
## Stato Finale ## Stato Finale
- Abbiamo concluso l'analisi dei dati di Acquisizione (Google Ads) e configurato con successo `firebase_analytics` per tracciare le aperture (`app_open`) su Firebase. - Completato il refactoring massivo di `global_data.dart` in `lowerCamelCase`. Il debito tecnico sintattico è stato estinto.
- La campagna Google Ads è stata formalmente sospesa. L'architettura generale di monetizzazione e scambio dati è stabile. - La stabilità dei form e del PDF è verificata (ridotti i warning da 196 a 116).
## Prossimo Passo (Focus) ## Prossimo Passo (Focus)
- **Priorità 1 (Debito Tecnico)**: Refactoring del file `lib/global_data.dart` per correggere i nomi delle variabili che attualmente violano il `lowerCamelCase` (es. `Cod_fiscale_cond_B`). - **Priorità 1 (Sviluppo Funzionale)**: Implementazione della Firma Elettronica Avanzata (FEA) e generazione del certificato nella Pagina 2 del PDF.
- **Priorità 2 (Sviluppo Funzionale)**: Riprendere l'implementazione della Firma Elettronica Avanzata (FEA) e testare il rendering del certificato nella Pagina 2 del PDF.
## File da Rileggere ## File da Rileggere
- `lib/global_data.dart` (per avviare la pulizia). - `lib/global_data.dart` (per avviare la pulizia).

View file

@ -0,0 +1,72 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:cid_app/global_data.dart';
import 'package:cid_app/cid_data_manager.dart';
void main() {
test('Verifica Inserimento, Esportazione JSON e Importazione Dati (Simulazione Scambio Firebase)', () {
// 1. Reset Pulito
GlobalData.reset();
GlobalData.latoCorrente = 'A';
// 2. Inserimento Dati Simulato (Conducente A compila)
GlobalData.dataIncidente = "02/05/2026";
GlobalData.luogo = "Milano, Via Roma 1";
GlobalData.feriti = false;
GlobalData.cognomeContraenteA = "Rossi";
GlobalData.nomeContraenteA = "Mario";
GlobalData.codiceFiscaleContraenteA = "RSSMRA80A01F205Z";
GlobalData.emailContraenteA = "mario.rossi@test.it";
GlobalData.marcaETipoA = "Fiat Panda";
GlobalData.targaA = "AA123BB";
GlobalData.denominazioneA = "Assicurazioni Test";
GlobalData.numeroPolizzaA = "123456789";
GlobalData.flagDanniMatAssicuratiA = true;
GlobalData.danniVisibiliA = "Paraurti distrutto";
GlobalData.circostanzeA = {2: true, 5: true};
// 3. Serializzazione JSON (Simulazione Esportazione verso QR o Firebase)
Map<String, dynamic> jsonEsportato = CidDataManager.estraiDatiPerExport();
// Verifica intermedia della struttura esportata (con le chiavi "minificate")
expect(jsonEsportato['lato'], 'A');
expect(jsonEsportato['generali']['luogo'], "Milano, Via Roma 1");
expect(jsonEsportato['contraente']['cognome'], "Rossi");
expect(jsonEsportato['veicolo']['targa'], "AA123BB");
expect(jsonEsportato['assicurazione']['flag_danni'], true);
// 4. Reset Simulato (Il dispositivo del Conducente B è vuoto prima di scansionare)
GlobalData.reset();
GlobalData.latoCorrente = 'B'; // Adesso siamo il dispositivo B
expect(GlobalData.cognomeContraenteA, "");
expect(GlobalData.targaA, "");
// 5. Importazione Dati (Simulazione Ricezione JSON scansionato o da Firebase)
CidDataManager.importaDati(jsonEsportato);
// 6. Verifica Integrità Dati Post-Importazione (I dati di A devono essere andati in "Lato A")
expect(GlobalData.dataIncidente, "02/05/2026", reason: "Data incidente persa");
expect(GlobalData.luogo, "Milano, Via Roma 1", reason: "Luogo perso");
expect(GlobalData.feriti, false, reason: "Stato feriti perso");
expect(GlobalData.cognomeContraenteA, "Rossi", reason: "Cognome Contraente A perso (Possibile errore naming refactoring)");
expect(GlobalData.nomeContraenteA, "Mario", reason: "Nome Contraente A perso");
expect(GlobalData.emailContraenteA, "mario.rossi@test.it", reason: "Email A persa");
expect(GlobalData.targaA, "AA123BB", reason: "Targa A persa");
expect(GlobalData.numeroPolizzaA, "123456789", reason: "Polizza A persa");
expect(GlobalData.flagDanniMatAssicuratiA, true, reason: "Flag danni A perso");
expect(GlobalData.danniVisibiliA, "Paraurti distrutto", reason: "Danni visibili A persi");
// Test mappa circostanze (List vs Map issue test)
expect(GlobalData.circostanzeA[2], true, reason: "Circostanza 2 persa");
expect(GlobalData.circostanzeA[5], true, reason: "Circostanza 5 persa");
print("✅ TEST COMPLETATO: Serializzazione, Scambio Dati JSON e Refactoring Variabili perfettamente funzionanti.");
});
}

View file

@ -21,23 +21,23 @@ void main() {
test('Test Completo: ProfiloService, Scambio Dati e Generazione PDF FEA', () async { test('Test Completo: ProfiloService, Scambio Dati e Generazione PDF FEA', () async {
// 1. Simula l'inserimento dei dati da parte del Conducente A // 1. Simula l'inserimento dei dati da parte del Conducente A
GlobalData.Nome_contraente_A = "MARIO"; GlobalData.nomeContraenteA = "MARIO";
GlobalData.Cognome_contraente_A = "ROSSI"; GlobalData.cognomeContraenteA = "ROSSI";
GlobalData.Codice_Fiscale_contraente_A = "RSSMRA80A01H501U"; GlobalData.codiceFiscaleContraenteA = "RSSMRA80A01H501U";
GlobalData.N_telefono_mail_contraente_A = "+393331234567"; GlobalData.nTelefonoMailContraenteA = "+393331234567";
GlobalData.Email_contraente_A = "mario.rossi@email.it"; GlobalData.emailContraenteA = "mario.rossi@email.it";
GlobalData.Marca_e_Tipo_A = "FIAT PANDA"; GlobalData.marcaETipoA = "FIAT PANDA";
GlobalData.Targa_A = "AA123BB"; GlobalData.targaA = "AA123BB";
GlobalData.Stato_immatricolazione_A = "ITALIA"; GlobalData.statoImmatricolazioneA = "ITALIA";
GlobalData.Denominazione_A = "ASSICURAZIONI SPA"; GlobalData.denominazioneA = "ASSICURAZIONI SPA";
GlobalData.Numero_Polizza_A = "123456789"; GlobalData.numeroPolizzaA = "123456789";
GlobalData.Nome_cond_A = "MARIO"; GlobalData.nomeCondA = "MARIO";
GlobalData.Cognome_cond_A = "ROSSI"; GlobalData.cognomeCondA = "ROSSI";
GlobalData.N_tel_mail_cond_A = "+393331234567"; GlobalData.nTelMailCondA = "+393331234567";
GlobalData.Email_cond_A = "mario.rossi@email.it"; GlobalData.emailCondA = "mario.rossi@email.it";
// 2. Salva il profilo // 2. Salva il profilo
await ProfiloService.salvaProfilo('A'); await ProfiloService.salvaProfilo('A');
@ -47,23 +47,23 @@ void main() {
expect(esiste, true); expect(esiste, true);
// 4. Ripulisce GlobalData (simulando un riavvio dell'app) // 4. Ripulisce GlobalData (simulando un riavvio dell'app)
GlobalData.Nome_contraente_A = ""; GlobalData.nomeContraenteA = "";
GlobalData.Cognome_contraente_A = ""; GlobalData.cognomeContraenteA = "";
GlobalData.Targa_A = ""; GlobalData.targaA = "";
GlobalData.Email_contraente_A = ""; GlobalData.emailContraenteA = "";
// 5. Ricarica il profilo (Autocompilazione) // 5. Ricarica il profilo (Autocompilazione)
await ProfiloService.caricaProfilo('A'); await ProfiloService.caricaProfilo('A');
expect(GlobalData.Nome_contraente_A, "MARIO"); expect(GlobalData.nomeContraenteA, "MARIO");
expect(GlobalData.Targa_A, "AA123BB"); expect(GlobalData.targaA, "AA123BB");
expect(GlobalData.Email_contraente_A, "mario.rossi@email.it"); expect(GlobalData.emailContraenteA, "mario.rossi@email.it");
// 6. Simula i dati del Conducente B (dall'altra parte dello scambio) // 6. Simula i dati del Conducente B (dall'altra parte dello scambio)
GlobalData.Nome_contraente_B = "LUIGI"; GlobalData.nomeContraenteB = "LUIGI";
GlobalData.Cognome_contraente_B = "VERDI"; GlobalData.cognomeContraenteB = "VERDI";
GlobalData.Targa_B = "CC987DD"; GlobalData.targaB = "CC987DD";
GlobalData.N_tel_mail_cond_B = "+393339876543"; GlobalData.nTelMailCondB = "+393339876543";
GlobalData.Email_cond_B = "luigi.verdi@email.it"; GlobalData.emailCondB = "luigi.verdi@email.it";
// 7. Simula l'esito della FEA (senza inviare veri SMS) // 7. Simula l'esito della FEA (senza inviare veri SMS)
// Conducente A approva // Conducente A approva

Binary file not shown.