{ "database_info": { "master_file": "/mnt/gescon/gescon/dbc/Stabili.mdb", "database_type": "Microsoft Access MDB", "version": "Prima versione Gescon", "directory_field": "nome_directory", "primary_link": "cod_stabile", "encoding": "Windows-1252" }, "tables_mapping": { "stabili": { "mdb_table": "Stabili", "netgescon_table": "stabili", "description": "Tabella principale stabili condominiali", "priority": 1, "depends_on": [], "fields": { "id_stabile": { "type": "AutoNumber", "description": "ID interno MDB", "netgescon_field": "id_stabile_mdb", "required": false }, "cod_stabile": { "type": "Number", "description": "Codice univoco stabile (chiave principale)", "netgescon_field": "cod_stabile_old", "required": true, "is_primary_key": true }, "denominazione": { "type": "Text(255)", "description": "Nome completo condominio", "netgescon_field": "denominazione", "required": true }, "indirizzo": { "type": "Text(255)", "description": "Indirizzo completo", "netgescon_field": "indirizzo", "required": true }, "cap": { "type": "Text(5)", "description": "Codice postale", "netgescon_field": "cap", "required": true, "validation": "^\\d{5}$" }, "citta": { "type": "Text(100)", "description": "Città", "netgescon_field": "citta", "required": true }, "pr": { "type": "Text(2)", "description": "Provincia (sigla)", "netgescon_field": "provincia", "required": true, "validation": "^[A-Z]{2}$" }, "codice_fisc": { "type": "Text(16)", "description": "Codice fiscale condominio", "netgescon_field": "codice_fiscale", "required": false, "validation": "^[A-Z0-9]{16}$" }, "cf_amministratore": { "type": "Text(16)", "description": "Codice fiscale amministratore", "netgescon_field": "amministratore_cf", "required": false, "lookup": "users.codice_fiscale" }, "num_condomini": { "type": "Integer", "description": "Numero totale unità/condomini", "netgescon_field": "totale_unita_immobiliari", "required": false, "default": 0 }, "num_scale": { "type": "Integer", "description": "Numero scale edificio", "netgescon_field": "numero_scale", "required": false, "default": 0 }, "note1": { "type": "Memo", "description": "Note generali stabile", "netgescon_field": "note_migrazione", "required": false }, "nome_directory": { "type": "Text(255)", "description": "Nome directory per file/documenti", "netgescon_field": "directory_name", "required": true, "note": "Campo fondamentale per collegamenti futuri" }, "cartella_condominio": { "type": "Text(255)", "description": "Percorso cartella documenti", "netgescon_field": "percorso_documenti_old", "required": false } } }, "condomin": { "mdb_table": "Condomin", "netgescon_table": "unita_immobiliari", "description": "Unità immobiliari e proprietari", "priority": 2, "depends_on": [ "stabili" ], "link_field": "id_stabile", "fields": { "id_cond": { "type": "AutoNumber", "description": "ID interno condomino", "netgescon_field": "id_condomino_mdb", "required": false }, "cod_cond": { "type": "Text(10)", "description": "Codice condomino/unità", "netgescon_field": "codice_unita_old", "required": true }, "scala": { "type": "Text(5)", "description": "Scala edificio", "netgescon_field": "scala", "required": false }, "int": { "type": "Text(10)", "description": "Interno/numero civico", "netgescon_field": "interno", "required": false }, "tipo_pr": { "type": "Text(1)", "description": "Tipo proprietà (P=Proprietario, I=Inquilino)", "netgescon_field": "tipo_proprieta", "required": false, "values": [ "P", "I" ] }, "nom_cond": { "type": "Text(255)", "description": "Nome completo condomino", "netgescon_field": "nome_completo", "required": true }, "ind": { "type": "Text(255)", "description": "Indirizzo condomino", "netgescon_field": "indirizzo_proprietario", "required": false }, "cap": { "type": "Text(5)", "description": "CAP condomino", "netgescon_field": "cap_proprietario", "required": false }, "citta": { "type": "Text(100)", "description": "Città condomino", "netgescon_field": "citta_proprietario", "required": false }, "pr": { "type": "Text(2)", "description": "Provincia condomino", "netgescon_field": "provincia_proprietario", "required": false }, "E_mail_condomino": { "type": "Text(255)", "description": "Email proprietario", "netgescon_field": "email_proprietario", "required": false, "validation": "email" }, "E_mail_inquilino": { "type": "Text(255)", "description": "Email inquilino", "netgescon_field": "email_inquilino", "required": false, "validation": "email" }, "id_stabile": { "type": "Number", "description": "Collegamento a stabile", "netgescon_field": "stabile_id", "required": true, "foreign_key": "stabili.cod_stabile_old" } } }, "fornitori": { "mdb_table": "Fornitori", "netgescon_table": "fornitori", "description": "Anagrafica fornitori", "priority": 3, "depends_on": [], "csv_mapping": { "separator": ";", "fields_order": [ "id_record", "cod_forn", "cognome", "nome", "indirizzo", "cap", "citta", "pr", "data_nascita", "luogo_nascita", "pr_nascita", "cod_fisc", "p_iva", "tipo_soggetto", "codice_categoria", "sesso", "attivo", "campo_17", "campo_18", "campo_19", "campo_20", "campo_21", "campo_22", "campo_23", "telefono", "campo_25", "campo_26", "campo_27", "note_telefono", "importo_residuo", "campo_30", "denominazione_completa", "campo_32", "campo_33", "titolo", "email", "categoria", "conto_contabile", "iban", "campo_39", "campo_40", "campo_41", "campo_42", "campo_43", "campo_44", "campo_45", "campo_46", "campo_47", "campo_48", "data_inserimento", "tipo_lavoro", "data_ultimo_lavoro", "data_creazione", "campo_53", "campo_54", "codice_rf", "pec", "campo_57", "campo_58", "campo_59" ] }, "fields": { "id_record": { "csv_position": 0, "type": "Integer", "description": "ID record nel CSV", "netgescon_field": "id_record_csv", "required": false }, "cod_forn": { "csv_position": 1, "type": "Text(20)", "description": "Codice fornitore univoco", "netgescon_field": "codice_fornitore_old", "required": true, "validation": "non_empty" }, "cognome": { "csv_position": 2, "type": "Text(100)", "description": "Cognome/Ragione sociale principale", "netgescon_field": "ragione_sociale", "required": true, "validation": "non_empty" }, "nome": { "csv_position": 3, "type": "Text(100)", "description": "Nome (se persona fisica)", "netgescon_field": "nome", "required": false }, "indirizzo": { "csv_position": 4, "type": "Text(255)", "description": "Indirizzo completo fornitore", "netgescon_field": "indirizzo", "required": false }, "cap": { "csv_position": 5, "type": "Text(5)", "description": "Codice postale", "netgescon_field": "cap", "required": false, "validation": "^\\d{5}$" }, "citta": { "csv_position": 6, "type": "Text(100)", "description": "Città sede fornitore", "netgescon_field": "citta", "required": false }, "pr": { "csv_position": 7, "type": "Text(2)", "description": "Provincia (sigla)", "netgescon_field": "provincia", "required": false, "validation": "^[A-Z]{2}$" }, "data_nascita": { "csv_position": 8, "type": "Date", "description": "Data nascita (se persona fisica)", "netgescon_field": "data_nascita", "required": false, "format": "dd/mm/yy" }, "luogo_nascita": { "csv_position": 9, "type": "Text(100)", "description": "Luogo di nascita", "netgescon_field": "luogo_nascita", "required": false }, "pr_nascita": { "csv_position": 10, "type": "Text(2)", "description": "Provincia nascita", "netgescon_field": "provincia_nascita", "required": false }, "cod_fisc": { "csv_position": 11, "type": "Text(16)", "description": "Codice fiscale", "netgescon_field": "codice_fiscale", "required": false, "validation": "^[A-Z0-9]{16}$" }, "p_iva": { "csv_position": 12, "type": "Text(11)", "description": "Partita IVA", "netgescon_field": "partita_iva", "required": false, "validation": "^\\d{11}$" }, "tipo_soggetto": { "csv_position": 13, "type": "Text(10)", "description": "Tipo soggetto (PR2=Professionista, SOC=Società, DIT=Ditta, ALT=Altro)", "netgescon_field": "tipo_soggetto", "required": false, "values": [ "PR2", "PR3", "SOC", "DIT", "ALT", "OCC" ] }, "sesso": { "csv_position": 15, "type": "Text(1)", "description": "Sesso (M/F)", "netgescon_field": "sesso", "required": false, "values": [ "M", "F" ] }, "attivo": { "csv_position": 16, "type": "Text(2)", "description": "Fornitore attivo (Si/No)", "netgescon_field": "attivo", "required": false, "default": "Si" }, "telefono": { "csv_position": 24, "type": "Text(50)", "description": "Numero telefono principale", "netgescon_field": "telefono", "required": false }, "note_telefono": { "csv_position": 28, "type": "Text(255)", "description": "Note aggiuntive telefono/cellulare", "netgescon_field": "note_contatti", "required": false }, "importo_residuo": { "csv_position": 29, "type": "Currency", "description": "Importo residuo da pagare", "netgescon_field": "importo_residuo", "required": false }, "denominazione_completa": { "csv_position": 31, "type": "Text(255)", "description": "Denominazione completa per fatturazione", "netgescon_field": "denominazione_completa", "required": false }, "titolo": { "csv_position": 34, "type": "Text(20)", "description": "Titolo di cortesia (Egr., Spett.le, ecc.)", "netgescon_field": "titolo", "required": false, "values": [ "Egr.", "Spett.le", "Gentile sig.ra" ] }, "email": { "csv_position": 35, "type": "Text(255)", "description": "Email principale fornitore", "netgescon_field": "email", "required": false, "validation": "email" }, "categoria": { "csv_position": 36, "type": "Integer", "description": "Categoria fornitore (codice numerico)", "netgescon_field": "categoria_id", "required": false }, "conto_contabile": { "csv_position": 37, "type": "Text(10)", "description": "Conto contabile di riferimento", "netgescon_field": "conto_contabile", "required": false }, "iban": { "csv_position": 38, "type": "Text(27)", "description": "IBAN per pagamenti", "netgescon_field": "iban", "required": false, "validation": "^IT\\d{2}[A-Z]\\d{22}$" }, "data_inserimento": { "csv_position": 50, "type": "Date", "description": "Data inserimento nel sistema", "netgescon_field": "data_inserimento_old", "required": false, "format": "dd/mm/yy" }, "tipo_lavoro": { "csv_position": 51, "type": "Text(255)", "description": "Descrizione tipo lavoro/servizio", "netgescon_field": "tipo_servizio", "required": false }, "data_ultimo_lavoro": { "csv_position": 52, "type": "Date", "description": "Data ultimo lavoro effettuato", "netgescon_field": "data_ultimo_servizio", "required": false, "format": "dd/mm/yy" }, "data_creazione": { "csv_position": 53, "type": "Date", "description": "Data creazione record", "netgescon_field": "data_creazione_old", "required": false, "format": "dd/mm/yy" }, "codice_rf": { "csv_position": 55, "type": "Text(10)", "description": "Codice RF (riferimento interno)", "netgescon_field": "codice_riferimento", "required": false }, "pec": { "csv_position": 56, "type": "Text(255)", "description": "PEC fornitore", "netgescon_field": "pec", "required": false, "validation": "email" } } }, "rate": { "mdb_table": "Rate", "netgescon_table": "rate_condominiali", "description": "Rate condominiali emesse", "priority": 4, "depends_on": [ "stabili", "condomin" ], "link_field": "id_condomino", "fields": { "id_rate": { "type": "AutoNumber", "description": "ID interno rata", "netgescon_field": "id_rata_mdb", "required": false }, "id_condomino": { "type": "Number", "description": "ID condomino (collegamento)", "netgescon_field": "unita_immobiliare_id", "required": true, "foreign_key": "condomin.id_cond" }, "propr_inquil": { "type": "Text(1)", "description": "P=Proprietario, I=Inquilino", "netgescon_field": "tipo_soggetto", "required": false }, "n_mese": { "type": "Integer", "description": "Numero mese rata", "netgescon_field": "mese_riferimento", "required": true }, "o_r_s": { "type": "Text(1)", "description": "O=Ordinario, R=Riserva, S=Straordinario", "netgescon_field": "tipo_rata", "required": true }, "importo_dovuto": { "type": "Currency", "description": "Importo dovuto (lire o euro)", "netgescon_field": "importo_originale", "required": true }, "importo_dovuto_euro": { "type": "Currency", "description": "Importo in euro", "netgescon_field": "importo_euro", "required": true }, "d_p_e": { "type": "Text(1)", "description": "Valuta (D=Dare, P=Pagato, E=Euro)", "netgescon_field": "stato_valuta", "required": false }, "dt_empag": { "type": "DateTime", "description": "Data emissione/pagamento", "netgescon_field": "data_emissione", "required": false }, "descrizione": { "type": "Text(255)", "description": "Descrizione rata", "netgescon_field": "descrizione", "required": false }, "n_stra": { "type": "Integer", "description": "Numero straordinario", "netgescon_field": "numero_straordinario", "required": false }, "str_mese": { "type": "Integer", "description": "Mese straordinario", "netgescon_field": "mese_straordinario", "required": false }, "str_anno": { "type": "Integer", "description": "Anno straordinario", "netgescon_field": "anno_straordinario", "required": false } } }, "incassi": { "mdb_table": "Incassi", "netgescon_table": "movimenti_bancari", "description": "Incassi e pagamenti", "priority": 5, "depends_on": [ "stabili", "condomin" ], "link_field": "cod_cond", "fields": { "ID_incasso": { "type": "AutoNumber", "description": "ID interno incasso", "netgescon_field": "id_incasso_mdb", "required": false }, "cod_cond": { "type": "Text(10)", "description": "Codice condomino", "netgescon_field": "codice_condomino", "required": true }, "cond_inquil": { "type": "Text(1)", "description": "C=Condomino, I=Inquilino", "netgescon_field": "tipo_pagante", "required": false }, "n_riferimento": { "type": "Integer", "description": "Numero riferimento", "netgescon_field": "numero_riferimento", "required": false }, "anno_rif": { "type": "Integer", "description": "Anno riferimento", "netgescon_field": "anno_riferimento", "required": false }, "importo_pagato": { "type": "Currency", "description": "Importo pagato (lire o euro)", "netgescon_field": "importo_originale", "required": true }, "importo_pagato_euro": { "type": "Currency", "description": "Importo in euro", "netgescon_field": "importo", "required": true }, "d_p_e": { "type": "Text(1)", "description": "Valuta (D=Dare, P=Pagato, E=Euro)", "netgescon_field": "tipo_valuta", "required": false }, "dt_empag": { "type": "DateTime", "description": "Data pagamento", "netgescon_field": "data_movimento", "required": true }, "descrizione": { "type": "Text(255)", "description": "Descrizione movimento", "netgescon_field": "descrizione", "required": false }, "cod_cassa": { "type": "Text(10)", "description": "Codice cassa/banca", "netgescon_field": "codice_cassa", "required": false } } }, "parti_comuni_amministratore": { "mdb_table": "Parti_comuni_amministratore", "netgescon_table": "users", "description": "Dati amministratore", "priority": 0, "depends_on": [], "fields": { "Nome": { "type": "Text(100)", "description": "Nome amministratore", "netgescon_field": "name", "required": true }, "Indirizzo": { "type": "Text(255)", "description": "Indirizzo amministratore", "netgescon_field": "indirizzo", "required": false }, "cap": { "type": "Text(5)", "description": "CAP amministratore", "netgescon_field": "cap", "required": false }, "citta": { "type": "Text(100)", "description": "Città amministratore", "netgescon_field": "citta", "required": false }, "pr": { "type": "Text(2)", "description": "Provincia amministratore", "netgescon_field": "provincia", "required": false }, "P_iva": { "type": "Text(11)", "description": "Partita IVA", "netgescon_field": "partita_iva", "required": false }, "cod_fisc": { "type": "Text(16)", "description": "Codice fiscale", "netgescon_field": "codice_fiscale", "required": true }, "Indirizzo_Email": { "type": "Text(255)", "description": "Email amministratore", "netgescon_field": "email", "required": true }, "telefoni": { "type": "Text(50)", "description": "Telefoni", "netgescon_field": "telefono", "required": false }, "Cellulare": { "type": "Text(20)", "description": "Cellulare", "netgescon_field": "cellulare", "required": false } } }, "singolo_anno_assemblee": { "mdb_table": "Singolo_anno_assemblee", "netgescon_table": "assemblee", "description": "Assemblee condominiali", "priority": 6, "depends_on": [ "stabili" ], "fields": { "num_ass": { "type": "Integer", "description": "Numero assemblea", "netgescon_field": "numero_assemblea", "required": true }, "ordin_straord": { "type": "Text(1)", "description": "O=Ordinaria, S=Straordinaria", "netgescon_field": "tipo_assemblea", "required": true }, "dt_1_convoc": { "type": "DateTime", "description": "Data prima convocazione", "netgescon_field": "data_prima_convocazione", "required": false }, "ora_1_convoc": { "type": "Text(10)", "description": "Ora prima convocazione", "netgescon_field": "ora_prima_convocazione", "required": false }, "luogo_1_convoc": { "type": "Text(255)", "description": "Luogo prima convocazione", "netgescon_field": "luogo_assemblea", "required": false }, "dt_2_convoc": { "type": "DateTime", "description": "Data seconda convocazione", "netgescon_field": "data_seconda_convocazione", "required": false }, "Ordine_del_giorno": { "type": "Memo", "description": "Ordine del giorno", "netgescon_field": "ordine_del_giorno", "required": false }, "Note_convocaz": { "type": "Memo", "description": "Note convocazione", "netgescon_field": "note_convocazione", "required": false }, "Link_a_zoom": { "type": "Text(255)", "description": "Link videoconferenza", "netgescon_field": "link_videoconferenza", "required": false } } } }, "import_sequence": [ { "step": 1, "table": "parti_comuni_amministratore", "description": "Import amministratori (prerequisito per stabili)" }, { "step": 2, "table": "stabili", "description": "Import stabili principali" }, { "step": 3, "table": "condomin", "description": "Import unità immobiliari e proprietari" }, { "step": 4, "table": "fornitori", "description": "Import fornitori" }, { "step": 5, "table": "rate", "description": "Import rate condominiali" }, { "step": 6, "table": "incassi", "description": "Import movimenti bancari" }, { "step": 7, "table": "singolo_anno_assemblee", "description": "Import assemblee" }, { "step": 8, "table": "anni_gestione", "description": "Import configurazione gestioni annuali" } ], "anni": { "description": "Configurazione gestioni annuali ordinarie e riscaldamento", "source_type": "csv", "csv_file": "anni.csv", "target_table": "anni_gestione", "fields": { "id_anno": { "csv_position": 0, "type": "integer", "required": true, "description": "ID univoco anno gestione" }, "anno_ordinario": { "csv_position": 1, "type": "string", "required": true, "max_length": 4, "description": "Anno gestione ordinaria" }, "anno_riscaldamento": { "csv_position": 2, "type": "string", "required": true, "max_length": 10, "description": "Periodo riscaldamento (es. 2024-25)" }, "codice_directory": { "csv_position": 3, "type": "string", "required": true, "max_length": 4, "description": "Codice directory archivi (es. 0001, 0003)" }, "selezione": { "csv_position": 4, "type": "string", "required": false, "max_length": 1, "description": "Flag selezione" }, "descrizione_selezione": { "csv_position": 5, "type": "string", "required": false, "max_length": 50, "description": "Descrizione selezione" }, "periodo_ordinario_inizio": { "csv_position": 6, "type": "date", "required": true, "format": "DD/MM/YY", "description": "Inizio periodo gestione ordinaria" }, "periodo_ordinario_fine": { "csv_position": 7, "type": "date", "required": true, "format": "DD/MM/YY", "description": "Fine periodo gestione ordinaria" }, "periodo_riscaldamento_inizio": { "csv_position": 8, "type": "date", "required": true, "format": "DD/MM/YY", "description": "Inizio periodo riscaldamento" }, "periodo_riscaldamento_fine": { "csv_position": 9, "type": "date", "required": true, "format": "DD/MM/YY", "description": "Fine periodo riscaldamento" } }, "validations": { "anno_ordinario": { "pattern": "^[0-9]{4}$", "message": "Anno deve essere formato YYYY" }, "codice_directory": { "pattern": "^[0-9]{4}$", "message": "Codice directory deve essere 4 cifre" } }, "transformations": { "periodo_ordinario_inizio": "parseDate(value, 'DD/MM/YY')", "periodo_ordinario_fine": "parseDate(value, 'DD/MM/YY')", "periodo_riscaldamento_inizio": "parseDate(value, 'DD/MM/YY')", "periodo_riscaldamento_fine": "parseDate(value, 'DD/MM/YY')" } } }