COGO55W - Inserimento/Gestione Ordini Fornitori e Buoni di versamento (versione grafica)¶
Sorgente: cbl/cogo55w.cbl | Tipo: Programma interattivo a maschera (worker) | Program-ID: COGO55W
Scopo¶
Worker grafico per l'inserimento e la gestione degli ordini a fornitore e dei buoni di versamento. E' il programma operativo lanciato da COGO55 quando la configurazione ordini / versione-programmi-of vale "GRAFICA".
Gestisce testata ordine (magazzino, fornitore, causale, condizioni di pagamento, divisa), righe merce/prestazioni con prezzi e sconti, consegne programmate, e l'allineamento delle anagrafiche merce-fornitore alla conferma delle righe.
Posizione menu:
| Menu | Percorso |
|---|---|
| Ordini | Fornitori > Inserimento |
| Ordini | Buoni di versamento > Inserimento |
Vedi COGO55 per il lanciatore, la scelta versione grafica/carattere e il ramo "taglio lamiere".
File principali coinvolti (estratto)¶
| Tabella | Ruolo | Campi chiave |
|---|---|---|
COGTESOR (tor-*) |
Testata ordine fornitore | tor-clifor (fornitore), tor-chia |
COGRIGOR (ror-*) |
Righe ordine | ror-gru / ror-sot / ror-cod (chiave merce) |
COGMERFO (mfr-*) |
Codice merce del fornitore (collegamento merce ↔ fornitore) | mfr-gru/mfr-sot/mfr-cod, mfr-for, mfr-cod-for, mfr-divisa, mfr-desc |
COGGENMF (gmf-*) |
Listino generale fornitori | gmf-cf (fornitore) + gmf-cmf (codice merce fornitore), gmf-dm, gmf-currency, gmf-molt-pre, gmf-pre-lor, gmf-pre-net, gmf-sco |
COGDESOR (dor-*) |
Descrizioni aggiuntive righe ordine | — |
| TRAN-O55 | File transitorio per la generazione consegne | — |
Copybook principali¶
| Copybook | Descrizione |
|---|---|
| cogo55w.wrk / .select / .fd / .tm / .scr | Screen Designer: working, select, fd, tab-maschera, screen |
coggenmf.cpy (+ .k01) |
Record listino generale fornitori COGGENMF (gmf-rec) |
| cogmerfo.cpy | Record codice merce fornitore COGMERFO (mfr-rec) |
| utils38.cpy | Interfaccia COGS38 (indice ricerca COGRACMF su merce/fornitore) |
| utils39.cpy | Interfaccia COGS39 (stringa ricerca COGSTCMF su codice merce fornitore) |
| utils40.cpy | Interfaccia COGS40 (indice ricerca COGRACLF del listino generale) |
| utils41.cpy | Interfaccia COGS41 (stringa ricerca COGSTLFM del listino generale) |
| utils42.cpy | Interfaccia COGS42 (stringa ricerca COGSTLFD su descrizione merce del listino generale) |
| utilncnf.cpy | Interfaccia RNEWCONF (lettura configurazioni) |
Chiamate a sottoprogrammi (CALL)¶
| Programma | Scopo |
|---|---|
| RNEWCONF | Lettura configurazioni (blocco x99-confi) |
| COGO16F | Inserimento consegne programmate dell'ordine (giro TRAN-O55) |
| COGS38 | Creazione/aggiornamento indice di ricerca COGRACMF (merce/fornitore) |
| COGS39 | Gestione stringa di ricerca COGSTCMF (codice merce fornitore) — inserimento (I) o variazione (V) |
| COGS40 | Aggiornamento indice ricerca COGRACLF del listino generale fornitori (ope I) |
| COGS41 | Aggiornamento stringa ricerca COGSTLFM del listino generale fornitori (ope I) |
| COGS42 | Aggiornamento stringa ricerca COGSTLFD su descrizione merce del listino generale (ope I/C) |
Logica di elaborazione¶
Allineamento COGMERFO e stringhe di ricerca (paragrafo agg-prezzi)¶
Alla conferma delle righe, per ogni riga merce il programma aggiorna la tabella COGMERFO (codice merce del fornitore) e le relative stringhe di ricerca:
- Se
tm-cfg-listino-unico = "S"il paragrafo esce subito (nessun aggiornamento del c.m.f.). - Legge COGMERFO per la coppia merce/fornitore corrente (
mfr-gru/sot/cod+mfr-for): - Record non trovato → viene creato ex novo (
wr-cogmerfo), impostandos38-ope = "I"es39-ope = "I". - Record esistente → si memorizza in
s39-cmf-cil codice merce fornitore attuale e si impostas39-ope = "V"(variazione). - Se la merce e' in divisa estera (diversa da conto,
L,E) memorizzamfr-divisa; se la colonna c.m.f. e' visibile in griglia (gcn-r-mfr > 0) aggiornamfr-cod-forcol valore digitato. Riscrive il record (rwr-cogmerfo). - Ricostruzione stringhe di ricerca COGMERFO (TASK-1395):
- Ramo inserimento (
s38-ope = "I"): chiama COGS38 (I) e COGS39 (I) per costruire gli indici della coppia merce/fornitore. - Ramo variazione (
s39-ope = "V"): solo semfr-cod-fore' cambiato rispetto al valore precedente (s39-cmf-c), chiama COGS39 (V) per rimuovere la vecchia stringa e inserire quella nuova (s39-cmf-i).
Allineamento del listino generale fornitori COGGENMF (paragrafo aggiorna-coggenmf)¶
Quando la configurazione GESTIONE-DA-CMF vale "S", dopo la ricostruzione delle stringhe COGMERFO (sia nel ramo inserimento sia nel ramo variazione) il programma allinea anche il listino generale fornitori COGGENMF tramite il paragrafo aggiorna-coggenmf. In questo modo l'anagrafica merce-fornitore inserita/modificata durante l'ordine si riflette immediatamente nel listino generale del fornitore, senza dover ripassare da COGM02.
Il paragrafo opera solo se il codice merce fornitore (mfr-cod-for) e' valorizzato, e legge COGGENMF per la coppia gmf-cf (fornitore) + gmf-cmf (codice merce fornitore):
- Record COGGENMF gia' esistente → aggiorna divisa (
gmf-currency), descrizione (gmf-dm), moltiplicatore prezzo (gmf-molt-pre = 1) e riscrive il record. Se la descrizione e' cambiata, ricostruisce l'indice di ricerca su descrizione chiamando COGS42 in cancellazione (C) sul valore precedente e in inserimento (I) sul nuovo (stessa sequenza di COGM02). - Record COGGENMF assente → crea il record con divisa, descrizione, moltiplicatore prezzo a 1 e prezzi/sconto azzerati (
gmf-pre-lor,gmf-pre-net,gmf-sco= 0), poi costruisce gli indici di ricerca chiamando COGS40 (I), COGS41 (I) e COGS42 (I).
Consegne programmate¶
Per gli ordini con consegne (ins-consegne), il programma scandisce il transitorio TRAN-O55 e, per ogni data di consegna diversa, lancia COGO16F per registrare le consegne delle righe di competenza.
Configurazioni RNEWCONF¶
Il blocco x99-confi carica 39 chiavi. Le principali rilevanti per la logica documentata:
| Gruppo | Chiave | Variabile | Effetto |
|---|---|---|---|
| ordfor | carica-merci-da-cliente | tm-cfg-carica-merser-dacli |
Caricamento merci/servizi da cliente |
| ordfor | carica-merci-solo-fornit-prefer | tm-cfg-carica-mersolo-pref |
Caricamento solo merci del fornitore preferito |
| listgenf | GESTIONE-DA-CMF | tm-cfg-gestione-da-cmf |
Se "S", allinea COGGENMF (listino generale fornitori) alla conferma delle righe ordine |
Storico modifiche¶
2026-07-13 — Ricostruzione stringhe di ricerca COGMERFO anche in variazione¶
In precedenza le stringhe di ricerca COGMERFO venivano ricostruite solo all'inserimento del record. E' stata introdotta la gestione della variazione: quando il codice merce fornitore di un record COGMERFO esistente viene modificato, COGS39 viene richiamato in variazione ("V") passando il nuovo codice (s39-cmf-i) e quello precedente (s39-cmf-c), mantenendo coerente l'indice di ricerca per codice fornitore. Logica identica a quella del worker bolle di entrata COGV14W. Sono state aggiunte le variabili di appoggio w-fl-mod-cogmerfo e il pilotaggio esplicito di s38-ope/s39-ope/s39-cmf-c nei rami inserimento/variazione. Nessun impatto sull'interfaccia utente.
2026-07-29 — Aggiornamento del listino generale fornitori (COGGENMF) dall'ordine¶
Introdotta la nuova configurazione listgenf / GESTIONE-DA-CMF (tm-cfg-gestione-da-cmf, 39esima chiave RNEWCONF). Quando vale "S", alla conferma delle righe dell'ordine — sia quando la coppia merce/fornitore viene inserita ex novo, sia quando viene modificata — il programma allinea anche il listino generale fornitori COGGENMF al codice merce fornitore digitato, tramite il nuovo paragrafo aggiorna-coggenmf:
- se il record COGGENMF esiste, ne aggiorna divisa, descrizione e moltiplicatore prezzo, ricostruendo l'indice di ricerca su descrizione (COGS42) solo se la descrizione e' cambiata;
- se il record non esiste, lo crea con prezzi e sconto a zero e ne costruisce gli indici di ricerca (COGS40/COGS41/COGS42).
La sequenza di aggiornamento del listino e degli indici replica quella del programma di importazione listino generale COGM02. Aggiunti i copybook utils40.cpy, utils41.cpy, utils42.cpy (interfacce COGS40/COGS41/COGS42) e le variabili di appoggio w-dm e w-fl-mod-cogmerfo. Comportamento invariato (nessuna scrittura su COGGENMF) quando la configurazione e' assente o vale "N", quindi retrocompatibile con le installazioni esistenti.