ASN091 - Caricamento raccordo clienti Assist-Portale da file¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | ASN091 |
| Titolo | Caricamento da file (raccordo clienti Portale WEB) |
| Modulo | Assist 2.0 |
| Posizione menu | Assist 2.0 > Archivi > Portale WEB > Caricamento da file |
| Sorgente | cbl/asn091.cbl (~704 righe) |
| Tipo | Import file Excel/CSV con creazione record COGGENER tipo 'AG' |
Scopo¶
Importa massivamente la tabella di raccordo tra codici cliente del gestionale ("Assist") e codici cliente del portale WEB ("GIS"). Crea record su COGGENER con gnr-tip = 'AG', gnr-parte-1(1:5) = codice cliente Assist, gnr-parte-2 = codice cliente GIS.
Accetta sia file .xls (convertito tramite ESTRXLS) che file di testo con delimitatore configurabile.
Flusso¶
- Init:
ctr-abil,z-99-init-program,open-files,rd-azi,x99-load-config - Setup: F1, F3, F8, pulsante custom F7 (trova file)
- Input file (
a-tm-file): accept percorso file con possibilita' di selezione tramiteC$OPENSAVEBOX - Conferma (
a-richiesta-conferma) -> validazione (x-imposta-conferma) - Copia file in
ext-tmp-dir(gestione thin-client con prefisso@[DISPLAY]:) - Conversione Excel se
tm-file-ext = "xls": chiamataESTRXLSper ottenere.txtcon delimitatore; - Import (
b-importa): aperturacogsequein input, scan riga per riga conunstringdelimitato daw-delimiter
Logica di import (b-importa)¶
Per ogni riga letta da cogseque (saltando la riga 1 = intestazione):
unstring seq-rec->w-seq-cli-gis,w-seq-cli-assfunction numval(w-seq-cli-ass)->w-cli-ass- Validazioni: codice Assist non zero; per
az-personal = "TI"codice >= 50000 - Verifica raccordo Assist gia' esistente:
st-coggener-notmincon chiave'AG' + cli-ass,rdnxt, controllognr-parte-1(1:5) = w-cli-ass - Verifica cliente Assist in anagrafica:
rd-coggeanatipok-ana-tipo-cli - Verifica codice Portale non spaces
- Verifica raccordo Portale gia' esistente:
st-coggener-notmin-chia2(chiave alternativa pergnr-parte-2),rdnxt - Scrittura:
wr-coggenercongnr-tip = 'AG',gnr-parte-1(1:5) = w-cli-ass,gnr-parte-2 = w-cli-gis,gnr-prog = 0 add 1 to tm-inseriti
Al termine: messaggio "Raccordi caricati: N".
File acceduti¶
| File | Record | Modo | Uso |
|---|---|---|---|
COGGENER |
gnr-rec |
I-O | Tabella raccordi (wr + st-notmin / st-notmin-chia2 / rdnxt) - chiave secondaria coggener.k02 per gnr-parte-2 |
COGGEANA |
ana-rec |
Input | Anagrafica clienti per validazione esistenza |
cogseque |
seq-rec x(600) |
Input | File di lavoro line-sequential (assegnato a w-seqname) per leggere il sorgente |
cogrisul |
ris-rec x(120) |
Output | File di risultato/log (aperto e chiuso, attualmente non scritto) |
Programmi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
C$COPY |
Copia file dal client al server (gestisce thin-client) |
C$OPENSAVEBOX |
Finestra di selezione file (F7) |
ESTRXLS |
Conversione file Excel .xls -> testo delimitato |
RNEWCONF |
Lettura configurazione delimitatore (x99-load-config) |
Configurazioni (RNEWCONF)¶
| Indice | Gruppo | Chiave | Variabile | Effetto |
|---|---|---|---|---|
| 01 | cogesys |
delimitatore-colonne-excel |
tm-cfg-delimiter |
Carattere di separazione colonne (default per file txt) |
Linkage¶
Programma standalone - wcont, wcont1.
Tasti funzione¶
| Tasto | Funzione |
|---|---|
| F3 | Conferma e avvia import |
| F7 | Apertura C$OPENSAVEBOX (pulsante custom) |
| F8 | Aiuto |
| F1 | Configurazione |
Validazioni input file¶
Controllo (x-controlla-tm-file) |
Esito |
|---|---|
tm-file = spaces |
"Nome file obbligatorio" |
tm-file contiene > 1 . |
"Nome file non corretto: impossibile stabilire l'estensione" |
Estrazione tm-file-base/tm-file-ext via unstring "." |
- |
La verifica di esistenza fisica del file e' delegata a C$COPY (codice ritorno).
Logica thin-client¶
Se ext-thin-client = "S", il percorso file passato a C$COPY viene prefissato con @[DISPLAY]: per indicare che il file e' sul client e va trasferito al server. Altrimenti viene usato cosi' com'e'.
Note implementative¶
- La prima riga del file viene saltata incondizionatamente (intestazione).
- Le righe scartate non bloccano l'import: viene mostrato un
box-msgper ogni errore e si passa alla successiva. - Le configurazioni
az-personal = "TI"attivano la soglia di codice cliente >= 50000 (cliente Telecom Italia). - Il file
cogrisule' aperto in output ma nel codice corrente non viene scritto (placeholder per log di errori - era previsto un controllo a-controlla rimasto commentato). - Il programma NON cancella i raccordi esistenti: solo inserimenti.
- L'extensione del file viene preservata nel nome temporaneo (
import.{ext}), poi se e' xls viene convertita inimport.txt.
Copybook utilizzate
wgrave, wnscr, wopenf, wstato, cogazien, utilncnf, utilopenfile, utilestrxls, opensave.def, coggener.k02. Copybook .prc/.fd/.select/.wrk generate da Screens.