Buoni di prelievo (B5)¶
Panoramica¶
L'area buoni di prelievo comprende la gestione del ciclo di vita dei BdP: creazione/modifica, consolidamento e spedizione.
| Programma | Righe | Funzione |
|---|---|---|
| COGM58 | 5.560 | Inserimento/gestione buoni di prelievo |
| COGM65 | - | Consolidamento buoni di prelievo |
COGM58 — Inserimento / Gestione Buoni di Prelievo¶
Identificazione¶
- Programma: COGM58
- Area: GESTBUONIP (Gestione Buoni di Prelievo)
- Descrizione: Gestione completa ciclo di vita BdP — inserimento, modifica, visualizzazione, cancellazione con griglia dettaglio righe
- Righe: 5.560 (SCREENS 2.13.x)
- Menu: Magazzino > Buoni di Prelievo
Funzionalita' principale¶
COGM58 e' il programma centrale per la gestione dei Buoni di Prelievo (BDP): - CRUD completo su testata (COGTESBP) e righe (COGRIGBP) - Griglia dettaglio con aggiornamento saldi magazzino (COGU12) - Esplosione distinta base (COGS16) - Lettura barcode da memowand (COGS08) - Integrazione Modula DB-Frontiera (COGD53) - Gestione locazioni tablet (WMSW01) - Import/export interscambio documenti (COGPA9) - Cancellazione silenziosa da workflow (COGD25)
Modalita' di chiamata¶
| Modalita' | Chiamante | Comportamento |
|---|---|---|
| Interattiva | Menu | Interfaccia completa con selezione BdP |
| Da COGM65 | COGM65 | Precarica BdP da parametri |
| Da COGF22 | COGF22 | Precarica BdP da parametri |
| Cancella-silent | COGD25 | Cancella BdP senza UI ed esce |
Flusso operativo¶
1. Inizializzazione (apri, riga 457)¶
- Controllo abilitazioni, init programma
- Apertura file, lettura azienda
- Caricamento configurazione RNEWCONF (3 gruppi, ~18 parametri)
- Setup pulsanti custom (F7=Inserimento, F9=Azzera, S-F6=Esplodi)
- Se cancella-silent: esegue cancellazione e termina
2. Selezione BdP (a4, riga 591)¶
Accettazione sequenziale:
| Campo | Riga | Descrizione |
|---|---|---|
| tm-mag | 706 | Magazzino (obbligatorio, validazione COGMAGAZ) |
| tm-tbp-aa | 761 | Anno BdP |
| tm-num | 797 | Numero BdP (F7=nuovo, F9=ricerca COGM65) |
| tm-tbp-mm/gg | 894 | Mese/giorno (solo se tipo numerazione "L") |
3. Controllo stato (a-fine-chiave, riga 976)¶
- Lettura COGTESBP
- Documento chiuso (tbp-fl-cls="C"): verifica legami bolle
- Se nessun DDT collegato → offre riapertura
- Se DDT collegato → blocco
- Verifica collegamento Modula (COGMDTES/COGIMPCA)
4. Dati testata (righe 1217-1508)¶
| Campo | Riga | Validazione |
|---|---|---|
| Data | 1217 | Coerenza con anno, fatturazione, consolidamento |
| Flag provvisorio | 1265 | Solo se config (090126) |
| Cliente | 1310 | F9 azzera numerazione se tipo='L' |
| Riferimento | 1383 | Riferimento cliente |
| Pagamento | 1424 | Visibile solo se config (111024) |
| Note | 1472 | Note documento |
5. Griglia dettaglio (a-grid, riga 1513)¶
Griglia con righe BdP — merce, quantita', prezzo, lotto, sconti.
Tasti funzione: | Tasto | Funzione | |-------|----------| | CTRL-A | Aggiungi riga (disabilitato se Modula) | | CTRL-E | Elimina riga (disabilitato se Modula) | | F3 | Salva e torna a selezione | | F5 | Dettaglio merce (COGS47) | | F6 | Listino prezzi (cliente/data/merce) | | F7 | Prezzi precedenti (COGM12) | | F8 | Selezione lotto (WIN097, su cella lotto) | | S-F4 | Amministrazione griglia (GRIDADMN) | | S-F6 | Esplodi distinta base (COGO05E + COGS16) | | Menu popup | Esporta/Importa interscambio (COGPA9) |
6. Salvataggio (a-fine-dati-ok, riga 3553)¶
1. Validazione dati testata + griglia non vuota
2. Se inserimento: numerazione progressiva (COGS25)
3. Scrittura testata COGTESBP
4. Loop righe:
a. Scrittura COGRIGBP
b. Aggiornamento saldi magazzino (COGU12)
c. Se Modula: COGD53
d. Se descrizioni aggiuntive: COGGENER tipo DA
5. Dialog conferma → opzione stampa (COGP64)
7. Cancellazione (riga 2082)¶
- Verifica abilitazione
- Avviso preliminare Modula DB-Frontiera (riga 2125-2136): se
tm-cfg-modula-db-frontiera = "S"etm-qta-eva-modula > 0(BDP collegato ad una lista di prelievo Modula gia' evasa), mostra un messaggio di ATTENZIONE con richiesta di conferma esplicita. Se l'utente non conferma con F3, la cancellazione viene interrotta conz-exception-prosegui = "N". - Conferma utente (F3)
- Cancella righe COGRIGBP con update COGU12
- Cancella legami COGGENER (tipo BB, EB)
- Opzione: cancella legami bolle (F4)
- Se Modula non-frontiera: COGD53 "Cancella B.d.P"
- Se tablet: WMSW01
8. Controllo consegne (riga 1826)¶
Validazione QTA BdP contro consegne ordini: - Accumula QTA BdP su consegne (COGRIGOR + COGCONOR) - Verifica: QTA disponibile = QTA consegna - QTA consegnata - QTA BdP - Errore se negativo
9. Chiusura (fine, riga 1807)¶
- Close file transito, chiudi window, destroy menu popup, exit
Funzioni speciali¶
Memowand (barcode reader)¶
Attivato se az-bar-code='T'/'M' e inserimento. Chiama COGS08, legge file sequenziale (EAN+QTA), popola griglia automaticamente.
Esplosione distinta base (S-F6)¶
Chiama COGO05E per selezione articolo, poi COGS16 per esplosione. Legge file transito TRAN-S16 e aggiunge righe componenti con listino.
Interscambio documenti (menu popup)¶
- Esporta: COGPA9 selezione modello → scrivi COGPA9-DATI → COGPA9 esporta
- Importa: COGPA9 importa → leggi COGPA9-DATI → aggiungi righe griglia
File principali¶
| File | Prefisso | Operazioni | Descrizione |
|---|---|---|---|
| COGTESBP | tbp- | R/W/D | Testata BdP |
| COGRIGBP | rbp- | R/W/D | Righe BdP |
| COGMERCI | mer- | R | Anagrafica merci |
| COGGEANA | ana- | R | Anagrafica clienti/fornitori |
| COGMAGAZ | magz- | R | Magazzini |
| COGGENER | gnr- | R/W/D | Legami documenti (tipo BB, EB, DA) |
| COGTESOR | tor- | R | Testata ordini vendita |
| COGRIGOR | ror- | R | Righe ordini vendita |
| COGCONOR | cor- | R | Consegne ordini |
| COGMERLT | mlt- | R | Lotti merci |
| COGTBPAP | tb2- | R/W/D | BdP applicative (Modula) |
| COGMDTES | mdt- | R | Flag collegamento Modula |
| COGIMPCA | mpc- | R/D | Impegnativa carico Modula |
| TRAN-S16 | trs-s16- | R | Transito esplosione distinta base |
| TRAN-S47 | trs-s47- | R/W/D | Transito descrizioni aggiuntive |
| COGPA9-DATI | t-pa9-d- | R/W | File interscambio documenti |
Catena di chiamata¶
| Programma | Funzione |
|---|---|
| COGS25 | Numerazione progressiva BdP |
| COGU12 | Aggiornamento saldi magazzino |
| COGM65 | Ricerca BdP avanzata (F9) |
| COGP64 | Stampa BdP |
| COGD53 | Elaborazione Modula |
| COGS16 | Esplosione distinta base |
| COGO05E | Selezione distinta base |
| COGS08 | Scarico barcode memowand |
| COGM12 | Prezzi precedenti |
| COGS47 | Descrizioni aggiuntive |
| COGS14 | Ricerca ordini cliente/merce |
| COGPA9 | Import/export interscambio documenti |
| COGS01 | Listino prezzi |
| COGS65W | Selezione cliente |
| COGU02 | Gestione IVA clienti esteri |
| COGU10/COGU10W | Conversione/arrotondamento valute |
| WIN097 | Selezione lotto (modale) |
| WMSW01 | Gestione locazioni tablet |
| GRIDADMN | Gestione griglia |
Parametri RNEWCONF¶
Gruppo COGTESBP (9 parametri)¶
| Chiave | Campo | Effetto |
|---|---|---|
| euta-c053-tip-num | tm-cfg-tip-num | Tipo numerazione: 'A'nnuale / 'L'etterale |
| euta-c053-ges-lav | tm-cfg-ges-lav | Gestione lavorazioni |
| euta-c053-merce-ser | tm-cfg-merce-ser | Merce servizi |
| euta-c053-perc-ce | tm-cfg-perc-ce | Percentuale commissioni |
| euta-c053-perc-ser | tm-cfg-perc-ser | Percentuale servizi |
Gruppo Magazzino/Locazioni (3 parametri)¶
| Chiave | Campo | Effetto |
|---|---|---|
| path-interscambio-dm | tm-cfg-path-int-dm | Path file interscambio |
| gestione-tablet | tm-cfg-gestione-tablet | Abilita WMSW01 locazioni tablet |
| modula-db-frontiera | tm-cfg-modula-db-frontiera | Modula con disabilitazione modifica righe |
Gruppo COGV51 (6 parametri)¶
| Chiave | Campo | Effetto |
|---|---|---|
| euta-c041-acc-sco | tm-cfg-acc-sco | Accorpamento sconti |
| euta-c041-qta-dec | tm-cfg-qta-dec | Decimali quantita' |
| euta-c041-vis-um | tm-cfg-vis-um | Visibilita' UM |
| euta-c041-pre-ctr | tm-cfg-pre-ctr | Controllo prezzi |
Note tecniche¶
Gestione stato documento¶
- 'A' = Aperto (modificabile)
- 'C' = Chiuso (non modificabile)
- Riapertura: consentita se chiuso ma senza DDT collegato (riga 1015-1085)
Chiavi database¶
- COGTESBP: mag + aa + num (tipo 'A') oppure mag + aa + mm + gg + num (tipo 'L')
- COGRIGBP: mag + aa + mm + gg + num + prog
Posizioni chiave¶
- Riga 457: apri — inizializzazione
- Riga 591: a4 — loop selezione
- Riga 976: a-fine-chiave — controllo stato
- Riga 1513: a-grid — griglia dettaglio
- Riga 1807: fine — chiusura
- Riga 1826: controllo consegne
- Riga 2082: cancellazione
- Riga 3553: a-fine-dati-ok — salvataggio
- Riga 4400: cancellazione silenziosa
- Riga 4730: esplosione distinta base
- Riga 4949: configurazioni RNEWCONF
Storico modifiche (2026-05-21)¶
- Avviso bloccante in cancellazione con lista Modula evasa: in fase di cancellazione, prima della richiesta "Confermi?" il programma controlla — se
tm-cfg-modula-db-frontiera = "S"— la quantita' evasa cumulata sulle righe Modula (COGMDRIG.mdr-qta-evasa) della lista collegata. Se> 0viene mostrato il warning "ATTENZIONE: questo buono e' collegato ad una lista di prelievo gia' evasa. Confermi la cancellazione?" e la cancellazione richiede una conferma esplicita aggiuntiva. - Calcolo quantita' evasa Modula in caricamento dati testata: il nuovo paragrafo
ottieni-qta-evasa-modulasommamdr-qta-evasaper la listatm-lista-modula(riempita datb2-id-lista-modula). Eseguito solo setm-cfg-modula-db-frontiera = "N"non e' attivo (cioe' solo se la configurazione DB-Frontiera Modula e' attiva) e se la lista esiste (tm-lista-modula <> 0). - Cleanup raccordi e legami in cancellazione: dopo
c-cancella-righee prima didel-cogtesbp, ora il programma esegue: c-cancella-legame-isir— azzera il campoisir-bdp-controllosulle righe diCOGISIRR(chiave 4) che puntano al BDP cancellato (utilizza la nuovacogisirr.k04);c-cancella-coggenerchiamato tre volte conw-gnr-tip=CB,CM,CS— elimina i legami COGGENER lasciati dal BDP (collegamento BdP→BdC, matricole e serial chiari).- Nuovi campi tabella maschera:
tm-lista-modula PIC 9(12)(id lista Modula) etm-qta-eva-modula PIC 9(07)v999(quantita' evasa cumulata). - Nuova copybook chiave:
cogisirr.k04per il lookup BDP→ISIR.
COGM65 — Consolidamento buoni di prelievo¶
COGM65 e' il programma di consolidamento dei buoni di prelievo — gestione lotti, barcode e completamento.
File: cbl/cogm65.cbl
Consolidamento¶
Flusso principale¶
a-consolidamento
├── a-tm-c-mlt-chia1 ──► Lettura lotto (barcode)
│ └── x-controlla-tm-c-mlt-chia1
│ ├── analisi-barcode-gapi (se 30+ caratteri)
│ └── cerca-bdp-provv-lotto
│
├── a-tm-c-qta-sel ────► Quantità da consolidare (F5 = prossimo BDP)
│ └── x-controlla-tm-c-qta-sel
│
└── a-tm-c-cartone ────► Cartone/UDS
└── consolida-bdp-selezionato
├── crea-movimento-consolidamento (COGDOCCM)
├── aggiorna-testata-consolidamento (COGDOCCT)
├── aggiorna-tbp-rif-uds
└── completa-consolidamento-bdp (se qta completa)
└── Invia certificato via COGD76
Logica selezione BDP (cerca-bdp-provv-lotto)¶
La routine seleziona il BDP più appropriato con questa priorità:
- Prima passata: BDP con
tmr-qta = tm-c-qta-sel(quantità totale = quantità letta) - Seconda passata: BDP con
tmr-qta-da-consol = tm-c-qta-sel(residua = letta) - Terza passata: primo BDP con
tmr-qta-da-consol >= tm-c-qta-sel
Requisiti per ogni BDP:
- Collegato allo stesso lotto (mag, merce, prog)
- Aperto (tm-fl-cls = "A")
- Provvisorio (tmr-fl-provv = "P")
Formati barcode supportati¶
| Formato | Struttura | Note |
|---|---|---|
| Standard | AAAAAAAAAMPPPPPP |
Lotto interno 16 caratteri |
| Con quantità | AAAAAAAAAMPPPPPPQQQQQQ |
Lotto + quantità |
| GAPI | CCCCCCCCQQQQQQQQPPPPPPPPLLLLLLL |
30+ caratteri |
Funzionalita' specifiche per verticalizzazione Modula¶
Diverse funzionalita' di COGM65 sono attive solo quando la configurazione tm-cfg-modula-db-frontiera = "S" (verticalizzazione DB Frontiera Modula). In particolare:
- Campo
tmr-lista-modula/tmr-qta-eva-modula/tmr-esito-listanella tabella in memoria (popolati daottieni-esito-lista-modulaeottieni-qta-evasa-modulain fase di caricamento, cogm65.cbl:4205-4213) - Filtro Stato Modula (
tm-stato-modula) sul loop di filtraggio a cogm65.cbl:4302 - Filtri Da inviare / Inviato nella testata di ricerca
- Tasto F6 (invio lista a Modula) e Shift-F8 (check consolidamento)
- Colonne Modula nella griglia risultati
L'aggiornamento delle qta evase lato gestionale avviene tramite il processo batch DFNM03 (vedi flussi/modula.md), che sincronizza COGMDRIG.mdr-qta-evasa dal DB frontiera a ogni ciclo (anche con lista in stato EXE).
Filtro Stato Modula¶
Campo tm-stato-modula (accept a-tm-stato-modula a cogm65.cbl:702) con valori:
| Valore | Semantica | Condizione sul filtro |
|---|---|---|
T |
Tutti (default) | Nessun filtro applicato |
L |
Lavorati | tmr-qta-eva-modula (i) > 0 OR tmr-lista-modula (i) = 0 |
N |
Non iniziati | tmr-qta-eva-modula (i) = 0 AND tmr-lista-modula (i) <> 0 |
Il filtro "L" raggruppa due situazioni che dal punto di vista spedizione sono equivalenti: lavorazione Modula in corso o completata (qta evasa > 0) e BDP senza lista Modula (provenienti dal packaging, non transitano dal magazzino automatizzato). Logica a cogm65.cbl:4302-4327.
Controllo consolidamento (Shift-F8)¶
Tasto funzione attivato solo quando tm-cfg-modula-db-frontiera = "S" e' stato selezionato un cliente. Il pulsante custom e' indicizzato come k-sf8-check (valore 6) nella tabella w-pbc-*; l'evento keystroke e' s-f8. Attivato in x-attiva-tf-grid (cogm65.cbl:2452), gestito in a-accept-grid (cogm65.cbl:1613).
Paragrafo check-consolidamento-bdp (cogm65.cbl:2347): scorre la tabella in memoria tm-righe (da 1 a tm-pnt) e conta le righe con tmr-qta-eva-modula > tmr-qta-consol. Se ne trova almeno una, mostra un messaggio vbx-msg-info con il numero di righe problematiche e l'avvertenza sul rischio di DDT incompleto rispetto al materiale gia' estratto dal Modula.
Il controllo opera solo sulla tabella in memoria (griglia corrente), non sull'intero archivio COGTESBP/COGRIGBP. E' solo informativo: non blocca e non modifica dati. La disponibilita' e' subordinata alla verticalizzazione Modula: in un'installazione senza Modula il pulsante non viene mai attivato.
Tabelle coinvolte¶
| File | Prefisso | Descrizione |
|---|---|---|
| COGTESBP | tbp- | Testata BDP |
| COGRIGBP | rbp- | Righe BDP |
| COGDOCCT | docc- | Testata consolidamento |
| COGDOCCM | docm- | Movimenti consolidamento |
| COGMERLT | mlt- | Lotti merce |