Vai al contenuto

COGQ91 - Riepilogo Costi Lotti Aperti

Campo Valore
Sorgente cbl/cogq91.cbl
Tipo Programma GUI con stampa elenco lotti di produzione aperti
Posizione menu Magazzino > Produzione > Cicli di Lavorazione > Stampe > Riepilogo Costi Lotti Aperti

Scopo

Stampa l'elenco dei costi dei lotti di produzione ancora aperti ad una certa data. Per ciascun lotto evidenzia i costi suddivisi in materiali, lavorazioni esterne e lavorazioni interne (calcolate come tempi consuntivati x costo medio dipendente al minuto). Un lotto si considera aperto se il suo consuntivo inizia prima della data finale di analisi e non ha la fase di chiusura, oppure il suo ultimo consuntivo si estende oltre la data.

File e tabelle

  • FEURTAB: parametri azienda
  • COGTRANS: file di transito (indicizzato, percorso in ext-tmp-dir) usato per accumulare i lotti aperti con i relativi costi prima della stampa, cancellato a fine elaborazione
  • COGLOG: log applicativo
  • FLSTA: file di stato
  • Dalla .select (via copy cogq91.select): tabelle commesse/cicli CLCCCTES (testate) e CLCCCDAY (consuntivi giornalieri), CLCTABEL, CLCDISEG, COGMERCI, COGGEANA

Programmi chiamati

Programma Scopo
COGU10W Editing importi monetari per la stampa (via paragrafo z-u10)
COGS54 Selezione dispositivo di stampa e gestione preview/print
COGU36 Calcolo costi di un lotto (via copy call-u36.cpy, parametro u36-m-tipo-costo = "I")

Configurazioni RNEWCONF

Nessuna chiamata diretta a RNEWCONF.

I parametri di costo provengono da CLCTABEL (tipo 12):

  • cta-tipo = 12, cta-codr = 1: costo medio dipendente orario (poi diviso per 60 -> w-costo-inventario costo al minuto)
  • cta-tipo = 12, cta-codr = 2: codice lavorazione di chiusura lotto (override a 36 se az-personal = k-personal-omr)

Logica di business

  1. Init (apri/a4): apertura file di transito esclusiva (path in ext-tmp-dir + os-slash + # + program-id + operator). Se l'open di cogtrans non da' stato = "00" la funzione e' gia' in uso dall'operatore e si esce.
  2. Input (a-tm-da-data/a-tm-a-data): richiesta intervallo tm-da-data / tm-a-data (default: primo giorno del mese precedente, 31 dello stesso mese precedente).
  3. Elaborazione (b-elabora):
  4. Scan di CLCCCTES (testate commesse).
  5. Per ogni testata scan di CLCCCDAY (consuntivi giornalieri di lotto), filtrando ccd-data >= tm-da-data.
  6. Lotto considerato aperto se:
    • Esiste consuntivo con ccd-data <= tm-a-data (alza w-ini-ok)
    • E manca la lavorazione di chiusura (w-data-finale = 0) oppure w-mem-data (ultimo consuntivo) supera tm-a-data.
  7. Per i lotti aperti: chiamata a COGU36 (call-u36-calcola-lotto) per calcolo costi materiali/esterni, accumulo tempi (cnt-tempi) e scrittura record di transito cogtrans con cliente, merce, quantita' prodotta, costo materiali, costo esterni, costo interni.
  8. Stampa (d-stampa):
  9. Scan di cogtrans ordinato per chiave (trs-ann/trs-num).
  10. Una riga per lotto con: lotto, cliente, codice merce (formato GR/SO/COD), descrizione, quantita', costi materiali / esterni / interni / totale.
  11. Totali generali a fine stampa.
  12. Cleanup (z-chiudi): close + delete file cogtrans.

Calcolo costo tempo interno (cnt-tempi)

Loop su CLCCCDAY della stessa commessa con ccd-data <= tm-a-data:

compute w-costo-tempo rounded = w-costo-tempo +
   ((ccd-tempo-prg + ccd-tempo-att + ccd-tempo-lav + ccd-tempo-dis)
    * w-costo-inventario)

Dove w-costo-inventario = costo orario medio dipendente / 60 (costo al minuto).

Note implementative

  • Programma con uso di GO TO e PERFORM THRU (codice storico, antecedente alle convenzioni attuali documentate in CLAUDE.md).
  • COGTRANS non e' una tabella applicativa permanente: e' un file di lavoro per operatore aperto/cancellato ad ogni esecuzione (open output cogtrans ... delete file cogtrans).
  • Layout di stampa a 158 caratteri (k-size-riga-norm), salto pagina gestito da d2-ctr-jump (testata via d3-testa).
  • Editing monetario via COGU10W con u10-edit-len = 12.
  • Personalizzazione: per az-personal = k-personal-omr la lavorazione di chiusura e' fissata a 36 (override del valore in CLCTABEL).
  • Chiavi indicizzate referenziate in catena di COPY: cogmomag.k02, coggener.k02, clccctes.k05, cogtrans.k01.
  • Avanzamento a video basato sul tempo (2026-08-04): nella scansione delle testate (b-elabora/b-10) e nel ciclo interno, il contatore di avanzamento a video (e-tm-l-a) viene aggiornato in base al tempo reale trascorso (piu' di 1 secondo, misurato con accept ... from time su timesis1/timesis2 ed elapsed-time) anziche' ogni ~100 record (in precedenza contatori k1/k2 con soglia 99). Il refresh a video risulta cosi' regolare nel tempo indipendentemente dalla velocita' di scorrimento; nessun impatto sui costi calcolati ne' sull'output di stampa.