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

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="fin_flexkenmerk.inc" -->
<!-- #include file="fin.inc" -->
<!-- #include file="../Shared/resultset_table_v2.inc" -->

<%
FCLTHeader.Requires({ plugins: ["suggest", "jQuery"],
                      js: ["date.js", "num2curr.js", "../FIN/fin_show_factuur.js", "../FIN/fin.js"]
                    });

var fin_key = getQParamInt("fin_key");

var this_fin = fin.func_enabled_factuur(fin_key); // Wat heb ik zoal aan rechten
var fin_factuur = this_fin.factuur_info;
var ref_info = this_fin.referentieinfo;

var hasFOBOread = this_fin.canFOread || this_fin.canBOread;
user.auth_required_or_abort(this_fin.canReadAny);

// Haal de referentie gegevens op
var subjectMail = L("lcl_fin_invoice") + " " + fin_key;
var urlMail = "../shared/queuemail.asp?pcode=FINMAI&defemail_key=-1&key=" + fin_key
            + "&subject=" + Server.URLencode(subjectMail)
            + "&mailfrom=" + (hasFOBOread? 1 : 0);
%>

<html>
  <head>
<%
    FCLTHeader.Generate();
%>
    <script  type="text/javascript" >
      var fin_key = <%=fin_key%>;

      jQuery(document).ready(function()
                             {
                               FcltMgr.setTitle(L("lcl_fin_invoice") + " " + <%=fin_key%>, {hot:false});
                             });

      function fin_mail()
      {
        var subject = "<%=safe.jsstring(subjectMail)%>";
        var url = "<%=safe.jsstring(protectQS.create(urlMail))%>";
        FcltMgr.openModalDetail(url, L("lcl_fin_noti_fin_email"), { callback: finMailCallback });
      }

    </script>
  </head>

  <body id="showbody">
<%
    var refoms
    var refurl = "";
    var reftitle = "";
    if (ref_info.ref_type == "O")
    {
      refoms = L("lcl_shared_order");
      refurl = "appl/mld/mld_opdr.asp?urole=fo&opdr_key=" + fin_factuur.mldopdr_key;
      reftitle = (fin_factuur.mld_prefix != null? fin_factuur.mld_prefix : "") + fin_factuur.mld_key + "/" + fin_factuur.opdr_volgnr;
    }
    else if (ref_info.ref_type == "B")
    {
      refoms = L("lcl_bes_bestelling");
      refurl = "appl/bes/bes_opdr.asp?urole=fo&ordernr=" + fin_factuur.besopdr_key;
      reftitle = S("bes_bestelling_prefix") + fin_factuur.bes_key + (fin_factuur.bes_volgnr? "/" + fin_factuur.bes_volgnr : "");
    }
    else if (ref_info.ref_type == "C")
    {
      refoms = L("lcl_contract");
      refurl = "appl/cnt/cnt_contract.asp?urole=fo&cnt_key=" + fin_factuur.cnt_key;
      reftitle = "C" + fin_factuur.cnt_nr +(fin_factuur.cnt_versie ? "." + fin_factuur.cnt_versie : "");
    }
    var referentiegegevens = fin.analysereferentie(reftitle);

    var buttons = [];
    if (fin_factuur.fin_verwijder == null) // Anders mag je niets meer
    {
      if (this_fin.canChange)
        buttons.push({title: L("lcl_change"),  icon: "wijzigen.png", action:"fin_change("+fin_factuur.fin_status_key+")" });

      if (this_fin.canAccept || this_fin.canGoedkeur)
      {
        if (this_fin.canAccept)
          buttons.push({title: L("lcl_approve"),  icon: "accept.png",  action:"fin_approve()"});
        else
          buttons.push({title: L("lcl_goedkeur"),  icon: "accept.png",  action:"fin_goedkeuren()"});
        if (S("fin_enable_afwijzen") == 1)
          buttons.push({title: L("lcl_reject"),  icon: "reject.png",  action:"fin_reject()"});
      }
      if (this_fin.canUnapprove)
        buttons.push({title: L("lcl_unapprove"),  icon: "terugzet.png",  action:"fin_unapprove()"});
      if (this_fin.canUnReject)
        buttons.push({title: L("lcl_unreject"),  icon: "terugzet.png",  action:"fin_unreject()"});
      if (this_fin.canDelete)
        buttons.push({title: L("lcl_delete"),  icon: "delete.png",  action:"fin_delete()"});

      if (this_fin.canWrite("WEB_FINFOF"))
          buttons.push({title: L("lcl_fin_copy"),  icon: "copy.png", action:"fin_copy()" });
      buttons.push({ icon: "print.png", title: L("lcl_print"),          action: 'fin_print()' });
      buttons.push({ icon: "email.png", title: L("lcl_noti_fin_email"), action: 'fin_mail()' });
    }

    IFRAMER_HEADER(L("lcl_fin_frame_algemeen"), buttons);
%>
    <div id="show">
<%    if (fin_factuur.fin_verwijder != null)
      { %>
        <div class="fatal"><%=L("lcl_fin_is_deleted")%></div>
<%    } %>
    <div id="show">
      <form name="u2" onSubmit="return false;">
<%
        BLOCK_START("finInfo", L("lcl_fin_info") + " " + fin_key);
          ROFIELDTR("fld", L("lcl_fin_referentie"), ref_info.referentie); // Referentie
          ROFIELDTR("flddate", L("lcl_fin_findate"), toDateString(fin_factuur.fin_date)); // Factuur datum
          ROFIELDTR("fld", L("lcl_fin_invoice_nr_extern"), fin_factuur.fin_nr != null? fin_factuur.fin_nr : ""); // Extern factuur nummer
          ROFIELDTR("fldshort", L("lcl_fin_divide_period"), fin_factuur.fin_boekm != null? fin_factuur.fin_boekm : ""); // Verdeelperiode
          ROFIELDTR("fld", "<nobr>" + L("lcl_fin_debtor_nr") + "</nobr>", fin_factuur.fin_debiteur, {suppressEmpty: true}); // Eigen debiteurnummer
          ROFIELDTR("fld", L("lcl_shared_charge_type"), fin_factuur.fin_costsrt); // Kostensoort
          ROFIELDTR("fld", L("lcl_fin_goedkeurder"), fin_factuur.fin_perslid_goedkeur, {suppressEmpty: true}); // Goedkeurder.
          //ROFIELDTR("fld", L("lcl_shared_created_by"), fin_factuur.fin_perslid_user); // Aangemaakt door
          var params = { infoPointer: { Url: "appl/shared/status_info.asp?fin_key=" + fin_key + "&urole=fo", // fixed urole
                                Title: L("lcl_status_details") + " " + fin_key
                              }
               }
          ROFIELDTR("fld", L("lcl_fin_invoice") + " " + L("lcl_fin_fin_status"), fin_factuur.fin_status_oms, params); // Factuur status
          ROTEXTAREATR("fldremark", L("lcl_fin_remark"), (fin_key != -1? fin_factuur.fin_opm : ""), {suppressEmpty: true});
        BLOCK_END();

        BLOCK_START("finRefInfo", L("lcl_fin_referentie_info"));
          // Details was alleen te zien als (FINBOF_write && status == 2)
          var params = { infoPointer: { Url: refurl,
                                        Title: reftitle
                                      }
                       };
          ROFIELDTR("fld", refoms, reftitle, params); // Melding
          if (ref_info.ref_type == "O")
            ROFIELDTR("fld", L("lcl_mld_typeopdr"), ref_info.typeopdr_omschr); // Opdrachttype melding
          params = {};
          if (this_fin.canReqRelDetails)
          {
            if (ref_info.lev_uit_type == "B")
              prslink = "appl/prs/prs_bedrijf.asp?bedrijf_key=" + ref_info.lev_uit_key;
            else if (ref_info.lev_uit_type == "A")
              prslink = "appl/prs/prs_afdeling.asp?key=" + ref_info.lev_uit_key;
            else
              prslink = "appl/prs/prs_perslid.asp?prs_key=" + ref_info.lev_uit_key;
            params = { infoPointer: { Url: prslink,
                                      Title: ref_info.lev_uit
                                    }
                     };
          }
          switch (ref_info.lev_uit_type)
          {
              case "A": { var label_levuit = L("lcl_department"); break; }
              case "P": { var label_levuit = L("lcl_name"); break; }
              case "B":
              default:  { var label_levuit = L("lcl_company"); break; }
          }
          ROFIELDTR("fld", label_levuit, (ref_info.lev_uit? ref_info.lev_uit : ""), params); // Leverancier/Uitvoerder
          ROFIELDTR("fld", L("lcl_prs_relatietype"), (ref_info.reltype_oms? ref_info.reltype_oms : ""), {suppressEmpty: true}); // Relatietype leverancier.
          ROFIELDTR("fld", L("lcl_prs_company_remark"), (ref_info.lev_opm? ref_info.lev_opm : ""), {suppressEmpty: true}); // Opmerking leverancier.

          // Return waarde fin.getnomatchreasoncontract():
          // 00 (0): No match
          // 01 (1): Termijn kosten matchen
          // 10 (2): Totaal kosten matchen
          // 11 (3): Termijn kosten en totaal kosten matchen
          var matchresult = 3; // Standaard geen class nomatch
          if (ref_info.ref_type == "C" && fin_factuur.fin_status_key == 2)
          {
            matchresult = fin.getnomatchreasoncontract(ref_info, fin_factuur.totaalgefactureerd, fin_factuur.fin_totaal);
          }
          // TODO: hier graag vermelden of het incl of excl BTW is
          var totkosten = (ref_info.totbedrag? ref_info.totbedrag : "");
          var showkosten = ref_info && (ref_info.totbedrag || ref_info.levkosten || ref_info.korting);
          if (ref_info.ref_type=="B")
          {   // levkosten en korting bestaan alleen voor ref_type=B
              totkosten += ref_info.levkosten - ref_info.korting;
          }
          ROFIELDTR("fldtotkosten" + ((matchresult & 2) != 2? " nomatch" : ""), L("lcl_fin_CO_sum"), (showkosten? S("currency_pref") + safe.curr(totkosten) + S("currency_suff") : ""), {suppressEmpty: true}); // Contract/Opdrachtbedrag
          if (ref_info.ref_type == "C")
          ROFIELDTR("fldtermkosten" + ((matchresult & 1) != 1? " nomatch" : ""), L("lcl_cnt_period_sum"), (ref_info.termbedrag? S("currency_pref") + safe.curr(ref_info.termbedrag) + S("currency_suff") : ""), {suppressEmpty: true}); // Contracttermijnbedrag
          ROFIELDTR("fld", L("lcl_status"), (ref_info.status? ref_info.status : ""),{suppressEmpty: true}); // Status
          ROFIELDTR("fld", L("lcl_shared_account"), ( ref_info.kostenplaats_naam ), { id: "kostenplaats_naam", suppressEmpty: true}); // kostenplaats nr+omschr

          ROFIELDTR("flddate", L("lcl_fin_start_date"), (ref_info.startdatum? ref_info.startdatum : ""), { id: "startdate" });
          ROFIELDTR("flddate", L("lcl_fin_end_date"), (ref_info.einddatum? ref_info.einddatum : ""), { id: "enddate", suppressEmpty:true });
          ROFIELDTR("fldfinsom", L("lcl_fin_invoiced"), (ref_info.gefactureerd? S("currency_pref") + safe.curr(ref_info.gefactureerd) + S("currency_suff") : ""), {datatype: "currency", suppressEmpty:true}); // Reeds gefactureerd (ex.BTW)

          ROFIELDTR("fldfinsom", L("lcl_fin_invoiced_year") + fin_factuur.fin_boekm_jaar, (ref_info.gefactureerd_jaar? S("currency_pref") + safe.curr(ref_info.gefactureerd_jaar) + S("currency_suff") : ""), {suppressEmpty:true}); // Reeds gefactureerd (ex.BTW) over 2009

          // Opdracht omschrijving. Alleen als ref_type is "M" (melding opdrachten)
          if (ref_info.show_omschr)
          {
            ROTEXTAREATR("fldremark", L("lcl_descr"), ref_info.opdr_omschr, {suppressEmpty: true});
          }

          // Locatie gegevens. Alleen als ref_type is "C" (contracten)
          var loc_geg_string = [];
          if (ref_info.loc_geg && ref_info.loc_geg.length > 0)
          {
            for (i = 0; i < ref_info.loc_geg.length; i++)
            {
              loc_geg_string.push(ref_info.loc_geg[i].loc_desc);
            }
          } %>
          <tr id="tr_loc_omschr" style="display: <%=(ref_info.loc_geg && ref_info.loc_geg.length > 0)? "block" : "none"%>">
            <td class="label"><label><%=L("lcl_location")%>:</label></td>
            <td><div class="fldtxt" id="loc_omschr"><%=safe.html(loc_geg_string.join(",\n"))%></div></td>
          </tr>
  <%
        BLOCK_END();

        if (ref_info.aantalfacturen && ref_info.aantalfacturen > 0)
        {
          BLOCK_START("finInvPartInfo", L("lcl_fin_deelfactuurgeg"));
          // Aantal facturen met dezelfde factuurnummer
          ROFIELDTR("fldfincnt", L("lcl_fin_aantal_facturen"), (ref_info.aantalfacturen? ref_info.aantalfacturen : "0")); // Aantal facturen met dezelfde factuurnummer
          // Totaal bedrag van het aantal facturen met dezelfde factuurnummer
          ROFIELDTR("fldfinsom", L("lcl_fin_totaal_bedrag"), S("currency_pref") + safe.curr(ref_info.totaalbedrag? ref_info.totaalbedrag : "0") + S("currency_suff")); // Totaal bedrag van het aantal facturen met dezelfde factuurnummer
          // Totaal bedrag inclusief BTW van het aantal facturen met dezelfde factuurnummer
          ROFIELDTR("fldfinsom", L("lcl_fin_totaal_bedrag_btw"), S("currency_pref") + safe.curr(ref_info.totaalbedrag? (ref_info.totaalbedrag  + ref_info.totaalbtwbedrag) : "0") + S("currency_suff")); // Totaal bedrag inclusief BTW van het aantal facturen met dezelfde factuurnummer
          BLOCK_END();
        }

        BLOCK_START("finFlex"+(S("fin_flexcolumns")!=1?"2":""), L("lcl_mld_flexblok"));
            generateFlexKenmerkCode ({ fin_key: fin_key, // Factuurnummer
                                       reado  : true,
                                       flexcolumns: S("fin_flexcolumns"),
                                       kenmerk_niveau: "F"
                                     });
        BLOCK_END();

        BLOCK_START("finItems", L("lcl_fin_invoicerows"));
            fin.showReadableFINregels(); // de factuur regels
        BLOCK_END();
%>
      </form>
    </div>
  </body>
</html>
