Vai al contenuto

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 in CONTROLLA per 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-azienda via COGTESAP/COGAZGRP), operatore, cliente dei movimenti (z-cerca-cliente-movimenti via COGMOMAG);
  • se il flag rigenera e' "S", chiama COGSA9 in RICALCOLA passando tm-ricalcola-listino per 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 COGTESBO e COGMOMAG in 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 COPY cogtrans con replacing trs- -> 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/.tm e dalla screen cogv8f-01.scr in cbl/screens/. La griglia e' amministrata da GRIDADMN (Shift-F4). Chiave secondaria COGTESBO k02 inclusa manualmente.
  • Non riceve parametri applicativi: la procedure division usa solo stringhe; il codice di gestione "called" (w-dc-called) e' commentato/inattivo. Il programma parte sempre da menu.