set echo on timing on time on verify off serveroutput on

--SPOOL LAST_AOM_RECIPIENT_&1

DECLARE

	SYSDATE_1       					DATE := NULL;
	SYSDATE_2       					DATE := NULL;
	CODICE_OLO 						    NUMBER(8);              
	DESCRIZIONE_OLO 				    VARCHAR2(100);
	
	/* Contatori RECIPIENT */
 	
 	APPO_ACQUISITE_ACCODATE_R           NUMBER(10) :=0;
	APPO_SCART_PRESA_IN_CARICO_R        NUMBER(10) :=0;
	APPO_INVIATE_R                      NUMBER(10) :=0;
	APPO_PRESE_IN_CARICO_R              NUMBER(10) :=0;
	APPO_MANCATE_PRESA_IN_CARICO_R      NUMBER(10) :=0;
	APPO_RICHIESTE_VALIDATE_R           NUMBER(10) :=0;
	APPO_MANCATE_VALIDATE_R             NUMBER(10) :=0;
	APPO_SOSPESE_R                      NUMBER(10) :=0;
	APPO_ATTESA_EVASIONE_R              NUMBER(10) :=0;
	APPO_RITARDO_EVASIONE_R             NUMBER(10) :=0;
	APPO_MANCATA_EVASIONE_A_R           NUMBER(10) :=0;
	APPO_MANCATA_EVASIONE_B_R           NUMBER(10) :=0;
	APPO_RIFIUTATE_R                    NUMBER(10) :=0;
	APPO_ANNULLATE_R                    NUMBER(10) :=0;
	APPO_ANNULLATE_GRUPPO_R             NUMBER(10) :=0;
	APPO_EVASE_R                        NUMBER(10) :=0;

BEGIN

    SELECT TRUNC(DWH.FUN_GIORNI_MENO(SYSDATE,1))
      INTO SYSDATE_1
      FROM DUAL;

    SELECT TRUNC(DWH.FUN_GIORNI_MENO(SYSDATE,2))
      INTO SYSDATE_2
      FROM DUAL;

    SELECT 	cod_olo ,
    		desc_olo
      INTO 	codice_olo ,
      		descrizione_olo
      FROM MNP_OLO
     WHERE cod_olo = &1;

---------

	SELECT count(*)
	  INTO APPO_ACQUISITE_ACCODATE_R
	  FROM MNP_RICHIESTA_REC_VGR
	 WHERE STATO in (2,3)
	   AND CODICE_OPERATORE_DONATING=descrizione_olo;


---------

	SELECT count(*)
	  INTO APPO_SCART_PRESA_IN_CARICO_R
	  FROM MNP_RICHIESTA_REC_VGR GR
	  WHERE EXISTS 
	  	(SELECT SR.ID_RICHIESTA FROM MNP_STORICO_RICHIESTA_REC SR
          	 WHERE GR.ID_RICHIESTA=SR.ID_RICHIESTA
        	 AND SR.DATA_LAVORAZIONE=TRUNC(sysdate)
		 AND SR.STATO_A=5)  	 
	AND GR.STATO=5	  
	AND GR.CODICE_OPERATORE_DONATING=descrizione_olo;

---------

	SELECT count(*)
	  INTO APPO_INVIATE_R
	  FROM MNP_RICHIESTA_REC_VGR GR
	  WHERE EXISTS 
	  	(SELECT SR.ID_RICHIESTA FROM MNP_STORICO_RICHIESTA_REC SR
          	 WHERE GR.ID_RICHIESTA=SR.ID_RICHIESTA
	   	 AND SR.DATA_LAVORAZIONE=TRUNC(sysdate)
	   	 AND SR.STATO_A=4)
	  AND GR.STATO=4
	  AND GR.CODICE_OPERATORE_DONATING=descrizione_olo;

---------

	SELECT count(*)
	  INTO APPO_PRESE_IN_CARICO_R
	  FROM MNP_RICHIESTA_REC_VGR
	WHERE STATO=6
	  AND CODICE_OPERATORE_DONATING=descrizione_olo;

----------

	SELECT count(*)
	  INTO APPO_MANCATE_PRESA_IN_CARICO_R
	  FROM MNP_RICHIESTA_REC_VGR GR
	  WHERE EXISTS 
	  	(SELECT SR.ID_RICHIESTA FROM MNP_STORICO_RICHIESTA_REC SR
          	 WHERE GR.ID_RICHIESTA=SR.ID_RICHIESTA  	   
	   	 AND SR.STATO_A=4
	   	 AND SR.DATA_LAVORAZIONE<=SYSDATE_2) 
	   AND GR.STATO = 4
	   AND GR.CODICE_OPERATORE_DONATING=descrizione_olo;

-----------

	SELECT count(*)
	  INTO APPO_RICHIESTE_VALIDATE_R
	  FROM MNP_RICHIESTA_REC_VGR
	 WHERE STATO = 8
	   AND CODICE_OPERATORE_DONATING = descrizione_olo;

------------

	SELECT count(*)
	  INTO APPO_MANCATE_VALIDATE_R
	  FROM MNP_RICHIESTA_REC_VGR
	 WHERE STATO = 6
	   AND DATA_VALIDAZIONE_MAX < TRUNC(sysdate)
	   AND CODICE_OPERATORE_DONATING = descrizione_olo;

------------

	SELECT count(*)
	  INTO APPO_SOSPESE_R
	  FROM MNP_RICHIESTA_REC_VGR
	 WHERE STATO = 15
	   AND CODICE_OPERATORE_DONATING=descrizione_olo;

-----------

	SELECT count(*)
	  INTO APPO_ATTESA_EVASIONE_R
	  FROM MNP_RICHIESTA_REC_VGR
	 WHERE STATO=11 AND ESPLETAMENTOMSS=0
	   AND ESPLETAMENTODONATING = 0
	   AND ESPLETAMENTOTERZEPARTI IS NOT NULL
	   AND CODICE_OPERATORE_DONATING=descrizione_olo;

-----------

	SELECT count(*)
	  INTO APPO_RITARDO_EVASIONE_R
	  FROM MNP_RICHIESTA_REC_VGR
	 WHERE STATO=11
	   AND ESPLETAMENTOMSS=0
	   AND DATA_CUT_OVER_AOM < TRUNC(sysdate)
	   AND CODICE_OPERATORE_DONATING=descrizione_olo;

--------------

	SELECT count(*)
	  INTO APPO_MANCATA_EVASIONE_A_R
	  FROM MNP_RICHIESTA_REC_VGR
	 WHERE STATO=11
	   AND ESPLETAMENTODONATING=0
	   AND DATA_CUT_OVER_AOM < TRUNC(sysdate)
	   AND CODICE_OPERATORE_DONATING=descrizione_olo;

-------------------

	SELECT count(*)
	  INTO APPO_MANCATA_EVASIONE_B_R
	  FROM MNP_RICHIESTA_REC_VGR
	 WHERE STATO=11
	   AND ESPLETAMENTOTERZEPARTI IS NOT NULL
	   AND DATA_CUT_OVER_AOM < TRUNC(sysdate)
	   AND CODICE_OPERATORE_DONATING=descrizione_olo;

------------

	SELECT count(*)
	  INTO APPO_RIFIUTATE_R
	  FROM MNP_RICHIESTA_REC_VGR GR
	  WHERE EXISTS 
	  	(SELECT SR.ID_RICHIESTA FROM MNP_STORICO_RICHIESTA_REC SR
          	 WHERE GR.ID_RICHIESTA=SR.ID_RICHIESTA	 	   
	   	 AND SR.DATA_LAVORAZIONE=TRUNC(sysdate)
	   	 AND SR.STATO_A=7)
	   AND GR.STATO=7
	   AND GR.CODICE_OPERATORE_DONATING=descrizione_olo;

--------------

	SELECT count(*)
	  INTO APPO_ANNULLATE_R
	  FROM MNP_RICHIESTA_REC_VGR GR
	  WHERE EXISTS 
	  	(SELECT SR.ID_RICHIESTA FROM MNP_STORICO_RICHIESTA_REC SR
          	 WHERE GR.ID_RICHIESTA=SR.ID_RICHIESTA		   
	   AND SR.DATA_LAVORAZIONE=TRUNC(sysdate)
	   AND SR.STATO_A=9)
	   AND GR.STATO=9
	   AND GR.CODICE_OPERATORE_DONATING = descrizione_olo;

--------------

	SELECT count(*)
	  INTO APPO_ANNULLATE_GRUPPO_R
	  FROM MNP_RICHIESTA_REC_VGR GR
	  WHERE EXISTS 
	  	(SELECT SR.ID_RICHIESTA FROM MNP_STORICO_RICHIESTA_REC SR
          	 WHERE GR.ID_RICHIESTA=SR.ID_RICHIESTA	 	
		AND SR.DATA_LAVORAZIONE=TRUNC(sysdate)
	 	AND SR.STATO_A=14)
	 AND GR.STATO=14
	 AND GR.CODICE_OPERATORE_DONATING=descrizione_olo;

---------------

	SELECT count(*)
	  INTO APPO_EVASE_R
	  FROM MNP_RICHIESTA_REC_VGR GR
	  WHERE EXISTS 
	  	(SELECT SR.ID_RICHIESTA FROM MNP_STORICO_RICHIESTA_REC SR
          	 WHERE GR.ID_RICHIESTA=SR.ID_RICHIESTA 
	   	 AND SR.DATA_LAVORAZIONE=TRUNC(sysdate)
	   	 AND SR.STATO_A=12)
	   AND GR.STATO=12
	   AND GR.CODICE_OPERATORE_DONATING=descrizione_olo;

-----------

    DBMS_OUTPUT.PUT_LINE('AOM RECIPIENT '||descrizione_olo||' per '||&1);
  	DBMS_OUTPUT.PUT_LINE( APPO_ACQUISITE_ACCODATE_R);
  	DBMS_OUTPUT.PUT_LINE( APPO_SCART_PRESA_IN_CARICO_R);
  	DBMS_OUTPUT.PUT_LINE( APPO_INVIATE_R);
  	DBMS_OUTPUT.PUT_LINE( APPO_PRESE_IN_CARICO_R);
  	DBMS_OUTPUT.PUT_LINE( APPO_MANCATE_PRESA_IN_CARICO_R);
  	DBMS_OUTPUT.PUT_LINE( APPO_RICHIESTE_VALIDATE_R);
  	DBMS_OUTPUT.PUT_LINE( APPO_MANCATE_VALIDATE_R);
  	DBMS_OUTPUT.PUT_LINE( APPO_SOSPESE_R);
  	DBMS_OUTPUT.PUT_LINE( APPO_ATTESA_EVASIONE_R);
  	DBMS_OUTPUT.PUT_LINE( APPO_RITARDO_EVASIONE_R);
  	DBMS_OUTPUT.PUT_LINE( APPO_MANCATA_EVASIONE_A_R);
  	DBMS_OUTPUT.PUT_LINE( APPO_MANCATA_EVASIONE_B_R);
  	DBMS_OUTPUT.PUT_LINE( APPO_RIFIUTATE_R);
  	DBMS_OUTPUT.PUT_LINE( APPO_ANNULLATE_R);
  	DBMS_OUTPUT.PUT_LINE( APPO_ANNULLATE_GRUPPO_R);
  	DBMS_OUTPUT.PUT_LINE( APPO_EVASE_R);

---------------

DELETE MNP_GUI_RECIPIENT
	 WHERE cod_olo = &1;

	INSERT INTO MNP_GUI_RECIPIENT
	(	COD_OLO,
 		ACQUISITE_ACCODATE,
 		SCARTATE_PRESA_IN_CARICO,
 		INVIATE,
 		PRESE_IN_CARICO,
 		MANCATE_PRESA_IN_CARICO,
 		RICHIESTE_VALIDATE,
 		MANCATE_VALIDATE,
 		SOSPESE,
 		ATTESA_EVASIONE,
 		RITARDO_EVASIONE,
 		MANCATA_EVASIONE_A,
 		MANCATA_EVASIONE_B,
 		RIFIUTATE,
 		ANNULLATE,
 		ANNULLATE_GRUPPO,
 		EVASE)
	VALUES
	( &1,
      APPO_ACQUISITE_ACCODATE_R,
      APPO_SCART_PRESA_IN_CARICO_R,
      APPO_INVIATE_R,
      APPO_PRESE_IN_CARICO_R,
      APPO_MANCATE_PRESA_IN_CARICO_R,
      APPO_RICHIESTE_VALIDATE_R,
      APPO_MANCATE_VALIDATE_R,
      APPO_SOSPESE_R,
      APPO_ATTESA_EVASIONE_R,
      APPO_RITARDO_EVASIONE_R,
      APPO_MANCATA_EVASIONE_A_R,
      APPO_MANCATA_EVASIONE_B_R,
      APPO_RIFIUTATE_R,
      APPO_ANNULLATE_R,
      APPO_ANNULLATE_GRUPPO_R,
      APPO_EVASE_R);

 	COMMIT;

END;
/
EXIT

