COGG6A - Creazione Buoni di Prelievo da Consegna (nuova versione)¶
Sorgente: cbl/cogg6a.cbl | Tipo: Programma interattivo GUI con griglia paginata, richiamabile come sottoprogramma | Program-ID: COGG6A
Menu:
- Magazzino > Uscite > Evasione vendite > Creazione buoni di prelievo
Scopo¶
Crea i buoni di prelievo (BDP) a partire da una consegna da evadere. E' la "nuova versione" del flusso di creazione BDP (commento di testata: "Creazione bdp da consegna, nuova versione, per ora per Artic"): rispetto allo standard, il programma propone automaticamente le quantita' da evadere suddivise per lotto, in base all'anzianita' del lotto (data scadenza crescente), e integra la lettura di serial number e l'eventuale generazione di liste di prelievo per il magazzino Modula.
L'operatore legge (o riceve dal chiamante) una consegna; il programma carica in griglia le righe evadibili, ciascuna con quantita' proposta calcolata al netto di giacenza, prenotato e quanto gia' in BDP. La lettura successiva di merci / lotti / serial number consente di rettificare le quantita' da evadere. Alla conferma (F3, b-aggiorna) crea le testate e righe BDP.
Struttura del programma¶
Flusso principale¶
- Inizializzazione (
apri): apertura file, log gesdebug, lettura configurazione (x99-confi), preparazione griglia GRID-DET e menu pop-up. Se richiamato (cogg6a-called = "COGG6A-CALLED") recupera la consegna dal linkage. - Lettura consegna (
a-tm-lettura): campo unico "Lettura" che accetta un riferimento consegna (da bar codeMAAAANNNNNNo chiave completaMAAAATNNNNNN), un serial number / chiave alternativa, oppure un codice merce (EAN, codice interno o codice avanzato). La logica di riconoscimento e' inx-controlla-tm-lettura. - Caricamento dettaglio (
x-carica-dati-consegna/a-leggi-dati): mostra ordine/cliente e popola il transito griglia scandendoCOGCONOR(dettaglio consegna). - Griglia (
a-grid): visualizza le righe con quantita' proposta; letture successive incrementano/decrementano la quantita' da evadere per riga. - Aggiornamento (
b-aggiorna): crea i BDP.
Costruzione righe griglia (z-grid-det-esamina-riga-consegna)¶
Per ogni riga consegna (COGCONOR), scarta le righe gia' completamente evase, quelle di merce assemblata (verifica su CLCDISEG in x211-cerca-se-assemblato) e quelle senza quantita' da evadere. Calcola la quantita' evadibile come:
qta-cons-ok = qta-consegna - (qta-gia-consegnata + qta-gia-in-bdp)
dove la quantita' gia' in BDP aperti e' sommata in x31-cerca-bdp (scansione COGRIGBP .k04 per consegna, con esclusione dei BDP chiusi tramite COGTESBP).
- Merce standard (
z-grid-det-aggiungi-merce-standard): una riga; quantita' proposta = min(evadibile, giacenza al netto del prenotato) letta da COGSLMAG. - Merce a lotti (
z-grid-det-aggiungi-merce-a-lotti): scandisce COGMERLT per merce ordinata per data scadenza (.k06), saltando lotti chiusi o vuoti, e crea una riga per lotto (z-grid-det-aggiungi-lotto) fino a coprire la quantita' evadibile; il prenotato sul lotto e' calcolato scandendo COGRIGBP.k05(merce+lotto+mag).
Creazione BDP (b-aggiorna)¶
Scandisce il transito griglia; per le righe con qta-bdp > 0:
b-crea-testata-bdp: numera via COGS25 (cod. 11), crea COGTESBP provvisorio (tbp-fl-provvisorio = "S"); setm-cfg-bdp-1-riga = "S"crea una testata per riga, altrimenti una sola testata cumulativa;b-crea-riga-bdp: crea COGRIGBP, aggiorna la prenotazione via COGU12 (tipo "P"); se la riga e' a serial number collega i s/n viab-collegamento-sn(scrive COGGENER tipo "CM");b-crea-lista-prelievo-modula: se la merce e' gestita a Modula (t-gor-r-fl-modula = "S") e siamo sul magazzino Modula (az-mag-modula), chiama COGD53 per generare la lista di prelievo (causale "BP", tip "LP", stato "A").
Import da Excel (c-importa-excel)¶
Ramo alternativo che importa i serial number da evadere da file Excel tramite COGPA9 e il modello standard k-ie-modello-i-bdp, validando ogni record con la stessa x-controlla-tm-lettura.
Tabelle e file¶
| File logico | Accesso | Descrizione |
|---|---|---|
| FEURTAB | Indexed | Tabella di sistema |
| COGCONOR | Indexed, dynamic | Dettaglio consegne (righe da evadere) |
| COGTESOR | Indexed | Testate ordini (verifica ordine chiuso) |
| COGGEANA | Indexed | Anagrafica cliente |
| COGMERCI | Indexed (k03) | Anagrafica merci (lotti, Modula, serial number, EAN) |
| COGSLMAG | Indexed | Saldi magazzino (giacenza, prenotato) |
| COGMERLT | Indexed, dynamic (k06 per data scadenza) | Lotti merce (proposta per anzianita') |
| COGRIGBP | Indexed, dynamic (k04 consegna, k05 merce+lotto+mag) | Righe buoni di prelievo |
| COGTESBP | Indexed | Testate buoni di prelievo (creazione/verifica chiusura) |
| COGGENER | Indexed, dynamic (k02) | Legami generici (collegamento s/n - BDP, tipo "CM") |
| COGSNAGG | Indexed (k03 chiave alternativa) | Serial number aggiuntivi |
| COGMATRI | Indexed | Matricole (stato entrata/uscita del s/n) |
| CLCDISEG | Indexed | Distinte base / disegni (verifica merce assemblata) |
| T-GRID-DET | transito griglia | Righe griglia dettaglio (COGTRANS clonato) |
| T-SN | I-O (temp) | Transito serial number da evadere per riga (#$COGG6A_sn_<oper>) |
Il transito T-SN e T-GRID-DET sono ottenuti dai tracciati COGTRANS (cogtrans.k01/.k02/.k03) con replacing dei prefissi.
COPY incluse¶
Working-Storage / File¶
feurtab.fd, cogg6a.select, cogg6a.fd, cogfiles.cpy, k-personal.cpy, costanti-modula.cpy, cogg6a.wrk, cogg6a.imppredf-wrk, k-modelli-ie-i-bdp.cpy, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, wgrid.cpy, utilgdad.cpy, utils52.cpy, utils68.cpy, utils93.cpy, utilu07.cpy, utilu10.cpy, utilu12.cpy, utilu20.cpy, utils25.cpy, utild53.cpy, utilcogpa9.cpy, utilimppredf.cpy, utilncnf.cpy, utilgesdebug.cpy, utilgesstr.cpy
Linkage / Screen¶
wcont.cpy, wcont1.cpy, utilcogg6a.cpy (interfaccia di chiamata), cogg6a-01.scr
Procedure Division¶
cogg6a.decla, grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, gesdebug.cpy, msgmerce.cpy, cogmerci.k03, cogrigbp.k04, cogrigbp.k05, cogmerlt.k06, cogsnagg.k03, coggener.k02, cogg6a.prc, cogg6a.imppredf, poi le copy chiavi COGTRANS con replacing per T-SN e T-GRID-DET.
CALL a sottoprogrammi¶
| Programma | Scopo |
|---|---|
| GRIDADMN | Gestione/personalizzazione griglia dettaglio |
| COGS25 | Numerazione buoni di prelievo (cod. 11) |
| COGU07 | Ricerca catena serial number (cerca-sn-link) |
| COGU12 | Aggiornamento prenotazioni magazzino (tipo "P") |
| COGD53 | Generazione lista di prelievo Modula (causale "BP") |
| COGPA9 | Import da Excel (scelta modello, apertura file dati) |
| COGS68W | Help/formattazione stringa merce (via msgmerce.cpy) |
| RNEWCONF | (via utilncnf.cpy) lettura configurazioni |
| GESSTR | Normalizzazione stringa di misura letta |
| GESLPRC / gesdebug | Log di procedura (tracciamento elaborazione) |
Configurazioni RNEWCONF¶
Il paragrafo x99-confi non legge chiavi RNEWCONF: imposta una configurazione "finta" tm-cfg-bdp-1-riga in base alla personalizzazione aziendale.
| Parametro | Valore | Descrizione |
|---|---|---|
tm-cfg-bdp-1-riga |
"S" se az-personal = k-personal-artic-seals, altrimenti "N" |
Se "S" crea un BDP separato per ogni riga (per gestire il singolo cartone); altrimenti un BDP cumulativo per consegna |
Note tecniche¶
- Proposta per anzianita' lotto: l'ordinamento iniziale della griglia (
a4) e' merce (codice o codice avanzato in base adaz-mer-ava) + data scadenza lotto crescente; le merci a lotti vengono spezzate su piu' righe fino a coprire la quantita' evadibile prelevando dai lotti piu' "vecchi". - Quantita' al netto: la giacenza (merce e lotto) e' sempre considerata al netto del prenotato; valori negativi di giacenza/prenotato sono azzerati prima del calcolo.
- Lettura multi-tipo: il campo "Lettura" riconosce nell'ordine consegna, serial number/chiave alternativa, EAN (8/13 cifre), codice merce interno (
XXXXNNNNN), codice merce avanzato; dopo una merce/lotto valido si attende una quantita' (fl-accept-qta = "S"), che puo' essere anche negativa (storno). - Serial number: la lettura di un s/n gia' presente lo rimuove dalla riga; controlli su matricola uscita, magazzino diverso, s/n gia' su un altro BDP (COGGENER).
- Richiamabile: usa
utilcogg6a.cpycome interfaccia; se chiamato conCOGG6A-CALLEDriceve la consegna e salta direttamente alla conferma. - Modula: se la riga e' collegata a Modula e sul magazzino Modula, la conferma genera anche la lista di prelievo via COGD53 (un solo dettaglio per documento).
- k-max-ele-tab = 900: dimensione massima righe griglia.