IMPDST - Import/export di massa destinazioni diverse¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | IMPDST |
| Titolo | Importazione/Esportazione destinazioni diverse cli/for |
| Modulo | Sistema |
| Posizione menu | Sistema > Utility > Imp/exp di massa > Clienti/fornitori > Destinazioni diverse |
Scopo e logica generale¶
IMPDST fa parte del framework IMP* e gestisce l'import ed export massivo delle destinazioni diverse di consegna associate alle anagrafiche clienti/fornitori. Il dato e' articolato su due record a chiave comune: COGDESTI (dati anagrafici della destinazione: ragione sociale, indirizzo, CAP, localita', provincia, flag default/cancellato) e COGDEST2 (dati estesi: nazione, zona, fascia trasporto, recapiti, giorni/orari di apertura, coordinate GPS, agente, km, importo minimo ordine, note).
Il programma opera in due direzioni (campo maschera tm-ope):
- "I" (Importazione): legge un file delimitato (o Excel convertito), interpreta le colonne
DST-*e scrive/aggiornaCOGDESTI/COGDEST2. - "E" (Esportazione): scorre le destinazioni filtrate per tipo (C/F) e range codici e produce un file aperto poi come Excel (
GRIDTOXS).
E' un programma GUI standalone (procedure division using stringhe, senza copybook di linkage dedicato). La modalita' di richiamo automatico e' pilotata dal profilo wo-parametro, con valori ECL (export clienti) e ICL (import clienti).
Flusso principale¶
apri(main):z-99-init-program,rd-azi,open-files,x99-load-config(RNEWCONF). Abilita i tasti funzione (F1 config, F3 conferma, F7 trova file, F8 aiuto, F9 ricerca), costruisce la maschera "Importazione destinazioni diverse". Se richiamato conECLcopia in localedestinazioni.xlsviaCOPIAF; conICLpredispone l'import clienti.a4: default intab-maschera(operazione "I", tipo anagrafica "C", prova "S"); adatta il comportamento al parametro esterno.- Accept parametri (
a-tm-*): operazione (I/E), tipo anagrafica (C/F/T=tutte), file (F7 =C$OPENSAVEBOX), range codici da/a (COGS65W), esporta tutto, prova senza aggiornare, azzera GPS, import solo esistenti. a-richiesta-conferma(F3): copia il file scelto inext-tmp-dirconC$COPY; se.xls/.xlsxlo converte in testo conESTRXLSforzando il delimitatore. Apre il file di logcogrisul.a1-carica-campi(import): legge la prima riga (intestazione), parsifica gli ID colonnaDST-*costruendotab-campie verifica le colonne obbligatorie (DST-ANA-TIP/COD, DST-ID-TIP/IDX, DST-IND).b-importa/b-10-loop: legge riga per rigacogseque, salta le righe di intestazione, per ogni rigab1-carica-delimitatofa il parsing CSV (gestione apici, delimitatore,#@#per azzeramento, troncamenti con warning, validazioni per campo su COGTABEL/COGGEANA). Aggiorna i contatori a video; ESC chiede l'interruzione.b1-validazioni-incrociate: controlli di coerenza (agente presente in tabella, anagrafica esistente, coerenza id-tip/idx, indirizzo e localita' significativi, divieto di azzerare insieme indirizzo e localita'). Gli errori bloccanti finiscono nel log e la riga viene scartata.b3-aggiorna(solo se non in test): posizionaCOGDESTI, inserisce (I) o modifica (V); popolaCOGDESTIeCOGDEST2campo per campo (evaluate tc-inf); gestisce il CAP alfanumerico o numerico (secondo configurazione), la codifica di giorni/orari di apertura e l'azzeramento delle coordinate GPS se cambia l'indirizzo. RiscriveCOGDEST2eCOGDESTI, aggiornaCOGGEANA(data aggiornamento) e crea/aggiornaCOGANCAP(marker di esportazione KPN).c-esporta/c-10-loop: aprecogexprt, scrive due righe di testa (tipi campo N/S, poi ID colonna tab-separati), scorreCOGDESTIconst-cogdesti-notmin+rdnxtfiltrando per tipo e range, leggeCOGDEST2, decodifica giorni/orari e scrive una riga per destinazione. Inc-90chiude e apre l'Excel viaGRIDTOXS.a-fine: se ci sono segnalazioni propone di aprire il logimpdst.txt(OPENFILE).
File e tabelle acceduti¶
File sequenziali di lavoro (SELECT interni): cogseque (input import), cogexprt (output export), cogrisul (log impdst.txt); piu' feurtab (cogfiles.cpy).
| Tabella | Record | Modalita' | Uso |
|---|---|---|---|
| COGDESTI | dst-rec (chiave dst-ana-tip+dst-ana-cod+dst-id-tip+dst-id-idx) |
I-O | Dati anagrafici della destinazione |
| COGDEST2 | dst2-rec (stessa chiave) |
I-O | Dati estesi (nazione, zona, recapiti, GPS, agente, note) |
| COGGEANA | ana-rec |
I-O | Verifica esistenza anagrafica cli/for; aggiornamento data |
| COGTABEL | euta-rec |
Input | Domini: provincia/comune (tipo 26), nazione (tipo 54), zona (tipo 88), agente |
| COGANCAP | - | I-O | Marker di esportazione verso KPN |
| ASNFRIMB | - | Input | Aperto solo se azienda a contesto assistenza (az-assist) |
Verbi principali: rd-cogdesti, wr-cogdesti, rwr-cogdesti, st-cogdesti-notmin, rdnxt-cogdesti, rd-cogdest2, wr-cogdest2, rwr-cogdest2, rd-coggeana, rwr-coggeana, rd-cogtabel, rd/wr/rwr-cogancap. L'accesso alle destinazioni e' per chiave primaria.
Copybook principali¶
Strutture / record: feurtab.fd, cogfiles.cpy, opensave.def. I record cogdesti.cpy/cogdest2.cpy e le relative FD sono inclusi tramite gli artefatti Screen Designer.
Utility / servizio: utilestrxls.cpy (ESTRXLS), utilopenfile.cpy (OPENFILE), utilncnf.cpy (RNEWCONF), utilgesstr.cpy (GESSTR), utils05/utils25/utils43/utils44/utils52/utils65, utilu10/utilu20, l-copiaf.cpy/u-copiaf.cpy (COPIAF).
Working standard / costanti: k-personal.cpy, k-tipi-cogtabel.cpy, costanti-clipot.cpy, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, wcont.cpy, wcont1.cpy.
Screen Designer: impdst.select, impdst.fd, impdst.wrk, impdst.decla, impdst.prc, impdst-01.scr.
Routine finali: stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy.
Programmi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| ESTRXLS | Conversione file Excel in testo delimitato per l'import |
| GRIDTOXS | Apertura del file esportato come foglio Excel |
| COPIAF / C$COPY | Copia file server/client |
| C$OPENSAVEBOX | Dialog di scelta file (F7) |
| OPENFILE | Apertura del log risultati su richiesta |
| RNEWCONF | Lettura configurazioni |
| COGU10W | Recupero divisa conto (GetDivisaConto) |
| GESSTR | Conversione testo per export/import (CONV-TESTO-X-ESPORT/CONV-TESTO-IMPORTATO) |
| COGS65W | Ricerca/aiuto sui codici anagrafica (range da/a) |
Note¶
- Non esiste un copybook di linkage
util-impdst: la modalita' arriva dawo-parametro(ECLexport clienti /ICLimport clienti). I parametri operativi risiedono nella strutturatab-maschera(tm-ope,tm-ana-tip,tm-file,tm-test,tm-esp-tutto,tm-imp-solo-esistenti,tm-azzero-gps,tm-ana-da/a-cod, contatoritm-r-l/tm-r-v/tm-a-i/tm-a-a). - Gli ID campo
DST-*mappano i due record: su COGDESTIDST-RAG-SOC,DST-IND,DST-CAP,DST-LOCA,DST-PROV,DST-FL-DEFAULT,DST-FL-CANC; su COGDEST2DST-NAZIONE,DST-ZONA,DST-FASCIA, recapiti (DST-TELEFONO/DST-FAX/DST-EMAIL/DST-SKYPE), giorni/orari (DST-LUN-M/P...DST-DOM-M/P, codificati),DST-LATITUDINE/DST-LONGITUDINE,DST-NOTE,DST-AGENTE,DST-NR-KM,DST-IMP-MIN-ORD. Obbligatorie:DST-ANA-TIP,DST-ANA-COD,DST-ID-TIP,DST-ID-IDX,DST-IND. - Il valore
#@#(k-campo-svuotato) forza l'azzeramento esplicito del campo in import. - La modalita' test (
tm-test= "S") esegue parsing e validazioni senza scrivere sulle tabelle. - In export le destinazioni con
dst-id-tip = "F"vengono escluse. - Configurazioni RNEWCONF lette: delimitatore-colonne-excel (gruppo
cogesys) eazienda/tipo-cap-dest-diverse(se "A" usa il CAP alfanumerico, altrimenti numerico).
Documentazione tecnica -- creata 2026-08-06