Vai al contenuto

COGM03 — Gestione Archivio Listino Generale Fornitori

Intestazione

Campo Valore
Sorgente cbl/cogm03.cbl
Program-ID cogm03
Tipo Programma interattivo GUI con griglia; puo' funzionare anche come subroutine richiamata (m03-in-call = "COGM03-CALLED")
Posizione menu Magazzino > Archivi & Tabelle > Merci Fornitori > Listino generale
Posizione menu Magazzino > Archivi & Tabelle > Listini Fornitori > Gestione Listino Fornitori

Scopo

COGM03 gestisce l'archivio listino generale fornitori (COGGENMF): l'elenco di tutti gli articoli quotati dai fornitori, indipendentemente dal fatto che siano gia' anagrafati come merci interne. La maschera presenta l'elenco in una griglia paginata, filtrabile per fornitore e ordinabile per codice, descrizione o marchio.

Oltre alla consultazione, il programma consente di:

  • Collegare (raccordare) una riga di listino generale alla base dati interna, creando al volo la merce (COGMERCI) e la merce fornitore (COGMERFO/COGLISFO) se non esistono ancora. E' questo il senso della colonna "Collegato" e del pulsante F3.
  • Delimitare un blocco di righe contigue (per codice/descrizione/marchio) e operare in massa sul blocco: aggiungere tutte le merci del blocco all'anagrafica (S-F6) o cancellare l'intero blocco dal listino generale (F4).
  • Cancellare l'intero listino generale di un fornitore (S-F7).
  • Essere richiamato da altri programmi per selezionare/ritornare una riga di listino (uso come subroutine, vedi sotto).

L'abilitazione alla visualizzazione dei prezzi dipende dalla personalizzazione w-abi-val-acq (i prezzi lordo/netto/moltiplicatore sono riempiti solo se l'utente e' abilitato ai valori d'acquisto).


Modalita' di chiamata come subroutine

Quando il linkage m03-in-call vale "COGM03-CALLED" il programma opera in modalita' richiamata (fl-called = "S"): salta la maschera di dialogo con il fornitore, si posiziona subito sui dati e, alla pressione di INVIO su una riga, restituisce la selezione al chiamante.

I campi di interscambio sono in utilm03.cpy (util-m03):

Campo Direzione Significato
m03-caller in Programma chiamante (es. COGU99N)
m03-in-call in "COGM03-CALLED" per la modalita' richiamata
m03-in-cf-ric in Fornitore su cui filtrare la ricerca
m03-in-cf-ins in Fornitore da usare in fase di inserimento merce/merce fornitore
m03-in-cm in Merce interna suggerita (usata in creazione COGS31)
m03-in-cmf in Codice merce fornitore su cui filtrare
m03-esito out "S" se l'operatore ha selezionato/collegato una riga
m03-ou-cmf out Codice merce fornitore selezionato
m03-o-cm out Merce interna collegata
m03-o-cf out Fornitore della riga selezionata

Se il chiamante e' COGU99N (PBUG-2062, 26/07/24) la scansione viene interrotta quando il codice merce fornitore letto non coincide piu' con m03-in-cmf.


Struttura e flusso

Il programma e' organizzato a paragrafi con salti GO TO e usa una tabella in working storage (tab-maschera / tm-tab, fino a k-max-ele-tab = 900 righe) come buffer della pagina corrente della griglia. La griglia e' amministrata dalla subroutine GRIDADMN (paginazione con utilpggr.cpy / fscrol2.cpy).

  1. apri: inizializzazione programma, controllo abilitazione (ctr-abil), lettura azienda (rd-azi), apertura file, definizione tasti funzione, caricamento lingua, lettura configurazione (x99-configurazione), caricamento bitmap e creazione pulsanti custom "Agg. Gruppo (S-F6)" e "Cancella Listino (S-F7)", preparazione della griglia (z-prepara-tm-grid). Se richiamato, imposta fl-called = "S" e i parametri di ingresso.
  2. a4 / a-tm-for: svuotamento griglia e dialogo per il codice fornitore (tm-for), gestito tramite COGS65W (z-s65-tm-for, con F8/F9/status-bar). L'ordinamento (tm-ord) e' gestito con COGS60 (z-s60-tm-ord).
  3. a-fine-dati: controlli finali (x-controlla-dati) e conferma (acc-conf); poi passa al caricamento della griglia.
  4. carica-tab / a-grid: caricamento della pagina di listino generale dal file COGGENMF e ciclo di accept sulla griglia (z-99-accept-paged-grid), con gestione della paginazione avanti/indietro (pg-after-pg-dwn / pg-after-pg-up).
  5. fine / z-chiudi: chiusura file, ripristino user-area, chiusura finestra, cancel "COGL61", goback.

Scelta della chiave di lettura COGGENMF

L'ordinamento richiesto in tm-ord determina la chiave usata dai verbi st-coggenmf-* / rd*-coggenmf (paragrafi rn-start-not-less, rn-start, rp-start-less, rp-start-equal):

tm-ord Ordinamento Con fornitore (tm-for ≠ 0) Senza fornitore
M Marchio chia5 chia5
C Codice merce fornitore chiave primaria (chia1) chia2
D (altro) Descrizione merce chia3 chia4

Riempimento riga tabella (rd1-ft-go)

Per ogni record COGGENMF letto viene popolata una riga tm-ele. Vengono risolte informazioni accessorie:

  • Ragione sociale fornitore da COGGEANA (ana-tipo = k-ana-tipo-for).
  • Collegamento alla base dati interna: lettura COGMERFO per chiave 4 (mfr-cod-for + mfr-for) e in fallback per chiave 3; se trovato la riga risulta "Collegato" (tm-esiste = "*") e viene valorizzata la merce interna tm-cm.
  • Dati aggiuntivi (peso, fino a 5 fornitori/codici alternativi) da COGGMFAG (gma-rec, chiave gma-cf + gma-cmf).
  • Marcatura di appartenenza al blocco delimitato (tm-blk = "B") in base ai delimitatori w-delim-start / w-delim-end.

Include inoltre un controllo sul codice EAN (correzione importazione di massa) che, se il record ha un EAN, verifica la coerenza con la merce collegata in COGMERCI e, previa conferma, aggiorna mer-ean.


Operazioni principali

Collegamento riga singola (F3 — c-aggiorna)

Collega la riga corrente alla base dati. Se la merce/fornitore esiste gia' in COGMERFO avvisa e non fa nulla. Il comportamento dipende dalla configurazione tm-cfg-modo-ins-merce (chiave COGM03-MODO-INS-MERCE):

  • Modo A (default): eventuale creazione merce (c-agg-mer → WIN047 per riconoscere una merce probabile, altrimenti COGS31 in c1-new-mer) e creazione merce fornitore/listino (c2-new-mfr → COGS32).
  • Modo B: delega l'intero aggiornamento a COGU99 (aggiornamento merce), quindi restituisce l'esito al chiamante.

Se l'azienda ha gestione lotti "Completa" (az-lotti = "C"), la merce collegata viene marcata gestita a lotti (mer-lotti = "S" su COGMERCI).

Delimitazione blocco (F1 — d-delimita)

Imposta/azzera i delimitatori di inizio/fine blocco (w-delim-start / w-delim-end) sulla riga corrente, con normalizzazione dell'ordine (scambio start/end se invertiti) a seconda dell'ordinamento attivo (marchio/codice/descrizione).

Aggiungi gruppo (S-F6 — b1-agg-gruppo)

Per ogni articolo del blocco delimitato non ancora collegato, crea la merce (COGS31, con parametri di gruppo/UM/marchio/sconto) e la merce fornitore (COGS32). Al termine propone l'aggiornamento prezzi richiamando COGM04 (m04-called = "COGM04-CALLED"). Per la personalizzazione "Il Ricambio" (az-personal = k-personal-il-ricambio) forza l'UM digitata in COGS31.

Cancella blocco (F4 — e-cancella)

Cancella dal listino generale (COGGENMF) le righe del blocco delimitato. Su conferma puo' cancellare anche gli articoli gia' raccordati (COGMERFO, con relative cancellazioni di riferimenti "fornitore preferenziale"/"fornitore fabbricante" in COGCNDCF — b2-del-prf / b2-del-fab) e delle stringhe di ricerca (COGS38/COGS39/COGS40/COGS41/COGS42). Una merce gia' collegata a codice merce interno non viene cancellata a meno di conferma esplicita.

Cancella listino generale fornitore (S-F7 — x7-cancella-listino)

Introdotta il 25/04/23. Previa conferma tramite DIALOGS, scandisce e cancella tutti i record COGGENMF del fornitore selezionato (del-coggenmf), mostrando un contatore progressivo (tm-lis-canc). Dal 25/05/26 le cancellazioni delle stringhe di ricerca (COGS40/41/42) in questo ramo sono state disattivate per evitare problemi su elaborazioni con molti record.

Ricerca (F6 — ricerca)

Richiama COGM03R passando ordinamento, lunghezza chiave e fornitore; il valore restituito (cogm03r-o-out) viene usato per riposizionare la lettura COGGENMF.

Altri comandi griglia

  • S-F4: amministrazione griglia (GRIDADMN, Gestione listino generale).
  • S-F5: esportazione della griglia paginata in Excel (z-esporta-paged-grid).
  • Ctrl-C: copia della cella corrente negli appunti (ramo ISC via JAVATOAP oppure entry-field nascosto).
  • INVIO (solo modalita' richiamata, w-visible-invio-seleziona = 1): seleziona la riga e la restituisce al chiamante.

File e tabelle principali

File logico Record Uso
COGGENMF gmf-rec Listino generale fornitori (archivio principale). Chiave primaria gmf-chia1 = gmf-cf (fornitore) + gmf-cmf (codice merce fornitore); chiavi secondarie 2-5 per ordinamenti alternativi (codice, descrizione, marchio). Campi rilevanti: gmf-marchio, gmf-ean, gmf-dm, gmf-pre-lor, gmf-pre-net, gmf-molt-pre, gmf-currency, gmf-cod-div, gmf-um, gmf-gru, gmf-fam-stat, gmf-sco, gmf-qta-*, gmf-cat
COGMERFO mfr-rec Merci fornitore (raccordo listino ↔ merce interna). Letto per chiave 4 (mfr-cod-for + mfr-for) e chiave 3; campi mfr-merce, mfr-cod-for, mfr-for
COGMERCI mer-rec Anagrafica merci interne. Usato per mer-chia, mer-ean, mer-lotti (marcatura gestione lotti)
COGGMFAG gma-rec Dati aggiuntivi listino generale (chiave gma-cf + gma-cmf): peso (gma-peso), data/ora aggiornamento (gma-da-data / gma-da-time), fino a 5 fornitori/codici alternativi (gma-tf-for / gma-tf-cmf)
COGGEANA ana-rec Anagrafica generale; usata per la ragione sociale del fornitore (ana-tipo = k-ana-tipo-for, ana-cod, ana-nome)
COGCNDCF cnd-rec Condizioni cliente/fornitore; cancellazione riferimenti "FP" (fornitore preferenziale) e "FF" (fornitore fabbricante)
FEURTAB Tabella file Eurosystem

Copybook principali

Screen Designer

Copybook Contenuto
cogm03.select SELECT dei file
cogm03.fd FD dei file
cogm03.wrk Working storage maschera
cogm03-01.scr Maschera principale con griglia
cogm03.decla Declaratives
cogm03.prc Procedure (verbi I/O generati)

Strutture dati

Copybook Contenuto
feurtab.fd / cogfiles.cpy SELECT/FD di FEURTAB
coggenmf.cpy Record listino generale fornitori
coggenmf.k02 / .k03 / .k04 / .k05 Verbi I/O sulle chiavi secondarie (aggiunti manualmente in coda alla procedure division)
cogmerci.k03 Verbi I/O COGMERCI chiave 3
cogmerfo.k03 / .k04 Verbi I/O COGMERFO chiavi 3 e 4
cogazien.cpy Dati azienda
k-personal.cpy Costanti personalizzazione
wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy Working storage comuni
wcont.cpy / wcont1.cpy Struttura stringhe in linkage
utilm03.cpy Interfaccia richiamo COGM03 (util-m03, in linkage)

Utility / interfacce subroutine

Copybook Contenuto
utilncnf.cpy Struttura parametri RNEWCONF
utilgdad.cpy / wgrid.cpy Interfaccia GRIDADMN e gestione griglia
utilpggr.cpy / fscrol2.cpy Paginazione griglia
utilcogm03r.cpy Interfaccia COGM03R (ricerca)
utils31.cpy / utils32.cpy Interfaccia COGS31 (merce) / COGS32 (merce fornitore)
utils38.cpy / utils39.cpy / utils40.cpy / utils41.cpy / utils42.cpy Interfacce COGS38-COGS42 (stringhe di ricerca)
utils52.cpy Interfaccia COGS52 (calendario)
utils65.cpy Interfaccia COGS65W (accept fornitore)
utils68.cpy Interfaccia COGS68
utilu10.cpy Interfaccia COGU10W (edit importi)
utilw47.cpy Interfaccia WIN047 (ricerca merce probabile)
utilu99.cpy Interfaccia COGU99 (aggiornamento merce, modo B)
utildlg.cpy Interfaccia DIALOGS
utilm04.cpy Interfaccia COGM04 (aggiornamento prezzi, in linkage)

Sottoprogrammi chiamati (CALL)

Programma Scopo
GRIDADMN Amministrazione/paginazione della griglia
COGS65W Accept del codice fornitore (con F8/F9)
COGS31 Creazione/aggiornamento merce interna (COGMERCI)
COGS32 Creazione/aggiornamento merce fornitore (COGMERFO/COGLISFO)
WIN047 Ricerca di una merce probabile da collegare
COGU99 Aggiornamento merce in modalita' inserimento B
COGM03R Ricerca su listino generale (F6)
COGM04 Aggiornamento prezzi a valle dell'aggiunta gruppo
COGS38 / COGS39 / COGS40 / COGS41 / COGS42 Gestione (cancellazione) stringhe di ricerca associate a merce/fornitore
COGU10W Formattazione/edit degli importi di listino
DIALOGS Dialogo di conferma per la cancellazione del listino generale
RNEWCONF Lettura configurazione COGM03-MODO-INS-MERCE
JAVATOAP Copia negli appunti (ramo ISC, chiamata client)

Il programma esegue inoltre cancel "COGL61" in chiusura (COGL61 puo' essere caricato indirettamente dalle subroutine di calcolo prezzo).


Configurazione (RNEWCONF)

Letta in x99-configurazione (pacchetto "C"):

# Gruppo Chiave Campo interno Descrizione
01 LISTGENF COGM03-MODO-INS-MERCE tm-cfg-modo-ins-merce Modo di inserimento merce al collegamento riga: A (creazione via COGS31/COGS32, default) o B (delega a COGU99)

Se la chiave e' vuota viene assunto il valore A.


Note

  • Il programma segue lo stile legacy a GO TO e usa PERFORM ... THRU sui paragrafi di elaborazione blocco (carica-tab thru ex-carica-tab, d-delimita thru ex-d, e-cancella thru ex-e, b1-agg-gruppo thru ex-b1, c-aggiorna thru ex-c-aggiorna, x7-cancella-listino thru ex-x7): eventuali interventi vanno fatti nel rispetto di questi confini.
  • Le chiavi secondarie di COGGENMF (.k02-.k05) e le chiavi 3/4 di COGMERFO, chiave 3 di COGMERCI, sono incluse manualmente in coda alla procedure division: Screens genera automaticamente solo la chiave primaria.
  • La colonna prezzi e' popolata solo se l'utente e' abilitato ai valori d'acquisto (w-abi-val-acq = "S").
  • La gestione lotti "Completa" (az-lotti = "C") forza mer-lotti = "S" sulle merci collegate (modifica 28/08/23).