Vai al contenuto

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) e carica-agenti (vedi sotto); se chiamato precarica nominativo/periodo e salta a a-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-conferma valida i campi; se i filtri non sono cambiati rispetto alla precedente esecuzione riusa il transito gia' costruito e salta a a-inizio-grid, altrimenti prosegue a a-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 chiama b1-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-start con chiave da tm-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 standard utilpggr/fscrol2 per leggere pagine avanti/indietro dal transito secondo la chiave dell'ordinamento scelto; rd1-ft-go riempie 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 in ctrl-age verifica 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 ... THRU e GO 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 routine rn-start/rp-start/sn-read/sp-read ricostruiscono 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.