-- Customer specific once-script to connect kostenplaatsen to a kostenplaatsgroep. AASA#26277
--
--
-- Support: +31 53 4800700

SET ECHO ON;
SPOOL xAASA#26277;
SET DEFINE OFF;

DECLARE
   CURSOR c_opdr
   IS
      SELECT (SELECT fin_kenmerkfactuur_waarde
                FROM fin_kenmerkfactuur kf
               WHERE kf.fin_factuur_key = f.fin_factuur_key
                 AND kf.fin_kenmerk_key = 2)
                laatste,
             m.mld_melding_key,
             o.mld_opdr_key,
             o.mld_statusopdr_key,
             m.mld_melding_status
        FROM fin_factuur f, mld_opdr o, mld_melding m
       WHERE f.mld_opdr_key = o.mld_opdr_key
         AND f.fin_factuur_statuses_key = 7                        -- verwerkt
         AND o.mld_statusopdr_key = 9                              -- afgerond
         AND o.mld_melding_key = m.mld_melding_key
         AND TO_CHAR (o.mld_opdr_datumbegin, 'yyyy') = '2011';

   v_aanvrager   NUMBER (10);
BEGIN
   v_aanvrager := NULL;                                           -- facilitor

   FOR rec1 IN c_opdr
   LOOP
      BEGIN
         -- indien nog niet afgemeld, dan maar even afmelden.
         IF rec1.mld_statusopdr_key <> 6
        AND rec1.mld_statusopdr_key <> 7
        AND rec1.mld_statusopdr_key <> 9
         THEN
            mld.setopdrachtstatus (rec1.mld_opdr_key, 6, v_aanvrager);
            mld.setopdrachtstatus (rec1.mld_opdr_key, 9, v_aanvrager);
         END IF;

         UPDATE mld_opdr o
            SET mld_opdr_kosten =
                   (SELECT SUM (fin_factuurregel_totaal)
                      FROM aaxx_v_aanwezigfactuur f, fin_factuurregel fr
                     WHERE f.fin_factuur_key = fr.fin_factuur_key
                       AND f.mld_opdr_key = o.mld_opdr_key
                       AND f.fin_factuur_statuses_key >= 6)
          WHERE o.mld_opdr_key = rec1.mld_opdr_key
            AND rec1.mld_melding_status IN (4, 5, 7); -- anders faalt de trigger sowieso

         -- update meldingstatus
         mld.updatemeldingstatusav (rec1.mld_melding_key,
                                    0,
                                    v_aanvrager,
                                    0);
         -- zet de status naar verwerkt (user is facilitor)
         mld.setopdrachtstatus (rec1.mld_opdr_key, 7, v_aanvrager);
      END;
   END LOOP;

   COMMIT;
END;
/
        
BEGIN adm.systrackscript('$Workfile: AASA#26277.sql $', '$Revision$', 1); END;
/
                 
                       
COMMIT;

SPOOL OFF;