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 aziendaCOGTRANS: file di transito (indicizzato, percorso inext-tmp-dir) usato per accumulare i lotti aperti con i relativi costi prima della stampa, cancellato a fine elaborazioneCOGLOG: log applicativoFLSTA: file di stato- Dalla
.select(via copycogq91.select): tabelle commesse/cicliCLCCCTES(testate) eCLCCCDAY(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-inventariocosto al minuto)cta-tipo = 12, cta-codr = 2: codice lavorazione di chiusura lotto (override a 36 seaz-personal = k-personal-omr)
Logica di business¶
- Init (
apri/a4): apertura file di transito esclusiva (path inext-tmp-dir + os-slash + # + program-id + operator). Se l'open dicogtransnon da'stato = "00"la funzione e' gia' in uso dall'operatore e si esce. - Input (
a-tm-da-data/a-tm-a-data): richiesta intervallotm-da-data/tm-a-data(default: primo giorno del mese precedente, 31 dello stesso mese precedente). - Elaborazione (
b-elabora): - Scan di
CLCCCTES(testate commesse). - Per ogni testata scan di
CLCCCDAY(consuntivi giornalieri di lotto), filtrandoccd-data >= tm-da-data. - Lotto considerato aperto se:
- Esiste consuntivo con
ccd-data <= tm-a-data(alzaw-ini-ok) - E manca la lavorazione di chiusura (
w-data-finale = 0) oppurew-mem-data(ultimo consuntivo) superatm-a-data.
- Esiste consuntivo con
- Per i lotti aperti: chiamata a
COGU36(call-u36-calcola-lotto) per calcolo costi materiali/esterni, accumulo tempi (cnt-tempi) e scrittura record di transitocogtranscon cliente, merce, quantita' prodotta, costo materiali, costo esterni, costo interni. - Stampa (
d-stampa): - Scan di
cogtransordinato per chiave (trs-ann/trs-num). - Una riga per lotto con: lotto, cliente, codice merce (formato GR/SO/COD), descrizione, quantita', costi materiali / esterni / interni / totale.
- Totali generali a fine stampa.
- 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 TOePERFORM THRU(codice storico, antecedente alle convenzioni attuali documentate in CLAUDE.md). COGTRANSnon 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 dad2-ctr-jump(testata viad3-testa). - Editing monetario via
COGU10Wconu10-edit-len = 12. - Personalizzazione: per
az-personal = k-personal-omrla lavorazione di chiusura e' fissata a 36 (override del valore inCLCTABEL). - 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 conaccept ... from timesutimesis1/timesis2edelapsed-time) anziche' ogni ~100 record (in precedenza contatorik1/k2con 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.