Vai al contenuto

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.k04
  • asncnmtb.k02
  • asncnmtr.k02
  • cogtrans.k03 (usata come struttura della tabella di transito t-grid-det; ordinamento sulla chiave chia3)

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:

  1. salta i movimenti con mag-da3 > tm-data-a;
  2. legge la testata COGTESBO (scarta se non trovata);
  3. legge COGMOAGG per l'eventuale quantita' scalare alternativa (moa-alt-qta);
  4. verifica se il DDT e' collegato a un contratto: scorre ASNCNMTB per gli estremi documento e, se la matricola collegata e' di tipo "firewall", imposta w-fl-ddt-contratto = "S" e memorizza contratto/matricola/serial number;
  5. individua nella distinta base (ASNMTRDB) il componente corrispondente all'articolo;
  6. se il movimento e' antecedente a tm-data-da, aggiorna solo il saldo iniziale (tm-saldo-prec), sommando/sottraendo moa-alt-qta (se presente e DDT da contratto) oppure mag-qtamagaz, in base a entrata/uscita (mag-entrusc);
  7. altrimenti scrive una riga di transito tipo E con 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 P per ciascun mese del periodo (z-grid-1060-loop), con segno "U" (uscita), quantita' pari a amdb-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 in COGMERCI (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.k03 come struttura t-grid-det; la chiave chia3 fornisce 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-custom e le bitmap "ricerca"/"magazzino".
  • La griglia e' interamente read-only: z-99-begin-entry-grid-det termina sempre l'entry (nessuna colonna editabile).