COGZ60NO -- Scarico automatico materiali da commessa laboratorio odontotecnico¶
Sorgente: cbl/cogz60no.cbl | Tipo: Sottoprogramma satellite (CALL da COGZ60) | Program-ID: COGZ60NO | Righe: 1.823
Autore: Andrea Parmeggiani - Eurosystem
Scopo¶
Programma satellite per l'aggiornamento automatico dei movimenti di magazzino e della giacenza a partire dall'avanzamento di una commessa di laboratorio odontotecnico. E' la versione standard (NO = nessuna personalizzazione): viene invocata quando az-personal e' vuoto.
Quando un tecnico avanza una commessa selezionando materiali e prestazioni, COGZ60NO:
- Crea prime note di magazzino (tipo "P") per lo scarico dei materiali utilizzati
- Aggiorna la giacenza tramite COGU12
- Gestisce il raccordo tra commessa e prime note via COGRACBB (tipo "CP") o COGGENER (tipo "OP")
- Risolve i materiali indiretti collegati alle prestazioni tramite LODCMMTA e COGDBAGG
Invocazione¶
Chiamato esclusivamente da COGZ60 (dispatcher), che seleziona la variante in base a az-personal:
az-personalvuoto -> COGZ60NO (standard)az-personalvalorizzato -> COGZ60 + suffisso (es. COGZ60LC, COGZ60LZ)
Parametri (linkage utilz60.cpy)¶
| Campo | Formato | Descrizione |
|---|---|---|
z60-tip |
x(01) | Tipo elaborazione: "A"=Aggiungi, "M"=Modifica, "L"=Modifica da COGZL1 |
z60-com |
9(10) | Numero commessa da elaborare |
z60-riga |
9(04) | Riga da elaborare (0 = tutte) |
Programmi chiamanti (via COGZ60)¶
| Programma | Tipo operazione | Contesto |
|---|---|---|
| COGZ41 | "A" (Aggiungi) | Preparazione commessa standard |
| COGZD1 | "A" (Aggiungi) | Preparazione commessa avanzata |
| COGZSC | "A" (Aggiungi) | Movimentazione materiali |
| COGZ45 | "A" / "M" | Avanzamento commesse via barcode |
| COGZ49 | "M" (Modifica) | Finalizzazione prestazioni |
| COGZ61 | "M" (Modifica) | Elaborazione condizionale |
| COGZ61HOSP | "M" (Modifica) | Elaborazione condizionale (Hospitadella) |
| COGZL1 | "M" / "L" | Ricalcolo scarico materiali (disco esterno) |
Configurazioni RNEWCONF¶
Il programma legge 4 parametri all'avvio:
| Gruppo | Chiave | Variabile | Effetto |
|---|---|---|---|
| ODONTO | scarico-materiali-automatico |
tm-cfg-scarico-automatico |
Se "N", il programma esce subito senza elaborare |
| GESTBUONIC | euta-c034-calopeso |
tm-cfg-calopeso |
Modalita' calo peso: A=% qta, B=valore qta, C=% prezzo, D=valore prezzo |
| ODONTO | scarico-materiali-da-fatturare |
tm-cfg-mat-da-fatturare |
Se "S", include anche i materiali con flag "da fatturare" |
| ODONTO | MAGZZINO-SCARICO-MATERIALI |
tm-cfg-mag-laboratorio |
Magazzino di laboratorio usato come fallback quando il reparto non e' collegato ad alcun magazzino |
Inoltre, per alcune personalizzazioni specifiche (Lori, Hospitadella, Ortho Royal, Bonfiglioli), lo scarico automatico e' disattivato indipendentemente dalla configurazione.
Logica di elaborazione¶
Due modalita' di funzionamento¶
Il programma opera in due modalita' distinte, determinate dalla presenza di un raccordo COGRACBB di tipo "CP" per la commessa:
Modo precedente (raccordo COGRACBB "CP" esistente)¶
Un unico documento di prima nota collegato all'intera commessa tramite COGRACBB. La scelta dipende da z60-tip:
- "A" (Aggiungi) ->
a-aggiungi: aggiunge righe al documento esistente - "M" (Modifica) ->
b-modifica: cancella tutte le righe e le reinserisce - "L" (Modifica Lanzi) ->
b-modifica: come "M", innescato solo da COGZL1
Questo modo e' usato anche forzatamente per la personalizzazione Lanzi-Cavalli.
Modo nuovo (nessun raccordo COGRACBB "CP")¶
Un documento di prima nota per ogni riga della commessa, raccordato tramite COGGENER con tipo "OP" (chiave parte-1 = riga commessa, parte-2 = documento p.n.). Ignora il tipo di elaborazione: se esiste gia' un documento per la riga, lo cancella e lo ricrea.
Flusso principale (screen-0)¶
screen-0
|-- x99-confi Lettura configurazioni RNEWCONF
|-- Controllo az-personal Uscita per installazioni escluse
|
|-- Ricerca raccordo CP su COGRACBB
| |-- Se trovato e testata esiste -> modo precedente
| |-- Se non trovato -> modo nuovo (f-elabora)
|
|-- [Modo precedente]
| |-- z60-tip = "A" -> a-aggiungi
| |-- z60-tip = "M" -> b-modifica
| |-- z60-tip = "L" -> b-modifica
|
|-- [Modo nuovo]
| |-- f-elabora
a-aggiungi -- Aggiunta materiali (modo precedente)¶
x1-cerca-commessa: legge testata commessa (LODCMTES) per ottenere piano di lavoro e coefficiente- Scorre LODPNMAT per piano/riga selezionata
- Per ogni riga selezionata (
lmt-fl-sel = "S"olmt-fl-aut = "A"): - Se
lmt-tip = "P"(prestazione) ->e-prestazioni: cerca materiali collegati in LODCMMTA - Se materiale diretto ->
carica-w2-rep(determina magazzino da reparto) ->a2-ins-riga - Materiali "da fatturare" (
lmt-fl-fat = "F") esclusi di default, inclusi setm-cfg-mat-da-fatturare = "S" - Quantita' moltiplicata per coefficiente se
lmt-fl-qta = "U"(unitario)
b-modifica -- Rielaborazione completa (modo precedente)¶
x1-cerca-commessa: legge testata commessad-cerca-testata: recupera il documento via raccordo COGRACBB "CP"- Scorre tutti i raccordi "CP" della commessa:
- Per ogni documento trovato:
b1-cancella-righe(cancella righe + ripristina giacenza via COGU12) b2-cancella-mat-coll: cancella i record LODPNMAT di materiali indiretti (pro=9999)- Per Lanzi-Cavalli:
g-cerca-uscitecerca anche nei buoni consegna (raccordo "CD") - Riscorre LODPNMAT e reinserisce tutte le righe selezionate ed evase (
lcr-stato = "C")
f-elabora -- Elaborazione nel nuovo modo (un documento per riga)¶
x1-cerca-commessa: legge testata commessa- Cerca raccordo gia' esistente su COGGENER tipo "OP" per la riga
- Se trovato: legge la testata e cancella le righe (
b1-cancella-righe) - Scorre LODPNMAT per la riga specifica:
- Se prestazione ->
e-prestazioni - Se materiale -> crea testata (
c-ins-cogtesbo) + raccordo COGGENER "OP" + inserisce riga - Verifica che la riga sia evasa (
lcr-stato = "C") prima di procedere
Paragrafi di supporto¶
| Paragrafo | Funzione |
|---|---|
a1-cerca-libera |
Trova il primo progressivo di riga libero nel documento COGMOMAG |
a2-ins-riga |
Inserisce una riga di movimento magazzino con prezzo, valore, giacenza, conversione U.M. |
a3-ins-lodpnmat |
Inserisce collegamento prestazioni/materiali su LODPNMAT |
c-ins-cogtesbo |
Crea testata prima nota tipo "P", numerazione da COGS25 |
c1-ins-cogracbb |
Crea raccordo COGRACBB tipo "CP" (commessa -> p.n.) |
d-prepara-new |
Crea testata + raccordo per nuovo magazzino collegato a reparto |
d-cerca-testata |
Recupera testata p.n. dal raccordo COGRACBB |
d1-leggi-testata |
Legge testata, causale e divisa dal documento raccordato |
e-prestazioni |
Per una prestazione, scorre LODCMMTA e scarica i materiali collegati |
e1-inserisci-lodpnmat |
Inserisce materiale indiretto su LODPNMAT con pro=9999 |
g-cerca-uscite |
Cerca documenti di uscita via raccordo "CD" (solo Lanzi-Cavalli) |
g1-movimenti |
Scorre movimenti di un documento di uscita |
g2-prestazioni |
Come e-prestazioni ma per il giro personalizzato Lanzi-Cavalli (usa COGDBAGG) |
carica-w2-rep |
Determina il magazzino dal reparto della riga (LODPNRIG -> COGTABEL tipo 85) |
calo-peso |
Applica calo peso secondo configurazione (4 modalita' A/B/C/D) |
x99-confi |
Lettura configurazioni RNEWCONF |
x-sostituisci-percorso-lanzi |
Sostituzione path per ambiente WRUN Lanzi |
Gestione multi-magazzino (reparti)¶
Il programma gestisce la creazione di un documento di prima nota per ogni magazzino collegato ai reparti. La tabella tab-documenti (50 elementi) tiene traccia dell'associazione reparto-documento:
carica-w2-rep: dal reparto della riga (lpr-repartoolct-reparto) cerca in COGTABEL tipo 85 il magazzino collegato (euta-rp-mag). Se non trovato, applica nell'ordine:tm-cfg-mag-laboratorio(configODONTO / MAGZZINO-SCARICO-MATERIALI)az-main-magcome ulteriore fallback se la config non e' valorizzata- Per ogni materiale, cerca nella tabella se esiste gia' un documento per quel magazzino:
- Se esiste: riusa il documento
- Se non esiste: crea nuova testata (
c-ins-cogtesbo) + raccordo COGRACBB
File e tabelle¶
| File/Tabella | Copybook | Uso |
|---|---|---|
| LODCMTES | lodcmtes.fd | Testata commessa: piano di lavoro, coefficiente, reparto |
| LODCMRIG | lodcmrig.fd | Righe commessa: stato avanzamento, n. elementi |
| LODPNMAT | lodpnmat.fd | Piano materiali/prestazioni della commessa |
| LODPNRIG | lodpnrig.fd | Righe piano: reparto di competenza |
| LODCMMTA | lodcmmta.fd | Materiali collegati a prestazioni |
| COGMOMAG | cogmomag.fd | Movimenti di magazzino (riga documento) |
| COGTESBO | cogtesbo.fd | Testata documenti magazzino |
| COGRACBB | cogracbb.fd, .k02 | Raccordi bolla/bolla: tipi CP e CD |
| COGGENER | coggener.fd | Raccordi generici: tipo OP |
| COGMERCI | cogmerci.fd | Anagrafica merci |
| COGMERAP | cogmerap.fd | Merci per reparto (giacenza, centro costo) |
| COGMERA2 | cogmera2.fd | Dati aggiuntivi merci |
| COGMOAGG | cogmoagg.fd | Movimenti aggiuntivi (unita' misura alternativa) |
| COGMERLT | cogmerlt.fd | Lotti per merce |
| COGDBAGG | cogdbagg.fd | Distinta base aggregata (materiali da prestazioni, tipo "L") |
| COGTABEL | cogtabel.fd | Tabelle generiche: tipo 15 (causali), tipo 85 (reparti) |
| FEURTAB | feurtab.fd / lodfiles.cpy | File tabelle Euro |
Programmi chiamati¶
| Programma | Scopo |
|---|---|
| COGS25 | Numerazione progressiva documenti (anno/magazzino) |
| COGU12 | Aggiornamento saldi giacenza magazzino |
| COGG31 | Conversione unita' di misura |
| COGL61 | Lettura prezzo di acquisto |
| COGU10 / COGU10W | Utility divise/arrotondamento |
| RNEWCONF | Lettura configurazioni |
| GESSTR | Utility manipolazione stringhe (sostituzione percorso) |
Copybook principali¶
cogz60no.select,.fd,.wrk,.decla,.prc-- Definizioni generate da Screensutilz60.cpy-- Interfaccia linkage (parametri dal chiamante)k-personal.cpy-- Costanti personalizzazione per installazionecogazien.cpy-- Dati azienda (az-personal, az-main-mag, az-cau-pno, az-to-pno)utilg31.cpy-- Interfaccia COGG31 (conversione U.M.)utils25.cpy-- Interfaccia COGS25 (numerazione)utilu10.cpy-- Interfaccia COGU10 (divise)utilu12.cpy-- Interfaccia COGU12 (giacenze)utilncnf.cpy-- Interfaccia RNEWCONF (configurazioni)utilcogl61.cpy-- Interfaccia COGL61 (prezzi)utilgesstr.cpy-- Interfaccia GESSTR (stringhe)
Uso di COGRACBB¶
Il programma utilizza due tipi di raccordo sulla tabella COGRACBB:
Tipo "CP" -- Raccordo Commessa Lab.Od. / Prima Nota Magazzino¶
- RBB-A-BOL: numero commessa (z60-com)
- RBB-B-BOL: documento di prima nota magazzino (mag/anno/tipo/num)
- Logica: nel modo precedente, collega l'intera commessa a uno o piu' documenti P.N. (uno per magazzino/reparto)
- Creazione:
c1-ins-cogracbb-- inserisce con progressivo incrementale se duplicato - Lettura: all'avvio per determinare la modalita' di funzionamento; in
d-cerca-testataper recuperare il documento
Tipo "CD" -- Raccordo Commessa Lab.Od. / Documento Accompagnamento¶
- RBB-A-BOL: numero commessa
- RBB-B-BOL: documento di uscita (buono di consegna)
- Logica: usato solo nella personalizzazione Lanzi-Cavalli (
g-cerca-uscite) per trovare i documenti di uscita gia' creati per la commessa e scaricare i relativi materiali collegati alle prestazioni
Uso di COGGENER¶
Tipo "OP" -- Raccordo Riga Commessa / Prima Nota Magazzino¶
- GNR-PARTE-1: chiave riga commessa (
z60-lcr-chia1= commessa + riga) - GNR-PARTE-2: documento di prima nota (
tm-rif-pn) - Logica: nel modo nuovo, ogni riga evasa ha il proprio documento P.N. raccordato su COGGENER anziche' un unico documento per commessa su COGRACBB
Note storiche¶
- 2026-06-09: Introdotta la config
ODONTO / MAGZZINO-SCARICO-MATERIALIcome fallback intermedio tra "magazzino del reparto" (euta-rp-magda COGTABEL tipo 85) eaz-main-mag. Permette di indicare un magazzino di laboratorio dedicato per i reparti privi di magazzino esplicito, senza dover ricadere sul magazzino principale dell'azienda. - 17/9/10: Introdotto il "modo nuovo" -- ogni riga genera una singola P.N. raccordata su COGGENER tipo "OP". Il modo precedente (un unico documento via COGRACBB "CP") e' mantenuto per retrocompatibilita'.
- 9/10/08: Aggiunta gestione multi-magazzino per reparto (
tab-documenti). - 16/9/10: Eliminata la ricerca materiali indiretti dai movimenti di uscita; ora si parte dalle prestazioni sulla commessa.
- 3/1/2018: Aggiunto tipo elaborazione "L" (innescato da COGZL1) per scarico misto prestazioni + materiali commessa.
- 16/1/18: Gestione sostituzione percorsi per ambiente WRUN Lanzi.