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

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

There is a newer version: 6.6.11
Show newest version
CREATE OR REPLACE PROCEDURE INSERT_VPG_REVERSALE
--
-- Date: 17/05/2007
-- Version: 1.7
--
-- Stored procedure per inserimento record in VPG_REVERSALE
--
--
-- History:
--
-- Date: 26/02/2003
-- Version: 1.0
-- Creazione
--
-- Date: 07/03/2003
-- Version: 1.1
-- Corretto inserimento record di sospesi
--
-- Date: 20/03/2003
-- Version: 1.2
-- Filtro sui sospesi annullati
--
-- Date: 25/03/2003
-- Version: 1.3
-- Filtro sui riscontri
--
-- Date: 28/05/2003
-- Version: 1.4
-- Inserimento comune DS_COMUNE_SEDE terzo per record B
--
-- Date: 20/01/2004
-- Version: 1.5
-- Estrazione CIN dalla banca (richiesta n. 697)
--
-- Date: 19/07/2006
-- Version: 1.6
-- Gestione Impegni/Accertamenti Residui:
-- gestito il nuovo campo ESERCIZIO_ORIGINALE
--
-- Date: 17/05/2007
-- Version: 1.7
-- Gestione Codici Siope:
-- aggiunti i campi CD_SIOPE,DS_SIOPE,IM_SIOPE
--
-- Date: 27/10/2010
-- Version: 1.8
-- Gestione CUP:
-- aggiornata la funzione per inserire il riepilogo CUP
--

-- Body:
--
(
 aCd_cds in varchar2,
 aEs in number,
 aPg in number,
 i in out number,
 aId in out number
) is
 aRev reversale%rowtype;
 aNum1 number := 0;
 aNum2 number := 0;
 aNum3 number := 0;
 aVar1 varchar2(300) := null;
 aVar2 varchar2(300) := null;
 cd_modPag rif_modalita_pagamento.CD_MODALITA_PAG%type:=null;

begin

	select * into aRev
	from reversale rev
	where rev.CD_CDS       = aCd_cds
	  and rev.ESERCIZIO    = aEs
	  and rev.PG_REVERSALE = aPg;

	-- inizio inserimento record A: testata

	select min(cd_terzo_uo),
		   min(PG_BANCA),
		   min(cd_terzo),
		   min(cd_modalita_pag)
	into aNum1,
		 aNum2,
		 aNum3,
		 cd_modPag
	from reversale_riga rriga
	where rriga.CD_CDS	     = aRev.CD_CDS
	  and rriga.ESERCIZIO    = aRev.ESERCIZIO
	  and rriga.PG_REVERSALE = aRev.PG_REVERSALE
	group by cd_cds, esercizio, pg_reversale;

	insert into VPG_REVERSALE  (ID,
								CHIAVE,
								SEQUENZA,
								DESCRIZIONE,
								CD_CDS,
								ESERCIZIO,
								PG_REVERSALE,
								TI_RECORD,
								DT_EMISSIONE,
								TI_REVERSALE,
								TI_COMPETENZA_RESIDUO,
								DS_CDS,
								CD_UO_ORIGINE,
								DS_UO_CDS,
								IM_REVERSALE,
								IM_REVERSALE_LETTERE,
								CD_TERZO,
								DENOMINAZIONE_SEDE,
								VIA_SEDE,
								CAP_COMUNE_SEDE,
								DS_COMUNE_SEDE,
								CD_PV_TERZO,
								CODICE_FISCALE,
								UTCR,
								DACR,
								STATO)
	select  aId,
		    'A:testata',
		    i,
			'Stampa RPT',
			aRev.CD_CDS,
			aRev.ESERCIZIO,
			aRev.PG_REVERSALE,
			'A',
			aRev.DT_EMISSIONE,
			aRev.TI_REVERSALE,
			aRev.TI_COMPETENZA_RESIDUO,
			uo1.DS_UNITA_ORGANIZZATIVA,
			aRev.CD_UO_ORIGINE,
			uo2.DS_UNITA_ORGANIZZATIVA,
			aRev.IM_REVERSALE,
			IBMUTL001.INLETTERE(aRev.IM_REVERSALE),
			aNum3, -- cd_terzo
			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,
			aRev.UTCR,
			aRev.DACR,
			aRev.STATO
	from unita_organizzativa uo1
		,unita_organizzativa uo2
		,v_anagrafico_terzo vat
	where uo1.CD_UNITA_ORGANIZZATIVA = aRev.CD_CDS
	  and uo2.CD_UNITA_ORGANIZZATIVA = aRev.CD_UO_ORIGINE
	  and vat.CD_TERZO				 = aNum3;

 begin
  if (cd_modPag is not null and cd_modPag='BI') then
  	 update VPG_REVERSALE vpg
		 set (CAB,
			  ABI,
			  NUMERO_CONTO,
			  CIN,
			  INTESTAZIONE,
			  IBAN)
		 = (select ban.CAB,
		   		   ban.ABI,
				   ban.NUMERO_CONTO,
				   nvl(ban.CIN,' '),
				   ban.INTESTAZIONE,
				   ban.codice_iban
		    from banca ban
			where ban.CD_TERZO = aNum1
	  		  and ban.PG_BANCA = aNum2)
		 where vpg.CD_CDS 		= aRev.CD_CDS
		   and vpg.ESERCIZIO 	= aRev.ESERCIZIO
		   and vpg.PG_REVERSALE = aRev.PG_REVERSALE
		   and vpg.TI_RECORD	= 'A'
		   and vpg.SEQUENZA		= i;
  else

		 update VPG_REVERSALE vpg
		 set (CAB,
			  ABI,
			  NUMERO_CONTO,
			  CIN,
			  INTESTAZIONE,
			  IBAN)
		 = (select ban.CAB,
		   		   ban.ABI,
				   ban.NUMERO_CONTO,
				   nvl(ban.CIN,' '),
				   ban.INTESTAZIONE,
				   ban.codice_iban
		    from banca ban,parametri_cnr
			where
					parametri_cnr.esercizio =aRev.esercizio and
					(( ban.PG_BANCA = aNum2 and
	  		  parametri_cnr.fl_tesoreria_unica ='N' ) or
         (parametri_cnr.fl_tesoreria_unica ='Y' and
         exists(select 1 from configurazione_cnr where
         (configurazione_cnr.esercizio =0 or
         configurazione_cnr.esercizio =aRev.esercizio) and
         cd_chiave_primaria ='CONTO_CORRENTE_SPECIALE' and
         cd_chiave_secondaria='ENTE' and
         ban.abi =val01 and
         ban.cab =val02 and
         ban.numero_conto like '%'||val03 )))
	 and ban.FL_CANCELLATO          = 'N'
	 and ban.CD_TERZO				 = aNum1 )
		 where vpg.CD_CDS 		= aRev.CD_CDS
		   and vpg.ESERCIZIO 	= aRev.ESERCIZIO
		   and vpg.PG_REVERSALE = aRev.PG_REVERSALE
		   and vpg.TI_RECORD	= 'A'
		   and vpg.SEQUENZA		= i;
		end if;
		 update VPG_REVERSALE 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 com.PG_COMUNE = abi.PG_COMUNE)
		 where vpg.CD_CDS 		= aRev.CD_CDS
		   and vpg.ESERCIZIO 	= aRev.ESERCIZIO
		   and vpg.PG_REVERSALE = aRev.PG_REVERSALE
		   and vpg.TI_RECORD	= 'A'
		   and vpg.SEQUENZA		= i;
	exception when NO_DATA_FOUND then
			  null;
	end;

	-- fine inserimento record A: testata

	-- inizio inserimento record B: righe

	-- ciclo sulle righe dellal reversale
	for aRriga in (select * from reversale_riga rriga
	   	   		   where rriga.CD_CDS	  	= aRev.CD_CDS
	 				 and rriga.ESERCIZIO	= aRev.ESERCIZIO
	 				 and rriga.PG_REVERSALE = aRev.PG_REVERSALE) loop
	   -- inizio loop 2

	   	  i := i+1;

	   	  insert into VPG_REVERSALE (ID,
									CHIAVE,
									SEQUENZA,
									DESCRIZIONE,
									CD_CDS,
									ESERCIZIO,
									PG_REVERSALE,
									TI_RECORD,
									DT_EMISSIONE,
									TI_REVERSALE,
									TI_COMPETENZA_RESIDUO,
									CD_TERZO,
									DENOMINAZIONE_SEDE,
									VIA_SEDE,
									CAP_COMUNE_SEDE,
									DS_COMUNE_SEDE,
									CD_PV_TERZO,
									CODICE_FISCALE,
									CD_TIPO_DOCUMENTO_AMM,
									PG_DOC_AMM,
									IM_REVERSALE_RIGA,
									IM_REVERSALE_RIGA_LETTERE,
									DS_REVERSALE_RIGA,
									ESERCIZIO_ORI_ACCERTAMENTO,
									PG_ACCERTAMENTO,
									DS_ACCERTAMENTO,
									CD_VOCE,
									DS_VOCE,
									UTCR,
									DACR)
		  select aId,
		    	 'B:dettagli',
		    	 i,
				 'Stampa RPT',
				 aRev.CD_CDS,
				 aRev.ESERCIZIO,
				 aRev.PG_REVERSALE,
				 'B',
				 aRev.DT_EMISSIONE,
				 aRev.TI_REVERSALE,
				 aRev.TI_COMPETENZA_RESIDUO,
				 aRriga.CD_TERZO,
				 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,
				 aRriga.CD_TIPO_DOCUMENTO_AMM,
				 aRriga.PG_DOC_AMM,
				 aRriga.IM_REVERSALE_RIGA,
				 IBMUTL001.INLETTERE(aRriga.IM_REVERSALE_RIGA),
				 aRriga.DS_REVERSALE_RIGA,
				 aRriga.ESERCIZIO_ORI_ACCERTAMENTO,
				 aRriga.PG_ACCERTAMENTO,
				 acc.DS_ACCERTAMENTO,
				 acc.cd_voce,
				 voce.DS_VOCE,
				 aRev.UTCR,
				 aRev.DACR
		  from v_anagrafico_terzo vat
		  	  ,accertamento acc
			  ,voce_f voce
		  where vat.CD_TERZO         = aRriga.CD_TERZO
		    and acc.CD_CDS 		     = aRriga.CD_CDS
	 			and acc.ESERCIZIO 	     = aRriga.ESERCIZIO
	 			and acc.ESERCIZIO_ORIGINALE  = aRriga.ESERCIZIO_ORI_ACCERTAMENTO
	 			and acc.PG_ACCERTAMENTO  = aRriga.PG_ACCERTAMENTO
			and voce.ESERCIZIO 	  	 = acc.ESERCIZIO
	 			and voce.TI_APPARTENENZA in ('C','D')
	 			and voce.TI_GESTIONE 	 = 'E'
	 			and voce.CD_VOCE 		 = acc.CD_VOCE;

	end loop; -- fine loop 2

	-- fine inserimento record B: righe

	-- inizio inserimento record C: sospesi

	for aSosp in (select * from sospeso_det_etr sosp
		 	  	  where sosp.CD_CDS_reversale       = aRev.cd_cds
	 		   	    and sosp.ESERCIZIO    = aRev.esercizio
	 		   		and sosp.PG_REVERSALE = aRev.pg_reversale
					and sosp.STATO		  <> 'A'
					and sosp.TI_SOSPESO_RISCONTRO = 'S') loop
	-- inizio loop 3

	   i := i+1;

	   insert into VPG_REVERSALE (ID,
								CHIAVE,
								SEQUENZA,
								DESCRIZIONE,
								CD_CDS,
								ESERCIZIO,
								PG_REVERSALE,
								TI_RECORD,
								DT_EMISSIONE,
								TI_REVERSALE,
								TI_COMPETENZA_RESIDUO,
								CD_SOSPESO,
								IM_ASSOCIATO,
								DT_REGISTRAZ_SOSPESO,
								UTCR,
								DACR)
	   select aId,
		    'C:sospesi',
		    i,
			'Stampa RPT',
			aRev.CD_CDS,
			aRev.ESERCIZIO,
			aRev.PG_REVERSALE,
			'C',
			aRev.DT_EMISSIONE,
			aRev.TI_REVERSALE,
			aRev.TI_COMPETENZA_RESIDUO,
			aSosp.CD_SOSPESO,
			aSosp.IM_ASSOCIATO,
			s.DT_REGISTRAZIONE,
			aRev.UTCR,
			aRev.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 C: sospesi

	   -- inizio inserimento record D: codici siope

   for aRsiope in (select distinct rsiope.cd_siope CD_SIOPE, descrizione DS_SIOPE, sum(importo) IM_SIOPE, rsiope.pg_reversale
   			from reversale_siope rsiope, codici_siope siope
				where rsiope.CD_CDS = aRev.CD_CDS
  				and rsiope.ESERCIZIO  = aRev.ESERCIZIO
  				and rsiope.PG_REVERSALE = aRev.PG_REVERSALE
				and rsiope.esercizio_siope = siope.esercizio
				and rsiope.ti_gestione = siope.ti_gestione
				and rsiope.cd_siope = siope.cd_siope group by rsiope.cd_siope, descrizione, rsiope.pg_reversale) loop
   -- inizio loop 4

   	  i:= i+1;

	  insert into VPG_REVERSALE (ID,
								CHIAVE,
								SEQUENZA,
								DESCRIZIONE,
								CD_CDS,
								ESERCIZIO,
								PG_REVERSALE,
								TI_REVERSALE,
								TI_RECORD,
								CD_SIOPE,
								DS_SIOPE,
								IM_SIOPE,
								UTCR,
								DACR)
	   values( aId,
		    'D:siope',
		    i,
			'Stampa RPT',
			aRev.CD_CDS,
			aRev.ESERCIZIO,
			aRev.PG_REVERSALE,
			aRev.TI_REVERSALE,
			'D',
			aRsiope.CD_SIOPE,
			aRsiope.DS_SIOPE,
			aRsiope.IM_SIOPE,
			aRev.UTCR,
			aRev.DACR);

   end loop; -- fine loop 4

-- fine inserimento record (D): siope
-- inizio inserimento record (E): cup

   -- ciclo sui cup
   for aRcup in (select distinct rcup.cd_cup CD_cup, descrizione DS_CUP, sum(importo) IM_CUP, rcup.pg_reversale
   			from reversale_cup rcup, cup
				where rcup.CD_CDS = aRev.CD_CDS
  				and rcup.ESERCIZIO  = aRev.ESERCIZIO
  				and rcup.pg_reversale = aRev.pg_reversale
				  and rcup.cd_cup = cup.cd_cup group by rcup.cd_cup, descrizione, rcup.pg_reversale
				  union
				  (select distinct rcup.cd_cup CD_cup, descrizione DS_CUP, sum(importo) IM_CUP, rcup.pg_reversale
   			from reversale_siope_cup rcup, cup
				where rcup.CD_CDS = aRev.CD_CDS
  				and rcup.ESERCIZIO  = aRev.ESERCIZIO
  				and rcup.pg_reversale = aRev.pg_reversale
				  and rcup.cd_cup = cup.cd_cup group by rcup.cd_cup, descrizione, rcup.pg_reversale)) loop
   -- inizio loop 5

   	  i:= i+1;
insert into VPG_REVERSALE (ID,
								CHIAVE,
								SEQUENZA,
								DESCRIZIONE,
								CD_CDS,
								ESERCIZIO,
								PG_REVERSALE,
								TI_REVERSALE,
								TI_RECORD,
								CD_CUP,
								DS_CUP,
								IM_CUP,
								UTCR,
								DACR)
	   values( aId,
		    'E:cup',
  		  i,
  			'Stampa RPT',
  			aRev.CD_CDS,
  			aRev.ESERCIZIO,
  			aRev.PG_REVERSALE,
  			aRev.TI_REVERSALE,
  			'E',
  			aRcup.CD_CUP,
  			aRcup.DS_CUP,
  			aRcup.IM_CUP,
  			aRev.UTCR,
  			aRev.DACR);
   end loop; -- fine loop 5

-- fine inserimento record (E): CUP

end;
/






© 2015 - 2024 Weber Informatics LLC | Privacy Policy