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

     File:               fin_unreject.asp
     Description:        Unreject an invoice
                         Returns a confirmation message stating how many are actually handled
     Parameters:
         fin_key         fin_factuur_keys (required) format n or "n,n,...n" (!!!)
     Context:            Called by Ajax from e.g. fin_list.inc form
     Note:
*/ %>
<%
var JSON_Result = true;
%>

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

<%
protectRequest.validateToken();

/***** Get webform parameters *****/
var fin_key_arr = getFParamIntArray("fin_key");
/***** End get webform parameters *****/

var result = { };
var tobeunrejected = 0;
// Lijst van vervangers + user_key opvragen.
var prsKeys = user.collegakeylist(); // "user_key, vervangers"
var ingesloten = [];
// Bepaal de facturen in de selectie die
// ook echt gefiatteerd kunnen of mogen worden.
var sql = "SELECT fin_factuur_key"
        + "     , fin.getfiatteur(f.fin_factuur_key) kpverantwoordelijke"
        + " FROM fin_factuur f"
        + " WHERE fin_factuur_key IN (" + fin_key_arr.join(",") + ")"
        + " AND fin_factuur_verwijder IS NULL"
        + " AND fin_factuur_statuses_key = 1";
oRs = Oracle.Execute(sql);

var this_fin;
while (!oRs.eof)
{
  this_fin = fin.func_enabled_factuur(oRs("fin_factuur_key").value);
  if (this_fin.canUnReject)
  {
    ingesloten.push (oRs("fin_factuur_key").value);
    tobeunrejected++;
  }
  oRs.MoveNext();
}
oRs.Close();
user.anything_todo_or_abort(tobeunrejected > 0); // enkele wel en enkele niet klagen we niet over

// unreject invoice lines
sql = "UPDATE fin_factuur"
    + " SET fin_factuur_statuses_key = 2"
    + " WHERE fin_factuur_key IN (" + ingesloten.join(",") + ")"
    + " AND (mld_opdr_key IS NOT NULL OR cnt_contract_key IS NOT NULL OR bes_bestelopdr_key IS NOT NULL)";
Oracle.Execute(sql);

for (f = 0 ; f < ingesloten.length; f++)
{
  var fields = [ { dbs: "fin_factuur_opmerking_afw", typ: "varchar", val: "", track: L("lcl_fin_remark_reject"), len: 4000} ];

  var finUpd = buildTrackingUpdate("fin_factuur", "fin_factuur_key = " + ingesloten[f], fields);
  oRs = Oracle.Execute(finUpd.sql);
  if (finUpd.trackarray.length)
  {
    fin.trackfactuurupdate(ingesloten[f], L("lcl_fin_is_finupdtrack").format(ingesloten[f]) + "\n" + finUpd.trackarray.join("\n"));
  }

  shared.trackaction("FINFUN", ingesloten[f]);
}
result.success = true;

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