Vai al contenuto

COGV14W - Worker gestione bolle di entrata

Campo Valore
Sorgente cbl/cogv14w.cbl
Tipo Worker
Chiamato da COGV14 (programma principale bolle entrata)
Righe sorgente ~27.000

Descrizione

Worker principale per l'inserimento e la modifica delle bolle di entrata magazzino (delivery notes). Gestisce l'interfaccia grafica a tab (testata + griglia dettaglio righe) per la compilazione del documento, inclusa la validazione dei dati, il calcolo dei prezzi, la gestione lotti, matricole e l'integrazione con il sistema Modula (WMS).

Implementa una funzione di post-aggiornamento (TASK-3648): quando una bolla e' gia' "accertata" (confermata), il programma non permette modifiche al documento ma abilita un sottogruppo di tasti funzione per operazioni successive (stampa, etichette, listino, ecc.).

File e tabelle

File/Tabella Tipo Descrizione
FEURTAB (cogfiles) Input Parametri generali azienda
Tabelle da cogv14w.select I-O Tabelle gestionale (anagrafica, merci, testate bolle, ecc.)
TRAN-D97 I-O File transitorio per gestione documenti
TRAN-S47 I-O File transitorio per elaborazioni
TRAN-V32 External File transitorio condiviso tra moduli
TRAN-U30 I-O File transitorio per gestione U30
TRAN-V14W I-O File transitorio di comunicazione con COGV15W
TRSMATRI I-O File transitorio matricole
TRAN-S26 I-O File transitorio per elaborazioni
COGTRANS I-O File transitorio indicizzato con chiave primaria e secondaria (ordinamento)
COGTRANS2 I-O File transitorio secondario
COGTRANS3 I-O File transitorio terziario
COGTRANS4 I-O File transitorio quaternario (con chiave alternativa entrusc)
COGGENMF I-O Listino generale fornitori (gmf-), aggiornato dalla gestione merce fornitore se attiva la config gestione-da-cmf
INPFIL Input File sequenziale per lettura EAN/quantita'
INPFIL2 Input File sequenziale per dati generici (600 byte)
FILASCII I-O File ASCII per import/export

Copybook principali

Copybook Descrizione
cogv14w.wrk / .select / .fd / .tm / .scr Screen Designer: working, select, fd, tab-maschera, screen
cogv14w.imppredf-wrk Working storage per import predefinito
k-u10.cpy Costanti per conversione divisa
k-personal.cpy Costanti personalizzazioni aziendali
costanti-assist.cpy Costanti per assistenza tecnica
costanti-modula.cpy Costanti per integrazione Modula WMS
costanti-cogevlog.cpy Costanti per log eventi
l-copiaf.cpy Linkage per copia file
k-modelli-ie-int-dm.cpy Costanti per interscambio documenti
utilcogpa9.cpy Interfaccia verso COGPA9 (dati interscambio)
utils40.cpy / utils41.cpy / utils42.cpy Interfacce verso COGS40/COGS41/COGS42 (stringhe di ricerca listino generale fornitori)
coggenmf.cpy Record listino generale fornitori (COGGENMF, gmf-)

Chiamate a sottoprogrammi

Programma Scopo
COGY68 Gestione operazioni su griglia
COGU07 Utilita' generiche
COGE22 Gestione prezzi/sconti
COGE18 Gestione varie
COGD02 Gestione dati
COGD92 Gestione documenti
COGF22 Gestione (obsoleto, solo per personal specifico)
COGV37 Gestione bolle correlate
COGV94 Gestione visualizzazione
COGF36 Gestione
COGF64 Gestione
COGH20 Gestione
COGP20 Gestione stampe
COGS38 Creazione/aggiornamento COGRACMF (ricerca merce fornitore)
COGS39 Gestione COGSTCMF (stringa ricerca codice merce fornitore)
COGS40 Gestione COGRACLF (ricerca merce listino generale fornitori)
COGS41 Gestione COGSTLFM (stringa ricerca codice merce, listino generale fornitori)
COGS42 Gestione COGSTLFD (stringa ricerca descrizione, listino generale fornitori)
COGD42 Stampa bolla (post-aggiornamento F9)
COGM44 Anomalie di fornitura (post-aggiornamento F1)
COGP20 Gestione stampe / stampa etichette (post-aggiornamento F7)
COGP53 Etichette lotti — personal Lori/Modena funghi (post-aggiornamento F8)
COGP78 Etichette lotti standard (post-aggiornamento F8)
COGU65 Stampa etichette supporti (post-aggiornamento S-F9)
COGSA9 Gestione SA9
COGUA8 Gestione UA8
COGA09 Gestione A09
COGSW1 Gestione integrazione Modula
WMSW01 Integrazione WMS Modula
GRP002 Gestione gruppi
GRIDADMN Amministrazione griglia
DIALOGS Gestione dialoghi utente

Logica di elaborazione

Flusso principale

  1. Inizializzazione: apertura file, lettura configurazioni, costruzione griglia dettaglio con colonne personalizzabili per azienda.
  2. Accept testata: raccolta dati testata bolla (magazzino, anno, tipo, numero, fornitore, causale, condizioni di pagamento).
  3. Controllo accertamento: se la bolla e' gia' accertata (tes-fl-acc = "A"), non permette la modifica ma abilita i tasti funzione di post-aggiornamento (vedi sotto).
  4. Griglia righe: gestione inserimento/modifica righe dettaglio con articolo, quantita', prezzo, sconti, lotti, matricole.
  5. Aggiornamento: salvataggio dati su file transitorio TRAN-V14W per il ritorno al programma chiamante.

Post-aggiornamento su bolle accertate (TASK-3648)

Quando la bolla e' gia' accertata, il dialogo di post-aggiornamento e' implementato dal paragrafo tf-post-aggio (chiama DIALOGS) e viene raggiunto da due punti:

  • durante l'apertura/controllo accertamento (tes-fl-acc = "A");
  • durante la variazione del documento (fl-vario = "S" con w-bolla-accertata = "A"): in questo caso, prima si mostrava solo "Impossibile modificarla" e si tornava alla pagina di testata; ora, oltre all'avviso a tre righe, il flusso invoca tf-post-aggio e poi termina (go to fine), rendendo disponibili le operazioni accessorie anche su questo percorso.

Per il personal k-personal-sgarbi il comportamento resta invariato (nessun post-aggiornamento).

Tasti funzione abilitati nel dialogo:

Tasto Operazione Sottoprogramma
ESC Prosegui (chiudi dialogo)
F2 Aggiornamento listino vendita COGV37
F7 Stampa etichette COGP20
F9 Stampa bolla COGD42
F1 Anomalie di fornitura COGM44
F8 Etichette lotti (se gestione lotti attiva) COGP53 (personal Lori/Modena funghi) / COGP78
S-F7 Protocollo archiviazione ottica (se az-arc-ott = "S") COGH20
S-F9 Stampa etichette supporti (se presenti supporti) COGU65
F10 Esegue l'archiviazione ottica (se attiva, escluso personal Lori) a1-call-ott-bis

Alcuni tasti sono disabilitati nel post-aggiornamento: inserimento/cancellazione cauzioni (F8 con cauzioni), manutenzione matricole (F5), completamento lotti (F6), collegamento a chiamata (S-F4).

Nomi file temporanei univoci per processo

Il nome del file transitorio TRAN-V14W include il PID del processo (ext-pid) per evitare conflitti tra sessioni concorrenti:

#COGV15W_{ext-pid}.{wo-oper}

La stessa convenzione e' usata per COGTRANS e TRAN-S47.

Manutenzione codice merce fornitore (COGMERFO) e stringhe di ricerca

Alla conferma delle righe, il paragrafo aggiorna-merce-for allinea la tabella COGMERFO (mfr-, codice merce del fornitore) e le relative stringhe di ricerca COGRACMF/COGSTCMF, gestite dai sottoprogrammi COGS38 e COGS39:

  • COGS38 (s38-ope): crea/aggiorna COGRACMF per la coppia merce/fornitore.
  • COGS39 (s39-ope): gestisce COGSTCMF (stringa di ricerca per codice merce fornitore); accetta il codice da inserire (s39-cmf-i) e quello da cancellare (s39-cmf-c).

Casistica (rif. 130726, TASK-1395):

Situazione COGMERFO Operazione Chiamate
Record inserito ex novo (non esisteva) s38-ope = "I", s39-ope = "I" COGS38 (I) + COGS39 (I)
Record gia' esistente con codice fornitore modificato s39-ope = "V", vecchio codice in s39-cmf-c COGS39 (V) solo se mfr-cod-for e' cambiato rispetto a s39-cmf-c

In precedenza le stringhe di ricerca venivano ricostruite solo all'inserimento del record COGMERFO. Ora, quando il codice merce fornitore di un record esistente viene modificato, COGS39 viene richiamato in variazione ("V") per rimuovere la vecchia stringa e inserire la nuova, mantenendo coerente l'indice di ricerca per codice fornitore. La stessa logica e' presente nel programma ordini fornitori COGO55W (paragrafo agg-prezzi). La modifica non ha impatto sull'interfaccia utente.

Allineamento del listino generale fornitori (COGGENMF)

Se e' attiva la configurazione gestione-da-cmf (gruppo LISTGENF, tm-cfg-gestione-da-cmf = "S", slot 60 della tabella RNEWCONF), il paragrafo aggiorna-merce-for propaga la merce del fornitore anche sul listino generale fornitori COGGENMF (gmf-), tramite il nuovo paragrafo aggiorna-coggenmf. Lo scopo (rif. config) e' permettere di gestire dalla scheda merce fornitore, oltre al prezzo netto di acquisto, anche il prezzo lordo e lo sconto, che restano memorizzati sul listino generale.

aggiorna-coggenmf lavora sulla chiave gmf-cf/gmf-cmf (fornitore + codice merce fornitore):

Caso Azione su COGGENMF Ricostruzione stringhe di ricerca
Record esistente Aggiorna divisa (gmf-currency), descrizione (gmf-dm) e moltiplicatore prezzo (gmf-molt-pre = 1) con rwr-coggenmf Solo se la descrizione e' cambiata: COGS42 in cancellazione (vecchia w-dm) + inserimento (nuova gmf-dm)
Record nuovo Crea la voce con divisa, descrizione, moltiplicatore e prezzi/sconto azzerati (wr-coggenmf) COGS40 (I), COGS41 (I), COGS42 (I) come in COGM02

Le stringhe di ricerca del listino generale sono gestite dai sottoprogrammi COGS40 (COGRACLF, ricerca merce), COGS41 (COGSTLFM, ricerca per codice merce) e COGS42 (COGSTLFD, ricerca per descrizione, con inserimento/cancellazione della descrizione). La logica di ricostruzione replica quella dell'anagrafica listino generale (COGM02). La modifica non ha impatto sull'interfaccia utente: e' un allineamento dati automatico, subordinato alla configurazione.

Interscambio documenti

Il programma supporta l'import/export di righe dettaglio tramite il modulo COGPA9 (interscambio documenti da file Excel). I campi importabili sono: codice merce (maggiore/minore), quantita', prezzo lordo, sconti 1 e 2, prezzo netto, importo, codice merce fornitore.

Note

  • Il sorgente e' molto esteso (~27.000 righe) e gestisce una quantita' significativa di casistiche legate alle personalizzazioni aziendali (az-personal).
  • Il file TRAN-V32 e' dichiarato EXTERNAL, quindi condiviso in memoria tra programmi co-residenti.
  • La griglia dettaglio ha colonne personalizzabili: alcune visibili/nascoste in base alla configurazione aziendale (costi di trasporto, prezzi in divisa, codici cliente, ecc.).

Storico modifiche

2026-07-29 — Allineamento listino generale fornitori e post-aggiornamento su bolle in variazione

Modifica di logica di business con alcune correzioni cosmetiche.

  • Allineamento COGGENMF da scheda merce fornitore (rif. 130726/280726): introdotta la configurazione gestione-da-cmf (gruppo LISTGENF, slot 60). Se attiva, aggiorna-merce-for propaga la merce del fornitore anche sul listino generale fornitori (COGGENMF) tramite il nuovo paragrafo aggiorna-coggenmf, ricostruendo le stringhe di ricerca via i nuovi sottoprogrammi COGS40/COGS41/COGS42 (come in COGM02). Nuovi copybook: utils40.cpy, utils41.cpy, utils42.cpy, coggenmf.cpy. Aggiunta anche la gestione del caso "V" (variazione codice merce fornitore) per COGS39, con nuovo flag w-fl-mod-cogmerfo.
  • Post-aggiornamento su bolle accertate in variazione (rif. 090426, TASK-3648): quando si tenta di variare una bolla gia' accertata, il flusso non si limita piu' a bloccare la modifica ma richiama il nuovo paragrafo tf-post-aggio (dialogo con i tasti funzione accessori) e poi termina. Il paragrafo tf-post-aggio e' interamente nuovo e centralizza l'implementazione del dialogo di post-aggiornamento (F1/F2/F7/F8/F9/F10/S-F7/S-F9/ESC).
  • Dimensionamento tabella righe (rif. 270426): confermato l'aumento a 900 elementi di k-max-ele-grid-det e dei relativi loop (gia' descritto in Casistica problemi noti).
  • Nome temporaneo TRAN-V14W (rif. 220426): aggiunto il PID (ext-pid) al nome del file #COGV15W per evitare conflitti tra sessioni (gia' descritto in Nomi file temporanei univoci per processo).
  • Correzioni cosmetiche: refuso "Esequo" → "Eseguo" nel testo del tasto F10; sistemazione della struttura end-if attorno ai tasti S-F7/S-F9 nella costruzione del dialogo.

Casistica problemi noti

Tabella righe piena su carichi con molte righe

  • Sintomo: Entrando in gestione di un carico con molte righe, il programma mostrava "Tabella righe piena" seguito da errori a catena e uscita forzata.
  • Causa: La tabella interna per le righe del carico era dimensionata a 200 elementi, insufficiente per documenti con piu' righe.
  • Correzione: Aumentata la dimensione della tabella da 200 a 900 elementi.
  • Riferimento: dettaglioClickUp 869d2fctj