Vai al contenuto

ASN570 - Chiusura chiamata di laboratorio (controllo strumenti Endonova)

Sorgente: cbl/asn570.cbl (1.834 righe) | Tipo: Programma interattivo di aggiornamento con file di transito e movimentazione di magazzino

Menu: Assist 2.0 > Operativo > Riparazioni > Chiusura


Scopo

ASN570 gestisce la chiusura (o riapertura) di una chiamata di laboratorio (classe "L", tipo controllo strumenti Endonova) e, in base all'esito del controllo dello strumento acquistato, esegue le movimentazioni di magazzino conseguenti:

  • Chiusura/riapertura chiamata: aggiorna ASNCHTES (acht-situazione = "C"/"A", data/ora chiusura, stato assegnato) e lo step di workflow "Chiusura" (k-step-c-chiusura, "CH") su ASNCHWKF.
  • Registrazione esito: acht-esito-verifica (F/M/R/C/N) e note di chiusura su ASNINDAG.
  • Trattamento merce dello strumento acquistato (solo per chiamate collegate a un carico "in riparazione", non per la modalita' chiusura "Esterna"):
  • esito "M" (Muletto): sposta la contropartita del movimento sul conto muletti;
  • esito "R" (Ricambio): sposta la contropartita sul conto ricambi e trasforma le parti in ricambio (COGMA5);
  • esito "C" (Cespite): scarica la merce a cespite;
  • inoltre, con esito "M" e merce di trasferimento indicata, esegue il trasferimento dello strumento su un'altra merce (muletto).

Le movimentazioni (trasferimento/scarico) sono realizzate tramite il generatore di movimenti COGS26 alimentato dai file di transito TRAN-S26/TRAN-S26B.


Interfaccia chiamato (linkage)

Procedura chiamata con using stringhe util-asn570.

util-asn570 (utilasn570.cpy):

Campo Tipo Uso
asn570-caller / asn570-called x(08) Identificativi chiamante/chiamato
asn570-id-chiamata 9(12) Id chiamata da elaborare (input in modalita' called)

Modalita' called: se asn570-called = "ASN570" e asn570-caller valorizzato, imposta w-dc-called = "S" e usa asn570-id-chiamata come chiave, saltando la digitazione dell'id.

File acceduti

Input/lettura

File Copybook Uso
ASNCHTES acht-rec Testata chiamata: filtro classe "L", dati cliente/oggetto/data, situazione, esito verifica
ASNCHDET achd-rec Righe chiamata: matricola collegata (achd-id-matricola), difetto
ASNINTES acit-rec Interventi collegati alla chiamata (chiave k02 acit-id-chiamata)
ASNINDET acid-rec Righe intervento (materiali scaricati, acid-tip = "M")
ASNCHPRP achp-rec Materiali previsti/proposti sulla chiamata (per verifica materiali obbligatori)
ASNINDMG acim-rec Legami intervento → documento magazzino (chiave k03); tipo "C" = carico
ASNCHWKF achw-rec Workflow chiamata (chiave k02); step "CH" chiusura, "IC"
ASNFASIC acif-rec Anagrafica fasi/step (per carica-tab, controllo step precedenti)
ASNMATRI amtr-rec Matricola assistenza: serial number, tipo, marca, modello, merce, matricola magazzino (amtr-mat)
ASNMODEL amod-rec Modello matricola (descrizione)
COGGEANA ana-rec Cliente assistito (denominazione)
COGMERCI mer-rec Merci: classe "M" (materiale), descrizioni
COGMATRI mtr-rec Matricole magazzino: entrata (mtr-ent), merce, magazzino entrata
COGMOMAG mag-recz Righe movimento magazzino (contropartita mag-coge, prezzo, valuta)
COGTESBO tes-rec Testata documento (causale, per riconoscere carico "in riparazione")
PRNTOPER Profilo operatore

Output/scrittura

File Copybook Scrittura
ASNCHTES acht-rec rwr: situazione, data/ora chiusura, stato assegnato, esito verifica
ASNCHWKF achw-rec rwr: step "CH" a stato "C" con date/ore/operatore
ASNINDAG aitd-rec wr/rwr: note di chiusura (aitd-tipo = "F" intervento, "U" chiusura esterna)
ASNINTE2 acit2-rec wr/rwr: estensione intervento (paragrafo x-aggiorna-asninte2)
ASNINDMG acim-rec wr: nuovo legame intervento → documento generato (acim-tip = "L")
ASNMATRI amtr-rec rwr: aggancio nuova matricola dopo trasferimento su merce; flag valore "C"
COGMOMAG mag-recz rwr: modifica contropartita del movimento (muletti/ricambi)

Transito

File Copybook Scopo
TRAN-S26 (external) trs-s26-rec Righe merce/quantita'/segno da passare a COGS26
TRAN-S26B trs-s26b-rec Righe matricola/merce/segno da passare a COGS26 (dettaglio matricole)

I file di transito sono nominati con il codice operatore (#$COGS26.<oper>, #TR-S26B.<oper>) nella cartella ext-tmp-dir.

Chiavi secondarie

  • asnchwkf.k02, asnindmg.k03, asnintes.k02, cogmatri.k03
  • tran-s26.k01, tran-s26b.k01

Programmi chiamati

Programma Operazione Scopo
ASN210 ASN210-CALLED F9 su Id chiamata: ricerca chiamata (ritorna asn210-id)
COGS26 Inserimento Generazione movimenti di magazzino (trasferimento/scarico) da TRAN-S26/TRAN-S26B
COGU07 crea-link Collega la matricola vecchia (padre) alla nuova matricola (figlia) dopo il trasferimento
COGMA5 Trasformazione parti in ricambio (esito "R"); riceve matricola e costo d'acquisto
COGU10W Cambio Conversione di valuta del prezzo movimento se diverso dal conto (per COGMA5)
RNEWCONF Lettura/modifica configurazioni

Configurazioni RNEWCONF (x99-confi)

Idx Gruppo Chiave Variabile Effetto
01 ass-strum contropartita-acq-muletti tm-cfg-contr-acq-muletti Conto contropartita per esito Muletto
02 ass-strum contropartita-acq-ricambi tm-cfg-contr-acq-ricambi Conto contropartita per esito Ricambio
03 ass-strum importanza-obbligatoria tm-cfg-importanza-obb Importanza che rende un materiale "obbligatorio" nel controllo pre-chiusura
04 ENTRATE CAU-RIPARAZIONE-ASSIST tm-cfg-cau-rip Causale del carico "entrata in riparazione"
05 ASSIST codice-stato-assegnazione tm-cfg-stato-asseg Stato chiamata da assegnare alla chiusura
06 entrate cau-rip-permuta-fat tm-cfg-cau-rip-permuta-fat Causale riparazione permuta (fatturata)
07 entrate cau-rip-permuta-nofat tm-cfg-cau-rip-permuta-nofat Causale riparazione permuta (non fatturata)
08 ass-strum modo-chiusura tm-cfg-modo-chiusura "E" = "chiusura esterna": esegue solo chiusura/riapertura chiamata, senza movimentazioni merce; note su aitd-tipo = "U"

Logica di elaborazione

Ingresso e caricamento dati (apri / a4 / x-controlla-tm-cht-id)

  1. In modalita' called usa asn570-id-chiamata.
  2. x-controlla-tm-cht-id: legge ASNCHTES; scarta chiamate non di classe "L" (m-asn570-32-1). Carica cliente, oggetto, data, matricola (via ASNCHDETASNMATRIASNMODEL), note di chiusura precedenti, id intervento collegato.
  3. Determina se la chiamata e' un controllo di strumento acquistato (flag-strumento-acq): esiste un legame ASNINDMG tipo "C" verso un documento (COGTESBO) la cui causale NON e' quella di riparazione/permuta (29/2/16). In tal caso salva il DDT (tm-ddt), il progressivo riga e l'esito verifica pregresso.

Accept dei campi

  • tm-conferma-chiusura (radio: chiudi/riapri), tm-data-chiusura, tm-esito-controllo (combo F/M/R/C/N), tm-note, tm-merce-trasf (merce su cui trasferire).
  • x-controlla-tm-esito-controllo: ammette solo F, M, R, C, N (m-asn570-33-1).
  • x-controlla-tm-merce-trasf: valida la merce di trasferimento in COGMERCI (m-asn570-34-1).

Conferma (a-richiesta-conferma)

  1. Se esito "M" e nessuna merce di trasferimento indicata, chiede conferma (m-asn570-2/3/4-1).
  2. Conferma finale (m-asn570-5-1).
  3. Verifica materiali obbligatori (solo se tm-cfg-modo-chiusura != "E", paragrafo verifica-materiali-obbligatori): confronta i materiali previsti (ASNCHPRP, classe "M", importanza = tm-cfg-importanza-obb) con quelli scaricati (ASNINDET tipo "M"); se un materiale obbligatorio ha quantita' scaricata inferiore a quella prevista, box di avviso (m-asn570-16/17/18/6-1) e blocco chiusura.

Aggiornamenti (chiusura)

  1. Workflow (ASNCHWKF, step "CH"): stato "C", date/ore/operatore prima e ultima.
  2. Testata chiamata (ASNCHTES): con tm-conferma-chiusura = "C"acht-situazione = "C", data/ora chiusura, stato assegnato (tm-cfg-stato-asseg); con " " → riapre (acht-situazione = "A", azzera chiusura). Salva acht-esito-verifica.
  3. Note (ASNINDAG): in modo chiusura esterna scrive su aitd-tipo = "U" (chiave chiamata); altrimenti su aitd-tipo = "F" (chiave intervento).

Movimentazioni merce (solo flag-strumento-acq e tm-cfg-modo-chiusura != "E")

  • modifica-contr: rwr su COGMOMAG per cambiare la contropartita (mag-coge) del movimento del carico secondo l'esito (muletti/ricambi).
  • trasf-su-merce (esito "M" + merce di trasferimento): due chiamate a COGS26 - una uscita (strumento originario dal magazzino di entrata matricola) e una entrata (merce di trasferimento nel magazzino muletti "M"), tramite i transiti; poi collega vecchia/nuova matricola (COGU07) e aggiorna ASNMATRI con la nuova matricola/merce.
  • trasforma-parti-ric (esito "R"): dopo modifica-contr, chiama COGMA5 per la trasformazione parti in ricambio (con conversione valuta via COGU10W se necessario); su esito positivo marca amtr-val = "C".
  • scarico-della-merce (esito "C"): trasferimento dello strumento a cespite via COGS26 (uscita dal magazzino di entrata matricola).

Aggiornamento interventi collegati

Al termine, scorre gli interventi della chiamata (ASNINTES k02) ed esegue x-aggiorna-asninte2 su ciascuno (ASNINTE2).

Messaggi principali

ID Contesto
m-asn570-2-14-1 Conferma esito Muletto senza merce di trasferimento
m-asn570-5-1 Conferma finale chiusura
m-asn570-6-1 / 16-1 / 17-1 / 18-1 Materiale obbligatorio non scaricato (merce, qta obbligatoria, qta scaricata)
m-asn570-7-1 / 8-1 Chiamata chiusa / riaperta
m-asn570-9-115-1 Errori apertura file di transito TRAN-S26/S26B
m-asn570-19-1/2 Riga chiamata mancante
m-asn570-20-130-1 Esiti operazioni COGS26 / transiti (numero documento generato, errori)
m-asn570-31-1 Chiamata inesistente
m-asn570-32-1 Chiamata non di laboratorio
m-asn570-33-1 Esito controllo non valido
m-asn570-34-1 Merce di trasferimento inesistente
m-asn570-35-1/2/3 Matricola magazzino non trovata

Note implementative

  • La distinzione tra "chiusura standard" e "chiusura esterna" (tm-cfg-modo-chiusura = "E", PCASE-3912/PCASE-3953) e' pervasiva: in modalita' esterna il programma esegue solo chiusura/riapertura della chiamata e registrazione note (su aitd-tipo = "U"), senza toccare magazzino/contropartite.
  • Il carico e' considerato "strumento acquistato" solo se la causale del DDT collegato e' diversa dalle causali di riparazione/permuta (cau-rip, cau-rip-permuta-fat, cau-rip-permuta-nofat).
  • I file di transito TRAN-S26/TRAN-S26B vengono aperti in output e riaperti in i-o ad ogni movimentazione per garantire l'azzeramento; la mancata apertura genera box di errore e uscita (fine).
  • TRAN-S26 e' dichiarata external (condivisa con COGS26); TRAN-S26B e' locale.
  • Il codice conserva ancora PERFORM ... THRU e GO TO verso fine all'interno dei paragrafi di movimentazione: sono strutture del legacy, da non replicare in nuovo codice.