netgescon-day0/docs/00-IMPORT/01-GESCON/complete-mdb-schema.json

972 lines
28 KiB
JSON

{
"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')"
}
}
}