Vai al contenuto

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/aggiorna COGDESTI/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

  1. 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 con ECL copia in locale destinazioni.xls via COPIAF; con ICL predispone l'import clienti.
  2. a4: default in tab-maschera (operazione "I", tipo anagrafica "C", prova "S"); adatta il comportamento al parametro esterno.
  3. 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.
  4. a-richiesta-conferma (F3): copia il file scelto in ext-tmp-dir con C$COPY; se .xls/.xlsx lo converte in testo con ESTRXLS forzando il delimitatore. Apre il file di log cogrisul.
  5. a1-carica-campi (import): legge la prima riga (intestazione), parsifica gli ID colonna DST-* costruendo tab-campi e verifica le colonne obbligatorie (DST-ANA-TIP/COD, DST-ID-TIP/IDX, DST-IND).
  6. b-importa / b-10-loop: legge riga per riga cogseque, salta le righe di intestazione, per ogni riga b1-carica-delimitato fa 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.
  7. 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.
  8. b3-aggiorna (solo se non in test): posiziona COGDESTI, inserisce (I) o modifica (V); popola COGDESTI e COGDEST2 campo 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. Riscrive COGDEST2 e COGDESTI, aggiorna COGGEANA (data aggiornamento) e crea/aggiorna COGANCAP (marker di esportazione KPN).
  9. c-esporta / c-10-loop: apre cogexprt, scrive due righe di testa (tipi campo N/S, poi ID colonna tab-separati), scorre COGDESTI con st-cogdesti-notmin+rdnxt filtrando per tipo e range, legge COGDEST2, decodifica giorni/orari e scrive una riga per destinazione. In c-90 chiude e apre l'Excel via GRIDTOXS.
  10. a-fine: se ci sono segnalazioni propone di aprire il log impdst.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 da wo-parametro (ECL export clienti / ICL import clienti). I parametri operativi risiedono nella struttura tab-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, contatori tm-r-l/tm-r-v/tm-a-i/tm-a-a).
  • Gli ID campo DST-* mappano i due record: su COGDESTI DST-RAG-SOC, DST-IND, DST-CAP, DST-LOCA, DST-PROV, DST-FL-DEFAULT, DST-FL-CANC; su COGDEST2 DST-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) e azienda/tipo-cap-dest-diverse (se "A" usa il CAP alfanumerico, altrimenti numerico).

Documentazione tecnica -- creata 2026-08-06