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

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

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

  CREATE OR REPLACE PACKAGE BODY "CNRCTB553" As

-- ==================================================================================================
-- Inserimento di un record in ACCONTO_CLASSIFIC_CORI
-- ==================================================================================================
PROCEDURE insAccontoClassificCori
   (
    aRecAccontoClassificCori ACCONTO_CLASSIFIC_CORI%Rowtype
   ) IS

BEGIN

      INSERT INTO ACCONTO_CLASSIFIC_CORI
             (ESERCIZIO,
              CD_ANAG,
              CD_CLASSIFICAZIONE_CORI,
              IMPONIBILE,
  	      ALIQUOTA,
  	      IM_ACCONTO_CALCOLATO,
              IM_ACCONTO_TRATTENUTO,
              PG_COMUNE,
              DACR,
              UTCR,
              DUVA,
              UTUV,
              PG_VER_REC)
      VALUES (aRecAccontoClassificCori.esercizio,
              aRecAccontoClassificCori.cd_anag,
              aRecAccontoClassificCori.cd_classificazione_cori,
              aRecAccontoClassificCori.imponibile,
              aRecAccontoClassificCori.aliquota,
              aRecAccontoClassificCori.im_acconto_calcolato,
              aRecAccontoClassificCori.im_acconto_trattenuto,
              aRecAccontoClassificCori.pg_comune,
              aRecAccontoClassificCori.dacr,
              aRecAccontoClassificCori.utcr,
              aRecAccontoClassificCori.duva,
              aRecAccontoClassificCori.utuv,
              aRecAccontoClassificCori.pg_ver_rec);

END insAccontoClassificCori;

/* Per il calcolo dell'imponibile su cui calcolare l'acconto (imponibile lordo - family)
   Procedura che richiama le stese procedure del CUD e conserva i dati in ESTRAZIONE_CUD */
Procedure calcolaImponibileAnnoPrec
   (
    inEsercizio NUMBER,
    inRepID     INTEGER,
    inUtente    VARCHAR2
   ) Is
   gen_cur_anag GenericCurTyp;
   aCd_anag	 anagrafico.cd_anag%Type;
Begin
      cnrctb900.valorizzaParametri(inEsercizio-1);
      Open gen_cur_anag For

	   Select Distinct t.cd_anag
	   From MINICARRIERA m, MINICARRIERA_RATA R, TERZO t, RATEIZZA_CLASSIFIC_CORI c
	   Where M.CD_CDS = R.CD_CDS
	     And M.CD_UNITA_ORGANIZZATIVA = R.CD_UNITA_ORGANIZZATIVA
	     And M.ESERCIZIO = R.ESERCIZIO
	     And M.PG_MINICARRIERA = R.PG_MINICARRIERA
	     And t.cd_terzo = m.cd_terzo
	     And t.cd_anag = c.cd_anag
	     And c.ESERCIZIO = inEsercizio - 1
	     And c.cd_classificazione_cori = 'C0'
	     And c.fl_temporaneo = 'N'
	     And m.ESERCIZIO <= inEsercizio
	     And m.stato NOT IN ('S','C')
	     And R.STATO_ASS_COMPENSO = 'N'
	     And m.cd_trattamento In (Select a.cd_trattamento
	     			   From ass_ti_rapp_ti_tratt A
	     			   Where a.cd_tipo_rapporto In('COLL','BORS'))             -- T098 ha ASS
	     And m.cd_trattamento In (Select e.cd_trattamento
	     			   From config_estrazione_cud e
	     			   Where e.esercizio = inEsercizio - 1);
      Loop
         Fetch gen_cur_anag Into aCd_anag;

         Exit When gen_cur_anag %NOTFOUND;
            -------------------------------------------------------------------------------------------------
   	    -- Inserimento in ESTRAZIONE_CUD_DETT dei compensi oggetto di esposizione sul CUD. Caricamento
   	    -- dei dati relativi alla testata del compenso
	    cnrctb900.inserisciDatiCUDDett(inEsercizio-1,
                        aCd_anag,
                        inRepID,
                        inUtente);


      End Loop;
      Close gen_cur_anag;
      -------------------------------------------------------------------------------------------------
      -- Inserimento in ESTRAZIONE_CUD_DETT dei compensi oggetto di esposizione sul CUD. Caricamento
      -- dei dati relativi alla testata del compenso

      cnrctb900.upgDatiCUDDettCori(inEsercizio-1,
                                   inRepID);

      --COMMIT;
      -------------------------------------------------------------------------------------------------
      -- Inserimento in ESTRAZIONE_CUD_DETT dei compensi oggetto di esposizione sul CUD. Caricamento
      -- dei dati relativi alla testata del compenso

      cnrctb900.upgDatiCUDDettCong(inEsercizio-1,
                                   inRepID);
      -------------------------------------------------------------------------------------------------
      -- Aggregazione dati di ESTRAZIONE_CUD_DETT in ESTRAZIONE_CUD.

      cnrctb900.aggregaDatiCud(inEsercizio-1,
                               inRepID,
                               inUtente);

End calcolaImponibileAnnoPrec;

Procedure calcolaAddTerritorioAcconto
    (
       inEsercizio  ACCONTO_CLASSIFIC_CORI.esercizio%Type,
       inPerc	    NUMBER,
       inUtente     ACCONTO_CLASSIFIC_CORI.utuv%Type
    ) Is

    gen_cur_anag GenericCurTyp;
    aCd_anag	 anagrafico.cd_anag%Type;
    aRecAccontoClassificCori ACCONTO_CLASSIFIC_CORI%ROWTYPE;
    aCdRegione  REGIONE.cd_regione%TYPE;
    aCdProvincia PROVINCIA.cd_provincia%TYPE;
    aPgComune	 ACCONTO_CLASSIFIC_CORI.pg_comune%Type;
    aRecVPreScaglione V_PRE_SCAGLIONE%ROWTYPE;
    aTiAnag	varchar2(1);
    aAliq  ACCONTO_CLASSIFIC_CORI.aliquota%Type;
    aCdCori	V_PRE_SCAGLIONE.cd_contributo_ritenuta%Type:='ADDCOM';
    inRepID  	INTEGER;
    imponibileLordoAnnoPrec	number(15,2);
    im_deduzione_family		number(15,2);
    imponibileNettoAnnoPrec	number(15,2);
    contaAcconto		number;
Begin
      dataOdierna := Sysdate;
      aCdRegione:='*';
      aCdProvincia:='*';
      aTiAnag:='*';
      aAliq:=0;

     Select Count(1)
     Into contaAcconto
     From ACCONTO_CLASSIFIC_CORI
     Where esercizio = inEsercizio;

     If contaAcconto > 0 Then
         IBMERR001.RAISE_ERR_GENERICO('Calcolo Acconto già effettuato in precedenza. E'' solo possibile visualizzare i dettagli.');
     End If;

     If inPerc is null then
         IBMERR001.RAISE_ERR_GENERICO('Percentuale con cui effettuare il calcolo dell''Acconto non valorizzata.');
     End If;

      select CNRSEQ00_PG_ESTR_FISC.nextval Into inRepID from Dual;

      --Procedura che conserva in ESTRAZIONE_CUD gli imponibili di tutti i terzi interessati
      calcolaImponibileAnnoPrec(inEsercizio,inRepID,inUtente);

      Open gen_cur_anag For

	   Select Distinct t.cd_anag
	   From MINICARRIERA m, MINICARRIERA_RATA R, TERZO t, RATEIZZA_CLASSIFIC_CORI c
	   Where M.CD_CDS = R.CD_CDS
	     And M.CD_UNITA_ORGANIZZATIVA = R.CD_UNITA_ORGANIZZATIVA
	     And M.ESERCIZIO = R.ESERCIZIO
	     And M.PG_MINICARRIERA = R.PG_MINICARRIERA
	     And t.cd_terzo = m.cd_terzo
	     And t.cd_anag = c.cd_anag
	     And c.ESERCIZIO = inEsercizio - 1
	     And c.cd_classificazione_cori = 'C0'
	     And c.fl_temporaneo = 'N'
	     And m.ESERCIZIO <= inEsercizio
	     And m.stato NOT IN ('S','C')
	     And R.STATO_ASS_COMPENSO = 'N'
	     And m.cd_trattamento In (Select a.cd_trattamento
	     			   From ass_ti_rapp_ti_tratt A
	     			   Where a.cd_tipo_rapporto In('COLL','BORS'))             -- T098 ha ASS
	     And m.cd_trattamento In (Select e.cd_trattamento
	     			   From config_estrazione_cud e
	     			   Where e.esercizio = inEsercizio - 1);
	     --And t.cd_anag Not In (101496);

      Loop

         Fetch gen_cur_anag Into aCd_anag;

         Exit When gen_cur_anag %NOTFOUND;

	 --prendo il comune del domicilio fiscale
	 --aPgComune := cnrctb080.getAnagDaCdAnag(aCd_anag).pg_comune_fiscale;
	 --prendo il comune dal terzo perchè potrebbe essere diverso da quello dell'anagrafico
	 --(anche i compensi lo prendono dal terzo)
	 aPgComune := cnrctb080.getTerzoDaCdAnag(aCd_anag).pg_comune_sede;

	 If aPgComune Is Not Null Then

	     aRecAccontoClassificCori.esercizio := inEsercizio;
	     aRecAccontoClassificCori.cd_anag := aCd_anag;
	     aRecAccontoClassificCori.cd_classificazione_cori := cnrctb545.isCoriAddCom;

	     Select Nvl(Sum(imponibile_si_detr),0), Nvl(Sum(im_deduzione_family),0), Nvl(Sum(imponibile_irpef),0)
   	     Into imponibileLordoAnnoPrec, im_deduzione_family, imponibileNettoAnnoPrec
   	     From   ESTRAZIONE_CUD
   	     Where  id_estrazione = inRepID
     	       And  esercizio = inEsercizio-1
     	       And  dip_cd_anag = aCd_anag
     	       And  rigo_cococo = 1;

	     --solo se l'imponibile netto è >0 calcolo l'acconto
	     If imponibileNettoAnnoPrec > 0 Then

  	        aRecAccontoClassificCori.imponibile := imponibileLordoAnnoPrec - im_deduzione_family;

                -- solo se l'imponibile è maggiore dell'eventuale esenzione calcolo l'acconto
                If aRecAccontoClassificCori.imponibile > CNRCTB545.getEsenzioniAddcom(aPgComune,dataOdierna).importo Then

                   -- Se per il comune è prevista l'applicazione dell'aliquota massima prendo direttamente lo scaglione passando l'imponibile
                   If cnrctb545.getIsComConAliqMax(aPgComune) = 'Y' then
	                     --prendo l'aliquota associata
	                     aRecVPreScaglione:=CNRCTB545.getScaglione(aCdCori,
                                                       	 aTiAnag,
                                                       	 dataOdierna,
                                                       	 aRecAccontoClassificCori.imponibile,
                                                       	 aAliq,
                                                       	 aCdRegione,
                                                       	 aCdProvincia,
                                                         aPgComune);
                             --inserisco solo se l'aliquota è > 0
                             If aRecVPreScaglione.aliquota_percip > 0 Then
	                                aRecAccontoClassificCori.aliquota := aRecVPreScaglione.aliquota_percip;
                                  aRecAccontoClassificCori.im_acconto_calcolato := ((aRecAccontoClassificCori.imponibile * aRecAccontoClassificCori.aliquota / 100) * inPerc)/100;
                                  aRecAccontoClassificCori.im_acconto_trattenuto := 0;
                                  aRecAccontoClassificCori.pg_comune := aPgComune;
                                  aRecAccontoClassificCori.dacr := dataOdierna;
                                  aRecAccontoClassificCori.utcr := inUtente;
                                  aRecAccontoClassificCori.duva := dataOdierna;
                                  aRecAccontoClassificCori.utuv := inUtente;
                                  aRecAccontoClassificCori.pg_ver_rec := 1;

	                                insAccontoClassificCori(aRecAccontoClassificCori);
	                           End If;
	                 Else
	                    Declare
	                      aImportoAccesso NUMBER(15,2);
	                      aImponibileBlocco NUMBER(15,2);
	                      resto NUMBER(15,2);
	                      aImportoAddCom NUMBER(15,2);

	                      gen_cur GenericCurTyp;
	                      aRecTmpScaglioneImponibile V_SCAGLIONE%ROWTYPE;
	                    Begin
	                    	 aImportoAccesso:=0;
	                    	 aImportoAddCom:=0;
	                       -- Recupero del primo scaglione
                         aRecVPreScaglione:=CNRCTB545.getScaglione(aCdCori,
                                                                   aTiAnag,
                                                                   dataOdierna,
                                                                   aImportoAccesso,
                                                                   aAliq,
                                                                   aCdRegione,
                                                                   aCdProvincia,
                                                                   aPgComune);

                         -- L'accesso agli scaglioni successivi è svolto solo se l'importo massimo di riferimento è maggiore del
                         -- valore dell'importo superiore altrimenti si determina il valore dell'irpef sul primo scaglione

                         IF aRecVPreScaglione.im_superiore >= aRecAccontoClassificCori.imponibile THEN
                             --inserisco solo se l'aliquota è > 0
                             If aRecVPreScaglione.aliquota_percip > 0 Then
	                                aRecAccontoClassificCori.aliquota := aRecVPreScaglione.aliquota_percip;
                                  aRecAccontoClassificCori.im_acconto_calcolato := ((aRecAccontoClassificCori.imponibile * aRecAccontoClassificCori.aliquota / 100) * inPerc)/100;
                                  aRecAccontoClassificCori.im_acconto_trattenuto := 0;
                                  aRecAccontoClassificCori.pg_comune := aPgComune;
                                  aRecAccontoClassificCori.dacr := dataOdierna;
                                  aRecAccontoClassificCori.utcr := inUtente;
                                  aRecAccontoClassificCori.duva := dataOdierna;
                                  aRecAccontoClassificCori.utuv := inUtente;
                                  aRecAccontoClassificCori.pg_ver_rec := 1;

	                                insAccontoClassificCori(aRecAccontoClassificCori);
	                           End If;
                         ELSE

                            -- Valorizzazione importo ADD COM per il primo scaglione

                            aImponibileBlocco:=aRecVPreScaglione.im_superiore;
                            resto:=aRecAccontoClassificCori.imponibile - aImponibileBlocco;
                            aImportoAddCom:=ROUND((aImponibileBlocco * (aRecVPreScaglione.aliquota_percip / 100)),2);

                            -- Valorizzazione importo ADD COM per i restanti scaglioni
                            BEGIN
                               OPEN gen_cur FOR

                                    SELECT *
                                    FROM   V_SCAGLIONE
                                    WHERE  cd_contributo_ritenuta = aCdCori AND
                                           (ti_anagrafico = aTiAnag OR
                                            ti_anagrafico = '*' ) AND
                                           dt_inizio_validita <= dataOdierna AND
                                           dt_fine_validita >= dataOdierna AND
                                           cd_regione = aCdRegione AND
                                           cd_provincia = aCdProvincia AND
                                           pg_comune = aPgComune AND
                                           im_inferiore >= aRecVPreScaglione.im_superiore AND
                                           im_inferiore <= aRecAccontoClassificCori.imponibile
                                    ORDER BY 4;

                               LOOP

                                  FETCH gen_cur INTO aRecTmpScaglioneImponibile;

                                  EXIT WHEN gen_cur%NOTFOUND;

                                  IF aRecAccontoClassificCori.imponibile < aRecTmpScaglioneImponibile.im_superiore THEN
                                     aImponibileBlocco:=resto;
                                  ELSE
                                     aImponibileBlocco:=aRecTmpScaglioneImponibile.im_superiore -
                                                        aRecTmpScaglioneImponibile.im_inferiore +
                                                        0.01;
                                     resto:=resto - aImponibileBlocco;
                                  END IF;

                                  aImportoAddCom:=aImportoAddCom + ROUND(aImponibileBlocco * (aRecTmpScaglioneImponibile.aliquota_percip / 100),2);

                               END LOOP;

                               CLOSE gen_cur;
                            END;

                            aRecAccontoClassificCori.aliquota := aRecVPreScaglione.aliquota_percip;
                            aRecAccontoClassificCori.im_acconto_calcolato := (aImportoAddCom * inPerc)/100;
                            aRecAccontoClassificCori.im_acconto_trattenuto := 0;
                            aRecAccontoClassificCori.pg_comune := aPgComune;
                            aRecAccontoClassificCori.dacr := dataOdierna;
                            aRecAccontoClassificCori.utcr := inUtente;
                            aRecAccontoClassificCori.duva := dataOdierna;
                            aRecAccontoClassificCori.utuv := inUtente;
                            aRecAccontoClassificCori.pg_ver_rec := 1;

	                          insAccontoClassificCori(aRecAccontoClassificCori);

                         END IF;
	                    End;
	                 End if;    --If cnrctb545.getIsComConAliqMax(aPgComune) = 'Y' then
	            End If;   --If aRecAccontoClassificCori.imponibile > CNRCTB545.getEsenzioniAddcom(aPgComune,dataOdierna).importo Then
	     End If;    --If imponibileNettoAnnoPrec > 0 Then
	  End If;  --If aPgComune Is Not Null Then
   End Loop;

   Close gen_cur_anag;

End calcolaAddTerritorioAcconto;

-- ==================================================================================================
-- Ritorna i record di ACCONTO_CLASSIFIC_CORI per addizionali territorio
-- ==================================================================================================
PROCEDURE getAccontoAddTerritorio
   (
    aEsercizio NUMBER,
    aCdAnag NUMBER,
    eseguiLock CHAR,
    aRecAccontoClassificCoriC0 IN OUT ACCONTO_CLASSIFIC_CORI%Rowtype
   ) IS

   isTemporaneo CHAR(1);
   aCdClassificazioneCoriBase CLASSIFICAZIONE_CORI.cd_classificazione_cori%TYPE;
   j BINARY_INTEGER;

   aRecAccontoClassificCoriBase ACCONTO_CLASSIFIC_CORI%ROWTYPE;

BEGIN

   isTemporaneo:='N';

      aCdClassificazioneCoriBase:=CNRCTB545.isCoriAddCom;

      aRecAccontoClassificCoriBase:=CNRCTB545.getAccontoClassificCori(aEsercizio,
                                                                      aCdAnag,
                                                                      isTemporaneo,
                                                                      aCdClassificazioneCoriBase,
                                                                      eseguiLock);
      aRecAccontoClassificCoriC0:=aRecAccontoClassificCoriBase;

END getAccontoAddTerritorio;

-- =================================================================================================
-- I valori dei montanti sono ridotti di quanto calcolato dal compenso origine in caso di modifica se
-- coincidono il riferimento all'anagrafico e quello del tipo compenso dipendente o altro
-- =================================================================================================
PROCEDURE modAccontoAddTerritorio
   (
    aRecCompenso COMPENSO%ROWTYPE,
    segno CHAR,
    aRecAccontoClassificCoriC0 IN OUT ACCONTO_CLASSIFIC_CORI%Rowtype
   ) IS
   cvCdContributoRitenuta CONTRIBUTO_RITENUTA.cd_contributo_ritenuta%TYPE;
   cvCdClassificazioneCori TIPO_CONTRIBUTO_RITENUTA.cd_classificazione_cori%TYPE;
   cvAmmontare CONTRIBUTO_RITENUTA.ammontare%TYPE;

   gen_cur GenericCurTyp;

BEGIN

   BEGIN

      OPEN gen_cur FOR

           SELECT DISTINCT A.cd_contributo_ritenuta,
                  B.cd_classificazione_cori,
                  A.ammontare
           FROM   CONTRIBUTO_RITENUTA A,
                  TIPO_CONTRIBUTO_RITENUTA B
           WHERE  A.cd_cds = aRecCompenso.cd_cds AND
                  A.cd_unita_organizzativa = aRecCompenso.cd_unita_organizzativa AND
                  A.esercizio = aRecCompenso.esercizio AND
                  A.pg_compenso = aRecCompenso.pg_compenso AND
                  A.ti_ente_percipiente = 'P' AND
                  B.cd_contributo_ritenuta = A.cd_contributo_ritenuta AND
                  B.dt_ini_validita = A.dt_ini_validita AND
                  B.pg_classificazione_montanti IS NULL AND
                  B.cd_classificazione_cori = CNRCTB545.isCoriAddComAcconto;

      LOOP

         FETCH gen_cur INTO
               cvCdContributoRitenuta,
               cvCdClassificazioneCori,
               cvAmmontare;

         EXIT WHEN gen_cur%NOTFOUND;

         IF segno = '-' THEN
            cvAmmontare:=cvAmmontare * -1;
         END IF;

         IF    cvCdClassificazioneCori = CNRCTB545.isCoriAddComAcconto THEN
               aRecAccontoClassificCoriC0.im_acconto_trattenuto:=(aRecAccontoClassificCoriC0.im_acconto_trattenuto + cvAmmontare);
         END IF;

      END LOOP;

      CLOSE gen_cur;

   END;

END modAccontoAddTerritorio;

FUNCTION getMinDataAcconto
  (aEsercizio NUMBER)Return DATE IS
   minData DATE;

BEGIN
   Begin
     select To_Date(To_Char(DT01,'DDMM')||aEsercizio,'DDMMYYYY')
     into minData
     from configurazione_cnr
     Where esercizio = aEsercizio
      and cd_unita_funzionale = '*'
	  and cd_chiave_primaria = CONST_ACCONTO_ADD_COM
      and cd_chiave_secondaria = CONST_PERIODO_VALIDITA;

     If minData is null then
         IBMERR001.RAISE_ERR_GENERICO('Data minima di validità per Acconto Addizionale comunale non specificata in configurazione CNR');
     End If;

     RETURN minData;

   Exception
      When No_Data_Found Then
         IBMERR001.RAISE_ERR_GENERICO('Periodo di validità per Acconto Addizionale comunale non specificata in configurazione CNR');
   End;

END getMinDataAcconto;

FUNCTION getMaxDataAcconto
  (aEsercizio NUMBER)Return DATE IS
   maxData DATE;

BEGIN
   Begin
     select To_Date(To_Char(DT02,'DDMM')||aEsercizio,'DDMMYYYY')
     into maxData
     from configurazione_cnr
     Where esercizio = aEsercizio
      and cd_unita_funzionale = '*'
	  and cd_chiave_primaria = CONST_ACCONTO_ADD_COM
      and cd_chiave_secondaria = CONST_PERIODO_VALIDITA;

     If maxData is null then
         IBMERR001.RAISE_ERR_GENERICO('Data massima di validità per Acconto Addizionale comunale non specificata in configurazione CNR');
     End If;

     RETURN maxData;

   Exception
      When No_Data_Found Then
         IBMERR001.RAISE_ERR_GENERICO('Periodo di validità per Acconto Addizionale comunale non specificata in configurazione CNR');
   End;

END getMaxDataAcconto;
-- =================================================================================================
-- Calcolo dell'importo della rata di addebito dell'acconto addizionale comunale
-- =================================================================================================
FUNCTION calcolaAddComAccontoRata
   (
    isOrigineCompenso INTEGER,
    cdClassificazioneCori TIPO_CONTRIBUTO_RITENUTA.cd_classificazione_cori%TYPE,
    aEsercizio NUMBER,
    aDataRifDa DATE,
    aDataRifA  DATE,
    aRecAccontoClassificCoriC0 IN OUT ACCONTO_CLASSIFIC_CORI%Rowtype
   ) RETURN NUMBER IS

   aImporto NUMBER(15,2);
   aImportoMax NUMBER(15,2);
   aNumeroMesi INTEGER;
   aDataMinAcc DATE;
   aDataMaxAcc DATE;
   aRecAccontoClassificCoriBase ACCONTO_CLASSIFIC_CORI%ROWTYPE;

BEGIN
   dataOdierna := Sysdate;

   IF cdClassificazioneCori = CNRCTB545.isCoriAddComAcconto THEN
         aRecAccontoClassificCoriBase:=aRecAccontoClassificCoriC0;
   END IF;

   -------------------------------------------------------------------------------------------------
   -- Calcolo dell'importo della rata di addizionale da addebitare. Se non vi è nulla di residuo
   -- torno 0. Anche se è stato già fatto un conguaglio torno 0.

   IF (aRecAccontoClassificCoriBase.im_acconto_calcolato = 0 Or
       aRecAccontoClassificCoriBase.im_acconto_calcolato = aRecAccontoClassificCoriBase.im_acconto_trattenuto Or
       aRecAccontoClassificCoriBase.pg_conguaglio Is Not Null) THEN
      aImporto:=0;
   ELSE

      IF isOrigineCompenso=CNRCTB545.isCompensoConguaglio THEN
         aImporto:=aRecAccontoClassificCoriBase.im_acconto_calcolato - aRecAccontoClassificCoriBase.im_acconto_trattenuto;
      ELSE
         aImportoMax:=aRecAccontoClassificCoriBase.im_acconto_calcolato - aRecAccontoClassificCoriBase.im_acconto_trattenuto;

	 aDataMinAcc := getMinDataAcconto(aEsercizio);
	 aDataMaxAcc := getMaxDataAcconto(aEsercizio);

	 If Trunc(dataOdierna) >= Trunc(aDataMinAcc) And
	    Trunc(dataOdierna) <= Trunc(aDataMaxAcc) Then
	      aNumeroMesi:=IBMUTL001.getMonthsBetween(aDataRifDa, aDataRifA);
              aImporto:=ROUND(((aRecAccontoClassificCoriBase.im_acconto_calcolato / 9) * aNumeroMesi),2);
	 Else
	      aImporto:=0;
	 End If;

         IF aImporto > aImportoMax THEN
            aImporto:=aImportoMax;
         END IF;
      END IF;
   END IF;

   RETURN aImporto;

END calcolaAddComAccontoRata;

END;




© 2015 - 2024 Weber Informatics LLC | Privacy Policy