Vai al contenuto

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

  1. Inizializzazione (apri): z-99-init-program, ctr-abil, lettura configurazioni via x99-confi (RNEWCONF), lettura azienda (rd-azi), apertura file (open-files). Se abilita/gruppo-aziende non 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-det via GRIDADMN).

  2. Impostazione filtri (a4): data da/a inizializzate all'anno corrente, divisa del conto tramite COGU10 (GetDivisaConto), reset della griglia, ordinamento predefinito per gcn-r-id, caricamento eventuale filtro di default (z-imppredf-carica-default).

  3. 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).

  4. Caricamento dati (a-leggi-dati -> z-grid-det-crea-transito): scansione di COGRDACQ sulla chiave secondaria k05 tra tm-data-da e tm-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.

  5. 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.

  6. Gestione griglia (a-grid): calcolo del totale importi (calcola-totale), gestione tasti funzione e menu pop-up. Operazioni:

  7. CTRL-A: aggiunta nuova riga vuota con default (trasporto "D", magazzini "P", stato "I", data odierna, flag approvazione "0").
  8. 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.
  9. F5: selezione/deselezione di tutte le righe approvate (fl-appro = "9") non collegate.
  10. S-F4 (GRIDADMN) e S-F5 (esportazione Excel della griglia).
  11. 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 (paragrafi z-grid-det-*-be-ep).

  12. Aggiornamento RdA (F3 -> b-aggiorna): scansione del transito; le righe con flag "C" marcano rda-fl-canc = "C"; le righe nuove (t-gor-r-id = 0) generano un nuovo rda-id progressivo (b1-inserimento); le altre vengono riscritte con i campi editati (merce, quantita', date, azienda, operatore, magazzini, trasporto, fornitore, arrivo previsto, approvazione).

  13. Creazione ordini (S-F7 -> c-crea-ordini): eseguito prima l'aggiornamento e i controlli (a1-controlli verifica merce e presenza di righe selezionate). In due fasi:

  14. 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 riferimento rda-ord-cli sulla RdA.
  15. 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-for sulla RdA.
  16. 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).

  17. Navigazione documenti (S-F2 su colonna ordine): consultazione della filiera dell'ordine cliente/fornitore tramite COGMA3.

  18. Chiusura (fine/z-chiudi): chiusura file, cancel di 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, campi w-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 usa w-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-cli sulla RdA vengono ripuliti in fase di valorizzazione riga.