COGV8F - Ricalcolo movimenti benestare¶
Panoramica¶
Programma GUI (griglia "MODO A") che ricalcola i movimenti di benestare generati dai documenti di magazzino di un periodo. Un benestare e' l'autorizzazione al rilascio della merce concordata con il cliente; ad ogni documento di magazzino con causale "a benestare" corrispondono dei movimenti benestare (COGBSMOV) e, potenzialmente, un benestare di aggregazione (COGBSTES). Quando cambiano listini, causali o dati del documento, i movimenti benestare vanno rigenerati: questo programma scorre i documenti di uscita/entrata di un intervallo di date, verifica per ciascuno se e come rigenerare il benestare (delegando il calcolo a COGSA9) e mostra in griglia l'esito (Rigenerato / Non rigenerato + motivo) con i contatori documenti letti/rigenerati/non rigenerati.
La griglia include anche una funzione di correzione dati errati sui trasferimenti tra aziende (F3 con operazione 777): per i documenti di trasferimento confronta cliente/azienda di uscita e di entrata, magazzino secondario e movimenti, evidenzia le incongruenze e, su conferma, allinea testata (COGTESBO), movimenti (COGMOMAG) e chiavi (KEYMOMAG).
Posizione nel menu¶
| Menu | Percorso |
|---|---|
| Vendite | Benestare > Ricalcolo movimenti benestare |
Struttura del programma¶
File e tabelle utilizzati¶
| File/Tabella | Tipo | Descrizione |
|---|---|---|
| FEURTAB | Input | Tabella di sistema (nomi file) |
| COGTESBO | I-O | Testate documenti di magazzino: sorgente dei documenti da esaminare (chiave k02 su data) e, nella correzione trasferimenti, aggiornata sul cliente (nonno) |
| COGTABEL | Input | Tabella causali (tipo 15): flag benestare (euta-cb-benestare = "G"), tipo cliente/fornitore (euta-cb-cli-for), entrata/uscita (euta-cb-fl-eu) |
| COGMOMAG | I-O | Movimenti di magazzino: letti per cliente/MS e, nella correzione, riallineati al cliente della testata |
| COGTESAP | Input | Testate documenti - dati aggiuntivi (gruppo azienda, operatore inserimento) |
| COGRACDM | Input | Raccordo documenti (collegamento uscita->entrata dei trasferimenti, tipo k-rdm-tip-trasferimento) |
| COGAZGRP | Input | Gruppi aziende (risoluzione cliente/fornitore associato all'azienda) |
| COGBSTES | Input | Benestare testata: verifica dello stato (stato 9 = completo, non rigenerabile) |
| COGGEANA | Input | Anagrafica generale (nomi cliente/azienda) |
| KEYMOMAG | Input | Chiavi movimenti di magazzino (magazzino secondario del documento di entrata) |
| T-GRID-DET (COGTRANS) | I-O | File di transito indicizzato che alimenta la griglia (alias t-gor-r- su cogtrans) |
| EXP-GRID | Output | File di appoggio per l'esportazione Excel della griglia |
Copybook principali¶
| Copybook | Descrizione |
|---|---|
| feurtab.fd / cogfiles.cpy | SELECT/FD e record della tabella di sistema |
| cogv8f.select / cogv8f.fd | SELECT e File Description (generati da Screens; includono COGTESBO/COGMOMAG/COGRACDM/KEYMOMAG e COGTRANS aliasato) |
| cogv8f.wrk / cogv8f.decla / cogv8f.prc | Working storage, declaratives e procedure di I/O generati da Screens |
| cogv8f.tm | Campi modificabili della maschera (filtri) generati da Screens |
| cogv8f-01.scr | Screen section (maschera filtri e griglia grid-det) |
| cogv8f.imppredf / cogv8f.imppredf-wrk | Gestione impostazioni predefinite (filtri memorizzati CTRL-S / CTRL-F) |
| k-tipi-cogtabel.cpy | Costanti dei tipi tabella COGTABEL (es. k-euta-tipo-causale-bolla) |
| k-tipi-cogracdm.cpy | Costanti dei tipi raccordo documenti (es. k-rdm-tip-trasferimento) |
| utilcogsa9.cpy | Interfaccia con COGSA9 (controllo/ricalcolo benestare del documento) |
| utilcogma3.cpy | Interfaccia con COGMA3 (navigazione filiera documento) |
| utils52.cpy / utilu20.cpy | Gestori di campo Screens (data, merce) |
| utilncnf.cpy | Lettura configurazioni RNEWCONF |
| utilgdad.cpy / wgrid.cpy | Interfaccia GRIDADMN e gestione griglia |
| cogazien.cpy / wgrave/wnscr/wopenf/wstato | Dati azienda, errori, video, apertura file, stato I/O |
| grave/stato/stato1/winmsg | Errori gravi, stato verbi, messaggi |
| mmmask.cpy / opengen.cpy | Gestione maschera e apertura file generica |
Chiamate a sottoprogrammi (CALL)¶
| Programma | Scopo |
|---|---|
| COGSA9 | Motore del ricalcolo benestare: operazione CONTROLLA (stato del documento rispetto al benestare) e RICALCOLA (rigenerazione dei movimenti benestare, con eventuale ricalcolo listino) |
| COGMA3 | Navigazione filiera del documento (classe "B", S-F2) |
| GRIDADMN | Personalizzazione layout griglia (Shift-F4) |
| RNEWCONF | Lettura configurazioni applicative |
Logica di elaborazione¶
1. Inizializzazione (apri)¶
Imposta nome programma, verifica abilitazione (ctr-abil), legge le configurazioni (x99-confi), apre i file e legge i dati azienda. Costruisce menu contestuale della griglia e pulsanti custom: Salva/Cerca impostazione (CTRL-S/CTRL-F) e Navigazione sul documento (S-F2). Prepara la griglia e imposta il titolo "Ricalcolo movimenti benestare".
2. Maschera filtri (a4 e accept a-tm-data-da, a-tm-data-a, a-tm-ricalcola-listino)¶
Inizializza i filtri (tm-ricalcola-listino = "N"), imposta l'ordinamento predefinito della griglia (per esito e documento) e carica l'eventuale filtro predefinito. La maschera raccoglie: Data inizio estrazione, Data fine estrazione e Ricalcolo da listino (S/N). F1 apre la modifica configurazioni, F8 il calendario, F3 conferma. In a-richiesta-conferma controlla la validita' dei filtri e chiede conferma ("Confermi elaborazione?").
3. Estrazione documenti e ricalcolo (a-leggi-dati -> z-grid-det-crea-transito -> a1-ricerca-doc)¶
Apre/ricrea il transito, azzera i contatori (documenti letti / letti10 / rigenerati / non rigenerati) e scorre COGTESBO per data (chiave k02) fino a superare tm-data-a. Per ogni documento:
- legge la causale su
COGTABEL(tipo 15); considera solo le causali di tipo cliente (euta-cb-cli-for = "C"), scartando le altre; ogni 10 documenti letti consente l'interruzione con ESC; - se la causale prevede il benestare (
euta-cb-benestare = "G") chiama COGSA9 inCONTROLLAper il documento e valuta l'esito: - "G" (documento collegato a benestare di aggregazione): legge
COGBSTES; se il benestare e' completo (stato 9) marca "Non rigenerato", altrimenti "Rigenerato"; - "S": marca "Rigenerato";
- altri: marca "Non rigenerato" con il messaggio restituito da COGSA9;
- se la causale non prevede benestare, marca "Non rigenerato" con motivo "La causale non prevede i benestare";
- per ogni documento riempie la riga di transito (
z-grid-det-riempi-t-rec): riferimento documento, numero, data, causale, flag E/U (euta-cb-fl-eu), cliente e denominazione, cliente relativo all'azienda (z-cerca-cliente-aziendavia COGTESAP/COGAZGRP), operatore, cliente dei movimenti (z-cerca-cliente-movimentivia COGMOMAG); - se il flag rigenera e' "S", chiama COGSA9 in
RICALCOLApassandotm-ricalcola-listinoper rigenerare i movimenti benestare del documento.
4. Analisi trasferimenti collegati (a2-ricerca-collegato / a2-esamina-documento)¶
Solo se in griglia sono visibili le colonne del documento collegato, per i soli documenti di uscita (t-gor-r-cb-fl-eu = "U"): tramite COGRACDM (tipo trasferimento) risale al documento di entrata collegato, ne legge testata (COGTESBO), cliente/azienda, magazzino secondario del movimento (COGMOMAG) e del KEYMOMAG, e registra in una nota (t-gor-r-note-trasf) eventuali incongruenze: "Cliente uscita - Azienda entrata diversi", "Azienda uscita - Cliente entrata diversi", "Entrata: cliente movimento diverso", "Entrata: magazzino secondario mancante".
5. Griglia e correzione (a-grid)¶
Mostra i documenti esaminati con l'esito. Il ciclo gestisce Shift-F4 (GRIDADMN), Shift-F5 (export Excel), S-F2 (COGMA3, filiera documento) e il menu pop-up. Con F3 e operazione 777, previa conferma "Attenzione, correzione documenti errati, procedo?", esegue c-correggi: per ogni riga con nota di trasferimento valorizzata, c-correggi-riga applica la correzione appropriata:
- cliente azienda uscita diverso da cliente entrata: aggiorna il cliente (
nonno) sulla testata di entrata (COGTESBO) e adegua i movimenti (c-adegua-movimenti); - cliente testata entrata diverso da cliente righe entrata: adegua i movimenti al cliente di testata;
- magazzino secondario entrata mancante su KEYMOMAG: ricostruisce KEYMOMAG rieseguendo il trigger before-rwr su tutti i movimenti del documento (
c-correggi-keymomag-mancante).
Ogni correzione scrive una nota di esito (t-gor-r-note-corr) sulla riga di transito e, a fine, ricarica la griglia.
6. Chiusura (fine / z-chiudi)¶
Chiude i file, chiude e cancella il transito, distrugge il menu griglia, chiude la finestra, esegue z-99-exit-program ed esce.
Note tecniche¶
- Il ricalcolo e' delegato a COGSA9: questo programma e' l'orchestratore/consultatore. La logica di generazione dei movimenti benestare e la relazione documento->benestare risiedono in COGSA9 (operazioni CONTROLLA e RICALCOLA). Il flag "Ricalcolo da listino" viene inoltrato a COGSA9 (
cogsa9-ricalcola-listino). - Selezione documenti per causale: solo le causali di tipo cliente (
euta-cb-cli-for = "C") sono considerate; il flag di fatturazione (euta-cb-con-fat) NON viene piu' filtrato (commento del 01/12/20: si considerano tutti i documenti a prescindere), e le causali senza benestare sono comunque riportate in griglia come "Non rigenerato". - Benestare completo non rigenerato: se il benestare di aggregazione collegato ha
bsts-stato = 9(completo), il documento non viene rigenerato per non alterare un benestare gia' chiuso. - Funzione correzione trasferimenti (operazione 777): apre
COGTESBOeCOGMOMAGin aggiornamento e modifica dati anagrafici sui documenti; riferimenti nel codice a "NOC-1767 - Errori MAV". E' una funzione di manutenzione/allineamento, non parte del normale ricalcolo benestare. - File di transito COGTRANS aliasato: la griglia e' alimentata da un file indicizzato temporaneo (
t-grid-det), ottenuto dalla COPYcogtranscon replacingtrs-->t-gor-r-, ricreato ad ogni estrazione e cancellato in chiusura. - Configurazioni RNEWCONF lette (
x99-confi, pacchetto "C"): gestione-gruppo-aziende (gruppo "assist"), gruppo-aziende (gruppo "abilita"). - Programma generato da Screens: SELECT/FD, griglia, procedure e gestione filtri predefiniti provengono dai file
cogv8f.select/.fd/.wrk/.decla/.prc/.tme dalla screencogv8f-01.scrincbl/screens/. La griglia e' amministrata da GRIDADMN (Shift-F4). Chiave secondaria COGTESBOk02inclusa manualmente. - Non riceve parametri applicativi: la
procedure divisionusa solostringhe; il codice di gestione "called" (w-dc-called) e' commentato/inattivo. Il programma parte sempre da menu.