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).
- 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, impostafl-called = "S"e i parametri di ingresso. - 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). - a-fine-dati: controlli finali (
x-controlla-dati) e conferma (acc-conf); poi passa al caricamento della griglia. - 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). - 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 internatm-cm. - Dati aggiuntivi (peso, fino a 5 fornitori/codici alternativi) da COGGMFAG (
gma-rec, chiavegma-cf+gma-cmf). - Marcatura di appartenenza al blocco delimitato (
tm-blk = "B") in base ai delimitatoriw-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 inc1-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 TOe usaPERFORM ... THRUsui 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") forzamer-lotti = "S"sulle merci collegate (modifica 28/08/23).