CRM070 - Articoli proposti (attivita' per articolo/interesse)¶
Sorgente: cbl/crm070.cbl | Program-ID: CRM070 | Tipo: Programma interattivo (griglia attivita' per articolo proposto)
Menu: CRM > Operativo > Articoli proposti
Scopo¶
Elenca le attivita' CRM in cui e' stato proposto/citato un articolo, incrociando le righe articolo delle attivita' (CRMATTAR) con i filtri di nominativo, periodo, interesse, articolo e parole nelle note. E' l'agenda "rovesciata": mentre CRM051 parte dal nominativo, CRM070 parte dall'articolo (o dall'interesse) per vedere dove e' stato proposto.
Il programma costruisce un file di transito indicizzato locale (COGTRANS con tracciato ad hoc, 4 chiavi) con le righe che soddisfano i filtri, poi lo pagina in griglia con paginazione avanti/indietro (fscrol2/utilpggr) secondo l'ordinamento scelto (per articolo, per nominativo, per data). E' anche richiamabile (crm070-called = "CRM070-CALLED") passando nominativo e periodo.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | Input | Parametri generali azienda (cogfiles.cpy) |
| CRMATTAR | ISAM (k02/k04/k05) | Input | Righe articolo delle attivita' (aar-num, aar-art, aar-int, aar-nom, aar-data, aar-note) - k02 per articolo, k04 per nominativo/data, k05 per data |
| CRMATTIV | ISAM | Input | Attivita' CRM (crt-num, crt-ope, crt-data, crt-fl-canc, crt-fl-ese, crt-doc) |
| CRMATTAN | ISAM (k02) | Input | Nominativi collegati all'attivita' (crn-num, crn-ana, crn-data-ese) - per scansione precedenti in a1-carica-attivita |
| CRMANAGR | ISAM | Input | Anagrafica nominativi CRM (cra-cod, cra-nome, cra-ana-tip, cra-ana, cra-tip, cra-age) |
| CRMINFTR | ISAM | Input | Tabella interessi (itr-tab, itr-cod, itr-des) |
| CRMUSERS | ISAM | Input | Utenti CRM (cru-liv, cru-vis-*) |
| CRMUSRTA / CRMUSRTC | ISAM | Input | Abilitazioni utente-tipo attivita' / tipologia |
| PRNTOPER | ISAM | Input | Operatori (ptop-cod, ptop-des, ptop-age) |
| COGGEANA | ISAM | Input | Anagrafica clienti/fornitori (ana-chia, ana-nome) |
| TRAN-COGS96 | ISAM (k01) | I-O temp | Transito agenti autorizzati prodotto da COGS96 (trs-cogs96-age); nome in trs-cogs96-name, cancellato in chiusura |
| COGTRANS (locale) | ISAM (4 chiavi) | I-O temp | Transito righe articolo per ordinamento/paginazione (trs-chia1 att+art, trs-chia2 art, trs-chia3 nome-des, trs-chia4 data); nome in nf-name-cogtrans (dir temp + operatore) |
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
crm070.select, crm070.fd, crm070.wrk, crm070-01.scr, crm070.prc, crm070.decla |
Screen Designer |
tran-cogs96.fd, tran-cogs96.cpy, tran-cogs96.k01 |
Transito agenti (dichiarato manualmente) |
feurtab.fd, cogfiles.cpy |
FEURTAB |
k-u10.cpy |
Costanti COGU10 |
wgrave.cpy, wgrid.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy |
Working storage standard + griglia + azienda |
utilcrms02.cpy, utilcrm012.cpy, utilcrm017.cpy, utilcrm053.cpy, utilcrm060.cpy, utilcrm065.cpy, utilcrm069.cpy |
Linkage programmi CRM chiamati |
utils52.cpy, utils68.cpy, utilu06.cpy, utilu10.cpy, utilcogs96.cpy, utilgdad.cpy |
Linkage COGS52W, COGS68, COGU06, COGU10W, COGS96, GRIDADMN |
utilncnf.cpy, utilrcnf.cpy |
Linkage RNEWCONF |
stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy, dtab.cpy, fscrol2.cpy, utilpggr.cpy, getdcont.cpy |
Copybook di fine procedure + paginazione griglia |
crmattan.k02, crmattar.k02, crmattar.k04, crmattar.k05, tran-cogs96.k01, cogtrans.k01..k04 |
Chiavi secondarie (aggiunte a fine procedure) |
Logica¶
Struttura goto-driven con griglia paginata.
- apri: init,
open-files,x99-confi; compone il nome del transito COGTRANS (dir temp +#$CRM070.+ operatore); abilita i tasti (F1 nuova attivita'/configura, F3 conferma, F6 ricerca stringa se abilitata, F7 allegato, F8 aiuto/calendario, Sh+F4 griglia, Invio seleziona); gestisce i parametri di chiamata; prepara COGS68 per la ricerca articolo. - a4: reset dati; ordinamento di default = "D" (data); carica operatore (
x-carica-ope) ecarica-agenti(vedi sotto); se chiamato precarica nominativo/periodo e salta aa-elabora, altrimenti imposta periodo di default dall'anno 2000 all'anno corrente. - a-tm-nom ... a-tm-ord: accept dei filtri: nominativo (CRMS02), periodo da/a (COGS52W), interesse (F8 = CRM012 sulla tabella
tm-cfg-tab-int), articolo (COGS68), note (parole libere), ordinamento. - a-conferma:
x-imposta-confermavalida i campi; se i filtri non sono cambiati rispetto alla precedente esecuzione riusa il transito gia' costruito e salta aa-inizio-grid, altrimenti prosegue aa-elabora. - a-elabora: ricrea il transito COGTRANS (open output + open i-o) e chiama
b-crea-transito. - b-crea-transito: determina la modalita' di ricerca (
tm-ricerca): per articolo se e' impostato l'articolo, altrimenti per nominativo se e' impostato il nominativo, altrimenti per data. Se sono presenti note, le spezza in parole (fino a 10,unstring+ lower-case) per il matching. Poi chiamab1-via-crmattar. - b1-via-crmattar: sceglie la chiave di scansione di CRMATTAR (k05 per data, k04 per nominativo+data, k02 per articolo+interesse) e scorre finche' la chiave resta valida; per ogni riga chiama
b9-riempi-record. - b9-riempi-record: applica i filtri residui (articolo, nominativo, interesse, periodo su
aar-data) e, se presenti parole nelle note, verifica che tutte siano contenute (inspect ... tallying) nel testo nota in minuscolo. Se supera i controlli scrive il record nel transito COGTRANS, risolvendo nome nominativo (CRMANAGR, "Cancellato" se assente), interesse, operatore dall'attivita' (CRMATTIV) e prime 100 char di nota. - a-inizio-grid: imposta la paginazione (
x-spaginamento-startcon chiave datm-ord) e costruisce la prima pagina di griglia. Se il transito e' vuoto avvisa e torna alla maschera. - paginazione (
rn-start,rp-start,sn-read,sp-read,rd-fill-t-key, ...): routine standardutilpggr/fscrol2per leggere pagine avanti/indietro dal transito secondo la chiave dell'ordinamento scelto;rd1-ft-goriempie l'elemento di tabella con descrizioni (interesse, operatore). - a-accept-grid: F1 nuova attivita' (CRM060), Invio visualizza/modifica (CRM060), F7 allegato (COGU06 per doc "AT..." oppure CRM069), F6 ricerca stringa (CRM053) se abilitata, Sh+F4 admin griglia.
- carica-agenti / ctrl-age: se l'operatore non e' superuser e ha un agente associato (
ptop-age), crea il transito TRAN-COGS96 tramite COGS96 (albero agenti autorizzati) e inctrl-ageverifica che l'agente del nominativo (cra-age) sia tra quelli consentiti; i fornitori e i superuser non sono filtrati. - fine / z-chiudi:
z-close-files, chiude COGTRANS e TRAN-COGS96, cancella TRAN-COGS96;exit program.
Configurazioni (RNEWCONF)¶
Pacchetto "C" (5 chiavi in x99-confi; le prime due via percorso CLIPOT.CNF):
| Gruppo/Percorso | Chiave | Variabile | Uso |
|---|---|---|---|
| CLIPOT.CNF | ABILITAZIONE-TIPI-ATTIVITA | tm-cfg-abi-tat |
Se "S" filtra i tipi attivita' abilitati (CRMUSRTA) |
| CLIPOT.CNF | RICERCA-STRINGA-ATTIVITA | tm-cfg-ricerca-stringa-att |
Abilita il tasto F6 = ricerca stringa (CRM053) |
| clipot | abilitazione-tipologia | tm-cfg-abi-tipologia |
Se "S" filtra per tipologia cliente (CRMUSRTC) |
| clipot | canc-attivita | tm-cfg-canc-att |
Se <> "D" esclude le attivita' cancellate |
| clipot | tab-crm-int-articoli | tm-cfg-tab-int |
Codice tabella interessi usata per articoli (CRMINFTR e CRM012) |
CALL¶
| Programma | Scopo |
|---|---|
CRMS02 |
Ricerca/accept nominativo CRM |
CRM012 |
Aiuto tabella interessi (tm-cfg-tab-int) |
COGS68 |
Ricerca/selezione articolo |
COGS52W |
Calendario / validazione data |
COGS96 |
Costruzione transito agenti autorizzati (albero agenti) |
CRM060 |
Gestione attivita' (inserimento, visualizza/modifica) |
CRM053 |
Ricerca attivita' per stringa (F6) |
CRM069 |
Visualizzazione allegato attivita' |
COGU06 |
Visualizzazione documento/allegato ("AT...") |
COGU10W |
Formattazione importi/valute |
GRIDADMN |
Gestione griglia |
RNEWCONF |
Lettura configurazioni |
Note¶
- Uso di
PERFORM ... THRUeGO TO(stile legacy). - Il transito COGTRANS ha tracciato locale ridefinito nel programma (non la COGTRANS standard di magazzino) con 4 chiavi che permettono i tre ordinamenti di griglia; e' ricreato ad ogni cambio filtri e cancellato in chiusura.
- La griglia usa paginazione avanti/indietro (
fscrol2/utilpggr) invece del caricamento completo in memoria: il numero di elementi in tabella (t-length/n-m) e' pari alle righe visibili, e le routinern-start/rp-start/sn-read/sp-readricostruiscono le chiavi di restart dal transito. - Il filtro per agente (COGS96 + TRAN-COGS96) implementa la visibilita' gerarchica: un operatore non superuser vede solo i nominativi degli agenti a lui subordinati.
- Nella scrittura del transito le note vengono ripulite dei caratteri CR/LF (
inspect ... replacing x"0D"/x"0A") prima di andare in griglia. - Programma correlato a CRM051 (agenda) e CRM053 (ricerca per stringa): condividono le subroutine CRM060/CRM069 e lo stesso modello di griglia.