COGMAD - Modifica giri giornalieri¶
Panoramica¶
Programma interattivo GUI per la modifica puntuale dei "giri" giornalieri gia' esplosi (tabella COGGRDAY). L'operatore seleziona un operatore/agente e una data e ottiene, in una griglia editabile, l'elenco dei destinatari (clienti + eventuale destinazione) previsti per quel giro in quel giorno; puo' aggiungere, modificare o eliminare righe. Serve a correggere manualmente l'agenda generata da COGMAC (es. inserire una consegna spot, togliere un cliente per il giorno).
Il programma ha due modalita' d'uso: standalone da menu (Aggiornamento) e richiamato da un altro programma tramite util-cogmad (con operatore e data gia' impostati, salta la fase di accept e va diretto alla griglia). Supporta inoltre una variante "gestione pasticcerie / App Ordini Bar" attivata da configurazione, in cui il campo "Operatore" diventa il "Codice Agente".
Posizione nel menu¶
| Menu | Percorso |
|---|---|
| Magazzino | Uscite > Giri > Modifica giri |
Struttura del programma¶
File e tabelle utilizzati¶
| File/Tabella | Tipo | Descrizione |
|---|---|---|
| FEURTAB | Input | Tabella di sistema |
| COGGRDAY | I-O | Giri esplosi per giorno: righe di dettaglio (destinatari) del giro del giorno, gestite in questa griglia |
| COGGEANA | Input | Anagrafica clienti (descrizione del cliente della riga; in variante pasticcerie, nome del fornitore/agente) |
| COGDESTI | Input | Destinazioni per anagrafica (validazione della destinazione associata al cliente) |
| PRNTOPER | Input | Anagrafica operatori (descrizione operatore selezionato) |
| COGTABEL | Input | Tabella generica: nella variante pasticcerie verifica che il codice sia un agente (tipo k-euta-tipo-agente) |
Verbi usati: st-coggrday-notmin, rdnxt-coggrday, rd-coggrday, wr-coggrday, rwr-coggrday, rd-coggeana, rd-cogdesti, rd-prntoper, rd-cogtabel. La FD e' generata da Screens (cogmad.select / cogmad.fd).
Copybook principali¶
| Copybook | Descrizione |
|---|---|
| coggrday.cpy | Layout record giri per giorno (grd-operatore, grd-data, grd-prog, grd-ana, grd-dst, grd-fl-canc) |
| k-tipi-cogtabel.cpy | Costanti tipo tabella COGTABEL (es. k-euta-tipo-agente) |
| cogfiles.cpy | FD di FEURTAB |
| cogmad-01.scr | Screen section |
| cogmad.decla / cogmad.prc | Declaratives e procedure di I/O generate |
| wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy | Working storage standard |
| cogazien.cpy | Dati azienda |
| wgrid.cpy / utilgdad.cpy | Griglia editabile e personalizzazione colonne (GRIDADMN) |
| utilt20.cpy | Interfaccia help operatore (COGT20) |
| utile35.cpy | Interfaccia help agente (COGE35, variante pasticcerie) |
| utilw92.cpy | Interfaccia ricerca destinazione cliente (send-w92) |
| utils65.cpy | Interfaccia ricerca anagrafica cliente (COGS65) |
| utils52.cpy | Interfaccia data/calendario |
| utilu20.cpy | Interfaccia utility U20 |
| utilncnf.cpy | Configurazioni RNEWCONF |
| wcont.cpy / wcont1.cpy | Aree di linkage comuni |
| utilcogmad.cpy | Parametri di ingresso del programma (util-cogmad) |
| grave.cpy / mmmask.cpy / opengen.cpy / stato.cpy / stato1.cpy / winmsg.cpy / sendw92.cpy | Copybook finali di procedura |
Chiamate a sottoprogrammi (CALL)¶
| Programma | Scopo |
|---|---|
| RNEWCONF | Lettura configurazioni MAGAZZINO / SCHEMA-GIRI e abilita / gestione-pasticcerie |
| GRIDADMN | Preparazione e personalizzazione (Shift-F4) della griglia |
| COGT20 | Help/ricerca operatore (modalita' standard, campo Operatore, F8) |
| COGE35 | Help/ricerca agente (variante pasticcerie, campo Agente, F8) |
COGS65 (via z-s65-tm-r-cli-ep) |
Ricerca/help cliente sulla colonna cliente della griglia |
W92 (via send-w92) |
Ricerca destinazione del cliente sulla colonna destinazione (F8), tipo cliente |
Parametri di chiamata (util-cogmad)¶
| Campo | Uso | Descrizione |
|---|---|---|
| cogmad-caller | Input | Programma chiamante |
| cogmad-called | Input | Deve valere COGMAD per l'ingresso diretto |
| cogmad-in-operatore | Input | Operatore/agente del giro (salta l'accept operatore) |
| cogmad-in-data | Input | Data del giro (salta l'accept data) |
Logica di elaborazione¶
1. Inizializzazione (apri / x99-confi)¶
Controllo abilitazione, init programma, apertura file, lettura azienda. x99-confi legge due chiavi RNEWCONF: MAGAZZINO / SCHEMA-GIRI (tm-cfg-schema-giri) e abilita / gestione-pasticcerie (tm-cfg-gest-pasticcerie). Rileva l'eventuale chiamata da altro programma (w-dc-called-bis) e prepara i tasti funzione. Prepara la griglia e i controlli.
2. Selezione operatore e data (a-tm-operatore / a-tm-data)¶
Accept del codice operatore (o agente, se tm-cfg-gest-pasticcerie = "S") e della data. L'help e' fornito da COGT20 (operatore) o COGE35 (agente) sul tasto F8. Nella variante pasticcerie l'etichetta diventa "Agente" e la descrizione e' letta da COGGEANA come nome fornitore; altrimenti da PRNTOPER. Se il programma e' chiamato con operatore/data gia' impostati (w-dc-called-bis = "S"), questa fase e' saltata e si va diretti a a-richiesta-conferma. La data puo' essere lasciata vuota: in tal caso viene forzata a 10000101 (giro "senza data specifica", tipico dell'App Ordini Bar).
3. Controlli e conferma (a-richiesta-conferma / x-imposta-conferma)¶
Rivalida operatore e data (x-controlla-tm-operatore, x-controlla-tm-data): nella variante pasticcerie l'agente deve esistere sia in COGTABEL come agente sia in COGGEANA come fornitore. Se ok, disattiva la conferma e passa al caricamento griglia.
4. Caricamento griglia (a10-loop)¶
Scandisce COGGRDAY (st-coggrday-notmin + rdnxt-coggrday) filtrando su operatore e data uguali a quelli selezionati; scarta le righe con grd-prog = 0 (testata del giro) e quelle con cancellazione logica grd-fl-canc = "C". Per ogni destinatario valorizza progressivo (grd-prog, salvato anche in tm-r-prog-prec), codice cliente (grd-ana-cod) con descrizione da COGGEANA, e id destinazione (grd-dst-idx). Carica fino a k-max-ele-tab = 500 righe.
5. Interazione sulla griglia (a-grid / a-accept-grid)¶
Loop di accept sulla griglia editabile:
- ESC: uscita (torna a a4 se standalone, altrimenti esce);
- Shift-F4: personalizzazione colonne via GRIDADMN;
- F3: salva (a1-aggiorna) e, se standalone, ritorna alla selezione; in modalita' Selezione commuta tra Selezione/Aggiornamento;
- Ctrl-A: aggiunge una riga assegnandole il progressivo massimo + 1 (z-aggiungi-riga-tm-tab-ep);
- Ctrl-E: elimina la riga corrente (previo controllo abilitazione w-abi-del e conferma);
- F8 sulla colonna destinazione: apre la ricerca destinazione del cliente (send-w92), valorizzando tipo e id destinazione.
6. Salvataggio (a1-aggiorna / b-aggiorna)¶
Come in COGMAA, confronta tm-r-prog con tm-r-prog-prec per decidere l'operazione riga per riga:
- progressivo attuale 0 e precedente valorizzato -> cancella (b3-cancella);
- attuale = precedente e riga modificata -> modifica (b2-modifica);
- precedente 0 -> inserisci (b1-inserisci);
- attuale diverso da precedente -> cancella e reinserisci.
Inserimento/modifica scrivono/riscrivono il record COGGRDAY valorizzando operatore, data, progressivo, sequenza (= progressivo), tipo anagrafica "C" (cliente), tipo destinazione "D", codice cliente e id destinazione, e azzerano grd-fl-canc. La cancellazione (b3-cancella) usa la cancellazione logica (grd-fl-canc = "C" + rwr-coggrday), non la fisica.
7. Controlli di campo¶
x-controlla-tm-r-cli-cod: il cliente deve esistere in COGGEANA (tipoC); in caso di errore azzera la destinazione;x-controlla-tm-r-dst-idx: se valorizzata, la destinazione deve esistere in COGDESTI per quel cliente (tipo default"D").
8. Chiusura (fine / z-chiudi)¶
Chiude file e finestra ed esce.
Note tecniche¶
- Variante gestione pasticcerie / App Ordini Bar (
abilita / gestione-pasticcerie="S", modifica 11/08/2023): il campo Operatore diventa "Agente"; l'help passa da COGT20 a COGE35; l'agente e' validato in COGTABEL (tipo agente) e in COGGEANA come fornitore; in questa gestione la data del giro e' tipicamente0/10000101(giro senza data specifica). Vedi la chiave gestione-pasticcerie. - Cancellazione logica (pcase-2468): sia la cancellazione manuale di righe sia il filtro in lettura usano
grd-fl-canc = "C"invece della cancellazione fisica; le righe cancellate logicamente non vengono ricaricate in griglia. - Data vuota -> 10000101 (modifica 10/08/2023): consente di gestire giri privi di data specifica; la ricerca in COGGRDAY avviene sulla data convenzionale
10000101. - Doppia modalita': come COGMAA, il programma distingue l'uso standalone dall'uso come pannello richiamato da un chiamante (ingresso diretto in griglia con operatore/data forniti in
util-cogmad). - Configurazione SCHEMA-GIRI: la chiave SCHEMA-GIRI e' letta ma qui serve solo come contesto della gestione giri; la logica di esplosione per periodo resta in COGMAC.