-- Script containing customer specific configuration sql statements for Essent: Arcadis Aqumen Facility Management
-- (c) 2005-2007 SG facilitor bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700

@aaxx.sql;

SPOOL xaaes.lst
SET ECHO ON

-- script om dagelijks terugkerende scripts aan te roepen.
CREATE OR REPLACE PROCEDURE aaes_select_daily_task (p_applname   IN   VARCHAR2, p_applrun    IN   VARCHAR2)
AS
BEGIN
   aaxx_daily_task (p_applname, p_applrun);
   aaes_export_lease_aanvraag ('LEASE_AANVRAAG');
   aaes_set_budgethouder();
END;
/

-- budgettracker overrules
CREATE OR REPLACE VIEW aaes_v_export_budget_tracker   (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_budget_tracker;

-- export overrules
-- exact
-- Leverancier overrulles
CREATE OR REPLACE PROCEDURE aaes_import_opdrstat_strukton (
   p_import_key IN NUMBER)
AS
BEGIN
   aaxx_import_opdrstat_strukton (p_import_key);
END aaes_import_opdrstat_strukton;
/

CREATE OR REPLACE PROCEDURE aaes_update_opdrstat_strukton (
   p_import_key IN NUMBER)
AS
BEGIN
   aaxx_update_opdrstat_strukton (p_import_key);
END aaes_update_opdrstat_strukton;
/

CREATE OR REPLACE VIEW aaes_v_export_exact            (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_xml;
CREATE OR REPLACE PROCEDURE aaes_select_exact (
   p_applname   IN   VARCHAR2,
   p_applrun    IN   VARCHAR2
)
AS
BEGIN
  aaxx_select_exact_xml(p_applname, p_applrun);
END;
/

CREATE OR REPLACE PROCEDURE aaes_export_exact (
   p_applname   IN   VARCHAR2,
   p_applrun    IN   VARCHAR2,
   p_filedir    IN   VARCHAR2,
   p_filename   IN   VARCHAR2
)
AS
BEGIN
  aaxx_export_exact(p_applname, p_applrun, p_filedir, p_filename);
END;
/

CREATE OR REPLACE VIEW aaes_v_export_verwerk_exact    (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_verwerk_exact;
-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten.
CREATE OR REPLACE PROCEDURE aaes_export_verwerk_exact (
   p_applname   IN   VARCHAR2,
   p_applrun    IN   VARCHAR2,
   p_filedir    IN   VARCHAR2,
   p_filename   IN   VARCHAR2
)
AS
BEGIN
  aaxx_export_verwerk_exact(p_applname, p_applrun, p_filedir, p_filename);
END;
/

-- exact verkoop
CREATE OR REPLACE VIEW aaes_v_export_exact_verkoop    (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop;
CREATE OR REPLACE PROCEDURE aaes_select_exact_verkoop (
   p_applname   IN   VARCHAR2,
   p_applrun    IN   VARCHAR2
)
AS
BEGIN
  aaxx_select_exact_verkoop(p_applname, p_applrun, to_char(sysdate, 'yyyy'));
END;
/
CREATE OR REPLACE PROCEDURE aaes_export_exact_verkoop (
   p_applname   IN   VARCHAR2,
   p_applrun    IN   VARCHAR2,
   p_filedir    IN   VARCHAR2,
   p_filename   IN   VARCHAR2
)
AS
BEGIN
  aaxx_export_exact_verkoop(p_applname, p_applrun, p_filedir, p_filename, to_char(sysdate, 'yyyy'));
END;
/

-- exact verkoop over het vorige jaar
CREATE OR REPLACE VIEW aaes_v_export_exact_verkoop_vj    (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop;
CREATE OR REPLACE PROCEDURE aaes_select_exact_verkoop_vj (
   p_applname   IN   VARCHAR2,
   p_applrun    IN   VARCHAR2
)
AS
BEGIN
  aaxx_select_exact_verkoop(p_applname, p_applrun, to_char(to_number(to_char(sysdate, 'yyyy'))-1));
END;
/
CREATE OR REPLACE PROCEDURE aaes_export_exact_verkoop_vj (
   p_applname   IN   VARCHAR2,
   p_applrun    IN   VARCHAR2,
   p_filedir    IN   VARCHAR2,
   p_filename   IN   VARCHAR2
)
AS
BEGIN
  aaxx_export_exact_verkoop(p_applname, p_applrun, p_filedir, p_filename, to_char(to_number(to_char(sysdate, 'yyyy'))-1));
END;
/

CREATE OR REPLACE PROCEDURE aaes_export_bundel_catering (
   p_applname   IN   VARCHAR2,
   p_applrun    IN   VARCHAR2,
   p_filedir    IN   VARCHAR2,
   p_filename   IN   VARCHAR2
)
AS
   c_catmld_uitvoertijd          mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD(2, 'D');
   v_errormsg                    VARCHAR (200);
   oracle_err_num                NUMBER;
   oracle_err_mes                VARCHAR2 (200);
   v_laatste_export              DATE;
   v_mld_melding_key             NUMBER;
   v_prs_bedrijf_key             NUMBER;
   v_alg_locatie_key             NUMBER;
   v_alg_gebouw_key              NUMBER;
   v_prs_dienst_key              NUMBER;
   v_prs_kostenplaats_key        NUMBER;
   v_mld_opdr_bedrijfopdr_volgnr NUMBER;
   v_aanvrager                   NUMBER;
   v_mld_workorder_key           NUMBER;
   v_mld_stdmelding_key          NUMBER;
   v_date                        DATE;
   v_date_check                  DATE;
   v_count                       NUMBER;
   v_total                       NUMBER(10,2);
BEGIN
  -- Facilitor
  v_aanvrager := 4;
  -- Essent kostenplaats key
  v_prs_kostenplaats_key := 510;
  -- stdmelding key voor recharge
  v_mld_stdmelding_key := 981;
  -- key van opdrachttype workorder
  v_mld_workorder_key := 1;
  -- key voor de locatie van de melding
  v_alg_locatie_key := 225;
  -- key voor de gebouw van de melding
  v_alg_gebouw_key := 3969;
  -- key van Eurest
  v_prs_bedrijf_key := 797;

  v_errormsg := 'Bepaal einddatum';
  
  -- wat is de eerste dag van de huidige maand
  v_date := to_date(to_char(sysdate, 'yyyymm')||'01','yyyymmdd');
  
   
  SELECT count(mld_opdr_key)
    INTO v_count
    FROM mld_opdr
   WHERE mld_opdr_omschrijving = 'Catering factuur tot: ' || to_char(v_date, 'dd-mm-yyyy');

  SELECT COALESCE(SUM (res_rsv_artikel_prijs),0)
    INTO v_total
    FROM res_rsv_artikel rra
   WHERE     rra.res_rsv_artikel_verwijder IS NULL
         AND rra.res_status_bo_key = 5  -- geleverd.
         AND rra.res_rsv_artikel_levering < v_date;
   
  IF v_count > 0 THEN
    fac.writelog (p_applname, 'E', 'Catering export is al eerder uitgevoerd.',
                                   'Controleer opdrachten met datum: ' || to_char(v_date, 'dd-mm-yyyy'));
  ELSIF v_total = 0 THEN
    fac.writelog (p_applname, 'W', 'Er is deze maand niets te factureren',
                                   'Controleer of de catering wel afgemeld is');
  ELSE
    v_errormsg := 'Aanpassen kostenplaatsen';
    -- vul de kostenplaats van reserveringen die per abuis geen kostenplaats hebben.
    UPDATE res_rsv_ruimte rrr
       SET prs_kostenplaats_key =
             (SELECT prs_kostenplaats_key
                FROM prs_perslid p, prs_afdeling a
               WHERE rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
                     AND p.prs_afdeling_key = a.prs_afdeling_key)
     WHERE rrr.prs_kostenplaats_key IS NULL;

    -- maak een melding aan voor deze maand
        
  	v_errormsg := 'Aanmaken catering melding';
  	BEGIN
  	   INSERT INTO mld_melding
  	   (
  	     mld_melding_omschrijving,
  	     prs_perslid_key,
  	     prs_kostenplaats_key,
  	     mld_stdmelding_key,
  	     mld_alg_locatie_key,
  	     mld_alg_onroerendgoed_keys,
  	     mld_melding_einddatum,
  	     mld_melding_datum,
  	     mld_melding_t_uitvoertijd,
  	     mld_meldbron_key,
  	     mld_melding_module,
  	     mld_melding_spoed
  	   )
  	   VALUES (
  		   'Catering factuur boekingen tot ' || to_char(v_date, 'dd-mm-yyyy'),
  		   v_aanvrager,
  		   v_prs_kostenplaats_key,
  		   v_mld_stdmelding_key,
  		   v_alg_locatie_key,
  		   v_alg_gebouw_key,
  		   v_date-1,
  		   add_months(v_date, -1),
  		   c_catmld_uitvoertijd,
  		   5,
  		   'MLD',
  		   3
  		 ) RETURNING mld_melding_key INTO v_mld_melding_key;
  
  		 BEGIN mld.setmeldingstatus(v_mld_melding_key, 2, v_aanvrager); END;
  		 BEGIN mld.setmeldingstatus(v_mld_melding_key, 4, v_aanvrager); END;
  		 UPDATE mld_melding SET mld_melding_behandelaar_key= v_aanvrager WHERE mld_melding_key = v_mld_melding_key;
  	END;

    -- aanmaken opdracht


	  BEGIN 	     
      v_mld_opdr_bedrijfopdr_volgnr := mld.BepaalOpdrMeldingVolgnr (v_mld_melding_key);

	    v_errormsg := 'Maak opdracht aan om factuur van cateraar te matchen';
	    -- maak opdracht aan om cateringfactuur van leverancier te matchen
	    INSERT INTO mld_opdr (mld_melding_key
	                        , prs_kostenplaats_key
	                        , mld_statusopdr_key
	                        , mld_typeopdr_key
	                        , prs_perslid_key
	                        , mld_uitvoerende_keys
	                        , mld_opdr_datumbegin
	                        , mld_opdr_einddatum
	                        , mld_opdr_module
	                        , mld_opdr_omschrijving
	                        , mld_opdr_materiaal
	                        , mld_opdr_kosten
	                        , mld_opdr_bedrijfopdr_volgnr)
	    VALUES
	    (  v_mld_melding_key
	           , v_prs_kostenplaats_key
	           , 5                             -- uitgegeven
	           , v_mld_workorder_key
	           , v_aanvrager
	           , v_prs_bedrijf_key
	           , v_date-1
	           , FAC.DatumTijdPlusUitvoerTijd(sysdate, 1, 'DAGEN')
	           , 'MLD'
	           , 'Catering factuur tot: ' || to_char(v_date, 'dd-mm-yyyy')
	           , v_total
	           , v_total
	           , v_mld_opdr_bedrijfopdr_volgnr);
	         
	    UPDATE res_rsv_artikel rra 
	       SET res_rsv_artikel_verwerkt = SYSDATE,
	           res_status_bo_key = 6
       WHERE     rra.res_rsv_artikel_verwijder IS NULL
             AND rra.res_status_bo_key = 5  -- geleverd.
             AND rra.res_rsv_artikel_levering < v_date;

      v_errormsg := 'Update melding status';
      MLD.updatemeldingstatus (v_mld_melding_key, 0, v_aanvrager);       -- Facilitor

    EXCEPTION WHEN OTHERS THEN
	    oracle_err_num := SQLCODE;
	    oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
	    v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
	    fac.writelog (p_applname, 'E', v_errormsg, '');
	  END;
  END IF;
  COMMIT;
END;
/



-- exact projecturen (XML)
CREATE OR REPLACE VIEW aaes_v_export_exact_uren (result, result_order)
AS SELECT result, result_order FROM aaxx_v_export_exact_uren_xml;
CREATE OR REPLACE PROCEDURE aaes_select_exact_uren (
   p_applname   IN   VARCHAR2,
   p_applrun    IN   VARCHAR2
)
AS
BEGIN
  aaxx_select_exact_uren_xml(p_applname, p_applrun, '');
END;
/

-- verwerk exact projecturen (XML)
CREATE OR REPLACE PROCEDURE aaes_export_verwerk_exact_uren (
   p_applname   IN   VARCHAR2,
   p_applrun    IN   VARCHAR2,
   p_filedir    IN   VARCHAR2,
   p_filename   IN   VARCHAR2
)
AS
BEGIN
  aaxx_export_verwerk_exact_uren(p_applname, p_applrun, p_filedir, p_filename, '');
END;
/



--------------------------------
-- import contractorders
--------------------------------
CREATE OR REPLACE PROCEDURE aaes_import_contract (
  p_import_key IN NUMBER
) IS
BEGIN
    aaxx_import_contract (p_import_key);
END aaes_import_contract;
/

CREATE OR REPLACE PROCEDURE aaes_update_contract (p_import_key IN NUMBER)
AS
BEGIN
    aaxx_update_contract (p_import_key);
END aaes_update_contract;
/

CREATE OR REPLACE PROCEDURE aaes_import_ruimte (p_import_key IN NUMBER)
AS
BEGIN
  aaxx_import_ruimte(p_import_key);
END;
/

CREATE OR REPLACE PROCEDURE aaes_update_ruimte (p_import_key IN NUMBER)
AS
BEGIN
  aaxx_update_ruimte(p_import_key);
END;
/


-- eigen afdelingstructuur omdat Enexis meer dan 5 niveaus kent.
CREATE OR REPLACE VIEW aaes_v_afdeling
(
   prs_bedrijf_key,
   prs_afdeling_key,
   prs_afdeling_parentkey
)
AS
   SELECT a.prs_bedrijf_key, a.prs_afdeling_key, kl.prs_afdeling_parentkey
     FROM prs_afdeling a,
          (SELECT prs_link_key prs_afdeling_key,
                  prs_kenmerklink_waarde prs_afdeling_parentkey
             FROM prs_kenmerklink
            WHERE prs_kenmerk_key = 1020) kl
    WHERE a.prs_afdeling_key = kl.prs_afdeling_key(+);

CREATE OR REPLACE VIEW aaes_v_afdeling_boom
(
   niveau,
   prs_bedrijf_key,
   prs_afdeling_key,
   prs_afdeling_key1,
   prs_afdeling_key2,
   prs_afdeling_key3,
   prs_afdeling_key4,
   prs_afdeling_key5,
   prs_afdeling_key6,
   prs_afdeling_key7,
   prs_afdeling_key8,
   prs_afdeling_key9,
   prs_afdeling_key10
)
AS
   SELECT '1' niveau,
          a1.prs_bedrijf_key,
          a1.prs_afdeling_key,
          a1.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM aaes_v_afdeling a1
    WHERE a1.prs_afdeling_parentkey IS NULL
   UNION
   SELECT '2' niveau,
          a1.prs_bedrijf_key,
          a2.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM aaes_v_afdeling a1, aaes_v_afdeling a2
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
      AND a1.prs_afdeling_parentkey IS NULL
   UNION
   SELECT '3' niveau,
          a1.prs_bedrijf_key,
          a3.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM aaes_v_afdeling a1, aaes_v_afdeling a2, aaes_v_afdeling a3
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
      AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
      AND a1.prs_afdeling_parentkey IS NULL
   UNION
   SELECT '4' niveau,
          a1.prs_bedrijf_key,
          a4.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          a4.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM aaes_v_afdeling a1,
          aaes_v_afdeling a2,
          aaes_v_afdeling a3,
          aaes_v_afdeling a4
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
      AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
      AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
      AND a1.prs_afdeling_parentkey IS NULL
   UNION
   SELECT '5' niveau,
          a1.prs_bedrijf_key,
          a5.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          a4.prs_afdeling_key,
          a5.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM aaes_v_afdeling a1,
          aaes_v_afdeling a2,
          aaes_v_afdeling a3,
          aaes_v_afdeling a4,
          aaes_v_afdeling a5
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
      AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
      AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
      AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
      AND a1.prs_afdeling_parentkey IS NULL
   UNION
   SELECT '6' niveau,
          a1.prs_bedrijf_key,
          a6.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          a4.prs_afdeling_key,
          a5.prs_afdeling_key,
          a6.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM aaes_v_afdeling a1,
          aaes_v_afdeling a2,
          aaes_v_afdeling a3,
          aaes_v_afdeling a4,
          aaes_v_afdeling a5,
          aaes_v_afdeling a6
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
      AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
      AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
      AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
      AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
      AND a1.prs_afdeling_parentkey IS NULL
   UNION
   SELECT '7' niveau,
          a1.prs_bedrijf_key,
          a7.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          a4.prs_afdeling_key,
          a5.prs_afdeling_key,
          a6.prs_afdeling_key,
          a7.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM aaes_v_afdeling a1,
          aaes_v_afdeling a2,
          aaes_v_afdeling a3,
          aaes_v_afdeling a4,
          aaes_v_afdeling a5,
          aaes_v_afdeling a6,
          aaes_v_afdeling a7
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
      AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
      AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
      AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
      AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
      AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
      AND a1.prs_afdeling_parentkey IS NULL
   UNION
   SELECT '8' niveau,
          a1.prs_bedrijf_key,
          a8.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          a4.prs_afdeling_key,
          a5.prs_afdeling_key,
          a6.prs_afdeling_key,
          a7.prs_afdeling_key,
          a8.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM aaes_v_afdeling a1,
          aaes_v_afdeling a2,
          aaes_v_afdeling a3,
          aaes_v_afdeling a4,
          aaes_v_afdeling a5,
          aaes_v_afdeling a6,
          aaes_v_afdeling a7,
          aaes_v_afdeling a8
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
      AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
      AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
      AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
      AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
      AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
      AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key
      AND a1.prs_afdeling_parentkey IS NULL
   UNION
   SELECT '9' niveau,
          a1.prs_bedrijf_key,
          a9.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          a4.prs_afdeling_key,
          a5.prs_afdeling_key,
          a6.prs_afdeling_key,
          a7.prs_afdeling_key,
          a8.prs_afdeling_key,
          a9.prs_afdeling_key,
          TO_NUMBER (NULL)
     FROM aaes_v_afdeling a1,
          aaes_v_afdeling a2,
          aaes_v_afdeling a3,
          aaes_v_afdeling a4,
          aaes_v_afdeling a5,
          aaes_v_afdeling a6,
          aaes_v_afdeling a7,
          aaes_v_afdeling a8,
          aaes_v_afdeling a9
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
      AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
      AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
      AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
      AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
      AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
      AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key
      AND a9.prs_afdeling_parentkey = a8.prs_afdeling_key
      AND a1.prs_afdeling_parentkey IS NULL
   UNION
   SELECT '10' niveau,
          a1.prs_bedrijf_key,
          a10.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          a4.prs_afdeling_key,
          a5.prs_afdeling_key,
          a6.prs_afdeling_key,
          a7.prs_afdeling_key,
          a8.prs_afdeling_key,
          a9.prs_afdeling_key,
          a10.prs_afdeling_key
     FROM aaes_v_afdeling a1,
          aaes_v_afdeling a2,
          aaes_v_afdeling a3,
          aaes_v_afdeling a4,
          aaes_v_afdeling a5,
          aaes_v_afdeling a6,
          aaes_v_afdeling a7,
          aaes_v_afdeling a8,
          aaes_v_afdeling a9,
          aaes_v_afdeling a10
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
      AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
      AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
      AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
      AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
      AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
      AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key
      AND a9.prs_afdeling_parentkey = a8.prs_afdeling_key
      AND a10.prs_afdeling_parentkey = a9.prs_afdeling_key
      AND a1.prs_afdeling_parentkey IS NULL;


CREATE OR REPLACE VIEW aaes_v_leidinggevende_afd
(
   prs_afdeling_key,
   prs_perslid_key_leid
)
AS
   SELECT prs_afdeling_key,
          COALESCE (al10, COALESCE (al9, COALESCE (al8, COALESCE (al7, COALESCE (al6, COALESCE (al5, COALESCE (al4, COALESCE (al3, COALESCE (al2, al1)))))))))
     FROM (SELECT a.prs_afdeling_key,
                  (SELECT kl.prs_kenmerklink_waarde
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key1 = kl.prs_link_key
                          AND kl.prs_kenmerk_key = 1000)
                     al1,
                  (SELECT kl.prs_kenmerklink_waarde
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key2 = kl.prs_link_key
                          AND kl.prs_kenmerk_key = 1000)
                     al2,
                  (SELECT kl.prs_kenmerklink_waarde
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key3 = kl.prs_link_key
                          AND kl.prs_kenmerk_key = 1000)
                     al3,
                  (SELECT kl.prs_kenmerklink_waarde
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key4 = kl.prs_link_key
                          AND kl.prs_kenmerk_key = 1000)
                     al4,
                  (SELECT kl.prs_kenmerklink_waarde
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key5 = kl.prs_link_key
                          AND kl.prs_kenmerk_key = 1000)
                     al5,
                  (SELECT kl.prs_kenmerklink_waarde
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key6 = kl.prs_link_key
                          AND kl.prs_kenmerk_key = 1000)
                     al6,
                  (SELECT kl.prs_kenmerklink_waarde
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key7 = kl.prs_link_key
                          AND kl.prs_kenmerk_key = 1000)
                     al7,
                  (SELECT kl.prs_kenmerklink_waarde
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key8 = kl.prs_link_key
                          AND kl.prs_kenmerk_key = 1000)
                     al8,
                  (SELECT kl.prs_kenmerklink_waarde
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key9 = kl.prs_link_key
                          AND kl.prs_kenmerk_key = 1000)
                     al9,
                  (SELECT kl.prs_kenmerklink_waarde
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key10 = kl.prs_link_key
                          AND kl.prs_kenmerk_key = 1000)
                     al10
             FROM aaes_v_afdeling_boom a);

CREATE OR REPLACE VIEW aaes_v_leidinggevende
(
   prs_perslid_key,
   prs_afdeling_key,
   prs_perslid_key_leid,
   niveau2,
   niveau1
)
AS
   SELECT prs_perslid_key,
          prs_afdeling_key,
          COALESCE (al10, COALESCE (al9, COALESCE (al8, COALESCE (al7, COALESCE (al6, COALESCE (al5, COALESCE (al4, COALESCE (al3, COALESCE (al2, al1))))))))),
          al2,
          al1
     FROM (SELECT prs_perslid_key,
                  p.prs_afdeling_key,
                  (SELECT FAC.safe_to_number(kl.prs_kenmerklink_waarde)
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key1 = kl.prs_link_key
                          AND kl.prs_kenmerklink_waarde <> p.prs_perslid_key
                          AND kl.prs_kenmerk_key = 1000)
                     al1,
                  (SELECT FAC.safe_to_number(kl.prs_kenmerklink_waarde)
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key2 = kl.prs_link_key
                          AND kl.prs_kenmerklink_waarde <> p.prs_perslid_key
                          AND kl.prs_kenmerk_key = 1000)
                     al2,
                  (SELECT FAC.safe_to_number(kl.prs_kenmerklink_waarde)
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key3 = kl.prs_link_key
                          AND kl.prs_kenmerklink_waarde <> p.prs_perslid_key
                          AND kl.prs_kenmerk_key = 1000)
                     al3,
                  (SELECT FAC.safe_to_number(kl.prs_kenmerklink_waarde)
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key4 = kl.prs_link_key
                          AND kl.prs_kenmerklink_waarde <> p.prs_perslid_key
                          AND kl.prs_kenmerk_key = 1000)
                     al4,
                  (SELECT FAC.safe_to_number(kl.prs_kenmerklink_waarde)
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key5 = kl.prs_link_key
                          AND kl.prs_kenmerklink_waarde <> p.prs_perslid_key
                          AND kl.prs_kenmerk_key = 1000)
                     al5,
                  (SELECT FAC.safe_to_number(kl.prs_kenmerklink_waarde)
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key6 = kl.prs_link_key
                          AND kl.prs_kenmerklink_waarde <> p.prs_perslid_key
                          AND kl.prs_kenmerk_key = 1000)
                     al6,
                  (SELECT FAC.safe_to_number(kl.prs_kenmerklink_waarde)
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key7 = kl.prs_link_key
                          AND kl.prs_kenmerklink_waarde <> p.prs_perslid_key
                          AND kl.prs_kenmerk_key = 1000)
                     al7,
                  (SELECT FAC.safe_to_number(kl.prs_kenmerklink_waarde)
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key8 = kl.prs_link_key
                          AND kl.prs_kenmerklink_waarde <> p.prs_perslid_key
                          AND kl.prs_kenmerk_key = 1000)
                     al8,
                  (SELECT FAC.safe_to_number(kl.prs_kenmerklink_waarde)
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key9 = kl.prs_link_key
                          AND kl.prs_kenmerklink_waarde <> p.prs_perslid_key
                          AND kl.prs_kenmerk_key = 1000)
                     al9,
                  (SELECT FAC.safe_to_number(kl.prs_kenmerklink_waarde)
                     FROM prs_kenmerklink kl
                    WHERE     a.prs_afdeling_key10 = kl.prs_link_key
                          AND kl.prs_kenmerklink_waarde <> p.prs_perslid_key
                          AND kl.prs_kenmerk_key = 1000)
                     al10
             FROM prs_perslid p, aaes_v_afdeling_boom a
            WHERE p.prs_afdeling_key = a.prs_afdeling_key);
           
           
CREATE OR REPLACE VIEW aaes_v_rap_fiat_leiding
(
   NUMMER,
   DATUM,
   VAKGROEP,
   MELDING,
   MELDING_TEKST,
   MELDER,
   MLD_STATUSES_KEY,
   STATUS,
   GEPLANDE_EINDDATUM,
   HIDE_F_MLD_MELDING_KEY,
   MLD_STDMELDING_KEY,
   FCLT_3D_USER_KEY
)
AS
   SELECT   DECODE (COALESCE (sd.ins_srtdiscipline_prefix, ''),
                    '', '',
                    sd.ins_srtdiscipline_prefix)
            || TO_CHAR (m.mld_melding_key)
               nummer,
            TO_CHAR (m.mld_melding_datum, 'dd-mm-yyyy') datum,
            DECODE (COALESCE (sd.ins_srtdiscipline_prefix, ''),
                    '', '',
                    sd.ins_srtdiscipline_prefix || '-')
            || td.ins_discipline_omschrijving
               vakgroep,
            sm.mld_stdmelding_omschrijving melding,
            'Prive adres: '
            || (SELECT   mld_kenmerkmelding_waarde
                  FROM   mld_kenmerkmelding km, mld_kenmerk k
                 WHERE       km.mld_melding_key = m.mld_melding_key
                         AND km.mld_kenmerk_key = k.mld_kenmerk_key
                         AND mld_srtkenmerk_key = 321)
            || CHR (13)
            || 'Postcode / Woonplaats: '
            || (SELECT   mld_kenmerkmelding_waarde
                  FROM   mld_kenmerkmelding km, mld_kenmerk k
                 WHERE       km.mld_melding_key = m.mld_melding_key
                         AND km.mld_kenmerk_key = k.mld_kenmerk_key
                         AND mld_srtkenmerk_key = 322)
            || CHR (13)
            || 'Huidige merk en kenteken: '
            || (SELECT   mld_kenmerkmelding_waarde
                  FROM   mld_kenmerkmelding km, mld_kenmerk k
                 WHERE       km.mld_melding_key = m.mld_melding_key
                         AND km.mld_kenmerk_key = k.mld_kenmerk_key
                         AND mld_srtkenmerk_key = 323)
            || CHR (13)
            || 'Prognose zakelijk per jaar: '
            || (SELECT   fac_usrdata_omschr
                  FROM   fac_usrdata ud, mld_kenmerkmelding km, mld_kenmerk k
                 WHERE   fac.safe_to_number (mld_kenmerkmelding_waarde) =
                            fac_usrdata_key
                         AND km.mld_melding_key = m.mld_melding_key
                         AND km.mld_kenmerk_key = k.mld_kenmerk_key
                         AND mld_srtkenmerk_key = 301)
            || CHR (13)
            || 'Prognose prive per jaar: '
            || (SELECT   fac_usrdata_omschr
                  FROM   fac_usrdata ud, mld_kenmerkmelding km, mld_kenmerk k
                 WHERE   fac.safe_to_number (mld_kenmerkmelding_waarde) =
                            fac_usrdata_key
                         AND km.mld_melding_key = m.mld_melding_key
                         AND km.mld_kenmerk_key = k.mld_kenmerk_key
                         AND mld_srtkenmerk_key = 302)
            || CHR (13)
            || 'Prognose woon- werk per jaar: '
            || (SELECT   fac_usrdata_omschr
                  FROM   fac_usrdata ud, mld_kenmerkmelding km, mld_kenmerk k
                 WHERE   fac.safe_to_number (mld_kenmerkmelding_waarde) =
                            fac_usrdata_key
                         AND km.mld_melding_key = m.mld_melding_key
                         AND km.mld_kenmerk_key = k.mld_kenmerk_key
                         AND mld_srtkenmerk_key = 303)
            || CHR (13)
            || 'Voorstel categorieindeling: '
            || (SELECT   fac_usrdata_omschr
                  FROM   fac_usrdata ud, mld_kenmerkmelding km, mld_kenmerk k
                 WHERE   fac.safe_to_number (mld_kenmerkmelding_waarde) =
                            fac_usrdata_key
                         AND km.mld_melding_key = m.mld_melding_key
                         AND km.mld_kenmerk_key = k.mld_kenmerk_key
                         AND mld_srtkenmerk_key = 305)
            || CHR (13)
            || 'Omschrijving: '
            || SUBSTR(mld_melding_omschrijving, 1, 2000),
            pf.prs_perslid_naam_full melder,
            s.mld_statuses_key,
            s.mld_statuses_omschrijving status,
            m.mld_melding_einddatum geplande_einddatum,
            m.mld_melding_key mld_key,
            sm.mld_stdmelding_key,
            l.prs_perslid_key_leid leidinggevende
     FROM   mld_melding m,
            mld_statuses s,
            mld_stdmelding sm,
            ins_tab_discipline td,
            ins_srtdiscipline sd,
            prs_v_perslid_fullnames_all pf,
            aaes_v_leidinggevende l
    WHERE       m.mld_melding_status IN (2, 3, 4)            -- Te behandelen! + in behandeling.
            AND m.mld_melding_status = s.mld_statuses_key
            AND m.mld_stdmelding_key = sm.mld_stdmelding_key
            AND sm.mld_ins_discipline_key = td.ins_discipline_key
            AND sm.mld_stdmelding_key = 806                  -- Goedkeuring door leidinggevende
            AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
            AND m.prs_perslid_key = pf.prs_perslid_key
            AND pf.prs_perslid_key = l.prs_perslid_key; 


CREATE OR REPLACE VIEW aaes_v_hr_adviseur
(
   prs_perslid_key,
   prs_perslid_naam_full
)
AS
   SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full
     FROM prs_v_perslid_fullnames pf, fac_gebruikersgroep gg
    WHERE pf.prs_perslid_key = gg.prs_perslid_key AND gg.fac_groep_key = 181;

          
CREATE OR REPLACE VIEW aaes_v_noti_leaseaanvraag (
   code,
   sender,
   receiver,
   text,
   key,
   xkey
   )
AS
   -- 1e leidinggevende notificeren
   SELECT 'CUST01',
          NULL,
          fac.safe_to_number (l.prs_perslid_key_leid),
          'Niet per e-mail te fiatteren',
          mld_melding_key,
          NULL
     FROM mld_melding m, aaes_v_leidinggevende l
    WHERE     m.prs_perslid_key = l.prs_perslid_key
          AND m.mld_stdmelding_key = 806
          AND m.mld_melding_datum > SYSDATE - 1
          AND m.mld_melding_status IN (2, 3, 4)
   UNION ALL
   -- HR adviseur notificeren
   SELECT 'MLD2BO',
          NULL,
          fac.safe_to_number (km.mld_kenmerkmelding_waarde),
          'Facilitor: Er is een nieuwe melding ' || sd.ins_srtdiscipline_prefix || m.mld_melding_key || ' (' || d.ins_discipline_omschrijving || '/' || std.mld_stdmelding_omschrijving || ')',
          m.mld_melding_key,
          NULL
     FROM mld_melding m, mld_kenmerkmelding km, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd
    WHERE     m.mld_stdmelding_key = std.mld_stdmelding_key
          AND std.mld_ins_discipline_key = d.ins_discipline_key
          AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
          AND m.mld_melding_key = km.mld_melding_key
          AND km.mld_kenmerk_key = 1021  -- Gewenste HR adviseur
          AND m.mld_stdmelding_key = 805  -- Aanvraag formulier leaseauto
          AND m.mld_melding_datum > SYSDATE - 1
          AND m.mld_melding_status IN (2, 3, 4);
          
-- export leaseopdracht naar leasemaatschappij
CREATE OR REPLACE PROCEDURE aaes_export_lease_aanvraag (
   p_applname   IN   VARCHAR2
)
AS
CURSOR c
IS
  SELECT m.mld_melding_key,
         m.prs_kostenplaats_key,
         m.mld_melding_omschrijving,
         MAX (bdl.prs_bedrijf_key) prs_bedrijf_key
    FROM mld_melding m,
         mld_stdmelding std,
         prs_dienst d,
         prs_bedrijfdienstlocatie bdl
   WHERE     m.mld_stdmelding_key = 807              -- goedkeuring HR manager
         AND m.mld_melding_status = 5                -- afgemeld
         AND m.mld_stdmelding_key = std.mld_stdmelding_key
         AND std.prs_dienst_key = bdl.prs_dienst_key
         AND NOT EXISTS (SELECT mld_melding_key
                           FROM mld_opdr o
                          WHERE mld_melding_key = m.mld_melding_key)
GROUP BY mld_melding_key, prs_kostenplaats_key, mld_melding_omschrijving;

CURSOR co
IS
SELECT mld_opdr_key
  FROM mld_melding m, mld_opdr o
 WHERE     m.mld_melding_key = o.mld_melding_key
       AND m.mld_stdmelding_key = 807
       AND o.mld_statusopdr_key = 5
       AND o.mld_opdr_verzonden IS NOT NULL;

CURSOR cl
IS
SELECT mld_melding_key
  FROM (SELECT fac.safe_to_number (l.prs_perslid_key_leid) leidinggevende,
               mld_melding_key
          FROM mld_melding m, aaes_v_leidinggevende l
         WHERE     m.prs_perslid_key = l.prs_perslid_key
               AND m.mld_stdmelding_key = 806
               AND m.mld_melding_status IN (2, 3, 4))
 WHERE leidinggevende IS NULL;


BEGIN

	FOR rec IN cl  -- hangende meldingen die geen leidinggevende meer hebben.
  LOOP
     BEGIN
        MLD.setmeldingstatus(rec.mld_melding_key, 4, 4);      -- accepteren door facilitor
        MLD.setmeldingstatus(rec.mld_melding_key, 5, 4);      -- afmelden door facilitor
        MLD.mld_nextworkflowstep (rec.mld_melding_key, 1);    -- Succes en trap de volgende workflow stap af.
     EXCEPTION
        WHEN OTHERS
        THEN
           fac.writelog (p_applname
                           , 'E'
                           , 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'
                           , 'Fout bij afhandelen van melding: ' || rec.mld_melding_key);

     END;
  END LOOP;

	FOR rec IN c
  LOOP
     BEGIN
        INSERT INTO mld_opdr (mld_melding_key
		                        , prs_kostenplaats_key
		                        , mld_statusopdr_key
		                        , mld_typeopdr_key
		                        , prs_perslid_key
		                        , mld_uitvoerende_keys
		                        , mld_opdr_datumbegin
		                        , mld_opdr_einddatum
		                        , mld_opdr_module
		                        , mld_opdr_omschrijving
		                        , mld_opdr_bedrijfopdr_volgnr
		                        , mld_opdr_teverzenden)
		    VALUES ( rec.mld_melding_key
		           , rec.prs_kostenplaats_key
		           , 5    -- uitgegeven
               , 2    -- docket
               , 4    -- facilitor
               , rec.prs_bedrijf_key
               , SYSDATE
               , FAC.DatumTijdPlusUitvoerTijd (SYSDATE, 1, 'DAGEN')
               , 'MLD'
               , rec.mld_melding_omschrijving
               , 1
               , 1);

        -- update melding status is niet nodig omdat de melding al afgemeld is.
        -- MLD.updatemeldingstatus (rec.mld_melding_key, 0, 4); -- facilitor

     EXCEPTION
        WHEN OTHERS
        THEN
           fac.writelog (p_applname
                           , 'E'
                           , 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'
                           , 'Fout bij aanmaken opdracht: ' || rec.mld_melding_key);

     END;
  END LOOP;

  FOR rec IN co
  LOOP
     BEGIN
        mld.setopdrachtstatus(rec.mld_opdr_key, 6, 4); -- afgemeld, facilitor
     EXCEPTION
        WHEN OTHERS
        THEN
           fac.writelog (p_applname
                           , 'E'
                           , 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'
                           , 'Fout bij afmelden opdracht: ' || rec.mld_opdr_key);
     END;
  END LOOP;
END aaes_export_lease_aanvraag;
/


-- Dagelijkse taak om a.d.h.v. het kenmerk leidinggevende bij de afdeling, de budgethouder
-- bij de kostenplaats te bepalen. Indien de afdeling geen leidinggevende heeft wordt in de
-- organisatieboom naar boven gezocht totdat er een leidinggevende gevonden is.
CREATE OR REPLACE PROCEDURE aaes_set_budgethouder 
AS
BEGIN

  DELETE aaes_leidinggevende_afd;

  INSERT INTO aaes_leidinggevende_afd (prs_kostenplaats_key, prs_perslid_key)
     (SELECT a.prs_kostenplaats_key, prs_perslid_key_leid
        FROM aaes_v_leidinggevende_afd la, prs_afdeling a
       WHERE la.prs_afdeling_key = a.prs_afdeling_key);
  
  UPDATE prs_kostenplaats k
     SET prs_perslid_key =
            (SELECT DISTINCT prs_perslid_key
               FROM aaes_leidinggevende_afd la
              WHERE la.prs_kostenplaats_key = k.prs_kostenplaats_key)
   WHERE prs_kostenplaats_key > 40
     AND prs_kostenplaats_verwijder IS NULL;

  -- voeg leidinggevenden toe aan de autorisatiegroep 'Essent leidinggevende'   
  INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key)
     SELECT DISTINCT prs_perslid_key, 183               -- Essent leidinggevende
       FROM prs_kostenplaats k
      WHERE NOT EXISTS
               (SELECT prs_perslid_key
                  FROM fac_gebruikersgroep gg
                 WHERE k.prs_perslid_key = gg.prs_perslid_key
                   AND fac_groep_key = 183)
        AND prs_perslid_key IS NOT NULL;
  
  -- verwijder personen als leidinggevende als ze geen budgethouder meer zijn
  DELETE fac_gebruikersgroep gg
   WHERE fac_groep_key = 183
     AND NOT EXISTS (SELECT prs_perslid_key
                       FROM prs_kostenplaats k
                      WHERE k.prs_perslid_key = gg.prs_perslid_key);
  
  -- set profiel van de leidinggevende bij medewerkers van Essent (authenticatie is gevuld met IAM id)
  -- profiel wordt niet aangepast voor AAFM medewerkers
  UPDATE prs_perslid p
     SET fac_profiel_key = 41
   WHERE EXISTS (SELECT prs_perslid_key
                   FROM prs_kostenplaats kp
                  WHERE kp.prs_perslid_key = p.prs_perslid_key)
     AND COALESCE(fac_profiel_key, 1) = 1
     AND prs_perslid_authenticatie IS NOT NULL
     AND UPPER(prs_perslid_email) NOT LIKE '%AA-FM.COM';
  
  -- set het profiel van alle oud-leidinggevenden en nieuwe personen naar default 500.
  -- profiel wordt niet aangepast voor AAFM medewerkers
  UPDATE prs_perslid p
     SET fac_profiel_key = 1
   WHERE NOT EXISTS (SELECT prs_perslid_key
                       FROM prs_kostenplaats kp
                      WHERE kp.prs_perslid_key = p.prs_perslid_key)
     AND COALESCE(fac_profiel_key, 41) = 41
     AND prs_perslid_authenticatie IS NOT NULL
     AND UPPER(prs_perslid_email) NOT LIKE '%AA-FM.COM';

END aaes_set_budgethouder;
/

-- AAES#24099: Alleen bepaalde catalogi(?) en alleen FO-status Optie/Definitief
-- (dus niet Blokkade en Vervallen)!
/* Formatted on 30-1-2014 17:15:16 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW AAES_V_RAP_RES_INFOBORD
(
   AKTIEF,
   OFFSET,
   DAG,
   TIJD_VAN,
   TIJD_TOT,
   RUIMTE,
   CATALOGUS,
   AANVRAGER,
   GASTHEER,
   OMSCHRIJVING,
   STATUS,
   LOCATIE_CODE,
   GEBOUW_CODE,
   VERDIEPING_CODE,
   LOCATIE_OMSCHRIJVING,
   GEBOUW_OMSCHRIJVING,
   VERDIEPING_OMSCHRIJVING,
   ALG_LOCATIE_KEY,
   ALG_GEBOUW_KEY,
   ALG_VERDIEPING_KEY
)
AS
   SELECT (CASE
              WHEN rrr.res_rsv_ruimte_van > SYSDATE THEN 'expected'
              WHEN rrr.res_rsv_ruimte_tot < SYSDATE THEN 'passed'
              ELSE 'active'
           END)
             aktief,
          TRUNC ( (SYSDATE - rrr.res_rsv_ruimte_van) * 24 * 60) offset,
          TO_CHAR (rrr.res_rsv_ruimte_van, 'dd-mm-yyyy') dag,
          TO_CHAR (rrr.res_rsv_ruimte_van, 'hh24:mi') tijd_van,
          TO_CHAR (rrr.res_rsv_ruimte_tot, 'hh24:mi') tijd_tot,
          rrg.res_ruimte_nr ruimte,
          rd.ins_discipline_omschrijving catalogus,
          aanvrager.prs_perslid_naam_full aanvrager,
          gastheer.prs_perslid_naam_full gastheer,
          rrr.res_rsv_ruimte_omschrijving omschrijving,
          sf.res_status_fo_omschrijving status,
          l.alg_locatie_code locatie_code,
          g.alg_gebouw_code gebouw_code,
          v.alg_verdieping_code verdieping_code,
          l.alg_locatie_omschrijving locatie_omschrijving,
          g.alg_gebouw_omschrijving gebouw_omschrijving,
          v.alg_verdieping_omschrijving verdieping_omschrijving,
          l.alg_locatie_key,
          g.alg_gebouw_key,
          v.alg_verdieping_key
     FROM res_v_aanwezigrsv_ruimte rrr,
          res_ruimte_opstelling rro,
          res_v_res_ruimte_gegevens rrg,
          prs_v_perslid_fullnames aanvrager,
          prs_v_perslid_fullnames gastheer,
          alg_locatie l,
          alg_gebouw g,
          alg_verdieping v,
          res_status_fo sf,
          res_activiteit a,
          res_discipline rd
    WHERE     rrr.res_status_fo_key IN (1, 2)    -- Alleen Optie + Definitief!
          AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
          AND rro.res_ruimte_key = rrg.res_ruimte_key
          AND rrr.res_rsv_ruimte_host_key = gastheer.prs_perslid_key
          AND rrr.res_rsv_ruimte_contact_key = aanvrager.prs_perslid_key
          AND TRUNC (rrr.res_rsv_ruimte_van) = TRUNC (SYSDATE)
          AND rrg.alg_locatie_key = l.alg_locatie_key
          AND rrg.alg_gebouw_key = g.alg_gebouw_key
          AND rrg.alg_verdieping_key = v.alg_verdieping_key
          AND rrr.res_status_fo_key = sf.res_status_fo_key
          AND rrr.res_activiteit_key = a.res_activiteit_key
          --AND a.res_srtactiviteit_key = -1
          AND rrg.res_discipline_key = rd.ins_discipline_key
          AND NOT EXISTS
                (SELECT 1
                   FROM fac_usrdata
                  WHERE fac_usrtab_key = 601                 -- NietOpInfobord
                        AND fac.safe_to_number (fac_usrdata_code) =
                              rrg.res_ruimte_key);

-- Ticket 57464 - Rapport voor dashboard - Alle ingevoerde facturen van de vaste en variabele contracten 
CREATE OR REPLACE VIEW AAES_V_RAP_CNT_FACTUREN
(
    UITVOERENDE,
    OPDRACHTNR,
    BEDRAG_EXCL_BTW,
    OPMERKING,
    LOCATIES,
    CONTRACTTYPE,
    FACTUUR_KEY
)
AS
      SELECT b.prs_bedrijf_naam,
                'C'
             || cnt_contract_nummer_intern
             || NVL2 (cnt_contract_versie, '.' || cnt_contract_versie, '')
                 Opdrachtnr,
             f.fin_factuur_totaal
                 Bedrag_excl_btw,
             f.fin_factuur_opmerking
                 Opmerking,
             (SELECT LISTAGG (loc.locatienaam, ' & ')
                         WITHIN GROUP (ORDER BY loc.locatienaam)
                FROM (SELECT cp.cnt_contract_key,
                             cp.cnt_alg_plaats_code,
                             DECODE (
                                 cp.cnt_alg_plaats_code,
                                 'L', (SELECT alg_locatie_omschrijving
                                         FROM alg_locatie l
                                        WHERE cp.cnt_alg_plaats_key =
                                              l.alg_locatie_key),
                                 'G', (SELECT alg_locatie_omschrijving
                                         FROM alg_locatie l, alg_gebouw g
                                        WHERE     cp.cnt_alg_plaats_key =
                                                  g.alg_gebouw_key
                                              AND g.alg_locatie_key =
                                                  l.alg_locatie_key),
                                 'Onbekend')
                                 locatienaam
                        FROM cnt_contract_plaats cp
                       WHERE     cp.cnt_alg_plaats_code IN ('G', 'L')
                             AND cnt_contract_plaats_verwijder IS NULL
                             AND c.cnt_contract_key = cp.cnt_contract_key) loc)
                 Locaties,
             CASE
                 WHEN SUBSTR (ks.prs_kostensoort_UPPER, 1, 2) = 'CF'
                 THEN
                     'Vast'
                 WHEN SUBSTR (ks.prs_kostensoort_UPPER, 1, 2) = 'CV'
                 THEN
                     'Variabel'
                 ELSE
                     'Onbekend'
             END
                 Type_Contract,
            f.fin_factuur_key
        FROM fin_factuur         f,
             prs_kostensoort     ks,
             fin_factuur_statuses fs,
             cnt_contract        c,
             prs_bedrijf         b
       WHERE     f.prs_kostensoort_key = ks.prs_kostensoort_key
             AND f.fin_factuur_statuses_key = fs.fin_factuur_statuses_key
             AND f.fin_factuur_verwijder IS NULL
             AND fs.fin_factuur_statuses_omschr = 'Ingevoerd'
             AND f.cnt_contract_key = c.cnt_contract_key
             AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
    ORDER BY b.prs_bedrijf_naam;

BEGIN adm.systrackscriptId('$Id$', 0); END;
/
BEGIN fac.registercustversion('AAES', 13); END;
/
COMMIT;
SPOOL OFF
