Vai al contenuto

IMPANA - Import/export di massa anagrafiche cli/for

Intestazione

Campo Valore
Programma IMPANA
Titolo Importazione/Esportazione anagrafiche clienti/fornitori
Modulo Sistema
Posizione menu Sistema > Utility > Imp/exp di massa > Clienti/fornitori > Anagrafiche cli/for

Scopo e logica generale

IMPANA e' il programma piu' esteso del ramo Clienti/Fornitori del framework IMP* (oltre 9.000 righe). Gestisce l'import ed export massivo delle anagrafiche clienti/fornitori da/verso file delimitati (CSV/TXT) o Excel. Per la complessita' del dato anagrafico, oltre alla testata COGGEANA scrive numerose tabelle satellite (dati aggiuntivi, sconti, destinazioni, condizioni, riferimenti, ecc.).

Il programma opera in due direzioni (campo maschera tm-ope):

  • "I" (Importazione): legge un file delimitato, interpreta le colonne in base agli ID campo di intestazione (ANA-*) e scrive/aggiorna l'anagrafica e i suoi record satellite.
  • "E" (Esportazione): scorre le anagrafiche filtrate per tipo (C/F) e range codici, produce un file CSV/TSV e lo apre come Excel (GRIDTOXS).

Il programma e' GUI standalone (procedure division using stringhe): non ha un copybook di linkage dedicato. La modalita' di richiamo automatico e' pilotata dal profilo wo-parametro, che puo' valere EA (estrazione automatica batch), ECL/EFL (export clienti/fornitori) o ICL/IFL (import clienti/fornitori).


Flusso principale

  1. apri (main): z-99-init-program, rd-azi, open-files, x99-load-config (RNEWCONF). Prepara il pulsante custom F7 "Trova file", verifica le restrizioni CRM dell'operatore (CRMS12), recupera la divisa conto (COGU10W). Se wo-parametro(1:2) = "EA" forza export completo e salta direttamente a x-esecuzione.
  2. a4: inizializza la maschera con i default (operazione "I", tipo anagrafica "C", test "S"); in base a w-sav-wo-parametro (ECL/EFL/ICL/IFL) forza la direzione e, in export, copia il modello .xls in locale via COPIAF.
  3. Accept maschera (a-tm-*): operazione (I/E), tipo anagrafica (C/F), file (F7 = C$OPENSAVEBOX), flag test, range codici da/a, "solo esistenti", ordinamento, azzera GPS. Conferma con F3.
  4. x-esecuzione: prepara i nomi file temporanei; in import copia il file scelto in ext-tmp-dir (C$COPY) e, se .xls/.xlsx, lo converte in testo con ESTRXLS forzando il delimitatore. Apre il file di log cogrisul.
  5. Caricamento campi: a2-carica-campi per export completo, altrimenti a1-carica-campi (import) che legge la prima riga come intestazione, associa gli ID colonna ANA-* agli indici campo e valida le colonne obbligatorie (ANA-TIPO/ANA-COD oppure ANA-RACCORDO/ANA-NOME). Poi instrada su b-importa (I) o c-esporta (E).
  6. b-importa / b-10-loop: legge riga per riga cogseque; per ogni riga b1-carica-delimitato fa il parsing dei campi delimitati (gestendo apici e delimitatore) popolando tab-dati per ID. Controlli incrociati su P.IVA/codice fiscale (COGE05, con warning). Se non in test chiama b3-aggiorna; gestisce l'interruzione con ESC.
  7. b3-aggiorna: decide inserimento/modifica su COGGEANA. La logica puo' essere pilotata dal codice anagrafica (ANA-COD) oppure, se configurato, dal raccordo (ANA-RACCORDO, verificato su COGANAP2). In inserimento cerca un codice libero (a8-cerca-libero). Legge/crea i record satellite (COGAPPOG, COGANAPP, COGANAP2, COGANCAP, COGDESTI, COGSCONT) e riempie i campi mappati; scrive COGCNDCF/COGRIFER/COGTABEL/COGDESCR; sincronizza aziende del gruppo e area manager (CRMS06/CRMS03).
  8. c-esporta / c-10-loop: apre cogexprt, scrive due righe di testa (tipo campo N/S e ID colonna), poi scandisce COGGEANA (per codice o per nome chia1) entro il range e il tipo, filtra per restrizioni CRM (CRMS12), rende correnti i record satellite e scrive una riga per anagrafica.
  9. c-90: chiude cogexprt e, se non in batch, apre il file esportato come Excel via GRIDTOXS.
  10. a-fine / fine / z-chiudi: chiude cogrisul; se ci sono segnalazioni propone di aprire il log (OPENFILE), chiude i file ed esegue exit program.

File e tabelle acceduti

File sequenziali di lavoro (SELECT interni al sorgente): cogseque (input import), cogexprt (output export), cogrisul (log risultati impana.txt); piu' feurtab (cogfiles.cpy).

Tabelle scritte/aggiornate (import):

Tabella Uso
COGGEANA Testata anagrafica cli/for (record principale)
COGAPPOG, COGANAPP, COGANAP2, COGANCAP Record satellite dell'anagrafica (dati aggiuntivi, raccordo, SEPA, ecc.)
COGDESTI Destinazioni diverse (per clienti)
COGSCONT Sconti cliente
COGCNDCF Condizioni cli/for (pagamenti, listini)
COGRIFER Riferimenti/contatti
COGDESCR Descrizioni estese
COGTABEL Tabelle di sistema (codici pagamento, zone, stati esteri)

Tabelle di validazione/lookup (lettura): COGAGZON (zone/aree manager), COGFATTU (dati fatturazione), COGBNCA, COGMAGAZ, COGMAGAG, COGMERCI, COGTESLS, COGPNCON, COGTBCOM, COGGENER.

Chiavi secondarie aggiunte a fine procedure: cogagzon.k02, crmanagr.k03, coggeana.k02, coganap2.k02, cogfattu.k04, cogrifer.k02.


Copybook principali

Strutture / record: feurtab.fd, cogfiles.cpy, opensave.def.

Utility / servizio: utilestrxls.cpy (ESTRXLS), utilopenfile.cpy (OPENFILE), utilncnf.cpy (RNEWCONF), utilgesstr.cpy (GESSTR), utilgdad.cpy, utilcrms12/utilcrms06/utilcrms03 (CRMS12/06/03), utilcogsad.cpy (COGSAD), 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: impana.select, impana.fd, impana.wrk, impana.decla, impana.prc, impana-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 (modello export, file import)
C$OPENSAVEBOX Dialog di scelta file (F7)
OPENFILE Apertura del log risultati su richiesta
RNEWCONF Lettura configurazioni
COGU10W Recupero divisa conto (GetDivisaConto)
CRMS12 Restrizioni CRM operatore sui nominativi (PREPARA / CONTROLLA-NOM)
CRMS03 / CRMS06 Gestione dati CRM (info, posizioni, area manager)
COGE05 Validazione codice fiscale / partita IVA
AZVALIDA Validazione campo/azienda
GESSTR Manipolazione stringhe/testo
COGS65W Ricerca avanzata (F9) su codici anagrafica
COGSAD Servizio dinamico di supporto anagrafica

Note

  • Non esiste un copybook di linkage util-impana: i parametri di pilotaggio arrivano da wo-parametro/w-sav-wo-parametro (profilo di chiamata) e sono interpretati in apri/a4. Modalita': EA (batch), ECL/EFL (export cli/for), ICL/IFL (import cli/for).
  • Gli ID campo sono definiti come costanti 78 k-ana-*/k-aap-*/k-anc-* (circa 130 costanti, in crescita): ad esempio ANA-TIPO, ANA-COD, ANA-NOME, ANA-PIVA, ANA-COFI, ANA-IBAN-ABI/CAB/CC, ANA-RACCORDO, campi SEPA e campi recenti (rivalsa bollo, addebito aggiuntivo). Alcuni sono prefissi dinamici per dati CRM (ANA-I-, ANA-P-). Limite k-max-campi = 350.
  • 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.
  • La logica "raccordo obbligatorio" (configurabile) fa pilotare l'inserimento/aggiornamento dal campo ANA-RACCORDO anziche' dal codice anagrafica.
  • Configurazioni RNEWCONF lette (in blocco unico): tra le altre cogesys/delimitatore-colonne-excel, clienti/conto-anagrafico, fornit/conto-anagrafico, clienti/raccordo-obbligatorio, contabil/collegamento-tesoreria, bint/bie002-inf-area-manager, CLIENTI/lancio-sincronizzatore, ABILITA/GRUPPO-AZIENDE, CLIPOT/TIPO-NOMINATIVO-ANAGR-CLIENTE e ...-FORNITORE, odonto/gestione-multi-sede, oltre alle abilitazioni colonne EU (PROGCOG08C).

Documentazione tecnica -- creata 2026-08-06