Vai al contenuto

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.k02
  • t-prest.k02 (cogtrans.k02 rinominata)

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-ricercaelabora-asncntes)

  1. st-asncntes-notmin-chia7 con acnt-data-a = tm-da-data: scorre i contratti con data fine >= inizio periodo.
  2. scrivi-cogtrans filtra per data e cliente di fatturazione (tm-cli-fat).
  3. ok-scrivi-cogtrans:
  4. Disdetta anticipata (TASK-2499): se acnt-fl-chiuso = 'D' e acn2-data-scadenza != 0, la data fine effettiva w-acnt-data-a diventa la data scadenza.
  5. Se il contratto termina oltre tm-a-data ma inizia dopo, viene escluso.
  6. Se tm-disdetti != 'S', esclude i contratti chiusi/disdetti (C/D).
  7. Scorre le tariffe ASNCNTAR (pertinenza C) del contratto:
  8. Voci con quantita' 0 incluse solo se tm-tutte-a-contratto = 'S'.
  9. ok-scriti-t: se la merce e' completa (gru+sot+cod) scrive t-prest (voce prevista) e i movimenti (t-mov); se e' solo gruppo/sottogruppo espande su COGMERCI scrivendo 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 (tipo I o D, riferimento, quantita', data).
  • Aggiorna la riga t-prest corrispondente ripartendo la quantita':
  • t-mov-data < tm-da-dataq-precedente
  • nel periodo tm-da-data..tm-a-dataq-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)

  1. COGS54 per periferica; COGPA3 per il modello e le tabelle di dettaglio TAB-PREST / TAB-MOV.
  2. Apre il documento XML da modello (WORDMDL Apri-XML), scrive i tag DATA-INI/DATA-FIN.
  3. 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 da cogpa3-te-info.
  4. stampa-tab-mov: dettaglio movimenti (MOVD data, MOVT tipo, MOVR riferimento, MOVQ quantita').
  5. WORDMDL Esegui per 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 in z-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.