Vai al contenuto

COGG77 - Assemblaggio componenti

Descrizione

COGG77 e' un sotto-programma richiamabile (non presente a menu) che gestisce l'assemblaggio interno automatico di prodotti finiti a partire dalla distinta base. E' stato progettato specificamente per il flusso Artic SEALS.

Il programma riceve in input un codice articolo assemblato, una quantita' da produrre e un riferimento alla riga consegna da evadere (tramite la linkage utilcogg77.cpy). Esegue quindi le seguenti operazioni principali:

  1. Verifica che l'articolo sia un assemblato (fase di lavorazione = assemblaggio nella distinta base CLCDISEG)
  2. Cerca gli ordini di lavorazione disponibili per la consegna (COGCONOR)
  3. Carica la distinta base dei componenti necessari (COGDBASE) escludendo i servizi
  4. Gestisce la selezione dei lotti merce dei componenti, con supporto per accantonamenti (BDP), magazzino logistico e prelievo Modula
  5. Prepara i lotti di produzione accoppiando componenti/lotti agli ordini di lavorazione
  6. Esegue gli aggiornamenti: sdoppia consegne, crea commesse di lavorazione (COGLAVOR, CLCCCTES, CLCCCRIG, CLCCCCNS), genera movimenti di magazzino per avanzamento prodotto finito e scarico componenti

Il programma supporta due modalita': standard e "Blue Seals" (cogg77-modo-blue-seals = "S"), dove la maggior parte dei componenti viene selezionata automaticamente in base alla famiglia merce.

L'esito viene restituito al chiamante tramite cogg77-esito: "S" = produzione effettuata, "N" = non effettuata, "A" = accantonamento materiale, "C" = cancellazione BDP.


Tabelle e file utilizzati

Tabelle principali (da cogg77.select)

Tabella Descrizione Accesso Chiavi secondarie
CLCDISEG Disegno/ciclo di lavorazione (distinta base) Lettura -
CLCCCTES Testata commessa di lavorazione Scrittura -
CLCCCRIG Righe fasi commessa Scrittura -
CLCCCDAY Dettaglio giornaliero consuntivo Scrittura -
CLCCCCNS Consuntivo fase commessa Scrittura -
CLCCCDET Dettaglio consuntivo Scrittura -
COGMERCI Anagrafica merci Lettura (mer-chia, mer-classe, mer-lotti, mer-padre, mer-modula) -
COGGEANA Anagrafica generale (clienti/fornitori) Lettura (ana-tipo, ana-cod, ana-nome) -
COGSLMAG Saldi magazzino Lettura (msal-merce, msal-mag1, msal-qta) -
COGTESOR Testata ordini Lettura (tor-chia, tor-chiu, tor-clifor) -
COGDBASE Distinta base componenti Lettura (dba-merce, dba-merce-f, dba-qta) -
COGLAVOR Commesse di lavorazione Lettura/Scrittura chia5 (ordine+consegna)
COGCONOR Consegne ordini Lettura/Scrittura (cor-chia1, cor-merce, cor-qta, cor-qtacons, cor-fl-lav, cor-o-testa) chia3 (merce)
COGMOVDB Movimenti distinta base (impegni) Lettura/Cancellazione (mdb-tip-mov, mdb-rif-mov, mdb-comp, mdb-qta) -
COGRACMC Raccordo merce-codice avanzamento Lettura (rcm-cod-ava) chia2
COGRACMT Raccordo merce-tabella (famiglie) Lettura (rtm-merce, rtm-tab-tip, rtm-tab-cod) chia2
COGGENER Tabella generica raccordo Lettura/Scrittura/Cancellazione (gnr-tip, gnr-parte-1, gnr-parte-2) -
COGTESBP Testata buoni di prelievo Lettura (tbp-chia1, tbp-fl-cls, tbp-cli) -
COGRIGBP Righe buoni di prelievo Lettura (rbp-testa, rbp-merce, rbp-lotto, rbp-qta, rbp-mag, rbp-consegna) chia4 (consegna), chia5 (merce)
COGMERLT Lotti merce Lettura (mlt-merce, mlt-mag, mlt-prog, mlt-lotto, mlt-stato, mlt-qta) chia2 (lotto+merce+mag), chia3 (stato+lotto+merce+mag)
COGMDTES Testata liste Modula Lettura (mdt-id-lista, mdt-doc, mdt-stato) chia2 (doc)
COGMDRIG Righe liste Modula Lettura (mdr-id-lista, mdr-merce, mdr-mlt-lotto, mdr-qta-evasa) -
COGGCDOC (incluso nel select, non usato direttamente nel sorgente visibile) - -
COGPRENO Prenotazioni materiale Lettura (prn-tip, prn-chiave-oggetto, prn-bdp) chia2

File di transito

File Descrizione COPY
TRAN-S26 Transito righe per COGS26 (movimenti magazzino) tran-s26.cpy, tran-s26.fd, tran-s26.k01
TRAN-G77 Transito lotti creati (restituiti al chiamante) tran-g77.cpy, tran-g77.fd, tran-g77.k01
FEURTAB File tabelle generali (cogfiles.cpy) feurtab.fd

Chiamate a sottoprogrammi

Programma Scopo Copybook interfaccia
COGSA0 Gestione BDP: creazione (CREA-BDP-SINGOLO, AGGIUNGI-A-BDP), prenotazione (PRENOTA), cancellazione (CANCELLA) utilcogsa0.cpy
COGD53 Invio liste di prelievo al magazzino automatico Modula (DOC-PRECEDENTE, DOC-ATTUALE, DOC-ESEGUI) utild53.cpy
COGS16 Gestione impegni componenti su consegna (tipo CC) utils16.cpy
COGS25 Numerazione progressiva (consegne: cod 4; commesse: cod 13) utils25.cpy
COGS26 Creazione documenti di magazzino (avanzamento prodotto finito + scarico componenti) utils26.cpy
COGU12 Aggiornamento giacenza articoli (tipo I, entrata/uscita) utilu12.cpy
COGPA0 Gestione stampa packing list raggruppata utilcogpa0.cpy
COGP78 Stampa etichette (sovrappacco e scarico componenti) utilp78.cpy
DIALOGS Dialog box di conferma/scelta utildlg.cpy
WIN097 Ricerca lotti merce (aiuto F8) utilw97.cpy
GRIDADMN Gestione griglie (preparazione, amministrazione) utilgdad.cpy
RNEWCONF Lettura configurazioni (PRODUZIONE / MAG-LOGISTICO) utilncnf.cpy
C$SLEEP Pausa nel polling Modula (1 secondo) -

Flusso di controllo

Paragrafi principali

Paragrafo Funzione
apri Inizializzazione: apertura file, caricamento configurazioni (x99-confi), preparazione griglie, lettura parametri da linkage
a4 Reset griglie e caricamento dati maschera dalla chiamata
a-tm-merce Accept articolo da assemblare (con aiuto COGS68W)
a-tm-qta-ric Accept quantita' da evadere
a-richiesta-conferma Validazione globale e conferma utente
a-elabora Avvio elaborazione: verifica assemblato, cerca ordini di lavorazione, carica distinta base, gestisce accantonamenti e prelievo Modula
a-grid-comp Accept griglia componenti (F10 = accantona, F4 = cancella BDP, F3 = conferma/aggiorna)
a-grid-lav Accept griglia lavorazioni
fine / z-chiudi Chiusura file, cancellazione programmi caricati, uscita

Ricerca e selezione componenti

Paragrafo Funzione
b-cerca-componenti Legge COGDBASE per l'articolo, esclude classe servizio, popola tab-componenti, propaga mer-modula in tc-fl-modula
b-cerca-caratteristiche-componente Legge famiglia merce da COGRACMT
b-cerca-comp-auto In modalita' Blue Seals, marca automatici i componenti non-KDS per famiglie KDSB/KDSA

Ricerca ordini di lavorazione

Paragrafo Funzione
c-cerca-ordini-lav Cerca la consegna associata e verifica disponibilita' residua (dedotti BDP aperti)
c1-cerca-produzione Lettura COGCONOR per la consegna, calcolo tl-qta-dsp al netto di BDP e quantita' evasa
c-cerca-prenotato-lotto Calcola quantita' prenotata per un lotto sommando le righe BDP aperte su COGRIGBP (chia5)

Gestione accantonamenti e BDP

Paragrafo Funzione
a4-cerca-acc-mag-log Cerca BDP su magazzino logistico per i componenti non ancora assegnati
a4-cerca-bdp-per-merce Scorre COGRIGBP (chia5) per merce, filtra su mag logistico e stesso cliente
a4-cerca-componenti-accantonati Cerca prenotazioni COGPRENO tipo M per la consegna, risale ai BDP
a4-analisi-prenotato Da una prenotazione, legge la riga BDP per ottenere merce, lotto e quantita'
a4-seleziona-lotto Simula la selezione di un lotto nella griglia: legge COGMERLT, posiziona sulla prima riga libera, calcola disponibilita', gestisce split riga se necessario
a4-seleziona-comp-automatici Per ogni riga con flag automatico, cerca lotti disponibili e li seleziona
a4-cerca-lotti-disponibili Scorre COGMERLT per merce/magazzino, verifica stato aperto, quantita' e prenotazioni
a4-accantona Crea BDP provvisori (tipo M) per ogni riga con quantita' usata, via COGSA0
a4-cancella-accantonamento Cancella un BDP via COGSA0 operazione CANCELLA
a4-verifica-residuo-merce Verifica se il fabbisogno della merce corrente e' stato interamente coperto. Confronta la qta totale usata in griglia (somma tm-c-qta-usata per tutte le righe della merce) con il fabbisogno totale tc-qta-tot. Se coperto, segnala a4-fl-residuo = "N" per uscire dal loop dei BDP

Flusso prelievo Modula (m1-*)

Paragrafo Funzione
m1-verifica-lista-modula Punto di ingresso: attivo solo quando w-flusso-modula-ant = "S" (nuovo flusso anticipato). Verifica raccordo COGGENER tipo MA, gestisce ripresa o nuovo invio
m1-cerca-lista-da-bdp Cerca la lista Modula in COGMDTES (chia2 per mdt-doc) collegata al BDP
m1-crea-bdp-modula Crea BDP senza lotti su mag Modula per i componenti con fabbisogno residuo, via COGSA0
m1-invia-lista-modula Invia lista prelievo a Modula via COGD53 (tipo doc B, causale BP, stato A)
m1-polling-rientro Polling su COGMDTES.mdt-stato: A = attesa (riprova), E o EC = evasa completa, EP = evasa parziale
m1-elabora-rientro Legge COGMDRIG, salta righe placeholder (mdr-fl-fonte = "P" → EXIT PERFORM CYCLE), per ogni riga evasa risale al lotto ERP via COGMERLT (chia2) e assegna in griglia
m1-chiudi-bdp-modula Cancella il BDP Modula via COGSA0
m1-scrivi-raccordo Scrive raccordo COGGENER tipo MA (chiave = cliente+merce, valore = bdp-testa)
m1-cancella-raccordo Cancella tutti i record COGGENER tipo MA per la chiave cliente+merce

Preparazione lotti (d-*)

Paragrafo Funzione
d-prepara Scorre gli ordini di lavorazione, per ciascuno determina il lotto minimo producibile in base ai componenti disponibili, accoppia componenti/lotti
d1-accorpa-lotti In modalita' Blue Seals, accorpa i lotti provvisori che differiscono solo per componenti automatici
m-refresh-grid-lav Ricostruisce la visualizzazione della griglia lavorazioni

Aggiornamenti (e-*)

Paragrafo Funzione
e-aggiorna Scorre i lotti provvisori, per ciascuno esegue: sdoppia consegna, crea commessa, scarica componenti. Cancella le prenotazioni e gestisce residuo BDP mag logistico
e1-sdoppia-consegna Se la quantita' da produrre differisce dalla disponibile, sdoppia la consegna COGCONOR
e1-numero-consegna Assegna nuovo numero consegna via COGS25 (cod 4)
e11-cancello-impegno Cancella impegni COGMOVDB e aggiorna giacenza via COGU12
e2-crea-commessa Crea testata COGLAVOR, CLCCCTES, fasi CLCCCRIG, consuntivi CLCCCCNS, dettagli CLCCCDAY/CLCCCDET. Genera documento avanzamento via COGS26
e3-scarica-materiale Prepara una riga di transito TRAN-S26 per lo scarico di un componente
e4-crea-scarichi-per-mag Separa lo scarico in due passate: magazzino principale e magazzino logistico. Per ciascuno chiama e4-crea-doc-mag
e4-crea-doc-mag Chiama COGS26 per creare il documento di scarico componenti. Imposta s26-fl-modula a "S" o "N" in base a w-flusso-modula-ant
e4-invia-lista-modula Se w-flusso-modula-ant = "S": EXIT PARAGRAPH (la lista e' gia' stata inviata nella fase m1-*). Se "N": invia lista a consuntivo via COGD53 tipo "P"
e-stampa-packing Se rimane una consegna residua non collegata a commessa, propone la ristampa della packing list via COGPA0

Logica di elaborazione

Flusso principale

All'apertura, il programma legge i parametri dalla linkage (utilcogg77.cpy). Se invocato come sub-programma (cogg77-called = "COGG77"), recupera merce, quantita', cliente e consegna dal chiamante (tipicamente COGG69).

L'elaborazione (a-elabora) segue queste fasi:

  1. Verifica assemblato: legge CLCDISEG per verificare che l'articolo abbia la fase di assemblaggio.
  2. Cerca ordini di lavorazione: legge COGCONOR per la consegna richiesta, verifica che non sia gia' collegata a una commessa (COGLAVOR chia5), calcola la quantita' disponibile al netto di BDP aperti e quantita' gia' evasa.
  3. Carica distinta base: legge COGDBASE, esclude componenti servizio (classe S), calcola le quantita' totali necessarie (dba-qta * tm-qta-ric). Per ogni componente propaga il flag mer-modula dalla tabella COGMERCI nella struttura tc-fl-modula.
  4. Cerca accantonamenti magazzino logistico: se configurato (PRODUZIONE / MAG-LOGISTICO), cerca BDP gia' presenti sul magazzino logistico per lo stesso cliente.
  5. Flusso Modula: se il magazzino logistico e' configurato e non si e' in modalita' Blue Seals, attiva il flusso di prelievo Modula (vedi sezione dedicata).
  6. Cerca prenotazioni: se non trovati accantonamenti su mag logistico, cerca in COGPRENO tipo M e simula la selezione.
  7. Selezione automatica: in modalita' Blue Seals, seleziona automaticamente i lotti dei componenti non-KDS per le famiglie KDSB/KDSA.

Preparazione e aggiornamento

Quando l'utente conferma (F3), il programma:

  • Prepara (d-prepara): per ogni ordine di lavorazione, determina la quantita' producibile massima per lotti omogenei. Se un componente ha meno disponibilita' degli altri, la quantita' minima determina il lotto. Crea le righe nella griglia lavorazioni con l'accoppiamento lotto provvisorio/componente.
  • Accorpa (d1-accorpa-lotti): in Blue Seals, unifica i lotti dove i componenti diversi sono tutti automatici.
  • Aggiorna (e-aggiorna): per ogni lotto provvisorio:
    • Sdoppia la consegna se la quantita' prodotta e' inferiore alla disponibile
    • Crea la commessa COGLAVOR con stato chiuso (C), le fasi da CLCDISEG, i consuntivi
    • Genera il documento di avanzamento prodotto finito via COGS26 (con lotto merce in entrata)
    • Crea i documenti di scarico componenti separati per magazzino (principale e logistico)
    • Cancella le prenotazioni BDP; se un BDP da magazzino logistico e' stato usato solo parzialmente, crea un nuovo BDP con il residuo

Flusso prelievo Modula

Il flusso Modula (~400 righe, paragrafi m1-*) gestisce il prelievo automatico dei componenti dal magazzino verticale Modula. Viene attivato solo quando lo switch w-flusso-modula-ant = "S" (flusso anticipato abilitato), il magazzino logistico e' configurato e non si e' in Blue Seals. Il default e' "N" (legacy): in questo caso la lista viene inviata a Modula dopo la conferma F3, nel vecchio flusso e4-invia-lista-modula. Attualmente w-flusso-modula-ant viene impostato a "S" solo per l'operatore 777 (testing).

Raccordo persistente: il programma usa la tabella COGGENER con tipo "MA" come raccordo tra assemblaggio e lista Modula. La chiave e' composta da cliente (m1-gnr-cli) e merce prodotto finito (m1-gnr-merce), il valore e' la testata BDP (m1-bdp-testa). Questo consente la ripresa in caso di interruzione.

Flusso di creazione (m1-verifica-lista-modula):

  1. Cerca un raccordo COGGENER tipo "MA" per la coppia cliente+merce.
  2. Se non esiste, verifica che ci siano componenti con fabbisogno residuo (tc-qta-dsp < tc-qta-tot).
  3. Chiede conferma all'utente per l'invio della lista.
  4. Crea un BDP provvisorio su magazzino Modula (az-mag-modula) senza lotti, con una riga per ogni componente con fabbisogno residuo, tramite COGSA0 (CREA-BDP-SINGOLO per la prima riga, AGGIUNGI-A-BDP per le successive).
  5. Scrive il raccordo in COGGENER.
  6. Invia la lista a Modula via COGD53: operazione DOC-ESEGUI con tipo documento "B", causale "BP", stato "A".

Flusso di polling (m1-polling-rientro):

  1. Cerca la lista Modula in COGMDTES tramite chiave secondaria chia2 (mdt-doc = m1-bdp-testa).
  2. Legge ciclicamente mdt-stato:
    • "A" = in attesa: chiede all'utente se riprovare o uscire (pausa 1s via C$SLEEP)
    • "E" o "EC" = evasa completamente: procede all'elaborazione
    • "EP" = evasa parzialmente: segnala e procede comunque

Flusso di ripresa: se il raccordo COGGENER esiste gia', il programma segnala che l'assemblaggio e' in attesa. Verifica che il BDP sia ancora aperto; se chiuso o mancante, cancella il raccordo e chiede se generare una nuova lista.

Elaborazione rientro (m1-elabora-rientro):

  1. Legge COGMDRIG per la lista. Salta le righe placeholder (mdr-fl-fonte = "P"): su liste fonte "S", la quantita' evasa e' gia' contabilizzata sulle righe storage con lotto effettivo e le righe placeholder andrebbero a duplicarla. Salta inoltre le righe con quantita' evasa = 0.
  2. Per ogni riga evasa, risale al lotto ERP leggendo COGMERLT con chiave secondaria chia2 (mlt-lotto = mdr-mlt-lotto, mlt-merce = mdr-merce, mlt-mag = az-mag-modula).
  3. Assegna il lotto alla griglia componenti tramite a4-seleziona-lotto.
  4. Chiude il BDP Modula via COGSA0 e cancella il raccordo COGGENER.

Cancellazione raccordo in uscita: al termine dell'aggiornamento (e-aggiorna, dopo e-stampa-packing), se il magazzino logistico e' configurato, cancella eventuali raccordi residui.

Invio lista Modula post-scarico (e4-invia-lista-modula)

In e4-crea-doc-mag, dopo la creazione del documento di scarico componenti, il comportamento dipende da w-flusso-modula-ant:

  • Se "N" (legacy): s26-fl-modula = "S" (COGS26 popola la lista D53); poi viene chiamato e4-invia-lista-modula che invia la lista a Modula via COGD53 con tipo documento "P".
  • Se "S" (nuovo flusso anticipato): s26-fl-modula = "N" (COGS26 non popola la lista D53 perche' la lista e' gia' stata inviata nella fase m1-*); la chiamata a e4-invia-lista-modula viene saltata.

Il paragrafo e4-invia-lista-modula esegue in ogni caso EXIT PARAGRAPH immediatamente se w-flusso-modula-ant = "S" (doppia protezione).


Configurazioni

Gruppo Chiave Uso
PRODUZIONE MAG-LOGISTICO Codice magazzino logistico; se valorizzato abilita la gestione BDP su mag logistico e il flusso Modula

Strutture dati interne

tab-componenti (tc-*)

Tabella dei componenti della distinta base (max k-max-ele-grid-comp elementi):

  • tc-merce: codice merce componente
  • tc-fl-modula: flag Modula propagato da COGMERCI.mer-modula
  • tc-qta-uni: quantita' unitaria per 1 prodotto finito
  • tc-qta-tot: quantita' totale necessaria (qta-uni * qta-richiesta)
  • tc-qta-dsp: quantita' gia' assegnata da lotti selezionati
  • tc-idx-comp: indice prima riga griglia con questo componente
  • tc-idx-lotto-min: indice del lotto che limita la produzione

tab-ordini-lav (tl-*)

Tabella ordini di lavorazione disponibili:

  • tl-ordine: riferimento ordine (tipo+anno+numero+progressivo)
  • tl-consegna: riferimento consegna
  • tl-qta-cor: quantita' in consegna
  • tl-qta-cla: quantita' gia' collegata a lavorazioni
  • tl-qta-dsp: quantita' disponibile
  • tl-qta-uso: quantita' usata nell'elaborazione
  • tl-qta-acc: quantita' accoppiata a lotti durante la preparazione

m1-dati (flusso Modula)

  • m1-gnr-cli + m1-gnr-merce: chiave raccordo COGGENER tipo MA
  • m1-bdp-testa: testata BDP Modula
  • m1-id-lista: identificativo lista COGMDTES
  • m1-fl-lista-trovata: raccordo esistente trovato (S/N)
  • m1-fl-rientrata: lista rientrata da Modula (S/N)
  • m1-fl-invio-ok: invio lista riuscito (S/N)

Interfaccia di chiamata

Definita in utilcogg77.cpy:

PROCEDURE DIVISION USING stringhe util-cogg77
Campo Tipo Descrizione
cogg77-caller X(08) Programma chiamante
cogg77-called X(08) Deve essere "COGG77" per attivare la modalita' chiamata
cogg77-merce X(09) Codice articolo da assemblare
cogg77-qta 9(06) Quantita' da produrre
cogg77-cliente 9(05) Codice cliente
cogg77-cor-chia1 X(16) Chiave consegna (mag+anno+tipo+numero+riga)
cogg77-modo-blue-seals X(01) "S" per modalita' Blue Seals
cogg77-esito X(01) Output: S=produzione, N=non effettuata, A=accantonamento, C=cancellazione BDP

Storico modifiche

Data Descrizione
2026/0501 Switch w-flusso-modula-ant per nuovo flusso prelievo Modula a lista anticipata (attivo solo per operatore 777 in test). Aggiunto a4-verifica-residuo-merce per fermare il loop BDP quando il fabbisogno e' coperto. Status "E" aggiunto in polling rientro. Skip righe placeholder (mdr-fl-fonte = "P") in elaborazione rientro. s26-fl-modula e chiamata a e4-invia-lista-modula ora condizionati da w-flusso-modula-ant: nel flusso anticipato COGS26 non popola la lista D53 e l'invio post-scarico viene saltato. Avviso di conferma alla cancellazione di un BDP collegato a lista Modula gia' evasa. Check consolidamento S-F8: segnala se esistono BDP con qta evasa Modula maggiore della qta consolidata, per evitare spedizioni con DDT incompleto

Correzioni flusso Modula e prelievo anticipato (marzo 2026)

  1. Correzione ordine operazioni BDP: la cancellazione del BDP (COGSA0 CANCELLA) e' stata spostata dopo la creazione del residuo per BDP da magazzino logistico con uso parziale. In precedenza la cancellazione avveniva prima, causando potenziali inconsistenze sul BDP residuo.

  2. Filtro BDP vuoti: aggiunto controllo tm-c-bdp (e-k) <> " " nella condizione di scansione BDP in e-aggiorna, per saltare le righe griglia senza BDP assegnato.

  3. Disabilitazione invio lista post-scarico: il paragrafo e4-invia-lista-modula ora esce immediatamente (EXIT PARAGRAPH) perche' nel flusso con prelievo anticipato la lista Modula e' gia' stata inviata nella fase m1-*. La chiamata a e4-invia-lista-modula in e4-crea-doc-mag e' stata commentata.

  4. Flag s26-fl-modula: in e2-crea-commessa e in e4-crea-doc-mag, il flag s26-fl-modula viene impostato a "N" prima della chiamata a COGS26 per impedire il reinvio della lista a Modula (gia' gestito dal flusso m1-*).

  5. Cancellazione BDP/raccordo in uscita: al termine dell'aggiornamento, dopo e-stampa-packing, se il magazzino logistico e' configurato, il programma cerca e cancella il BDP Modula residuo (m1-chiudi-bdp-modula) e il raccordo COGGENER (m1-cancella-raccordo). Questo garantisce la pulizia anche in caso di interruzione.

Integrazione Modula (marzo 2026)

Aggiunta integrazione con magazzino automatico Modula per il prelievo dei componenti durante l'assemblaggio. La modifica comprende circa 400 righe nuove (paragrafi m1-*) e le seguenti modifiche strutturali:

  • Working storage: aggiunte variabili m1-dati per il flusso Modula, campo tc-fl-modula nella tabella componenti, copybook costanti-modula.cpy
  • Flusso principale (a-elabora): inserita chiamata a m1-verifica-lista-modula dopo la ricerca accantonamenti su magazzino logistico
  • Distinta base (b-cerca-componenti): propagazione del flag mer-modula da COGMERCI a tc-fl-modula, e da tc-fl-modula a tm-c-fl-modula nella griglia
  • Chiusura (e-aggiorna): aggiunta cancellazione raccordo Modula in uscita
  • Nuove COPY: cogmdtes.k02 (chiave secondaria per lista Modula per documento), cogmerlt.k02 (chiave secondaria per lotto+merce+mag)
  • Nuovi paragrafi: m1-verifica-lista-modula, m1-cerca-lista-da-bdp, m1-crea-bdp-modula, m1-invia-lista-modula, m1-polling-rientro, m1-elabora-rientro, m1-chiudi-bdp-modula, m1-scrivi-raccordo, m1-cancella-raccordo

Switch flusso Modula anticipata (aprile 2026)

Introdotto un flag w-flusso-modula-ant che abilita un flusso alternativo di prelievo Modula "a lista anticipata": la lista viene inviata prima dell'assemblaggio, anziche' dopo.

  • Flag di switch: w-flusso-modula-ant ("S" = anticipata attiva, "N" = legacy). Attualmente il default e' "N", attivabile dall'operatore 777. Il valore si cambia modificando un singolo VALUE nel sorgente.
  • Impatto su COGS26: quando il flusso anticipato e' attivo, COGS26 non popola la lista d53 perche' la lista e' gia' stata inviata in anticipo.
  • Controllo residuo merce (a4-verifica-residuo-merce): nuovo paragrafo che interrompe la ricerca BDP quando il fabbisogno totale per una merce e' stato completamente coperto, evitando la sovra-selezione.
  • Nuove variabili: a4-fl-residuo, a4-qta-fabbisogno, a4-qta-usata-totale per il tracciamento dei residui.
  • Righe placeholder: il programma salta le righe con fonte "P" (placeholder) durante la scansione dei risultati della lista.
  • Punti di switch nel codice controllati da w-flusso-modula-ant:
    • a-elabora: attivazione del flusso m1-* (solo se "S")
    • e4-crea-doc: s26-fl-modula condizionato (se "S", COGS26 NON popola la lista d53)
    • e4-invia-lista-modula: skip se nuovo flusso attivo ("S")
  • Attivazione: il valore viene impostato a "S" solo per operatore 777 (testing). Il default e' "N".