CRM111 - Gestione assenze operatori (calendario annuale)¶
Sorgente: cbl/crm111.cbl | Program-ID: CRM111 | Tipo: Programma interattivo GUI (griglia calendario a colori)
Menu: CRM > Archivi > Agenda > Gestione assenze
Scopo¶
Gestisce le assenze degli operatori (ferie/permessi/malattia) che si riflettono sull'agenda CRM rendendo non disponibili le fasce corrispondenti. La maschera presenta un calendario mensile a griglia (6 settimane x 7 giorni) per l'operatore selezionato: ogni cella mostra il numero del giorno con un colore che ne indica lo stato (feriale libero, disponibile, occupato da appuntamenti, festivo, ferie/assenza).
L'operatore agisce direttamente sulle celle: Invio (o doppio click) marca/smarca il giorno come assenza. La navigazione fra mesi avviene con Shift+F8 (mese precedente) e Shift+F9 (mese successivo). All'uscita, se sono state modificate assenze, il programma richiama la ricostruzione del calendario CRM120 sull'intervallo di date toccate.
Le assenze sono memorizzate su CRMAGFES (record per operatore/data); la disponibilita' e l'occupazione dei giorni sono lette da CRMAGCAL.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | Input | Parametri file aziendali (cogfiles.cpy) |
| CRMAGFES | ISAM | I-O | Festivita'/assenze agenda (record fes-rec; chiave fes-tip+fes-rif+fes-data; fes-ope ridefinisce fes-rif). Le assenze operatore hanno fes-tip = "O". Verbi: rd-crmagfes, wr-crmagfes, del-crmagfes |
| CRMAGCAL | ISAM | Input | Calendario disponibilita' per operatore (record cca-rec; chiave cca-ope+cca-data+cca-ora-ini; flag cca-fl-occ, cca-fl-disp). Verbi: st-crmagcal-notmin, rdnxt-crmagcal |
| PRNTOPER | ISAM | Input | Operatori di sistema (record ptop-rec: ptop-cod, ptop-des); validazione/descrizione operatore (rd-prntoper) |
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
crm111.select, crm111.fd, crm111.wrk, crm111-01.scr, crm111.prc, crm111.decla |
Screen Designer |
feurtab.fd, cogfiles.cpy |
FEURTAB |
wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, wgrid.cpy, cogazien.cpy |
Working storage standard + dati azienda + griglia |
utilgdad.cpy |
Linkage GRIDADMN |
utilncnf.cpy |
Linkage RNEWCONF (colori celle) |
utilwp04.cpy, sendwp04.cpy |
Linkage e routine per il selettore operatori WP04 (wp04-out) |
utilcrm120.cpy |
Linkage CRM120 (ricostruzione calendario) |
wcont.cpy, wcont1.cpy |
Linkage standard (stringhe) |
grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, utilgrid.cpy |
Copybook di fine procedure + griglia |
Logica¶
Struttura goto-driven. Testata (operatore) seguita dalla griglia-calendario. Flusso principale:
- apri: init,
rd-azi,open-files; abilita Shift+F4 (griglia), F1 (configura), F3 (conferma), F8 (aiuto), Invio (seleziona).x99-confilegge i colori delle celle da RNEWCONF (6 chiavi del gruppocrm-agenda). Prepara la griglia con titoli colonna Lun..Dom forzati (gdad-cst-tit). - a4: azzera la griglia e
tab-maschera; imposta la data corrente (tm-data = datasis); abilita F3. - a-tm-ope: accept operatore; F8 apre il selettore WP04; F1 riapre la configurazione colori;
x-controlla-tm-opevalida su PRNTOPER e riporta la descrizione intm-ope-des. - a-fine-testata:
x-controlla-testata, poia-grid-ini. - a-grid-ini / carica-griglia: costruisce il mese. Calcola le stringhe mese prec/succ; allinea al lunedi' della prima settimana (
FESTAper il giorno della settimana,DTPRG/PRGDTper l'aritmetica sulle date); popola una matrice 6x7 (tm-ele) con data, flag festa, e per ogni giorno esegueciclo-agcal.calcola-settnumera le settimane;posiziona-curposiziona il cursore sul giorno corrente. - ciclo-agcal: per ogni giorno verifica se e' assenza (lettura CRMAGFES
fes-tip = "O",fes-ope,fes-data) impostandotm-ele-fl-ferie; poi scandisce CRMAGCAL per (operatore, data) impostando i flag disponibilita'/occupazione (tm-ele-fl-dis,tm-ele-fl-occ,tm-ele-fl-tot). - z-costruisci-grid / colori-celle: riempie la griglia (
x-riempi-grid-recordmette numero giorno e settimana) e applica i colori cella in base ai flag: ferie, tutto-occupato, occupato, non disponibile, disponibile (colori da configurazione). - a-accept-grid: gestione eventi. Invio su cella valida: toggle assenza -> se il giorno e' gia' in CRMAGFES lo cancella (
del-crmagfes,tm-ele-fl-ferie = "N"), altrimenti lo scrive (wr-crmagfes,"S"); aggiornaw-data-min/w-data-max(intervallo toccato) e ricolora. Shift+F8/Shift+F9 spostano al mese precedente/successivo (a-grid-ini). Shift+F4 apre GRIDADMN. Esc: se sono state modificate assenze (w-data-min <> 0) chiede conferma e richiama CRM120 sull'intervallow-data-min..w-data-max; poi torna alla testata (o esce se in modalita' enabled-tm-ope = 0). - fine / z-chiudi:
canceldi DTPRG/PRGDT/FESTA,z-close-files, chiude la window, esce.
Configurazioni (RNEWCONF)¶
Pacchetto "C", 6 chiavi del gruppo crm-agenda, lette in x99-confi per colorare le celle del calendario:
| Chiave | Uso |
|---|---|
colore n |
Colore giorno feriale libero / non disponibile (tm-cfg-color-n) |
colore d |
Colore giorno disponibile (tm-cfg-color-d) |
colore o |
Colore giorno occupato (tm-cfg-color-o) |
colore intervallo ore |
Colore intestazione settimana / colonna intervalli (tm-cfg-color-int) |
colore tutto occ |
Colore giorno completamente occupato (tm-cfg-color-tot; se zero, ripiega su colore o) |
colore ferie/malattia |
Colore giorno in ferie/assenza (tm-cfg-color-ferie) |
CALL¶
| Programma | Scopo |
|---|---|
GRIDADMN |
Amministrazione/riempimento griglia (via utilgdad.cpy) |
WP04 (via send-wp04/sendwp04.cpy) |
Selettore operatori (F8), ritorna wp04-out |
CRM120 |
Ricostruzione calendario disponibilita' sull'intervallo di date modificato (all'uscita, se ci sono state modifiche) |
RNEWCONF |
Lettura configurazione colori celle (gruppo crm-agenda) |
FESTA |
Restituisce giorno della settimana e flag festivo di una data |
DTPRG / PRGDT |
Conversione data <-> progressivo per l'aritmetica sulle date |
Note¶
- Sincronizzazione col calendario: le modifiche alle assenze (CRMAGFES) hanno effetto sull'agenda solo dopo la ricostruzione del calendario. Il programma richiama automaticamente CRM120 all'uscita (con conferma) sull'intervallo di date effettivamente toccato (
w-data-min..w-data-max), evitando di rielaborare l'intero anno. - Toggle diretto sulla cella: non c'e' area di dettaglio; l'unica operazione e' marcare/smarcare l'assenza con Invio direttamente sulla cella del calendario.
- La colorazione delle celle e' interamente parametrizzata da RNEWCONF (gruppo
crm-agenda): con configurazione a zero i colori risultano di default. - Le subroutine di data
FESTA,DTPRG,PRGDTsono usate intensamente per costruire il calendario allineato al lunedi' e numerare le settimane; vengono esplicitamentecancel-late all'uscita. - Codice in stile legacy:
PERFORM ... THRU(es.carica-griglia thru ex-carica-griglia,ciclo-agcal thru ex-ciclo-agcal,colori-celle thru ex-colori-celle) eGO TOper il dispatch degli eventi.