Files
Facilitor/APPL/FIN/fin_edit_factuur.asp
Erik Groener 43856e0a66 MARX#35873 Knop bij de factuurregels die de materiaalregels kopieert (overneemt)
svn path=/Website/trunk/; revision=30375
2016-08-22 11:28:12 +00:00

489 lines
24 KiB
Plaintext
Raw Blame History

<%@ LANGUAGE="JavaScript" %>
<% /*
$Revision$
$Id$
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/calendar.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="fin_flexkenmerk.inc" -->
<!-- #include file="fin.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../Shared/kostensoortselector.inc" -->
<!-- #include file="../Shared/resultset_table_v2.inc" -->
<!-- #include file="../Shared/persoonselector.inc" -->
<%
FCLTHeader.Requires({ plugins: ["suggest", "jQuery"],
js: ["date.js", "num2curr.js", "../FIN/fin_edit_factuur.js", "../FIN/fin.js"]
});
var fin_key = getQParamInt("fin_key", -1);
var copy = (getQParamInt("fin_copy", 0) == 1)
var referentie = getQParam("referentie", "");
var fin_copy_key = -1;
if (copy)
{
fin_copy_key = fin_key;
if (fin_copy_key == -1) Response.End;
fin_key = -1; // Bij kopieren wordt er een nieuwe factuur aangemaakt, waarbij de initiele waarden van de invoervelden de waarden van de te kopieren opdracht moeten zijn.
}
var this_fin = fin.func_enabled_factuur(fin_key); // Wat heb ik zoal aan rechten
// this_fin.canInvLinChange = false;
var fin_factuur; // Globale variabele met alle fin_factuur informatie
var ref_info = {}; // Globale variabele met alle referentie informatie
if (fin_key > 0)
{
user.auth_required_or_abort(this_fin.canWriteAny);
// func_enabled_factuur heeft deze al voor ons bepaald.
fin_factuur = this_fin.factuur_info;
ref_info = this_fin.referentieinfo;
}
else // nieuwe factuur. Defaults bepalen
{
user.auth_required_or_abort(this_fin.canFEwrite || this_fin.canFOwrite); // Alleen FE (als contactpersoon) of FO kan aanmaken.
if (copy)
{ // Haal de opdrachtgegevens op van de opdracht
fin_factuur = fin.factuur_info(fin_copy_key); // Globale variabele met alle fin_factuur informatie
fin_factuur.fin_status_key = 2;
fin_factuur.fin_status_oms = "";
fin_factuur.fin_bron_key = 0;
fin_factuur.fin_bron_oms = "";
// Factuurregels niet kopi<70>ren. Totaal en BTW zijn dan 0;
fin_factuur.fin_totaal = 0;
fin_factuur.fin_totaal_btw = 0;
this_fin.factuur_info = fin_factuur;
this_fin.copy = true;
}
else
{
var dt = new Date();
var fin_boekm = dt.getFullYear() + "-" + ((dt.getMonth() + 1) < 10? "0" + (dt.getMonth() + 1) : (dt.getMonth() + 1));
var fin_boekm_jaar = fin_boekm.substr(0,4);
fin_factuur = { fin_key: -1,
mld_key: null,
opdr_volgnr: "",
mld_prefix: "",
cnt_nr: null,
cnt_key: -1,
besopdr_key: null,
bes_volgnr: "",
fin_totaal: 0,
fin_totaal_btw: 0,
fin_gbedrag: 0,
perslid_key_user: user_key,
perslid_key_goedkeur: -1,
perslid_key_fiat: null,
fin_opm: "",
fin_status_key: 2,
fin_status_oms: "",
fin_bron_key: 0,
fin_bron_oms: "",
fin_perslid_user: user.naam(),
fin_perslid_goedkeur: "",
fin_date: new Date(),
fin_nr: "",
fin_boekm: fin_boekm,
fin_boekm_jaar: fin_boekm_jaar,
fin_debiteur: "",
fin_costsrt_key: -1,
fin_costsrt: "",
fin_costsrt_default: -1, // Is afhankelijk van het referentie type // TODO: opvragen
bes_id: "",
default_costsrt_selected: false, // ((fin_costsrt_key == fin_costsrt_default) && (fin_costsrt_key != null)), // TODO: opvragen
kostenplaats_naam: ""
}
if (referentie != "")
{
ref_info.referentie = referentie;
}
this_fin.factuur_info = fin_factuur;
}
}
var asContactpersoon = this_fin.canFEwrite && !this_fin.canFOwrite;
var refoms = L("lcl_fin_referentie");
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_fin_bestelopdracht");
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;
}
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 sql = "SELECT fin_btwtabelwaarde_perc"
+ " , fin_btwtabel_key"
+ " FROM fin_btwtabelwaarde"
+ " WHERE fin_btwtabelwaarde_key = " + S("fin_btw_default");
var oRs = Oracle.Execute(sql);
var fin_btwtabel_key = oRs("fin_btwtabel_key").value; // Standaard btw tabel key
%>
<html>
<head>
<%
FCLTHeader.Generate();
%>
<script type="text/javascript" >
var fin_key = <%=fin_key%>;
var fin_defaultboekmaand = <%=S("fin_defaultboekmaand")%>;
var fin_enable_kostensoort = <%=S("fin_enable_kostensoort")%>;
var fin_kostensoort_verplicht = <%=S("fin_kostensoort_verplicht")%>;
var asContactpersoon = <%=asContactpersoon? 1 : 0%> == 1;
var cnt_srttype_rental = <%=S("cnt_srttype_rental")%>;
jQuery(document).ready(function()
{
$("#referentienr").focus();
<% if (fin_key > 0 && S("fin_enable_kostensoort") != 0 && this_fin.canInvLinChange)
{ %>
// Overal suggest van maken
var rowIndex = parseInt($("#rowIndex").val());
for (var i=1; i <= rowIndex; i++)
{
var x = new Suggest({ objectName: "sgCostCentre" + i,
queryField: $("#fincostsrt" + i + "_show")[0],
queryUrl: "../shared/suggest/SuggestKostensoort.asp?a=1",
initKey: $("#fincostsrt" + i).val(),
keyField: $("#fincostsrt" + i)[0],
highlightDescript: true
});
window["sgCostCentre" + i] = x;
}
<% } %>
$("table#sel_items").on("focus", "input[type=text]", function (e)
{
var obj = e.currentTarget;
setTimeout(function() {obj.select();}, 0); // JGL: Zonder de timeout werkt mijn IE9 niet?
});
$("table#sel_items").on("blur", "input", function (e)
{
var obj = e.currentTarget;
if (obj.id.match(/^sum\d+/)) // voorkom dat sumBTW ook meegaat, die mag je toch niet wijzigen
SumChanged(obj);
});
$("table#sel_items").on("change", "select", function (e)
{
var obj = e.currentTarget;
if (obj.id.match(/^BTW/))
setPrice(obj);
});
$('textarea').autogrow();
FcltMgr.resized(window);
$('#reflink').addClass('details');
$('#lev_uit').addClass('details');
<% if (!ref_info.lev_opm)
{ %>
$("#tr_lev_opm").hide();
<% } %>
<% if (fin_key > 0)
{ %>
$('#reflink').click(function()
{
FcltMgr.openDetail("<%=refurl%>");
}
);
<% if (this_fin.canReqRelDetails)
{ %>
$('#lev_uit').click(function()
{
if ("<%=ref_info.lev_uit_type%>" == "B")
prslink = "appl/prs/prs_bedrijf.asp?bedrijf_key=<%=ref_info.lev_uit_key%>";
else
prslink = "appl/prs/prs_perslid.asp?prs_key=<%=ref_info.lev_uit_key%>";
FcltMgr.openDetail(prslink);
}
);
<% } %>
<% } %>
});
// Settings needed by fin_edit_factuur.js
var canReqRelDetails = (<%=this_fin.canReqRelDetails? 1 : 0%> == 1);
var bShowDiscipline = false;
var currency_pref = '<%=S("currency_pref")%>';
var currency_suff = '<%=S("currency_suff")%>';
var default_costsrt_selected = (<%=fin_factuur.default_costsrt_selected? 1 : 0%> == 1);
var fin_key = <%=fin_key%>;
var finboekm_jaar = '<%=safe.jsstring(fin_factuur.finboekm_jaar)%>';
var fin_btw_default = <%=S("fin_btw_default")%>;
var btwtabel = new Array();
var verlegdmode = <%=S("fin_factuur_verlegdmode")%>;
<% if (ref_info.btwtabel) // Is er een uitvoerende gedefinieeerd
{
serversidebtwtabel = ref_info.btwtabel;
}
else
{ // Kies default btwtabel m.b.v. setting S("fin_btw_default") als er geen referentie is geselecteerd (komt voor bij facturen die zijn geimporteerd)
serversidebtwtabel = fin.btwtabel_info(fin_btwtabel_key); // default tabel hadden we al
}
%>
var JSONdata = '(<%=safe.jsstring(JSON.stringify(serversidebtwtabel))%>)';
window.btwtabel = eval('(' + JSONdata + ')');
window.btwtabel_key = <%= ref_info.btwtabel_key? ref_info.btwtabel_key : fin_btwtabel_key %>;
var fin_materiaal;
</script>
</head>
<body id="editbody">
<% var buttons = [{ title: L("lcl_submit"), icon: "opslaan.png", action:"fin_submit()", singlepress: true, id: "btn_fin_submit" },
{ title: L("lcl_cancel"), icon: "undo.png", action:"fin_cancel()" }];
IFRAMER_HEADER(L("lcl_fin_frame_algemeen"), buttons);
%>
<div id="edit">
<form id="u2" name="u2" action="fin_edit_factuur_save.asp" method="post" onSubmit="fin_submit();">
<input type="hidden" name="fin_key" id="fin_key" value="<%=fin_key%>">
<input type="hidden" id="fin_type" name="fin_type" value="<%=fin_key > 0 && ref_info.ref_type? ref_info.ref_type : ""%>">
<input type="hidden" id="fin_status_key" name="fin_status_key" value="<%=fin_factuur.fin_status_key%>">
<input type="hidden" id="loc_code" name="loc_code" value="<%=ref_info.loc_code? ref_info.loc_code : ""%>">
<input type="hidden" name="copyfin_key" value="<%=copy? fin_copy_key : '-1'%>">
<input type="hidden" id="referentienr_old" name="referentienr_old" value="<%=fin_key > 0 && ref_info? ref_info.referentie : ""%>">
<% BLOCK_START("finInfo", (fin_key > 0? L("lcl_fin_info") + " " + fin_key : L("lcl_fin_new_invoice")));
// Referentie
RWFIELDTR("referentienr",
"fldreferentie",
L("lcl_fin_referentie"),
(ref_info? ref_info.referentie : ""),
{ readonly: !this_fin.canChange,
required: true,
html: ' onChange="clearRefDetails();referenceChanged(true);"'
});
// Factuur datum
FCLTcalendar( "calendar",
{ label : L("lcl_fin_findate"),
datum: fin_factuur.fin_date,
readonly: !this_fin.canDateChange,
required: true
});
// Extern factuur nummer
var events = (!this_fin.canChange
? ''
: 'onKeyPress="clearExtInvDetails();"')
+ ' onChange="clearExtInvDetails();referenceChanged();"';
RWFIELDTR("finnr",
"fldfinnum",
L("lcl_fin_invoice_nr_extern"),
(fin_factuur? fin_factuur.fin_nr : ""),
{ readonly: !this_fin.canChange,
required: true,
maxlength: 30,
html: events
}
);
// Verdeelperiode
events = ' onKeyPress="kenmerkDividePeriodKey(event);"'
+ ' onPropertyChange="kenmerkDividePeriodChange(event);"'
+ ' onChange="devidePeriodChanged();"'
+ ' onBlur="checkDP(true);"';
RWFIELDTR("finboekm",
"fldfinboekm",
L("lcl_fin_divide_period"),
fin_factuur.fin_boekm,
{ readonly: !this_fin.canChange,
html: events
});
// Eigen debiteurnummer
RWFIELDTR("findebtor",
"flddebtor",
L("lcl_fin_debtor_nr"),
fin_factuur.fin_debiteur,
{ readonly: !this_fin.canChange, maxlength: 30 });
// Kostensoort
// (S("fin_enable_kostensoort"), S("fin_kostensoort_verplicht"))
// (0, 0) = don't show, don't check, kostensoort isn't that important
// (0, 1) = don't show, check for findable kostensoort & store that value, else fail
// (1, 0) = editable, may be left empty
// (1, 1) = editable, required
if (S("fin_enable_kostensoort") == 0)
{ // Kostensoort niet tonen.
// Indien S("fin_kostensoort_verplicht") == 1 dan bij invullen controleren of er een kostensoort (automatisch) is ingevuld (FcltGetRefInfoCallback)
// Niet in beeld in edit-mode maar wel opslaan via FcltGetRefInfoCallback!
%> <input type="hidden" name="fincostsrt" id="fincostsrt" value="<%=fin_factuur.fin_costsrt_key%>"><%
}
else if (this_fin.canChange)
{ // Kostensoort editable
FCLTkostensoortselector("fincostsrt",
"sgCostCentre",
{ kostensoortKey: fin_factuur.fin_costsrt_key,
label: L("lcl_shared_charge_type"),
whenEmpty: "",
readonly: !this_fin.canChange,
required: S("fin_kostensoort_verplicht") == 1
});
}
// Na de FCLTkostensoortselector anders is het object sgCostCentre nog niet aanwezig.
%> <script type="text/javascript" >
jQuery(document).ready(function()
{
<% if (referentie != "")
{ %>
referenceChanged(true);
<% } %>
});
</script>
<%
FCLTpersoonselector("goedkeurder",
"sgGoedkeurder",
{ perslidKey: fin_factuur.perslid_key_goedkeur,
label: L("lcl_fin_goedkeurder"),
readonly: !this_fin.canChange,
filtercode: "FING" // Goedkeurder.
});
ROFIELDTR("fld", L("lcl_shared_created_by"), fin_factuur.fin_perslid_user); // Aangemaakt door
ROFIELDTR("fld", L("lcl_fin_invoice") + " " + L("lcl_fin_fin_status"), fin_factuur.fin_status_oms); // Factuur status
ROFIELDTR("fld", L("lcl_fin_invoice_source"), fin_factuur.fin_bron_oms, {suppressEmpty: true});
// Opmerking
RWTEXTAREATR("remark",
"fldremark",
L("lcl_fin_remark"),
(fin_key != -1 || fin_copy_key > 0? fin_factuur.fin_opm : ""),
{html: (!this_fin.canRemarkChange? " readonly" : "")});
BLOCK_END();
BLOCK_START("finRefInfo", L("lcl_fin_referentie_info"));
// Met de class details wordt aangeven dat het een onclick event is. Het onclick event wordt in jQuery(document).ready() gedefinieerd voor reflink
// Dit gebeurt niet m.b.v. de params.infoPointer omdat de waarde veranderd als de referentie wordt aangepast
RWFIELDTR("reflink", "fld", refoms, reftitle, { readonly: true }); // Melding
// Opdrachttype. Alleen als ref_type is "O" (opdrachten)
%> <tr id="tr_refopdrtype" <%=(ref_info.ref_type == 'O') ? "" : "style='display:none'"%>>
<td class="label"><label><%=L("lcl_mld_typeopdr")%>:</label></td>
<td>
<input class="fld" id="refopdrtype" readonly value="<%=(ref_info.ref_type == 'O'? safe.htmlattr(ref_info.typeopdr_omschr) : '')%>">
</td>
</tr>
<% // Opdrachtid. Alleen als ref_type is "O" (opdrachten)
%> <tr id="tr_opdr_id" <%=(ref_info.ref_type == 'O') ? "" : "style='display:none'"%>>
<td class="label"><label><%=L("lcl_opdr_id")%>:</label></td>
<td><div class="fld readonly" id="opdr_id"><%=ref_info.opdr_id && ref_info.opdr_id? safe.html(ref_info.opdr_id) : ""%></div></td>
</tr>
<% RWFIELDTR("lev_uit", "fld", L("lcl_cnt_contractant"), (ref_info.lev_uit? ref_info.lev_uit : ""), { readonly: true }); // Leverancier/Uitvoerder
%> <input type="hidden" name="lev_uit_key" id="lev_uit_key" value="<%=ref_info.lev_uit_key? ref_info.lev_uit_key : ""%>"><%
RWFIELDTR("lev_typ", "fld", L("lcl_prs_relatietype"), (ref_info.reltype_oms? ref_info.reltype_oms : ""), {readonly: true}); // Relatietype leverancier.
RWFIELDTR("lev_opm", "fldremark", L("lcl_prs_company_remark"), ref_info.lev_opm? safe.html(ref_info.lev_opm) : "", { trid: "tr_lev_opm", readonly: 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);
}
// Note: ik zou dolgraag overal suppressEmpty doen, maar dan ben je ook de placeholder kwijt die nodig is bij wijzigen referentie > niet mogelijk
// TODO: hier graag vermelden of het incl of excl BTW is
var totkosten = (ref_info.totbedrag? ref_info.totbedrag : "");
var showkosten = (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;
}
RWFIELDTR("totbedrag", "fldtotkosten" + ((matchresult & 2) != 2? " nomatch" : ""), L("lcl_fin_CO_sum"), (showkosten? S("currency_pref") + safe.curr(totkosten) + S("currency_suff") : ""), { readonly: true }); // Contract/Opdrachtbedrag
RWFIELDTR("termbedrag", "fldtermkosten" + ((matchresult & 1) != 1? " nomatch" : ""), L("lcl_cnt_period_sum"), (ref_info.termbedrag? S("currency_pref") + safe.curr(ref_info.termbedrag) + S("currency_suff") : ""), { readonly: true }); // Contracttermijnbedrag
RWFIELDTR("status", "fld", L("lcl_status"), (ref_info.status? ref_info.status : ""), { readonly: true }); // Status
RWFIELDTR("kostenplaats_naam", "fld", L("lcl_shared_account"), (ref_info.kostenplaats_naam? ref_info.kostenplaats_naam : ""), { readonly: true }); // kostenplaats nr+omschr
RWFIELDTR("startdate", "flddate", L("lcl_fin_start_date"), (ref_info.startdatum? ref_info.startdatum : ""), { readonly: true });
RWFIELDTR("enddate", "flddate", L("lcl_fin_end_date"), (ref_info.einddatum? ref_info.einddatum : ""), { readonly: true });
RWFIELDTR("gefactureerd", "fldfinsom", L("lcl_fin_invoiced"), (ref_info.gefactureerd? S("currency_pref") + safe.curr(ref_info.gefactureerd) + S("currency_suff") : ""), { readonly: true }); // Reeds gefactureerd (ex.BTW)
RWFIELDTR("gefactureerd_jaar", "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") : ""), { readonly: true }); // Reeds gefactureerd (ex.BTW) over 2009
// Opdracht omschrijving. Alleen als ref_type is "M" (melding opdrachten)
// De opdracht omschrijving niet in een <textarea> omdat dit veld bij contact en bestelling referenties niet zichtbaar is
// en bij wisselen van referenties wel gevuld kan worden
// Dit omdat de functie $('textarea').autogrow() dan de foutmelding "Invalid argument." geeft. (standaard jquery component)
%> <tr id="tr_opdr_omschr" <%=ref_info.show_omschr? "" : "style='display:none'"%>>
<td class="label"><label><%=L("lcl_descr")%>:</label></td>
<td><div class="fldremark readonly" id="opdr_omschr"><%=ref_info.show_omschr && ref_info.opdr_omschr? safe.html(ref_info.opdr_omschr) : ""%></div></td>
</tr>
<% // 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 readonly" id="loc_omschr"><%=safe.html(loc_geg_string.join(",\n"))%></div></td>
</tr>
<%
BLOCK_END();
BLOCK_START("finInvPartInfo", L("lcl_fin_deelfactuurgeg"));
// Aantal facturen met dezelfde factuurnummer
RWFIELDTR("fincnt", "fldfincnt", L("lcl_fin_aantal_facturen"), (ref_info.aantalfacturen? ref_info.aantalfacturen : "0"), { readonly: true }); // Aantal facturen met dezelfde factuurnummer
// Totaal bedrag van het aantal facturen met dezelfde factuurnummer
RWFIELDTR("finsom", "fldfinsom", L("lcl_fin_totaal_bedrag"), S("currency_pref") + safe.curr(ref_info.totaalbedrag? ref_info.totaalbedrag : "0") + S("currency_suff"), { readonly: true }); // Totaal bedrag van het aantal facturen met dezelfde factuurnummer
RWFIELDTR("finsominc", "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"), {readonly:true}); // Totaal bedrag van het aantal facturen met dezelfde factuurnummer
if (S("fin_factuur_verlegdmode") & 1 == 1)
RWFIELDTR("fingbedrag", "fldfinsom", L("lcl_fin_gbedrag"), (fin_factuur.fin_gbedrag? fin_factuur.fin_gbedrag : "0") );
BLOCK_END();
BLOCK_START("finFlex"+(S("fin_flexcolumns")!=1?"2":""), L("lcl_mld_flexblok"));
generateFlexKenmerkCode ({ fin_key: (copy? fin_copy_key : fin_key), // Factuurnummer
copy: copy,
reado : !this_fin.canChange,
flexcolumns: S("fin_flexcolumns"),
kenmerk_niveau: "F"
});
BLOCK_END();
BLOCK_START("finItems", L("lcl_fin_invoicerows"));
// Regelkenmerken tonen
if (!this_fin.canInvLinChange)
fin.showReadableFINregels();
else
fin.showEditableFINregels(this_fin, serversidebtwtabel);
BLOCK_END();
IFACE.FORM_END();
%>
</form>
</div>
</body>
</html>