Compare commits
No commits in common. "main" and "v_20260502_110001" have entirely different histories.
main
...
v_20260502
21 changed files with 554 additions and 690 deletions
Binary file not shown.
Binary file not shown.
BIN
.DS_Store
vendored
BIN
.DS_Store
vendored
Binary file not shown.
|
|
@ -2,88 +2,88 @@ class CaiMapping {
|
||||||
|
|
||||||
static const Map<String, String> testi = {
|
static const Map<String, String> testi = {
|
||||||
// HEADER
|
// HEADER
|
||||||
'dataIncidente': 'data_sinistro',
|
'data_incidente': 'data_sinistro',
|
||||||
'ora': 'ora',
|
'ora': 'ora',
|
||||||
'luogo': 'luogo_sinistro',
|
'luogo': 'luogo_sinistro',
|
||||||
'testimoni': 'testimoni1',
|
'testimoni': 'testimoni1',
|
||||||
|
|
||||||
// VEICOLO A
|
// VEICOLO A
|
||||||
'cognomeContraenteA': 'cognome_contraenteA',
|
'Cognome_contraente_A': 'cognome_contraenteA',
|
||||||
'nomeContraenteA': 'nome_contraenteA',
|
'Nome_contraente_A': 'nome_contraenteA',
|
||||||
'codiceFiscaleContraenteA': 'codice_fiscale_contrA',
|
'Codice_Fiscale_contraente_A': 'codice_fiscale_contrA',
|
||||||
'indirizzoContraenteA': 'indirizzo_contrA',
|
'Indirizzo_contraente_A': 'indirizzo_contrA',
|
||||||
'capContraenteA': 'cap_contrA',
|
'CAP_contraente_A': 'cap_contrA',
|
||||||
'statoContraenteA': 'stato_contrA',
|
'Stato_contraente_A': 'stato_contrA',
|
||||||
'nTelefonoMailContraenteA': 'tel_contrA',
|
'N_telefono_mail_contraente_A': 'tel_contrA',
|
||||||
'marcaETipoA': 'marcaA',
|
'Marca_e_Tipo_A': 'marcaA',
|
||||||
'targaA': 'targa_veicoloA',
|
'Targa_A': 'targa_veicoloA',
|
||||||
'statoImmatricolazioneA': 'stato_im_veicoloA',
|
'Stato_immatricolazione_A': 'stato_im_veicoloA',
|
||||||
'rimorchioA': 'targa_rimorchioA',
|
'Rimorchio_A': 'targa_rimorchioA',
|
||||||
'statoImmatricolazione2A': 'stato_im_rimorchioA',
|
'Stato_immatricolazione2_A': 'stato_im_rimorchioA',
|
||||||
'denominazioneA': 'COMPAGNIA',
|
'Denominazione_A': 'COMPAGNIA',
|
||||||
'numeroPolizzaA': 'numero_polizzaA',
|
'Numero_Polizza_A': 'numero_polizzaA',
|
||||||
'nCartaVerdeA': 'CVA',
|
'N_carta_verde_A': 'CVA',
|
||||||
'dataInizioDalA': 'ass_dalA',
|
'Data_Inizio_Dal_A': 'ass_dalA',
|
||||||
'dataScadenzaAlA': 'ass_alA',
|
'Data_Scadenza_Al_A': 'ass_alA',
|
||||||
'agenziaA': 'AGENZIA_A',
|
'Agenzia_A': 'AGENZIA_A',
|
||||||
'denominazioneAgenziaA': 'denom_A',
|
'Denominazione_agenzia_A': 'denom_A',
|
||||||
'indirizzoAgenziaA': 'ind_ag_A',
|
'Indirizzo_agenzia_A': 'ind_ag_A',
|
||||||
'statoAgenziaA': 'ag_stat_A',
|
'Stato_agenzia_A': 'ag_stat_A',
|
||||||
'nTelMailAgenziaA': 'tel_ag_A',
|
'N_tel_mail_agenzia_A': 'tel_ag_A',
|
||||||
'cognomeCondA': 'cogn_cond_A',
|
'Cognome_cond_A': 'cogn_cond_A',
|
||||||
'nomeCondA': 'nome_cond_A',
|
'Nome_cond_A': 'nome_cond_A',
|
||||||
'dataNascitaCondA': 'dnascita_condA',
|
'Data_nascita_cond_A': 'dnascita_condA',
|
||||||
'codFiscaleCondA': 'codice_fiscale_conduA',
|
'Cod_fiscale_cond_A': 'codice_fiscale_conduA',
|
||||||
'indirizzoCondA': 'indir_conduA',
|
'Indirizzo_cond_A': 'indir_conduA',
|
||||||
'statoCondA': 'stato_conduA',
|
'Stato_cond_A': 'stato_conduA',
|
||||||
'nTelMailCondA': 'tel_conduA',
|
'N_tel_mail_cond_A': 'tel_conduA',
|
||||||
'nPatenteCondA': 'n_p_conduA',
|
'N_Patente_cond_A': 'n_p_conduA',
|
||||||
'scadenzaCondA': 'condu_scad_A',
|
'Scadenza_cond_A': 'condu_scad_A',
|
||||||
|
|
||||||
// --- AGGIUNTO CATEGORIA A ---
|
// --- AGGIUNTO CATEGORIA A ---
|
||||||
'categoriaCondA': 'cat_A', // <--- VERIFICA QUESTO NOME NEL PDF (es. cat_A, catA, CategA...)
|
'Categoria_cond_A': 'cat_A', // <--- VERIFICA QUESTO NOME NEL PDF (es. cat_A, catA, CategA...)
|
||||||
|
|
||||||
'danniVisibiliA': 'danni_vis_A1',
|
'danni_visibili_A': 'danni_vis_A1',
|
||||||
'osservazioniA': 'osservazioniA',
|
'osservazioni_A': 'osservazioniA',
|
||||||
|
|
||||||
// VEICOLO B
|
// VEICOLO B
|
||||||
'cognomeContraenteB': 'cognome_contraenteB',
|
'Cognome_contraente_B': 'cognome_contraenteB',
|
||||||
'nomeContraenteB': 'nome_contraenteB',
|
'Nome_contraente_B': 'nome_contraenteB',
|
||||||
'codiceFiscaleContraenteB': 'codice_fiscale_contrB',
|
'Codice_Fiscale_contraente_B': 'codice_fiscale_contrB',
|
||||||
'indirizzoContraenteB': 'indirizzo_contrB',
|
'Indirizzo_contraente_B': 'indirizzo_contrB',
|
||||||
'capContraenteB': 'cap_contrB',
|
'CAP_contraente_B': 'cap_contrB',
|
||||||
'statoContraenteB': 'stato_contrB',
|
'Stato_contraente_B': 'stato_contrB',
|
||||||
'nTelefonoMailContraenteB': 'tel_contrB',
|
'N_telefono_mail_contraente_B': 'tel_contrB',
|
||||||
'marcaETipoB': 'marcaB',
|
'Marca_e_Tipo_B': 'marcaB',
|
||||||
'targaB': 'targa_veicoloB',
|
'Targa_B': 'targa_veicoloB',
|
||||||
'statoImmatricolazioneB': 'stato_im_veicoloB',
|
'Stato_immatricolazione_B': 'stato_im_veicoloB',
|
||||||
'rimorchioB': 'targa_rimorchioB',
|
'Rimorchio_B': 'targa_rimorchioB',
|
||||||
'statoImmatricolazione2B': 'stato_im_rimorchioB',
|
'Stato_immatricolazione2_B': 'stato_im_rimorchioB',
|
||||||
'denominazioneB': 'compagnia1',
|
'Denominazione_B': 'compagnia1',
|
||||||
'numeroPolizzaB': 'numero_polizzaB',
|
'Numero_Polizza_B': 'numero_polizzaB',
|
||||||
'nCartaVerdeB': 'CVB',
|
'N_carta_verde_B': 'CVB',
|
||||||
'dataInizioDalB': 'ass_dalB',
|
'Data_Inizio_Dal_B': 'ass_dalB',
|
||||||
'dataScadenzaAlB': 'ass_alB',
|
'Data_Scadenza_Al_B': 'ass_alB',
|
||||||
'agenziaB': 'AGENZIA_B',
|
'Agenzia_B': 'AGENZIA_B',
|
||||||
'denominazioneAgenziaB': 'denom_B',
|
'Denominazione_agenzia_B': 'denom_B',
|
||||||
'indirizzoAgenziaB': 'ind_ag_B',
|
'Indirizzo_agenzia_B': 'ind_ag_B',
|
||||||
'statoAgenziaB': 'ag_stat_B',
|
'Stato_agenzia_B': 'ag_stat_B',
|
||||||
'nTelMailAgenziaB': 'tel_ag_B',
|
'N_tel_mail_agenzia_B': 'tel_ag_B',
|
||||||
'cognomeCondB': 'cogn_cond_B',
|
'Cognome_cond_B': 'cogn_cond_B',
|
||||||
'nomeCondB': 'nome_cond_B',
|
'Nome_cond_B': 'nome_cond_B',
|
||||||
'dataNascitaCondB': 'dnascita_condB',
|
'Data_nascita_cond_B': 'dnascita_condB',
|
||||||
'codFiscaleCondB': 'codice_fiscale_conduB',
|
'Cod_fiscale_cond_B': 'codice_fiscale_conduB',
|
||||||
'indirizzoCondB': 'indir_conduB',
|
'Indirizzo_cond_B': 'indir_conduB',
|
||||||
'statoCondB': 'stato_conduB',
|
'Stato_cond_B': 'stato_conduB',
|
||||||
'nTelMailCondB': 'tel_conduB',
|
'N_tel_mail_cond_B': 'tel_conduB',
|
||||||
'nPatenteCondB': 'n_p_conduB',
|
'N_Patente_cond_B': 'n_p_conduB',
|
||||||
'scadenzaCondB': 'condu_scad_B',
|
'Scadenza_cond_B': 'condu_scad_B',
|
||||||
|
|
||||||
// --- AGGIUNTO CATEGORIA B ---
|
// --- AGGIUNTO CATEGORIA B ---
|
||||||
'categoriaCondB': 'cat_B', // <--- VERIFICA QUESTO NOME NEL PDF
|
'Categoria_cond_B': 'cat_B', // <--- VERIFICA QUESTO NOME NEL PDF
|
||||||
|
|
||||||
'danniVisibiliB': 'danni_vis_B1',
|
'danni_visibili_B': 'danni_vis_B1',
|
||||||
'osservazioniB': 'osservazioniB',
|
'osservazioni_B': 'osservazioniB',
|
||||||
};
|
};
|
||||||
|
|
||||||
// CHECKBOX
|
// CHECKBOX
|
||||||
|
|
|
||||||
|
|
@ -18,13 +18,13 @@ class CidDataManager {
|
||||||
return {
|
return {
|
||||||
'lato': lato,
|
'lato': lato,
|
||||||
'generali': {
|
'generali': {
|
||||||
'data': GlobalData.dataIncidente,
|
'data': GlobalData.data_incidente,
|
||||||
'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.veicoliDanniMaterialiOltre,
|
'danni_materiali': GlobalData.Veicoli_danni_materiali_oltre,
|
||||||
'oggetti_diversi': GlobalData.oggettiDiversiDanniMateriali,
|
'oggetti_diversi': GlobalData.Oggetti_diversi_danni_materiali,
|
||||||
},
|
},
|
||||||
|
|
||||||
'circostanze': _serializeCircostanze(lato == 'A' ? GlobalData.circostanzeA : GlobalData.circostanzeB),
|
'circostanze': _serializeCircostanze(lato == 'A' ? GlobalData.circostanzeA : GlobalData.circostanzeB),
|
||||||
|
|
@ -40,51 +40,49 @@ class CidDataManager {
|
||||||
'firma': _serializePunti(lato == 'A' ? GlobalData.puntiFirmaA : GlobalData.puntiFirmaB),
|
'firma': _serializePunti(lato == 'A' ? GlobalData.puntiFirmaA : GlobalData.puntiFirmaB),
|
||||||
|
|
||||||
'contraente': {
|
'contraente': {
|
||||||
'cognome': val(GlobalData.cognomeContraenteA, GlobalData.cognomeContraenteB, lato),
|
'cognome': val(GlobalData.Cognome_contraente_A, GlobalData.Cognome_contraente_B, lato),
|
||||||
'nome': val(GlobalData.nomeContraenteA, GlobalData.nomeContraenteB, lato),
|
'nome': val(GlobalData.Nome_contraente_A, GlobalData.Nome_contraente_B, lato),
|
||||||
'cf': val(GlobalData.codiceFiscaleContraenteA, GlobalData.codiceFiscaleContraenteB, lato),
|
'cf': val(GlobalData.Codice_Fiscale_contraente_A, GlobalData.Codice_Fiscale_contraente_B, lato),
|
||||||
'indirizzo': val(GlobalData.indirizzoContraenteA, GlobalData.indirizzoContraenteB, lato),
|
'indirizzo': val(GlobalData.Indirizzo_contraente_A, GlobalData.Indirizzo_contraente_B, lato),
|
||||||
'cap': val(GlobalData.capContraenteA, GlobalData.capContraenteB, lato),
|
'cap': val(GlobalData.CAP_contraente_A, GlobalData.CAP_contraente_B, lato),
|
||||||
'stato': val(GlobalData.statoContraenteA, GlobalData.statoContraenteB, lato),
|
'stato': val(GlobalData.Stato_contraente_A, GlobalData.Stato_contraente_B, lato),
|
||||||
'tel': val(GlobalData.nTelefonoMailContraenteA, GlobalData.nTelefonoMailContraenteB, lato),
|
'tel': val(GlobalData.N_telefono_mail_contraente_A, GlobalData.N_telefono_mail_contraente_B, lato),
|
||||||
'email': val(GlobalData.emailContraenteA, GlobalData.emailContraenteB, lato),
|
|
||||||
},
|
},
|
||||||
'veicolo': {
|
'veicolo': {
|
||||||
'marca': val(GlobalData.marcaETipoA, GlobalData.marcaETipoB, lato),
|
'marca': val(GlobalData.Marca_e_Tipo_A, GlobalData.Marca_e_Tipo_B, lato),
|
||||||
'targa': val(GlobalData.targaA, GlobalData.targaB, lato),
|
'targa': val(GlobalData.Targa_A, GlobalData.Targa_B, lato),
|
||||||
'stato_imm': val(GlobalData.statoImmatricolazioneA, GlobalData.statoImmatricolazioneB, lato),
|
'stato_imm': val(GlobalData.Stato_immatricolazione_A, GlobalData.Stato_immatricolazione_B, lato),
|
||||||
'stato_imm2': val(GlobalData.statoImmatricolazione2A, GlobalData.statoImmatricolazione2B, lato),
|
'stato_imm2': val(GlobalData.Stato_immatricolazione2_A, GlobalData.Stato_immatricolazione2_B, lato),
|
||||||
'rimorchio': val(GlobalData.rimorchioA, GlobalData.rimorchioB, lato),
|
'rimorchio': val(GlobalData.Rimorchio_A, GlobalData.Rimorchio_B, lato),
|
||||||
},
|
},
|
||||||
'assicurazione': {
|
'assicurazione': {
|
||||||
'denominazione': val(GlobalData.denominazioneA, GlobalData.denominazioneB, lato),
|
'denominazione': val(GlobalData.Denominazione_A, GlobalData.Denominazione_B, lato),
|
||||||
'polizza': val(GlobalData.numeroPolizzaA, GlobalData.numeroPolizzaB, lato),
|
'polizza': val(GlobalData.Numero_Polizza_A, GlobalData.Numero_Polizza_B, lato),
|
||||||
'agenzia': val(GlobalData.agenziaA, GlobalData.agenziaB, lato),
|
'agenzia': val(GlobalData.Agenzia_A, GlobalData.Agenzia_B, lato),
|
||||||
'denom_agenzia': val(GlobalData.denominazioneAgenziaA, GlobalData.denominazioneAgenziaB, lato),
|
'denom_agenzia': val(GlobalData.Denominazione_agenzia_A, GlobalData.Denominazione_agenzia_B, lato),
|
||||||
'indirizzo_agenzia': val(GlobalData.indirizzoAgenziaA, GlobalData.indirizzoAgenziaB, lato),
|
'indirizzo_agenzia': val(GlobalData.Indirizzo_agenzia_A, GlobalData.Indirizzo_agenzia_B, lato),
|
||||||
'stato_agenzia': val(GlobalData.statoAgenziaA, GlobalData.statoAgenziaB, lato),
|
'stato_agenzia': val(GlobalData.Stato_agenzia_A, GlobalData.Stato_agenzia_B, lato),
|
||||||
'tel_agenzia': val(GlobalData.nTelMailAgenziaA, GlobalData.nTelMailAgenziaB, lato),
|
'tel_agenzia': val(GlobalData.N_tel_mail_agenzia_A, GlobalData.N_tel_mail_agenzia_B, lato),
|
||||||
'carta_verde': val(GlobalData.nCartaVerdeA, GlobalData.nCartaVerdeB, lato),
|
'carta_verde': val(GlobalData.N_carta_verde_A, GlobalData.N_carta_verde_B, lato),
|
||||||
'validita_dal': val(GlobalData.dataInizioDalA, GlobalData.dataInizioDalB, lato),
|
'validita_dal': val(GlobalData.Data_Inizio_Dal_A, GlobalData.Data_Inizio_Dal_B, lato),
|
||||||
'validita_al': val(GlobalData.dataScadenzaAlA, GlobalData.dataScadenzaAlB, lato),
|
'validita_al': val(GlobalData.Data_Scadenza_Al_A, GlobalData.Data_Scadenza_Al_B, lato),
|
||||||
'flag_danni': valB(GlobalData.flagDanniMatAssicuratiA, GlobalData.flagDanniMatAssicuratiB, lato),
|
'flag_danni': valB(GlobalData.FLAG_danni_mat_assicurati_A, GlobalData.FLAG_danni_mat_assicurati_B, lato),
|
||||||
},
|
},
|
||||||
'conducente': {
|
'conducente': {
|
||||||
'cognome': val(GlobalData.cognomeCondA, GlobalData.cognomeCondB, lato),
|
'cognome': val(GlobalData.Cognome_cond_A, GlobalData.Cognome_cond_B, lato),
|
||||||
'nome': val(GlobalData.nomeCondA, GlobalData.nomeCondB, lato),
|
'nome': val(GlobalData.Nome_cond_A, GlobalData.Nome_cond_B, lato),
|
||||||
'nascita': val(GlobalData.dataNascitaCondA, GlobalData.dataNascitaCondB, lato),
|
'nascita': val(GlobalData.Data_nascita_cond_A, GlobalData.Data_nascita_cond_B, lato),
|
||||||
'cf': val(GlobalData.codFiscaleCondA, GlobalData.codFiscaleCondB, lato),
|
'cf': val(GlobalData.Cod_fiscale_cond_A, GlobalData.Cod_fiscale_cond_B, lato),
|
||||||
'indirizzo': val(GlobalData.indirizzoCondA, GlobalData.indirizzoCondB, lato),
|
'indirizzo': val(GlobalData.Indirizzo_cond_A, GlobalData.Indirizzo_cond_B, lato),
|
||||||
'stato': val(GlobalData.statoCondA, GlobalData.statoCondB, lato),
|
'stato': val(GlobalData.Stato_cond_A, GlobalData.Stato_cond_B, lato),
|
||||||
'tel': val(GlobalData.nTelMailCondA, GlobalData.nTelMailCondB, lato),
|
'tel': val(GlobalData.N_tel_mail_cond_A, GlobalData.N_tel_mail_cond_B, lato),
|
||||||
'email': val(GlobalData.emailCondA, GlobalData.emailCondB, lato),
|
'patente': val(GlobalData.N_Patente_cond_A, GlobalData.N_Patente_cond_B, lato),
|
||||||
'patente': val(GlobalData.nPatenteCondA, GlobalData.nPatenteCondB, lato),
|
'cat_patente': val(GlobalData.Categoria_cond_A, GlobalData.Categoria_cond_B, lato),
|
||||||
'cat_patente': val(GlobalData.categoriaCondA, GlobalData.categoriaCondB, lato),
|
'scad_patente': val(GlobalData.Scadenza_cond_A, GlobalData.Scadenza_cond_B, lato),
|
||||||
'scad_patente': val(GlobalData.scadenzaCondA, GlobalData.scadenzaCondB, lato),
|
|
||||||
},
|
},
|
||||||
'danni_osservazioni': {
|
'danni_osservazioni': {
|
||||||
'visibili': val(GlobalData.danniVisibiliA, GlobalData.danniVisibiliB, lato),
|
'visibili': val(GlobalData.danni_visibili_A, GlobalData.danni_visibili_B, lato),
|
||||||
'osservazioni': val(GlobalData.osservazioniA, GlobalData.osservazioniB, lato),
|
'osservazioni': val(GlobalData.osservazioni_A, GlobalData.osservazioni_B, lato),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
@ -95,13 +93,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.dataIncidente = gen['data'];
|
if ((gen['data'] ?? "").isNotEmpty) GlobalData.data_incidente = 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.veicoliDanniMaterialiOltre = gen['danni_materiali'];
|
if (gen['danni_materiali'] != null) GlobalData.Veicoli_danni_materiali_oltre = gen['danni_materiali'];
|
||||||
if (gen['oggetti_diversi'] != null) GlobalData.oggettiDiversiDanniMateriali = gen['oggetti_diversi'];
|
if (gen['oggetti_diversi'] != null) GlobalData.Oggetti_diversi_danni_materiali = gen['oggetti_diversi'];
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- PROTEZIONE GRAFICO (CASSETTO 1) ---
|
// --- PROTEZIONE GRAFICO (CASSETTO 1) ---
|
||||||
|
|
@ -158,59 +156,57 @@ class CidDataManager {
|
||||||
|
|
||||||
if (data['contraente'] != null) {
|
if (data['contraente'] != null) {
|
||||||
var c = data['contraente'];
|
var c = data['contraente'];
|
||||||
setVal((v) => GlobalData.cognomeContraenteA = v, (v) => GlobalData.cognomeContraenteB = v, c['cognome']);
|
setVal((v) => GlobalData.Cognome_contraente_A = v, (v) => GlobalData.Cognome_contraente_B = v, c['cognome']);
|
||||||
setVal((v) => GlobalData.nomeContraenteA = v, (v) => GlobalData.nomeContraenteB = v, c['nome']);
|
setVal((v) => GlobalData.Nome_contraente_A = v, (v) => GlobalData.Nome_contraente_B = v, c['nome']);
|
||||||
setVal((v) => GlobalData.codiceFiscaleContraenteA = v, (v) => GlobalData.codiceFiscaleContraenteB = v, c['cf']);
|
setVal((v) => GlobalData.Codice_Fiscale_contraente_A = v, (v) => GlobalData.Codice_Fiscale_contraente_B = v, c['cf']);
|
||||||
setVal((v) => GlobalData.indirizzoContraenteA = v, (v) => GlobalData.indirizzoContraenteB = v, c['indirizzo']);
|
setVal((v) => GlobalData.Indirizzo_contraente_A = v, (v) => GlobalData.Indirizzo_contraente_B = v, c['indirizzo']);
|
||||||
setVal((v) => GlobalData.capContraenteA = v, (v) => GlobalData.capContraenteB = v, c['cap']);
|
setVal((v) => GlobalData.CAP_contraente_A = v, (v) => GlobalData.CAP_contraente_B = v, c['cap']);
|
||||||
setVal((v) => GlobalData.statoContraenteA = v, (v) => GlobalData.statoContraenteB = v, c['stato']);
|
setVal((v) => GlobalData.Stato_contraente_A = v, (v) => GlobalData.Stato_contraente_B = v, c['stato']);
|
||||||
setVal((v) => GlobalData.nTelefonoMailContraenteA = v, (v) => GlobalData.nTelefonoMailContraenteB = v, c['tel']);
|
setVal((v) => GlobalData.N_telefono_mail_contraente_A = v, (v) => GlobalData.N_telefono_mail_contraente_B = 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.marcaETipoA = v, (v) => GlobalData.marcaETipoB = v, v['marca']);
|
setVal((v) => GlobalData.Marca_e_Tipo_A = v, (v) => GlobalData.Marca_e_Tipo_B = v, v['marca']);
|
||||||
setVal((v) => GlobalData.targaA = v, (v) => GlobalData.targaB = v, v['targa']);
|
setVal((v) => GlobalData.Targa_A = v, (v) => GlobalData.Targa_B = v, v['targa']);
|
||||||
setVal((v) => GlobalData.statoImmatricolazioneA = v, (v) => GlobalData.statoImmatricolazioneB = v, v['stato_imm']);
|
setVal((v) => GlobalData.Stato_immatricolazione_A = v, (v) => GlobalData.Stato_immatricolazione_B = v, v['stato_imm']);
|
||||||
setVal((v) => GlobalData.statoImmatricolazione2A = v, (v) => GlobalData.statoImmatricolazione2B = v, v['stato_imm2']);
|
setVal((v) => GlobalData.Stato_immatricolazione2_A = v, (v) => GlobalData.Stato_immatricolazione2_B = v, v['stato_imm2']);
|
||||||
setVal((v) => GlobalData.rimorchioA = v, (v) => GlobalData.rimorchioB = v, v['rimorchio']);
|
setVal((v) => GlobalData.Rimorchio_A = v, (v) => GlobalData.Rimorchio_B = v, v['rimorchio']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data['assicurazione'] != null) {
|
if (data['assicurazione'] != null) {
|
||||||
var a = data['assicurazione'];
|
var a = data['assicurazione'];
|
||||||
setVal((v) => GlobalData.denominazioneA = v, (v) => GlobalData.denominazioneB = v, a['denominazione']);
|
setVal((v) => GlobalData.Denominazione_A = v, (v) => GlobalData.Denominazione_B = v, a['denominazione']);
|
||||||
setVal((v) => GlobalData.numeroPolizzaA = v, (v) => GlobalData.numeroPolizzaB = v, a['polizza']);
|
setVal((v) => GlobalData.Numero_Polizza_A = v, (v) => GlobalData.Numero_Polizza_B = v, a['polizza']);
|
||||||
setVal((v) => GlobalData.agenziaA = v, (v) => GlobalData.agenziaB = v, a['agenzia']);
|
setVal((v) => GlobalData.Agenzia_A = v, (v) => GlobalData.Agenzia_B = v, a['agenzia']);
|
||||||
setVal((v) => GlobalData.denominazioneAgenziaA = v, (v) => GlobalData.denominazioneAgenziaB = v, a['denom_agenzia']);
|
setVal((v) => GlobalData.Denominazione_agenzia_A = v, (v) => GlobalData.Denominazione_agenzia_B = v, a['denom_agenzia']);
|
||||||
setVal((v) => GlobalData.indirizzoAgenziaA = v, (v) => GlobalData.indirizzoAgenziaB = v, a['indirizzo_agenzia']);
|
setVal((v) => GlobalData.Indirizzo_agenzia_A = v, (v) => GlobalData.Indirizzo_agenzia_B = v, a['indirizzo_agenzia']);
|
||||||
setVal((v) => GlobalData.statoAgenziaA = v, (v) => GlobalData.statoAgenziaB = v, a['stato_agenzia']);
|
setVal((v) => GlobalData.Stato_agenzia_A = v, (v) => GlobalData.Stato_agenzia_B = v, a['stato_agenzia']);
|
||||||
setVal((v) => GlobalData.nTelMailAgenziaA = v, (v) => GlobalData.nTelMailAgenziaB = v, a['tel_agenzia']);
|
setVal((v) => GlobalData.N_tel_mail_agenzia_A = v, (v) => GlobalData.N_tel_mail_agenzia_B = v, a['tel_agenzia']);
|
||||||
setVal((v) => GlobalData.nCartaVerdeA = v, (v) => GlobalData.nCartaVerdeB = v, a['carta_verde']);
|
setVal((v) => GlobalData.N_carta_verde_A = v, (v) => GlobalData.N_carta_verde_B = v, a['carta_verde']);
|
||||||
setVal((v) => GlobalData.dataInizioDalA = v, (v) => GlobalData.dataInizioDalB = v, a['validita_dal']);
|
setVal((v) => GlobalData.Data_Inizio_Dal_A = v, (v) => GlobalData.Data_Inizio_Dal_B = v, a['validita_dal']);
|
||||||
setVal((v) => GlobalData.dataScadenzaAlA = v, (v) => GlobalData.dataScadenzaAlB = v, a['validita_al']);
|
setVal((v) => GlobalData.Data_Scadenza_Al_A = v, (v) => GlobalData.Data_Scadenza_Al_B = v, a['validita_al']);
|
||||||
setBool((v) => GlobalData.flagDanniMatAssicuratiA = v, (v) => GlobalData.flagDanniMatAssicuratiB = v, a['flag_danni']);
|
setBool((v) => GlobalData.FLAG_danni_mat_assicurati_A = v, (v) => GlobalData.FLAG_danni_mat_assicurati_B = v, a['flag_danni']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data['conducente'] != null) {
|
if (data['conducente'] != null) {
|
||||||
var c = data['conducente'];
|
var c = data['conducente'];
|
||||||
setVal((v) => GlobalData.cognomeCondA = v, (v) => GlobalData.cognomeCondB = v, c['cognome']);
|
setVal((v) => GlobalData.Cognome_cond_A = v, (v) => GlobalData.Cognome_cond_B = v, c['cognome']);
|
||||||
setVal((v) => GlobalData.nomeCondA = v, (v) => GlobalData.nomeCondB = v, c['nome']);
|
setVal((v) => GlobalData.Nome_cond_A = v, (v) => GlobalData.Nome_cond_B = v, c['nome']);
|
||||||
setVal((v) => GlobalData.dataNascitaCondA = v, (v) => GlobalData.dataNascitaCondB = v, c['nascita']);
|
setVal((v) => GlobalData.Data_nascita_cond_A = v, (v) => GlobalData.Data_nascita_cond_B = v, c['nascita']);
|
||||||
setVal((v) => GlobalData.codFiscaleCondA = v, (v) => GlobalData.codFiscaleCondB = v, c['cf']);
|
setVal((v) => GlobalData.Cod_fiscale_cond_A = v, (v) => GlobalData.Cod_fiscale_cond_B = v, c['cf']);
|
||||||
setVal((v) => GlobalData.indirizzoCondA = v, (v) => GlobalData.indirizzoCondB = v, c['indirizzo']);
|
setVal((v) => GlobalData.Indirizzo_cond_A = v, (v) => GlobalData.Indirizzo_cond_B = v, c['indirizzo']);
|
||||||
setVal((v) => GlobalData.statoCondA = v, (v) => GlobalData.statoCondB = v, c['stato']);
|
setVal((v) => GlobalData.Stato_cond_A = v, (v) => GlobalData.Stato_cond_B = v, c['stato']);
|
||||||
setVal((v) => GlobalData.nTelMailCondA = v, (v) => GlobalData.nTelMailCondB = v, c['tel']);
|
setVal((v) => GlobalData.N_tel_mail_cond_A = v, (v) => GlobalData.N_tel_mail_cond_B = v, c['tel']);
|
||||||
setVal((v) => GlobalData.emailCondA = v, (v) => GlobalData.emailCondB = v, c['email']);
|
setVal((v) => GlobalData.N_Patente_cond_A = v, (v) => GlobalData.N_Patente_cond_B = v, c['patente']);
|
||||||
setVal((v) => GlobalData.nPatenteCondA = v, (v) => GlobalData.nPatenteCondB = v, c['patente']);
|
setVal((v) => GlobalData.Categoria_cond_A = v, (v) => GlobalData.Categoria_cond_B = v, c['cat_patente']);
|
||||||
setVal((v) => GlobalData.categoriaCondA = v, (v) => GlobalData.categoriaCondB = v, c['cat_patente']);
|
setVal((v) => GlobalData.Scadenza_cond_A = v, (v) => GlobalData.Scadenza_cond_B = v, c['scad_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.danniVisibiliA = v, (v) => GlobalData.danniVisibiliB = v, d['visibili']);
|
setVal((v) => GlobalData.danni_visibili_A = v, (v) => GlobalData.danni_visibili_B = v, d['visibili']);
|
||||||
setVal((v) => GlobalData.osservazioniA = v, (v) => GlobalData.osservazioniB = v, d['osservazioni']);
|
setVal((v) => GlobalData.osservazioni_A = v, (v) => GlobalData.osservazioni_B = v, d['osservazioni']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ class _Comp1_5ScreenState extends State<Comp1_5Screen> {
|
||||||
}
|
}
|
||||||
|
|
||||||
void _initControllers() {
|
void _initControllers() {
|
||||||
_data = TextEditingController(text: GlobalData.dataIncidente);
|
_data = TextEditingController(text: GlobalData.data_incidente);
|
||||||
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.veicoliDanniMaterialiOltre;
|
_danniVeicoli = GlobalData.Veicoli_danni_materiali_oltre;
|
||||||
_danniCose = GlobalData.oggettiDiversiDanniMateriali;
|
_danniCose = GlobalData.Oggetti_diversi_danni_materiali;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- POPUP INFORMATIVO ---
|
// --- POPUP INFORMATIVO ---
|
||||||
|
|
@ -276,12 +276,12 @@ class _Comp1_5ScreenState extends State<Comp1_5Screen> {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GlobalData.dataIncidente = _data.text;
|
GlobalData.data_incidente = _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.veicoliDanniMaterialiOltre = _danniVeicoli;
|
GlobalData.Veicoli_danni_materiali_oltre = _danniVeicoli;
|
||||||
GlobalData.oggettiDiversiDanniMateriali = _danniCose;
|
GlobalData.Oggetti_diversi_danni_materiali = _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()));
|
||||||
|
|
|
||||||
|
|
@ -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.danniVisibiliB : GlobalData.danniVisibiliA);
|
_controllerDanni = TextEditingController(text: isB ? GlobalData.danni_visibili_B : GlobalData.danni_visibili_A);
|
||||||
_controllerOsservazioni = TextEditingController(text: isB ? GlobalData.osservazioniB : GlobalData.osservazioniA);
|
_controllerOsservazioni = TextEditingController(text: isB ? GlobalData.osservazioni_B : GlobalData.osservazioni_A);
|
||||||
_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.danniVisibiliB = _controllerDanni.text.toUpperCase();
|
GlobalData.danni_visibili_B = _controllerDanni.text.toUpperCase();
|
||||||
GlobalData.osservazioniB = _controllerOsservazioni.text.toUpperCase();
|
GlobalData.osservazioni_B = _controllerOsservazioni.text.toUpperCase();
|
||||||
} else {
|
} else {
|
||||||
GlobalData.puntiUrtoA_List = _selectedSectors.toList();
|
GlobalData.puntiUrtoA_List = _selectedSectors.toList();
|
||||||
GlobalData.danniVisibiliA = _controllerDanni.text.toUpperCase();
|
GlobalData.danni_visibili_A = _controllerDanni.text.toUpperCase();
|
||||||
GlobalData.osservazioniA = _controllerOsservazioni.text.toUpperCase();
|
GlobalData.osservazioni_A = _controllerOsservazioni.text.toUpperCase();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Navigator.push(context, MaterialPageRoute(builder: (c) => const Comp12Screen()));
|
Navigator.push(context, MaterialPageRoute(builder: (c) => const Comp12Screen()));
|
||||||
|
|
|
||||||
|
|
@ -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.cognomeContraenteB.trim().isNotEmpty && GlobalData.targaB.trim().isNotEmpty;
|
datiOk = GlobalData.Cognome_contraente_B.trim().isNotEmpty && GlobalData.Targa_B.trim().isNotEmpty;
|
||||||
} else {
|
} else {
|
||||||
datiOk = GlobalData.cognomeContraenteA.trim().isNotEmpty && GlobalData.targaA.trim().isNotEmpty;
|
datiOk = GlobalData.Cognome_contraente_A.trim().isNotEmpty && GlobalData.Targa_A.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.nTelMailCondA.isNotEmpty ? GlobalData.nTelMailCondA : GlobalData.nTelefonoMailContraenteA;
|
String telA = GlobalData.N_tel_mail_cond_A.isNotEmpty ? GlobalData.N_tel_mail_cond_A : GlobalData.N_telefono_mail_contraente_A;
|
||||||
String telB = GlobalData.nTelMailCondB.isNotEmpty ? GlobalData.nTelMailCondB : GlobalData.nTelefonoMailContraenteB;
|
String telB = GlobalData.N_tel_mail_cond_B.isNotEmpty ? GlobalData.N_tel_mail_cond_B : GlobalData.N_telefono_mail_contraente_B;
|
||||||
|
|
||||||
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.nomeCondA} ${GlobalData.cognomeCondA}".trim();
|
String nomeA = "${GlobalData.Nome_cond_A} ${GlobalData.Cognome_cond_A}".trim();
|
||||||
if (nomeA.isEmpty) nomeA = "${GlobalData.nomeContraenteA} ${GlobalData.cognomeContraenteA}".trim();
|
if (nomeA.isEmpty) nomeA = "${GlobalData.Nome_contraente_A} ${GlobalData.Cognome_contraente_A}".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.nomeCondB} ${GlobalData.cognomeCondB}".trim();
|
String nomeB = "${GlobalData.Nome_cond_B} ${GlobalData.Cognome_cond_B}".trim();
|
||||||
if (nomeB.isEmpty) nomeB = "${GlobalData.nomeContraenteB} ${GlobalData.cognomeContraenteB}".trim();
|
if (nomeB.isEmpty) nomeB = "${GlobalData.Nome_contraente_B} ${GlobalData.Cognome_contraente_B}".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.numeroPolizzaA : GlobalData.numeroPolizzaB).trim();
|
String polizzaChiScrive = (isA ? GlobalData.Numero_Polizza_A : GlobalData.Numero_Polizza_B).trim();
|
||||||
String targaChiScrive = (isA ? GlobalData.targaA : GlobalData.targaB).trim();
|
String targaChiScrive = (isA ? GlobalData.Targa_A : GlobalData.Targa_B).trim();
|
||||||
String firmaChiScrive = "${isA ? GlobalData.nomeContraenteA : GlobalData.nomeContraenteB} ${isA ? GlobalData.cognomeContraenteA : GlobalData.cognomeContraenteB}";
|
String firmaChiScrive = "${isA ? GlobalData.Nome_contraente_A : GlobalData.Nome_contraente_B} ${isA ? GlobalData.Cognome_contraente_A : GlobalData.Cognome_contraente_B}";
|
||||||
String contattoChiScrive = (isA ? GlobalData.nTelefonoMailContraenteA : GlobalData.nTelefonoMailContraenteB).trim();
|
String contattoChiScrive = (isA ? GlobalData.N_telefono_mail_contraente_A : GlobalData.N_telefono_mail_contraente_B).trim();
|
||||||
|
|
||||||
String compagniaUtente = (isA ? GlobalData.denominazioneA : GlobalData.denominazioneB).trim().toUpperCase();
|
String compagniaUtente = (isA ? GlobalData.Denominazione_A : GlobalData.Denominazione_B).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.dataIncidente} 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.data_incidente} 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";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -120,37 +120,37 @@ class _Comp6_7ScreenState extends State<Comp6_7Screen> {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isB) {
|
if (isB) {
|
||||||
_cognome = TextEditingController(text: GlobalData.cognomeContraenteB);
|
_cognome = TextEditingController(text: GlobalData.Cognome_contraente_B);
|
||||||
_nome = TextEditingController(text: GlobalData.nomeContraenteB);
|
_nome = TextEditingController(text: GlobalData.Nome_contraente_B);
|
||||||
_cf = TextEditingController(text: GlobalData.codiceFiscaleContraenteB);
|
_cf = TextEditingController(text: GlobalData.Codice_Fiscale_contraente_B);
|
||||||
_indirizzo = TextEditingController(text: GlobalData.indirizzoContraenteB);
|
_indirizzo = TextEditingController(text: GlobalData.Indirizzo_contraente_B);
|
||||||
_cap = TextEditingController(text: GlobalData.capContraenteB);
|
_cap = TextEditingController(text: GlobalData.CAP_contraente_B);
|
||||||
_stato = TextEditingController(text: GlobalData.statoContraenteB.isEmpty ? "ITALIA" : GlobalData.statoContraenteB);
|
_stato = TextEditingController(text: GlobalData.Stato_contraente_B.isEmpty ? "ITALIA" : GlobalData.Stato_contraente_B);
|
||||||
_tel = TextEditingController(text: GlobalData.nTelefonoMailContraenteB);
|
_tel = TextEditingController(text: GlobalData.N_telefono_mail_contraente_B);
|
||||||
_email = TextEditingController(text: GlobalData.emailContraenteB);
|
_email = TextEditingController(text: GlobalData.Email_contraente_B);
|
||||||
|
|
||||||
_marca = TextEditingController(text: GlobalData.marcaETipoB);
|
_marca = TextEditingController(text: GlobalData.Marca_e_Tipo_B);
|
||||||
_targa = TextEditingController(text: GlobalData.targaB);
|
_targa = TextEditingController(text: GlobalData.Targa_B);
|
||||||
_statoImm = TextEditingController(text: GlobalData.statoImmatricolazioneB.isEmpty ? "ITALIA" : GlobalData.statoImmatricolazioneB);
|
_statoImm = TextEditingController(text: GlobalData.Stato_immatricolazione_B.isEmpty ? "ITALIA" : GlobalData.Stato_immatricolazione_B);
|
||||||
|
|
||||||
_rimorchio = TextEditingController(text: pulisciBarre(GlobalData.rimorchioB, "/"));
|
_rimorchio = TextEditingController(text: pulisciBarre(GlobalData.Rimorchio_B, "/"));
|
||||||
_statoImm2 = TextEditingController(text: pulisciBarre(GlobalData.statoImmatricolazione2B, "/"));
|
_statoImm2 = TextEditingController(text: pulisciBarre(GlobalData.Stato_immatricolazione2_B, "/"));
|
||||||
} else {
|
} else {
|
||||||
_cognome = TextEditingController(text: GlobalData.cognomeContraenteA);
|
_cognome = TextEditingController(text: GlobalData.Cognome_contraente_A);
|
||||||
_nome = TextEditingController(text: GlobalData.nomeContraenteA);
|
_nome = TextEditingController(text: GlobalData.Nome_contraente_A);
|
||||||
_cf = TextEditingController(text: GlobalData.codiceFiscaleContraenteA);
|
_cf = TextEditingController(text: GlobalData.Codice_Fiscale_contraente_A);
|
||||||
_indirizzo = TextEditingController(text: GlobalData.indirizzoContraenteA);
|
_indirizzo = TextEditingController(text: GlobalData.Indirizzo_contraente_A);
|
||||||
_cap = TextEditingController(text: GlobalData.capContraenteA);
|
_cap = TextEditingController(text: GlobalData.CAP_contraente_A);
|
||||||
_stato = TextEditingController(text: GlobalData.statoContraenteA.isEmpty ? "ITALIA" : GlobalData.statoContraenteA);
|
_stato = TextEditingController(text: GlobalData.Stato_contraente_A.isEmpty ? "ITALIA" : GlobalData.Stato_contraente_A);
|
||||||
_tel = TextEditingController(text: GlobalData.nTelefonoMailContraenteA);
|
_tel = TextEditingController(text: GlobalData.N_telefono_mail_contraente_A);
|
||||||
_email = TextEditingController(text: GlobalData.emailContraenteA);
|
_email = TextEditingController(text: GlobalData.Email_contraente_A);
|
||||||
|
|
||||||
_marca = TextEditingController(text: GlobalData.marcaETipoA);
|
_marca = TextEditingController(text: GlobalData.Marca_e_Tipo_A);
|
||||||
_targa = TextEditingController(text: GlobalData.targaA);
|
_targa = TextEditingController(text: GlobalData.Targa_A);
|
||||||
_statoImm = TextEditingController(text: GlobalData.statoImmatricolazioneA.isEmpty ? "ITALIA" : GlobalData.statoImmatricolazioneA);
|
_statoImm = TextEditingController(text: GlobalData.Stato_immatricolazione_A.isEmpty ? "ITALIA" : GlobalData.Stato_immatricolazione_A);
|
||||||
|
|
||||||
_rimorchio = TextEditingController(text: pulisciBarre(GlobalData.rimorchioA, "/"));
|
_rimorchio = TextEditingController(text: pulisciBarre(GlobalData.Rimorchio_A, "/"));
|
||||||
_statoImm2 = TextEditingController(text: pulisciBarre(GlobalData.statoImmatricolazione2A, "/"));
|
_statoImm2 = TextEditingController(text: pulisciBarre(GlobalData.Stato_immatricolazione2_A, "/"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -413,33 +413,33 @@ class _Comp6_7ScreenState extends State<Comp6_7Screen> {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentIsB) {
|
if (currentIsB) {
|
||||||
GlobalData.cognomeContraenteB = _cognome.text.trim().toUpperCase();
|
GlobalData.Cognome_contraente_B = _cognome.text.trim().toUpperCase();
|
||||||
GlobalData.nomeContraenteB = _nome.text.trim().toUpperCase();
|
GlobalData.Nome_contraente_B = _nome.text.trim().toUpperCase();
|
||||||
GlobalData.codiceFiscaleContraenteB = cfInserito;
|
GlobalData.Codice_Fiscale_contraente_B = cfInserito;
|
||||||
GlobalData.indirizzoContraenteB = _indirizzo.text.trim().toUpperCase();
|
GlobalData.Indirizzo_contraente_B = _indirizzo.text.trim().toUpperCase();
|
||||||
GlobalData.capContraenteB = _cap.text.trim();
|
GlobalData.CAP_contraente_B = _cap.text.trim();
|
||||||
GlobalData.statoContraenteB = _stato.text.trim().toUpperCase();
|
GlobalData.Stato_contraente_B = _stato.text.trim().toUpperCase();
|
||||||
GlobalData.nTelefonoMailContraenteB = telefono;
|
GlobalData.N_telefono_mail_contraente_B = telefono;
|
||||||
GlobalData.emailContraenteB = email.toLowerCase();
|
GlobalData.Email_contraente_B = email.toLowerCase();
|
||||||
GlobalData.marcaETipoB = _marca.text.trim().toUpperCase();
|
GlobalData.Marca_e_Tipo_B = _marca.text.trim().toUpperCase();
|
||||||
GlobalData.targaB = _targa.text.trim().toUpperCase();
|
GlobalData.Targa_B = _targa.text.trim().toUpperCase();
|
||||||
GlobalData.statoImmatricolazioneB = _statoImm.text.trim().toUpperCase();
|
GlobalData.Stato_immatricolazione_B = _statoImm.text.trim().toUpperCase();
|
||||||
GlobalData.rimorchioB = rimorchioFinale;
|
GlobalData.Rimorchio_B = rimorchioFinale;
|
||||||
GlobalData.statoImmatricolazione2B = statoImm2Finale;
|
GlobalData.Stato_immatricolazione2_B = statoImm2Finale;
|
||||||
} else {
|
} else {
|
||||||
GlobalData.cognomeContraenteA = _cognome.text.trim().toUpperCase();
|
GlobalData.Cognome_contraente_A = _cognome.text.trim().toUpperCase();
|
||||||
GlobalData.nomeContraenteA = _nome.text.trim().toUpperCase();
|
GlobalData.Nome_contraente_A = _nome.text.trim().toUpperCase();
|
||||||
GlobalData.codiceFiscaleContraenteA = cfInserito;
|
GlobalData.Codice_Fiscale_contraente_A = cfInserito;
|
||||||
GlobalData.indirizzoContraenteA = _indirizzo.text.trim().toUpperCase();
|
GlobalData.Indirizzo_contraente_A = _indirizzo.text.trim().toUpperCase();
|
||||||
GlobalData.capContraenteA = _cap.text.trim();
|
GlobalData.CAP_contraente_A = _cap.text.trim();
|
||||||
GlobalData.statoContraenteA = _stato.text.trim().toUpperCase();
|
GlobalData.Stato_contraente_A = _stato.text.trim().toUpperCase();
|
||||||
GlobalData.nTelefonoMailContraenteA = telefono;
|
GlobalData.N_telefono_mail_contraente_A = telefono;
|
||||||
GlobalData.emailContraenteA = email.toLowerCase();
|
GlobalData.Email_contraente_A = email.toLowerCase();
|
||||||
GlobalData.marcaETipoA = _marca.text.trim().toUpperCase();
|
GlobalData.Marca_e_Tipo_A = _marca.text.trim().toUpperCase();
|
||||||
GlobalData.targaA = _targa.text.trim().toUpperCase();
|
GlobalData.Targa_A = _targa.text.trim().toUpperCase();
|
||||||
GlobalData.statoImmatricolazioneA = _statoImm.text.trim().toUpperCase();
|
GlobalData.Stato_immatricolazione_A = _statoImm.text.trim().toUpperCase();
|
||||||
GlobalData.rimorchioA = rimorchioFinale;
|
GlobalData.Rimorchio_A = rimorchioFinale;
|
||||||
GlobalData.statoImmatricolazione2A = statoImm2Finale;
|
GlobalData.Stato_immatricolazione2_A = statoImm2Finale;
|
||||||
}
|
}
|
||||||
|
|
||||||
// <-- SALVATAGGIO DEI DATI NELLA TASTIERA DI SISTEMA (Per l'Autofill) -->
|
// <-- SALVATAGGIO DEI DATI NELLA TASTIERA DI SISTEMA (Per l'Autofill) -->
|
||||||
|
|
|
||||||
|
|
@ -51,17 +51,17 @@ class _Comp8ScreenState extends State<Comp8Screen> {
|
||||||
}
|
}
|
||||||
|
|
||||||
void _initControllers() {
|
void _initControllers() {
|
||||||
String denominazioneSalvata = isB ? GlobalData.denominazioneB : GlobalData.denominazioneA;
|
String denominazioneSalvata = isB ? GlobalData.Denominazione_B : GlobalData.Denominazione_A;
|
||||||
_polizza = TextEditingController(text: isB ? GlobalData.numeroPolizzaB : GlobalData.numeroPolizzaA);
|
_polizza = TextEditingController(text: isB ? GlobalData.Numero_Polizza_B : GlobalData.Numero_Polizza_A);
|
||||||
_cartaVerde = TextEditingController(text: isB ? GlobalData.nCartaVerdeB : GlobalData.nCartaVerdeA);
|
_cartaVerde = TextEditingController(text: isB ? GlobalData.N_carta_verde_B : GlobalData.N_carta_verde_A);
|
||||||
_validoDal = TextEditingController(text: isB ? GlobalData.dataInizioDalB : GlobalData.dataInizioDalA);
|
_validoDal = TextEditingController(text: isB ? GlobalData.Data_Inizio_Dal_B : GlobalData.Data_Inizio_Dal_A);
|
||||||
_validoAl = TextEditingController(text: isB ? GlobalData.dataScadenzaAlB : GlobalData.dataScadenzaAlA);
|
_validoAl = TextEditingController(text: isB ? GlobalData.Data_Scadenza_Al_B : GlobalData.Data_Scadenza_Al_A);
|
||||||
_agenzia = TextEditingController(text: isB ? GlobalData.agenziaB : GlobalData.agenziaA);
|
_agenzia = TextEditingController(text: isB ? GlobalData.Agenzia_B : GlobalData.Agenzia_A);
|
||||||
_denomAgenzia = TextEditingController(text: isB ? GlobalData.denominazioneAgenziaB : GlobalData.denominazioneAgenziaA);
|
_denomAgenzia = TextEditingController(text: isB ? GlobalData.Denominazione_agenzia_B : GlobalData.Denominazione_agenzia_A);
|
||||||
_indirizzoAgenzia = TextEditingController(text: isB ? GlobalData.indirizzoAgenziaB : GlobalData.indirizzoAgenziaA);
|
_indirizzoAgenzia = TextEditingController(text: isB ? GlobalData.Indirizzo_agenzia_B : GlobalData.Indirizzo_agenzia_A);
|
||||||
_statoAgenzia = TextEditingController(text: (isB ? GlobalData.statoAgenziaB : GlobalData.statoAgenziaA).isEmpty ? "ITALIA" : (isB ? GlobalData.statoAgenziaB : GlobalData.statoAgenziaA));
|
_statoAgenzia = TextEditingController(text: (isB ? GlobalData.Stato_agenzia_B : GlobalData.Stato_agenzia_A).isEmpty ? "ITALIA" : (isB ? GlobalData.Stato_agenzia_B : GlobalData.Stato_agenzia_A));
|
||||||
_telAgenzia = TextEditingController(text: isB ? GlobalData.nTelMailAgenziaB : GlobalData.nTelMailAgenziaA);
|
_telAgenzia = TextEditingController(text: isB ? GlobalData.N_tel_mail_agenzia_B : GlobalData.N_tel_mail_agenzia_A);
|
||||||
_danniMaterialiAssicurati = isB ? GlobalData.flagDanniMatAssicuratiB : GlobalData.flagDanniMatAssicuratiA;
|
_danniMaterialiAssicurati = isB ? GlobalData.FLAG_danni_mat_assicurati_B : GlobalData.FLAG_danni_mat_assicurati_A;
|
||||||
_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.denominazioneB = denomFinale;
|
GlobalData.Denominazione_B = denomFinale;
|
||||||
GlobalData.numeroPolizzaB = _polizza.text.toUpperCase();
|
GlobalData.Numero_Polizza_B = _polizza.text.toUpperCase();
|
||||||
GlobalData.nCartaVerdeB = _cartaVerde.text.toUpperCase();
|
GlobalData.N_carta_verde_B = _cartaVerde.text.toUpperCase();
|
||||||
GlobalData.dataInizioDalB = _validoDal.text;
|
GlobalData.Data_Inizio_Dal_B = _validoDal.text;
|
||||||
GlobalData.dataScadenzaAlB = _validoAl.text;
|
GlobalData.Data_Scadenza_Al_B = _validoAl.text;
|
||||||
GlobalData.agenziaB = _agenzia.text.toUpperCase();
|
GlobalData.Agenzia_B = _agenzia.text.toUpperCase();
|
||||||
GlobalData.denominazioneAgenziaB = _denomAgenzia.text.toUpperCase();
|
GlobalData.Denominazione_agenzia_B = _denomAgenzia.text.toUpperCase();
|
||||||
GlobalData.indirizzoAgenziaB = _indirizzoAgenzia.text.toUpperCase();
|
GlobalData.Indirizzo_agenzia_B = _indirizzoAgenzia.text.toUpperCase();
|
||||||
GlobalData.statoAgenziaB = _statoAgenzia.text.toUpperCase();
|
GlobalData.Stato_agenzia_B = _statoAgenzia.text.toUpperCase();
|
||||||
GlobalData.nTelMailAgenziaB = _telAgenzia.text.toUpperCase();
|
GlobalData.N_tel_mail_agenzia_B = _telAgenzia.text.toUpperCase();
|
||||||
GlobalData.flagDanniMatAssicuratiB = _danniMaterialiAssicurati;
|
GlobalData.FLAG_danni_mat_assicurati_B = _danniMaterialiAssicurati;
|
||||||
} else {
|
} else {
|
||||||
GlobalData.denominazioneA = denomFinale;
|
GlobalData.Denominazione_A = denomFinale;
|
||||||
GlobalData.numeroPolizzaA = _polizza.text.toUpperCase();
|
GlobalData.Numero_Polizza_A = _polizza.text.toUpperCase();
|
||||||
GlobalData.nCartaVerdeA = _cartaVerde.text.toUpperCase();
|
GlobalData.N_carta_verde_A = _cartaVerde.text.toUpperCase();
|
||||||
GlobalData.dataInizioDalA = _validoDal.text;
|
GlobalData.Data_Inizio_Dal_A = _validoDal.text;
|
||||||
GlobalData.dataScadenzaAlA = _validoAl.text;
|
GlobalData.Data_Scadenza_Al_A = _validoAl.text;
|
||||||
GlobalData.agenziaA = _agenzia.text.toUpperCase();
|
GlobalData.Agenzia_A = _agenzia.text.toUpperCase();
|
||||||
GlobalData.denominazioneAgenziaA = _denomAgenzia.text.toUpperCase();
|
GlobalData.Denominazione_agenzia_A = _denomAgenzia.text.toUpperCase();
|
||||||
GlobalData.indirizzoAgenziaA = _indirizzoAgenzia.text.toUpperCase();
|
GlobalData.Indirizzo_agenzia_A = _indirizzoAgenzia.text.toUpperCase();
|
||||||
GlobalData.statoAgenziaA = _statoAgenzia.text.toUpperCase();
|
GlobalData.Stato_agenzia_A = _statoAgenzia.text.toUpperCase();
|
||||||
GlobalData.nTelMailAgenziaA = _telAgenzia.text.toUpperCase();
|
GlobalData.N_tel_mail_agenzia_A = _telAgenzia.text.toUpperCase();
|
||||||
GlobalData.flagDanniMatAssicuratiA = _danniMaterialiAssicurati;
|
GlobalData.FLAG_danni_mat_assicurati_A = _danniMaterialiAssicurati;
|
||||||
}
|
}
|
||||||
Navigator.push(context, MaterialPageRoute(builder: (c) => const Comp9Screen()));
|
Navigator.push(context, MaterialPageRoute(builder: (c) => const Comp9Screen()));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
124
lib/comp_9.dart
124
lib/comp_9.dart
|
|
@ -56,29 +56,29 @@ class _Comp9ScreenState extends State<Comp9Screen> {
|
||||||
|
|
||||||
void _initControllers() {
|
void _initControllers() {
|
||||||
if (isB) {
|
if (isB) {
|
||||||
_cognome = TextEditingController(text: GlobalData.cognomeCondB);
|
_cognome = TextEditingController(text: GlobalData.Cognome_cond_B);
|
||||||
_nome = TextEditingController(text: GlobalData.nomeCondB);
|
_nome = TextEditingController(text: GlobalData.Nome_cond_B);
|
||||||
_cf = TextEditingController(text: GlobalData.codFiscaleCondB);
|
_cf = TextEditingController(text: GlobalData.Cod_fiscale_cond_B);
|
||||||
_nascita = TextEditingController(text: GlobalData.dataNascitaCondB);
|
_nascita = TextEditingController(text: GlobalData.Data_nascita_cond_B);
|
||||||
_indirizzo = TextEditingController(text: GlobalData.indirizzoCondB);
|
_indirizzo = TextEditingController(text: GlobalData.Indirizzo_cond_B);
|
||||||
_stato = TextEditingController(text: GlobalData.statoCondB.isEmpty ? "ITALIA" : GlobalData.statoCondB);
|
_stato = TextEditingController(text: GlobalData.Stato_cond_B.isEmpty ? "ITALIA" : GlobalData.Stato_cond_B);
|
||||||
_tel = TextEditingController(text: GlobalData.nTelMailCondB);
|
_tel = TextEditingController(text: GlobalData.N_tel_mail_cond_B);
|
||||||
_email = TextEditingController(text: GlobalData.emailCondB);
|
_email = TextEditingController(text: GlobalData.Email_cond_B);
|
||||||
_patente = TextEditingController(text: GlobalData.nPatenteCondB);
|
_patente = TextEditingController(text: GlobalData.N_Patente_cond_B);
|
||||||
_scadenza = TextEditingController(text: GlobalData.scadenzaCondB);
|
_scadenza = TextEditingController(text: GlobalData.Scadenza_cond_B);
|
||||||
_setupCategoria(GlobalData.categoriaCondB);
|
_setupCategoria(GlobalData.Categoria_cond_B);
|
||||||
} else {
|
} else {
|
||||||
_cognome = TextEditingController(text: GlobalData.cognomeCondA);
|
_cognome = TextEditingController(text: GlobalData.Cognome_cond_A);
|
||||||
_nome = TextEditingController(text: GlobalData.nomeCondA);
|
_nome = TextEditingController(text: GlobalData.Nome_cond_A);
|
||||||
_cf = TextEditingController(text: GlobalData.codFiscaleCondA);
|
_cf = TextEditingController(text: GlobalData.Cod_fiscale_cond_A);
|
||||||
_nascita = TextEditingController(text: GlobalData.dataNascitaCondA);
|
_nascita = TextEditingController(text: GlobalData.Data_nascita_cond_A);
|
||||||
_indirizzo = TextEditingController(text: GlobalData.indirizzoCondA);
|
_indirizzo = TextEditingController(text: GlobalData.Indirizzo_cond_A);
|
||||||
_stato = TextEditingController(text: GlobalData.statoCondA.isEmpty ? "ITALIA" : GlobalData.statoCondA);
|
_stato = TextEditingController(text: GlobalData.Stato_cond_A.isEmpty ? "ITALIA" : GlobalData.Stato_cond_A);
|
||||||
_tel = TextEditingController(text: GlobalData.nTelMailCondA);
|
_tel = TextEditingController(text: GlobalData.N_tel_mail_cond_A);
|
||||||
_email = TextEditingController(text: GlobalData.emailCondA);
|
_email = TextEditingController(text: GlobalData.Email_cond_A);
|
||||||
_patente = TextEditingController(text: GlobalData.nPatenteCondA);
|
_patente = TextEditingController(text: GlobalData.N_Patente_cond_A);
|
||||||
_scadenza = TextEditingController(text: GlobalData.scadenzaCondA);
|
_scadenza = TextEditingController(text: GlobalData.Scadenza_cond_A);
|
||||||
_setupCategoria(GlobalData.categoriaCondA);
|
_setupCategoria(GlobalData.Categoria_cond_A);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -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.nomeContraenteB : GlobalData.nomeContraenteA;
|
String contraenteNome = isB ? GlobalData.Nome_contraente_B : GlobalData.Nome_contraente_A;
|
||||||
String contraenteCognome = isB ? GlobalData.cognomeContraenteB : GlobalData.cognomeContraenteA;
|
String contraenteCognome = isB ? GlobalData.Cognome_contraente_B : GlobalData.Cognome_contraente_A;
|
||||||
|
|
||||||
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.cognomeContraenteB;
|
_cognome.text = GlobalData.Cognome_contraente_B;
|
||||||
_nome.text = GlobalData.nomeContraenteB;
|
_nome.text = GlobalData.Nome_contraente_B;
|
||||||
_cf.text = GlobalData.codiceFiscaleContraenteB;
|
_cf.text = GlobalData.Codice_Fiscale_contraente_B;
|
||||||
|
|
||||||
String addr = GlobalData.indirizzoContraenteB;
|
String addr = GlobalData.Indirizzo_contraente_B;
|
||||||
if (GlobalData.capContraenteB.isNotEmpty) addr += " ${GlobalData.capContraenteB}";
|
if (GlobalData.CAP_contraente_B.isNotEmpty) addr += " ${GlobalData.CAP_contraente_B}";
|
||||||
_indirizzo.text = addr.trim();
|
_indirizzo.text = addr.trim();
|
||||||
|
|
||||||
_stato.text = GlobalData.statoContraenteB.isNotEmpty ? GlobalData.statoContraenteB : "ITALIA";
|
_stato.text = GlobalData.Stato_contraente_B.isNotEmpty ? GlobalData.Stato_contraente_B : "ITALIA";
|
||||||
_tel.text = GlobalData.nTelefonoMailContraenteB;
|
_tel.text = GlobalData.N_telefono_mail_contraente_B;
|
||||||
_email.text = GlobalData.emailContraenteB;
|
_email.text = GlobalData.Email_contraente_B;
|
||||||
} else {
|
} else {
|
||||||
_cognome.text = GlobalData.cognomeContraenteA;
|
_cognome.text = GlobalData.Cognome_contraente_A;
|
||||||
_nome.text = GlobalData.nomeContraenteA;
|
_nome.text = GlobalData.Nome_contraente_A;
|
||||||
_cf.text = GlobalData.codiceFiscaleContraenteA;
|
_cf.text = GlobalData.Codice_Fiscale_contraente_A;
|
||||||
|
|
||||||
String addr = GlobalData.indirizzoContraenteA;
|
String addr = GlobalData.Indirizzo_contraente_A;
|
||||||
if (GlobalData.capContraenteA.isNotEmpty) addr += " ${GlobalData.capContraenteA}";
|
if (GlobalData.CAP_contraente_A.isNotEmpty) addr += " ${GlobalData.CAP_contraente_A}";
|
||||||
_indirizzo.text = addr.trim();
|
_indirizzo.text = addr.trim();
|
||||||
|
|
||||||
_stato.text = GlobalData.statoContraenteA.isNotEmpty ? GlobalData.statoContraenteA : "ITALIA";
|
_stato.text = GlobalData.Stato_contraente_A.isNotEmpty ? GlobalData.Stato_contraente_A : "ITALIA";
|
||||||
_tel.text = GlobalData.nTelefonoMailContraenteA;
|
_tel.text = GlobalData.N_telefono_mail_contraente_A;
|
||||||
_email.text = GlobalData.emailContraenteA;
|
_email.text = GlobalData.Email_contraente_A;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -365,29 +365,29 @@ class _Comp9ScreenState extends State<Comp9Screen> {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isB) {
|
if (isB) {
|
||||||
GlobalData.cognomeCondB = _cognome.text.toUpperCase();
|
GlobalData.Cognome_cond_B = _cognome.text.toUpperCase();
|
||||||
GlobalData.nomeCondB = _nome.text.toUpperCase();
|
GlobalData.Nome_cond_B = _nome.text.toUpperCase();
|
||||||
GlobalData.codFiscaleCondB = _cf.text.toUpperCase();
|
GlobalData.Cod_fiscale_cond_B = _cf.text.toUpperCase();
|
||||||
GlobalData.dataNascitaCondB = _nascita.text;
|
GlobalData.Data_nascita_cond_B = _nascita.text;
|
||||||
GlobalData.indirizzoCondB = _indirizzo.text.trim().toUpperCase();
|
GlobalData.Indirizzo_cond_B = _indirizzo.text.trim().toUpperCase();
|
||||||
GlobalData.statoCondB = _stato.text.trim().toUpperCase();
|
GlobalData.Stato_cond_B = _stato.text.trim().toUpperCase();
|
||||||
GlobalData.nTelMailCondB = telefono;
|
GlobalData.N_tel_mail_cond_B = telefono;
|
||||||
GlobalData.emailCondB = email.toLowerCase();
|
GlobalData.Email_cond_B = email.toLowerCase();
|
||||||
GlobalData.nPatenteCondB = _patente.text.trim().toUpperCase();
|
GlobalData.N_Patente_cond_B = _patente.text.trim().toUpperCase();
|
||||||
GlobalData.categoriaCondB = catFinale;
|
GlobalData.Categoria_cond_B = catFinale;
|
||||||
GlobalData.scadenzaCondB = _scadenza.text;
|
GlobalData.Scadenza_cond_B = _scadenza.text;
|
||||||
} else {
|
} else {
|
||||||
GlobalData.cognomeCondA = _cognome.text.toUpperCase();
|
GlobalData.Cognome_cond_A = _cognome.text.toUpperCase();
|
||||||
GlobalData.nomeCondA = _nome.text.toUpperCase();
|
GlobalData.Nome_cond_A = _nome.text.toUpperCase();
|
||||||
GlobalData.codFiscaleCondA = _cf.text.toUpperCase();
|
GlobalData.Cod_fiscale_cond_A = _cf.text.toUpperCase();
|
||||||
GlobalData.dataNascitaCondA = _nascita.text;
|
GlobalData.Data_nascita_cond_A = _nascita.text;
|
||||||
GlobalData.indirizzoCondA = _indirizzo.text.trim().toUpperCase();
|
GlobalData.Indirizzo_cond_A = _indirizzo.text.trim().toUpperCase();
|
||||||
GlobalData.statoCondA = _stato.text.trim().toUpperCase();
|
GlobalData.Stato_cond_A = _stato.text.trim().toUpperCase();
|
||||||
GlobalData.nTelMailCondA = telefono;
|
GlobalData.N_tel_mail_cond_A = telefono;
|
||||||
GlobalData.emailCondA = email.toLowerCase();
|
GlobalData.Email_cond_A = email.toLowerCase();
|
||||||
GlobalData.nPatenteCondA = _patente.text.trim().toUpperCase();
|
GlobalData.N_Patente_cond_A = _patente.text.trim().toUpperCase();
|
||||||
GlobalData.categoriaCondA = catFinale;
|
GlobalData.Categoria_cond_A = catFinale;
|
||||||
GlobalData.scadenzaCondA = _scadenza.text;
|
GlobalData.Scadenza_cond_A = _scadenza.text;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Salvataggio silente del profilo utente
|
// Salvataggio silente del profilo utente
|
||||||
|
|
|
||||||
|
|
@ -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 dataIncidente = "";
|
static String data_incidente = "";
|
||||||
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 veicoliDanniMaterialiOltre = false;
|
static bool Veicoli_danni_materiali_oltre = false;
|
||||||
static bool oggettiDiversiDanniMateriali = false;
|
static bool Oggetti_diversi_danni_materiali = false;
|
||||||
|
|
||||||
// --- DATI LATO A (BLU) ---
|
// --- DATI LATO A (BLU) ---
|
||||||
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 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 marcaETipoA = ""; static String targaA = ""; static String statoImmatricolazioneA = ""; static String rimorchioA = ""; static String statoImmatricolazione2A = "";
|
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 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 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 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 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 List<String> puntiUrtoA_List = []; static String danniVisibiliA = ""; static String osservazioniA = ""; static Map<int, bool> circostanzeA = {}; static int totaleCrocetteA = 0; static List<Offset?> puntiFirmaA = [];
|
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 = [];
|
||||||
|
|
||||||
// --- DATI LATO B (GIALLO) ---
|
// --- DATI LATO B (GIALLO) ---
|
||||||
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 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 marcaETipoB = ""; static String targaB = ""; static String statoImmatricolazioneB = ""; static String rimorchioB = ""; static String statoImmatricolazione2B = "";
|
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 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 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 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 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 List<String> puntiUrtoB_List = []; static String danniVisibiliB = ""; static String osservazioniB = ""; static Map<int, bool> circostanzeB = {}; static int totaleCrocetteB = 0; static List<Offset?> puntiFirmaB = [];
|
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 = [];
|
||||||
|
|
||||||
// --- 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';
|
||||||
dataIncidente = ""; ora = ""; luogo = ""; testimoni = ""; feriti = false;
|
data_incidente = ""; ora = ""; luogo = ""; testimoni = ""; feriti = false;
|
||||||
veicoliDanniMaterialiOltre = false; oggettiDiversiDanniMateriali = false;
|
Veicoli_danni_materiali_oltre = false; Oggetti_diversi_danni_materiali = false;
|
||||||
resetA();
|
resetA();
|
||||||
resetB();
|
resetB();
|
||||||
elementi = []; tratti = [];
|
elementi = []; tratti = [];
|
||||||
|
|
@ -145,20 +145,20 @@ class GlobalData {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void resetA() {
|
static void resetA() {
|
||||||
cognomeContraenteA = ""; nomeContraenteA = ""; codiceFiscaleContraenteA = ""; indirizzoContraenteA = ""; capContraenteA = ""; statoContraenteA = ""; nTelefonoMailContraenteA = ""; emailContraenteA = "";
|
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 = "";
|
||||||
marcaETipoA = ""; targaA = ""; statoImmatricolazioneA = ""; rimorchioA = ""; statoImmatricolazione2A = "";
|
Marca_e_Tipo_A = ""; Targa_A = ""; Stato_immatricolazione_A = ""; Rimorchio_A = ""; Stato_immatricolazione2_A = "";
|
||||||
denominazioneA = ""; numeroPolizzaA = ""; nCartaVerdeA = ""; dataInizioDalA = ""; dataScadenzaAlA = ""; agenziaA = ""; denominazioneAgenziaA = ""; indirizzoAgenziaA = ""; statoAgenziaA = ""; nTelMailAgenziaA = ""; flagDanniMatAssicuratiA = false;
|
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;
|
||||||
cognomeCondA = ""; nomeCondA = ""; dataNascitaCondA = ""; codFiscaleCondA = ""; indirizzoCondA = ""; statoCondA = ""; nTelMailCondA = ""; emailCondA = ""; nPatenteCondA = ""; scadenzaCondA = ""; categoriaCondA = "";
|
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 = "";
|
||||||
puntiUrtoA_List = []; danniVisibiliA = ""; osservazioniA = ""; circostanzeA = {}; totaleCrocetteA = 0; puntiFirmaA = [];
|
puntiUrtoA_List = []; danni_visibili_A = ""; osservazioni_A = ""; circostanzeA = {}; totaleCrocetteA = 0; puntiFirmaA = [];
|
||||||
feaVerifiedA = false; otpDataOraA = ""; otpIdA = "";
|
feaVerifiedA = false; otpDataOraA = ""; otpIdA = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
static void resetB() {
|
static void resetB() {
|
||||||
cognomeContraenteB = ""; nomeContraenteB = ""; codiceFiscaleContraenteB = ""; indirizzoContraenteB = ""; capContraenteB = ""; statoContraenteB = ""; nTelefonoMailContraenteB = ""; emailContraenteB = "";
|
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 = "";
|
||||||
marcaETipoB = ""; targaB = ""; statoImmatricolazioneB = ""; rimorchioB = ""; statoImmatricolazione2B = "";
|
Marca_e_Tipo_B = ""; Targa_B = ""; Stato_immatricolazione_B = ""; Rimorchio_B = ""; Stato_immatricolazione2_B = "";
|
||||||
denominazioneB = ""; numeroPolizzaB = ""; nCartaVerdeB = ""; dataInizioDalB = ""; dataScadenzaAlB = ""; agenziaB = ""; denominazioneAgenziaB = ""; indirizzoAgenziaB = ""; statoAgenziaB = ""; nTelMailAgenziaB = ""; flagDanniMatAssicuratiB = false;
|
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;
|
||||||
cognomeCondB = ""; nomeCondB = ""; dataNascitaCondB = ""; codFiscaleCondB = ""; indirizzoCondB = ""; statoCondB = ""; nTelMailCondB = ""; emailCondB = ""; nPatenteCondB = ""; scadenzaCondB = ""; categoriaCondB = "";
|
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 = "";
|
||||||
puntiUrtoB_List = []; danniVisibiliB = ""; osservazioniB = ""; circostanzeB = {}; totaleCrocetteB = 0; puntiFirmaB = [];
|
puntiUrtoB_List = []; danni_visibili_B = ""; osservazioni_B = ""; circostanzeB = {}; totaleCrocetteB = 0; puntiFirmaB = [];
|
||||||
feaVerifiedB = false; otpDataOraB = ""; otpIdB = "";
|
feaVerifiedB = false; otpDataOraB = ""; otpIdB = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -167,30 +167,30 @@ class GlobalData {
|
||||||
idScambioTemporaneo = null;
|
idScambioTemporaneo = null;
|
||||||
|
|
||||||
// Header
|
// Header
|
||||||
dataIncidente = "01/01/2024"; ora = "12:30"; luogo = "ROMA, VIA DEL CORSO 10"; testimoni = "SIG. BIANCHI GIOVANNI, VIA VERDI 5, MILANO";
|
data_incidente = "01/01/2024"; ora = "12:30"; luogo = "ROMA, VIA DEL CORSO 10"; testimoni = "SIG. BIANCHI GIOVANNI, VIA VERDI 5, MILANO";
|
||||||
feriti = false; veicoliDanniMaterialiOltre = false; oggettiDiversiDanniMateriali = true;
|
feriti = false; Veicoli_danni_materiali_oltre = false; Oggetti_diversi_danni_materiali = true;
|
||||||
|
|
||||||
if (latoCorrente == 'A') {
|
if (latoCorrente == 'A') {
|
||||||
// Dati A
|
// Dati A
|
||||||
cognomeContraenteA = "ROSSI"; nomeContraenteA = "MARIO"; codiceFiscaleContraenteA = "RSSMRA80A01H501U"; indirizzoContraenteA = "VIA ROMA 1"; capContraenteA = "00100"; statoContraenteA = "ITALIA"; nTelefonoMailContraenteA = "333.1234567"; emailContraenteA = "mario.rossi@email.it";
|
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";
|
||||||
marcaETipoA = "FIAT PANDA"; targaA = "AA123AA"; statoImmatricolazioneA = "IT"; rimorchioA = ""; statoImmatricolazione2A = "";
|
Marca_e_Tipo_A = "FIAT PANDA"; Targa_A = "AA123AA"; Stato_immatricolazione_A = "IT"; Rimorchio_A = ""; Stato_immatricolazione2_A = "";
|
||||||
denominazioneA = "GENERALI"; numeroPolizzaA = "123456"; nCartaVerdeA = "CV-001"; dataInizioDalA = "01/01/2023"; dataScadenzaAlA = "01/01/2024";
|
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";
|
||||||
agenziaA = "ROMA"; denominazioneAgenziaA = "AG. CENTRALE"; indirizzoAgenziaA = "VIA PO 20"; statoAgenziaA = "IT"; nTelMailAgenziaA = "ag@mail.it"; flagDanniMatAssicuratiA = true;
|
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;
|
||||||
cognomeCondA = "ROSSI"; nomeCondA = "MARIO"; dataNascitaCondA = "01/01/1980"; codFiscaleCondA = "RSSMRA80"; indirizzoCondA = "VIA ROMA 1"; statoCondA = "IT"; nTelMailCondA = "333.1234567"; emailCondA = "mario.rossi@email.it";
|
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";
|
||||||
nPatenteCondA = "PAT-001"; scadenzaCondA = "01/01/2030"; categoriaCondA = "B";
|
N_Patente_cond_A = "PAT-001"; Scadenza_cond_A = "01/01/2030"; Categoria_cond_A = "B";
|
||||||
puntiUrtoA_List = ["Anteriore"]; danniVisibiliA = "PARAURTI ROTTO"; osservazioniA = "RAGIONE PIENA"; circostanzeA = {1:true};
|
puntiUrtoA_List = ["Anteriore"]; danni_visibili_A = "PARAURTI ROTTO"; osservazioni_A = "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
|
||||||
cognomeContraenteB = "VERDI"; nomeContraenteB = "LUIGI"; codiceFiscaleContraenteB = "VRDLGU90B02F205Z"; indirizzoContraenteB = "MILANO"; capContraenteB = "20100"; statoContraenteB = "ITALIA"; nTelefonoMailContraenteB = "340.9876543"; emailContraenteB = "luigi.verdi@email.it";
|
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";
|
||||||
marcaETipoB = "FORD FIESTA"; targaB = "BB987BB"; statoImmatricolazioneB = "IT"; rimorchioB = ""; statoImmatricolazione2B = "";
|
Marca_e_Tipo_B = "FORD FIESTA"; Targa_B = "BB987BB"; Stato_immatricolazione_B = "IT"; Rimorchio_B = ""; Stato_immatricolazione2_B = "";
|
||||||
denominazioneB = "ALLIANZ"; numeroPolizzaB = "987654"; nCartaVerdeB = "CV-002"; dataInizioDalB = "01/01/2023"; dataScadenzaAlB = "01/01/2024";
|
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";
|
||||||
agenziaB = "MILANO"; denominazioneAgenziaB = "AG. NORD"; indirizzoAgenziaB = "VIA DANTE 1"; statoAgenziaB = "IT"; nTelMailAgenziaB = "mi@mail.it"; flagDanniMatAssicuratiB = false;
|
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;
|
||||||
cognomeCondB = "VERDI"; nomeCondB = "LUIGI"; dataNascitaCondB = "02/02/1990"; codFiscaleCondB = "VRDLGU90"; indirizzoCondB = "MILANO"; statoCondB = "IT"; nTelMailCondB = "340.9876543"; emailCondB = "luigi.verdi@email.it";
|
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";
|
||||||
nPatenteCondB = "PAT-002"; scadenzaCondB = "02/02/2030"; categoriaCondB = "B";
|
N_Patente_cond_B = "PAT-002"; Scadenza_cond_B = "02/02/2030"; Categoria_cond_B = "B";
|
||||||
puntiUrtoB_List = ["Posteriore"]; danniVisibiliB = "PARAURTI POST ROTTO"; osservazioniB = "NON HO VISTO"; circostanzeB = {12:true};
|
puntiUrtoB_List = ["Posteriore"]; danni_visibili_B = "PARAURTI POST ROTTO"; osservazioni_B = "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();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.danniVisibiliA, "DANNI_VIS_A1", "DANNI_VIS_A2");
|
_riempiCampoSplit(mappaCampi, GlobalData.danni_visibili_A, "DANNI_VIS_A1", "DANNI_VIS_A2");
|
||||||
_riempiCampoSplit(mappaCampi, GlobalData.danniVisibiliB, "DANNI_VIS_B1", "DANNI_VIS_B2");
|
_riempiCampoSplit(mappaCampi, GlobalData.danni_visibili_B, "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.veicoliDanniMaterialiOltre ? CaiMapping.danni_veicoli_SI : CaiMapping.danni_veicoli_NO]);
|
_scriviX(mappaCampi, [GlobalData.Veicoli_danni_materiali_oltre ? CaiMapping.danni_veicoli_SI : CaiMapping.danni_veicoli_NO]);
|
||||||
_scriviX(mappaCampi, [GlobalData.oggettiDiversiDanniMateriali ? CaiMapping.danni_oggetti_SI : CaiMapping.danni_oggetti_NO]);
|
_scriviX(mappaCampi, [GlobalData.Oggetti_diversi_danni_materiali ? CaiMapping.danni_oggetti_SI : CaiMapping.danni_oggetti_NO]);
|
||||||
_scriviX(mappaCampi, [GlobalData.flagDanniMatAssicuratiA ? CaiMapping.danni_mat_A_SI : CaiMapping.danni_mat_A_NO]);
|
_scriviX(mappaCampi, [GlobalData.FLAG_danni_mat_assicurati_A ? CaiMapping.danni_mat_A_SI : CaiMapping.danni_mat_A_NO]);
|
||||||
_scriviX(mappaCampi, [GlobalData.flagDanniMatAssicuratiB ? CaiMapping.danni_mat_B_SI : CaiMapping.danni_mat_B_NO]);
|
_scriviX(mappaCampi, [GlobalData.FLAG_danni_mat_assicurati_B ? CaiMapping.danni_mat_B_SI : CaiMapping.danni_mat_B_NO]);
|
||||||
|
|
||||||
String catA = GlobalData.categoriaCondA.toUpperCase().trim();
|
String catA = GlobalData.Categoria_cond_A.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.categoriaCondB.toUpperCase().trim();
|
String catB = GlobalData.Categoria_cond_B.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.nomeCondA} ${GlobalData.cognomeCondA}".trim();
|
String nomeA = "${GlobalData.Nome_cond_A} ${GlobalData.Cognome_cond_A}".trim();
|
||||||
if (nomeA.isEmpty) nomeA = "${GlobalData.nomeContraenteA} ${GlobalData.cognomeContraenteA}".trim();
|
if (nomeA.isEmpty) nomeA = "${GlobalData.Nome_contraente_A} ${GlobalData.Cognome_contraente_A}".trim();
|
||||||
String cfA = GlobalData.codFiscaleCondA.isNotEmpty ? GlobalData.codFiscaleCondA : GlobalData.codiceFiscaleContraenteA;
|
String cfA = GlobalData.Cod_fiscale_cond_A.isNotEmpty ? GlobalData.Cod_fiscale_cond_A : GlobalData.Codice_Fiscale_contraente_A;
|
||||||
String telA = GlobalData.nTelMailCondA.isNotEmpty ? GlobalData.nTelMailCondA : GlobalData.nTelefonoMailContraenteA;
|
String telA = GlobalData.N_tel_mail_cond_A.isNotEmpty ? GlobalData.N_tel_mail_cond_A : GlobalData.N_telefono_mail_contraente_A;
|
||||||
|
|
||||||
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.nomeCondB} ${GlobalData.cognomeCondB}".trim();
|
String nomeB = "${GlobalData.Nome_cond_B} ${GlobalData.Cognome_cond_B}".trim();
|
||||||
if (nomeB.isEmpty) nomeB = "${GlobalData.nomeContraenteB} ${GlobalData.cognomeContraenteB}".trim();
|
if (nomeB.isEmpty) nomeB = "${GlobalData.Nome_contraente_B} ${GlobalData.Cognome_contraente_B}".trim();
|
||||||
String cfB = GlobalData.codFiscaleCondB.isNotEmpty ? GlobalData.codFiscaleCondB : GlobalData.codiceFiscaleContraenteB;
|
String cfB = GlobalData.Cod_fiscale_cond_B.isNotEmpty ? GlobalData.Cod_fiscale_cond_B : GlobalData.Codice_Fiscale_contraente_B;
|
||||||
String telB = GlobalData.nTelMailCondB.isNotEmpty ? GlobalData.nTelMailCondB : GlobalData.nTelefonoMailContraenteB;
|
String telB = GlobalData.N_tel_mail_cond_B.isNotEmpty ? GlobalData.N_tel_mail_cond_B : GlobalData.N_telefono_mail_contraente_B;
|
||||||
|
|
||||||
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 'dataIncidente': return GlobalData.dataIncidente;
|
case 'data_incidente': return GlobalData.data_incidente;
|
||||||
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 'danniVisibiliA': return GlobalData.danniVisibiliA;
|
case 'danni_visibili_A': return GlobalData.danni_visibili_A;
|
||||||
case 'osservazioniA': return GlobalData.osservazioniA;
|
case 'osservazioni_A': return GlobalData.osservazioni_A;
|
||||||
case 'danniVisibiliB': return GlobalData.danniVisibiliB;
|
case 'danni_visibili_B': return GlobalData.danni_visibili_B;
|
||||||
case 'osservazioniB': return GlobalData.osservazioniB;
|
case 'osservazioni_B': return GlobalData.osservazioni_B;
|
||||||
case 'cognomeContraenteA': return GlobalData.cognomeContraenteA;
|
case 'Cognome_contraente_A': return GlobalData.Cognome_contraente_A;
|
||||||
case 'nomeContraenteA': return GlobalData.nomeContraenteA;
|
case 'Nome_contraente_A': return GlobalData.Nome_contraente_A;
|
||||||
case 'codiceFiscaleContraenteA': return GlobalData.codiceFiscaleContraenteA;
|
case 'Codice_Fiscale_contraente_A': return GlobalData.Codice_Fiscale_contraente_A;
|
||||||
case 'indirizzoContraenteA': return GlobalData.indirizzoContraenteA;
|
case 'Indirizzo_contraente_A': return GlobalData.Indirizzo_contraente_A;
|
||||||
case 'capContraenteA': return GlobalData.capContraenteA;
|
case 'CAP_contraente_A': return GlobalData.CAP_contraente_A;
|
||||||
case 'statoContraenteA': return GlobalData.statoContraenteA;
|
case 'Stato_contraente_A': return GlobalData.Stato_contraente_A;
|
||||||
case 'nTelefonoMailContraenteA':
|
case 'N_telefono_mail_contraente_A':
|
||||||
return GlobalData.emailContraenteA.isNotEmpty
|
return GlobalData.Email_contraente_A.isNotEmpty
|
||||||
? "${GlobalData.nTelefonoMailContraenteA} - ${GlobalData.emailContraenteA}"
|
? "${GlobalData.N_telefono_mail_contraente_A} - ${GlobalData.Email_contraente_A}"
|
||||||
: GlobalData.nTelefonoMailContraenteA;
|
: GlobalData.N_telefono_mail_contraente_A;
|
||||||
case 'marcaETipoA': return GlobalData.marcaETipoA;
|
case 'Marca_e_Tipo_A': return GlobalData.Marca_e_Tipo_A;
|
||||||
case 'targaA': return GlobalData.targaA;
|
case 'Targa_A': return GlobalData.Targa_A;
|
||||||
case 'statoImmatricolazioneA': return GlobalData.statoImmatricolazioneA;
|
case 'Stato_immatricolazione_A': return GlobalData.Stato_immatricolazione_A;
|
||||||
case 'rimorchioA': return GlobalData.rimorchioA;
|
case 'Rimorchio_A': return GlobalData.Rimorchio_A;
|
||||||
case 'statoImmatricolazione2A': return GlobalData.statoImmatricolazione2A;
|
case 'Stato_immatricolazione2_A': return GlobalData.Stato_immatricolazione2_A;
|
||||||
case 'denominazioneA': return GlobalData.denominazioneA;
|
case 'Denominazione_A': return GlobalData.Denominazione_A;
|
||||||
case 'numeroPolizzaA': return GlobalData.numeroPolizzaA;
|
case 'Numero_Polizza_A': return GlobalData.Numero_Polizza_A;
|
||||||
case 'nCartaVerdeA': return GlobalData.nCartaVerdeA;
|
case 'N_carta_verde_A': return GlobalData.N_carta_verde_A;
|
||||||
case 'dataInizioDalA': return GlobalData.dataInizioDalA;
|
case 'Data_Inizio_Dal_A': return GlobalData.Data_Inizio_Dal_A;
|
||||||
case 'dataScadenzaAlA': return GlobalData.dataScadenzaAlA;
|
case 'Data_Scadenza_Al_A': return GlobalData.Data_Scadenza_Al_A;
|
||||||
case 'agenziaA': return GlobalData.agenziaA;
|
case 'Agenzia_A': return GlobalData.Agenzia_A;
|
||||||
case 'indirizzoAgenziaA': return GlobalData.indirizzoAgenziaA;
|
case 'Indirizzo_agenzia_A': return GlobalData.Indirizzo_agenzia_A;
|
||||||
case 'statoAgenziaA': return GlobalData.statoAgenziaA;
|
case 'Stato_agenzia_A': return GlobalData.Stato_agenzia_A;
|
||||||
case 'denominazioneAgenziaA': return GlobalData.denominazioneAgenziaA;
|
case 'Denominazione_agenzia_A': return GlobalData.Denominazione_agenzia_A;
|
||||||
case 'nTelMailAgenziaA': return GlobalData.nTelMailAgenziaA;
|
case 'N_tel_mail_agenzia_A': return GlobalData.N_tel_mail_agenzia_A;
|
||||||
case 'cognomeCondA': return GlobalData.cognomeCondA;
|
case 'Cognome_cond_A': return GlobalData.Cognome_cond_A;
|
||||||
case 'nomeCondA': return GlobalData.nomeCondA;
|
case 'Nome_cond_A': return GlobalData.Nome_cond_A;
|
||||||
case 'dataNascitaCondA': return GlobalData.dataNascitaCondA;
|
case 'Data_nascita_cond_A': return GlobalData.Data_nascita_cond_A;
|
||||||
case 'codFiscaleCondA': return GlobalData.codFiscaleCondA;
|
case 'Cod_fiscale_cond_A': return GlobalData.Cod_fiscale_cond_A;
|
||||||
case 'indirizzoCondA': return GlobalData.indirizzoCondA;
|
case 'Indirizzo_cond_A': return GlobalData.Indirizzo_cond_A;
|
||||||
case 'statoCondA': return GlobalData.statoCondA;
|
case 'Stato_cond_A': return GlobalData.Stato_cond_A;
|
||||||
case 'nTelMailCondA':
|
case 'N_tel_mail_cond_A':
|
||||||
return GlobalData.emailCondA.isNotEmpty
|
return GlobalData.Email_cond_A.isNotEmpty
|
||||||
? "${GlobalData.nTelMailCondA} - ${GlobalData.emailCondA}"
|
? "${GlobalData.N_tel_mail_cond_A} - ${GlobalData.Email_cond_A}"
|
||||||
: GlobalData.nTelMailCondA;
|
: GlobalData.N_tel_mail_cond_A;
|
||||||
case 'nPatenteCondA': return GlobalData.nPatenteCondA;
|
case 'N_Patente_cond_A': return GlobalData.N_Patente_cond_A;
|
||||||
case 'scadenzaCondA': return GlobalData.scadenzaCondA;
|
case 'Scadenza_cond_A': return GlobalData.Scadenza_cond_A;
|
||||||
case 'cognomeContraenteB': return GlobalData.cognomeContraenteB;
|
case 'Cognome_contraente_B': return GlobalData.Cognome_contraente_B;
|
||||||
case 'nomeContraenteB': return GlobalData.nomeContraenteB;
|
case 'Nome_contraente_B': return GlobalData.Nome_contraente_B;
|
||||||
case 'codiceFiscaleContraenteB': return GlobalData.codiceFiscaleContraenteB;
|
case 'Codice_Fiscale_contraente_B': return GlobalData.Codice_Fiscale_contraente_B;
|
||||||
case 'indirizzoContraenteB': return GlobalData.indirizzoContraenteB;
|
case 'Indirizzo_contraente_B': return GlobalData.Indirizzo_contraente_B;
|
||||||
case 'capContraenteB': return GlobalData.capContraenteB;
|
case 'CAP_contraente_B': return GlobalData.CAP_contraente_B;
|
||||||
case 'statoContraenteB': return GlobalData.statoContraenteB;
|
case 'Stato_contraente_B': return GlobalData.Stato_contraente_B;
|
||||||
case 'nTelefonoMailContraenteB':
|
case 'N_telefono_mail_contraente_B':
|
||||||
return GlobalData.emailContraenteB.isNotEmpty
|
return GlobalData.Email_contraente_B.isNotEmpty
|
||||||
? "${GlobalData.nTelefonoMailContraenteB} - ${GlobalData.emailContraenteB}"
|
? "${GlobalData.N_telefono_mail_contraente_B} - ${GlobalData.Email_contraente_B}"
|
||||||
: GlobalData.nTelefonoMailContraenteB;
|
: GlobalData.N_telefono_mail_contraente_B;
|
||||||
case 'marcaETipoB': return GlobalData.marcaETipoB;
|
case 'Marca_e_Tipo_B': return GlobalData.Marca_e_Tipo_B;
|
||||||
case 'targaB': return GlobalData.targaB;
|
case 'Targa_B': return GlobalData.Targa_B;
|
||||||
case 'statoImmatricolazioneB': return GlobalData.statoImmatricolazioneB;
|
case 'Stato_immatricolazione_B': return GlobalData.Stato_immatricolazione_B;
|
||||||
case 'rimorchioB': return GlobalData.rimorchioB;
|
case 'Rimorchio_B': return GlobalData.Rimorchio_B;
|
||||||
case 'statoImmatricolazione2B': return GlobalData.statoImmatricolazione2B;
|
case 'Stato_immatricolazione2_B': return GlobalData.Stato_immatricolazione2_B;
|
||||||
case 'denominazioneB': return GlobalData.denominazioneB;
|
case 'Denominazione_B': return GlobalData.Denominazione_B;
|
||||||
case 'numeroPolizzaB': return GlobalData.numeroPolizzaB;
|
case 'Numero_Polizza_B': return GlobalData.Numero_Polizza_B;
|
||||||
case 'nCartaVerdeB': return GlobalData.nCartaVerdeB;
|
case 'N_carta_verde_B': return GlobalData.N_carta_verde_B;
|
||||||
case 'dataInizioDalB': return GlobalData.dataInizioDalB;
|
case 'Data_Inizio_Dal_B': return GlobalData.Data_Inizio_Dal_B;
|
||||||
case 'dataScadenzaAlB': return GlobalData.dataScadenzaAlB;
|
case 'Data_Scadenza_Al_B': return GlobalData.Data_Scadenza_Al_B;
|
||||||
case 'agenziaB': return GlobalData.agenziaB;
|
case 'Agenzia_B': return GlobalData.Agenzia_B;
|
||||||
case 'indirizzoAgenziaB': return GlobalData.indirizzoAgenziaB;
|
case 'Indirizzo_agenzia_B': return GlobalData.Indirizzo_agenzia_B;
|
||||||
case 'statoAgenziaB': return GlobalData.statoAgenziaB;
|
case 'Stato_agenzia_B': return GlobalData.Stato_agenzia_B;
|
||||||
case 'denominazioneAgenziaB': return GlobalData.denominazioneAgenziaB;
|
case 'Denominazione_agenzia_B': return GlobalData.Denominazione_agenzia_B;
|
||||||
case 'nTelMailAgenziaB': return GlobalData.nTelMailAgenziaB;
|
case 'N_tel_mail_agenzia_B': return GlobalData.N_tel_mail_agenzia_B;
|
||||||
case 'cognomeCondB': return GlobalData.cognomeCondB;
|
case 'Cognome_cond_B': return GlobalData.Cognome_cond_B;
|
||||||
case 'nomeCondB': return GlobalData.nomeCondB;
|
case 'Nome_cond_B': return GlobalData.Nome_cond_B;
|
||||||
case 'dataNascitaCondB': return GlobalData.dataNascitaCondB;
|
case 'Data_nascita_cond_B': return GlobalData.Data_nascita_cond_B;
|
||||||
case 'codFiscaleCondB': return GlobalData.codFiscaleCondB;
|
case 'Cod_fiscale_cond_B': return GlobalData.Cod_fiscale_cond_B;
|
||||||
case 'indirizzoCondB': return GlobalData.indirizzoCondB;
|
case 'Indirizzo_cond_B': return GlobalData.Indirizzo_cond_B;
|
||||||
case 'statoCondB': return GlobalData.statoCondB;
|
case 'Stato_cond_B': return GlobalData.Stato_cond_B;
|
||||||
case 'nTelMailCondB':
|
case 'N_tel_mail_cond_B':
|
||||||
return GlobalData.emailCondB.isNotEmpty
|
return GlobalData.Email_cond_B.isNotEmpty
|
||||||
? "${GlobalData.nTelMailCondB} - ${GlobalData.emailCondB}"
|
? "${GlobalData.N_tel_mail_cond_B} - ${GlobalData.Email_cond_B}"
|
||||||
: GlobalData.nTelMailCondB;
|
: GlobalData.N_tel_mail_cond_B;
|
||||||
case 'nPatenteCondB': return GlobalData.nPatenteCondB;
|
case 'N_Patente_cond_B': return GlobalData.N_Patente_cond_B;
|
||||||
case 'scadenzaCondB': return GlobalData.scadenzaCondB;
|
case 'Scadenza_cond_B': return GlobalData.Scadenza_cond_B;
|
||||||
default: return "";
|
default: return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.nomeContraenteA : GlobalData.nomeContraenteB);
|
await prefs.setString('${_prefix}nome_contraente', isA ? GlobalData.Nome_contraente_A : GlobalData.Nome_contraente_B);
|
||||||
await prefs.setString('${_prefix}cognome_contraente', isA ? GlobalData.cognomeContraenteA : GlobalData.cognomeContraenteB);
|
await prefs.setString('${_prefix}cognome_contraente', isA ? GlobalData.Cognome_contraente_A : GlobalData.Cognome_contraente_B);
|
||||||
await prefs.setString('${_prefix}cf_contraente', isA ? GlobalData.codiceFiscaleContraenteA : GlobalData.codiceFiscaleContraenteB);
|
await prefs.setString('${_prefix}cf_contraente', isA ? GlobalData.Codice_Fiscale_contraente_A : GlobalData.Codice_Fiscale_contraente_B);
|
||||||
await prefs.setString('${_prefix}indirizzo_contraente', isA ? GlobalData.indirizzoContraenteA : GlobalData.indirizzoContraenteB);
|
await prefs.setString('${_prefix}indirizzo_contraente', isA ? GlobalData.Indirizzo_contraente_A : GlobalData.Indirizzo_contraente_B);
|
||||||
await prefs.setString('${_prefix}cap_contraente', isA ? GlobalData.capContraenteA : GlobalData.capContraenteB);
|
await prefs.setString('${_prefix}cap_contraente', isA ? GlobalData.CAP_contraente_A : GlobalData.CAP_contraente_B);
|
||||||
await prefs.setString('${_prefix}stato_contraente', isA ? GlobalData.statoContraenteA : GlobalData.statoContraenteB);
|
await prefs.setString('${_prefix}stato_contraente', isA ? GlobalData.Stato_contraente_A : GlobalData.Stato_contraente_B);
|
||||||
await prefs.setString('user_tel', lato == 'A' ? GlobalData.nTelefonoMailContraenteA : GlobalData.nTelefonoMailContraenteB);
|
await prefs.setString('user_tel', lato == 'A' ? GlobalData.N_telefono_mail_contraente_A : GlobalData.N_telefono_mail_contraente_B);
|
||||||
await prefs.setString('user_email', lato == 'A' ? GlobalData.emailContraenteA : GlobalData.emailContraenteB);
|
await prefs.setString('user_email', lato == 'A' ? GlobalData.Email_contraente_A : GlobalData.Email_contraente_B);
|
||||||
|
|
||||||
await prefs.setString('${_prefix}marca_tipo', isA ? GlobalData.marcaETipoA : GlobalData.marcaETipoB);
|
await prefs.setString('${_prefix}marca_tipo', isA ? GlobalData.Marca_e_Tipo_A : GlobalData.Marca_e_Tipo_B);
|
||||||
await prefs.setString('${_prefix}targa', isA ? GlobalData.targaA : GlobalData.targaB);
|
await prefs.setString('${_prefix}targa', isA ? GlobalData.Targa_A : GlobalData.Targa_B);
|
||||||
await prefs.setString('${_prefix}stato_imm', isA ? GlobalData.statoImmatricolazioneA : GlobalData.statoImmatricolazioneB);
|
await prefs.setString('${_prefix}stato_imm', isA ? GlobalData.Stato_immatricolazione_A : GlobalData.Stato_immatricolazione_B);
|
||||||
|
|
||||||
// Sezione 8 Assicurazione
|
// Sezione 8 Assicurazione
|
||||||
await prefs.setString('${_prefix}denominazione_ass', isA ? GlobalData.denominazioneA : GlobalData.denominazioneB);
|
await prefs.setString('${_prefix}denominazione_ass', isA ? GlobalData.Denominazione_A : GlobalData.Denominazione_B);
|
||||||
await prefs.setString('${_prefix}polizza_ass', isA ? GlobalData.numeroPolizzaA : GlobalData.numeroPolizzaB);
|
await prefs.setString('${_prefix}polizza_ass', isA ? GlobalData.Numero_Polizza_A : GlobalData.Numero_Polizza_B);
|
||||||
await prefs.setString('${_prefix}agenzia_ass', isA ? GlobalData.agenziaA : GlobalData.agenziaB);
|
await prefs.setString('${_prefix}agenzia_ass', isA ? GlobalData.Agenzia_A : GlobalData.Agenzia_B);
|
||||||
|
|
||||||
// Sezione 9 Conducente
|
// Sezione 9 Conducente
|
||||||
await prefs.setString('${_prefix}nome_cond', isA ? GlobalData.nomeCondA : GlobalData.nomeCondB);
|
await prefs.setString('${_prefix}nome_cond', isA ? GlobalData.Nome_cond_A : GlobalData.Nome_cond_B);
|
||||||
await prefs.setString('${_prefix}cognome_cond', isA ? GlobalData.cognomeCondA : GlobalData.cognomeCondB);
|
await prefs.setString('${_prefix}cognome_cond', isA ? GlobalData.Cognome_cond_A : GlobalData.Cognome_cond_B);
|
||||||
await prefs.setString('${_prefix}data_nascita_cond', isA ? GlobalData.dataNascitaCondA : GlobalData.dataNascitaCondB);
|
await prefs.setString('${_prefix}data_nascita_cond', isA ? GlobalData.Data_nascita_cond_A : GlobalData.Data_nascita_cond_B);
|
||||||
await prefs.setString('${_prefix}cf_cond', isA ? GlobalData.codFiscaleCondA : GlobalData.codFiscaleCondB);
|
await prefs.setString('${_prefix}cf_cond', isA ? GlobalData.Cod_fiscale_cond_A : GlobalData.Cod_fiscale_cond_B);
|
||||||
await prefs.setString('${_prefix}indirizzo_cond', isA ? GlobalData.indirizzoCondA : GlobalData.indirizzoCondB);
|
await prefs.setString('${_prefix}indirizzo_cond', isA ? GlobalData.Indirizzo_cond_A : GlobalData.Indirizzo_cond_B);
|
||||||
await prefs.setString('user_cond_tel', lato == 'A' ? GlobalData.nTelMailCondA : GlobalData.nTelMailCondB);
|
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_email', lato == 'A' ? GlobalData.emailCondA : GlobalData.emailCondB);
|
await prefs.setString('user_cond_email', lato == 'A' ? GlobalData.Email_cond_A : GlobalData.Email_cond_B);
|
||||||
await prefs.setString('${_prefix}patente_cond', isA ? GlobalData.nPatenteCondA : GlobalData.nPatenteCondB);
|
await prefs.setString('${_prefix}patente_cond', isA ? GlobalData.N_Patente_cond_A : GlobalData.N_Patente_cond_B);
|
||||||
await prefs.setString('${_prefix}scadenza_cond', isA ? GlobalData.scadenzaCondA : GlobalData.scadenzaCondB);
|
await prefs.setString('${_prefix}scadenza_cond', isA ? GlobalData.Scadenza_cond_A : GlobalData.Scadenza_cond_B);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 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.nomeContraenteA = getStr('nome_contraente');
|
GlobalData.Nome_contraente_A = getStr('nome_contraente');
|
||||||
GlobalData.cognomeContraenteA = getStr('cognome_contraente');
|
GlobalData.Cognome_contraente_A = getStr('cognome_contraente');
|
||||||
GlobalData.codiceFiscaleContraenteA = getStr('cf_contraente');
|
GlobalData.Codice_Fiscale_contraente_A = getStr('cf_contraente');
|
||||||
GlobalData.indirizzoContraenteA = getStr('indirizzo_contraente');
|
GlobalData.Indirizzo_contraente_A = getStr('indirizzo_contraente');
|
||||||
GlobalData.capContraenteA = getStr('cap_contraente');
|
GlobalData.CAP_contraente_A = getStr('cap_contraente');
|
||||||
GlobalData.statoContraenteA = getStr('stato_contraente');
|
GlobalData.Stato_contraente_A = getStr('stato_contraente');
|
||||||
GlobalData.nTelefonoMailContraenteA = prefs.getString('user_tel') ?? "";
|
GlobalData.N_telefono_mail_contraente_A = prefs.getString('user_tel') ?? "";
|
||||||
GlobalData.emailContraenteA = prefs.getString('user_email') ?? "";
|
GlobalData.Email_contraente_A = prefs.getString('user_email') ?? "";
|
||||||
|
|
||||||
GlobalData.marcaETipoA = getStr('marca_tipo');
|
GlobalData.Marca_e_Tipo_A = getStr('marca_tipo');
|
||||||
GlobalData.targaA = getStr('targa');
|
GlobalData.Targa_A = getStr('targa');
|
||||||
GlobalData.statoImmatricolazioneA = getStr('stato_imm');
|
GlobalData.Stato_immatricolazione_A = getStr('stato_imm');
|
||||||
|
|
||||||
GlobalData.denominazioneA = getStr('denominazione_ass');
|
GlobalData.Denominazione_A = getStr('denominazione_ass');
|
||||||
GlobalData.numeroPolizzaA = getStr('polizza_ass');
|
GlobalData.Numero_Polizza_A = getStr('polizza_ass');
|
||||||
GlobalData.agenziaA = getStr('agenzia_ass');
|
GlobalData.Agenzia_A = getStr('agenzia_ass');
|
||||||
|
|
||||||
GlobalData.nomeCondA = getStr('nome_cond');
|
GlobalData.Nome_cond_A = getStr('nome_cond');
|
||||||
GlobalData.cognomeCondA = getStr('cognome_cond');
|
GlobalData.Cognome_cond_A = getStr('cognome_cond');
|
||||||
GlobalData.dataNascitaCondA = getStr('data_nascita_cond');
|
GlobalData.Data_nascita_cond_A = getStr('data_nascita_cond');
|
||||||
GlobalData.codFiscaleCondA = getStr('cf_cond');
|
GlobalData.Cod_fiscale_cond_A = getStr('cf_cond');
|
||||||
GlobalData.indirizzoCondA = getStr('indirizzo_cond');
|
GlobalData.Indirizzo_cond_A = getStr('indirizzo_cond');
|
||||||
GlobalData.nTelMailCondA = prefs.getString('user_cond_tel') ?? "";
|
GlobalData.N_tel_mail_cond_A = prefs.getString('user_cond_tel') ?? "";
|
||||||
GlobalData.emailCondA = prefs.getString('user_cond_email') ?? "";
|
GlobalData.Email_cond_A = prefs.getString('user_cond_email') ?? "";
|
||||||
GlobalData.nPatenteCondA = getStr('patente_cond');
|
GlobalData.N_Patente_cond_A = getStr('patente_cond');
|
||||||
GlobalData.scadenzaCondA = getStr('scadenza_cond');
|
GlobalData.Scadenza_cond_A = getStr('scadenza_cond');
|
||||||
} else {
|
} else {
|
||||||
GlobalData.nomeContraenteB = getStr('nome_contraente');
|
GlobalData.Nome_contraente_B = getStr('nome_contraente');
|
||||||
GlobalData.cognomeContraenteB = getStr('cognome_contraente');
|
GlobalData.Cognome_contraente_B = getStr('cognome_contraente');
|
||||||
GlobalData.codiceFiscaleContraenteB = getStr('cf_contraente');
|
GlobalData.Codice_Fiscale_contraente_B = getStr('cf_contraente');
|
||||||
GlobalData.indirizzoContraenteB = getStr('indirizzo_contraente');
|
GlobalData.Indirizzo_contraente_B = getStr('indirizzo_contraente');
|
||||||
GlobalData.capContraenteB = getStr('cap_contraente');
|
GlobalData.CAP_contraente_B = getStr('cap_contraente');
|
||||||
GlobalData.statoContraenteB = getStr('stato_contraente');
|
GlobalData.Stato_contraente_B = getStr('stato_contraente');
|
||||||
GlobalData.nTelefonoMailContraenteB = prefs.getString('user_tel') ?? "";
|
GlobalData.N_telefono_mail_contraente_B = prefs.getString('user_tel') ?? "";
|
||||||
GlobalData.emailContraenteB = prefs.getString('user_email') ?? "";
|
GlobalData.Email_contraente_B = prefs.getString('user_email') ?? "";
|
||||||
|
|
||||||
GlobalData.marcaETipoB = getStr('marca_tipo');
|
GlobalData.Marca_e_Tipo_B = getStr('marca_tipo');
|
||||||
GlobalData.targaB = getStr('targa');
|
GlobalData.Targa_B = getStr('targa');
|
||||||
GlobalData.statoImmatricolazioneB = getStr('stato_imm');
|
GlobalData.Stato_immatricolazione_B = getStr('stato_imm');
|
||||||
|
|
||||||
GlobalData.denominazioneB = getStr('denominazione_ass');
|
GlobalData.Denominazione_B = getStr('denominazione_ass');
|
||||||
GlobalData.numeroPolizzaB = getStr('polizza_ass');
|
GlobalData.Numero_Polizza_B = getStr('polizza_ass');
|
||||||
GlobalData.agenziaB = getStr('agenzia_ass');
|
GlobalData.Agenzia_B = getStr('agenzia_ass');
|
||||||
|
|
||||||
GlobalData.nomeCondB = getStr('nome_cond');
|
GlobalData.Nome_cond_B = getStr('nome_cond');
|
||||||
GlobalData.cognomeCondB = getStr('cognome_cond');
|
GlobalData.Cognome_cond_B = getStr('cognome_cond');
|
||||||
GlobalData.dataNascitaCondB = getStr('data_nascita_cond');
|
GlobalData.Data_nascita_cond_B = getStr('data_nascita_cond');
|
||||||
GlobalData.codFiscaleCondB = getStr('cf_cond');
|
GlobalData.Cod_fiscale_cond_B = getStr('cf_cond');
|
||||||
GlobalData.indirizzoCondB = getStr('indirizzo_cond');
|
GlobalData.Indirizzo_cond_B = getStr('indirizzo_cond');
|
||||||
GlobalData.nTelMailCondB = prefs.getString('user_cond_tel') ?? "";
|
GlobalData.N_tel_mail_cond_B = prefs.getString('user_cond_tel') ?? "";
|
||||||
GlobalData.emailCondB = prefs.getString('user_cond_email') ?? "";
|
GlobalData.Email_cond_B = prefs.getString('user_cond_email') ?? "";
|
||||||
GlobalData.nPatenteCondB = getStr('patente_cond');
|
GlobalData.N_Patente_cond_B = getStr('patente_cond');
|
||||||
GlobalData.scadenzaCondB = getStr('scadenza_cond');
|
GlobalData.Scadenza_cond_B = getStr('scadenza_cond');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,5 @@
|
||||||
# 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.
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
- (Nessun debito tecnico critico noto al momento)
|
- **Debito Tecnico**: Sono presenti variabili non formattate in `lowerCamelCase` all'interno di `lib/global_data.dart` (es. `Cod_fiscale_cond_B`).
|
||||||
|
|
||||||
## 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.
|
||||||
|
|
|
||||||
|
|
@ -1,58 +0,0 @@
|
||||||
# 🗄️ 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.
|
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
# Next Session
|
# Next Session
|
||||||
|
|
||||||
## Stato Finale
|
## Stato Finale
|
||||||
- Completato il refactoring massivo di `global_data.dart` in `lowerCamelCase`. Il debito tecnico sintattico è stato estinto.
|
- Abbiamo concluso l'analisi dei dati di Acquisizione (Google Ads) e configurato con successo `firebase_analytics` per tracciare le aperture (`app_open`) su Firebase.
|
||||||
- La stabilità dei form e del PDF è verificata (ridotti i warning da 196 a 116).
|
- La campagna Google Ads è stata formalmente sospesa. L'architettura generale di monetizzazione e scambio dati è stabile.
|
||||||
|
|
||||||
## Prossimo Passo (Focus)
|
## Prossimo Passo (Focus)
|
||||||
- **Priorità 1 (Sviluppo Funzionale)**: Implementazione della Firma Elettronica Avanzata (FEA) e generazione del certificato nella Pagina 2 del PDF.
|
- **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à 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).
|
||||||
|
|
|
||||||
|
|
@ -1,72 +0,0 @@
|
||||||
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.");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
@ -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.nomeContraenteA = "MARIO";
|
GlobalData.Nome_contraente_A = "MARIO";
|
||||||
GlobalData.cognomeContraenteA = "ROSSI";
|
GlobalData.Cognome_contraente_A = "ROSSI";
|
||||||
GlobalData.codiceFiscaleContraenteA = "RSSMRA80A01H501U";
|
GlobalData.Codice_Fiscale_contraente_A = "RSSMRA80A01H501U";
|
||||||
GlobalData.nTelefonoMailContraenteA = "+393331234567";
|
GlobalData.N_telefono_mail_contraente_A = "+393331234567";
|
||||||
GlobalData.emailContraenteA = "mario.rossi@email.it";
|
GlobalData.Email_contraente_A = "mario.rossi@email.it";
|
||||||
|
|
||||||
GlobalData.marcaETipoA = "FIAT PANDA";
|
GlobalData.Marca_e_Tipo_A = "FIAT PANDA";
|
||||||
GlobalData.targaA = "AA123BB";
|
GlobalData.Targa_A = "AA123BB";
|
||||||
GlobalData.statoImmatricolazioneA = "ITALIA";
|
GlobalData.Stato_immatricolazione_A = "ITALIA";
|
||||||
|
|
||||||
GlobalData.denominazioneA = "ASSICURAZIONI SPA";
|
GlobalData.Denominazione_A = "ASSICURAZIONI SPA";
|
||||||
GlobalData.numeroPolizzaA = "123456789";
|
GlobalData.Numero_Polizza_A = "123456789";
|
||||||
|
|
||||||
GlobalData.nomeCondA = "MARIO";
|
GlobalData.Nome_cond_A = "MARIO";
|
||||||
GlobalData.cognomeCondA = "ROSSI";
|
GlobalData.Cognome_cond_A = "ROSSI";
|
||||||
GlobalData.nTelMailCondA = "+393331234567";
|
GlobalData.N_tel_mail_cond_A = "+393331234567";
|
||||||
GlobalData.emailCondA = "mario.rossi@email.it";
|
GlobalData.Email_cond_A = "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.nomeContraenteA = "";
|
GlobalData.Nome_contraente_A = "";
|
||||||
GlobalData.cognomeContraenteA = "";
|
GlobalData.Cognome_contraente_A = "";
|
||||||
GlobalData.targaA = "";
|
GlobalData.Targa_A = "";
|
||||||
GlobalData.emailContraenteA = "";
|
GlobalData.Email_contraente_A = "";
|
||||||
|
|
||||||
// 5. Ricarica il profilo (Autocompilazione)
|
// 5. Ricarica il profilo (Autocompilazione)
|
||||||
await ProfiloService.caricaProfilo('A');
|
await ProfiloService.caricaProfilo('A');
|
||||||
expect(GlobalData.nomeContraenteA, "MARIO");
|
expect(GlobalData.Nome_contraente_A, "MARIO");
|
||||||
expect(GlobalData.targaA, "AA123BB");
|
expect(GlobalData.Targa_A, "AA123BB");
|
||||||
expect(GlobalData.emailContraenteA, "mario.rossi@email.it");
|
expect(GlobalData.Email_contraente_A, "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.nomeContraenteB = "LUIGI";
|
GlobalData.Nome_contraente_B = "LUIGI";
|
||||||
GlobalData.cognomeContraenteB = "VERDI";
|
GlobalData.Cognome_contraente_B = "VERDI";
|
||||||
GlobalData.targaB = "CC987DD";
|
GlobalData.Targa_B = "CC987DD";
|
||||||
GlobalData.nTelMailCondB = "+393339876543";
|
GlobalData.N_tel_mail_cond_B = "+393339876543";
|
||||||
GlobalData.emailCondB = "luigi.verdi@email.it";
|
GlobalData.Email_cond_B = "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.
Loading…
Reference in a new issue