Vai al contenuto

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-esitoY se 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.