<%@ LANGUAGE = JavaScript %>
<% /*
     $Revision$
     $Id$

     File:        cnt_approve_save.asp
*/ %>

<%
var JSON_Result = true;
%>

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

<%
protectRequest.validateToken();
/***** Get webform parameters *****/
/***** End get webform parameters *****/

var cnt_key_arr = getFParamIntArray("cnt_key");

var result = {};
var tobeapproved = 0;
var ingesloten = [];
// Bepaal de contracten in de selectie die
// ook echt goedgekeurd kunnen of mogen worden.
for (var i = 0; i < cnt_key_arr.length; i++)
{
  var cnt_info = cnt.cnt_contract_info(cnt_key_arr[i]); // Globale variabele met alle cnt_contract informatie
  var this_cnt = cnt.func_enabled_contract(cnt_key_arr[i], cnt_info); // Wat heb ik zoal aan rechten op dit contract?
  if (this_cnt.canGoedkeur1 || this_cnt.canGoedkeur2 || this_cnt.canGoedkeur3 || this_cnt.canGoedkeur4 || this_cnt.canGoedkeur5)
  {
    ingesloten.push({ cnt_key: cnt_key_arr[i],
                      kosten: cnt_info.kosten,
                      approved: cnt_info.approved,
                      canGoedkeur1: this_cnt.canGoedkeur1,
                      canGoedkeur2: this_cnt.canGoedkeur2,
                      canGoedkeur3: this_cnt.canGoedkeur3,
                      canGoedkeur4: this_cnt.canGoedkeur4,
                      canGoedkeur5: this_cnt.canGoedkeur5
                    });
    tobeapproved++;
  }
}
user.anything_todo_or_abort(tobeapproved > 0); // We klagen niet over enkele wel en enkele niet

for (var i = 0; i < ingesloten.length; i++)
{ // Blijkbaar mogen we Approve'n. Maar welke? 1, 2 of 3?
  var cnt_key = ingesloten[i].cnt_key;
  if (ingesloten[i].canGoedkeur1 && (S("cnt_approval_all") == 1 || !ingesloten[i].canGoedkeur2)) // Kan ik dit contract fiatteren tot de tweede limiet? Als ik ook al tot de derde limiet goed kan keuren dan direct maar tot de derde limiet (volgende if).
  {
    var finalapproval = (S("cnt_approval_all") == 1 || ingesloten[i].kosten <= S("cnt_contract_limit2") || ingesloten[i].approved > S("cnt_contract_limit2"));
    sql = "UPDATE cnt_contract"
        + " SET cnt_contract_approved = " + (ingesloten[i].kosten < S("cnt_contract_limit2")? ingesloten[i].kosten : S("cnt_contract_limit2")) // Gefiatteerd tot een bedrag van limiet2 (<=5000 Euro)
        + (finalapproval
          ? "   , cnt_contract_teverzenden = 1"
          : "")
        + " WHERE cnt_contract_key = " + cnt_key;
    oRs = Oracle.Execute(sql);

    if (!finalapproval)
    { // Nu moet de tweede fiatteur nog een notificatie krijgen.
      var approver_arr = cnt.getCntApprovers(cnt_key); // Je krijgt een array met fiatteurs terug.
      // Alle tweede fiatteurs een notificatie sturen.
      result.message = cnt.sendNeedApprovalNotifications(cnt_key, approver_arr);

      cnt.trackcontractgoedkeuren(cnt_key);
    }
    else
      // Het contract is tot het contract goedgekeurd. Verder goedkeuren hoeft niet.
      // Zetten van de contact status Actief(0).
      cnt.setcontractstatus(cnt_key, 0); // Zorgt ook voor tracking en daarmee notificatie.

    result.success = true;
  }
  else if (ingesloten[i].canGoedkeur2 && (S("cnt_approval_all") == 1 || !ingesloten[i].canGoedkeur3)) // Kan ik dit contract fiatteren tot de derde limiet? Als ik ook boven de derde limiet goed kan keuren dan direct maar geheel goedkeuren (volgende if).
  {
    var finalapproval = (S("cnt_approval_all") == 1 || ingesloten[i].kosten <= S("cnt_contract_limit3") || ingesloten[i].approved > S("cnt_contract_limit3"));
    sql = "UPDATE cnt_contract"
        + "   SET cnt_contract_approved = " + (ingesloten[i].kosten < S("cnt_contract_limit3")? ingesloten[i].kosten : S("cnt_contract_limit3")) // Gefiatteerd tot een bedrag van limiet2 (<=125000 Euro)
        + (finalapproval
          ? "   , cnt_contract_teverzenden = 1"
          : "")
        + " WHERE cnt_contract_key = " + cnt_key;
    oRs = Oracle.Execute(sql);

    if (!finalapproval)
    { // Nu moet de derde fiatteur nog een notificatie krijgen.
      var approver_arr = cnt.getCntApprovers(cnt_key); // Je krijgt een array met fiatteurs terug.
      // Alle derde fiatteurs een notificatie sturen.
      result.message = cnt.sendNeedApprovalNotifications(cnt_key, approver_arr);

      cnt.trackcontractgoedkeuren(cnt_key);
    }
    else
      // Het contract is tot het contract goedgekeurd. Verder goedkeuren hoeft niet.
      // Zetten van de contact status Actief(0).
      cnt.setcontractstatus(cnt_key, 0); // Zorgt ook voor tracking en daarmee notificatie.

    result.success = true;
  }
  else if (ingesloten[i].canGoedkeur3 && (S("cnt_approval_all") == 1 || !ingesloten[i].canGoedkeur4)) // Kan ik dit contract fiatteren tot de vierde limiet? Als ik ook boven de vierde limiet goed kan keuren dan direct maar geheel goedkeuren (volgende if).
  {
    var finalapproval = (S("cnt_approval_all") == 1 || ingesloten[i].kosten <= S("cnt_contract_limit4") || ingesloten[i].approved > S("cnt_contract_limit4"));
    sql = "UPDATE cnt_contract"
        + "   SET cnt_contract_approved = " + (ingesloten[i].kosten < S("cnt_contract_limit4")? ingesloten[i].kosten : S("cnt_contract_limit4")) // Gefiatteerd tot een bedrag van limiet3 (<=9999999 Euro)
        + (finalapproval
          ? "   , cnt_contract_teverzenden = 1"
          : "")
        + " WHERE cnt_contract_key = " + cnt_key;
    oRs = Oracle.Execute(sql);

    if (!finalapproval)
    { // Nu moet de vierde fiatteur nog een notificatie krijgen.
      var approver_arr = cnt.getCntApprovers(cnt_key); // Je krijgt een array met fiatteurs terug.
      // Alle vierde fiatteurs een notificatie sturen.
      result.message = cnt.sendNeedApprovalNotifications(cnt_key, approver_arr);

      cnt.trackcontractgoedkeuren(cnt_key);
    }
    else
      // Het contract is tot het contract goedgekeurd. Verder goedkeuren hoeft niet.
      // Zetten van de contact status Actief(0).
      cnt.setcontractstatus(cnt_key, 0); // Zorgt ook voor tracking en daarmee notificatie.

    result.success = true;
  }
  else if (ingesloten[i].canGoedkeur4 && (S("cnt_approval_all") == 1 || !ingesloten[i].canGoedkeur5)) // Kan ik dit contract fiatteren tot de vijfde limiet? Als ik ook boven de vijfde limiet goed kan keuren dan direct maar geheel goedkeuren (volgende if).
  {
    var finalapproval = (S("cnt_approval_all") == 1 || ingesloten[i].kosten <= S("cnt_contract_limit5") || ingesloten[i].approved > S("cnt_contract_limit5"));
    sql = "UPDATE cnt_contract"
        + "   SET cnt_contract_approved = " + (ingesloten[i].kosten < S("cnt_contract_limit5")? ingesloten[i].kosten : S("cnt_contract_limit5")) // Gefiatteerd tot een bedrag van limiet4 (<=9999999 Euro)
        + (finalapproval
          ? "   , cnt_contract_teverzenden = 1"
          : "")
        + " WHERE cnt_contract_key = " + cnt_key;
    oRs = Oracle.Execute(sql);

    if (!finalapproval)
    { // Nu moet de vijfde fiatteur nog een notificatie krijgen.
      var approver_arr = cnt.getCntApprovers(cnt_key); // Je krijgt een array met fiatteurs terug.
      // Alle vijfde fiatteurs een notificatie sturen.
      result.message = cnt.sendNeedApprovalNotifications(cnt_key, approver_arr);

      cnt.trackcontractgoedkeuren(cnt_key);
    }
    else
      // Het contract is tot het contract goedgekeurd. Verder goedkeuren hoeft niet.
      // Zetten van de contact status Actief(0).
      cnt.setcontractstatus(cnt_key, 0); // Zorgt ook voor tracking en daarmee notificatie.

    result.success = true;
  }
  else if (ingesloten[i].canGoedkeur5) // Kan ik dit contract volledig fiatteren en acfief maken?
  {
    sql = "UPDATE cnt_contract"
        + " SET cnt_contract_approved = " + ingesloten[i].kosten // Gefiatteerd boven bedrag van limiet5 voor het bedrag van de contractkosten.
        + "   , cnt_contract_teverzenden = 1"
        + " WHERE cnt_contract_key = " + cnt_key;
    oRs = Oracle.Execute(sql);

    // Zetten van de contact status Actief(0).
    cnt.setcontractstatus(cnt_key, 0); // Zorgt ook voor tracking en daarmee notificatie.
    result.success = true;
  }
}
Response.Write(JSON.stringify(result));
%>
<% ASPPAGE_END(); %> 
