All Downloads are FREE. Search and download functionalities are using the official Maven repository.

expsigladb.Package.CNRCTB505.sql Maven / Gradle / Ivy

There is a newer version: 6.6.11
Show newest version
--------------------------------------------------------
--  DDL for Package CNRCTB505
--------------------------------------------------------

  CREATE OR REPLACE PACKAGE "CNRCTB505" AS
--==================================================================================================
--
-- CNRCTB505 - Calcolo e scrittura righe diaria su missioni.
--
-- Date: 29/10/2003
-- Version: 1.27
--
----------------------------------------------------------------------------------------------------
-- PARAMETRI IN INPUT
----------------------------------------------------------------------------------------------------
--
-- +----------------------+---------------------------------------+------------+
-- |PARAMETRO             |DESCRIZIONE                            |OBBLIGATORIO|
-- +----------------------+---------------------------------------+------------+
-- |inCDSCompenso         |CDS di riferimento compenso            |     SI     |
-- |inUOCompenso          |UO di riferimento compenso             |     SI     |
-- |inEsercizioCompenso   |Esercizio di riferimento compenso      |     SI     |
-- |inPgCompenso          |Progressivo identificativo compenso    |     SI     |
-- +----------------------+---------------------------------------+------------+
--
-- Dependency: CNRCTB 080/500/545 IBMERR 001
--
-- History:
--
-- Date: 12/06/2002
-- Version: 1.0
--
-- Creazione Package.
--
-- Date: 27/06/2002
-- Version: 1.1
--
-- Introdotta la gestione delle missioni in comune propio.
-- Revisione generale della procedura ed introduzione del controllo su MISSIONE_ABBATTIMENTI
--
-- Date: 01/07/2002
-- Version: 1.2
--
-- Fix errore in verifica ammissibilità delle spese; era sempre esposto il messaggio di spesa non
-- prevista in configurazione per tutte le tappe inserite.
-- Fix errore abbattimento della diaria e della quota esente; la percentuale non era divisa per 100.
--
-- Date: 17/07/2002
-- Version: 1.3
--
-- Fix errore di chiave duplicata in inserimento diarie
--
-- Date: 19/07/2002
-- Version: 1.4
--
-- Aggiornamento documentazione
--
-- Date: 23/07/2002
-- Version: 1.5
--
-- Inserita routine di valorizzazione dell'importo lordo e della quota esente in sede di generazione
-- compenso da missione.
-- Inserita routine di cancellazione della missione
--
-- Date: 08/08/2002
-- Version: 1.6
--
-- Modificata gestione accessi agli abbattimenti ora si controlla solo per:
--      < 4 = intervallo ore della tappa minore di 4 ( 4 ore compreso)
--      > 4 = intervallo ore maggiore di 4 e minore di 8 (8 ore comprese)
--      > 8 = intervallo ore maggiore di 8
-- Modifica routine di calcolo lordizzazione
--
-- Date: 02/09/2002
-- Version: 1.7
--
-- Modificata la routine di recupero dello scaglione per errore in caso di configurazione sia ente
-- che percipiente.
--
-- Date: 25/09/2002
-- Version: 1.8
--
-- Fix errore in calcolo imponibile lordo del compenso in caso di missione in comune proprio o all'estero
-- La lordizzazione o il calcolo prendevano in considerazione la diaria lorda e non quella netta
-- ovvero quella decurtata degli eventuali abbattimenti
--
-- Date: 26/09/2002
-- Version: 1.9
--
-- Inserito il controllo che la stringa degli errori sugli abbattimenti non superi la dimensione del
-- campo di 1000 caratteri
-- Modifiche alla routine di cancellazione della missione
--
-- Date: 27/09/2002
-- Version: 1.10
--
-- Inserito calcolo della lordizzazione dell'importo lordo del compenso non più in base all'aliquota
-- massima ma sulla media calcolata dagli scaglioni.
-- Inserito controllo sugli anticipi in caso di cancellazione di una missione
--
-- Date: 02/10/2002
-- Version: 1.11
--
-- Fix errore in calcolo missione con lordizzazione se opero per più scaglioni
-- (ritorno importo compenso a NULL)
--
-- Date: 08/10/2002
-- Version: 1.12
--
-- Fix errore calcolo imponibile per missione con percipiente altro e trattamento irpef
-- annualizzata
--
-- Date: 10/10/2002
-- Version: 1.13
--
-- Fix errore missione senza spese (max riga)
--
-- Date: 10/10/2002
-- Version: 1.14
--
-- Fix errore - eliminato cancellazione dettagli diaria
--
-- Date: 14/10/2002
-- Version: 1.15
--
-- Fix errore - le missioni con stato coge/coan ad R o C possono
-- 	   		    essere cancellate solo logicamente
--
-- Date: 15/10/2002
-- Version: 1.16
--
-- Fix errore - le missioni con stato coge/coan ad X devono
-- 	   		    essere cancellate
--
-- Date: 28/10/2002
-- Version: 1.17
--
-- Fix errore - In fase di creazione diaria per missione non viene visualizzato il messaggio di
-- errore se non esiste l' entrata nella tabella MISSIONE_ABBATTIMENTIO
--
-- Date: 07/11/2002
-- Version: 1.18
--
-- Fix errore 355 - errore in lordizzazione missione estero. Era sempre usata, nel calcolo del totale
-- irpef l'aliquota del primo scaglione e non quella dei successivi
--
-- Date: 18/11/2002
-- Version: 1.19
--
-- Memorizzazione dell'aliquota IRPEF in caso di lordizzazione con trattamento annualizzato.
-- Tale aliquota è portata in testata compenso e viene usata dallo stesso nel calcolo dell'IRPEF
-- in modo indipendente da quanto indicato sul trattamento.
--
-- Date: 19/02/2003
-- Version: 1.20
--
-- L'aliquota IRPEF in caso di lordizzazione con trattamento annualizzato è esportata moltiplicata
-- per 100
--
-- Date: 28/02/2003
-- Version: 1.21
--
-- Modificato un parametro nella chiamata della funzione "getMissioneDiaria" del package
-- CNRCTB500. Modifica effettuata per consentire di utilizzare il cambio della tappa
-- per convertire, se necessario, l'importo della diaria.
--
-- Date: 03/03/2003
-- Version: 1.22
--
-- Aggiunto la clausola di ORDER BY nella ricerca degli abbattimenti - funzione
-- "verificaConfigSpeseTappe"
--
-- Date: 26/03/2003
-- Version: 1.23
--
-- Fix errore CINECA n. 557. L'importo della maggiorazione di spese anticipate non era considerato
-- nella valorizzazione degli importi per il calcolo del compenso
--
-- Date: 26/03/2003
-- Version: 1.24
--
-- Richiesta CINECA n. 535. Forzata ricerca su tabella abbattimenti per ore > 8 per tappe di durata
-- inferiore quando la durata della stessa missione è maggiore di 8 ore.
--
-- Date: 16/04/2003
-- Version: 1.25
--
-- Richiesta CINECA n. 562. Implementazione della cancellazione del conguaglio. Modifica chiamata
-- alla routine CNRCTB545.eliminaLogicoCompenso.
--
-- Date: 22/04/2003
-- Version: 1.26
--
-- Fix errore CINECA n. 582. Modifica base dati, aggiunto attributo MISSIONE_DETTAGLIO.im_maggiorazione_euro.
-- Modifica del calcolo degli importi per il compenso per recuperare non
-- da MISSIONE_DETTAGLIO.im_maggiorazione ma da MISSIONE_DETTAGLIO.im_maggiorazione_euro
--
-- Date: 29/10/2003
-- Version: 1.27
--
-- Troncato la data di inizio missione nella ricerca degli inquadramenti
--==================================================================================================
--
-- Constants
--

   isOttoOre CONSTANT NUMBER := 0.33333;

-- Variabili globali

   dataOdierna DATE;

   -- Testata missione in elaborazione

   aRecMissione MISSIONE%ROWTYPE;

   -- Anagrafico di riferimento per il terzo della missione

   aRecAnagrafico ANAGRAFICO%ROWTYPE;

   -- Informazioni base dell'inquadramento

   aRecRifInquadramento RIF_INQUADRAMENTO%ROWTYPE;

   -- Quota esente Italia e estera

   aRecQuotaEsenteItalia MISSIONE_QUOTA_ESENTE%ROWTYPE;
   aRecQuotaEsenteEstero MISSIONE_QUOTA_ESENTE%ROWTYPE;

   -- Dichiarazioni tabelle PL/SQL

   matriceTappe_tab CNRCTB500.matriceTappeTab;
   coriLordizza_tab CNRCTB500.coriLordizzaTab;

   -- Dichiarazione di un cursore generico

   TYPE GenericCurTyp IS REF CURSOR;

--
-- Functions e Procedures
--

----------------------------------------------------------------------------------------------------
-- MAIN PROCEDURE
----------------------------------------------------------------------------------------------------

-- Lettura di una missione esistente, verifica ammissibilità delle spese registrate e calcolo delle diarie
--
-- pre-post-name: Entità anagrafica associata a terzo non trovata
-- pre: Non viene trovata l'entità anagrafica a cui il terzo della missione si riferisce
-- post: Viene sollevata un'eccezione
--
-- pre-post-name: Inquadramento soggetto anagrafico non trovato
-- pre: Inquadramento valido non trovato per il terzo della missione alla data di inizio della missione
-- post: Viene sollevata un'eccezione
--
-- pre-post-name: Nessuna informazione di abbattimento trovata per alcune tappe
-- pre: Durante l'elaborazione delle tappe, non vengono trovate informazioni di configurazione sugli abbattimenti
-- post: Viene sollevata un'eccezione
--
-- pre-post-name: Quota esente è minore della diaria netta in caso di missione in italia con tappa in altro comune
-- pre: Esiste una tappa della missione per cui risulta
--               Area geografica Italia ('I')
--               Comune proprio
--               Quota esente < Importo netto della diaria
-- post: Viene sollevata un'eccezione
--
-- pre-post-name: Lettura di una missione esistente, verifica ammissibilità delle spese registrate e calcolo delle diarie
-- pre: Nesun'altra precondizione verificata
-- post:
-- Vengono letti i dati di base della missione (metodo getDatiBaseMissione) come segue:
--    -- Lettura della testata della missione
--    -- Recupero dei dati dell'anagrafico associato al terzo della missione
--    -- Lettura dati base dell'inquadramento:
--    -- Lettura della quota esente Italia/Estero
--            Se la missione è in comune proprio o altro comune italiano
--                   Viene recuperata la quota esente per comune ITALIA ('I') valida alla data di inizio missione
--            Se la missione è in comune estero
--                   Viene recuperata la quota esente per comune ESTERO('E') valida alla data di inizio missione
--
-- Viene costruita la matrice diarie per tappa e verificata la consistenza delle spese. Queste devono trovare una entrata nella tabella
--     Per ogni tappa esistente nella missione
--          Vengono impostate data inizio/fine della tappa = a quelle della missione
--          Viene determinato il numero di ore della tappa come segue:
--                 -- La tappa è di 24 ore
--                         Il numero di ore = 24
--                -- Controllo se la tappa ha data inizio e fine nello stesso giorno
--                    Se l'inizio/fine della tappa è sotto il primo quarto d'ora dell'ora
--                        L'ora di inizio/fine = ora inizio/fine della tappa
--                    Altrimenti se l'inizio/fine della tappa è nell'ultimo quarto d'ora dell'ora
--                        L'ora di inizio/fine = ora inizio/fine della tappa + 1
--                    Altrimenti
--                        L'ora di inizio/fine = ora inizio/fine della tappa + 0,5
--                    Il numero di ore = Ora di fine - Ora di inizio se il giorno è lo stesso
--                    Il numero di ore = 24 - Ora di inizio + Ora di fine se il giorno di inizio è diverso da quello di fine
--          Viene determinata l'area geografica e la conseguente quota esente lorda
--              Se il comune è estero
--                L'area geografica viene impostata a 'E'
--                La quota esente viene impostata al valore relativo a comune estero
--              Altrimenti
--                L'area geografica viene impostata a 'I'
--                La quota esente viene impostata al valore relativo a comune italiano
--           Viene impostato il codice della nazione
--           Viene impostato l'indicatore di comune proprio
--           Viene impostato l'inquadramento del soggetto anagrafico
--           Vengono inizializzati alcuni flag relativi alla tappa:
--                   Tappa con pasto='N'
--                   Tappa con alloggio='N'
--                   Tappa con trasporto='N';
--                   Tappa con navigazione=Ereditato dalla tappa in processo
--                   Tappa con vitto gratuito=Ereditato dalla tappa in processo
--                   Tappa con alloggio gratuito=Ereditato dalla tappa in processo
--                   Tappa con vitto e alloggio gratuito=Ereditato dalla tappa in processo
--                   Tappa senza diaria=Ereditato dalla tappa in processo
--                   Abbattimento tappa trovato='N'
--                   Percentuale abbattimento=0
--                   Diaria netta=0
--
--            Vengono lette le spese registrate a fronte di ogni tappa. La funzione aggiorna gli elementi della matrice delle tappe passati in input in base alle risultanze ricavate dalle spese associate ad ogni tappa.
--              Viene letta la diaria massima applicabile ad ogni tappa.  Si tratta della sola diaria lorda senza alcuna normalizzazione per le ore di riferimento o in base alle percentuali di abbattimento:
--                        Se la tappa è senza diaria
--                                Diaria lorda = 0
--                        Altrimenti
--                                Viene letta la diaria valida per il codice di gruppo di inquadramento, la nazione e la data di inizio missione.
--
-- Viene letta la matrice delle tappe della missione per aggiornamento degli indicatori di ritrovamento di un riferimento in MISSIONE_ABBATTIMENTI dati i dettagli di spesa associati ad una tappa
--    Per ogni tappa presente nella tabella tappe della missione:
--      Per ogni dato di abbattimento che soddisfa alle seguenti condizioni:
--                            Data inizio validità <= Data inizio tappa
--                            Data fine validità >= Data fine tappa
--                            Informazioni su Pasto/Alloggio/Trasporto/Navigazione/Vitto gratuito/Alloggio gratuito/Vitto e Alloggio gratuito = Quelli della tappa
--                            Area geografica = a quella della tappa o '*' (Indefinita)
--                            Nazione = a quella della tappa o 0 (indefinita)
--                            Inquadramento = a quello della tappa o 0 (Indefinito)
--            Se il numero di ore è minore di 4
--                  Se la durata specificata nell'abbattimento = '<4'
--                        La tappa è con abbattimento
--                        La percentuale di abbattimento è quella del dato di abbattimento corrente
--            Altrimenti se il numero di ore = 4
--                  Se la durata specificata nell'abbattimento = '>4'
--                        La tappa è con abbattimento
--                        La percentuale di abbattimento è quella del dato di abbattimento corrente
--            Altrimenti se il numero di ore > 4  e il numero di ore < 8
--                  Se la durata specificata nell'abbattimento = '>4'
--                        La tappa è con abbattimento
--                        La percentuale di abbattimento è quella del dato di abbattimento corrente
--            Altrimenti se il numero di ore = 8
--                  Se la durata specificata nell'abbattimento = '>4'
--                        La tappa è con abbattimento
--                        La percentuale di abbattimento è quella del dato di abbattimento corrente
--            Altrimenti se il numero di ore > 8
--                  Se la durata specificata nell'abbattimento = '>8'
--                        La tappa è con abbattimento
--                        La percentuale di abbattimento è quella del dato di abbattimento corrente
--
-- Viene calcolata la diaria. Se la tappa è in comune altro non è possibile che la quota esente sia inferiore all'importo della diaria (calcolaDiaria)
--   Per ogni tappa esistente nella missione in processo:
--          Viene lettura la diaria massima da applicare alla tappa. Se, per la tappa è senza diaria questa è posta = 0.
--          Negli altri casi si operano i seguenti calcoli:
--           1) Si determina il valore della diaria lorda per le ore effettive di durata della missione in
--              data tappa con la seguente formula:
--                              Arrotonda alla seconda cifra decimale((diaria lorda / 24) *numero ore tappa)
--           2) Si determina l'importo dela diaria netta considerando la percentuale di abbattimento
--              recuperata per ogni singola tappa con la seguente formula:
--                               Arrotonda alla seconda cifra decimale(Diaria lorda - (Diaria lorda * Percentuale abbattimento / 100))
--           3) Si abbatte allo stesso modo della diaria la quota esente.
--           4) Se la tappa della missione è in Italia e comune proprio viene azzerata la quota esente.
--               Se la quota esente è maggiore della diaria netta si rende uguale a quest'ultima.
--
-- Al termine vengono cancellate le righe di diaria preesistenti nella missione ed inserimento di quelle calcolate
--
-- Parametri:
--     inCdsMissione -> Codice del cds della missione
--     inUoMissione -> Codice Uo della missione
--     inEsercizioMissione -> Esercizio Missione
--     inPgMissione -> Progressivo della missione

   PROCEDURE elaboraMissioneDiaria
      (
       inCdsMissione MISSIONE.cd_cds%TYPE,
       inUoMissione MISSIONE.cd_unita_organizzativa%TYPE,
       inEsercizioMissione MISSIONE.esercizio%TYPE,
       inPgMissione MISSIONE.pg_missione%TYPE
      );

-- Valorizzazione di importo lordo e quota esente in caso di generazione di un compenso
--
-- pre-post-name: Entità anagrafica associata a terzo non trovata
-- pre: Non viene trovata l'entità anagrafica a cui il terzo della missione si riferisce
-- post: Viene sollevata un'eccezione
--
-- pre-post-name: Inquadramento soggetto anagrafico non trovato
-- pre: Inquadramento valido non trovato per il terzo della missione alla data di inizio della missione
-- post: Viene sollevata un'eccezione
--
-- pre-post-name: Lettura di una missione esistente e calcolo dell'importo lordo e della quota esente in caso
--                di generazione di un compenso da missione
-- pre:           Nesun'altra precondizione verificata
-- post:
--       Vengono letti i dati di base della missione (metodo getDatiBaseMissione) come segue:
--            Lettura della testata della missione
--            Recupero dei dati dell'anagrafico associato al terzo della missione
--            Lettura dati base dell'inquadramento:
--            Lettura della quota esente Italia/Estero
--                 Se la missione è in comune proprio o altro comune italiano
--                      Viene recuperata la quota esente per comune ITALIA ('I') valida alla data di inizio missione
--                 Se la missione è in comune estero
--                      Viene recuperata la quota esente per comune ESTERO('E') valida alla data di inizio missione
--
--       Si attiva il calcolo dell'importo complessivo di importo lordo e quota esente portati dalla missione
--            Si azzerano i valori di importo lordo e quota esente distinti per destinazione (comune proprio, altro o estero)
--            Vengono lette le tappe componenti la missione. Per ogni tappa esistente sono letti dettagli di spesa e diaria
--            Dettaglio di spesa
--                 Si scartano le spese di tipo anticipato
--                 Tappa in comune proprio
--                      Se la spesa è di tipo trasporto
--                            L'importo della spesa è sommato all'importo lordo ed alla quota esente
--                      Altrimenti l'importo della spesa è sommato all'importo lordo
--                 Altrimenti l'importo della spesa è sommato all'importo lordo ed alla quota esente
--            Dettaglio di diaria
--                 L'importo netto della diaria (dopo abbattimento) è sommato all'importo lordo.
--                 L'importo della quota esente è sommato all'importo quota esente.
--            L'importo lordo e quota esente sono sommati ai rispettivi contatori distinti per destinazione
--            (comune proprio, altro o estero)
--
--       Si procede al calcolo dell'importo complessivo di importo lordo e quota esente portati dalla missione
--            Se la missione non ha tappe in comune estero
--                 L'importo lordo del compenso è la sommatoria del corrispondente valore in comune proprio o altro
--                 La quota esente del compenso è la sommatoria del corrispondente valore in comune proprio o altro
--            Se la missione ha tappe in comune estero
--                 Si lordizza l'importo lordo totalizzato dalle tappe in comune estero
--                      Sono recuperati i montanti per l'anagrafico di riferimento al terzo della missione
--                      Si recupera il tipo di trattamento definito per la missione
--                      Si estraggono tutti i cori presenti nel trattamento che hanno a vero l'indicatore di
--                      uso nella formula di lordizzazione
--                      Per i tipi contributo ritenuta estratti si determina il corrispondente montante di riferimento
--                      Missione di soggetti dipendente
--                           Si accede agli scaglioni con il montante fiscale e previdenziale per il recupero
--                           delle aliquote di riferimento
--                      Missione di soggetti altri. Casi particolari
--                           Se per l'anagrafico è valorizzato l'indicatore di uso di una aliquota fiscale
--                                Si accede agli scaglioni con l'aliquota fiscale e con il montante previdenziale
--                                per il recupero delle aliquote di riferimento. L'accesso con l'aliquota fiscale
--                                è necessario per verificare che tale scaglione sia presente nel sistema. Se
--                                non è trovato alcun record si torna l'aliquota corrispondente allo scaglione più basso.
--                                Il recupero delle aliquote previdenziali è standard
--                           Se il trattamento prevede annualizzazione.
--                                Si parte dall'importo netto della missione (solo per la parte estera), lo si divide
--                                per il numero di giorni della rata (anno commerciale) e si moltiplica per 360 e si
--                                determina l'imponibile annualizzato.
--                                Su questo importo si applicano gli scaglioni IRPEF. Si entra con importo 0 fino alla
--                                concorrenza dell'importo annualizzato.
--                                Si sommano i valori IRPEF ottenuti dall'applicazione delle diverse aliquote nei diversi
--                                scaglioni.
--                                Il valore di IRPEF così trovato è moltiplicato per cento e diviso per l'imponibile
--                                annualizzato ottenendo così l'aliquota irpef da usare nella determinazione del
--                                coefficente di lordizzazione.
--                                Il recupero delle aliquote previdenziali è standard
--                           Altrimenti si accede agli scaglioni con il montante fiscale e previdenziale per il recupero
--                           delle aliquote di riferimento
--                      Si applica il coefficente di lordizzazione all'importo netto della diaria (- abbattimento - quota esente).
--                      Si ritorna l'importo lordo come somma della quota esente + importo lordizzato.
--
--                 L'importo lordo del compenso è la sommatoria del corrispondente valore in comune proprio, altro e estero lordizzato
--                 La quota esente del compenso è la sommatoria del corrispondente valore in comune proprio, altro e estero
--
-- Al termine vengono ritornati gli importi lordo compenso e quota esente
--
-- Parametri:
--     inCdsMissione -> Codice del cds della missione
--     inUoMissione -> Codice Uo della missione
--     inEsercizioMissione -> Esercizio Missione
--     inPgMissione -> Progressivo della missione
--     inImportoLordo -> Valore calcolato dell'importo lordo
--     inQuotaEsente -> Valore calcolato della quota esente

   PROCEDURE calcolaImportiCompenso
      (
       inCdsMissione MISSIONE.cd_cds%TYPE,
       inUoMissione MISSIONE.cd_unita_organizzativa%TYPE,
       inEsercizioMissione MISSIONE.esercizio%TYPE,
       inPgMissione MISSIONE.pg_missione%TYPE,
       inImportoLordo IN OUT NUMBER,
       inQuotaEsente IN OUT NUMBER,
       inAliquotaIrpef IN OUT NUMBER
      );

-- Controllo eliminazione della missione
--
-- Esecuzione dei controlli di ammissibilità alla cancellazione logica o fisica di una missione
--
-- pre-post-name: Il missione selezionata risulta essere già stato annullato
-- pre:           Si cerca di eliminare una missione che risulta essere già in stato di annullato
-- post:          Viene sollevata un'eccezione
--
-- pre-post-name: Impossibile eliminare una missione che risulta pagata
-- pre:           Si cerca di eliminare una missione che risulta essere collegata a mandati e reversali
-- post:          Viene sollevata un'eccezione
--
-- pre-post-name: Impossibile eliminare una missione che risulta associata ad una spesa del fondo economale
-- pre:           Si cerca di eliminare una missione che risulta essere associata ad una spesa del fondo economale
-- post:          Viene sollevata un'eccezione
--
-- pre-post-name: Esegui cancellazione di una missione
-- pre:           Viene richiesta la validazione sulla eliminazione di una missione
-- post:
--       Vengono letti i dati di base della missione
--            Se la missione risulta essere annullata (vedi pre-post-name: La missione selezionata risulta essere già
--            in stato annullato).
--            Se la missione risulta essere pagata (vedi pre-post-name: Impossibile eliminare una missione
--            che risulta pagata).

--            Se il compenso è da missione (vedi pre-post-name: I compensi associati a missione possono essere eliminati
--            solo dal pannello di gestione della missione).
--            Se il compenso è da conguaglio e non sono verificate le condizioni di cui sopra allora:
--                 Si procede all'eliminazione dello stesso conguaglio ponendo il compenso abilitato alla cancellazione
--            Se il compenso è da minicarriera e non sono verificate le condizioni di cui sopra allora:
--                 Si procede allo sgancio del compenso dalla minicarriera ed all'aggiornamento dello stato della
--                 stessa in merito all'associazione con i compensi ponendo il compenso abilitato alla cancellazione
--            In tutti i casi la cancellazione è fatta dal client mentre la procedura, abilitando la cancellazione
--            del compenso, definisce anche se questa può essere fisica o solo logica. E' logica quando il compenso
--            risulta essere già staton associato a mandati ora annullati.


   PROCEDURE eseguiDelMissione
      (
       inCdsMissione MISSIONE.cd_cds%TYPE,
       inUoMissione MISSIONE.cd_unita_organizzativa%TYPE,
       inEsercizioMissione MISSIONE.esercizio%TYPE,
       inPgMissione MISSIONE.pg_missione%TYPE,
       statoCancella IN OUT NUMBER
      );

   PROCEDURE elaboraMissioneRimborso
      (
       inCdsMissione MISSIONE.cd_cds%TYPE,
       inUoMissione MISSIONE.cd_unita_organizzativa%TYPE,
       inEsercizioMissione MISSIONE.esercizio%TYPE,
       inPgMissione MISSIONE.pg_missione%TYPE,
       inCdTrattamento MISSIONE.cd_trattamento%TYPE default null
      );
----------------------------------------------------------------------------------------------------
-- ROUTINE COMUNI
----------------------------------------------------------------------------------------------------

-- Lettura dati di base legati alla missione in calcolo; testata missione, anagrafico, base
-- inquadramento e quote esenti

   PROCEDURE getDatiBaseMissione
      (
       inCdsMissione MISSIONE.cd_cds%TYPE,
       inUoMissione MISSIONE.cd_unita_organizzativa%TYPE,
       inEsercizioMissione MISSIONE.esercizio%TYPE,
       inPgMissione MISSIONE.pg_missione%TYPE,
       eseguiLock CHAR
      );

-- Costruzione matrice diaria per tappa

   PROCEDURE creaMatriceTappe;

-- Lettura della tipologie di spese registrate per ogni tappa. Si aggiornano i riferimenti
-- per la ricerca di una entrata in MISSIONE_ABBATTIMENTI

   PROCEDURE leggiSpeseTappa
      (
       aRecMissioneTappa MISSIONE_TAPPA%ROWTYPE,
       flPasto IN OUT CHAR,
       flAlloggio IN OUT CHAR,
       flTrasporto IN OUT CHAR
      );

-- Verifica esistenza di tappe le cui spese non hanno trovato una entrata nella tabella
-- MISSIONE_ABBATTIMENTI di configurazione all'ammissibilità delle stesse

   PROCEDURE verificaConfigSpeseTappe;

-- Esecuzione del calcolo della diaria

   PROCEDURE calcolaDiaria;

-- Inserimento delle righe di diaria in MISSIONE_DETTAGLIO

   PROCEDURE inserisciDiarie;

-- Esecuzione del calcolo del rimborso

   PROCEDURE calcolaRimborso
      (
       inCdTrattamento IN MISSIONE.cd_trattamento%TYPE
      )
;

-- Inserimento delle righe di rimborso in MISSIONE_DETTAGLIO

   PROCEDURE inserisciRimborsi;

-- Lordizzazione importo per missione estera

   PROCEDURE lordizzaImporto
      (
       aInOutImportoLordo IN OUT NUMBER,
       aInOutQuotaEsente IN OUT NUMBER,
       inAliquotaIrpef IN OUT NUMBER,
       aAliquotaFiscaleAnag ANAGRAFICO.aliquota_fiscale%TYPE
      );

-- Ritorna l'aliquota cori per lordizzazione

   FUNCTION getAliquotaLordizza
      (
       isIrpef CHAR,
       aCdContributoRitenuta SCAGLIONE.cd_contributo_ritenuta%TYPE,
       aTiAnagrafico SCAGLIONE.ti_anagrafico%TYPE,
       aDataRif DATE,
       isAnnualizzato CHAR,
       aImportoAccesso IN OUT SCAGLIONE.im_inferiore%TYPE,
       aImportoMaxRif SCAGLIONE.im_inferiore%TYPE,
       aAliquotaAnag IN OUT SCAGLIONE.aliquota%TYPE
      ) RETURN SCAGLIONE.aliquota%TYPE;

END CNRCTB505;




© 2015 - 2024 Weber Informatics LLC | Privacy Policy