Vai al contenuto

ASN05F - Ricalcolo tariffe matricole contratti

Sorgente: cbl/asn05f.cbl (778 righe) | Tipo: Programma interattivo di aggiornamento massivo (senza griglia)

Menu: Assist 2.0 > Archivi > Contratti > Ricalcolo tariffe


Scopo

Ricalcola in modo massivo la tariffa di magazzino (amdb-tariffa) dei componenti di distinta base delle matricole gestite dai contratti "A Matricola" (acnd-tip-fatt = "M"), limitatamente alle matricole del tipo configurato come "firewall".

Il ricalcolo puo' essere:

  • assoluto: alla tariffa esistente si somma un valore fisso (tm-valore);
  • percentuale: alla tariffa esistente si aggiunge una percentuale di ricarico (tm-ricarico).

L'operatore imposta articolo, cliente e uno dei due parametri (ricarico oppure valore, mutuamente esclusivi), conferma con F3 e il programma scorre i contratti aggiornando le distinte base. A fine elaborazione mostra i contatori dei record letti (tm-letti) e scritti (tm-scritti).

Nota: l'elaborazione e' subordinata alla presenza della configurazione del tipo matricola "firewall". Se tm-cfg-tipo-mtr-firewall e' vuoto, all'ingresso viene mostrato il messaggio m-asn05f-09 e la b-elabora non esegue nulla.


Interfaccia (linkage)

procedure division using stringhe (solo l'area standard wcont/wcont1). Il programma e' pensato per uso da menu: il blocco di gestione "called" (asn05f-called/asn05f-caller) e' presente ma commentato.

File acceduti

Input/lettura

File Copybook Uso
ASNCNTES acnt-rec Testata contratto. Scansione completa (st-asncntes-notmin); si escludono contratti rinnovati (acnt-rinnovato = "S") e disdetti/chiusi (acnt-fl-chiuso = "C" o "D")
ASNCNCND acnd-rec Condizioni contratto: si considerano solo i contratti "A Matricola" (acnd-tip-fatt = "M"), letti con acnd-pertinenza = "C"
ASNCNMTR acnc-rec Matricole del contratto (acnc-tip = "C"), lette per id contratto
ASNMATRI amtr-rec (amtr-id) Anagrafica matricola: si prosegue solo se amtr-tip = tm-cfg-tipo-mtr-firewall
COGMERCI mer-rec Validazione articolo filtro (tm-merce)
COGGEANA ana-rec Validazione/descrizione cliente filtro (ana-tipo = "C")

Aggiornamento

File Copybook Scrittura
ASNMTRDB amdb-rec Distinta base della matricola. Per ogni componente che supera i filtri viene ricalcolata amdb-tariffa e riscritto il record (rwr-asnmtrdb)

Chiavi secondarie

Le chiavi utilizzate sono le primarie fornite da Screens (.select/.fd). La scansione di ASNCNTES, ASNCNMTR e ASNMTRDB avviene tramite st-...-notmin sulla chiave principale.

Programmi chiamati

Programma Operazione Scopo
COGU10W Arrotonda Arrotondamento della tariffa ricalcolata sulla divisa di conto (u10-divisa-dato, u10-data = datasis)
COGS65W (lookup cliente) Gestione campo cliente tm-cli-cod (util util-s65, F8 aiuto/F9 ricerca)
COGS68 (lookup articolo) Gestione campo articolo tm-merce (util util-s68)
RNEWCONF Lettura configurazione tipo-mtr-firewall (gruppo ass-contr)

La divisa di conto viene ricavata con get-divisa-conto (copybook getdcont.cpy).

Configurazioni RNEWCONF (x99-confi)

Idx Gruppo Parametro Variabile Effetto
01 ass-contr tipo-mtr-firewall tm-cfg-tipo-mtr-firewall Tipo matricola su cui operare. Se vuoto, elaborazione inibita

Con F1 sul campo articolo la configurazione puo' essere richiamata in modifica (ncnf-ope = "Modifica").

Logica di elaborazione (b-elabora)

  1. Se tm-cfg-tipo-mtr-firewall = spaces esce subito (b-999).
  2. Scorre tutte le testate contratto ASNCNTES:
  3. salta i contratti rinnovati e i disdetti/chiusi;
  4. legge ASNCNCND (pertinenza "C") e prosegue solo se acnd-tip-fatt = "M";
  5. se e' impostato il filtro cliente (tm-cli-cod != 0), il contratto e' considerato solo se il codice coincide con acnt-cli-fat-cod o acnt-cli-ass-cod.
  6. Per ogni contratto valido scorre le matricole ASNCNMTR (acnc-tip = "C"):
  7. legge ASNMATRI e prosegue solo se il tipo matricola coincide con quello configurato.
  8. Per ogni matricola scorre la distinta base ASNMTRDB:
  9. incrementa tm-letti (display ogni 100 record, controllato via tm-letti2);
  10. se e' impostato il filtro articolo (tm-merce != k-merce-null) considera solo il componente con amdb-merce = tm-merce;
  11. calcola la nuova tariffa:
    • se tm-valore != 0: w-tariffa = amdb-tariffa + tm-valore (ricalcolo assoluto);
    • altrimenti: w-tariffa = amdb-tariffa + (amdb-tariffa * tm-ricarico / 100) (ricalcolo percentuale);
  12. arrotonda con COGU10W, aggiorna amdb-tariffa e riscrive il record (rwr-asnmtrdb), incrementando tm-scritti.

Validazioni testata

  • Articolo (x-controlla-tm-merce): se valorizzato deve esistere in COGMERCI (m-asn05f-12).
  • Cliente (x-controlla-tm-cli-cod): se valorizzato deve esistere in COGGEANA tipo C; ne viene mostrata la ragione sociale (m-asn05f-13).
  • Ricarico / Valore (x-controlla-tm-valore): almeno uno dei due deve essere valorizzato e non possono essere valorizzati entrambi contemporaneamente (m-asn05f-14).

Messaggi principali

ID Contesto
m-asn05f-09 Tipo matricola "firewall" non configurato (avviso all'ingresso)
m-asn05f-10 Titolo maschera
m-asn05f-11 Conferma esecuzione ricalcolo
m-asn05f-12 Articolo inesistente
m-asn05f-13 Cliente inesistente
m-asn05f-14 Ricarico/valore mancanti o entrambi valorizzati
m-asn05f-15 Elaborazione completata (con contatori letti/scritti)

Note implementative

  • Il flusso di accept e' basato su GO TO verso i paragrafi a-tm-merce, a-tm-cli-cod, a-tm-ricarico, a-tm-valore e sulla gestione mouse x-test-mouse (schema standard delle maschere non a griglia).
  • Ricarico e valore sono alternativi: il controllo lo impone esplicitamente, coerentemente con le due formule di calcolo.
  • La b-elabora e' invocata con perform b-elabora thru ex-b-elabora: paragrafo autocontenuto con uscite verso b-999/ex-b-elabora.
  • Il contatore a video viene rinfrescato ogni 100 record letti/scritti (controllo tramite le ultime 2 cifre tm-letti2/tm-scritti2).