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)¶
- Se
tm-cfg-tipo-mtr-firewall = spacesesce subito (b-999). - Scorre tutte le testate contratto
ASNCNTES: - salta i contratti rinnovati e i disdetti/chiusi;
- legge
ASNCNCND(pertinenza"C") e prosegue solo seacnd-tip-fatt = "M"; - se e' impostato il filtro cliente (
tm-cli-cod != 0), il contratto e' considerato solo se il codice coincide conacnt-cli-fat-codoacnt-cli-ass-cod. - Per ogni contratto valido scorre le matricole
ASNCNMTR(acnc-tip = "C"): - legge
ASNMATRIe prosegue solo se il tipo matricola coincide con quello configurato. - Per ogni matricola scorre la distinta base
ASNMTRDB: - incrementa
tm-letti(display ogni 100 record, controllato viatm-letti2); - se e' impostato il filtro articolo (
tm-merce != k-merce-null) considera solo il componente conamdb-merce = tm-merce; - 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);
- se
- arrotonda con COGU10W, aggiorna
amdb-tariffae riscrive il record (rwr-asnmtrdb), incrementandotm-scritti.
Validazioni testata¶
- Articolo (
x-controlla-tm-merce): se valorizzato deve esistere inCOGMERCI(m-asn05f-12). - Cliente (
x-controlla-tm-cli-cod): se valorizzato deve esistere inCOGGEANAtipoC; 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 TOverso i paragrafia-tm-merce,a-tm-cli-cod,a-tm-ricarico,a-tm-valoree sulla gestione mousex-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-elaborae' invocata conperform b-elabora thru ex-b-elabora: paragrafo autocontenuto con uscite versob-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).