Vai al contenuto

COGV8G - Creazione benestare automatici

Panoramica

Programma GUI (griglia "MODO A") che crea automaticamente i benestare di aggregazione raggruppando i movimenti benestare (COGBSMOV) non ancora collegati di un periodo. Un benestare e' l'autorizzazione al rilascio della merce concordata col cliente: i singoli movimenti registrati (uscite/entrate merce) devono essere aggregati per azienda e cliente in un documento di benestare composto da testata (COGBSTES) e dettaglio per merce/prezzo (COGBSDET). Il programma estrae i movimenti liberi di un intervallo di date (filtrati per azienda esecutrice, cliente abilitato al benestare, benestare originale ricevuto), li accumula in due file temporanei (T-MOVIMENTI e T-DETTAGLIO) raggruppando per azienda/cliente/merce/prezzo, e propone in griglia un riepilogo per azienda/cliente (numero movimenti, numero righe dettaglio, imponibile). Con F3 l'operatore conferma e il programma genera i benestare (testata + dettaglio) e collega i movimenti alla nuova aggregazione.

Posizione nel menu

Menu Percorso
Vendite Benestare > Creazione benestare automatici

Struttura del programma

File e tabelle utilizzati

File/Tabella Tipo Descrizione
FEURTAB Input Tabella di sistema (nomi file)
COGBSMOV I-O Movimenti benestare: estratti (chiave k02 su data) e, in creazione, aggiornati sul riferimento al dettaglio benestare (bsdt-id/bsdt-prog)
BOGBSMOV Input Vista aliasata di COGBSMOV (chiave k03) per il controllo "benestare originale ricevuto"
COGBSTES I-O Benestare testata: lettura ultimo id / id-ufficiale (chiave k06 su gruppo azienda) e scrittura delle nuove testate
COGBSDET Output Benestare dettaglio: scrittura delle righe di dettaglio del benestare creato
COGAZGRP Input Gruppi aziende (verifica che il cliente sia un cliente-azienda tramite chiave k02 su rif-cliente)
COGANAP2 Input Anagrafica parametri 2 (flag fl-benestare del cliente)
COGGEANA Input Anagrafica generale (nomi cliente)
COGTESBO Input Testate documenti di magazzino (controllo benestare originale ricevuto)
GRPAZIEN Input Gruppi aziende (descrizione azienda)
T-DETTAGLIO I-O File temporaneo indicizzato: 1 record per azienda/cliente/merce/prezzo, con quantita', importo, n. movimenti e descrizioni accumulate
T-MOVIMENTI I-O File temporaneo indicizzato: 1 record per movimento considerato, chiave azienda/cliente/merce/prezzo/id-mov
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
cogv8g.select / cogv8g.fd SELECT e File Description (generati da Screens; includono COGBSMOV/BOGBSMOV, COGBSTES/COGBSDET, COGTRANS aliasato). T-DETTAGLIO e T-MOVIMENTI sono dichiarati manualmente nel sorgente
cogv8g.wrk / cogv8g.decla / cogv8g.prc Working storage, declaratives e procedure di I/O generati da Screens
cogv8g.tm Campi modificabili della maschera (filtri) generati da Screens
cogv8g-01.scr Screen section (maschera filtri e griglia grid-det)
cogv8g.imppredf / cogv8g.imppredf-wrk Gestione impostazioni predefinite (filtri memorizzati)
k-tipi-cogtabel.cpy Costanti dei tipi tabella COGTABEL
utilcogv8g.cpy Area di linkage util-cogv8g (parametri chiamante: caller/called, azienda emittente)
utilcogv8a.cpy Interfaccia con COGV8A (gestione benestare creato)
utilcogv8c.cpy Interfaccia con COGV8C (consultazione movimenti del benestare)
utilcogv8h.cpy Interfaccia con COGV8H (stampa benestare)
utilgrp002.cpy Aiuto/selezione gruppo aziende (GRP002)
utils52.cpy / utilu10.cpy / utilu20.cpy Gestori di campo Screens (data, importi/divisa, merce)
utilncnf.cpy Lettura configurazioni RNEWCONF
utilgdad.cpy / wgrid.cpy Interfaccia GRIDADMN e gestione griglia
cogbstes.cpy / cogbsdet.cpy / cogbsmov.cpy Record dei tre archivi benestare
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
COGV8A Gestione del benestare appena creato (F3 su riga con benestare valorizzato, dopo l'aggiornamento)
COGV8H Stampa del benestare creato (F9 su riga con benestare valorizzato)
COGV8C Consultazione dei movimenti che compongono la riga (F8, con filtri azienda/cliente/date/orig-ricevuto/stato-aggr "D")
GRP002 Aiuto/selezione azienda esecutrice (F8 sul campo azienda)
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. Se richiamato (cogv8g-called = k-program-id e caller valorizzato) copia i parametri in w-dati-called (in particolare l'azienda emittente). Costruisce menu griglia e pulsanti Salva/Cerca impostazione. Prepara la griglia e imposta il titolo "Creazione benestare automatici".

2. Maschera filtri (a4 e accept a-tm-grp-az-ese, a-tm-data-da, a-tm-data-a, a-tm-data-doc, a-tm-orig-ricev)

Inizializza i filtri; se richiamato con azienda emittente la preimposta e disabilita il campo. La maschera raccoglie: Azienda esecutrice (se gestione-gruppo-aziende, con aiuto GRP002), Data inizio/fine estrazione, Data documento (data da attribuire ai benestare creati), Benestare originale ricevuto (S/N). F1 modifica configurazioni, F8 calendario/aiuto, F3 conferma. In a-richiesta-conferma valida i filtri e chiede conferma.

3. Estrazione e raggruppamento (a-leggi-dati -> z-grid-det-crea-transito -> a1-estrazione)

Crea i due file temporanei (#$cogv8g_det_<pid>, #$cogv8g_mov_<pid> nella dir temp) e apre il transito. La fase 1 (a1-estrazione) scorre COGBSMOV per data (chiave k02) fino a tm-data-a e per ogni movimento applica i filtri:

  • azienda: bsmv-grp-az-cod = tm-grp-az-ese se indicata;
  • cliente: il cliente di fatturazione deve essere un cliente-azienda presente su COGAZGRP (chiave k02 su rif-cliente);
  • gia' collegato: scarta i movimenti con bsmv-bsdt-id gia' valorizzato (solo movimenti liberi);
  • benestare originale ricevuto: se il filtro e' attivo e il cliente prevede la gestione benestare (aap2-fl-benestare = "S"), esegue a11-orig-ricev che risale al documento origine via BOGBSMOV/COGTESBO e recupera il riferimento benestare del cliente (bsts-doc-cli-rif).

Per ogni movimento che supera i filtri scrive un record su T-MOVIMENTI (chiave azienda/cliente/merce/prezzo/id-mov) e accumula su T-DETTAGLIO (chiave azienda/cliente/merce/prezzo): somma/sottrae quantita' e importo secondo il segno del movimento (bsmv-segno = "U" = uscita in positivo), incrementa il numero movimenti e concatena in t-det-des i riferimenti benestare cliente (separati da ";").

La fase 2 (a1-90) scorre T-DETTAGLIO ordinato e, a rottura di azienda/cliente, riepiloga in una riga di transito (z-grid-det-riempi-t-rec): azienda e descrizione, cliente e denominazione (con nota se il cliente non e' abilitato alla gestione benestare), numero movimenti, numero righe dettaglio e imponibile.

4. Griglia e creazione benestare (a-grid / c-aggiorna)

Mostra il riepilogo per azienda/cliente. Prima dell'aggiornamento (w-fl-aggiorna vuoto):

  • F8 consulta i movimenti della riga (COGV8C, stato-aggr "D");
  • F3 (previa conferma "Confermi creazione benestare presenti in griglia?") esegue c-aggiorna.

c-aggiorna scorre le righe di transito e per ognuna:

  • C.1 Testata: calcola il nuovo bsts-id (prendendo l'ultimo esistente + 1 con controllo di unicita') e l'id-ufficiale; se gruppo-aziende e' attivo l'id ufficiale e' azienda/numero progressivo per gruppo (chiave k06), altrimenti coincide con l'id. Scrive la testata COGBSTES con tipo "G", cliente, gruppo azienda, data documento, competenza da/a, stato 0.
  • C.2 Dettaglio: scorre T-DETTAGLIO per azienda/cliente e per ogni riga scrive un record COGBSDET (merce, quantita', prezzo, importo, stato "P", descrizione accumulata) con progressivo crescente.
  • C.2.1 Collegamento movimenti: per ogni dettaglio scorre T-MOVIMENTI (stessa chiave azienda/cliente/merce/prezzo) e su ogni COGBSMOV corrispondente scrive bsmv-bsdt-id/bsmv-bsdt-prog collegandolo alla nuova aggregazione.
  • C.3: aggiorna la riga di transito con id benestare e id ufficiale creati.

Dopo la creazione (w-fl-aggiorna = "S"), sulla riga con benestare valorizzato: F3 apre la gestione del benestare (COGV8A), F9 ne stampa (COGV8H).

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

  • Due file temporanei di accumulo: il raggruppamento avviene in due passaggi. T-MOVIMENTI conserva il legame movimento->aggregazione (per poi scrivere bsdt-id/bsdt-prog su COGBSMOV in fase di creazione), mentre T-DETTAGLIO consolida quantita'/importo per merce e prezzo (una riga di dettaglio benestare per combinazione merce+prezzo). Sono file indicizzati dichiarati manualmente nel sorgente (SELECT + FD t-det-rec / t-mov-rec), non generati da Screens; i nomi contengono wo-oper (identificativo di sessione) per l'unicita'.
  • Modello benestare a tre livelli: la creazione produce testata COGBSTES (tipo "G" = aggregazione, stato 0), righe COGBSDET (stato "P") e collega i movimenti COGBSMOV. Solo i movimenti liberi (bsmv-bsdt-id = 0) sono candidati.
  • Cliente abilitato al benestare: il candidato deve essere un cliente-azienda (presente su COGAZGRP come rif-cliente); in griglia viene comunque segnalato se coganap2.fl-benestare non e' "S".
  • Id ufficiale per gruppo aziende: con configurazione gruppo-aziende attiva, l'id ufficiale del benestare e' numerato per gruppo azienda (formato azienda/NNNNNNNNNN), risalendo all'ultimo via chiave secondaria k06.
  • 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-.
  • Configurazioni RNEWCONF lette (x99-confi, pacchetto "C"): gestione-gruppo-aziende (gruppo "assist"), gruppo-aziende (gruppo "abilita").
  • Programma generato da Screens: SELECT/FD, griglia e procedure provengono dai file cogv8g.select/.fd/.wrk/.decla/.prc/.tm e dalla screen cogv8g-01.scr in cbl/screens/; T-DETTAGLIO/T-MOVIMENTI sono la parte manuale. Chiavi secondarie usate: COGBSMOV k02/k03, COGAZGRP k02, COGBSTES k06, incluse manualmente.