Gestione DB di frontiera¶
Panoramica¶
Il DB di frontiera e' un database PostgreSQL che permette la sincronizzazione bidirezionale dei dati tra il gestionale Assist/AREA e un gestionale esterno (HOST) presso il cliente. Ogni cliente che necessita di un collegamento dispone di una propria istanza del DB di frontiera.
Il sistema copre circa 30 tabelle organizzate in due ambiti:
- Anagrafico: clienti/fornitori, indirizzi, contatti, articoli, prezzi/sconti/gruppi sconto, tecnici, matricole di assistenza
- Movimentazione: documenti di magazzino, fatture, ordini di vendita, interventi di assistenza, scadenzario
Per i tracciati delle tabelle DB Frontiera, vedere la sezione Tabelle base dati.
| Programma | Funzione |
|---|---|
| GESDBFST | Pannello di controllo DB Frontiera |
| GESDBFPR | Gestione tabella processi di sincronizzazione (uso interno) |
| DFLANCIO | Esecutore processi di sincronizzazione (schedulato da PgAgent) |
| GESSTPRC | Pannello di controllo AreaGate |
| AGLANCIO | Esecutore processi di sincronizzazione AreaGate |
| DBF001 | Sincronizzazione anagrafiche clienti/fornitori |
| DBF002 | Sincronizzazione destinazioni |
| DBF003 | Sincronizzazione contatti |
| DBF004 | Sincronizzazione articoli |
| DBF005 | Sincronizzazione listini |
| DBF006 | Sincronizzazione testata gruppi sconto |
| DBF007 | Sincronizzazione dettaglio sconti |
| DBF008 | Sincronizzazione gruppi sconto per anagrafica |
| DBF009 | Sincronizzazione magazzini |
| DBF010 | Sincronizzazione giacenze |
| DBF011 | Sincronizzazione matricole assistenza |
| DBF012 | Sincronizzazione kit di intervento (testata) |
| DBF013 | Sincronizzazione kit di intervento (dettaglio) |
| DBF014 | Sincronizzazione ubicazioni |
| DBF015 | Sincronizzazione note post-it |
| DBF016 | Sincronizzazione set tipico |
| DBF017 | Importazione backorder |
| DBF018 | Importazione budget omaggi |
| DBF019 | Importazione distinta matricole |
| DBF020 | Importazione tecnici |
| DBF021 | Importazione scadenzario extracontabile |
| DBF100 | Import/export documenti di magazzino |
| DBF101 | Import/export ordini |
| DBF102 | Export variazioni su set tipico |
| DBF103 | Export variazioni su backorder |
| DBF104 | Import/export chiamate/interventi |
| DBF105 | Export pagamenti scadenzario extracontabile |
| DBF106 | Esportazione fatture/note accredito clienti |
Architettura¶
Connessione al database¶
Il DB di frontiera utilizza le librerie PostgreSQL native sviluppate internamente. L'architettura e' progettata per supportare in futuro anche altri DBMS (Oracle, SqlServer, MySql), ma attualmente e' limitata a PostgreSQL.
Configurazioni di base¶
Le configurazioni risiedono nel gruppo RNEWCONF dbfront:
| Parametro | Descrizione |
|---|---|
| sincro-attiva | Pulsante di accensione generale: attiva/disattiva tutti i processi |
| email-segnalazioni | Indirizzo e-mail per segnalazioni gravi |
| db-tipo | Tipologia DB (attualmente solo "P" = PostgreSQL) |
| db-conn-string | Stringa di connessione (host, porta, nome DB, utente, password) con indice |
| db-ddl-conn-string | Stringa di connessione con accesso DDL (livello superiore) |
| db-ddl-grant-role-string | Stringa per assegnazione ruoli |
| db-log-level | Livello di log globale |
| inverto-segno-sconti | "S" se gli sconti HOST sono esportati con segno negativo |
Tabelle di sistema¶
| Tabella | Descrizione |
|---|---|
| COGDBFPR | Processi di sincronizzazione (tabella di sistema, fornita da Eurosystem) |
| COGDBFST | Stato processi di sincronizzazione (gestita in produzione) |
La tabella COGDBFPR va copiata manualmente da p:\menugen\menu2000\gesdbfpr.arc nell'ambiente del cliente, nella cartella definita come EXT-PRG-DIR.
Schedulazione¶
I processi vengono schedulati da PgAgent. Il pannello di controllo alimenta la tabella che PgAgent utilizza per la pianificazione. Ogni processo, all'avvio, legge il proprio record di configurazione e decide se deve essere eseguito.
Pannello di controllo (GESDBFST)¶
GESDBFST presenta una griglia dove ogni riga corrisponde a un processo di sincronizzazione. Le colonne disponibili sono:
| Colonna | Contenuto | Modificabile |
|---|---|---|
| Nome | Nome del processo | |
| Descrizione | Descrizione breve | |
| Attivo | Attiva/disattiva il singolo processo. Valori: Attivo, Disattivo, solo Import (I), solo Export (E) | Si |
| Timer | Minuti tra due schedulazioni (da 1 a 99.999.999) | Si |
| Forzo schedulazione | Forza esecuzione immediata (una tantum) | Si |
| Data/ora ultima schedulazione | Timestamp dell'ultima esecuzione | |
| Data/ora prossima schedulazione | Timestamp della prossima esecuzione pianificata | |
| In corso | Indica se il processo e' correntemente in esecuzione | |
| N. Errori | Errori segnalati nell'ultima esecuzione | |
| Messaggio | Ultimo messaggio di errore | |
| Livello Log | Livello di log del processo | Si |
| Ultimo aggiornamento | Timestamp ultimo aggiornamento (solo per processi con export) | Si |
| Limita righe | Se > 0, limita l'elaborazione alle prime N righe (utile in fase di test) | Si |
| Limita errori | Se > 0, limita le segnalazioni di errore alle prime N (utile in fase di test) | Si |
Attivazione della sincronizzazione¶
- Configurare i parametri del gruppo
dbfrontin RNEWCONF - Entrare nel pannello di controllo GESDBFST
- Per ogni processo: spuntare "Attivo" e impostare il timer
- Per forzare un'esecuzione immediata: spuntare "Forzo esecuzione"
Caratteristiche dei processi¶
Ogni processo di sincronizzazione DBF* ha le seguenti caratteristiche:
- Nessuna interfaccia o interazione video
- Gestione log con livello configurabile per processo
- Messaggi rediretti sul log tramite apposita variabile di configurazione
- Aggiornamento automatico dello stato sul pannello di controllo
- Possibilita' di ricevere una richiesta di sincronizzazione per singola riga (la chiave dipende dal processo)
Elenco processi di sincronizzazione¶
Processi di importazione anagrafica¶
| Nome | Tabella DBF | Programma | Tabelle AREA | Operazione secondaria |
|---|---|---|---|---|
| ANAGR | DFANAGR | DBF001 | COGGEANA | Settimanale: flag cancellazione su anagrafiche non piu' esistenti |
| INDIR | DFINDIR | DBF002 | COGDEST2 | |
| CONTATTI | DFCONTATTI | DBF003 | COGRIFER | Settimanale: flag cancellazione su contatti non piu' esistenti |
| MERCI | DFMERCIPREST | DBF004 | Articoli | Settimanale: flag cancellazione su merci non piu' esistenti |
| PREZZI | DFPREZZI | DBF005 | COGLISNW | Settimanale: cancellazione prezzi non piu' esistenti |
| GRUPPISCONTO | DFGRUPPISCONTO | DBF006 | Gruppi sconto | |
| SCONTI | DFSCONTI | DBF007 | COGSCONT, COGGRSCD | Settimanale: cancellazione sconti non piu' esistenti |
| ANAGRSCONTI | DFANAGRSCONTI | DBF008 | COGANAGS | Settimanale: cancellazione raccordi non piu' esistenti |
| MAGAZ | DFMAGAZZINI | DBF009 | Magazzini | |
| GIACENZE | DFGIACENZE | DBF010 | Giacenze | |
| MATR-ASSI | DFMATRICOLEASSI | DBF011 | Matricole assistenza | |
| KITINTTES | DFKITINTTES | DBF012 | Kit intervento (testata) | |
| KITINTDET | DFKITTINTDET | DBF013 | Kit intervento (dettaglio) | |
| UBICAZIONI | DFUBICAZIONI | DBF014 | Ubicazioni | |
| POSTIT | DFPOSTIT | DBF015 | Note post-it | |
| SETTIPICO | DFSETTIPICO | DBF016 | Set tipico | Settimanale: pulizia clienti non referenziati |
| BACKORDER | DFBACKORDER | DBF017 | COGBKORD | Settimanale: cancellazione backorder non piu' esistenti |
| BUDGETOMAGGI | DFBUDGETOMAGGI | DBF018 | Budget omaggi | |
| DISTINTAMATR | DFDISTINTAMATR | DBF019 | Distinta matricole | |
| TECNICI | DFTECNICI | DBF020 | Tecnici | |
| SCADEX | DFSCADENZARIO | DBF021 | COGSCDEX |
Processi di import/export¶
| Nome | Tabelle DBF | Programma | Direzione |
|---|---|---|---|
| DOCMAG | DFDOCTES, DFDOCDET | DBF100 | Import + Export |
| ORDINI | DFDOCTES, DFDOCDET | DBF101 | Import + Export |
| CHIAMATE | DFCHIAMATE, DFCHIAMATEDOC, DFINTERVENTI | DBF104 | Import + Export |
Processi di sola esportazione¶
| Nome | Tabelle DBF | Programma | Descrizione |
|---|---|---|---|
| SETTIPICOVAR | DFSETTIPICOVAR | DBF102 | Variazioni su set tipico |
| BACKORDERVAR | DFBACKORDERVAR | DBF103 | Variazioni su backorder |
| SCADEXPAG | DFSCADENZARIOEXT | DBF105 | Pagamenti scadenzario extracontabile |
| FATTURECLI | DFDOCTES, DFDOCDET | DBF106 | Fatture/note accredito clienti (classe FC) |
Logica di raccordo HOST-AREA¶
Ogni processo utilizza un meccanismo di raccordo per determinare se un record e' da inserire o aggiornare.
Anagrafiche (DBF001)¶
- Identificativo HOST:
DF_ANA_KEY_HOST - Identificativo AREA:
DF_ANA_AREA_COD
| Condizione | Operazione |
|---|---|
DF_ANA_AREA_COD esiste e corrisponde a un'anagrafica AREA |
Variazione (verifica raccordo AAP2-RACCORDO) |
DF_ANA_AREA_COD non esiste, codice HOST trovato in AAP2-RACCORDO |
Variazione (effettua raccordo su DBF) |
DF_ANA_AREA_COD non esiste, codice HOST non trovato |
Inserimento |
L'elaborazione standard importa i record con DF_ANA_AGG_HOST = 1. Le cancellazioni usano il flag DF_ANA_VAL = "C".
L'elaborazione settimanale controlla tutto COGGEANA e marca come cancellati i record non piu' presenti su DFANAGR, sanando eventuali disallineamenti da esportazioni di massa.
Contatti (DBF003)¶
- Identificativo HOST:
DF_CNT_KEY_HOST - Identificativo AREA:
DF_CNT_AREA_COD
Il riconoscimento segue questa priorita':
- Se esiste il riferimento del codice contatto AREA sul record da importare: esistente, aggiornamento
- Scansione contatti per cliente: se
RIF-CODICE-HOST = DF_CNT_KEY_HOST: esistente, aggiornamento - Se nessun contatto con stesso codice HOST ma stesso nome (
RIF-NOME = DF_CNT_NOME): esistente, aggiornamento con registrazione codice HOST - Altrimenti: inserimento nuovo contatto
Prezzi (DBF005)¶
Un prezzo e' identificato da DF_PRZ_MERCE_HOST + DF_PRZ_LISTINO_HOST:
- Se il codice listino corrisponde a un codice cliente HOST: prezzo particolare cliente
- Altrimenti si cerca il raccordo con un listino AREA
- Se non trovato: errore
Sconti (DBF007)¶
Importa sconti per cliente, gruppi sconto e promozioni da DFSCONTI. Elaborazione standard su record con DF_SCO_AGG_HOST = 1, cancellazioni tramite DF_SCO_VAL = "C". L'elaborazione settimanale controlla COGSCONT e COGGRSCD.
Backorder (DBF017)¶
Chiave: cliente + indirizzo (destinazione) + merce. L'elaborazione standard ha due giri:
- Giro 1: importazione record variati (
DF_BKO_AGG_HOST = 1) - Giro 2: per ogni cliente toccato nel giro 1, marcatura come cancellati dei record COGBKORD non piu' esistenti su DFBACKORDER
L'elaborazione settimanale copre tutti i clienti non gestiti dal giro 2.
Tecnici (DBF020)¶
DF_TEC_KEY_HOST contiene il codice tecnico HOST e rappresenta il raccordo con il tecnico AREA. Dopo il raccordo, il codice AREA viene esportato su DFTECNICI.
Scadenzario extracontabile (DBF021)¶
Chiave: cliente + progressivo scadenza. Lo scadenzario e' una copia semplificata di quello HOST, importata su COGSCDEX senza inquinare lo scadenzario ufficiale AREA.
Al termine dell'elaborazione principale, per ogni cliente aggiornato viene effettuato un controllo inverso: i record presenti su COGSCDEX ma non su DFSCADENZARIO vengono rimossi.
Documenti di magazzino (DBF100)¶
Le tabelle DFDOCTES/DFDOCDET ospitano i documenti con classe DF_DTES_CLASSE = 'DM'. Il processo puo' essere configurato in import, export o entrambi.
Importazione documenti¶
Vengono importati i documenti con DF_DTES_AGG_HOST = 1. Per determinare se e' inserimento o variazione:
| DF_DTES_KEY_AREA | Raccordo COGGENER (GNR-TIPO="DH") | Operazione |
|---|---|---|
| Vuoto | Esiste e GNR-PARTE-2 esiste su COGTESBO | Variazione |
| Vuoto | Esiste ma GNR-PARTE-2 non esiste su COGTESBO | Cancella raccordo, Inserimento |
| Vuoto | Non esiste | Inserimento |
| Non vuoto | (non rilevante) | Variazione |
I documenti generati su AREA e successivamente variati dall'HOST vengono ignorati e marcati come processati.
Esportazione documenti¶
L'esportazione avviene in due fasi:
- Documenti cancellati: controllo del log cancellazioni a partire da data/ora ultima esportazione; la cancellazione e' logica
- Documenti nuovi/aggiornati: esportazione dei documenti con
COGTESAP.TSA_FL_ESPORTATO = " "(vuoto)
Non vengono esportate le variazioni su documenti generati dall'HOST. Se e' configurato il magazzino magazzino-esp-interventi, non vengono esportati i trasferimenti tra sedi collegate.
Per forzare la riesportazione: la modifica di un documento reimposta il flag a vuoto; in alternativa, usare YOGTESAP.
Chiamate/interventi (DBF104)¶
Le tabelle DFCHIAMATE, DFCHIAMATEDOC e DFINTERVENTI vengono processate insieme.
Importazione chiamate¶
Vengono importate solo le richieste nuove generate da HOST:
DF_CHT_ID_AREA = 0(non ancora acquisita)DF_CHT_ORIGINE = 'H'(generata da HOST)
Le variazioni HOST su richieste gia' importate non vengono considerate. La cancellazione richiede: DF_CHT_AGG_HOST = 1, DF_CHT_ID_AREA > 0, DF_CHT_ORIGINE = 'H', DF_CHT_VAL = "C".
Esportazione interventi¶
- Scansione interventi chiusi ed esportati sul WEB (
ACIT-FL-WEB-CHIUSE = "S") - Per ogni intervento chiuso, ricerca su DFINTERVENTI per ID intervento AREA
- Se presente: aggiornamento; se assente: inserimento
- Se la chiamata collegata non esiste su DFCHIAMATE: inserimento; altrimenti aggiornamento
- Aggiornamento di DFINTERVENTI, DFCHIAMATE, DFCHIAMATEDOC
Esportazione fatture (DBF106)¶
Le fatture vengono esportate su DFDOCTES/DFDOCDET con classe documento FC.
Il flag di controllo e' FAT2-FL-ESPORTATA su COGFATT2, che gestisce l'esportazione verso piu' destinazioni (DB Frontiera, Master DB ABB, ecc.). Il programma DBF106 esporta le fatture con flag vuoto (" ") o "A ".
Attenzione: l'esportazione di una fattura ne impedisce la modifica e la cancellazione. Il processo FATTURECLI dovrebbe essere schedulato manualmente per evitare esportazioni premature; non va messo in schedulazione automatica.
Gestione DB AreaGate¶
AreaGate utilizza un'architettura analoga al DB di frontiera, basata su PostgreSQL, per il collegamento tra AREA e l'applicazione AreaGate.
Configurazioni di base¶
| Gruppo | Parametro | Descrizione |
|---|---|---|
| abilita | attiva-areaapp | Pulsante di accensione (replicato su ARPAZIEN.RAZI_ATTIVA_SINCRO) |
| areaapp | cod-azienda | Codice azienda |
| areaapp | db-conn-string | Stringa di connessione al database |
| areaapp | agg-postgres-online | Abilita/disabilita aggiornamento in tempo reale |
| areaapp | aglancio-attivo | Gestione passaggio da vecchia a nuova procedura (default "N") |
Tabelle di sistema AreaGate¶
| Tabella | Descrizione |
|---|---|
| ARPAZIEN | Record di controllo azienda: flag sincronizzazione attiva, data/ora keep-alive |
| ARPPROC | Processi di sincronizzazione (univoca per tutte le aziende) |
| ARPSTPRC | Stato processi di sincronizzazione |
Pannello di controllo AreaGate (GESSTPRC)¶
Griglia analoga a GESDBFST con le stesse colonne, piu':
| Colonna | Contenuto | Modificabile |
|---|---|---|
| Istanza | Numero istanza per processi in parallelo (default 0) | Si |
| Direzione | Import, Export o entrambi |
Esecutore processi (AGLANCIO)¶
AGLANCIO e' un programma senza interfaccia che rimane residente finche' il flag RAZI_ATTIVA_SINCRO e' attivo. Opera per istanza: scorre i processi collegati e verifica se e' il momento dell'esecuzione.
Aggiorna il keep-alive su ARPAZIEN:
- A ogni ciclo di controllo
- Prima/dopo l'esecuzione di ogni processo
- I singoli programmi SW* lo aggiornano ogni minuto se l'esecuzione e' lunga (solo quando lanciati da AGLANCIO)
Il keep-alive permette a un demone esterno di verificare che la sincronizzazione sia effettivamente funzionante.
Ricerca dati di accesso¶
I programmi della procedura AreaGate non cercano le configurazioni direttamente, ma interrogano un sottoprogramma dedicato che restituisce la stringa di connessione. La stringa puo' anche essere passata in input dal chiamante. Questo consente un futuro meccanismo di reindirizzamento centralizzato.