Vai al contenuto

COGQ26 - Gestione Giornate Lavorative

Scopo

Aggiornamento massivo delle ore lavorative giornaliere in un calendario di magazzino (CLCCALEN) o di macchina (CLCCALMA), su un intervallo di date e suddivise per giorno della settimana. Se l'aggiornamento e' fatto sul magazzino, viene proposto in opzione di propagare le nuove ore anche su tutti i calendari macchina (CLCCALMA) del periodo.

Magazzino > Produzione > Cicli di Lavorazione > Archivi > Giornate Lavorative

File e tabelle

File Tipo Descrizione
FEURTAB Parametri File parametri di ambiente
CLCCALEN Indicizzato Calendario lavorativo per magazzino/reparto
CLCCALMA Indicizzato Calendario lavorativo per macchina
COGMAGAZ Indicizzato Anagrafica magazzini (lettura/decodifica)
CLCANAMA Indicizzato Anagrafica macchine (lettura/decodifica)

Copybook

File e select

  • feurtab.fd, cogfiles.cpy — File parametri
  • cogq26.select, cogq26.fd, cogq26.wrk — Generati dal Screen Designer
  • cogq26-01.scr — Screen della maschera
  • cogq26.decla — Declaratives
  • cogq26.prc — Procedure I/O sui file

Working-storage standard

  • wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy

Utilita'

  • utilq07.cpy, utilq08.cpy — Strutture per i pop-up di ricerca magazzini/macchine
  • utilw36.cpy — Aiuto magazzini
  • utils52.cpy — Aiuto data (calendario popup)
  • utilu20.cpy — Edit campo numerico (ore)

Linkage

  • wcont.cpy, wcont1.cpy — Stringhe di comunicazione

Procedure

  • grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy
  • sendq07.cpy, sendq08.cpy, sendw36.cpy — Chiamate ai pop-up di aiuto

CALL

Il programma non effettua CALL esplicite a sottoprogrammi: la presentazione e' interamente sulla screen cogq26-01. Le funzioni di aiuto sono richiamate via PERFORM send-w36/send-q08 definite nei copybook sendw36/sendq08.

Logica di elaborazione

  1. Apertura (apri): inizializzazione standard, apertura file, definizione tasti funzione (F3 conferma, F8 aiuto, F8 calendario).
  2. Ciclo principale (a4): pulisce i campi e prepara la maschera.
  3. Accept sequenziali:
  4. a-tm-data-da / a-tm-data-a — date inizio/fine (con popup calendario via utils52)
  5. a-tm-mag — magazzino (popup ricerca via sendw36)
  6. a-tm-mac — macchina (popup ricerca via sendq08)
  7. Conferma testata (a-richiesta-conferma): valida che almeno uno fra magazzino e macchina sia presente, richiama x-imposta-conferma che invoca i singoli x-controlla-*.
  8. Accept ore giornaliere (a-tm-day-ore1..a-tm-day-ore7): per ciascun giorno della settimana, accept con edit numerico utilu20. Controllo singolo: ore <= 24.
  9. Conferma finale (a-fine-dati): chiama x-controlla-dati, poi acc-conf.
  10. Aggiornamento:
  11. Se tm-mac = spaces: aggiorna calendario di magazzino (agg-t-mag) e propone propagazione su tutte le macchine (agg-tutte-mac).
  12. Altrimenti: aggiorna solo il calendario della singola macchina (agg-s-mac).
  13. Torna ad a4 per un nuovo intervallo o ESC per uscire.

Aggiornamento calendario magazzino (agg-t-mag)

  • Verifica esistenza calendario via rd-clccalen con chiave (cal-mag, cal-data).
  • START su CLCCALEN con chiave (mag, data inizio), READ NEXT fino a data fine.
  • Per ogni record con cal-tip not = "F" (non festivo): in base a cal-day (1..7), aggiorna cal-ore con il valore corrispondente del giorno della settimana.
  • REWRITE record.

Propagazione su tutte le macchine (agg-tutte-mac)

  • Conferma utente con acc-conf-custom.
  • Loop con st-clccalma-notmin-chia1 + rdnxt-clccalma su tutto il file CLCCALMA, filtrando per data nell'intervallo e tipo non festivo.

Aggiornamento singola macchina (agg-s-mac)

  • Stesso schema di agg-t-mag ma sulla tabella CLCCALMA con chiave (cml-mac, cml-data).

Struttura dati in memoria

tab-maschera:
  tm-data-da (PIC 9(08))          — data inizio (aaaa-mm-gg)
  tm-data-a  (PIC 9(08))          — data fine
  tm-mag     (PIC X(01))          — codice magazzino
  tm-mag-des (PIC X(40))          — descrizione magazzino
  tm-mac     (PIC X(05))          — codice macchina
  tm-des-mac (PIC X(35))          — descrizione macchina
  tm-week:
    tm-day-ore1..tm-day-ore7 (PIC 9(02)V99) — ore per ciascun giorno

Note tecniche

  • Il programma usa lo stile GUI con accept campo per campo (non a griglia).
  • Usa intensivamente GO TO per la navigazione fra accept (codice legacy pre-convenzioni).
  • L'aggiornamento del calendario interpreta cal-day/cml-day come indice del giorno della settimana (1=lunedi', 7=domenica).
  • I record con cal-tip = "F" (festivo) sono saltati: l'orario standard non sovrascrive i giorni festivi configurati.
  • L'aggiornamento massivo non crea il calendario se mancante: lo segnala soltanto.