Vai al contenuto

COGG50 - Importazione clienti potenziali (CRM)

Intestazione

Campo Valore
Programma COGG50
Sorgente cbl/cogg50.cbl
Tipo Interattivo (con caricamento batch da file)
Modulo Sistema
Posizione menu Sistema > Utility > Importazioni > Clienti Potenziali

Scopo

COGG50 carica in anagrafica clienti potenziali (CRM) i dati contenuti in un file sequenziale esterno. L'intestazione del sorgente indica l'origine tipica: "caricamento clienti potenziali da file sequenziale scaricato da pagine gialle - Internet".

Il file di input e' organizzato a gruppi di 3 righe per ogni potenziale cliente:

  • riga 1 (rec-1): descrizione/ragione sociale;
  • riga 2 (rec-2): CAP + localita' + provincia (tra parentesi) + indirizzo;
  • riga 3 (rec-3): recapiti (telefono t..., fax f...) ed e-mail.

L'utente indica il nome del file da importare e una categoria merceologica/di classificazione da associare a tutti i record caricati. Ogni potenziale cliente viene numerato progressivamente a partire dal primo codice libero e memorizzato con le informazioni aggiuntive (telefono, fax, categoria, provincia).


Tabelle / file coinvolti

File Copybook / FD Campo chiave Uso
cogclipt cogclipt.cpy (record cpt-rec) cpt-tip = "C", cpt-cod Anagrafica clienti potenziali: descrizione (cpt-des), CAP (cpt-cap), localita' (cpt-loc), provincia (cpt-pro), indirizzo (cpt-ind). Scritto con write cpt-rec, cpt-fl-agg = "W"
cogpotcl cogpotcl.cpy (record ptc-rec) ptc-tip = "C", ptc-cli, ptc-inf-num Informazioni aggiuntive del potenziale cliente in ptc-dati (num. 1 = telefono, 2 = fax, 4 = categoria, 5 = provincia); ptc-fl-agg = "W"/"R"
cogtabel cogtabel.cpy Tabelle di sistema (letta in appoggio)
coggeana coggeana.cpy Anagrafica generale (letta in appoggio)
cogcndcf, cogdespt, coginfpt, cogdesgn rispettivi .cpy File collegati al modulo clienti potenziali (aperti dal framework maschera via search-file)
tm-file 01 riga pic x(80) File sequenziale di input (line sequential), nome scelto dall'utente in tm-file-nf

Il numeratore progressivo dei codici cliente potenziale (wcpt-cod) e' gestito tramite COGS25 sulla informazione libera codice 20 (s25-i-cod = 20, magazzino spaces): lettura in ingresso, aggiornamento (s25-i-agg = 's') in chiusura.


Logica di elaborazione

  1. apri: imposta prog-err/w-nome-hlp a 'COGG03', controllo abilitazioni (ctr-abil), apertura file (open-files), lettura azienda (rd-azi) e preparazione della maschera (rd-msk-pop).
  2. a4/a-10: visualizza la maschera "Caricamento Clienti"; l'utente digita il nome file (tm-file-nf, con F8 = ricerca file libero tramite COGG04). Il file viene aperto in input; se lo stato non e' "00" si ritorna alla richiesta.
  3. a-20: l'utente digita la categoria (tm-categoria) da assegnare a tutti i record.
  4. a1-src-lib/a1-10-loop: ricerca del primo codice cliente potenziale libero. Ottiene un codice base da COGS25 (info 20) e scorre cogclipt (cpt-tip = 'C') incrementando finche' non trova un codice non ancora usato.
  5. a-900-ins (ciclo di importazione): legge 3 righe alla volta (rec-1, rec-2, rec-3); su at end va a fine.
  6. conta-string: scandisce all'indietro rec-2 per individuare le posizioni dei separatori (virgola, trattino, parentesi tonda aperta/chiusa) e determinare i confini di CAP, localita', provincia e indirizzo.
  7. Compone cpt-rec: cpt-tip/cpt-tip2 = "C", cpt-des = rec-1, cpt-cap = primi 5 caratteri di rec-2, cpt-loc, cpt-pro, cpt-ind estratti per posizione; cpt-fl-agg = "W". write cpt-rec con gestione duplicato (messaggio "Cliente duplicato!!" e ricerca del prossimo numero libero).
  8. Incrementa wcpt-cod.
  9. a52-ins-inf: elabora rec-3 (conta-string-3 individua le posizioni di telefono t, fax f, virgola) e scrive/riscrive fino a 4 record informazione in cogpotcl (ptc-rec) per lo stesso cliente:
  10. ptc-inf-num = 1 → telefono; = 2 → fax (solo se presente); = 4 → categoria (tm-categoria); = 5 → provincia (w-pro). Ogni scrittura usa write ... invalid key con rewrite di ripiego.
  11. Torna a a-900-ins per il record successivo.
  12. fine/z-chiudi: se wcpt-cod valorizzato, aggiorna il numeratore libero via COGS25 (s25-i-agg = 's'), poi chiude tutti i file e la finestra ed esce.

Paragrafi di servizio: rd-cpt-lk/rd-ptc-lk/rd-tab/rd-ana (letture con gestione stato via cstato), disp-tab/disp-riga (visualizzazione griglia informazioni), search-file (apertura del file selezionato dalla griglia, dispatch go to ... depending on w-ind-fl).


Chiamate / COPY rilevanti

Elemento Tipo Scopo
COGS25 CALL (util-s25) Gestione numeratore/informazione libera codice 20: lettura codice base e aggiornamento finale
COGG04 CALL (util-g04) Gestione campo maschera (input nome file, F8 = ricerca file libero)
ctr-abil PERFORM Controllo abilitazioni utente

Copybook principali:

  • wstato.cpy, wgrave.cpy, wopenf.cpy, wnscr.cpy, cogazien.cpy — working-storage standard.
  • utils21/25/65.cpy, utilg04/06/07/14.cpy, utilgw01/02.cpy, utilw06.cpy — aree di scambio con le subroutine di utility/maschera.
  • wcont.cpy (stringhe), utilg03.cpy, wcont1.cpy — linkage.
  • Chiavi secondarie: cogcndcf.k01.
  • Routine di fine procedure: stato1/stato/winmsg/grave/open1/mmmask/dtab/tstfun1/scree, sendw06/sendgw01/sendgw02.

Note

  • Il parsing di rec-2 e rec-3 e' posizionale, basato sulla scansione all'indietro dei separatori (parentesi, virgola, trattino) e sulle lettere iniziali t/f per telefono/fax: dipende dal formato esatto del file di origine (Pagine Gialle). Formati diversi possono produrre estrazioni errate.
  • La gestione duplicati sul write cpt-rec fa avanzare il numeratore alla ricerca del prossimo codice libero, evitando lo scarto del record.
  • Fa parte delle Importazioni del sistema; vedi flusso Sistema - Import/Export.
  • Nota: prog-err viene impostato a 'COGG03' (non 'COGG50') ai fini di help/abilitazioni.

Documentazione tecnica -- creata 2026-08-07