ASN05G - Consultazione movimenti punti (matricole contratti)¶
Sorgente: cbl/asn05g.cbl (1.880 righe) | Tipo: Programma interattivo con tab-control (filtri/risultati), griglia paginata su file di transito
Menu: Assist 2.0 > Archivi > Contratti > Consultazione movimenti punti
Scopo¶
Consulta i "movimenti punti" di un articolo, cioe' i movimenti di magazzino che scalano il componente di distinta base delle matricole di tipo "firewall" gestite dai contratti, e li affianca ai movimenti previsionali generati dai contratti stessi. Il risultato e' una griglia con saldo iniziale (periodo precedente), righe di movimento e saldo progressivo.
La griglia distingue due tipi di riga (t-gor-r-tipo-mov):
E- movimento effettivo, ricavato dai DDT/movimenti di magazzino (COGMOMAG);P- movimento previsionale, generato mese per mese a partire dai contratti collegati alla matricola, per il periodo non ancora fatturato.
Da griglia e' possibile navigare la filiera del documento di origine (SF2), stampare un report Word (F9), personalizzare la griglia (SF4) ed esportare in Excel (SF5).
Il programma usa un tab-control a due pagine: pagina 1 "filtri" (articolo, data inizio, data fine), pagina 2 "risultati" (griglia). Supporta il salvataggio/caricamento di filtri predefiniti (utilimppredf, tasti Ctrl+S / Ctrl+F).
Interfaccia (linkage)¶
procedure division using stringhe (aree standard wcont/wcont1). Programma standalone da menu.
File acceduti¶
Input/lettura¶
| File | Copybook | Uso |
|---|---|---|
| COGMOMAG | mag-recz |
Movimenti di magazzino dell'articolo, scanditi per merce sulla chiave chia3a (mag-merce3). Chiave secondaria cogmomag.k04 |
| COGTESBO | tes-rec |
Testata del documento del movimento (mag-testa = tes-chia3); da qui causale, magazzino, cliente fatturazione/assistito |
| COGTABEL | euta-rec |
Tabella causali (tipo 15) per lettura euta-cb-con-gia (filtro "aggiorna giacenza" attualmente disattivato, cfr. nota 07/06/2024) |
| COGMOAGG | moa-rec |
Movimento aggiuntivo (moa-chia1 = mag-chiap): moa-alt-qta quantita' scalare alternativa |
| ASNCNMTB | amtb-rec |
Legame DDT-contratto-matricola. Ricerca per estremi documento (amtb-tes-mag/anno/tipob/bolla3) via chiave asncnmtb.k02 |
| ASNMATRI | amtr-rec |
Anagrafica matricola: selezione solo tipo "firewall" (amtr-tip = tm-cfg-tipo-mtr-firewall); serial number amtr-sn |
| ASNMTRDB | amdb-rec |
Distinta base matricola: individua il componente corrispondente all'articolo (amdb-merce) e la quantita' scalare (amdb-qta-scalare/amdb-qta) |
| ASNCNMTR | acnc-rec |
Matricole del contratto; ricerca per matricola via chiave asncnmtr.k02. Da qui date di validita' (acnc-data-da, acnc-data-a) e ultima fatturazione (acnc-data-ult-fatt) |
| ASNCNTES | acnt-rec |
Testata contratto (clienti fatturazione/assistito per le righe previsionali) |
| COGGEANA | ana-rec |
Ragioni sociali clienti fatturazione/assistito |
Transito¶
| File | Scopo |
|---|---|
cogtrans (istanza t-grid-det) |
Buffer delle righe di griglia, generato con copy "cogtrans.k03" (replacing su t-grid-det/t-gor-r-). Contiene i campi delle righe: tipo movimento, data, documento, id contratto/matricola, serial number, quantita' fatturata/scalare, saldo. Cancellato in chiusura |
Chiavi secondarie¶
cogmomag.k04asncnmtb.k02asncnmtr.k02cogtrans.k03(usata come struttura della tabella di transitot-grid-det; ordinamento sulla chiavechia3)
Programmi chiamati¶
| Programma | Operazione | Scopo |
|---|---|---|
| COGMA3 | COGMA3-CALLED |
SF2 su riga: navigazione filiera del documento. Se la riga ha id-contratto != 0 -> classe "T" (contratto), altrimenti classe "B" (bolla) con chiave ddt-key |
| GESDATE | CERCA-FINE-MESE |
Calcolo fine mese nella generazione dei movimenti previsionali e nel calcolo del saldo dei mesi precedenti |
| DTPRG / PRGDT | Conversione data/progressivo per calcolare il giorno precedente alla data inizio periodo (tm-prec-fin) |
|
| GRIDADMN | Personalizzazione griglia (Prepara / SF4) | |
| COGS68 | (lookup articolo) | Gestione campo articolo tm-articolo |
| COGS52 | (calendario) | Gestione campi data con calendario F8 |
| RNEWCONF | Lettura configurazione tipo-mtr-firewall |
|
| W$MENU | wmenu-popup |
Menu contestuale (right-click) su griglia |
Sono inoltre presenti le routine standard di report Word (z-wordmdl-report, F9) ed esportazione Excel (z-esporta-grid-det, SF5).
Configurazioni RNEWCONF (x99-confi)¶
| Idx | Gruppo | Parametro | Variabile | Effetto |
|---|---|---|---|---|
| 01 | ass-contr |
tipo-mtr-firewall |
tm-cfg-tipo-mtr-firewall |
Tipo matricola su cui vengono considerati i movimenti |
Logica di ricerca dati (z-grid-ricerca-dati)¶
La costruzione del transito avviene in tre fasi.
1. Movimenti effettivi (z-grid-10-loop ... z-grid-999)¶
Scorre COGMOMAG per l'articolo:
- salta i movimenti con
mag-da3 > tm-data-a; - legge la testata
COGTESBO(scarta se non trovata); - legge
COGMOAGGper l'eventuale quantita' scalare alternativa (moa-alt-qta); - verifica se il DDT e' collegato a un contratto: scorre
ASNCNMTBper gli estremi documento e, se la matricola collegata e' di tipo "firewall", impostaw-fl-ddt-contratto = "S"e memorizza contratto/matricola/serial number; - individua nella distinta base (
ASNMTRDB) il componente corrispondente all'articolo; - se il movimento e' antecedente a
tm-data-da, aggiorna solo il saldo iniziale (tm-saldo-prec), sommando/sottraendomoa-alt-qta(se presente e DDT da contratto) oppuremag-qtamagaz, in base a entrata/uscita (mag-entrusc); - altrimenti scrive una riga di transito tipo
Econ data, documento, clienti, quantita' fatturata (mag-qtamagaz) e quantita' scalare.
2. Movimenti previsionali da contratto (z-grid-1000-loop ... z-grid-1299)¶
Cerca l'articolo tra i componenti distinta (ASNMTRDB), risale alla matricola (ASNMATRI, solo tipo "firewall") e ai contratti collegati (ASNCNMTR). Per ciascun contratto valuta, tramite un'articolata casistica (casi 1-7 commentati nel sorgente) basata su acnc-data-da, acnc-data-a e acnc-data-ult-fatt, se e in che intervallo generare movimenti previsionali:
- calcola l'eventuale saldo dei mesi precedenti al periodo (
z-grid-1054-loop); - genera una riga previsionale tipo
Pper ciascun mese del periodo (z-grid-1060-loop), con segno"U"(uscita), quantita' pari aamdb-qta/quantita' scalare, cliente e serial number dal contratto/matricola. Le date fine mese sono calcolate con GESDATE.
3. Calcolo saldo progressivo (z-grid-9999-loop)¶
Rilegge tutte le righe del transito ordinate per data (chia3) e ricalcola in modo cumulativo t-gor-r-saldo = tm-saldo-prec + saldo progressivo, sommando/sottraendo la quantita' scalare a seconda del segno (t-gor-r-segno). Il ricalcolo del progressivo a fine scansione e' l'approccio adottato dal 31/07/2024 (le vecchie formule inline sono commentate).
Validazioni testata¶
- Articolo (
x-controlla-tm-articolo): obbligatorio (m-asn05g-14) e deve esistere inCOGMERCI(m-asn05g-15). - Data fine (
x-controlla-tm-data-a): se valorizzata deve essere >= data inizio (m-asn05g-16).
Messaggi principali¶
| ID | Contesto |
|---|---|
m-asn05g-10 |
Etichetta pulsante custom "salva filtro" (Ctrl+S) |
m-asn05g-11 |
Etichetta pulsante custom "cerca filtro" (Ctrl+F) |
m-asn05g-12 |
Titolo maschera |
m-asn05g-13 |
Nessun movimento trovato |
m-asn05g-14 |
Articolo obbligatorio |
m-asn05g-15 |
Articolo inesistente |
m-asn05g-16 |
Data fine antecedente alla data inizio |
Storico modifiche significative (dal sorgente)¶
- 07/06/2024: rimosso il filtro sulle sole causali "aggiorna giacenza = SI"; ora si considerano tutti i movimenti.
- 31/07/2024: introdotta la navigazione filiera documento (SF2, pulsante custom + COGMA3); introdotto il tipo movimento (
E/P) in griglia; il saldo progressivo viene calcolato in coda rileggendo l'intera griglia (le formule inline precedenti sono state commentate).
Note implementative¶
- Il file di transito e' costruito riusando
cogtrans.k03come strutturat-grid-det; la chiavechia3fornisce l'ordinamento per data usato dal ricalcolo del saldo. - La casistica dei movimenti previsionali (casi 1-7) e' documentata inline con esempi di date; e' la parte piu' delicata del programma (determinazione dell'intervallo da fatturare in base a validita' e ultima fatturazione della matricola sul contratto).
- I contatori/pulsanti custom sono creati con
x-display-push-button-custome le bitmap "ricerca"/"magazzino". - La griglia e' interamente read-only:
z-99-begin-entry-grid-dettermina sempre l'entry (nessuna colonna editabile).