Vai al contenuto

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

  1. 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.
  2. Lettura consegna (a-tm-lettura): campo unico "Lettura" che accetta un riferimento consegna (da bar code MAAAANNNNNN o chiave completa MAAAATNNNNNN), un serial number / chiave alternativa, oppure un codice merce (EAN, codice interno o codice avanzato). La logica di riconoscimento e' in x-controlla-tm-lettura.
  3. Caricamento dettaglio (x-carica-dati-consegna / a-leggi-dati): mostra ordine/cliente e popola il transito griglia scandendo COGCONOR (dettaglio consegna).
  4. Griglia (a-grid): visualizza le righe con quantita' proposta; letture successive incrementano/decrementano la quantita' da evadere per riga.
  5. 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"); se tm-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 via b-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 ad az-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.cpy come interfaccia; se chiamato con COGG6A-CALLED riceve 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.