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 (telefonot..., faxf...) 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¶
apri: impostaprog-err/w-nome-hlpa'COGG03', controllo abilitazioni (ctr-abil), apertura file (open-files), lettura azienda (rd-azi) e preparazione della maschera (rd-msk-pop).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.a-20: l'utente digita la categoria (tm-categoria) da assegnare a tutti i record.a1-src-lib/a1-10-loop: ricerca del primo codice cliente potenziale libero. Ottiene un codice base da COGS25 (info 20) e scorrecogclipt(cpt-tip = 'C') incrementando finche' non trova un codice non ancora usato.a-900-ins(ciclo di importazione): legge 3 righe alla volta (rec-1,rec-2,rec-3); suat endva afine.conta-string: scandisce all'indietrorec-2per individuare le posizioni dei separatori (virgola, trattino, parentesi tonda aperta/chiusa) e determinare i confini di CAP, localita', provincia e indirizzo.- Compone
cpt-rec:cpt-tip/cpt-tip2= "C",cpt-des=rec-1,cpt-cap= primi 5 caratteri direc-2,cpt-loc,cpt-pro,cpt-indestratti per posizione;cpt-fl-agg= "W".write cpt-reccon gestione duplicato (messaggio "Cliente duplicato!!" e ricerca del prossimo numero libero). - Incrementa
wcpt-cod. a52-ins-inf: elaborarec-3(conta-string-3individua le posizioni di telefonot, faxf, virgola) e scrive/riscrive fino a 4 record informazione incogpotcl(ptc-rec) per lo stesso cliente:ptc-inf-num = 1→ telefono;= 2→ fax (solo se presente);= 4→ categoria (tm-categoria);= 5→ provincia (w-pro). Ogni scrittura usawrite ... invalid keyconrewritedi ripiego.- Torna a
a-900-insper il record successivo. fine/z-chiudi: sewcpt-codvalorizzato, 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-2erec-3e' posizionale, basato sulla scansione all'indietro dei separatori (parentesi, virgola, trattino) e sulle lettere inizialit/fper telefono/fax: dipende dal formato esatto del file di origine (Pagine Gialle). Formati diversi possono produrre estrazioni errate. - La gestione duplicati sul
write cpt-recfa 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-errviene impostato a'COGG03'(non'COGG50') ai fini di help/abilitazioni.
Documentazione tecnica -- creata 2026-08-07