COGS68W — Ricerca generalizzata merci (nuova versione)¶
| Campo | Valore |
|---|---|
| Sorgente | cbl/cogs68w.cbl |
| Program-ID | cogs68w |
| Tipo | Subroutine (chiamata using stringhe util-s68) |
| Posizione menu | Nessuna (sottoprogramma di servizio, richiamato dai programmi di gestione) |
Scopo¶
COGS68W e' la subroutine di ricerca generalizzata delle merci (nuova versione). Riceve dal programma chiamante il codice/descrizione della funzione e la lunghezza della parte visibile, ed esegue le ricerche articolo secondo la sequenza e le posizioni definite nella configurazione della funzione (per operatore o generale). Se la configurazione specifica per il programma chiamante non esiste, viene creata automaticamente in base alla lunghezza di default e alla configurazione di default; e' poi personalizzabile.
La funzione restituisce il codice merce interno, il codice fornitore + codice merce fornitore e il codice cliente + codice merce cliente, oltre alla descrizione visualizzata. Gestisce anche le operazioni di accept/display su griglia.
L'interfaccia e' l'area util-s68 (copybook utils68.cpy). Principali campi:
s68-fun,s68-fun-des— codice e descrizione del programma chiamante;s68-ope— operazione richiesta (Accept,Display,Titolo,Vuoto,String,T-String,V-String,Estrai-Dati,Estrai-Tutto,Attiva-tf-...);s68-cm,s68-dm,s68-um,s68-cmf,s68-cmc,s68-cma,s68-ean— campi di I/O dell'articolo (la funzione cerca i mancanti in base a quanto fornito e richiesto);s68-cf-tip,s68-cf— tipo e codice cliente/fornitore;s68-if-tip-mer— filtro Prestazioni o Merci (P = prestazioni/servizi, M = merci);s68-o-esito—Yse la ricerca prodotto e' andata a buon fine;s68-exception,s68-i-exit,s68-ctr-mer,s68-mag,s68-fl-gruppi, ecc.
Struttura / flusso¶
Il programma organizza la maschera di ricerca in base alla configurazione della funzione, esegue le
ricerche articolo secondo la sequenza configurata e, una volta individuato l'articolo, applica i
controlli generali sulla merce (e-controlli-generali-merce):
- coerenza con il filtro Prestazioni/Merci (
w-tip-mer): se il filtro chiede prestazioni (w-tip-mer = "P") ma l'articolo non e' un servizio (mer-classe not = "S"), oppure se chiede merci (w-tip-mer = "M") ma l'articolo e' un servizio (mer-classe = "S"), viene mostrato un messaggio di incongruenza e la ricerca viene rifiutata (w-s68-o-esito = "N"); - gestione delle merci cancellate (
mer-val = "C") in base alla configurazione; - eventuale sostituzione della merce tramite ricerca alternativa (WIN159).
Per la ricerca vera e propria puo' richiamare la finestra di ricerca alternativa WIN159
(operazione RIC-ALT), passando magazzino e filtri (w159-if-tip-mer, w159-if-listino,
w159-sel-multipla, ecc.).
File e tabelle principali¶
| File logico | Uso |
|---|---|
| COGTABEL | Configurazione della funzione di ricerca e tabelle di supporto |
COGMERCI (mer-*) |
Anagrafica merci (classe mer-classe, validita' mer-val, chiave mer-chia) |
| COGMERFO | Codici merce fornitore |
| COGRACMC | Raggruppamenti / codice merce avanzato |
| COGMERCL | Codici merce cliente |
I file erano in origine aperti in modalita' EXTERNAL (COGTABEL, COGMERCI, COGMERFO, COGRACMC, COGMERCL).
Sottoprogrammi chiamati¶
| Programma | Contesto | Scopo |
|---|---|---|
WIN159 |
Ricerca alternativa (RIC-ALT) |
Finestra di ricerca merci alternativa/multipla; restituisce l'eventuale merce sostitutiva (w159-o-cm) |
Copybook principali¶
| Copybook | Contenuto |
|---|---|
utils68.cpy |
Area di comunicazione util-s68 |
util-w159 (WIN159) |
Interfaccia della ricerca alternativa |
WCONT.CPY / WCONT1.CPY |
Delimitatori area linkage stringhe |
Storico modifiche¶
2026-04-13 — TASK-4557: nessun controllo filtro "Prestazioni o Merci" se si entra con codice merce impostato¶
Nel paragrafo e-controlli-generali-merce, i due controlli di coerenza tra il filtro
Prestazioni/Merci e la classe dell'articolo sono stati resi condizionali: se il programma
chiamante entra gia' con un codice merce impostato (w-s68-cm not = " 00000" oppure
w-s68-cma not = spaces), i controlli vengono saltati e la ricerca non viene rifiutata.
if w-tip-mer = "P" and mer-classe not = "S"
if w-s68-cm not = " 00000" or
w-s68-cma not = spaces
continue
else
... messaggio di incongruenza + w-s68-o-esito = "N" ...
end-if
end-if
(analogo per w-tip-mer = "M" e mer-classe = "S").
Effetto: quando la merce arriva gia' selezionata dal chiamante (non scelta interattivamente attraverso il filtro), non viene piu' emesso il messaggio "l'articolo non e' del tipo prestazioni/merci richiesto" ne' bloccata la selezione, evitando falsi impedimenti su articoli richiamati direttamente per codice.
Descrizione "completa" da COGRACMC anche con dag-sost = "A"¶
Nella valorizzazione della descrizione della merce, quando e' presente la descrizione del codice
merce avanzato (rcm-des di COGRACMC), essa viene assegnata a w-s68-dm; se inoltre sono
richiesti gli "altri dati" (w-s68-fl-altri-dati = "S"), rcm-des viene copiata anche nel campo
descrizione completa w-s68-dm-completa. Questa seconda copia, prima gestita solo per
tm-cfg-dag-sost = "N", viene ora eseguita anche per tm-cfg-dag-sost = "A":
if w-s68-fl-altri-dati = "S" and
(tm-cfg-dag-sost = "N" or
tm-cfg-dag-sost = "A")
move rcm-des to w-s68-dm-completa
end-if
Il flag di configurazione tm-cfg-dag-sost (descrizioni aggiuntive / sostituzione) governa la
composizione della descrizione completa: con "S"/"A" la descrizione completa e' costruita dalla
descrizione estesa (COGSAF / descrizioni aggiuntive), con "N" dalla sola descrizione
anagrafica. Con questa modifica, per il ramo del codice merce avanzato la modalita' "A" allinea il
comportamento a quello di "N", riportando anche in questo caso la descrizione rcm-des nel campo
w-s68-dm-completa.
Note¶
- Sottoprogramma di servizio: e' richiamato da numerosi programmi di gestione (inserimento documenti, movimenti, ricerche articolo) e non compare a menu.
- La configurazione della funzione e' per operatore e generale; se manca viene generata automaticamente dalla lunghezza visibile fornita e dalla configurazione di default.