set echo on timing on time on verify off serveroutput on

--SPOOL LAST_AOM_DONOR_&1

DECLARE
	
	/* Contatori DONOR */
	
	SYSDATE_1 						DATE;
	SYSDATE_2						DATE;
	CODICE_OLO 						NUMBER(8);              
	DESCRIZIONE_OLO 				VARCHAR2(100);          
 
   	APPO_ACQUISITE                  NUMBER(10) :=0;
 	APPO_ANNULLATE_SCARTATE         NUMBER(10) :=0;
 	APPO_ANNULLATE_SCARTATE1        NUMBER(10) :=0;
 	APPO_ANNULLATE_SCARTATE2        NUMBER(10) :=0;
 	APPO_PRESE_IN_CARICO            NUMBER(10) :=0;
 	APPO_RITARDO_PRESA_IN_CARICO    NUMBER(10) :=0;
 	APPO_IN_VALIDAZIONE_TIM         NUMBER(10) :=0;
 	APPO_SOSPESE                    NUMBER(10) :=0;
 	APPO_IN_VALIDAZIONE_OGGI        NUMBER(10) :=0;
 	APPO_RITARDO_VALIDAZIONE        NUMBER(10) :=0;
 	APPO_VALIDATE_OK                NUMBER(10) :=0;
 	APPO_VALIDATE_KO                NUMBER(10) :=0;
 	APPO_RIFIUTATE                  NUMBER(10) :=0;
 	APPO_IN_CESSAZIONE              NUMBER(10) :=0;
 	APPO_IN_CESSAZIONE_OGGI         NUMBER(10) :=0;
 	APPO_RITARDO_ESPLETAMENTO       NUMBER(10) :=0;
 	APPO_ESPLETATE                  NUMBER(10) :=0;
 	APPO_ESPLETATE1                 NUMBER(10) :=0;
 	APPO_ESPLETATE2                 NUMBER(10) :=0;


BEGIN

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

    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 count(*)
	  INTO APPO_ACQUISITE
	  FROM MNP_RICHIESTA_VGR
	 WHERE STATO=1
	   AND CODICE_OPERATORE_RECIPIENT=descrizione_olo;
---

	SELECT count(*)
	  INTO APPO_ANNULLATE_SCARTATE1
	  FROM MNP_RICHIESTA_VGR GR
	  WHERE EXISTS 
	  	(SELECT SR.ID_RICHIESTA FROM MNP_STORICO_RICHIESTA SR
   	 	WHERE GR.ID_RICHIESTA=SR.ID_RICHIESTA
	  	AND SR.DATA_LAVORAZIONE=SYSDATE_1
	  	AND SR.STATO_A=4)
	  AND GR.STATO=4
	  AND GR.CODICE_OPERATORE_RECIPIENT=descrizione_olo;

	  SELECT count(*)
	  INTO APPO_ANNULLATE_SCARTATE2
	  FROM MNP_RICHIESTA_VGR GR 
	  WHERE EXISTS 
	  	(SELECT SR.ID_RICHIESTA FROM MNP_STORICO_RICHIESTA SR
          	 WHERE GR.ID_RICHIESTA=SR.ID_RICHIESTA
	 	  AND SR.DATA_LAVORAZIONE=SYSDATE_1		  
	 	  AND SR.STATO_A=12)
	  AND GR.STATO=12
	  AND GR.CODICE_OPERATORE_RECIPIENT=descrizione_olo;

	APPO_ANNULLATE_SCARTATE := APPO_ANNULLATE_SCARTATE1 + APPO_ANNULLATE_SCARTATE2;

-----------

	SELECT count(*)
	  INTO APPO_PRESE_IN_CARICO
	  FROM MNP_RICHIESTA_VGR
	WHERE STATO=3
	  AND CODICE_OPERATORE_RECIPIENT=descrizione_olo;

---------

	SELECT count(*)
	  INTO APPO_RITARDO_PRESA_IN_CARICO
	  FROM MNP_RICHIESTA_VGR
	WHERE STATO=1
	  AND DATARICEZIONERICHIESTA <= SYSDATE_2
      AND CODICE_OPERATORE_RECIPIENT=descrizione_olo;

---------

	SELECT count(*)
      INTO APPO_IN_VALIDAZIONE_TIM
      FROM MNP_RICHIESTA_VGR
	 WHERE STATO=6
	   AND CODICE_OPERATORE_RECIPIENT=descrizione_olo;

-------

	SELECT count(*)
	  INTO APPO_SOSPESE
	  FROM MNP_RICHIESTA_VGR
 	 WHERE STATO in (19,20)
 	   AND CODICE_OPERATORE_RECIPIENT=descrizione_olo;

--------

	SELECT count(*)
	  INTO APPO_IN_VALIDAZIONE_OGGI
	  FROM MNP_RICHIESTA_VGR
	WHERE STATO=6
	  AND DATA_VALIDAZIONE_MAX=TRUNC(sysdate)
	  AND CODICE_OPERATORE_RECIPIENT=descrizione_olo;

--------

	SELECT count(*)
	  INTO APPO_RITARDO_VALIDAZIONE
	  FROM MNP_RICHIESTA_VGR
	  WHERE STATO=6
		AND DATA_VALIDAZIONE_MAX <=SYSDATE_1
		AND CODICE_OPERATORE_RECIPIENT=descrizione_olo;

--------

	SELECT count(*)
	  INTO APPO_VALIDATE_OK
	  FROM MNP_RICHIESTA_VGR
	 WHERE STATO=7
	   AND CODICE_OPERATORE_RECIPIENT=descrizione_olo;

-------

	SELECT count(*)
	  INTO APPO_VALIDATE_KO
	  FROM MNP_RICHIESTA_VGR
	 WHERE STATO =8
	   AND CODICE_OPERATORE_RECIPIENT=descrizione_olo;

--------

	SELECT count(*)
	  INTO APPO_RIFIUTATE
	  FROM 	MNP_RICHIESTA_VGR GR 
	  WHERE EXISTS 
	  	(SELECT SR.ID_RICHIESTA FROM MNP_STORICO_RICHIESTA SR
          	 WHERE GR.ID_RICHIESTA=SR.ID_RICHIESTA
	 	AND SR.DATA_LAVORAZIONE=TRUNC(sysdate)
	 	AND SR.STATO_A=10)
	 	AND GR.STATO=10		
		AND GR.CODICE_OPERATORE_RECIPIENT=descrizione_olo;

--------

	SELECT count(*)
	  INTO APPO_IN_CESSAZIONE
	  FROM MNP_RICHIESTA_VGR
	WHERE STATO in (9,14)
	  AND CODICE_OPERATORE_RECIPIENT=descrizione_olo;

--------

	SELECT count(*)
	  INTO APPO_IN_CESSAZIONE_OGGI
	  FROM MNP_RICHIESTA_VGR
	 WHERE STATO in (9,14)
	   AND DATA_CUT_OVER_CALC=TRUNC(sysdate)
	   AND CODICE_OPERATORE_RECIPIENT=descrizione_olo;

--------

	SELECT count(*)
	  INTO APPO_RITARDO_ESPLETAMENTO
	  FROM MNP_RICHIESTA_VGR
	 WHERE STATO in (9,14)
	   AND DATA_CUT_OVER_CALC <TRUNC(sysdate)
	   AND CODICE_OPERATORE_RECIPIENT = descrizione_olo;

--------

	SELECT count(*)
	  INTO APPO_ESPLETATE1
	  FROM MNP_RICHIESTA_VGR GR
	  WHERE EXISTS 
	  	(SELECT SR.ID_RICHIESTA FROM MNP_STORICO_RICHIESTA SR
          	 WHERE GR.ID_RICHIESTA=SR.ID_RICHIESTA
          	 AND SR.DATA_LAVORAZIONE=TRUNC(sysdate)
	  	 AND SR.STATO_A=15) 
	  AND GR.STATO=15
 	  AND GR.CODICE_OPERATORE_RECIPIENT= descrizione_olo;
	
	  SELECT count(*)
	  INTO APPO_ESPLETATE2
	  FROM MNP_RICHIESTA_VGR GR
	  WHERE EXISTS 
	  	(SELECT SR.ID_RICHIESTA FROM MNP_STORICO_RICHIESTA SR
          	 WHERE GR.ID_RICHIESTA=SR.ID_RICHIESTA
          	 AND SR.DATA_LAVORAZIONE=TRUNC(sysdate)
	  	 AND SR.STATO_A=16) 
	  AND GR.STATO=16
 	  AND GR.CODICE_OPERATORE_RECIPIENT= descrizione_olo;


	APPO_ESPLETATE := APPO_ESPLETATE1 + APPO_ESPLETATE2;
			
			
			DBMS_OUTPUT.PUT_LINE('AOM DONOR '||descrizione_olo||' per '||&1);
			DBMS_OUTPUT.PUT_LINE( APPO_ACQUISITE);
			DBMS_OUTPUT.PUT_LINE( APPO_ANNULLATE_SCARTATE1);
			DBMS_OUTPUT.PUT_LINE( APPO_ANNULLATE_SCARTATE2);
			DBMS_OUTPUT.PUT_LINE( APPO_PRESE_IN_CARICO);
		 	DBMS_OUTPUT.PUT_LINE( APPO_RITARDO_PRESA_IN_CARICO);
		 	DBMS_OUTPUT.PUT_LINE( APPO_IN_VALIDAZIONE_TIM);
		 	DBMS_OUTPUT.PUT_LINE( APPO_SOSPESE);
		 	DBMS_OUTPUT.PUT_LINE( APPO_IN_VALIDAZIONE_OGGI);
		 	DBMS_OUTPUT.PUT_LINE( APPO_RITARDO_VALIDAZIONE);
		 	DBMS_OUTPUT.PUT_LINE( APPO_VALIDATE_OK);
		 	DBMS_OUTPUT.PUT_LINE( APPO_VALIDATE_KO);
		 	DBMS_OUTPUT.PUT_LINE( APPO_RIFIUTATE);
		 	DBMS_OUTPUT.PUT_LINE( APPO_IN_CESSAZIONE);
		 	DBMS_OUTPUT.PUT_LINE( APPO_IN_CESSAZIONE_OGGI);
		 	DBMS_OUTPUT.PUT_LINE( APPO_RITARDO_ESPLETAMENTO);
		 	DBMS_OUTPUT.PUT_LINE( APPO_ESPLETATE);
		 	DBMS_OUTPUT.PUT_LINE( APPO_ESPLETATE2);


	DELETE MNP_GUI_DONOR
	 WHERE cod_olo = &1;

	INSERT INTO MNP_GUI_DONOR
	(   COD_OLO,
   		ACQUISITE,
 		ANNULLATE_SCARTATE,
 		PRESE_IN_CARICO,
		RITARDO_PRESA_IN_CARICO,
 		IN_VALIDAZIONE_TIM,
   		SOSPESE,
 		IN_VALIDAZIONE_OGGI,
		RITARDO_VALIDAZIONE,
 		VALIDATE_OK,
 		VALIDATE_KO,
 		RIFIUTATE,
		IN_CESSAZIONE,
 		IN_CESSAZIONE_OGGI,
 		RITARDO_ESPLETAMENTO,
 		ESPLETATE)
 VALUES
   (&1,
    APPO_ACQUISITE,
 	APPO_ANNULLATE_SCARTATE,
 	APPO_PRESE_IN_CARICO,
 	APPO_RITARDO_PRESA_IN_CARICO,
 	APPO_IN_VALIDAZIONE_TIM,
 	APPO_SOSPESE,
 	APPO_IN_VALIDAZIONE_OGGI,
 	APPO_RITARDO_VALIDAZIONE,
 	APPO_VALIDATE_OK,
 	APPO_VALIDATE_KO,
 	APPO_RIFIUTATE,
 	APPO_IN_CESSAZIONE,
 	APPO_IN_CESSAZIONE_OGGI,
 	APPO_RITARDO_ESPLETAMENTO,
 	APPO_ESPLETATE);

 	COMMIT;
END;
/
EXIT

