ASN201 - Consumi su contratto¶
Sorgente: cbl/asn201.cbl (5.522 righe) | Tipo: Programma interattivo di sola consultazione con griglia paginata, file di transito e stampa WORDMDL
Menu: Assist 2.0 > Operativo > Visualizzazioni > Consumi su contratto
Scopo¶
Confronta, per i contratti Assist attivi in un periodo, le quantita' previste delle voci a contratto (prestazioni/materiali) con i consumi effettivi movimentati (interventi e documenti di magazzino). Per ogni voce mostra: quantita' prevista, consumo precedente al periodo, consumo nel periodo, saldo, consumo successivo, saldo attuale e quantita' residua.
L'elaborazione costruisce due file di transito:
- t-prest: una riga per ogni voce prevista dal contratto (cliente fatt./assist./contratto/merce), con i totalizzatori delle quantita' consumate
- t-mov: il dettaglio dei singoli movimenti (interventi + documenti di magazzino) che alimentano i consumi, ottenuti tramite
ASNS03
La maschera e' a due pagine (tab): pagina 1 filtri, pagina 2 risultati in griglia paginata. Prevede stampa report (F9) su modello WORDMDL con rotture per cliente ed export Excel (S-F5).
Interfaccia chiamato (linkage)¶
Riceve util-v52 (copy "utilv52.cpy") ma il codice attivo non usa i campi di input come chiamante: w-dati-called viene solo inizializzato e il ramo w-dc-called='S' non risulta mai attivato dal linkage. Di fatto il programma funziona come standalone da menu.
File acceduti¶
Input/lettura¶
| File | Copybook | Uso |
|---|---|---|
| ASNCNTES | acnt-rec |
Testate contratto: chiave k07 su acnt-data-a. Cliente fatturazione/assistito, riferimento, flag chiuso (C/D), data da/a |
| ASNCNTE2 | acn2-rec |
Estensione contratto: acn2-data-scadenza per disdetta anticipata (TASK-2499) |
| ASNCNTAR | acnr-rec |
Tariffe/voci a contratto: pertinenza C, merce, quantita' prevista |
| COGMERCI | mer-rec |
Espansione voce quando la tariffa e' su gruppo/sottogruppo (giro su tutte le merci) |
| COGRACMC | rcm-rec |
Raccordo codici merce (chiave k02): codice avanzato rcm-cod-ava per la colonna CMA |
| COGGEANA | ana-rec |
Clienti fatturazione/assistito (ragione sociale, listino) |
Transito¶
| File | Copybook | Scopo |
|---|---|---|
t-prest (asn201_{oper}) |
cogtrans.k01/.k02 rinominate t-prest |
Voci previste con totalizzatori consumi (chiave 2 su cli-fat+data se az-mer-ava != N) |
t-mov (asn201_MOV_{oper}) |
cogtrans.k01 rinominata t-mov |
Movimenti di consumo (tipo I = intervento, D = documento magazzino) |
t-raggr (ASNS03_{oper}) |
cogtrans.k01 rinominata t-raggr / t-asns03-t- |
File prodotto da ASNS03 con i movimenti raggruppati (aperto in input) |
I record di transito riusano la struttura cogtrans con il costrutto copy ... replacing leading.
Chiavi secondarie¶
asncntes.k07(data-a)cogracmc.k02t-prest.k02(cogtrans.k02rinominata)
Programmi chiamati¶
| Programma | Contesto | Scopo |
|---|---|---|
| ASNS03 | ok-scrivi-t-mov / ok-scrivi-t-mov-1 |
Estrae i movimenti di consumo di una merce sul contratto (interventi + documenti), scrivendoli nel transito ASNS03; asns03-i-crea-trs = "S" |
| COGS65W | F8 su cliente fatturazione | Lookup cliente |
| COGS52W | date da/a | Calendario/validazione date |
| COGS68 | voce prestazione/materiale | Lookup merce completa |
| COGU10W | edit importi | Formattazione valori (divisa conto) |
| COGS54 | F9 stampa | Selezione periferica/emulazione stampa |
| COGPA3 | F9 stampa | Configurazione modello e tabelle di dettaglio (TAB-PREST, TAB-MOV) |
| WORDMDL | F9 stampa | Generazione documento XML da modello Word (Apri-XML/Aggiungi-XML/Esegui) |
| GRIDADMN | griglia | Prepara/Add/Svuota/personalizzazione, S-F4 |
| W$MENU | menu contestuale | Menu pop-up griglia (predisposto, voci commentate) |
Nota: non risultano chiamate a RNEWCONF con parametri effettivi — il paragrafo x99-src-cfg e' vuoto e la struttura tab-config non viene popolata.
Logica di estrazione (a-ricerca → elabora-asncntes)¶
st-asncntes-notmin-chia7conacnt-data-a = tm-da-data: scorre i contratti con data fine >= inizio periodo.scrivi-cogtransfiltra per data e cliente di fatturazione (tm-cli-fat).ok-scrivi-cogtrans:- Disdetta anticipata (TASK-2499): se
acnt-fl-chiuso = 'D'eacn2-data-scadenza != 0, la data fine effettivaw-acnt-data-adiventa la data scadenza. - Se il contratto termina oltre
tm-a-datama inizia dopo, viene escluso. - Se
tm-disdetti != 'S', esclude i contratti chiusi/disdetti (C/D). - Scorre le tariffe
ASNCNTAR(pertinenzaC) del contratto: - Voci con quantita' 0 incluse solo se
tm-tutte-a-contratto = 'S'. ok-scriti-t: se la merce e' completa (gru+sot+cod) scrivet-prest(voce prevista) e i movimenti (t-mov); se e' solo gruppo/sottogruppo espande suCOGMERCIscrivendo un movimento per merce.
Scrittura t-prest (ok-scrivi-t-prest)¶
Una riga per cliente-fatt/cliente-ass/contratto/merce con q-prevista = acnr-qta e CMA da COGRACMC. Il cliente di fatturazione, se assente sul contratto, ricade sul cliente assistito.
Scrittura movimenti e totalizzazione (ok-scrivi-t-mov)¶
Chiama ASNS03 (che scrive il file ASNS03_ con i movimenti della merce). Per ogni movimento letto:
- Scrive una riga in
t-mov(tipoIoD, riferimento, quantita', data). - Aggiorna la riga
t-prestcorrispondente ripartendo la quantita': t-mov-data < tm-da-data→q-precedente- nel periodo
tm-da-data..tm-a-data→q-periodo - oltre →
q-successiva - Ricalcola
q-residua = q-prevista - (q-periodo + q-precedente).
Visualizzazione griglia (vis-tabella)¶
Griglia paginata (fscrol2/dtab/utilpggr) su t-prest; ogni riga (x-riempi-grid-record) mostra cliente fatturazione/assistito, id/riferimento contratto, merce, quantita' prevista/precedente/periodo, saldo (prec+periodo), successiva, saldo attuale (saldo+successiva), residua e stato disdetta (Disdetto / Disdetto Antic.). Spaginamento con pg-up/pg-dwn.
Stampa report (F9, stampa)¶
COGS54per periferica;COGPA3per il modello e le tabelle di dettaglioTAB-PREST/TAB-MOV.- Apre il documento XML da modello (
WORDMDL Apri-XML), scrive i tagDATA-INI/DATA-FIN. stampa-tab-prest: rotture per cliente fatturazione, con sottototali per cliente assistito (TOT1), per cliente fatturazione (TOT2) e generale (TOT3). Le colonne del modello (CFC,CFD,CTID,CRRI,CDIS,QPRE,Q1..Q6,MI/MA/MD) sono pilotate dacogpa3-te-info.stampa-tab-mov: dettaglio movimenti (MOVDdata,MOVTtipo,MOVRriferimento,MOVQquantita').WORDMDL Eseguiper produrre/stampare il documento.
Messaggi principali¶
Il programma usa messaggi testuali inline (non tabellati con x-set-m-...):
- "Funzione gia' in uso dall'operatore!!" — errore apertura transito t-prest/t-mov/t-raggr
- "Digitare l'inizio del periodo .." / "Digitare la fine periodo .." — date obbligatorie
- "Date Incongruenti" — data a < data da
- "Nessun dato ulteriore!!" / "Nessun dato precedente!!" — limiti paginazione
- "Dettaglio tabella TAB-PREST , TAB-MOV non trovato." — modello di stampa incompleto
Storico modifiche significative (dal sorgente)¶
- 141125: TASK-2499 disdetta anticipata (
acnt-fl-chiuso = 'D'+acn2-data-scadenza); nella selezione la data fine effettiva usa la scadenza; etichetta "Disdetto Antic." nella griglia e nei report
Note implementative¶
- I tre file di transito (t-prest, t-mov, t-raggr) sono per operatore (
wo-oper), ricreati in output e riaperti i-o a inizio elaborazione; cancellati inz-chiudi. - La quantita' consumata e' scomposta in tre finestre temporali (precedente / nel periodo / successiva) per evidenziare l'andamento rispetto al periodo scelto.
az-mer-ava != 'N'attiva l'uso del codice merce avanzato e della chiave 2 su t-prest (ordinamento per cliente/data).- Il caricamento dei movimenti e' interamente delegato ad ASNS03: ASN201 non legge direttamente COGMOMAG/ASNINDET, ma consuma il file di raggruppamento prodotto dal sottoprogramma.
- La marginalita'/costi-ricavi (
w-tot-a..w-tot-i,z-u10-...) e' predisposta nel working ma i relativi calcoli sono commentati.