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

expsigladb.Procedure.spg_mandato.prc Maven / Gradle / Ivy

There is a newer version: 6.6.11
Show newest version
CREATE OR REPLACE PROCEDURE         SPG_MANDATO
--
-- Date: 17/01/2010
-- Version: 1.18
--
-- Protocollo VPG per stampa massiva di mandati
--
--
-- History:
--
-- Date: 18/02/2003
-- Version: 1.0
-- Creazione
--
-- Date: 21/02/2003
-- Version: 1.1
-- Aggiunti parametri di ingresso
--
-- Date: 26/02/2003
-- Version: 1.2
-- Corretta select iniziale
--
-- Date: 07/03/2003
-- Version: 1.3
-- Inserita ds_mandato come causale
--
-- Date: 20/03/2003
-- Version: 1.4
-- Filtro sui sospesi annullati
--
-- Date: 24/03/2003
-- Version: 1.5
-- Estrazione del terzo cedente per modalit? di pagamento di tipo cessonario
--
-- Date: 24/03/2003
-- Version: 1.6
-- Corretta outer join cd_terzo_cedente
--
-- Date: 25/03/2003
-- Version: 1.7
-- Filtro sui riscontri
--
-- Date: 14/05/2003
-- Version: 1.8
-- Gestione modalit? di pagamento diverse note di credito-fatture
-- (Segnalazione n. 597)
--
-- Date: 19/05/2003
-- Version: 1.9
-- Corretto filtro per modalit? di pagamento diverse (segnalazione n. 597)
--
-- Date: 21/05/2003
-- Version: 1.10
-- Corretto filtro
--
-- Date: 26/05/2003
-- Version: 1.11
-- Corretta select modalit? di pagamento (segnalazione n. 605)
--
-- Date: 20/01/2004
-- Version: 1.12
-- Estrazione CIN dalla banca (richiesta n. 697)
--
-- Date: 21/01/2004
-- Version: 1.13
-- Estrazione dt_nascita del terzo (richiesta n. 699)
--
-- Date: 30/01/2006
-- Version: 1.14
-- Aggiunto campo CD_TIPO_DOCUMENTO_CONT per la stampa dei mandati vpg_man_rev_ass.rpt
--
-- Date: 18/07/2006
-- Version: 1.15
-- Gestione Impegni/Accertamenti Residui:
-- aggiornata la funzione per tener conto anche del campo Esercizio Originale Impegno/Accertamento
--
-- Date: 09/05/2007
-- Version: 1.16
-- Gestione Siope:
-- aggiornata la funzione per inserire il riepilogo Codici Siope
--
--
-- Date: 09/09/2010
-- Version: 1.17
-- Gestione CUP:
-- aggiornata la funzione per inserire il riepilogo CUP
--
--
-- Date: 17/01/2010
-- Version: 1.18
-- Gestione Conto Speciale Ente Banca d'Italia:
-- inserita la modifica il 5/1 ed ? stata modificata la gestione utilizzando le funzioni del package CNRCTB015
--
-- Body:
--
(
 aCd_cds in varchar2,
 aEs in number,
 aPg_da in number,
 aPg_a in number,
 aDt_da in varchar2,
 aDt_a in varchar2,
 aCd_terzo in varchar2
) is
 aId number;
 i number;
 aNum1 number := 0;
 aNum2 number := 0;
 aNum3 number := 0;
 aNum4 number := 0;
 aVar1 varchar2(300) := null;
 aVar2 varchar2(300) := null;
 aVar3 varchar2(10) := null;
 uo varchar2(30);
 FL_CONTO_BI char(1):=null;
 aAbiCCEnteBI varchar2(50);
 aCabCCEnteBI varchar2(50);
 aNCCEnteBI varchar2(50);
 tesoreria_unica  char(1):=null;
 flNuovoPdg parametri_cnr.fl_nuovo_pdg%type;
begin
 select IBMSEQ00_CR_PACKAGE.nextval into aId from dual;
 i:=0;

 for aMan in (select * from mandato man
 	 	  	  where man.CD_CDS     = aCd_cds
			    and man.ESERCIZIO  = aEs
				and man.PG_MANDATO >= aPg_da
				and man.PG_MANDATO <= aPg_a
			    and man.DT_EMISSIONE >= to_date(aDt_da,'YYYY/MM/DD')
				and man.DT_EMISSIONE <= to_date(aDt_a,'YYYY/MM/DD')
			    and exists (select 1 from mandato_riga mriga
			  			    where mriga.CD_CDS     = aCd_cds
							  and mriga.ESERCIZIO  = aEs
							  and mriga.PG_MANDATO = man.PG_MANDATO
							  and to_char(mriga.CD_TERZO) like aCd_terzo)) loop

   i := i+1;

-- inizio inserimento record (A,A): testata e informazioni del beneficiario

--    select distinct cd_terzo, cd_modalita_pag, pg_banca,  nvl(cd_terzo_cedente,0)
--    into aNum1, aVar1, aNum2, aNum3
--    from mandato_riga mriga
--    where mriga.CD_CDS     	 	  	 = aMan.CD_CDS
--      and mriga.ESERCIZIO  			 = aMan.ESERCIZIO
-- 	 and mriga.PG_MANDATO 			 = aMan.PG_MANDATO
-- 	 and mriga.CD_TIPO_DOCUMENTO_AMM <> 'FATTURA_P'
-- 	 and mriga.IM_MANDATO_RIGA		 <> 0; -- escludo note di credito

	select distinct * into aNum1, aVar1, aNum2, aNum3
	from (select distinct cd_terzo, cd_modalita_pag, pg_banca,  nvl(cd_terzo_cedente,0)
	   	  from mandato_riga mriga
	      where mriga.CD_CDS     	 	  	 = aMan.CD_CDS
	        and mriga.ESERCIZIO  			 = aMan.ESERCIZIO
		    	and mriga.PG_MANDATO 			 = aMan.PG_MANDATO
		 			and mriga.CD_TIPO_DOCUMENTO_AMM = 'FATTURA_P'
		 			and mriga.IM_MANDATO_RIGA <> 0  -- escludo note di credito
		  union all
	   	  select distinct cd_terzo, cd_modalita_pag, pg_banca,  nvl(cd_terzo_cedente,0)
	   	  from mandato_riga mriga
	   	  where mriga.CD_CDS     	 	  	 = aMan.CD_CDS
	        and mriga.ESERCIZIO  			 = aMan.ESERCIZIO
		 			and mriga.PG_MANDATO 			 = aMan.PG_MANDATO
		 			and mriga.CD_TIPO_DOCUMENTO_AMM <> 'FATTURA_P');

	select parametri_cnr.fl_tesoreria_unica, parametri_cnr.fl_nuovo_pdg into tesoreria_unica, flNuovoPdg
 from parametri_cnr
 where
 esercizio =aMan.esercizio;

   begin
   		select rmp.DS_MODALITA_PAG,FL_CONTO_BI into aVar2,FL_CONTO_BI
			from rif_modalita_pagamento rmp
			where rmp.CD_MODALITA_PAG = aVar1;
   exception when NO_DATA_FOUND then
   			 aVar2 := null;
   end;


   insert into VPG_MANDATO (ID,
							CHIAVE,
							DESCRIZIONE,
							SEQUENZA,
							CD_CDS,
							ESERCIZIO,
							PG_MANDATO,
							TI_RECORD_L1,
							TI_RECORD_L2,
							DT_EMISSIONE,
							TI_MANDATO,
							TI_COMPETENZA_RESIDUO,
							DS_CDS,
							CD_UO_ORIGINE,
							DS_UO_CDS,
							CAB,
							ABI,
							NUMERO_CONTO,
							CIN,
							INTESTAZIONE,
							IBAN,
							SWIFT,
							IM_NETTO,
							IM_NETTO_LETTERE,
							DS_MANDATO,
							CD_TERZO,
							CD_UO_TERZO,
							DENOMINAZIONE_SEDE,
							VIA_SEDE,
							CAP_COMUNE_SEDE,
							DS_COMUNE_SEDE,
							CD_PROVINCIA_BENEFICIARIO,
							CODICE_FISCALE,
							PARTITA_IVA,
							DT_NASCITA,
							CD_MODALITA_PAG,
							DS_MODALITA_PAG,
							IM_MANDATO,
							IM_RITENUTE,
							UTCR,
							DACR,
							STATO)
   select aId,
   		  'Testata,beneficiario',
		  'Stampa RPT',
		  i,
		  aMan.CD_CDS,
		  aMan.ESERCIZIO,
		  aMan.PG_MANDATO,
		  'A',
		  'A',
		  aMan.DT_EMISSIONE,
		  aMan.TI_MANDATO,
		  aMan.TI_COMPETENZA_RESIDUO,
		  uo1.DS_UNITA_ORGANIZZATIVA,
		  aMan.CD_UO_ORIGINE,
		  uo2.DS_UNITA_ORGANIZZATIVA,
		  ban1.CAB,
		  ban1.ABI,
		  ban1.NUMERO_CONTO,
		  nvl(ban1.CIN,' '),
		  ban1.INTESTAZIONE,
		  ban1.codice_iban,
		  ban1.codice_swift,
		  aMan.IM_MANDATO - aMan.IM_RITENUTE,
		  IBMUTL001.INLETTERE(aMan.IM_MANDATO - aMan.IM_RITENUTE),
		  aMan.DS_MANDATO,
		  aNum1,
		  vat.CD_UNITA_ORGANIZZATIVA,
		  vat.DENOMINAZIONE_SEDE,
		  vat.VIA_SEDE || ' ' || vat.NUMERO_CIVICO_SEDE,
		  vat.CAP_COMUNE_SEDE,
		  vat.DS_COMUNE_SEDE,
		  vat.CD_PROVINCIA_SEDE,
		  vat.CODICE_FISCALE,
		  vat.PARTITA_IVA,
		  vat.DT_NASCITA,
		  aVar1,
		  aVar2,
		  aMan.IM_MANDATO,
		  aMan.IM_RITENUTE,
		  aMan.UTCR,
		  aMan.DACR,
		  aMan.stato
   from unita_organizzativa uo1
   	   ,unita_organizzativa uo2
	   ,terzo ter
	   ,banca ban1
	   ,v_anagrafico_terzo vat
   where uo1.CD_UNITA_ORGANIZZATIVA	 = aMan.CD_CDS
     and uo2.CD_UNITA_ORGANIZZATIVA  = aMan.CD_UO_ORIGINE
	 and ter.cd_unita_organizzativa  = aMan.CD_UNITA_ORGANIZZATIVA
	 and ban1.CD_TERZO				 = ter.CD_TERZO  AND
	       (( ban1.FL_CC_CDS       = 'Y' and
         tesoreria_unica ='N' ) or
         (tesoreria_unica ='Y' and
         exists(select 1 from configurazione_cnr where
         (configurazione_cnr.esercizio =0 or
         configurazione_cnr.esercizio =aMan.esercizio) and
         cd_chiave_primaria ='CONTO_CORRENTE_SPECIALE' and
         cd_chiave_secondaria='ENTE' and
         ban1.abi = val01 and
         ban1.cab = val02 and
         ban1.numero_conto like '%'||val03 )))
	 and ban1.FL_CANCELLATO          = 'N'
	 and vat.CD_TERZO				 = aNum1 ;

if(tesoreria_unica='N') then
-- se la UO ? ENTE e CD_TIPO_DOCUMENTO_AMM = GEN_CORV_S la modalit? di pagamento deve essere BI

select count(*) into aNum4
from
(
 select CD_TIPO_DOCUMENTO_AMM
             from mandato_riga mriga
          	 where mriga.CD_CDS     	 	  	 = aMan.CD_CDS
	        	and mriga.ESERCIZIO  			 = aMan.ESERCIZIO
		    		and mriga.PG_MANDATO 			 = aMan.PG_MANDATO
		 				and mriga.IM_MANDATO_RIGA <> 0  -- escludo note di credito
            and CD_TIPO_DOCUMENTO_AMM =  CNRCTB100.TI_GEN_CORI_VER_SPESA);

     aAbiCCEnteBI:=CNRCTB015.GETVAL01PERCHIAVE(CNRCTB080.CONTO_CORRENTE_SPECIALE_BI,CNRCTB080.ENTE);
     aCabCCEnteBI:=CNRCTB015.GETVAL02PERCHIAVE(CNRCTB080.CONTO_CORRENTE_SPECIALE_BI,CNRCTB080.ENTE);
     aNCCEnteBI:=CNRCTB015.GETVAL03PERCHIAVE(CNRCTB080.CONTO_CORRENTE_SPECIALE_BI,CNRCTB080.ENTE);

 --if aNum4 > 0 and CNRCTB020.getdesUO(aMan.CD_CDS) = CNRCTB020.TIPO_ENTE then
if aNum4 > 0 and CNRCTB020.getCDCDSENTE(aMan.esercizio) = aMan.CD_CDS then

        update VPG_MANDATO vpg
        set (CAB,
						 ABI,
						 NUMERO_CONTO,
						 CIN,
						 INTESTAZIONE,
						 IBAN,
						 SWIFT) =
             ( select ban1.CAB,
		              ban1.ABI,
		              ban1.NUMERO_CONTO,
		              nvl(ban1.CIN,' '),
		              ban1.INTESTAZIONE,
		              ban1.codice_iban,
		              ban1.codice_swift from banca ban1,terzo ter
                where ter.cd_unita_organizzativa  = aMan.CD_UNITA_ORGANIZZATIVA
	            and ban1.CD_TERZO				 = ter.CD_TERZO
                and ban1.abi = aAbiCCEnteBI
                and ban1.cab = aCabCCEnteBI
                and ban1.numero_conto = aNCCEnteBI)
               -- and ban1.ti_pagamento = 'I')
        where vpg.CD_CDS 		 = aMan.CD_CDS
	    and vpg.ESERCIZIO 	 = aMan.ESERCIZIO
	    and vpg.PG_MANDATO   = aMan.PG_MANDATO
	    and vpg.TI_RECORD_L1 = 'A'
	    and vpg.TI_RECORD_L2 = 'A'
	    and vpg.SEQUENZA	 = i;
 end if;
else
-- tesoreria unica
-- se la UO ? 000.407 e CD_TIPO_DOCUMENTO_AMM = GEN_CORV_S la modalit? di pagamento deve essere BI
    uo := CNRCTB020.getCdUOVersIVA(aEs);

select count(*) into aNum4
from
(
 select CD_TIPO_DOCUMENTO_AMM
             from mandato_riga mriga
          	 where mriga.CD_CDS     	 	  	 = aMan.CD_CDS
	        	and mriga.ESERCIZIO  			 = aMan.ESERCIZIO
		    		and mriga.PG_MANDATO 			 = aMan.PG_MANDATO
		 				and mriga.IM_MANDATO_RIGA <> 0  -- escludo note di credito
            and CD_TIPO_DOCUMENTO_AMM =  CNRCTB100.TI_GEN_CORI_VER_SPESA);

     aAbiCCEnteBI:=CNRCTB015.GETVAL01PERCHIAVE(CNRCTB080.CONTO_CORRENTE_SPECIALE_BI,CNRCTB080.ENTE);
     aCabCCEnteBI:=CNRCTB015.GETVAL02PERCHIAVE(CNRCTB080.CONTO_CORRENTE_SPECIALE_BI,CNRCTB080.ENTE);
     aNCCEnteBI:=CNRCTB015.GETVAL03PERCHIAVE(CNRCTB080.CONTO_CORRENTE_SPECIALE_BI,CNRCTB080.ENTE);
	if (FL_CONTO_BI ='Y') then
		if aNum4 > 0 and aMan.CD_unita_organizzativa = uo then

	        update VPG_MANDATO vpg
	        set (CAB,
							 ABI,
							 NUMERO_CONTO,
							 CIN,
							 INTESTAZIONE,
							 IBAN,
							 SWIFT) =
	             ( select ban1.CAB,
			              ban1.ABI,
			              ban1.NUMERO_CONTO,
			              nvl(ban1.CIN,' '),
			              ban1.INTESTAZIONE,
			              ban1.codice_iban,
			              ban1.codice_swift from banca ban1,terzo ter
	                where ter.cd_unita_organizzativa  = aMan.CD_UNITA_ORGANIZZATIVA
		            and ban1.CD_TERZO				 = ter.CD_TERZO
	                and ban1.abi = aAbiCCEnteBI
	                and ban1.cab = aCabCCEnteBI
	                and ban1.numero_conto like '%' ||aNCCEnteBI)
	               -- and ban1.ti_pagamento = 'I')
	        where vpg.CD_CDS 		 = aMan.CD_CDS
		    and vpg.ESERCIZIO 	 = aMan.ESERCIZIO
		    and vpg.PG_MANDATO   = aMan.PG_MANDATO
		    and vpg.TI_RECORD_L1 = 'A'
		    and vpg.TI_RECORD_L2 = 'A'
		    and vpg.SEQUENZA	 = i;
	end if;
	end if;
end if;
--
-- informazioni terzo cedente

   if aNum3 <> 0 then
   	  update VPG_MANDATO vpg
	  set (CD_TERZO_CEDENTE,
	  	   DENOM_SEDE_CEDENTE)
	  = (select aNum3, ter.DENOMINAZIONE_SEDE
	  	 from terzo ter
		 where ter.CD_TERZO = aNum3)
	  where vpg.CD_CDS 		 = aMan.CD_CDS
	    and vpg.ESERCIZIO 	 = aMan.ESERCIZIO
	    and vpg.PG_MANDATO   = aMan.PG_MANDATO
	    and vpg.TI_RECORD_L1 = 'A'
	    and vpg.TI_RECORD_L2 = 'A'
	    and vpg.SEQUENZA	 = i;
   end if;

-- coordinate bancarie istituto cassiere
   begin
   		update VPG_MANDATO vpg
		set (DS_ABICAB,
			 VIA,
			 CAP,
			 DS_COMUNE,
			 CD_PROVINCIA)
		 = (select abi.DS_ABICAB,
				   abi.VIA,
				   abi.CAP,
				   com.DS_COMUNE,
				   com.CD_PROVINCIA
			from abicab abi
				,comune com
			where abi.ABI       = vpg.ABI
			  and abi.CAB	    = vpg.CAB
			  and abi.PG_COMUNE = com.PG_COMUNE(+))
		 where vpg.CD_CDS 		= aMan.CD_CDS
		   and vpg.ESERCIZIO 	= aMan.ESERCIZIO
		   and vpg.PG_MANDATO   = aMan.PG_MANDATO
		   and vpg.TI_RECORD_L1	= 'A'
		   and vpg.TI_RECORD_L2	= 'A'
		   and vpg.SEQUENZA		= i;
   exception when NO_DATA_FOUND then
   			 null;
   end;

-- coordinate bancarie beneficiario

-- (NB: per mandati di regolarizzazione, cd_modalita_pag, pg_banca potrebbero essere null)
   begin
   		update VPG_MANDATO vpg
		set    (TI_PAGAMENTO,
				NUMERO_CONTO_TERZO,
				CIN_TERZO,
				INTESTAZIONE_TERZO,
				CAB_TERZO,
				ABI_TERZO,
				IBAN_TERZO,
				SWIFT_TERZO)
		 = (select ban2.TI_PAGAMENTO,
				   ban2.NUMERO_CONTO,
				   nvl(ban2.CIN,' '),
				   ban2.INTESTAZIONE,
				   ban2.CAB,
				   ban2.ABI,
				   ban2.codice_iban,
				   ban2.codice_swift
			from banca ban2
			where ban2.CD_TERZO = aNum1
			  and ban2.PG_BANCA = aNum2)
		 where vpg.CD_CDS 		= aMan.CD_CDS
		   and vpg.ESERCIZIO 	= aMan.ESERCIZIO
		   and vpg.PG_MANDATO   = aMan.PG_MANDATO
		   and vpg.TI_RECORD_L1	= 'A'
		   and vpg.TI_RECORD_L2	= 'A'
		   and vpg.SEQUENZA		= i;
   exception when NO_DATA_FOUND then
   			 null;
   end;

   begin
   		update VPG_MANDATO vpg
		set (DS_ABICAB_TERZO,
			 VIA_BANCA_TERZO,
			 CAP_BANCA_TERZO,
			 DS_COMUNE_BANCA_TERZO,
			 CD_PV_BANCA_TERZO)
		 = (select abi.DS_ABICAB,
				   abi.VIA,
				   abi.CAP,
				   com.DS_COMUNE,
				   com.CD_PROVINCIA
			from abicab abi
				,comune com
			where abi.ABI       = vpg.ABI_TERZO
			  and abi.CAB	    = vpg.CAB_TERZO
			  and abi.PG_COMUNE = com.PG_COMUNE(+))
		 where vpg.CD_CDS 		= aMan.CD_CDS
		   and vpg.ESERCIZIO 	= aMan.ESERCIZIO
		   and vpg.PG_MANDATO   = aMan.PG_MANDATO
		   and vpg.TI_RECORD_L1	= 'A'
		   and vpg.TI_RECORD_L2	= 'A'
		   and vpg.SEQUENZA		= i;
   exception when NO_DATA_FOUND then
   			 null;
   end;

-- fine inserimento record (A,A): testata e informazioni del beneficiario

   -- ciclo sulle righe di mandato
   for aMriga in (select mriga.*, mriga.rowid from mandato_riga mriga
   	   		  	  where mriga.CD_CDS	     = aMan.CD_CDS
				    and mriga.ESERCIZIO      = aMan.ESERCIZIO
  					and mriga.PG_MANDATO     = aMan.PG_MANDATO) loop
   -- inizio loop 1

   	  i := i+1;
-- inizio inserimento record (B,A): dettagli delle righe di mandato
	  insert into VPG_MANDATO  (ID,
								CHIAVE,
								DESCRIZIONE,
								SEQUENZA,
								CD_CDS,
								ESERCIZIO,
								PG_MANDATO,
								TI_RECORD_L1,
								TI_RECORD_L2,
								ID_RIGA,
								DT_EMISSIONE,
								TI_MANDATO,
								TI_COMPETENZA_RESIDUO,
								CD_TERZO,
								CD_TIPO_DOCUMENTO_AMM,
								PG_DOC_AMM,
								IM_NETTO_RIGA,
								IM_NETTO_RIGA_LETTERE,
								DS_MANDATO_RIGA,
								ESERCIZIO_ORI_OBBLIGAZIONE,
								PG_OBBLIGAZIONE,
								DS_OBBLIGAZIONE,
								IM_MANDATO,
								IM_RITENUTE,
								UTCR,
								DACR,
								cd_tipo_documento_cont)
	  select  aId,
	   		  'Dettagli',
			  'Stampa RPT',
			  i,
			  aMan.CD_CDS,
			  aMan.ESERCIZIO,
			  aMan.PG_MANDATO,
			  'B',
			  'A',
			  rowidtochar(aMriga.rowid),
			  aMan.DT_EMISSIONE,
			  aMan.TI_MANDATO,
			  aMan.TI_COMPETENZA_RESIDUO,
			  aMriga.CD_TERZO,
			  aMriga.CD_TIPO_DOCUMENTO_AMM,
			  aMriga.PG_DOC_AMM,
			  aMriga.IM_MANDATO_RIGA - aMriga.IM_RITENUTE_RIGA,
			  IBMUTL001.INLETTERE(aMriga.IM_MANDATO_RIGA - aMriga.IM_RITENUTE_RIGA),
			  aMriga.DS_MANDATO_RIGA,
			  aMriga.ESERCIZIO_ORI_OBBLIGAZIONE,
			  aMriga.PG_OBBLIGAZIONE,
			  obb.DS_OBBLIGAZIONE,
			  aMan.IM_MANDATO,
			  aMan.IM_RITENUTE,
			  aMan.UTCR,
			  aMan.DACR,
			  obb.cd_tipo_documento_cont
	  from obbligazione obb
	  where obb.CD_CDS 	   	     = aMriga.CD_CDS
  	    and obb.ESERCIZIO        = aMriga.ESERCIZIO
  	    and obb.ESERCIZIO_ORIGINALE  = aMriga.ESERCIZIO_ORI_OBBLIGAZIONE
  		and obb.PG_OBBLIGAZIONE  = aMriga.PG_OBBLIGAZIONE;
-- fine inserimento record (B,A): dettagli delle righe di mandato

-- inizio inserimento record (B,B): capitoli associati alle obbligazioni delle righe di mandato
	  -- ciclo sui capitoli
	  for aObbv in (select * from obbligazione_scad_voce obbv
	  	  		    where obbv.cd_cds                      = aMriga.CD_CDS
					  and obbv.esercizio                   = aMriga.ESERCIZIO
					  and obbv.esercizio_originale         = aMriga.ESERCIZIO_ORI_OBBLIGAZIONE
  					  and obbv.pg_obbligazione             = aMriga.PG_OBBLIGAZIONE
  					  and obbv.pg_obbligazione_scadenzario = aMriga.PG_OBBLIGAZIONE_SCADENZARIO) loop
	  -- inizio loop 5

	  	 i:= i+1;

	     if flNuovoPdg = 'Y' Then
		  	 insert into VPG_MANDATO   (ID,
										CHIAVE,
										DESCRIZIONE,
										SEQUENZA,
										CD_CDS,
										ESERCIZIO,
										PG_MANDATO,
										TI_RECORD_L1,
										TI_RECORD_L2,
										ID_RIGA,
										ESERCIZIO_ORI_OBBLIGAZIONE,
										PG_OBBLIGAZIONE,
										CD_VOCE,
										DS_VOCE,
										UTCR,
										DACR)
		     select  aId,
		   		  'Capitoli',
				  'Stampa RPT',
				  i,
				  aMan.CD_CDS,
				  aMan.ESERCIZIO,
				  aMan.PG_MANDATO,
				  'B',
				  'B',
				  rowidtochar(aMriga.rowid),
				  aMriga.ESERCIZIO_ORI_OBBLIGAZIONE,
				  aMriga.PG_OBBLIGAZIONE,
				  aObbv.CD_VOCE,
				  voce.DS_ELEMENTO_VOCE,
				  aMan.UTCR,
				  aMan.DACR
		     from elemento_voce voce
			 where voce.ESERCIZIO       = aObbv.ESERCIZIO
			   and voce.TI_GESTIONE 	= aObbv.ti_gestione
	  		   and voce.TI_APPARTENENZA = aObbv.ti_appartenenza
	  		   and voce.CD_ELEMENTO_VOCE = aObbv.CD_VOCE;
	     else
		  	 insert into VPG_MANDATO   (ID,
											CHIAVE,
											DESCRIZIONE,
											SEQUENZA,
											CD_CDS,
											ESERCIZIO,
											PG_MANDATO,
											TI_RECORD_L1,
											TI_RECORD_L2,
											ID_RIGA,
											ESERCIZIO_ORI_OBBLIGAZIONE,
											PG_OBBLIGAZIONE,
											CD_VOCE,
											DS_VOCE,
											UTCR,
											DACR)
		     select  aId,
		   		  'Capitoli',
				  'Stampa RPT',
				  i,
				  aMan.CD_CDS,
				  aMan.ESERCIZIO,
				  aMan.PG_MANDATO,
				  'B',
				  'B',
				  rowidtochar(aMriga.rowid),
				  aMriga.ESERCIZIO_ORI_OBBLIGAZIONE,
				  aMriga.PG_OBBLIGAZIONE,
				  aObbv.CD_VOCE,
				  voce.DS_VOCE,
				  aMan.UTCR,
				  aMan.DACR
		     from voce_f voce
			 where voce.ESERCIZIO       = aObbv.ESERCIZIO
			   and voce.TI_GESTIONE 	= aObbv.ti_gestione
	  		   and voce.TI_APPARTENENZA = aObbv.ti_appartenenza
	  		   and voce.CD_VOCE 		= aObbv.CD_VOCE;
	  	 end if;

	  end loop; -- fine loop 5

-- fine inserimento record (B,B): capitoli associati alle obbligazioni delle righe di mandato

   end loop; -- fine loop 1

-- inizio inserimento record (C,A): reversali associate al mandato
   -- ciclo sulle reversali associate
   for aAssmr in (select * from ass_mandato_reversale assmr
   	   		  	  where assmr.CD_CDS_MANDATO     = aMan.cd_cds
				    and assmr.ESERCIZIO_MANDATO  = aMan.esercizio
  					and assmr.PG_MANDATO         = aMan.pg_mandato
  					order by assmr.pg_reversale) loop
   -- inizio loop 2

   	  i:= i+1;

	  insert into VPG_MANDATO  (ID,
								CHIAVE,
								DESCRIZIONE,
								SEQUENZA,
								CD_CDS,
								ESERCIZIO,
								PG_MANDATO,
								TI_RECORD_L1,
								TI_RECORD_L2,
								DT_EMISSIONE,
								TI_MANDATO,
								TI_COMPETENZA_RESIDUO,
								CD_CDS_REV,
								ESERCIZIO_REV,
								PG_REVERSALE,
								DS_REVERSALE_RIGA,
								IM_REVERSALE_RIGA,
								UTCR,
								DACR)
	  select  aId,
	   		  'Reversali associate',
			  'Stampa RPT',
			  i,
			  aMan.CD_CDS,
			  aMan.ESERCIZIO,
			  aMan.PG_MANDATO,
			  'C',
			  'A',
			  aMan.DT_EMISSIONE,
			  aMan.TI_MANDATO,
			  aMan.TI_COMPETENZA_RESIDUO,
			  aAssmr.CD_CDS_REVERSALE,
			  aAssmr.ESERCIZIO_REVERSALE,
			  aAssmr.PG_REVERSALE,
			  r.DS_REVERSALE,
			  r.IM_REVERSALE,
			  aMan.UTCR,
			  aMan.DACR
	  from reversale r
	  where r.CD_CDS        = aAssmr.CD_CDS_REVERSALE
	    and r.ESERCIZIO     = aAssmr.ESERCIZIO_REVERSALE
  		and r.PG_REVERSALE  = aAssmr.PG_REVERSALE;

   end loop; -- fine loop 2

-- fine inserimento record (C,A): reversali associate al mandato

-- inizio inserimento record (D,A): sospesi
   -- ciclo sui sospesi
   for aSosp in (select * from sospeso_det_usc sosp
   	   		 	 where sosp.CD_CDS_mandato      = aMan.cd_cds
  				   and sosp.ESERCIZIO   = aMan.esercizio
  				   and sosp.PG_MANDATO  = aMan.pg_mandato
				   and sosp.STATO		<> 'A'
				   and sosp.TI_SOSPESO_RISCONTRO = 'S') loop
   -- inizio loop 3

   	  i:= i+1;

	  insert into VPG_MANDATO  (ID,
								CHIAVE,
								DESCRIZIONE,
								SEQUENZA,
								CD_CDS,
								ESERCIZIO,
								PG_MANDATO,
								TI_RECORD_L1,
								TI_RECORD_L2,
								DT_EMISSIONE,
								TI_MANDATO,
								TI_COMPETENZA_RESIDUO,
								CD_SOSPESO,
								IM_ASSOCIATO,
								DT_REGISTRAZ_SOSPESO,
								UTCR,
								DACR)
	  select  aId,
	   		  'Sospesi',
			  'Stampa RPT',
			  i,
			  aMan.CD_CDS,
			  aMan.ESERCIZIO,
			  aMan.PG_MANDATO,
			  'D',
			  'A',
			  aMan.DT_EMISSIONE,
			  aMan.TI_MANDATO,
			  aMan.TI_COMPETENZA_RESIDUO,
			  aSosp.CD_SOSPESO,
			  aSosp.IM_ASSOCIATO,
			  s.DT_REGISTRAZIONE,
			  aMan.UTCR,
			  aMan.DACR
	  from sospeso s
	  where s.CD_CDS 			   = aSosp.CD_CDS
  	    and s.ESERCIZIO 		   = aSosp.ESERCIZIO
  		and s.TI_ENTRATA_SPESA 	   = aSosp.TI_ENTRATA_SPESA
  		and s.TI_SOSPESO_RISCONTRO = aSosp.TI_SOSPESO_RISCONTRO
  		and s.CD_SOSPESO 		   = aSosp.CD_SOSPESO;

   end loop; -- fine loop 3

-- fine inserimento record (D,A): sospesi

-- inizio inserimento record (E,A): bolli

   -- ciclo sui bolli
   for aMterzo in (select * from mandato_terzo mterzo
   	   		   	   where mterzo.CD_CDS     = aMan.CD_CDS
  				     and mterzo.ESERCIZIO  = aMan.ESERCIZIO
  					 and mterzo.PG_MANDATO = aMan.PG_MANDATO) loop
   -- inizio loop 4

   	  i:= i+1;

	  insert into VPG_MANDATO  (ID,
								CHIAVE,
								DESCRIZIONE,
								SEQUENZA,
								CD_CDS,
								ESERCIZIO,
								PG_MANDATO,
								TI_RECORD_L1,
								TI_RECORD_L2,
								DT_EMISSIONE,
								TI_MANDATO,
								TI_COMPETENZA_RESIDUO,
								CD_TIPO_BOLLO,
								DS_TIPO_BOLLO,
								UTCR,
								DACR)
	  select  aId,
	   		  'Bolli',
			  'Stampa RPT',
			  i,
			  aMan.CD_CDS,
			  aMan.ESERCIZIO,
			  aMan.PG_MANDATO,
			  'E',
			  'A',
			  aMan.DT_EMISSIONE,
			  aMan.TI_MANDATO,
			  aMan.TI_COMPETENZA_RESIDUO,
			  aMterzo.CD_TIPO_BOLLO,
			  tbollo.DS_TIPO_BOLLO,
			  aMan.UTCR,
			  aMan.DACR
	  from tipo_bollo tbollo
	  where tbollo.CD_TIPO_BOLLO = aMterzo.CD_TIPO_BOLLO;

   end loop; -- fine loop 4

-- fine inserimento record (E,A): bolli

-- inizio inserimento record (F,A): siope

   -- ciclo sui codici siope
   for aMsiope in (select distinct msiope.cd_siope CD_SIOPE, descrizione DS_SIOPE, sum(importo) IM_SIOPE, msiope.pg_mandato
   			from mandato_siope msiope, codici_siope siope
				where msiope.CD_CDS = aMan.CD_CDS
  				and msiope.ESERCIZIO  = aMan.ESERCIZIO
  				and msiope.PG_MANDATO = aMan.PG_MANDATO
				and msiope.esercizio_siope = siope.esercizio
				and msiope.ti_gestione = siope.ti_gestione
				and msiope.cd_siope = siope.cd_siope group by msiope.cd_siope, descrizione, msiope.pg_mandato) loop
   -- inizio loop 5

   	  i:= i+1;

	  insert into VPG_MANDATO  (ID,
								CHIAVE,
								DESCRIZIONE,
								SEQUENZA,
								CD_CDS,
								ESERCIZIO,
								PG_MANDATO,
								TI_RECORD_L1,
								TI_RECORD_L2,
								CD_SIOPE,
								DS_SIOPE,
								IM_SIOPE,
								UTCR,
								DACR)
	  values(  aId,
	   		  'Siope',
			  'Stampa RPT',
			  i,
			  aMan.CD_CDS,
			  aMan.ESERCIZIO,
			  aMan.PG_MANDATO,
			  'F',
			  'A',
			  aMsiope.CD_SIOPE,
			  aMsiope.DS_SIOPE,
			  aMsiope.IM_SIOPE,
			  aMan.UTCR,
			  aMan.DACR);

   end loop; -- fine loop 5

-- fine inserimento record (F,A): siope
-- inizio inserimento record (G,A): cup

   -- ciclo sui cup
   for aMcup in (select distinct mcup.cd_cup CD_cup, descrizione DS_CUP, sum(importo) IM_CUP, mcup.pg_mandato
   			from mandato_cup mcup, cup
				where mcup.CD_CDS = aMan.CD_CDS
  				and mcup.ESERCIZIO  = aMan.ESERCIZIO
  				and mcup.PG_MANDATO = aMan.PG_MANDATO
				  and mcup.cd_cup = cup.cd_cup group by mcup.cd_cup, descrizione, mcup.pg_mandato
				  union
				  (select distinct mcup.cd_cup CD_cup, descrizione DS_CUP, sum(importo) IM_CUP, mcup.pg_mandato
   			from mandato_siope_cup mcup, cup
				where mcup.CD_CDS = aMan.CD_CDS
  				and mcup.ESERCIZIO  = aMan.ESERCIZIO
  				and mcup.PG_MANDATO = aMan.PG_MANDATO
				  and mcup.cd_cup = cup.cd_cup group by mcup.cd_cup, descrizione, mcup.pg_mandato)) loop
   -- inizio loop 6

   	  i:= i+1;

	  insert into VPG_MANDATO  (ID,
								CHIAVE,
								DESCRIZIONE,
								SEQUENZA,
								CD_CDS,
								ESERCIZIO,
								PG_MANDATO,
								TI_RECORD_L1,
								TI_RECORD_L2,
								CD_CUP,
								DS_CUP,
								IM_CUP,
								UTCR,
								DACR)
	  values(  aId,
	   		  'CUP',
			  'Stampa RPT',
			  i,
			  aMan.CD_CDS,
			  aMan.ESERCIZIO,
			  aMan.PG_MANDATO,
			  'G',
			  'A',
			  aMcup.CD_CUP,
			  aMcup.DS_CUP,
			  aMcup.IM_CUP,
			  aMan.UTCR,
			  aMan.DACR);

   end loop; -- fine loop 6

-- fine inserimento record (G,A): CUP
 end loop;
End;
/






© 2015 - 2024 Weber Informatics LLC | Privacy Policy