<%@language = "javascript" %>
<%
/*
    $Revision$
    $Id$

    File:               kpn_copy_mandate_save
    Description:        SUBMIT-form
    Parameters:
        keys            String van prs_perslidkostenplaats keys (dan multi-edit kostenplaatsen)
                        of: form kpn_kpnkey voor ondermandateren?
    Context:
    Note:

     SUBMIT-form
*/
var JSON_Result = true;
%>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../shared/save2db.inc" -->

<%
protectRequest.validateToken();

var kpnman_keys = getQParamIntArray("keys", []);
var kpn_prskey = getFParamInt("kpn_prskey");

var authparams = user.checkAutorisation("WEB_FINMSU", true);
if (authparams && authparams.ALGwritelevel < 9)
{   // alles, mandateren
}
else
{   // kostenplaatsverantwoordelijke, ondermandateren

    // Voor WEB_FACMAN kijken naar prs write rechten, fac_functie_min_level = 7, lezen en schrijven organisatie
    // (Let op dat alg write rechten dan altijd -1 zijn, ook bij geen write rechten)
    // Dus alleen kijken naar prs write rechten
    var authparams = user.checkAutorisation("WEB_FACMAN");
    var canWrite = (authparams.PRSwritelevel < 9);
    user.auth_required_or_abort(canWrite);

    if (kpnman_keys.length > 0)
    {
        var tobecopied = 0;
        var ingesloten = [];
        for (var i = 0; i < kpnman_keys.length; i++)
        {
            if (canWrite)
            {   // De rechten heb je
                sql = "SELECT prs_perslidkostenplaats_key"
                    + "     , prs_kostenplaats_key"
                    + "  FROM prs_perslidkostenplaats"
                    + " WHERE prs_perslidkostenplaats_key = " + kpnman_keys[i]
                var oRs = Oracle.Execute(sql);
                if (oRs.eof)
                    shared.record_not_found("<!--" + kpnman_keys[i] + "-->");

                if (!oRs.eof && oRs("prs_kostenplaats_key").value)
                {   // prs_kostenplaats_key heeft een waarde
                    ingesloten.push(kpnman_keys[i]);
                    tobecopied++;
                }
            }
        }
        user.auth_required_or_abort(tobecopied > 0); // We klagen niet over enkele wel en enkele niet
        kpnman_keys = ingesloten;
    }
}

var result = { success: false
             , warning: L("lcl_shared_no_action")
             };
// Zijn er nu nog mandateringen en zijn ze allemaal van dezelfde persoon.
if (kpnman_keys.length > 0)
{
    var sql = "SELECT COUNT(DISTINCT prs_perslid_key) aantal"
            + "  FROM prs_perslidkostenplaats"
            + " WHERE prs_perslidkostenplaats_key IN (" + kpnman_keys.join(",") + ")";
    var oRs = Oracle.Execute(sql);
    var aantal = oRs("aantal").Value;
    oRs.Close();

    var hasProfiel = true;
    if (S("prs_mandaterequiresprofiel") == 1)
    {
        var sql = "SELECT fac_profiel_key"
                + "  FROM prs_perslid"
                + " WHERE prs_perslid_key = " + kpn_prskey;
        var oRs = Oracle.Execute(sql)
        hasProfiel = oRs("fac_profiel_key").Value != null;
        oRs.Close();
    }

    if (aantal == 1 && hasProfiel)
    {   // voeg nu de kostenplaatsen aan de persoon toe.
        sql_ins = "INSERT INTO prs_perslidkostenplaats"
                + "( prs_perslid_key"
                + ", prs_kostenplaats_key"
                + ", prs_perslidkostenplaats_boeken"
                + ", prs_perslidkostenplaats_inzage"
                + ") "
                + "SELECT " + kpn_prskey
                + "     , prs_kostenplaats_key"
                + "     , prs_perslidkostenplaats_boeken"
                + "     , prs_perslidkostenplaats_inzage"
                + "  FROM prs_perslidkostenplaats"
                + " WHERE prs_perslid_key <> " + kpn_prskey // niet naar zichzelf kopieren
                + "   AND prs_perslidkostenplaats_key IN (" + kpnman_keys.join(",") + ")";
        var err = Oracle.Execute(sql_ins, true);
        if (err.friendlyMsg)
            result.message = err.friendlyMsg;
        else
        {
            delete result.warning;
            result.success = true;
            result.toaster = L("lcl_prs_mandatering_cpy");
        }
    }
}

Response.Write(JSON.stringify(result));
%>
<% ASPPAGE_END(); %>
