Vai al contenuto

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-personal vuoto -> COGZ60NO (standard)
  • az-personal valorizzato -> 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)

  1. x1-cerca-commessa: legge testata commessa (LODCMTES) per ottenere piano di lavoro e coefficiente
  2. Scorre LODPNMAT per piano/riga selezionata
  3. Per ogni riga selezionata (lmt-fl-sel = "S" o lmt-fl-aut = "A"):
  4. Se lmt-tip = "P" (prestazione) -> e-prestazioni: cerca materiali collegati in LODCMMTA
  5. Se materiale diretto -> carica-w2-rep (determina magazzino da reparto) -> a2-ins-riga
  6. Materiali "da fatturare" (lmt-fl-fat = "F") esclusi di default, inclusi se tm-cfg-mat-da-fatturare = "S"
  7. Quantita' moltiplicata per coefficiente se lmt-fl-qta = "U" (unitario)

b-modifica -- Rielaborazione completa (modo precedente)

  1. x1-cerca-commessa: legge testata commessa
  2. d-cerca-testata: recupera il documento via raccordo COGRACBB "CP"
  3. Scorre tutti i raccordi "CP" della commessa:
  4. Per ogni documento trovato: b1-cancella-righe (cancella righe + ripristina giacenza via COGU12)
  5. b2-cancella-mat-coll: cancella i record LODPNMAT di materiali indiretti (pro=9999)
  6. Per Lanzi-Cavalli: g-cerca-uscite cerca anche nei buoni consegna (raccordo "CD")
  7. Riscorre LODPNMAT e reinserisce tutte le righe selezionate ed evase (lcr-stato = "C")

f-elabora -- Elaborazione nel nuovo modo (un documento per riga)

  1. x1-cerca-commessa: legge testata commessa
  2. Cerca raccordo gia' esistente su COGGENER tipo "OP" per la riga
  3. Se trovato: legge la testata e cancella le righe (b1-cancella-righe)
  4. Scorre LODPNMAT per la riga specifica:
  5. Se prestazione -> e-prestazioni
  6. Se materiale -> crea testata (c-ins-cogtesbo) + raccordo COGGENER "OP" + inserisce riga
  7. 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:

  1. carica-w2-rep: dal reparto della riga (lpr-reparto o lct-reparto) cerca in COGTABEL tipo 85 il magazzino collegato (euta-rp-mag). Se non trovato, applica nell'ordine:
  2. tm-cfg-mag-laboratorio (config ODONTO / MAGZZINO-SCARICO-MATERIALI)
  3. az-main-mag come ulteriore fallback se la config non e' valorizzata
  4. Per ogni materiale, cerca nella tabella se esiste gia' un documento per quel magazzino:
  5. Se esiste: riusa il documento
  6. 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 Screens
  • utilz60.cpy -- Interfaccia linkage (parametri dal chiamante)
  • k-personal.cpy -- Costanti personalizzazione per installazione
  • cogazien.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-testata per 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-MATERIALI come fallback intermedio tra "magazzino del reparto" (euta-rp-mag da COGTABEL tipo 85) e az-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.