CREATE OR REPLACE PACKAGE AABS_DG_READ is
function getIsolIns(codScheda in varchar2) return AABSISOL_COL;
function getPartIns(codScheda in varchar2) return AABSPART_COL;
function getAppeIns(codScheda in varchar2) return AABSAPPE_COL;
function getAppeDettIns(codScheda in varchar2) return AABSAPPE_DETT_COL;
function getParcIns(atto_ammi in number) return AABSPARC_DU_COL;
function getParcDettIns(atto_ammi in number) return AABSPARC_COL;
END AABS_DG_READ;
/


CREATE OR REPLACE PACKAGE BODY AABS_DG_READ is

--------------- Parcelle ------------------------------------
function getParcIns(atto_ammi in number) return AABSPARC_DU_COL is
outVal AABSPARC_DU_COL;
codice_scheda varchar2(100);
utente varchar2(100);
anno_campagna varchar2(4);
begin
domasw.adrgad701.getCodiScheda(atto_ammi,codice_scheda);


select cuaa,to_number(to_char(data_rife_cons,'YYYY'))
into utente,anno_campagna
from AABGSCHE_VALI_TAB 
join AABGFGRA_TAB using (id_fgra)
join AABGCONS_TAB using (id_cons)
where cod_sche_vali = codice_scheda
and to_char(data_rife_cons,'MMDD') = '0515';

select 
AABSPARC_DU_REC(
CAMPAGNA,
CUAA,
ID_ATTO_AMMI,
ID_SCHEDA ,  
ID_PARC ,           
ID_INTE ,
SUPERFICIE,        
SHAPE,
ID_APPE_DETT
) 
bulk collect into outVal from
(select anno_campagna CAMPAGNA,
  utente CUAA,
  ID_ATTO_AMMI,
 codice_scheda id_scheda, 
 ID_PARC_AGRI ID_PARC,           
 ID_INTE ,
 SUPE_UTIL SUPERFICIE, 
 SHAPE_PARC SHAPE,
 null ID_APPE_DETT
 from ZAE0PARC_TAB where ID_ATTO_AMMI = atto_ammi 
  AND DATA_FINE_VALI > SYSDATE   );
return outVal;
end getParcIns;
--------------- Dettaglio Parcelle --------------------------
function getParcDettIns(atto_ammi in number) return AABSPARC_COL is
outVal AABSPARC_COL;
begin
select 
AABSPARC_REC(
ID_ATTO_AMMI,
ID_SCHEDA ,  
ID_PARC ,           
ID_INTE ,
SUPERFICIE,        
SHAPE,
COD_COLT
) 
bulk collect into outVal from
(select 
 atto_ammi id_atto_ammi,
 null id_scheda, 
 ID_PARC_AGRI ID_PARC,           
 null ID_INTE ,
 null SUPERFICIE, 
 null SHAPE,
 ID_APCG COD_COLT
 from ZAE0APAG_TAB a where a.id_parc_agri in (select b.id_parc_agri from
  ZAE0PARC_TAB b where b.ID_ATTO_AMMI = atto_ammi 
  AND b.DATA_FINE_VALI > SYSDATE   ));
return outVal;
end getParcDettIns;
---------------dett -----------------------------------------
function getAppeDettIns(codScheda in varchar2) return AABSAPPE_DETT_COL is
outVal AABSAPPE_DETT_COL;
idPcgCons number;
begin
select ID_PCG_VERS INTO idPcgCons from aabgsche_vali_tab where COD_SCHE_VALI=codScheda;
select 
AABSAPPE_DETT_REC(
	COD_APPE,                 
	COD_COLT ,                      
	DATA_INIZ_DETT ,                
	DATA_FINE_DETT,                 
	SUPE_DETT,                      
	CODI_DEST_UTIL,                 
	CODI_OCCU,                      
	CODI_DEST_USO ,                 
	CODI_USOO,                      
	CODI_QUAL,                      
	CODI_OCCU_VARI,                 
	CODI_PRAT_PERM, 
	CODI_PRAT_ALTR,                
	FLAG_COLT_PRIN,                 
	FLAG_PROD_INTE,                 
	FLAG_DOP,                       
	TIPO_DI_SEMINA,                 
	TIPO_IRRIGAZIONE,               
	ANNO_MESE,                      
	POTENZIALITA_IRRIGUA,           
	SOSTANZE_PERICOLOSE,            
	EFFLUENTI_ZOOTECNICI,           
	PRESENZA_TERRAZZAMENTI,         
	STRUTTURE_AZIENDALI,            
	TIPO_DI_IMPIANTO,               
	TIPO_DI_ALLEVAMENTO,            
	DESTINAZIONI_PRODUTTIVE,        
	FASE_DI_ALLEVAMENTO,            
	ROTAZIONE_COLTURALE,            
	FORMA_DI_ALLEVAMENTO ,          
	ULTIMO_ANNO_DI_TAGLIO
) 
bulk collect into outVal from
(select                                                                                         
   (select nvl2(b.COD_APPE,'O'||b.COD_APPE,'A'||b.id_appe) from AABGAPPE_VERS_TAB b where b.id_appe = a.id_appe) COD_APPE,                                                       
   nvl(cod_colt,id_appe_dett) cod_colt ,                                                                               
   DATA_INIZ_DETT,                                                                                    
   DATA_FINE_DETT,                                                                                    
   SUPE_DETT,                                                                                         
   CODI_DEST_UTIL,                                                                                    
   CODI_OCCU,                                                                                         
   CODI_DEST_USO,                     
   CODI_USOO,                         
   CODI_QUAL,                         
   CODI_OCCU_VARI,                    
   CODI_PRAT_PERM,-- codiprat 
   CODI_PRAT_ALTR,        
   FLAG_COLT_PRIN,                    
   FLAG_PROD_INTE,                    
   FLAG_DOP ,                         
   TIPO_DI_SEMINA,                    
   TIPO_IRRIGAZIONE,                  
   ANNO_MESE,                         
   POTENZIALITA_IRRIGUA,              
   SOSTANZE_PERICOLOSE,               
   EFFLUENTI_ZOOTECNICI,              
   PRESENZA_TERRAZZAMENTI,            
   STRUTTURE_AZIENDALI,               
   TIPO_DI_IMPIANTO,                  
   TIPO_DI_ALLEVAMENTO,               
   DESTINAZIONI_PRODUTTIVE,           
   FASE_DI_ALLEVAMENTO,               
   ROTAZIONE_COLTURALE,               
   FORMA_DI_ALLEVAMENTO,              
   ULTIMO_ANNO_DI_TAGLIO
     from        
   AABGAPPE_VERS_DETT_TAB A            
   where 
   id_appe in (select id_appe from AABGAPPE_VERS_TAB 
	where
	ID_PCG_VERS = idPcgCons));
return outVal;
end getAppeDettIns;
-------------------------------------------------------------
function getAppeIns(codScheda in varchar2) return AABSAPPE_COL is
outVal AABSAPPE_COL;
idPcgCons number;
begin
select ID_PCG_VERS INTO idPcgCons from aabgsche_vali_tab where COD_SCHE_VALI=codScheda;
select AABSAPPE_REC
(
COD_APPE  ,             
CODI_RILE  ,            
CODI_PROD_RILE,         
SUPE_APPE,              
DATA_INIZ_APPE ,        
DATA_FINE_APPE ,        
SHAPE_APPE ,
FLAG_BIOL ,     
FLAG_VINC_AMMI, 
FLAG_PRAT_SENS, 
FLAG_PSR,       
PENDENZA,
CODI_ISOL 
) 
bulk collect into outVal from
(select
	nvl2(COD_APPE,'O'||COD_APPE,'A'||a.id_appe) COD_APPE,
	CODI_RILE,
	CODI_PROD_RILE,
	SUPE_APPE,
	DATA_INIZ_APPE,
        DATA_FINE_APPE,
	SHAPE_APPE,
	FLAG_BIOL,      
        FLAG_VINC_AMMI, 
        FLAG_PRAT_SENS, 
        FLAG_PSR,      
        PENDENZA,
        B.CODI_ISOL     
from
	AABGAPPE_VERS_TAB A,AABGISOL_VERS_TAB B
	where
	A.ID_PCG_VERS = idPcgCons AND
	A.ID_PCG_VERS = B.ID_PCG_VERS AND
	A.ID_ISOL = B.ID_ISOL);
return outVal;
end getAppeIns;
function getPartIns(codScheda in varchar2) return AABSPART_COL is
outVal AABSPART_COL;
idPcgCons number;

begin
	select ID_PCG_VERS INTO idPcgCons from aabgsche_vali_tab where COD_SCHE_VALI=codScheda;
    
	select AABSPART_REC(   
			CODI_NAZI ,             
			NUME_FOGL  ,
			NUME_PART,            
			ID_PART ,               
			CODI_SUBA,              
			TIPO_PART ,             
			DATA_INIZ_PART,         
			DATA_FINE_PART,         
			SUPE_CATA,              
			SUPE_COND ,             
			SHAPE_PART
		)
	bulk collect into outVal
	from (
			select a.CODI_NAZI,
				a.NUME_FOGL,
				A.NUME_PART NUME_PART,
				ID_PART,
				a.CODI_SUBA,
				a.tipo_part,       -- tipo cond ?
				null DATA_INIZ_PART , -- data inizio
				null DATA_FINE_PART , -- data fine
				a.SUPE_CATA,
				a.SUPE_COND,
				a.SHAPE_PART
			from AABGPART_VERS_TAB a
			where ID_PCG_VERS = idPcgCons
		);
	return outVal;
end getPartIns;
function getIsolIns(codScheda in varchar2) return AABSISOL_COL is
outVal AABSISOL_COL;
idPcgCons number;
dataRife date;
begin
	select ID_PCG_VERS INTO idPcgCons from aabgsche_vali_tab where COD_SCHE_VALI = codScheda;
	dbms_output.put_line(idPcgCons);
	select DATA_RIFE_CONS
	into dataRife
	from AABGPCG_VERS_TAB
		join AABGFGRA_PCG_TAB using (ID_PCG)
		join AABGCONS_TAB using (ID_CONS)
	where ID_PCG_VERS = idPcgCons;
	select AABSISOL_REC(
			A.CODI_ISOL,
			a.DATA_INIZ_ISOL,
			a.DATA_FINE_ISOL,
			dataRife,
			A.SUPE_ISOL,      
			A.SHAPE_ISOL     
		)
	bulk collect into outVal
	from AABGISOL_VERS_TAB a
		left join AABGISOL_TAB using (ID_ISOL)
	where a.ID_PCG_VERS = idPcgCons;
	return outVal;
end getIsolIns;
end AABS_DG_READ;
/

