COGO00 - Gestione Richieste di acquisto (RdA) e generazione ordini¶
Sorgente: cbl/cogo00.cbl | Program-ID: cogo00 | Tipo: Programma interattivo (standalone, maschera con griglia editabile)
Menu: Ordini > Fornitori > Richieste di acquisto
Scopo¶
COGO00 gestisce le Richieste di acquisto (RdA) memorizzate sulla tabella COGRDACQ e, a partire dalle righe selezionate, genera gli ordini collegati (ordine cliente verso l'azienda capogruppo e/o ordine fornitore). La maschera presenta un'area filtri di testata (intervallo date richiesta, stato "In corso"/"Complete", azienda del gruppo, fornitore) e una griglia editabile (e-grid-det) alimentata da un file di transito indicizzato temporaneo.
Ogni riga della griglia rappresenta una RdA: merce, quantita' e data richiesta, azienda richiedente, magazzino di destinazione (MD) e di acquisto (MA), fornitore, prezzi/rebate calcolati e riferimenti agli ordini/documenti generati. L'operatore puo' aggiungere, modificare, cancellare (flag logico) e approvare le RdA; con S-F7 vengono creati testate e righe degli ordini clienti/fornitori con relativo impegno/ordinato merce.
Il programma opera solo se e' abilitata la gestione a gruppo aziende (abilita/gruppo-aziende = "S"), altrimenti termina con messaggio.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | Indexed (feurtab) |
Input | Registro tabelle generico Eurosystem (da feurtab.fd/cogfiles.cpy) |
| COGRDACQ | Indexed (rda-rec) |
I-O | Richieste di acquisto: testata RdA, riferimenti ordini/documenti collegati. Chiave primaria rda-id; usata anche la chiave secondaria k05 (per rda-data-richiesta) |
| COGMERCI | Indexed (mer-rec) |
Input | Anagrafica merci: validazione codice merce RdA |
| COGGEANA | Indexed (ana-rec) |
Input | Anagrafica generale clienti/fornitori/vettori |
| COGTABEL | Indexed (euta-rec) |
Input | Tabelle di sistema (tipo 14 pagamenti, tipo 70 config PROG/COGO05, agente) |
| COGMAGAZ | Indexed (magz-rec) |
Input | Magazzini principali (tipo "M"): descrizione e rapporto anagrafico |
| COGMAGPE | Indexed (mgp-rec) |
Input | Magazzini secondari/esterni (tipo "E"): descrizione e collegamento anagrafica |
| COGSLMAG | Indexed (msal-rec) |
Input | Saldi di magazzino: giacenza, impegnato, ordinato dell'articolo |
| COGMOMAG | Indexed (mag-recz) |
Input | Movimenti di magazzino: quantita' e data dei documenti collegati |
| COGCNDCF | Indexed (cnd-rec) |
Input | Condizioni cliente/fornitore (DC/DF): porto, vettore |
| COGANAPP | Indexed (aap-rec) |
Input | Anagrafica appendice fornitore: trasporto a cura |
| COGAZGRP | Indexed (azg-rec) |
Input | Anagrafica aziende del gruppo: riferimento cliente/fornitore |
| GRPAZIEN | Indexed (ao-azi-rec) |
Input | Aziende del gruppo: descrizione, magazzino sede, tipo (capogruppo "G") |
| PRNTOPER | Indexed (ptop-rec) |
Input | Operatori richiedenti: descrizione |
| COGTESOR | Indexed (tor-rec) |
Output | Testate ordini generati (clienti/fornitori) |
| COGRIGOR | Indexed (ror-rec) |
I-O | Righe ordine: merce, quantita', prezzo |
| COGTORAG | Indexed (tar-rec) |
Output | Dati aggiuntivi testata ordine (azienda gruppo, spedizione unitaria) |
| COGRORAG | Indexed (rar-rec) |
Output | Dati aggiuntivi riga ordine |
| COGRORA2 | Indexed (ra2-rec) |
Output | Importi di riga ordine (importo arrotondato) |
| t-grid-det | Indexed (temporaneo) | I-O | File di transito della griglia, mappato da cogtrans.k03 (record t-gor-r-rec); chiave primaria t-gor-r-chia1, secondarie t-gor-r-chia2 e t-gor-r-chia3 (for-cod + ric-grp-az + a-mag + r-mag) |
| exp-grid | Line sequential | Output | File di appoggio per l'esportazione della griglia (Excel) |
I file gestiti dallo Screen Designer (SELECT/FD) sono dichiarati in cogo00.select e cogo00.fd. Il file t-grid-det e' ottenuto con copy 'cogtrans.k03' replacing (prefissi trs- -> t-gor-r-).
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
feurtab.fd / cogfiles.cpy |
SELECT e FD di FEURTAB |
cogo00.select / cogo00.fd |
SELECT e FD dei file gestiti da Screens |
cogo00.wrk / cogo00.tm / cogo00.decla / cogo00-01.scr / cogo00.prc |
Working storage, campi maschera (tab-maschera), declaratives, screen section e procedure generate da Screens |
cogo00.imppredf-wrk / cogo00.imppredf |
Gestione filtri/impostazioni predefinite |
k-tipi-cogtabel.cpy |
Costanti tipi COGTABEL |
wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy |
Working storage comuni (errori, schermo, apertura file, stato) |
cogazien.cpy |
Dati azienda |
wgrid.cpy / utilgdad.cpy |
Gestione griglie e interfaccia GRIDADMN |
utils25.cpy |
Interfaccia COGS25 (numeratore documenti) |
utils52.cpy |
Interfaccia COGS52 (calendario/date) |
utils65.cpy |
Interfaccia COGS65W (ricerca clienti/fornitori) |
utils68.cpy |
Interfaccia COGS68 (ricerca merci) |
utilgrp002.cpy |
Interfaccia GRP002 (ricerca aziende del gruppo) |
utilcogs01.cpy / utils01.cpy / utils01f.cpy |
Interfaccia COGS01/COGS01F (prezzi listino cliente/fornitore) |
utilcogma3.cpy |
Interfaccia COGMA3 (consultazione filiera documento) |
utilcogs0b.cpy |
Interfaccia COGS0B (abilitazione operatore/azienda) |
utilt20.cpy |
Interfaccia COGT20 (ricerca operatori) |
utilw36.cpy / sendw36.cpy |
Interfaccia W36 (ricerca magazzini principali) |
utilw115.cpy / sendw115.cpy |
Interfaccia W115 (ricerca magazzini esterni) |
utilu09.cpy |
Interfaccia COGU09 (documento di magazzino collegato all'ordine) |
utilu10.cpy |
Interfaccia COGU10 (formattazione/arrotondamento importi, divisa) |
utilu12.cpy |
Interfaccia COGU12 (impegno/ordinato merce) |
utilu20.cpy |
Interfaccia COGU20 |
utilo16.cpy / utilo16f.cpy |
Interfaccia COGO16C/COGO16F (aggiornamento consegne ordini) |
utilncnf.cpy |
Interfaccia RNEWCONF (configurazioni) |
utilimppredf.cpy |
Gestione impostazioni predefinite |
wcont.cpy / wcont1.cpy |
Aree di comunicazione linkage |
cogrdacq.k05 |
Chiave secondaria k05 di COGRDACQ (aggiunta manualmente) |
cogtrans.k03 |
Definizione file di transito t-grid-det (con replacing) |
grave.cpy / mmmask.cpy / opengen.cpy / stato.cpy / stato1.cpy / winmsg.cpy |
Routine standard di fine procedure division |
Logica di elaborazione¶
-
Inizializzazione (
apri):z-99-init-program,ctr-abil, lettura configurazioni viax99-confi(RNEWCONF), lettura azienda (rd-azi), apertura file (open-files). Seabilita/gruppo-aziendenon e' "S" il programma termina. Vengono creati i due pulsanti custom "Creazione Ordini (S-F7)" e "Navigazione sul documento (S-F2)", costruito il menu contestuale della griglia (build-main-popup-grid-det) e preparata la griglia (z-prepara-tm-grid,z-gridadmn-prepara-grid-detvia GRIDADMN). -
Impostazione filtri (
a4): data da/a inizializzate all'anno corrente, divisa del conto tramite COGU10 (GetDivisaConto), reset della griglia, ordinamento predefinito pergcn-r-id, caricamento eventuale filtro di default (z-imppredf-carica-default). -
Accept dei filtri di testata: paragrafi
a-tm-data-da,a-tm-data-a,a-tm-in-corso,a-tm-complete,a-tm-grp-az(F8 -> GRP002),a-tm-forn(ricerca via COGS65W). Ogni campo ha il proprio controllo (x-controlla-tm-*); F3 porta alla conferma globale (x-imposta-conferma). -
Caricamento dati (
a-leggi-dati->z-grid-det-crea-transito): scansione di COGRDACQ sulla chiave secondaria k05 tratm-data-daetm-data-a. Per ogni RdA non cancellata (z-grid-det-riempi-t-rec) si applicano i filtri per azienda/fornitore, la verifica di abilitazione operatore (COGS0B) e il filtro stato In corso/Complete, quindi si inserisce nel file di transito. -
Valorizzazione riga (
z-grid-det-riempi-campi-t-gor): risoluzione descrizioni (fornitore, azienda, operatore, magazzini MD/MA), calcolo del prezzo di acquisto (listino cliente via COGS01) e del listino fornitore (COGS01F) con calcolo di costo-riga e rebate (unitario/totale) arrotondati con COGU10; lettura giacenza/impegnato/ordinato da COGSLMAG sul magazzino della capogruppo; determinazione stato RdA (I/O/E) e riferimenti agli ordini fornitore/cliente e ai documenti di acquisto/consegna (COGU09, COGRIGOR, COGMOMAG). I riferimenti a ordini inesistenti vengono ripuliti. -
Gestione griglia (
a-grid): calcolo del totale importi (calcola-totale), gestione tasti funzione e menu pop-up. Operazioni: - CTRL-A: aggiunta nuova riga vuota con default (trasporto "D", magazzini "P", stato "I", data odierna, flag approvazione "0").
- CTRL-E: cancellazione logica (toggle flag
t-gor-r-fl-agg = "C"), inibita se la riga e' gia' collegata a un ordine o selezionata, o con filtro attivo. - F5: selezione/deselezione di tutte le righe approvate (
fl-appro = "9") non collegate. - S-F4 (GRIDADMN) e S-F5 (esportazione Excel della griglia).
-
Controlli di cella (
x-controlla-tm-r-*): merce, quantita', data, fornitore, azienda richiedente, operatore, magazzini MD/MA (verifica collegamento al cliente dell'azienda richiedente), con rivalorizzazione prezzi (valorizza-riga). La modifica e' inibita se la RdA e' gia' collegata a un ordine (paragrafiz-grid-det-*-be-ep). -
Aggiornamento RdA (F3 ->
b-aggiorna): scansione del transito; le righe con flag "C" marcanorda-fl-canc = "C"; le righe nuove (t-gor-r-id = 0) generano un nuovorda-idprogressivo (b1-inserimento); le altre vengono riscritte con i campi editati (merce, quantita', date, azienda, operatore, magazzini, trasporto, fornitore, arrivo previsto, approvazione). -
Creazione ordini (S-F7 ->
c-crea-ordini): eseguito prima l'aggiornamento e i controlli (a1-controlliverifica merce e presenza di righe selezionate). In due fasi: - C.1 Ordini clienti: per le RdA verso un fornitore del gruppo (casi "A"/"B") o richieste a fornitore con magazzini diversi (caso "E"), raggruppate per fornitore/azienda/magazzini si crea la testata (
c11-testata-ordi), la riga ordine, i dati aggiuntivi (COGTORAG/COGRORAG/COGRORA2), il prezzo da listino cliente e l'impegno merce (COGU12 tipo "I"); aggiornamento consegne via COGO16C; scrittura del riferimentorda-ord-clisulla RdA. - C.2 Ordini fornitore: per le RdA verso fornitori esterni (casi "C"/"D"/"E"), analogamente si crea testata/riga con prezzo di acquisto, dati aggiuntivi e quantita' ordinata (COGU12 tipo "O"); aggiornamento consegne via COGO16F; scrittura del riferimento
rda-ord-forsulla RdA. -
La causale della testata dipende dai parametri di configurazione (
rda-cau-*) e dal tipo di magazzino MD (MP/MS); il numeratore documento e' ottenuto da COGS25 (codice 10 clienti, 14 fornitori). -
Navigazione documenti (S-F2 su colonna ordine): consultazione della filiera dell'ordine cliente/fornitore tramite COGMA3.
-
Chiusura (
fine/z-chiudi): chiusura file,canceldi COGS65W/COGU09, chiusura COGS01F/COGS01, chiusura ed eliminazione del file di transito, distruzione del menu griglia,z-99-exit-program.
Chiamate a sottoprogrammi¶
| Programma | Scopo |
|---|---|
| RNEWCONF | Lettura configurazioni (gestione/abilitazione gruppo aziende, causali RdA rda-cau-*) |
| GRP002 | Ricerca/selezione azienda del gruppo (F8 su filtro e su colonna azienda richiedente) |
| COGS65W | Ricerca clienti/fornitori (campo Fornitore) |
| COGS0B | Verifica abilitazione operatore all'azienda del gruppo |
| COGT20 | Ricerca operatore richiedente (F8 in griglia) |
| COGS01 | Prezzo/listino cliente (calcolo prezzo di acquisto RdA e ordine cliente) |
| COGS01F | Prezzo/listino fornitore (calcolo rebate e prezzo ordine fornitore) |
| COGU10 | Formattazione/arrotondamento importi e divisa (anche GetDivisaConto) |
| COGU09 | Ricerca del documento di magazzino collegato all'ordine (cerca-magazzino) |
| COGU12 | Aggiornamento impegno ("I") e ordinato ("O") merce a magazzino |
| COGS25 | Numeratore documenti (testata ordine cliente cod. 10 / fornitore cod. 14) |
| COGO16C | Aggiornamento consegne ordini clienti (ins-auto) |
| COGO16F | Aggiornamento consegne ordini fornitori (auto-ins) |
| COGMA3 | Consultazione filiera del documento (S-F2 su colonna ordine) |
| GRIDADMN | Amministrazione/preparazione griglia, personalizzazione (S-F4) ed esportazione (S-F5) |
| W$MENU | Attivazione del menu contestuale della griglia (right-click) |
I gestori tabella Y* generati dallo Screen Designer (letture/scritture indicizzate: rd-, st-, rdnxt-, wr-, rwr-) sono richiamati tramite la procedura generata cogo00.prc e non hanno pagina dedicata.
Storico modifiche¶
Il sorgente contiene marcatori di modifica datati (non *>DOC: ma commenti con prefisso data 150124/160124/170124):
- 150124 - Il fornitore di riferimento non e' piu' solo quello della capogruppo: vengono considerati i fornitori di tutte le aziende codificate del gruppo. Introdotta la tabella di appoggio
tab-azi-fornit(fino a 300 aziende, campiw-azi-fornitore,w-azi-cod-gruppo,w-azi-mag-sede), caricata scandendo GRPAZIEN. I controlli sul fornitore capogruppo sono stati sostituiti da una scansione di questa tabella; per la giacenza si usaw-mag-capogruppo(magazzino sede dell'azienda di tipo "G"). - 160124 - Lasciato libero il campo magazzino di acquisto (MA) per il fornitore capogruppo, per consentire la sistemazione di situazioni precedenti alla nuova modalita' (controlli di inibizione commentati in
z-grid-det-a-mag-*-be-ep). - 170124 - Se l'ordine collegato non esiste piu' (cancellato, riga cancellata o merce modificata) i riferimenti
rda-ord-for/rda-ord-clisulla RdA vengono ripuliti in fase di valorizzazione riga.