SET serveroutput on

DECLARE

	rs1		varchar2(255);
	rs2		varchar2(255);
	operatore	varchar2(15);
	dir_out  	varchar2(255);
	num		NUMBER(15,0);
	totale		NUMBER(15,0);
	cod_dig		varchar2(1);
	cod		varchar2(4);
	file1       	UTL_FILE.file_type;
	data_inizio 	date;
	data_fine   	date;
  	data   		date;
  	di		date;
  	di		date;
  	p		varchar2(15):='&1';
    
--Numero di richieste ricevute dalla rete di distribuzione nel periodo di riferimento
CURSOR cur_res(data_inizio date, data_fine date) is
select olo.desc_olo,nvl(X.num,0)
    from mnp_olo_report olo, (
   	select count(distinct msisdn) num , codice_operatore_donating cod
 		from mnp_gestione_richiesta_rec
 		where codice_operatore_recipient = 'TIMG'
 		and dataricezionerichiesta >= trunc(data_inizio)
 		and dataricezionerichiesta <= trunc(data_fine)
 		group by codice_operatore_donating
        
    ) X
    where olo.flag_attivo = 1
    and olo.desc_olo <> 'TIMG'
    and olo.desc_olo = x.cod(+)
    order by olo.desc_olo;
--------------------------------------------
--INIZIO     
BEGIN
	if (p <> 'nullo')then
	   dir_out:='&3';
	   	
	else
	   select recipient_out into dir_out
	   from mnp_olo_report
	   where desc_olo = 'MONIT';
	end if;	
		
 	file1 := UTL_FILE.fopen (dir_out, 'TIM_to_AOM_NumeroRichiesteRicevute_'||to_char(sysdate,'yyyyMMdd')||'.csv', 'w');

BEGIN
	if (p <> 'nullo')then
		
	    data_inizio := to_date('&1','dd/mm/yyyy');   
	    data_fine := to_date('&2','dd/mm/yyyy');
	else
     	    if (to_char(sysdate, 'DD')<= '15') then
                data := add_months((trunc(sysdate)), -1);
        	data_inizio := to_date('16/'|| to_char(trunc(data), 'mm/yyyy'),'dd/mm/yyyy');
        	data_fine := last_day(trunc(data));
     	    else
          	data_inizio := to_date('01/'|| to_char(trunc(sysdate), 'mm/yyyy'), 'dd/mm/yyyy');
          	data_fine := to_date('15/'|| to_char(trunc(sysdate), 'mm/yyyy'), 'dd/mm/yyyy');
     	    end if;
     		
	end if;   		
 
 	UTL_FILE.put_line (file1,'Numero di richieste ricevute dalla rete di distribuzione nel periodo di riferimento');
	UTL_FILE.put_line (file1,' ');
	UTL_FILE.put_line (file1,'Periodo dal '|| trunc(data_inizio) || '    al    '|| trunc(data_fine));
	UTL_FILE.put_line (file1,' ');
	UTL_FILE.put_line (file1,'Operatore Recipient TIMG');
	UTL_FILE.put_line (file1,' ');
	
	rs1:='';
	rs2:='';
	totale:=0;
	OPEN cur_res(data_inizio, data_fine);
   	LOOP
		FETCH cur_res INTO operatore,num;
		EXIT WHEN cur_res%NOTFOUND;
		
			rs1 := rs1 || operatore ||';';
			rs2 := rs2 || num ||';';
			totale := totale + num;
   	END LOOP;
   	CLOSE cur_res;

	rs1:=rs1 ||'TOTALE'||';';
	rs2:=rs2 || totale ||';';
   	UTL_FILE.put_line (file1,rs1);
   	UTL_FILE.put_line (file1,rs2);
   	UTL_FILE.fflush   (file1);
   	UTL_FILE.fclose   (file1);

exception
   	 when others then
         DBMS_OUTPUT.PUT_LINE(sqlerrm);
END;
	
end;
/
exit;

