--L'indicatore deve riportare giornalmente il numero totale di richieste Recipient di tipo Consumer 
--che si trovano ancora nello stato "Acquisita" su DBC e che sono state acquisite nei giorni precedenti 
--rispetto alla data di sistema (e non ancora avanzate nello stato presa in carico). 
--I dati devono essere aggregati per: Operatore Donating e Tipo Contratto. 
--Devono essere prodotti tanti record riportanti ognuno il totale per quante sono le possibili 
--combinazioni dell'aggregazione: Operatore Donating-Tipo Contratto. 
--Il record deve essere prodotto anche nel caso il valore rilevato sia "zero".
SET serveroutput on

declare
    operatore          varchar2(4);
    var_tipo_contratto varchar2(3);
    valore             varchar2(255);
    data_val           date;
    file1              UTL_FILE.file_type;
    freq 	       varchar2(255):='&1';

cursor cur_operatore is
    select desc_olo from mnp_olo
    where flag_terze_parti=1;

cursor cur_valore is
    select count(*),sysdate
    from mnp_gestione_richiesta_rec a, mnp_storico_richiesta_rec b
    where a.id_richiesta = b.id_richiesta
    and a.stato=2
    and b.data_lavorazione <= trunc(sysdate)-1/86400
    and b.stato_a = 2
    and a.codice_operatore_donating = operatore
    and a.tipo_cliente = 'CO'
    and a.codice_pre_post_pagato = var_tipo_contratto;
    
begin
	
dbms_output.put_line('apro il file ' || 'MNP' || '.' || to_char(sysdate,'yyyyMMdd'));
file1 := UTL_FILE.fopen('&2','MNP' || '.' || to_char(sysdate,'yyyyMMdd'),'a');

open cur_operatore;
loop
    fetch cur_operatore into operatore;
    exit when cur_operatore%notfound;
     
     -- tipo contratto di tipo POP(Postpagato) e PRP(Prepagato)
     for i in 0..1 loop
       if (i=0) then var_tipo_contratto:='POP';
               else var_tipo_contratto:='PRP';
       end if;
 
       open cur_valore;
        fetch cur_valore into valore, data_val;

        UTL_FILE.put_line(file1,'SRCOACQ02'||';'||operatore||'-:-'||var_tipo_contratto||';'||valore||';'
        ||freq||';'||'&3'|| ';'
        ||to_char(data_val,'yyyymmdd')||';'||to_char(data_val,'hh24:mi:ss') ||';'
        ||to_char(sysdate,'yyyymmdd')||';'||to_char(sysdate,'hh24:mi:ss') ||';'
        ||'0'||';'||operatore||'-:-'||var_tipo_contratto||';;');
        close cur_valore;
    end loop; -- fine for     
end loop;
close cur_operatore;
UTL_FILE.fflush(file1);
    UTL_FILE.fclose(file1);
	dbms_output.put_line('chiudo il file ' || 'MNP' || '.' || to_char(sysdate,'yyyyMMdd'));
    exception
   		when others then
         	DBMS_OUTPUT.PUT_LINE(sqlerrm);
end;
/
exit