COGSA9 - Gestione benestare su documenti¶
Posizione nel menu Programma non a menu Linkage section UTIL-COGSA9
| Tipo | Dato | Formato | Contenuto |
|---|---|---|---|
| INPUT | COGSA9-OPE | x(20) | Operazione da eseguire |
| COGSA9-DOCUMENTO | tes-chia3 | Documento da elaborare | |
| COGSA9-RICALCOLA-LISTINO | x(01) | Opzione aggiuntiva usata nell'elaborazione "RICALCOLA": permette di ricalcolare il valore dei documenti prima dell'elaborazione principale | |
| OUTPUT | COGSA9-ESITO | x(01) | Esito dell'operazione |
| COGSA9-O-MSG | x(150) | Messaggio restituito | |
| COGSA9-O-BSTS-ID | 9(12) | Id benestare collegato | |
| FILLER | x(1987) |
Logica generale Programma che esegue alcune operazioni comuni sui documenti di magazzino, per la gestione dei benestare. Configurazioni
| Gruppo | Parametro | Note |
|---|---|---|
Elaborazione L'elaborazione cambia a seconda dell'operazione richiesta.
Operazione: CONTROLLA¶
Descrizione Riceve in input un documento e restituisce la situazione nei confronti dei benestare in COGSA8-ESITO (vedi sotto). NB: Generalmente se l'esito restituito è "G" o "A" non dovrebbe essere possibile modificare o cancellare il documento stesso. Chiamata standard
| Tipo | Dato | Formato | Contenuto |
|---|---|---|---|
| INPUT | COGSA9-OPE | x(20) | "CONTROLLA" |
| COGSA9-DOCUMENTO | tes-chia3 | Documento da controllare | |
| OUTPUT | COGSA9-ESITO | x(01) | Esito dell'operazione |
| COGSA9-O-MSG | x(150) | Messaggio restituito | |
| COGSA9-O-BSTS-ID | 9(12) | Id benestare collegato | |
| FILLER | x(2000) |
Elaborazione Come prima cosa verifichiamo che i campi obbligatori siano compilati e corretti. Se non è cosi' restituire COGSA8-ESITO = "N", e in COGSA8-MSG la descrizione del problema. A - Ricerca come documento da autorizzare Effettuare una ricerca su COGBSDAU, usando BSDA-CHIA2:
| Dato | Contenuto |
|---|---|
| BSDA-DOCUMENTO | COGSA9-DOCUMENTO |
Se il documento viene trovato, significa che è già stato raccordato ad un benestare: restituire
| Dato | Contenuto |
|---|---|
| COGSA9-ESITO | "A" |
| COGSA9-O-MSG | "Documento collegato a benestare di 'Autorizzazione': " BSDA-ID |
| COGSA9-O-BSTS-ID | BSDA-ID |
e uscire. B - Ricerca movimenti raccordati Come prima cosa, verificare se il documento ha già movimenti, scorrendo tutti i record su COGBSMOV, usando BSMV-CHIA3:
| Dato | Contenuto |
|---|---|
| BSDV-DOC-ORIGINE | COGSA9-DOCUMENTO |
Per ciascun record trovato, se almeno uno contiene BSMV-BSDT-ID > 0, significa che è già stato raccordato ad un benestare. In questo caso restituire:
| Dato | Contenuto |
|---|---|
| COGSA9-ESITO | "G" |
| COGSA9-MSG | "Documento collegato a benestare di 'Aggregazione': " BSMV-BSDT-ID |
| COGSA9-O-BSTS-ID | BSMV-BSDT-ID |
e uscire. C - Uscita "Ok" Se non è stata verificata nessuna delle condizioni precedenti, allora il documento è "a posto" nei confronti dei benestare. quindi restituire
| Dato | Contenuto |
|---|---|
| COGSA9-ESITO | "S" |
| COGSA9-MSG | " " |
Operazione: RICALCOLA¶
Descrizione Riceve in input un documento e, se ci sono le condizioni, esegue l'elaborazione dei movimenti benestare. Se richiesto come opzione, permetterà anche il ricalcolo del valore dei documenti, prima di effettuare l'elabrazione principale. * Questo sarà utile soprattutto quando si effettuano delle correzioni retroattive sul listino * Il ricalcolo del valore movimenti sarà effettuato, quando richiesto, anche se il documento non prevede il benestare Chiamata standard
| Tipo | Dato | Formato | Contenuto |
|---|---|---|---|
| INPUT | COGSA9-OPE | x(20) | "RICALCOLA" |
| COGSA9-DOCUMENTO | tes-chia3 | Documento da ricalcolare | |
| COGSA9-RICALCOLA-LISTINO | x(01) | Opzione aggiuntiva usata nell'elaborazione "RICALCOLA": permette di ricalcolare il valore dei documenti prima dell'elaborazione principale | |
| OUTPUT | COGSA9-ESITO | x(01) | Esito dell'operazione |
| COGSA9-O-MSG | x(150) | Messaggio restituito | |
| FILLER | x(2000) |
Elaborazione Come prima cosa verifichiamo che i campi obbligatori siano compilati e corretti. Se non è cosi' restituire COGSA8-ESITO = "N", e in COGSA8-MSG la descrizione del problema. A - Cancellazione Scorrere tutti i record su COGBSMOV, usando BSMV-CHIA3:
| Dato | Contenuto |
|---|---|
| BSDV-DOC-ORIGINE | COGSA9-DOCUMENTO |
Ciascun record trovato deve essere cancellato. B - Creazione movimenti B.1 - Verifica condizioni documento Per poter creare i movimenti, devono esserci 2 condizioni vere: * Causale del documento abilitata alla gestione dei benestare "Da aggregare" (EUTA-CB-BENESTARE = "G") * Cliente di fatturazione abilitato alla gestione dei benestare (AAP2-FL-BENESTARE = "S") * Questa condizione non skippa l'elaborazione completa, ma impedisce solo la creazione del movimento principale al cliente: gli eventuali movimenti di rifatturazione saranno creati ugualmente B.2 - Ricerca preliminare dati Come prima cosa verifichiamo se il documento proviene da una assistenza, cercando il raccordo su ASNINDMG, usando ACIM-CHIA2
| Dato | Contenuto |
|---|---|
| ACIM-TES-CHIA3 | Documento da elaborare |
| ACIM-TIP | "D" |
Se presente, il documento proviene da intervento B.2.1 - Ricerca azienda collegata al documento L'azienda che ha generato il documento è COGTESAP.TSA-GRP-AZ-COD Il documento dovrà essere saltato se il cliente (TES-NONNO) corrisponde all'azienda emittente. Cercare quindi il cliente su COGAZGRP usando AZG-CHIA2 e confrontare TSA-GRP-AZ-COD con AZG-COD: se uguali skippare il documento. B.2.2 - Ricerca zona relativa al documento Se viene richiesto il ricalcolo del listino, è necessario rendere corrente la zona .... Questa dovrà essere cercata in funzione della provenienza della ricerca, e degli elementi presenti: * Chiamata di assistenza (è possibile che sia presente anche un nominativo CRM) * Se presente il nominativo CRM, prelevare la zona da qui (informazione configurata "ass-chiam"-"info-crm-zona") * Se presente una destinazione, prelevare la zona da qui, se trovata * Se presente un cliente assistito, prelevare la zona da qui * Se presente un cliente di fatturazione, prelevare la zona da qui * Documento standard * Se presente una destinazione, prelevare la zona da qui, se trovata * Se presente un cliente assistito, prelevare la zona da qui * Se presente un cliente di fatturazione, prelevare la zona da qui B.3 - Creazione movimenti Scorrere i movimenti di magazzino collegati al documento (COGMOMAG). Se richiesto dall'apposita opzione COGSA9-RICALCOLA-LISTINO, verrà aggiornato il movimento dopo averne ricalcolato prezzi e valori con il listino corrente. Saranno quindi esclusi i movimenti NON valorizzati. Per ciascun movimento valido inserire un movimento su COGBSMOV: B.3.1 - Creazione movimenti NON da intervento In questo caso (bolle creata in modo indipendente) ogni movimento di magazzino genera un movimento benestare Questa parte non viene eseguita, se il cliente non prevede la gestione benestare
| Dato | Non proviene da intervento |
|---|---|
| BSMV-ID-MOV | |
| BSMV-DATA | TES-DATA |
| BSMV-PROVENIENZA | "A" |
| BSMV-MAG-CHIAP-ORIGINE | MAG-CHIAP |
| BSMV-MERCE | MAG-MERCE3 |
| BSMV-SEGNO | MAG-ENTRUSC |
| BSMV-QTA | MAG-QTAMAGAZ |
| BSMV-PREZZO | MAG-PREZZO |
| BSMV-IMPORTO | MAG-VALORE |
| BSMV-ID-CHIAMATA | 0 |
| BSMV-ID-INTERVENTO | 0 |
| BSMV-ANA-FAT-TIP | MAG-TIPOCF |
| BSMV-ANA-FAT-COD | MAG-NONNO |
| BSMV-GRP-AZ-DOC | TSA-GRP-AZ-COD |
| BSMV-BRAND | TSA-BRAND |
| BSMV-STATO | "I" |
| BSMV-BSDT-ID | 0 |
| BSMV-BSDT-PROG | 0 |
| BSMV-ORIGINE-ID-MOV | 0 |
| BSMV-FL-CONTINUATIVO | "N" |
| BSMV-PERIODICITA | 0 |
| BSMV-TECNICO | 0 |
B.3.2 - Creazione movimenti da intervento In questo caso (bolle proveniente da intervento) in caso di gestione multiazienda, ogni movimento potrebbe generare più di un movimento benestare (rifatturazione) Vediamo i casi possibili
| Caso | Caso | Azienda esecutrice | Azienda appaltante | Azienda tecnico | # Movimento | Emittente (azienda) | Destinatario (cliente) |
|---|---|---|---|---|---|---|---|
| A | Lavoro eseguito da un tecnico dell'azienda a cui è stato assegnato | A | A | A | 1 | A | Cliente di fatturazione |
| A.1 | Lavoro aggiuntivo effettuato a fronte del caso A | C | A | A | 1 | C | Cliente di fatturazione |
| 2 | A | Azienda "C" | |||||
| B | Lavoro effettuato da un tecnico di azienda diversa | A | A | B | 1 | A | Cliente di fatturazione |
| 2 | B | Azienda "A" | |||||
| B.1 | Lavoro aggiuntivo effettuato a fronte del caso B | C | A | B | 1 | C | Cliente di fatturazione |
| 2 | A | Azienda "C" | |||||
| 3 | B | Azienda "A" | |||||
| C | Lavoro effettuato da un cottimista | A | A | D | 1 | A | Cliente di fatturazione |
| 2 | D | Azienda "A" | |||||
| C.1 | Lavoro aggiuntivo effettuato a fronte del caso C | C | A | D | 1 | C | Cliente di fatturazione |
| 2 | A | Azienda "C" | |||||
| 3 | D | Azienda "A" | |||||
| D | Lavoro richiesto a "C" effettuato da un cottimista "D" che ha un contratto per una terza azienda "A" (quindi è distaccato per questa azienda) | A | A | C | 1 | A | Cliente di fatturazione |
| Questo caso è da rivedere e approfondire | 2 | A | Azienda "C" | ||||
| Documento di entrata a D |
Anche in questo caso saranno esclusi i movimenti che NON sono valorizzati. Il movimento verso il cliente di fatturazione non viene inserito se questo non prevede la gestione benestare NB: i casi C e C.1, D sono equivalenti dal punto di vista operativo a B e B.1 (cambia solo il fatto che "D", in quanto cottimista, è un libero professionista che lavora per sè stesso, ma potrà essere gestito come una azienda qualunque. Quindi, ciascun caso potrebbe generare 3 movimenti benestare, come si evince dallo schema sopra. NB:La stessa tabella è presente nel documento Rifatturazioni; quando la situazione è ben definita riportarla li'. Per ciascun movimento:
| Dato | Proviene da intervento |
|---|---|
| BSMV-ID-MOV | Primo progressivo libero |
| BSMV-DATA | TES-DATA |
| BSMV-PROVENIENZA | "A" |
| BSMV-MAG-CHIAP-ORIGINE | MAG-CHIAP |
| BSMV-MERCE | MAG-MERCE3 |
| BSMV-SEGNO | MAG-ENTRUSC |
| BSMV-QTA | MAG-QTAMAGAZ |
| BSMV-PREZZO | Vedi Valorizzazione movimenti benestare |
| BSMV-IMPORTO | |
| BSMV-ID-CHIAMATA | Id chiamata collegata a intervento |
| BSMV-ID-INTERVENTO | Id intervento |
| BSMV-ANA-FAT-TIP | "C" |
| BSMV-ANA-FAT-COD | Il cliente di fatturazione dell'intervento, o il codice cliente associato all'azienda "Destinatario" |
| BSMV-GRP-AZ-DOC | Azienda "Emittente" |
| BSMV-BRAND | ACHT-BRAND |
| BSMV-STATO | "I" |
| BSMV-BSDT-ID | 0 |
| BSMV-BSDT-PROG | 0 |
| BSMV-ORIGINE-ID-MOV | 0 |
| BSMV-FL-CONTINUATIVO | "N" |
| BSMV-PERIODICITA | 0 |
Il movimento non dovrà essere inserito se il cliente risultante (BSMV-ANA-FAT-COD) corrisponde all'azienda emittente BSMV-GRP-AZ-DOC. Cercare quindi il cliente su COGAZGRP usando AZG-CHIA2 e confrontare bsmv-GRP-AZ-COD con AZG-COD: se uguali skippare il movimento. Note sulla logica in caso di più tecnici Nell'intervento ci potrebbero essere più tecnici, appartenenti ad aziende diverse, quindi in questo caso il ragionamento illustrato sopra dovrà essere ripetuto per ciascun tecnico assegnato all'intervento, suddividendo l'importo delle prestazioni in parti uguali. Valorizzazione movimenti benestare Il movimento principale (quello che deriva direttamente dal documento, quindi rivolto al cliente di fatturazione, sarà valorizzato esattamente come il movimento di magazzino: MAG-VALORE. Quando ci sono invece rifatturazioni tra le aziende, si dovrà applicare la regola di rifatturazione trovata su COGSCORF: * Se è presente lo sconto, si applica lo sconto su MAG-VALORE * Se è presente la classe di listino, si dovrà cercare il listino utilizzando la classe fornita (i due parametri sono in alternativa) La ricerca di COGSCORF dovrà essere effettuata in funzione dei dati del movimento: 1) Ricerca per il cliente di fatturazione
| Dato | Contenuto |
|---|---|
| SRF-AZIENDA-FAT | BSMV-GRP-AZ-COD |
| SRF-AZIENDA-CLI | Il codice azienda "Destinatario" |
| SRF-ANA-COD | MAG-NONNO |
| SRF-DATA-DEC | MAG-DA3 |
Cercare il primo record corrispondente, con data decorrenza uguale o inferiore a quella impostata. Se non trovato, effettuare la stessa ricerca senza il cliente di fatturazione:
| Dato | Contenuto |
|---|---|
| SRF-AZIENDA-FAT | BSMV-GRP-AZ-COD |
| SRF-AZIENDA-CLI | Il codice azienda "Destinatario" |
| SRF-ANA-COD | 0 |
| SRF-DATA-DEC | MAG-DA3 |
Anche in questo caso cercare il primo record corrispondente, con data decorrenza uguale o inferiore a quella impostata. Il movimento principale (quello che deriva direttamente dal documento, quindi rivolto al cliente di fatturazione, sarà valorizzato esattamente come il movimento di magazzino: MAG-VALORE. Valorizzazione con sconto Se valorizzato SRF-PERC-RIF, conterrà la percentuale da applicare a MAG-VALORE per ottenere BSMV-IMPORTO. BSMV-PREZZO, di conseguenza dovrà essere ricalcolato come BSMV-IMPORTO / BSMV-QTA. Valorizzazione con classe listino Se valorizzato SRF-LSPS-CLASSE, conterrà la classe listino con cui effettuare la ricerca del prezzo. Effettuare quindi una chiamata ad COGS01, analogamente a quanto viene fatto in altri programmi, aggiungendo pero' anche la valorizzazione di COGS01-I-CLASSE. In questo caso il cliente di fatturazione con cui effettuare la ricerca è il cliente collegato all'azienda "Destinatario" Valorizzare il record quindi con i valori ottenuti. Nessuna valorizzazione Se non è valorizzato nè SRF-PERC-RIF nè SRF-LSPS-CLASSE, il movimento di rifatturazione non dovrà essere generato.
Operazione CANCELLA¶
Descrizione Effettua alciune operazioni relative alla gestione dei benestare, quando un documento di magazzino viene cancellato: riceve in input un documento che presumibilmente deve essere cancellato (o è appena stato cancellato) e: * cancella tutti i movimenti benestare collegati * In caso di documenti generati dal benestare per la sua fatturazione: rimuove il collegamento tra il documento e la testata benestare, e riapre il benestare stesso NB: prima viene effettuata Operazione: CONTROLLA, e deve dare esito positivo! Chiamata standard
| Tipo | Dato | Formato | Contenuto |
|---|---|---|---|
| INPUT | COGSA9-OPE | x(20) | "CANCELLA" |
| COGSA9-DOCUMENTO | tes-chia3 | Documento da controllare | |
| OUTPUT | COGSA9-ESITO | x(01) | Esito dell'operazione |
| COGSA9-O-MSG | x(150) | Messaggio restituito | |
| FILLER | x(2000) |
Elaborazione Come prima cosa verifichiamo che i campi obbligatori siano compilati e corretti. Se non è cosi' restituire COGSA8-ESITO = "N", e in COGSA8-MSG la descrizione del problema. A - Controllo documento Eseguire Operazione: CONTROLLA L'esito restituito dovrà essere "S", altrimenti uscire senza fare nulla, restituendo
| Dato | Contenuto |
|---|---|
| COGSA9-ESITO | "N" |
| COGSA9-MSG | "Il documento è già presente in un benestare" |
B - Cancellazione B.1 - Cancellazione movimenti (operazione che ha effetto sui documenti che hanno generato movimenti benestare) Scorrere tutti i record su COGBSMOV, usando BSMV-CHIA3:
| Dato | Contenuto |
|---|---|
| BSDV-DOC-ORIGINE | COGSA9-DOCUMENTO |
Ciascun record trovato deve essere cancellato. B.2 - Riapertura testata benestare (operazione che ha effetto sui documenti generati per la fatturazione di un benestare) Cercare il documento sulla testata benestare COGBSTES, usando BSTS-CHIA3:
| Dato | Contenuto |
|---|---|
| BSTS-DOCUMENTO-FAT | COGSA9-DOCUMENTO |
Se viene trovato, indica il benestare che ha generato il documento. Quindi si dovrà "riaprire" il benestare:
| Dato | Contenuto |
|---|---|
| BSTS-DOCUMENTO-FAT | " " |
B.3 - Esito Al termine restituire
| Dato | Contenuto |
|---|---|
| COGSA9-ESITO | "S" |
| COGSA9-MSG | " " |
Estratto da documentazione interna ClickUp