Vai al contenuto

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 (tipo C); 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' tipicamente 0/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.