ASN040 - Gestione veicoli¶
Sorgente: cbl/asn040.cbl (1.488 righe) | Tipo: Programma interattivo a griglia editabile con integrazione CRM/anagrafica nominativi
Menu: Assist 2.0 > Archivi > Tabelle > Veicoli
Scopo¶
Gestisce l'anagrafica dei veicoli dell'assistenza tecnica (mezzi dei tecnici / furgoni officina). Ogni veicolo e' identificato dalla targa e associa descrizione, dati di lettura chilometrica (data lettura, km letti, km rilevati), operatore CRM di riferimento, magazzino, tipo veicolo, peso massimo in kg e — a seconda delle configurazioni — magazzino di partenza (interno/esterno) e tecnico collegato. I veicoli sono memorizzati nel file ASNVEICL e gestiti in griglia editabile con inserimento, modifica ed eliminazione.
Il programma integra la creazione/aggiornamento di schede CRM (nominativi) per i veicoli e la sincronizzazione con il sistema esterno KPN.
Opera in due modalita':
- Standalone (da menu): gestione completa (aggiungi/modifica/elimina) con F3 aggiorna.
- Called (
asn040-called = k-program-ideasn040-callervalorizzato): funge da lookup — INVIO su una riga restituisce targa e descrizione al chiamante (asn040-out-cod/asn040-out-des), con F3 in coppia selezione/modifica.
Interfaccia chiamato (linkage)¶
util-asn040 (copybook utilasn040.cpy):
| Campo | Tipo | Uso |
|---|---|---|
asn040-caller |
x(08) | Identificativo del chiamante |
asn040-called |
x(08) | Identificativo del chiamato (confrontato con k-program-id) |
asn040-in-cod |
x(10) | Codice di input (non usato in questa versione) |
asn040-out-cod |
x(10) | Targa selezionata restituita al chiamante (output) |
asn040-out-des |
x(60) | Descrizione veicolo selezionato (output) |
File acceduti¶
Lettura/scrittura (file principale)¶
| File | Copybook (rec) | Uso |
|---|---|---|
| ASNVEICL | avei-rec |
Anagrafica veicoli. Chiave avei-targa. Campi: avei-des, avei-data-lettura, avei-km-letti, avei-km-rilevati, avei-cod-crm, avei-mag, avei-tipo-veicolo, avei-peso-max-kg, avei-cod-nom (scheda CRM), avei-mag-tip, avei-mag-sec |
Lettura (decodifiche/validazioni)¶
| File | Copybook (rec) | Uso |
|---|---|---|
| COGMAGAZ | magz-rec |
Magazzini (tipo "M"): magz-nome |
| COGMAGPE | mgp-rec |
Magazzini periferici/esterni (tipo "E"): mgp-nome |
| COGRIFER | rif-rec |
Riferimenti/tecnici (tipo "C"): rif-nome |
| PRNTOPER | ptop-rec |
Profilo operatore: validazione codice CRM (ptop-cod) |
Lettura/scrittura (integrazione tecnici)¶
| File | Copybook (rec) | Uso |
|---|---|---|
| COGANAT2 | atn2-rec |
Estensione anagrafica tecnico (rif tipo "C"): campi atn2-veicolo, atn2-mag-tip, atn2-mag-cod. Letto per precaricare il tecnico collegato al veicolo e aggiornato in fase di salvataggio quando tecnici-mag-fisso = "S" |
Copybook incluse (principali)¶
- Configurazioni:
utilncnf.cpy - Working-storage generali:
wgrave.cpy,wnscr.cpy,wopenf.cpy,wstato.cpy,cogazien.cpy - Griglia e amministrazione:
wgrid.cpy,utilgdad.cpy - Utility/lookup (linkage sottoprogrammi):
utilu10.cpy,utilu20.cpy,utils52.cpy,utilt20.cpy,utilw36.cpy,utilw115.cpy,utilcrm030.cpy,utilcrms07.cpy,utilcrms06.cpy,utilg67.cpy,utilagprg.cpy,utilg32.cpy(linkage) - Send lookup magazzino:
sendw36.cpy,sendw115.cpy - Fine procedure:
grave.cpy,mmmask.cpy,opengen.cpy,stato.cpy,stato1.cpy,winmsg.cpy,asn040.prc
Programmi chiamati¶
| Programma | Contesto | Scopo |
|---|---|---|
| COGT20 | F8 su colonna codice CRM | Lookup operatore CRM; ritorna t20-out-cod |
| COGG67 | F8 su colonna riferimento (tecnico), se tecnici-mag-fisso = "S" |
Lookup fornitore/tecnico (g67-in-param = "T"); ritorna g67-cod |
| CRM030 | F5 su riga con scheda CRM (tm-cod-nom valorizzato) |
Apertura scheda CRM del veicolo (CRM030-CALLED, nominativo in crm030-nom) |
| CRMS07 | Inserimento/modifica veicolo con tipologia-crm-veicolo configurata e senza scheda |
Crea la scheda CRM (nominativo) del veicolo; ritorna crms07-nom |
| CRMS06 | Dopo creazione scheda o F7 (operatore 888) | Scrive l'informazione targa sulla scheda CRM (crms06-inf/crms06-dato) |
| SWN021 | x-sincronizza-kpn (dopo ogni scrittura/modifica/cancellazione) |
Esporta la chiave veicolo verso KPN (AGPRG-CALLED, ESPORTA-KEY) |
| GRIDADMN | Prepara / S-F4 / Modify-Record | Preparazione e amministrazione griglia |
| COGW36 / COGW115 | Lookup magazzino (via sendw36/sendw115) |
Ricerca magazzino interno (W36) o esterno (W115) |
| RNEWCONF | x99-confi (init e F1) |
Lettura configurazioni veicoli/CRM |
Configurazioni RNEWCONF (x99-confi)¶
| Idx | Gruppo | Parametro | Variabile | Effetto |
|---|---|---|---|---|
| 01 | assist |
tecnici-uso-mag-secondari |
tm-cfg-tecnici-uso-mag-secondari |
Se "S" la gestione magazzino usa il magazzino secondario/esterno (mag-sec, lookup COGW115) al posto del magazzino interno (COGW36) |
| 02 | assist |
tecnici-mag-fisso |
tm-cfg-tecnici-mag-fisso |
Se "S" abilita l'associazione veicolo-tecnico: precarica il tecnico da COGANAT2 e in salvataggio aggiorna atn2-veicolo/atn2-mag-tip/atn2-mag-cod |
| 03 | assist |
tipologia-crm-veicolo |
tm-cfg-tipologia-crm-veicolo |
Tipologia CRM da usare per creare la scheda nominativo del veicolo (CRMS07) quando manca |
| 04 | OFF-AUTO |
INFO-CRM-TARGA |
tm-cfg-info-crm-targa (numerico) |
Codice informazione CRM in cui scrivere la targa (CRMS06); abilita anche il tasto F7 (per operatore 888) |
Logica di elaborazione¶
Avvio (apri)¶
Init programma, ctr-abil, apertura file, rilevamento modalita' called, x99-confi, abilitazione tasti funzione (F1, F5 scheda, F7 scheda auto, F8 aiuto/calendario, S-F4, CTRL-A, CTRL-E, F9; F3 selezione/modifica in called oppure F3 aggiorna in standalone), preparazione griglia.
Caricamento griglia (a4 / a10-loop / a30)¶
- Scorre
ASNVEICL(a10-loop): per ogni veicolo carica in griglia targa (e targa precedente per il confronto di aggiornamento), descrizione, dati di lettura, codice CRM, magazzino (con descrizione da COGMAGAZ), tipo veicolo, codice nominativo CRM, peso max, tipo magazzino (mag-tip, default"I") e magazzino secondario (con descrizione da COGMAGPE). - Se
tecnici-mag-fisso = "S"(a30-tec): scorreCOGANAT2per i tecnici e, per ciascun veicolo collegato (atn2-veicolo), riporta in griglia il codice tecnico e il nome (da COGRIFER). - Costruisce la griglia.
Gestione griglia (a-grid / a-accept-grid)¶
- INVIO (in called, modalita' selezione): restituisce targa e descrizione al chiamante e termina.
- F5: apre la scheda CRM del veicolo (CRM030) se il nominativo e' valorizzato.
- F7 (operatore 888,
info-crm-targaconfigurato): dopo conferma, scorre tutti i veicoli con scheda CRM e sincronizza l'informazione targa (CRMS06). - S-F4: amministrazione griglia.
- F1: rilancia configurazioni in modifica.
- F3: verifica abilitazioni (inserimento
w-abi-ins, aggiornamentow-abi-agg); in standalone valida e salva (a1-aggiorna); in called commuta selezione/aggiornamento salvando all'uscita dall'aggiornamento. - CTRL-A (modalita' aggiornamento): aggiunge una riga; imposta il tipo magazzino iniziale (
"E"setecnici-uso-mag-secondari = "S", altrimenti"I"). - CTRL-E (modalita' aggiornamento): verifica abilitazione cancellazione (
w-abi-del), conferma e azzera la riga mantenendo targa precedente e tecnico precedente per la successiva cancellazione fisica.
Salvataggio (b-aggiorna)¶
Confronta targa corrente e targa precedente riga per riga per decidere l'operazione:
- targa vuota + targa-prec valorizzata ->
b3-cancella(del-asnveicl); - targa = targa-prec e riga modificata ->
b2-modifica(rwr-asnveicl); - targa-prec vuota ->
b1-inserisci(nuovo veicolo); - targa != targa-prec ->
b3-cancella+b1-inserisci.
In inserimento (b1-inserisci) se la targa esiste gia' chiede conferma di sovrascrittura. Sia inserimento sia modifica gestiscono, se configurato:
- creazione scheda CRM del veicolo (CRMS07) e scrittura informazione targa (CRMS06);
- aggiornamento del legame veicolo-tecnico su
COGANAT2(con cancellazione del riferimento sul tecnico precedente, evitando di cancellare riferimenti gia' riassegnati in righe precedenti); - sincronizzazione KPN (
x-sincronizza-kpn-> SWN021).
Gestione errori e validazioni¶
- Targa duplicata (
x-controlla-tm-targa): due righe non possono avere la stessa targa (m-asn040-9-1). - Descrizione obbligatoria (
x-controlla-tm-des): se la targa e' valorizzata la descrizione e' obbligatoria (m-des-obb). - Magazzino (
x-controlla-tm-mag): deve esistere su COGMAGAZ tipo"M"(m-asn040-10-1); impostamag-tip = "I". - Magazzino secondario (
x-controlla-tm-mag-sec): deve esistere su COGMAGPE tipo"E"(m-asn040-10-1); impostamag-tip = "E". - Riferimento/tecnico (
x-controlla-tm-rif-cod): deve esistere su COGRIFER tipo"C"(m-asn040-12). - Codice CRM (
x-controlla-tm-cod-crm): deve esistere su PRNTOPER (m-asn040-11-1). - Abilitazioni: F3 verifica
w-abi-ins/w-abi-agg(m-asn040-3-1/m-asn040-4-1); CTRL-E verificaw-abi-del; modifica riga esistente in griglia verificaw-abi-agg(m-no-abi-modifica). - Cancellazione (
c1-ctrl-canc): non consentita a griglia vuota (m-asn040-6-1).
Note implementative¶
- L'editabilita' delle colonne magazzino e' pilotata da
tecnici-uso-mag-secondari: con"S"e' editabile solo il magazzino secondario (esterno), altrimenti solo il magazzino interno; le celle in alternativa sono rese non accettabili (z-tm-tab-mag-be-ep/z-tm-tab-mag-sec-be-ep). - La colonna riferimento tecnico e' editabile solo con
tecnici-mag-fisso = "S"(z-tm-tab-rif-cod-be-ep). - Il tasto F7 (sincronizzazione informazione targa su CRM) e' riservato all'operatore
888e attivo solo seinfo-crm-targae' configurato. - Ogni operazione di scrittura, modifica o cancellazione veicolo innesca la sincronizzazione con KPN via SWN021 (
ESPORTA-KEY), garantendo l'allineamento del sistema esterno.