ASN401 - Estrazione file interventi per Agenzia Entrate
Intestazione
| Campo |
Valore |
| Programma |
ASN401 |
| Titolo |
Estrazione file interventi su matricole per Agenzia Entrate |
| Modulo |
Assist 2.0 - Utility |
| Posizione menu |
Assist 2.0 > Operativo > Utility > Estrazione dati per Agenzia Entrate |
| Sorgente |
cbl/asn401.cbl (~2.872 righe) |
| Tipo |
Programma interattivo single-form + griglia + estrazione file fiscale |
Scopo e logica generale
ASN401 produce il file telematico per la comunicazione trimestrale all'Agenzia delle Entrate degli interventi su matricole fiscali (registratori di cassa / strumenti di misura) con modello di certificazione MIS00 (codice 26).
Il flusso e':
- Acquisizione parametri di estrazione (anno, trimestre, range date, intermediario, modelli di certificazione, tipo matricola)
- Costruzione di un file di transito
COGTRANS con un record per ogni intervento candidato
- Visualizzazione griglia di anteprima/correzione (campi
Esito e Tipo intervento modificabili)
- Su F7: controllo qualita' dati con log errori; se OK, generazione file
tabverpe_AAAA_T.txt con record T0 (testa), T2 (dettaglio), T9 (coda)
Flusso principale
- Apri: apertura file, lettura azienda, caricamento configurazione
assist (3 chiavi info CRM tecnico)
- Validazione configurazione iniziale: verifica codici info CRM tecnico, esistenza cliente interno
az-cli-int con dati obbligatori. Se manca qualcosa, blocco o richiesta modifica config
- Accept parametri (
a-tm-anno -> ... -> a-tm-modello-3): sequenza accept con validazione
- Conferma ->
crea-transito:
- Loop su
ASNINTES per chiave chia7 (acit-int-data) nel range date
- Filtro
acit-stato = "P" o "C" (chiuso o aggiornato da mobile)
- Per ogni intervento, verifica che sia il piu' vecchio della chiamata (loop su
BSNINTES = ASNINTES con rename)
- Loop su
ASNCHDET per matricole della chiamata che hanno achd-modello-cert = uno dei 3 modelli
- Filtro per
tm-tipo-mat se valorizzato
- Lettura
ASNMATRI, ASNCHTES, COGGEANA, COGRIFER, COGANATN, ASNMARCH, ASNMODEL, ASNMTRTP
- Lettura 3 info CRM del tecnico (
CRMS06 "LEGGI" per codfisc, id-alfa, id-num)
- Scrittura record
COGTRANS con tutti i dati necessari al file finale
- Visualizzazione griglia (
a30 -> a-grid): caricamento tm-grid-dati-ele dal transito, editing inline su Esito e Tipo intervento
- F7 ->
x7-estrazione-file:
- Ri-validazione configurazioni
- Apertura
filelog, scan transito con x71-controlla-dati (log errori per ogni campo mancante)
- Se errori: apertura log con
OPENFILE, fine
- Se OK: conferma utente, apertura
mifisc, scrittura T0/T2/T9, dialogo finale con DIALOGS
File e tabelle acceduti
| File |
Record |
Modalita' |
Uso |
| ASNINTES |
acit-rec |
Input |
Interventi: scan su chia7 (data intervento) per range periodo |
| ASNINTES (alias BSNINTES) |
bcit-rec |
Input |
Stesso file con copybook rinominato per ricerca "intervento piu' vecchio della chiamata" |
| ASNCHDET |
achd-rec |
Input |
Dettaglio chiamata: matricola e modello certificazione |
| ASNCHTES |
acht-rec |
Input |
Testata chiamata: cliente assistito/fatturazione |
| ASNMATRI |
amtr-rec |
Input |
Matricole: tipo, sn, marca, modello |
| ASNMODEL |
amod-rec |
Input |
Modelli matricola: descrizione |
| ASNMARCH |
amrc-rec |
Input |
Marche matricola: descrizione |
| ASNMTRTP |
amtp-rec |
Input |
Tipologie matricola: descrizione |
| ASNSKMOD |
askm-rec |
Input |
Modelli di certificazione (skill model): validazione modelli 1/2/3 |
| COGGEANA |
ana-rec |
Input |
Anagrafica clienti: dati per record T2 + cliente interno per T0/T9 |
| COGRIFER |
rif-rec |
Input |
Riferimenti tecnico (rif-tip = 'C') |
| COGANATN |
atn-rec |
Input |
Anagrafica tecnici: ricava atn-cod-nom per CRMS06 |
| COGTRANS |
trs-rec |
I-O |
File di transito locale al programma per la griglia di anteprima |
| MIFISC |
mifisc-rec |
Output |
File telematico fiscale generato (tabverpe_AAAA_T.txt, record fissi PIC X(1800)) |
| FILELOG |
log-record |
Output |
File log errori validazione (testo con CR/LF) |
Chiavi secondarie utilizzate
| Copybook |
Tabella |
Scopo |
asnintes.k07 |
ASNINTES |
Ricerca interventi per data |
asnintes.k02 |
ASNINTES (rename BSNINTES) |
Ricerca interventi per chiamata |
asnchdet (chiave primaria) |
ASNCHDET |
Ricerca per id chiamata |
cogtrans.k01, cogtrans.k02 |
COGTRANS |
Chiave primaria e ordinamento alternativo |
asnmodel.k02 |
ASNMODEL |
Ricerca modelli matricola |
Programmi chiamati (CALL)
| Programma |
Scopo |
| ASN010 |
Lookup tipo matricola (F8 su tm-tipo-mat) |
| ASN029 |
Lookup modello di certificazione (F8 su tm-modello-1/2/3) |
| CRMS06 |
Lettura informazione CRM del prospect/nominativo (codfisc/id-alfa/id-num tecnico) |
| COGE05 |
Validazione formale codice fiscale / partita IVA (tm-cfisc-int) |
| RNEWCONF |
Caricamento configurazioni (paragrafo x99-confi) |
| GRIDADMN |
Personalizzazione griglia (S-F4) |
| DIALOGS |
Dialogo finale con opzione "Apri file" |
| OPENFILE |
Apertura del log errori o del file generato |
Parametri di configurazione (RNEWCONF)
| Gruppo |
Parametro |
Variabile interna |
Tipo |
Effetto |
assist |
tecnico-info-crm-codfisc |
tm-cfg-tecnico-info-crm-codfisc |
9(04) |
Codice info CRM da cui leggere il codice fiscale del tecnico |
assist |
tecnico-info-crm-id-alfa |
tm-cfg-tecnico-info-crm-id-alfa |
9(04) |
Codice info CRM identificativo alfabetico tecnico |
assist |
tecnico-info-crm-id-num |
tm-cfg-tecnico-info-crm-id-num |
9(04) |
Codice info CRM identificativo numerico tecnico |
Dati di azienda: az-cli-int (cliente interno) deve essere configurato e l'anagrafica corrispondente deve avere ana-cofi, ana-piva, ana-nome, ana-loca, ana-prov compilati.
Tracciati record di output
T0 - Record di testa (PIC X(1800) + CR + LF)
| Campo |
Origine |
t0-tipo = 0, t0-cod-id = "MIS00", t0-cod-nr = 26 |
Costanti |
t0-cod-fisc, t0-piva |
Cliente interno (ana-cofi, ana-piva) |
t0-tipo-abil |
tm-tipo-abil (1/2) |
t0-id-alf-sigillo |
tm-id-alf-sigillo |
t0-rag-soc, t0-comune, t0-prov |
Cliente interno |
t0-anno, t0-trimestre |
Da maschera |
t0-cfisc-int, t0-nr-iscr, t0-imp-trx, t0-data-imp |
Dati intermediario |
T2 - Record di dettaglio (uno per intervento)
| Campo |
Origine |
t2-tipo = 2 |
Costante |
t2-cod-fisc-tecn, t2-id-alf-tecn, t2-id-num-tecn |
Da CRMS06 sul tecnico |
t2-data-ini, t2-data-fin |
trs-data-int (= data intervento) |
t2-esito |
trs-esito (0/1) - modificabile in griglia |
t2-piva, t2-rag-soc, t2-comune, t2-prov, t2-indi, t2-cap |
Cliente della chiamata |
t2-tipo-int |
1/2/3 in base al modello certificazione - modificabile in griglia |
t2-marchio, t2-modello, t2-logotipo, t2-matricolare |
Da ASNMARCH, ASNMODEL, primi 2 char di amtr-sn (logotipo), char 3-20 di amtr-sn (matricolare) |
T9 - Record di coda (identico a T0 ma con tipo 9)
Validazioni in x71-controlla-dati
Per ogni record di transito, scrive log se mancano:
| Campo controllato |
Messaggio log |
trs-cfisc-tecn |
"Manca Codice Fiscale tecnico: N" |
trs-id-alf-tecn |
"Manca Ident. Alfabetico tecnico: N" |
trs-id-nr-tecn |
"Manca Ident. Numerico tecnico: N" |
ana-piva |
"Manca P.Iva Cliente: N" |
ana-nome |
"Manca ragione sociale Cliente: N" |
ana-loca |
"Manca Localita' Cliente: N" |
ana-prov |
"Manca provincia Cliente: N" |
ana-ind |
"Manca Indirizzo Cliente: N" |
ana-cap |
"Manca CAP Cliente: N" |
trs-des-marca |
"Manca Marca su Matricola: N" |
trs-des-modello |
"Manca Modello su Matricola: N" |
trs-tipo-fisc |
"Manca Logotipo su Matricola: N" |
trs-matricolare |
"Manca Cod.Matricolare su Matricola: N" |
Se almeno un errore -> w-ok-dati = "N" -> log mostrato all'utente, estrazione abortita.
Logica di calcolo trimestre
In x-controlla-tm-trimestre, se tm-data-da = 0, le date vengono calcolate dal trimestre:
| Trimestre |
Da |
A |
| 1 |
01/01 anno |
31/03 anno |
| 2 |
01/04 anno |
30/06 anno |
| 3 |
01/07 anno |
30/09 anno |
| 4 |
01/10 anno |
31/12 anno |
Logica "intervento piu' vecchio della chiamata"
In crea-transito, per ogni intervento del periodo viene verificato che non esista un altro intervento della stessa chiamata con data precedente e stato P o C. Solo l'intervento piu' vecchio viene considerato (loop su BSNINTES = ASNINTES rinominato).
Razionale: il file fiscale richiede l'intervento "iniziale" della pratica, non quelli di follow-up.
Limiti tecnici
| Elemento |
Limite |
Costante |
| Numero massimo righe griglia |
2.000 |
k-max-ele-tab |
| Lunghezza record file fiscale |
1.800 byte |
(PIC X(1800)) |
Note tecniche
- Il file di transito
cogtrans viene aperto con nome temporaneo #$trs_asn401.<operatore> nella ext-tmp-dir
- Il file fiscale e' un file binario sequenziale con nome
tabverpe_<ANNO>_<TRIMESTRE>.txt nella ext-tmp-dir
- Il file di log errori e'
#$asn401_<operatore>.txt
- Le accentate nei commenti sono in ISO-8859-1
- Il programma e' completamente standalone; il commento
asn401-called/asn401-caller esiste ma il blocco e' commentato (***********)
- Marker
061017 nel sorgente: il campo id-num-tecn e' stato modificato da PIC 9(04) a PIC X(04) per supportare identificativi alfanumerici
- Lettura tecnico via CRMS06 usa
atn-cod-nom di COGANATN come chiave del nominativo CRM