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

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

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

  CREATE OR REPLACE PACKAGE BODY "CNRCTB039" is

 function getArticolo(aCdTipo char) return varchar2 is
 begin
  if aCdTipo = 'M' then
   return 'Il ';
  else
   return 'La ';
  end if;
 end;
 function getDesc(aEs number,aCdCds varchar2,aPgDoc number,aCdTipo char) return varchar2 is
 begin
  if aCdTipo = 'M' then
   return ' mandato n.'||aPgDoc||' es.:'||aEs||' cds:'||aCdCds;
  else
   return ' reversale n.'||aPgDoc||' es.:'||aEs||' cds:'||aCdCds;
  end if;
 end;

 procedure checkAssManRev(aEsR number,aCdCdsR varchar2,aPgDocR number, aCdTipoR char,
                          aEsS number,aCdCdsS varchar2,aPgDocS number, aCdTipoS char) is
  aASSMR ass_mandato_reversale%rowtype;
 begin
  if aCdTipoS = 'M' then
   begin
    select * into aASSMR from ass_mandato_reversale where
         esercizio_mandato = aEsS
     and cd_cds_mandato = aCdCdsS
     and pg_mandato = aPgDocS
     and ti_origine = 'S'
	for update nowait;
	if
	   aEsR=aEsS
	   and aCdCdsR=aCdCdsS
	   and aPgDocR=aPgDocS
	   and aCdTipoR=aCdTipoS
	then
     IBMERR001.RAISE_ERR_GENERICO(
	  getArticolo(aCdTipoR)||getDesc(aEsS,aCdCdsS,aPgDocS,aCdTipoS)||' risulta associato manualmente con la '||
	  getDesc(aASSMR.esercizio_reversale,aASSMR.cd_cds_reversale,aASSMR.pg_reversale,'R')
	 );
    else
     IBMERR001.RAISE_ERR_GENERICO(
	  getArticolo(aCdTipoR)||getDesc(aEsR,aCdCdsR,aPgDocR,aCdTipoR)||' risulta connesso a '||
	  getDesc(aEsS,aCdCdsS,aPgDocS,aCdTipoS)||' che a sua volta risulta associato manualmente con la '||
	  getDesc(aASSMR.esercizio_reversale,aASSMR.cd_cds_reversale,aASSMR.pg_reversale,'R')
	 );
	end if;
   exception
    when NO_DATA_FOUND then
     null;
    when TOO_MANY_ROWS then
	 if
	    aEsR=aEsS
	    and aCdCdsR=aCdCdsS
	    and aPgDocR=aPgDocS
	    and aCdTipoR=aCdTipoS
	 then
      IBMERR001.RAISE_ERR_GENERICO(
	   getArticolo(aCdTipoR)||getDesc(aEsR,aCdCdsR,aPgDocR,aCdTipoR)||' risulta associato a più di una reversale '||
	   getDesc(aASSMR.esercizio_reversale,aASSMR.cd_cds_reversale,aASSMR.pg_reversale,'R')
	  );
     else
      IBMERR001.RAISE_ERR_GENERICO(
	   getArticolo(aCdTipoR)||getDesc(aEsR,aCdCdsR,aPgDocR,aCdTipoR)||' risulta paritetico di '||
	   getDesc(aEsS,aCdCdsS,aPgDocS,aCdTipoS)||' che a sua volta risulta associato a più di una reversale '||
	   getDesc(aASSMR.esercizio_reversale,aASSMR.cd_cds_reversale,aASSMR.pg_reversale,'R')
	  );
	 end if;
   end;
  else
   begin
    select * into aASSMR from ass_mandato_reversale where
         esercizio_reversale = aEsS
     and cd_cds_reversale = aCdCdsS
     and pg_reversale = aPgDocS
     and ti_origine = 'S'
	for update nowait;
	if
	    aEsR=aEsS
	    and aCdCdsR=aCdCdsS
	    and aPgDocR=aPgDocS
	    and aCdTipoR=aCdTipoS
	then
     IBMERR001.RAISE_ERR_GENERICO(
	  getArticolo(aCdTipoR)||getDesc(aEsR,aCdCdsR,aPgDocR,aCdTipoR)||' risulta paritetica di '||
	  getDesc(aEsS,aCdCdsS,aPgDocS,aCdTipoS)||' che a sua volta risulta associato manualmente con il mandato '||
	  getDesc(aASSMR.esercizio_reversale,aASSMR.cd_cds_reversale,aASSMR.pg_reversale,'M')
	 );
	else
     IBMERR001.RAISE_ERR_GENERICO(
	  getArticolo(aCdTipoR)||getDesc(aEsS,aCdCdsS,aPgDocS,aCdTipoS)||' risulta associato manualmente con il mandato '||
	  getDesc(aASSMR.esercizio_reversale,aASSMR.cd_cds_reversale,aASSMR.pg_reversale,'M')
	 );
	end if;
   exception
    when NO_DATA_FOUND then
     null;
    when TOO_MANY_ROWS then
	 if
	    aEsR=aEsS
	    and aCdCdsR=aCdCdsS
	    and aPgDocR=aPgDocS
	    and aCdTipoR=aCdTipoS
	 then
      IBMERR001.RAISE_ERR_GENERICO(
	   getArticolo(aCdTipoR)||getDesc(aEsR,aCdCdsR,aPgDocR,aCdTipoR)||' risulta paritetica di '||
	   getDesc(aEsS,aCdCdsS,aPgDocS,aCdTipoS)||' che a sua volta risulta associato a più di un mandato '||
	   getDesc(aASSMR.esercizio_reversale,aASSMR.cd_cds_reversale,aASSMR.pg_reversale,'M')
	  );
	 else
      IBMERR001.RAISE_ERR_GENERICO(
	   getArticolo(aCdTipoR)||getDesc(aEsR,aCdCdsR,aPgDocR,aCdTipoR)||' risulta associato a più di un mandato '||
	   getDesc(aASSMR.esercizio_reversale,aASSMR.cd_cds_reversale,aASSMR.pg_reversale,'M')
	  );
	 end if;
   end;
  end if;
 end;

 procedure checkAnnullabilita(
  aTipoDoc varchar2,
  aEs number,
  aCdCds varchar2,
  aPgDoc number
 ) is
  aASSDCNMP ass_comp_doc_cont_nmp%rowtype;
  aMR mandato_riga%rowtype;
  aRR reversale_riga%rowtype;
  aCori contributo_ritenuta%rowtype;
  aNum number;
  aManNAR v_mandato_non_associabile_rev%rowtype;
 begin
  -- Start controlli se il documento è una reversale
  -- Si assume che se si tratta di reversale di compenso, non può che essere
  -- di compenso SENZA mandato principale (precondizione)
  if aTipoDoc='R' then
   -- Devo ciclare su tutte le reversali paritetiche e verificare che non siano
   -- Presenti in ASS_MANDATO_REVERSALE
   -- Ciclo su tutte le reversali/mandati figli dello stesso compenso (compresa quella in processo)
   -- Per ogni figlio devo verificare che non sia presente in ASS_MANDATO_REVERSALE
   begin
    select * into aASSDCNMP from ass_comp_doc_cont_nmp where
	      esercizio_doc = aEs
	  and cd_cds_doc = aCdCds
	  and pg_doc = aPgDoc
	  and cd_tipo_doc = aTipoDoc
	  for update nowait;

    for aASS in (select * from ass_comp_doc_cont_nmp where
	      esercizio_compenso = aASSDCNMP.esercizio_compenso
	   and cd_cds_compenso = aASSDCNMP.cd_cds_compenso
	   and cd_uo_compenso = aASSDCNMP.cd_uo_compenso
	   and pg_compenso = aASSDCNMP.pg_compenso
	   for update nowait
	) loop
     -- NON DEVE ESSERE PRESENTE IN ASS_MANDATO_REVERSALE
     checkAssManRev(aEs,aCdCds,aPgDoc,aTipoDoc,aASS.esercizio_doc,aASS.cd_cds_doc,aASS.pg_doc,aASS.cd_tipo_doc);
    end loop;
   exception
    when NO_DATA_FOUND then
     null;
    when TOO_MANY_ROWS then
     IBMERR001.RAISE_ERR_GENERICO('La '||getDesc(aEs,aCdCds,aPgDoc,aTipoDoc)||' risulta collegata a più di un compenso');
   end;


   -- rospuc 24/06/2009
  -- Se si cerca di annullare un mandato che è stato già inserito in distinta ed inviato, con fatture già protocollate(Solo differite??)
  -- bisogna blocclare l'annullamento
    Begin
           for differite in (select 1 from reversale_riga m_riga,fattura_passiva a,reversale,fattura_passiva_riga b
                                                 Where
                                                        reversale.esercizio = aEs         And
                                                        reversale.cd_cds    = aCdCds      And
                                                        reversale.pg_reversale= aPgDoc      And
                                                        reversale.esercizio = m_riga.esercizio   And
                                                        reversale.cd_cds    = m_riga.cd_cds      And
                                                        reversale.pg_reversale= m_riga.pg_reversale  And
        	                                        reversale.stato_trasmissione ='T'           And
        	                                        a.fl_liquidazione_differita ='Y' And
        	                                        a.protocollo_iva Is Not Null And
        	                                        B.cd_cds = A.cd_cds AND
                                                        B.cd_unita_organizzativa = A.cd_unita_organizzativa AND
                                                        B.esercizio = A.esercizio AND
                                                        B.pg_fattura_passiva = A.pg_fattura_passiva AND
                                                        B.dt_cancellazione IS Null   And
                                                        B.cd_cds_accertamento   = m_riga.cd_cds And
                                                        B.esercizio_accertamento =m_riga.ESERCIZIO_ACCERTAMENTO And
                                                        B.esercizio_ori_accertamento =m_riga.ESERCIZIO_ORI_ACCERTAMENTO And
                                                        B.pg_accertamento=m_riga.PG_ACCERTAMENTO  And
                                                        B.pg_accertamento_scadenzario=m_riga.PG_ACCERTAMENTO_SCADENZARIO
           ) loop
              IBMERR001.RAISE_ERR_GENERICO('La reversale non è annullabile! Include delle fatture passive differite per le quali è stato già stampato il registro iva definitivo');
           end loop;
    End;
  end if;
  -- Start controlli se il documento è un mandato
  if aTipoDoc='M' Then

  -- rospuc 24/06/2009
  -- Se si cerca di annullare un mandato che è stato già inserito in distinta ed inviato, con fatture già protocollate(Solo differite??)
  -- bisogna blocclare l'annullamento
    Begin
           for differite in (select 1 from mandato_riga m_riga,fattura_passiva a,mandato,fattura_passiva_riga b
                                                 Where
                                                        mandato.esercizio = aEs         And
                                                        mandato.cd_cds    = aCdCds      And
                                                        mandato.pg_mandato= aPgDoc      And
                                                        mandato.esercizio = m_riga.esercizio   And
                                                        mandato.cd_cds    = m_riga.cd_cds      And
                                                        mandato.pg_mandato= m_riga.pg_mandato  And
        	                                        mandato.stato_trasmissione ='T'           And
        	                                        a.fl_liquidazione_differita ='Y' And
        	                                        a.protocollo_iva Is Not Null And
        	                                        B.cd_cds = A.cd_cds AND
                                                        B.cd_unita_organizzativa = A.cd_unita_organizzativa AND
                                                        B.esercizio = A.esercizio AND
                                                        B.pg_fattura_passiva = A.pg_fattura_passiva AND
                                                        B.dt_cancellazione IS Null   And
                                                        B.cd_cds_obbligazione   = m_riga.cd_cds And
                                                        B.esercizio_obbligazione =m_riga.ESERCIZIO_OBBLIGAZIONE And
                                                        B.esercizio_ori_obbligazione =m_riga.ESERCIZIO_ORI_OBBLIGAZIONE And
                                                        B.pg_obbligazione=m_riga.PG_OBBLIGAZIONE  And
                                                        B.pg_obbligazione_scadenzario=m_riga.PG_OBBLIGAZIONE_SCADENZARIO
           ) loop
              IBMERR001.RAISE_ERR_GENERICO('Il mandato non è annullabile! Include delle fatture passive differite per le quali è stato già stampato il registro iva definitivo');
           end loop;
           for differite in (select 1 from mandato_riga m_riga,fattura_passiva a,mandato,COMPENSO c
                                                 Where
                                                        mandato.esercizio = aEs         And
                                                        mandato.cd_cds    = aCdCds      And
                                                        mandato.pg_mandato= aPgDoc      And
                                                        mandato.esercizio = m_riga.esercizio   And
                                                        mandato.cd_cds    = m_riga.cd_cds      And
                                                        mandato.pg_mandato= m_riga.pg_mandato  And
        	                                        mandato.stato_trasmissione ='T'           And
        	                                        c.fl_liquidazione_differita ='Y' And
                                                        c.cd_cds_obbligazione   = m_riga.cd_cds And
                                                        c.esercizio_obbligazione =m_riga.ESERCIZIO_OBBLIGAZIONE And
                                                        c.esercizio_ori_obbligazione =m_riga.ESERCIZIO_ORI_OBBLIGAZIONE And
                                                        c.pg_obbligazione=m_riga.PG_OBBLIGAZIONE  And
                                                        c.pg_obbligazione_scadenzario=m_riga.PG_OBBLIGAZIONE_SCADENZARIO And
                                                        a.ESERCIZIO_FATTURA_FORNITORE=C.ESERCIZIO_FATTURA_FORNITORE And
                                                	a.DT_FATTURA_FORNITORE=C.DT_FATTURA_FORNITORE And
                                                	a.NR_FATTURA_FORNITORE=C.NR_FATTURA_FORNITORE And
                                                	a.DT_REGISTRAZIONE=C.DT_REGISTRAZIONE And
			    			        a.fl_liquidazione_differita ='Y' And
        	                                        a.protocollo_iva Is Not Null)Loop
              IBMERR001.RAISE_ERR_GENERICO('Il mandato non è annullabile! Include delle fatture passive differite per le quali è stato già stampato il registro iva definitivo');
           end loop;
    End;
    -- mdurso 08/04/2011
    -- Se si cerca di annullare un mandato legato ad un compenso per il quale sono state già versate le ritenute
    -- bisogna blocclare l'annullamento (se la liquidazione avviene dalla 999, il controllo già esistente sulle PGIRO
    -- associate a documenti amministrativi non è sufficiente poichè le pgiro sono chiuse e riaperte sulla 999)
    -- Compenso con mandato principale
    -- Rospuc 16/12/2016 Modificato controllo nuova logica liquidazione cori
    Begin
       for pgiros in (select 1 from mandato m, mandato_riga mr,compenso c,contributo_ritenuta cr, ass_obb_acr_pgiro ass, liquid_gruppo_cori_det
                     Where m.esercizio = aEs
                       And m.cd_cds    = aCdCds
                       And m.pg_mandato= aPgDoc
                       And m.esercizio = mr.esercizio
                       And m.cd_cds    = mr.cd_cds
                       And m.pg_mandato= mr.pg_mandato
                       And c.cd_cds_obbligazione    = mr.cd_cds
                       And c.esercizio_obbligazione = mr.ESERCIZIO_OBBLIGAZIONE
                       And c.esercizio_ori_obbligazione = mr.ESERCIZIO_ORI_OBBLIGAZIONE
                       And c.pg_obbligazione = mr.PG_OBBLIGAZIONE
                       And c.pg_obbligazione_scadenzario = mr.PG_OBBLIGAZIONE_SCADENZARIO
                       And cr.cd_cds = c.cd_cds
                       And cr.cd_unita_organizzativa = c.cd_unita_organizzativa
                       And cr.esercizio = c.esercizio
                       And cr.pg_compenso = c.pg_compenso
                       And ass.cd_cds = cr.cd_cds_accertamento
                       And ass.esercizio = cr.esercizio_accertamento
                       And ass.esercizio_ori_accertamento = cr.esercizio_ori_accertamento
                       And ass.pg_accertamento = cr.pg_accertamento
                       And cr.cd_cds =   liquid_gruppo_cori_det.cd_cds_origine
							         AND cr.cd_unita_organizzativa = liquid_gruppo_cori_det.cd_uo_origine
        							 AND cr.esercizio = liquid_gruppo_cori_det.esercizio_contributo_ritenuta
        							 AND cr.pg_compenso = liquid_gruppo_cori_det.pg_compenso
        							 AND cr.cd_contributo_ritenuta = liquid_gruppo_cori_det.cd_contributo_ritenuta
							         AND cr.ti_ente_percipiente =  liquid_gruppo_cori_det.ti_ente_percipiente)
       loop
              IBMERR001.RAISE_ERR_GENERICO('Il mandato non è annullabile! Per il Compenso ad esso associato sono state già versate le ritenute.');
       end loop;
    End;
    -- Compenso senza mandato principale, quindi si sta annullando un mandato di ritenute
    -- Rospuc 16/12/2016 Modificato controllo nuova logica liquidazione cori
    Begin
       for pgiros in (select 1 from mandato m, mandato_riga mr,contributo_ritenuta cr, ass_obb_acr_pgiro ass, liquid_gruppo_cori_det
                     Where m.esercizio = aEs
                       And m.cd_cds    = aCdCds
                       And m.pg_mandato= aPgDoc
                       And m.esercizio = mr.esercizio
                       And m.cd_cds    = mr.cd_cds
                       And m.pg_mandato= mr.pg_mandato
                       And cr.cd_cds_obbligazione    = mr.cd_cds
                       And cr.esercizio_obbligazione = mr.ESERCIZIO_OBBLIGAZIONE
                       And cr.esercizio_ori_obbligazione = mr.ESERCIZIO_ORI_OBBLIGAZIONE
                       And cr.pg_obbligazione = mr.PG_OBBLIGAZIONE
                       And cr.pg_obbligazione_scadenzario = mr.PG_OBBLIGAZIONE_SCADENZARIO
                       And ass.cd_cds = cr.cd_cds_obbligazione
                       And ass.esercizio = cr.esercizio_obbligazione
                       And ass.esercizio_ori_obbligazione = cr.esercizio_ori_obbligazione
                       And ass.pg_obbligazione = cr.pg_obbligazione
                       And cr.cd_cds =   liquid_gruppo_cori_det.cd_cds_origine
							         AND cr.cd_unita_organizzativa = liquid_gruppo_cori_det.cd_uo_origine
        							 AND cr.esercizio = liquid_gruppo_cori_det.esercizio_contributo_ritenuta
        							 AND cr.pg_compenso = liquid_gruppo_cori_det.pg_compenso
        							 AND cr.cd_contributo_ritenuta = liquid_gruppo_cori_det.cd_contributo_ritenuta
							         AND cr.ti_ente_percipiente =  liquid_gruppo_cori_det.ti_ente_percipiente)
       loop
              IBMERR001.RAISE_ERR_GENERICO('Il mandato non è annullabile! Esso è relativo ad una ritenuta per la quale è stato già effettuato il versamento.');
       end loop;
    End;
   -- Se si tratta di mandato non associabile a reversale esco direttamente
   begin
    select * into aManNAR from V_MANDATO_NON_ASSOCIABILE_REV where
	      esercizio=aEs
	  and cd_cds = aCdCds
	  and pg_mandato = aPgDoc;
	return;
   exception when NO_DATA_FOUND then
    null;
   end;
   -- Verifica che non si tratti del mandato degli stipendi
   for aStipCofi in (select * from stipendi_cofi where
	                            esercizio_mandato = aEs
							and cd_cds_mandato = aCdCds
							and pg_mandato = aPgDoc
					for update nowait
   ) loop
      IBMERR001.RAISE_ERR_GENERICO('Il mandato di liquidazione mensile degli stipendi non è annullabile');
   end loop;
   -- Verifica che non si tratti di mandato di liquidazione CORI locale: in quel caso exce dalla procedura senza sollevare eccezioni
   for aLC in (select * from liquid_gruppo_cori where
	                            esercizio_doc = aEs
							and cd_cds_doc = aCdCds
							and pg_doc = aPgDoc
					for update nowait
   ) loop
    for aASSMRLC in (select * from ass_mandato_reversale where
         esercizio_mandato=aEs
	 and cd_cds_mandato = aCdCds
	 and pg_mandato =aPgDoc
	 and ti_origine = 'S'
	 for update nowait
	) loop
	 begin
	  for aRRL in (
	   select * from reversale_riga where
	         esercizio = aASSMRLC.esercizio_reversale
	 	 and cd_cds = aASSMRLC.cd_cds_reversale
		 and pg_reversale = aASSMRLC.pg_reversale
	   for update nowait
	  ) loop
	   if aRRL.cd_tipo_documento_amm = CNRCTB100.TI_GEN_CORI_VER_ENTRATA then
        null;
	   else
	    IBMERR001.RAISE_ERR_GENERICO('La '||getDesc(aRRL.esercizio,aRRL.cd_cds,aRRL.pg_reversale,'R')||
	    ' è stata associata manualmente al '||getDesc(aEs,aCdCds,aPgDoc,aTipoDoc));
	   end if;
	  end loop;
	 end;
	end loop;
	return;
   end loop;
   begin
    select * into aMR from mandato_riga where
         esercizio  = aEs
     and cd_cds = aCdCds
     and pg_mandato = aPgDoc
     for update nowait;
   exception when TOO_MANY_ROWS then
    -- Se il mandato ha più di una riga non è legato a compensi
    begin
	 checkAssManRev(aEs,aCdCds,aPgDoc,aTipoDoc,aEs,aCdCds,aPgDoc,aTipoDoc);
	 return;
    end;
    return;
   end;
   -- Il mandato ha una sola riga e non e' principale di compenso
   if aMR.cd_tipo_documento_amm <> CNRCTB100.TI_COMPENSO then
    -- Ogni collegamento con reversale in ASS_MANDATO_REVERSALE è stato fatto a mano
    checkAssManRev(aEs,aCdCds,aPgDoc,aTipoDoc,aEs,aCdCds,aPgDoc,aTipoDoc);
	return;
   end if;

   -- Il mandato è principale di compenso
   -- Devo scendere sui figli ed effettuare le dovute verifiche

   for aAssManRev in (select * from ass_mandato_reversale where
         cd_cds_mandato =aCdCds
	 and esercizio_mandato =aEs
	 and pg_mandato = aPgDoc
	 and ti_origine = 'S'
   ) loop
    -- Ciclo su tutte le reversali figlie di questo mandato
    -- Per ogni figlio devo verificare se appartenenva o meno all pratica principale
    -- del compenso
    begin
     -- Devo trovare il compenso di riferimento della reversale CORI
	 select * into aRR from reversale_riga where
	       esercizio = aAssManRev.esercizio_reversale
	   and cd_cds = aAssManRev.cd_cds_reversale
	   and pg_reversale = aAssManRev.pg_reversale
	 for update nowait;
    exception
	 when TOO_MANY_ROWS then
      IBMERR001.RAISE_ERR_GENERICO('La '||getDesc(aAssManRev.esercizio_reversale,aAssManRev.cd_cds_reversale,aAssManRev.pg_reversale,'R')||
	  ' è stata associata manualmente al '||getDesc(aEs,aCdCds,aPgDoc,aTipoDoc));
	end;
	begin
     select * into aCORI from contributo_ritenuta where
	        cd_cds_accertamento = aRR.cd_cds
		and esercizio_accertamento = aRR.esercizio
		and esercizio_ori_accertamento = aRR.esercizio_ori_accertamento
		and pg_accertamento = aRR.pg_accertamento
		and pg_accertamento_scadenzario = aRR.pg_accertamento_scadenzario
		and cd_cds = aMR.cd_cds_doc_amm
		and cd_unita_organizzativa = aMR.cd_uo_doc_amm
		and esercizio = aMR.esercizio_doc_amm
		and pg_compenso = aMR.pg_doc_amm
	 for update nowait;
    exception
	 when NO_DATA_FOUND Then
	 --se l'accertamento collegato è relativo alla sospensione del netto da pagare,
	 --vuol dire che la reversale è stata associata automaticamente
	 Declare
	    fl_sosp   VARCHAR2(1):= 'N';
	 Begin
	    Select fl_netto_sospeso
	    Into fl_sosp
	    From accertamento
	    Where cd_cds = aRR.cd_cds
	      And esercizio = aRR.esercizio
	      And esercizio_originale = aRR.esercizio_ori_accertamento
	      And pg_accertamento = aRR.pg_accertamento;

	    If fl_sosp = 'N' Then
      IBMERR001.RAISE_ERR_GENERICO('La '||getDesc(aAssManRev.esercizio_reversale,aAssManRev.cd_cds_reversale,aAssManRev.pg_reversale,'R')||
	  ' è stata associata manualmente al '||getDesc(aEs,aCdCds,aPgDoc,aTipoDoc));
	    End If;
	 End;
	 when TOO_MANY_ROWS then
      IBMERR001.RAISE_ERR_GENERICO('La '||getDesc(aAssManRev.esercizio_reversale,aAssManRev.cd_cds_reversale,aAssManRev.pg_reversale,'R')||
	  ' risulta collegata a più di un CORI');
	end;
   end loop;
   for aAssManMan in (select * from ass_mandato_mandato where
         cd_cds =aCdCds
	 and esercizio =aEs
	 and pg_mandato = aPgDoc
   ) loop
    -- Ciclo su tutti i mandati figli e verifico se hanno relazioni in ASS_MANDATO_REVERSALE
    checkAssManRev(aEs,aCdCds,aPgDoc,aTipoDoc,aAssManMan.esercizio_coll,aAssManMan.cd_cds_coll,aAssManMan.pg_mandato_coll,'M');
   end loop;
  end if; -- Fine controlli a partire da MANDATO
 end;
end;




© 2015 - 2024 Weber Informatics LLC | Privacy Policy