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-esese indicata; - cliente: il cliente di fatturazione deve essere un cliente-azienda presente su
COGAZGRP(chiavek02surif-cliente); - gia' collegato: scarta i movimenti con
bsmv-bsdt-idgia' valorizzato (solo movimenti liberi); - benestare originale ricevuto: se il filtro e' attivo e il cliente prevede la gestione benestare (
aap2-fl-benestare = "S"), eseguea11-orig-ricevche risale al documento origine viaBOGBSMOV/COGTESBOe 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; segruppo-aziendee' attivo l'id ufficiale e'azienda/numeroprogressivo per gruppo (chiavek06), altrimenti coincide con l'id. Scrive la testataCOGBSTEScon 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
COGBSMOVcorrispondente scrivebsmv-bsdt-id/bsmv-bsdt-progcollegandolo 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-progsu 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 + FDt-det-rec/t-mov-rec), non generati da Screens; i nomi contengonowo-oper(identificativo di sessione) per l'unicita'. - Modello benestare a tre livelli: la creazione produce testata
COGBSTES(tipo "G" = aggregazione, stato 0), righeCOGBSDET(stato "P") e collega i movimentiCOGBSMOV. 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 secoganap2.fl-benestarenon e' "S". - Id ufficiale per gruppo aziende: con configurazione
gruppo-aziendeattiva, l'id ufficiale del benestare e' numerato per gruppo azienda (formatoazienda/NNNNNNNNNN), risalendo all'ultimo via chiave secondariak06. - File di transito COGTRANS aliasato: la griglia e' alimentata da un file indicizzato temporaneo (
t-grid-det), ottenuto dalla COPYcogtranscon replacingtrs-->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/.tme dalla screencogv8g-01.scrincbl/screens/; T-DETTAGLIO/T-MOVIMENTI sono la parte manuale. Chiavi secondarie usate: COGBSMOVk02/k03, COGAZGRPk02, COGBSTESk06, incluse manualmente.