ASN056 - Proposta contratto matricole¶
Sorgente: cbl/asn056.cbl (1.728 righe) | Tipo: Programma interattivo con griglia paginata e file di transito
Menu: Assist 2.0 > Archivi > Contratti > Proposta contratto matricole
Scopo¶
Per ogni matricola con garanzia in scadenza nel periodo indicato, propone l'aggancio a un contratto attivo del cliente con tipo fatturazione "M" (a matricola). Alla conferma scrive le righe di pertinenza matricola sul contratto (ASNCNMTR + ASNCNMT2).
Escluse: matricole gia' collegate a contratto attivo "a matricola", matricole "Muletto" gia' assegnate.
File acceduti¶
| File | Copybook | Modalita' | Uso |
|---|---|---|---|
| ASNMATRI | amtr-rec |
Input | Scorre tutte le matricole, filtra per amtr-gar-fin nel periodo |
| ASNMTRTP | amtp-rec |
Input | Tipologia matricola (descrizione) |
| ASNCNMTR | acnc-rec |
I-O | Pertinenze matricole su contratto: controllo collegamenti esistenti (chiave k02 id-matricola) e scrittura nuove |
| ASNCNMT2 | acnb-rec |
Output | Tabella complementare matricole/contratto (PCASE-4281) |
| ASNCNTES | acnt-rec |
Input | Testate contratti: scorre quelli del cliente (chiave k05 cli-ass) per individuare candidati |
| ASNCNCND | acnd-rec |
Input | Condizioni contratto: verifica acnd-tip-fatt = "M" |
| COGGEANA | ana-rec |
Input | Anagrafica cliente (nome, zona, provincia) |
| COGTABEL | euta-rec |
Input | Decodifica zona (tipo 88), regione da provincia (tipo 26) |
File di transito (temporanei)¶
| File | Scopo |
|---|---|
cogtrans (trs_asn056.{oper}) |
Buffer matricole estratte. Chiave 1: trs-id-mat. Chiave 2 alternativa: nome + cli-cod + id-mat (ordinamento alfabetico per la griglia paginata) |
filelog (asn056_{oper}.txt) |
File di log testuale con segnalazioni (F7 lo apre via OPENFILE) |
Chiavi secondarie¶
cogtrans.k01,k02asncntes.k05(cli-ass)asncnmtr.k02(id-matricola)
Programmi chiamati¶
| Programma | Operazione | Scopo |
|---|---|---|
| ASN220 | ASN220-CALLED con asn220-tip-fatt = "M" |
Ricerca contratto manuale (F9 su colonna tm-r-id-contr), filtra a contratti "a matricola" del cliente (asn220-cli-ass) |
| DTPRG | (utility) | Conversione data → giorni progressivi |
| PRGDT | (utility) | Conversione giorni progressivi → data |
| GRIDADMN | — | Personalizzazione griglia (Prepara, Svuota-Tutto, Add/Modify-Record, S-F4) |
| OPENFILE | — | Apertura file di log via F7 |
Variabili di maschera¶
| Campo | Tipo | Note |
|---|---|---|
tm-data-ini, tm-data-fin |
9(08) | Periodo di scadenza garanzia |
tm-r-id-mat, tm-r-sn-mat, tm-r-tipo-mat, tm-r-tipo-des |
Dati matricola riga griglia | |
tm-r-data-fine |
x(10) | Data fine garanzia formattata |
tm-r-cli, tm-r-nome |
9(05)/x(40) | Cliente |
tm-r-zona, tm-r-zona-d, tm-r-regione, tm-r-regione-d |
Zona/regione (TASK 280219) | |
tm-r-id-contr |
9(12) | Contratto proposto (o 0 se ambiguo) |
tm-r-fl-piu-contr |
x | "+Contratti" se ambiguo |
tm-r-sel |
x | Marca selezione |
Flusso principale¶
Fase 1: input periodo¶
Solo tm-data-ini e tm-data-fin sono accept obbligatori. x-controlla-tm-data-fin verifica tm-data-ini <= tm-data-fin.
Fase 2: caricamento transito (carica-file)¶
- Apre
cogtransoutput efilelogoutput - Scorre
ASNMATRIdall'inizio - Per ogni matricola con
amtr-gar-finnel range:- Verifica esclusione: scorre
ASNCNMTR(k02) perid-matricola = amtr-id:- Se
acnc-tip = 'M'(muletto) → log "Matricola: \<id> collegata a contratto: \<id> tipo Muletto", skip - Altrimenti legge
ASNCNCND(pert C) eASNCNTES. Seacnt-fl-chiuso = spaceseacnd-tip-fatt = "M"→ log "Matricola collegata a contratto: \<id>", skip
- Se
- Conta contratti attivi "a matricola" del cliente: scorre
ASNCNTESk05 percli-ass-tip/cod = amtr-cli-tip/cod, contaw-quantiquelli conacnt-fl-chiuso = spaceseacnd-tip-fatt = "M" - Se
w-quanti = 0→ log "Cliente: \<cod> Senza Contratti (Matricola:\<id>)" - Scrive record
trs-recsucogtranscon:- Se
w-quanti > 1→trs-id-contratto = 0,trs-fl-piu-contr = "S" - Se
w-quanti = 1→trs-id-contratto = w-id-contratto
- Se
- Popola
trs-zona,trs-zona-d,trs-regione,trs-regione-ddaCOGGEANA+COGTABEL - Chiave alternativa
trs-chia2 = nome + cli-cod + id-matper ordinamento alfabetico
- Verifica esclusione: scorre
Fase 3: griglia paginata¶
Riapre cogtrans in I-O, costruisce la griglia con paginazione standard (pg-up/pg-dwn + fscrol2.cpy + dtab.cpy).
Su Invio sulla riga:
- Verifica che
trs-id-contratto != 0(se 0 mostram-asn056-9-1"Selezionare prima il contratto") - Toggle
trs-fl-seltram-propostae spaces - Aggiorna grid
Su F9 sulla colonna contratto: chiama ASN220 e valida via x-controlla-tm-r-id-contr:
- ASNCNTES deve esistere
- acnt-fl-chiuso deve essere spaces (non C/D)
- ASNCNCND deve avere acnd-tip-fatt = "M"
- Cliente del contratto deve coincidere con quello della matricola (trs-cli-tip/cod)
Fase 4: conferma (F3 = a1-aggiorna)¶
Per ogni record cogtrans con trs-fl-sel != spaces e trs-id-contratto != 0:
- Calcola
w-prog-2come maxacnc-prog+ 1 scorrendoASNCNMTR(chiave primaria) perid-contratto + tip = 'C' - Calcola
acnc-data-da = trs-data-fine + 1 giornoviaDTPRG/PRGDT - Scrive
ASNCNMTR:tip = "C",prog = w-prog-2id-matricola = trs-id-matraggr = spaces,canone = zerodata-dacalcolata,data-a = zerocadenza-fatt = spacesprovenienza = "P"(proposta)da-confermare = "X"(richiede revisione)data-ult-fatt/data-ult-fatt-prec = zero
- PCASE-4281 (TASK 280125): scrive anche
ASNCNMT2con stessa chiave (write o rwr se esistente)
Validazioni F9 manuale (x-controlla-tm-r-id-contr)¶
| Controllo | Errore |
|---|---|
| Esistenza contratto | m-asn056-17-1 |
acnt-fl-chiuso = 'C' o 'D' |
m-asn056-18-1 |
acnd-tip-fatt != "M" |
m-asn056-19-1 |
| Cliente assistito contratto != cliente matricola | m-asn056-20-1 / m-asn056-21-1 (cli-ass vs cli-fat) |
Configurazioni¶
ASN056 non legge RNEWCONF.
Messaggi¶
| ID | Contesto |
|---|---|
m-asn056-2-1 |
Titolo maschera |
m-asn056-3-1 |
"Confermi aggiornamento?" |
m-asn056-4-1/5-1 |
Errori apertura cogtrans / "Estrazione in corso" |
m-asn056-6-1 |
"Nessuna matricola trovata nel periodo" |
m-asn056-7-1/8-1 |
Fine/inizio paginazione |
m-asn056-9-1 |
"Selezionare prima un contratto" (Invio su riga con id-contratto=0) |
m-asn056-10-1 ... 12-1 |
Errori validazione F9 |
m-asn056-13-1 |
Conferma aggiornamento finale |
m-asn056-14-1 ... 16-1 |
Validazione date in testata |
m-asn056-17-1 ... 21-1 |
Validazione contratto manuale |
Note implementative¶
- Il file
cogtranse' creato nella temp dir con suffisso{wo-oper}per evitare collisioni multi-utente - Il file di log
asn056_{oper}.txtviene aperto da F7 (apertura sul server tramiteOPENFILE) - TASK 280219 (28/02/2019): aggiunti campi zona/regione anche se non sempre visualizzati - utili per filtri/ordinamenti in griglia
- TASK 141125 (14/11/2025): considera disdetta anticipata con
acnt-fl-chiuso = 'D'oltre a'C' - PCASE-4281 (28/01/2025): tabella complementare
ASNCNMT2per gestione dati estesi pertinenze matricola - Solo il
tm-r-id-contre' editabile sulla griglia: gli altri campi sono read-only (z-99-begin-entry-tm-tab)