PCHD#27790: Uitbreiding factuurscherm (flexkenmerken).
svn path=/Website/trunk/; revision=19711
This commit is contained in:
195
APPL/FIN/fin.inc
195
APPL/FIN/fin.inc
@@ -62,6 +62,7 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
|
||||
var fresult = user.func_enabled2("FIN", { alg_key: alg_key, loc_key: loc_key, prs_key: user_key,
|
||||
isOptional: kpverantwoordelijke == user_key }); // optional als ik hier budgethouder
|
||||
|
||||
fresult.fin_key = pfin_key;
|
||||
if (pfin_key > 0)
|
||||
{
|
||||
fresult.factuur_info = fin_factuur;
|
||||
@@ -1040,34 +1041,82 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
|
||||
return statustekst;
|
||||
},
|
||||
|
||||
deleteFactuurregel:
|
||||
function _deleteFactuurregel(pFinregel_key)
|
||||
{
|
||||
var lmessage;
|
||||
// Eerst de kenmerken van de regel verwijderen.
|
||||
sql = "DELETE FROM fin_kenmerkfactregel"
|
||||
+ " WHERE fin_factuurregel_key = " + pFinregel_key;
|
||||
oRs = Oracle.Execute(sql);
|
||||
|
||||
// Gooi de factuurregel weg.
|
||||
sql = "SELECT fr.fin_factuurregel_key"
|
||||
+ " FROM fin_factuurregel fr"
|
||||
+ " WHERE fr.fin_factuurregel_key = " + pFinregel_key;
|
||||
oRs = Oracle.Execute(sql);
|
||||
// Extra controle tbv nogmaals deleten van een zojuist gedelete.
|
||||
if (!oRs.eof)
|
||||
{ // Verwijderen factuurregel.
|
||||
sql = "DELETE FROM fin_factuurregel"
|
||||
+ " WHERE fin_factuurregel_key = " + pFinregel_key;
|
||||
Oracle.Execute(sql);
|
||||
}
|
||||
else
|
||||
lmessage = L("lcl_bez_already_deleted");
|
||||
return lmessage;
|
||||
},
|
||||
|
||||
CreateEditRow: function _CreateEditRow(rowIndex, params) // als je hieronder iets aanpast controleer dan ook fin_edit_factuur.js/AddItem
|
||||
{ // Let op: er staan geen individuele events op de velden, die worden in fin_edit_factuur/ $.ready
|
||||
// op de de hele tabel gezet
|
||||
var html = ["\n<tr>"]; // hierin opbouwen
|
||||
var html = ["\n<tr id='trfin" + rowIndex + "' class='" + (rowIndex & 1? "O " : "E ") + "' ROWKEY='" + params.regel_key + "'>"]; // hierin opbouwen
|
||||
|
||||
// Zijn er kenmerken bij deze factuur regels. Per factuurregel zijn de kenmerken hetzelfde.
|
||||
var sql = "SELECT k.fin_kenmerk_key kenmerk_key"
|
||||
+ " FROM fin_factuurregel fr"
|
||||
+ " , fin_kenmerkfactregel kfr"
|
||||
+ " , fin_kenmerk k"
|
||||
+ " WHERE fr.fin_factuurregel_key = kfr.fin_factuurregel_key"
|
||||
+ " AND kfr.fin_kenmerk_key = k.fin_kenmerk_key"
|
||||
+ " AND fr.fin_factuur_key = " + params.fin_key
|
||||
+ " AND k.fin_kenmerk_verwijder IS NULL"
|
||||
+ " AND k.fin_kenmerk_type LIKE 'R'"
|
||||
oRs = Oracle.Execute(sql);
|
||||
|
||||
if (!oRs.eof) // Alleen tonen indien er flexkenmerken zijn.
|
||||
{
|
||||
// Create flexkenmerk button
|
||||
html.push('<td class="inlinedetails closed" title="' + L("lcl_fin_regel_kenmerken") + '" onclick="return showInlineDetails(this, \'inlinePropertiesUrl\')">'
|
||||
+ '<img src="../Pictures/attach.png" style="cursor: pointer;">'
|
||||
+ '</td>');
|
||||
}
|
||||
oRs.Close();
|
||||
|
||||
// Create drop button
|
||||
html.push("<td><img src='../Pictures/order_cancel.gif' OnClick='DeleteOrderLine(this)' style='cursor:pointer'></td>");
|
||||
html.push("<td><img src='../Pictures/order_cancel.gif' OnClick='DeleteOrderLine(" + rowIndex + ")' style='cursor:pointer'></td>");
|
||||
|
||||
// Create description field
|
||||
html.push("<td><input type='text' class='fld'"
|
||||
+ " id='descript" + rowIndex + "' name='descript" + rowIndex + "' maxlength='50' value='" + safe.htmlattr(params.descr) + "'></td>");
|
||||
html.push("<td>"
|
||||
+ "<input type='text' class='fld' id='descript" + rowIndex + "' name='descript" + rowIndex + "' maxlength='60' value='" + safe.htmlattr(params.descr) + "'>"
|
||||
+ "</td>");
|
||||
|
||||
// Create reference field
|
||||
html.push("<td><input type='text' class='fldfinref'"
|
||||
+ " id='ref" + rowIndex + "' name='ref" + rowIndex + "' maxlength='30' value='" + safe.htmlattr(params.ref) + "'></td>");
|
||||
+ " id='ref" + rowIndex + "' name='ref" + rowIndex + "' maxlength='30' value='" + safe.htmlattr(params.ref) + "'></td>");
|
||||
|
||||
if (S("fin_enable_kostensoort") != 0)
|
||||
{ // Create kostensoort field
|
||||
// In fin_edit_factuur.asp wordt er clientside een suggest van gemaakt
|
||||
html.push("<td>"
|
||||
+ "<input id='fincostsrt" + rowIndex + "_show' class='fldcontactpers' value='" + safe.htmlattr(params.ksrt_oms) + "'>"
|
||||
+ "<input type='hidden' id='fincostsrt" + rowIndex + "' name='fincostsrt" + rowIndex + "' value='" + (params.ksrt_key||-1) + "'>"
|
||||
+ "</td>");
|
||||
+ "<input id='fincostsrt" + rowIndex + "_show' class='fldcontactpers' value='" + safe.htmlattr(params.ksrt_oms) + "'>"
|
||||
+ "<input type='hidden' id='fincostsrt" + rowIndex + "' name='fincostsrt" + rowIndex + "' value='" + (params.ksrt_key||-1) + "'>"
|
||||
+ "</td>");
|
||||
}
|
||||
|
||||
// Create sum field
|
||||
html.push("<td align='right'><input type='text' class='fldfinbedrag'"
|
||||
+ " id='sum" + rowIndex + "' name='sum" + rowIndex + "' maxlength=10 value='" + safe.curreditable(params.sum) + "'></td>");
|
||||
+ " id='sum" + rowIndex + "' name='sum" + rowIndex + "' maxlength='10' value='" + safe.curreditable(params.sum) + "'></td>");
|
||||
|
||||
// Create BTW field
|
||||
var thisBTW = {};
|
||||
@@ -1085,10 +1134,12 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
|
||||
htmlText += "</select>";
|
||||
html.push("<td align='right'>" + htmlText + "</td>");
|
||||
|
||||
// Sum incl. tax
|
||||
// Sum incl. tax + hidden regel_key input veld.
|
||||
html.push("<td align='right'>"
|
||||
+ "<input type='text' class='fldfinbedrag' readonly='1' id='sumBTW" + rowIndex + "' "
|
||||
+ "value='" + S("currency_pref") + safe.curreditable(params.sumBTW) + "'>");
|
||||
+ "<input type='text' class='fldfinbedrag' readonly='1' id='sumBTW" + rowIndex + "' "
|
||||
+ "value='" + S("currency_pref") + safe.curreditable(params.sumBTW) + "'>"
|
||||
+ '<input type="hidden" id="regel_key' + rowIndex + '" name="regel_key' + rowIndex + '" value="' + params.regel_key + '">'
|
||||
+ "</td>");
|
||||
|
||||
html.push("</tr>");
|
||||
Response.Write(html.join(""));
|
||||
@@ -1113,6 +1164,13 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
|
||||
+ " FROM fin_btwtabelwaarde btw"
|
||||
+ " WHERE btw.fin_btwtabelwaarde_key = fr.fin_btwtabelwaarde_key"
|
||||
+ " AND fin_btwtabelwaarde_verwijder IS NULL) verlegd"
|
||||
+ " , (SELECT COUNT(f.fin_kenmerk_key)"
|
||||
+ " FROM fin_kenmerkfactregel f"
|
||||
+ " , fin_kenmerk k"
|
||||
+ " WHERE k.fin_kenmerk_key = f.fin_kenmerk_key"
|
||||
+ " AND f.fin_kenmerkfactregel_verwijder IS NULL"
|
||||
+ " AND k.fin_kenmerk_type = 'R'"
|
||||
+ " AND f.fin_factuurregel_key = fr.fin_factuurregel_key) aantalkenmerken"
|
||||
+ " FROM fin_factuurregel fr"
|
||||
+ " , prs_kostensoort ks"
|
||||
+ " WHERE fr.prs_kostensoort_key = ks.prs_kostensoort_key(+)"
|
||||
@@ -1120,36 +1178,93 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
|
||||
+ " ORDER BY fr.fin_factuurregel_nr ";
|
||||
},
|
||||
|
||||
// Bewerkbare regels
|
||||
generateFINregels: function _generateFINregels(btwtabel)
|
||||
generateFINregels: function _generateFINregels(fin_key, btwtabel)
|
||||
{
|
||||
var rowIndex = 0;
|
||||
var oRs = Oracle.Execute(fin.regelSQL(fin_key));
|
||||
while (!oRs.eof)
|
||||
{
|
||||
rowIndex ++;
|
||||
fin.CreateEditRow(rowIndex,
|
||||
{ regel_key: oRs("fin_factuurregel_key").value,
|
||||
regel_nr: oRs("fin_factuurregel_nr").value,
|
||||
sum: oRs("fin_factuurregel_totaal").value,
|
||||
BTW: oRs("BTW").value,
|
||||
btwkey: oRs("fin_btwtabelwaarde_key").value,
|
||||
btwtabel: btwtabel,
|
||||
sumBTW: oRs("sumBTW").value,
|
||||
descr: oRs("fin_factuurregel_omschrijving").value,
|
||||
ref: oRs("fin_factuurregel_referentie").value,
|
||||
ksrt_key: oRs("prs_kostensoort_key").value,
|
||||
ksrt_oms: oRs("kostensoort").value,
|
||||
verlegd: oRs("verlegd").value
|
||||
});
|
||||
oRs.moveNext();
|
||||
}
|
||||
oRs.close();
|
||||
return rowIndex;
|
||||
var rowIndex = 0;
|
||||
var oRs = Oracle.Execute(fin.regelSQL(fin_key));
|
||||
while (!oRs.eof)
|
||||
{
|
||||
rowIndex ++;
|
||||
fin.CreateEditRow(rowIndex,
|
||||
{ fin_key: fin_key,
|
||||
regel_key: oRs("fin_factuurregel_key").value,
|
||||
regel_nr: oRs("fin_factuurregel_nr").value,
|
||||
sum: oRs("fin_factuurregel_totaal").value,
|
||||
BTW: oRs("BTW").value,
|
||||
btwkey: oRs("fin_btwtabelwaarde_key").value,
|
||||
btwtabel: btwtabel,
|
||||
sumBTW: oRs("sumBTW").value,
|
||||
descr: oRs("fin_factuurregel_omschrijving").value,
|
||||
ref: oRs("fin_factuurregel_referentie").value,
|
||||
ksrt_key: oRs("prs_kostensoort_key").value,
|
||||
ksrt_oms: oRs("kostensoort").value,
|
||||
verlegd: oRs("verlegd").value
|
||||
});
|
||||
oRs.moveNext();
|
||||
}
|
||||
oRs.close();
|
||||
return rowIndex
|
||||
},
|
||||
|
||||
showFINregels: function _showFINregels()
|
||||
// Bewerkbare regels
|
||||
showEditableFINregels: function _showEditableFINregels(this_fin, btwtabel)
|
||||
{
|
||||
var fin_factuur = this_fin.factuur_info;
|
||||
var html = [];
|
||||
// SELECTED ITEMS
|
||||
html.push("<tr><td>"
|
||||
+ "<table class='finrtable' id='sel_items'>"
|
||||
+ "<tr>"
|
||||
+ "<th></th>"
|
||||
+ "<th>"
|
||||
+ (this_fin.canInvLinChange
|
||||
? "<img title='" + L("lcl_add") + "' src='../pictures/plus.png' OnClick='AddItem();FcltMgr.resized();'>"
|
||||
: "")
|
||||
+ "</th>"
|
||||
+ "<th>" + L("lcl_descr") + "</th>"
|
||||
+ "<th>" + L("lcl_location") + "</th>"
|
||||
+ (S("fin_enable_kostensoort") != 0
|
||||
? "<th>" + L("lcl_shared_charge_type") + "</th>"
|
||||
: '')
|
||||
+ "<th style='text-align:right'>" + L("lcl_fin_total_sum_exBTW") + " (" + L("lcl_valutasign") + ")" + "</th>"
|
||||
+ "<th>" + L("lcl_fin_btwtarief") + "</th>"
|
||||
+ "<th>" + L("lcl_fin_total_sum_inBTW") + "</th>"
|
||||
+ '</tr>'
|
||||
+ '<tbody>');
|
||||
Response.Write(html.join(""));
|
||||
|
||||
var rowIndex = fin.generateFINregels(this_fin.fin_key,serversidebtwtabel);
|
||||
|
||||
html = [];
|
||||
html.push("</tbody>"
|
||||
+ "</table>"
|
||||
+ "<div id='total_list' align='right'>"
|
||||
+ "<table>"
|
||||
+ "<input type='hidden' id='rowIndex' name='rowIndex' value='" + rowIndex + "'>"
|
||||
+ "<tr>"
|
||||
+ "<td class='label'><label>" + L("lcl_fin_totaal_bedrag_btw") + ":</label></td>"
|
||||
+ "<td id='totalBTW_txt'>" + S("currency_pref") + " " + safe.curr(fin_factuur.fin_totaal + fin_factuur.fin_totaal_btw) + " " + S("currency_suff") + "</td>"
|
||||
+ "</tr>"
|
||||
+ "</table>"
|
||||
+ '</div>'
|
||||
+ '</td></tr>');
|
||||
Response.Write(html.join(""));
|
||||
},
|
||||
|
||||
showReadableFINregels: function _showReadableFINregels()
|
||||
{
|
||||
// Zijn er kenmerken bij deze factuur regels
|
||||
var sql = "SELECT k.fin_kenmerk_key kenmerk_key"
|
||||
+ " , kfr.fin_kenmerkfactregel_waarde"
|
||||
+ " FROM fin_factuurregel fr"
|
||||
+ " , fin_kenmerkfactregel kfr"
|
||||
+ " , fin_kenmerk k"
|
||||
+ " WHERE fr.fin_factuurregel_key = kfr.fin_factuurregel_key"
|
||||
+ " AND kfr.fin_kenmerk_key = k.fin_kenmerk_key"
|
||||
+ " AND fr.fin_factuur_key = " + fin_key
|
||||
+ " AND k.fin_kenmerk_verwijder IS NULL"
|
||||
+ " AND k.fin_kenmerk_type LIKE 'R'";
|
||||
|
||||
function fnBTW(oRs)
|
||||
{ // TODO: rekening houden met verlegd
|
||||
if (oRs("BTW").Value == null)
|
||||
@@ -1164,11 +1279,15 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
|
||||
ID: "fintable",
|
||||
buttons: null,
|
||||
//title: L("lcl_fin_invoicerows"),
|
||||
flexModule: "FINR",
|
||||
flexId: "fin_factuurregel_key",
|
||||
showProperties: true,
|
||||
//outputmode: outputmode,
|
||||
showAll: true
|
||||
//emptySetString : L("lcl_fin_note_emptyset")
|
||||
});
|
||||
|
||||
rst.addColumn(new Column({caption: "", content: null, hidden: true })); // Lege kolom i.v.m. inline regel. Deze begint in de derde kolom.
|
||||
rst.addColumn(new Column({caption: L("lcl_descr"), content: "fin_factuurregel_omschrijving" }));
|
||||
rst.addColumn(new Column({caption: L("lcl_location"), content: "fin_factuurregel_referentie" }));
|
||||
if (S("fin_enable_kostensoort") != 0)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<%
|
||||
|
||||
FCLTHeader.Requires({ plugins: ["suggest", "jQuery"],
|
||||
js: ["date.js", "num2curr.js", "../FIN/fin_edit_factuur.js"]
|
||||
js: ["date.js", "num2curr.js", "../FIN/fin_edit_factuur.js", "../FIN/fin.js"]
|
||||
});
|
||||
|
||||
var fin_key = getQParamInt("fin_key", -1);
|
||||
@@ -87,6 +87,7 @@ else // nieuwe factuur. Defaults bepalen
|
||||
default_costsrt_selected: false, // ((fin_costsrt_key == fin_costsrt_default) && (fin_costsrt_key != null)), // TODO: opvragen
|
||||
kostenplaats_naam: ""
|
||||
}
|
||||
this_fin.factuur_info = fin_factuur;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -404,55 +405,19 @@ var fin_btwtabel_key = oRs("fin_btwtabel_key").value; // Standaard btw tabel key
|
||||
generateFlexKenmerkCode ({ fin_key: (copy? fin_copy_key : fin_key), // Factuurnummer
|
||||
copy: copy,
|
||||
reado : !this_fin.canChange,
|
||||
flexcolumns: S("fin_flexcolumns")
|
||||
flexcolumns: S("fin_flexcolumns"),
|
||||
kenmerk_niveau: "F"
|
||||
});
|
||||
BLOCK_END();
|
||||
|
||||
BLOCK_START("finItems", L("lcl_fin_invoicerows"));
|
||||
// Regelkenmerken tonen
|
||||
if (!this_fin.canInvLinChange)
|
||||
fin.showFINregels();
|
||||
fin.showReadableFINregels();
|
||||
else
|
||||
{
|
||||
%> <tr><td>
|
||||
<!-- SELECTED ITEMS -->
|
||||
|
||||
<table class="finrtable" id="sel_items">
|
||||
<tr>
|
||||
<th>
|
||||
<% if (this_fin.canInvLinChange)
|
||||
{ %>
|
||||
<img title="<%=L("lcl_add")%>" src="../pictures/plus.png" OnClick="AddItem();FcltMgr.resized();">
|
||||
|
||||
<% } %>
|
||||
</th>
|
||||
<th><%=L("lcl_descr")%></th>
|
||||
<th><%=L("lcl_location")%></th>
|
||||
<% if (S("fin_enable_kostensoort") != 0)
|
||||
{ %>
|
||||
<th><%=L("lcl_shared_charge_type")%></th>
|
||||
<% } %>
|
||||
<th style="text-align:right"><%=L("lcl_fin_total_sum_exBTW") + " (" + L("lcl_valutasign") + ")"%></th>
|
||||
<th style="text-align:right"><%=L("lcl_fin_btwtarief")%></th>
|
||||
<th style="text-align:right"><%=L("lcl_fin_total_sum_inBTW")%></th>
|
||||
</tr>
|
||||
<% var rowIndex = fin.generateFINregels(serversidebtwtabel);
|
||||
%>
|
||||
</table>
|
||||
|
||||
<div id="total_list" align="right">
|
||||
<table>
|
||||
<input type='hidden' id='rowIndex' name='rowIndex' value="<%=rowIndex%>">
|
||||
<tr>
|
||||
<td class="label"><label><%=L("lcl_fin_totaal_bedrag_btw")%>:</label></td>
|
||||
<td id="totalBTW_txt"><%=S("currency_pref") + " " + safe.curr(fin_factuur.fin_totaal + fin_factuur.fin_totaal_btw) + " " + S("currency_suff")%></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</td></tr>
|
||||
<%
|
||||
}
|
||||
BLOCK_END();
|
||||
IFACE.FORM_END();
|
||||
fin.showEditableFINregels(this_fin, serversidebtwtabel);
|
||||
BLOCK_END();
|
||||
IFACE.FORM_END();
|
||||
%>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -437,7 +437,7 @@ function setPrice(obj)
|
||||
$("#totalBTW_txt").html(currency_pref + num2curr(totalBTW) + currency_suff);
|
||||
}
|
||||
|
||||
// Voeg een ieuwe regel toe na het plus-knopje
|
||||
// Voeg een nieuwe regel toe na het plus-knopje
|
||||
function AddItem(nofocus) // als je hieronder iets aanpast controleer dan ook fin.inc/CreateEditRow
|
||||
{
|
||||
var sum = 0;
|
||||
@@ -457,6 +457,18 @@ function AddItem(nofocus) // als je hieronder iets aanpast controleer dan ook fi
|
||||
|
||||
// Insert data rows
|
||||
var tr = table.insertRow(-1);
|
||||
tr.id = "trfin" + rowIndex;
|
||||
tr.className = (rowIndex & 1? "O " : "E ");
|
||||
tr.setAttribute("ROWKEY", -1);
|
||||
|
||||
// Create flexkenmerk button
|
||||
cell = tr.insertCell(-1);
|
||||
cell.setAttribute("class", "inlinedetails closed");
|
||||
cell.title = L("lcl_fin_regel_kenmerken");
|
||||
cell.onclick = new Function('return showInlineDetails(this, \'inlinePropertiesUrl\')');
|
||||
cell.innerHTML = '<td class="inlinedetails closed" title="' + L("lcl_fin_regel_kenmerken") + '" onclick="return showInlineDetails(this, \'inlinePropertiesUrl\')">'
|
||||
+ '<img src="../Pictures/attach.png" style="cursor: pointer;">'
|
||||
+ '</td>';
|
||||
|
||||
// Create drop button
|
||||
cell = tr.insertCell(-1);
|
||||
@@ -465,12 +477,12 @@ function AddItem(nofocus) // als je hieronder iets aanpast controleer dan ook fi
|
||||
// Create description field
|
||||
cell = tr.insertCell(-1);
|
||||
cell.innerHTML = "<input type='text' class='fld'"
|
||||
+ " id='descript" + rowIndex + "' name='descript" + rowIndex + "' maxlength='50' value='" + descr + "'>";
|
||||
+ " id='descript" + rowIndex + "' name='descript" + rowIndex + "' maxlength='60' value='" + descr + "'>";
|
||||
|
||||
// Create reference field
|
||||
cell = tr.insertCell(-1);
|
||||
cell.innerHTML = "<input type='text' class='fldfinref'"
|
||||
+ " id='ref" + rowIndex + "' name='ref" + rowIndex + "' maxlength=30 value='" + ref + "'>"; // TODO: escapen
|
||||
+ " id='ref" + rowIndex + "' name='ref" + rowIndex + "' maxlength='30' value='" + ref + "'>"; // TODO: escapen
|
||||
|
||||
if (fin_enable_kostensoort != 0)
|
||||
{ // Create charge type field
|
||||
@@ -491,7 +503,7 @@ function AddItem(nofocus) // als je hieronder iets aanpast controleer dan ook fi
|
||||
// Create sum field
|
||||
cell = tr.insertCell(-1);
|
||||
cell.innerHTML = "<input type='text' class='fldfinbedrag'"
|
||||
+ " id='sum" + rowIndex + "' name='sum" + rowIndex + "' maxlength=10 value='" + num2curr(sum) + "'>";
|
||||
+ " id='sum" + rowIndex + "' name='sum" + rowIndex + "' maxlength='10' value='" + num2curr(sum) + "'>";
|
||||
cell.align = 'right';
|
||||
|
||||
// Create BTW field
|
||||
@@ -509,24 +521,45 @@ function AddItem(nofocus) // als je hieronder iets aanpast controleer dan ook fi
|
||||
cell.innerHTML = htmlText;
|
||||
cell.align = 'right';
|
||||
|
||||
// Sum incl. tax
|
||||
// Sum incl. tax + hidden regel_key input veld.
|
||||
cell = tr.insertCell(-1);
|
||||
cell.innerHTML = "<input type='text' class='fldfinbedrag' readonly='1' id='sumBTW" + rowIndex
|
||||
+ "' value='" + currency_pref + num2curr(sumBTW) + "'>";
|
||||
+ "' value='" + currency_pref + num2curr(sumBTW) + "'>"
|
||||
+ '<input type="hidden" id="regel_key' + rowIndex + '" name="regel_key' + rowIndex + '" value="-1">'
|
||||
+ '<input type="hidden" id="regel_id' + rowIndex + '" name="regel_id' + rowIndex + '" value="' + tr.id + '">';
|
||||
cell.align = 'right';
|
||||
|
||||
if (!nofocus)
|
||||
$("#descript" + rowIndex).focus();
|
||||
}
|
||||
|
||||
function DeleteOrderLine(obj)
|
||||
// Merk op dat regel_key multifunctioneel is
|
||||
// >0: we zijn een bestaande factuurregel aan het bewerken
|
||||
// -1: het is een nieuwe regel die nog niet in de database is
|
||||
// 0: het is een nieuwe regel die met het kruisje is weggehaald (hidden gemaakt)
|
||||
// < -1: een bestaande factuurregel die met het kruisje is weggehaald (hidden gemaakt)
|
||||
function DeleteOrderLine(row)
|
||||
{
|
||||
if (!confirm(L("lcl_fin_cancelfac")))
|
||||
return;
|
||||
|
||||
var tr = $(obj).closest("tr");
|
||||
tr.remove();
|
||||
// remove from totalBTW
|
||||
var regel_key = $("#regel_key" + row);
|
||||
if (regel_key.val() == -1)
|
||||
regel_key.val(0); // signal delete for new visitor
|
||||
else
|
||||
regel_key.val(-regel_key.val()); // signal delete
|
||||
var tr = $("#trfin" + row);
|
||||
tr.hide();
|
||||
// Haal de required class overal af als deze erop zit.
|
||||
$("#trfin" + row).find("*").removeClass("required"); // Required zit nu nog niet op deze regel.
|
||||
tr = $("#trfin" + row + "inline");
|
||||
tr.hide();
|
||||
// Haal de required class overal af als deze erop zit.
|
||||
$("#trfin" + row + "inline").find("*").removeClass("required"); // Required kan op flexkenmerken zitten.
|
||||
|
||||
// Verwijder van de totalBTW
|
||||
$("#sum" + row).val(0);
|
||||
$("#sumBTW" + row).val(0);
|
||||
setPrice(null);
|
||||
}
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ if (fin_key == -1)
|
||||
var finIns = buildInsert("fin_factuur", fields);
|
||||
var fin_key = finIns.sequences["fin_factuur_key"];
|
||||
sql = finIns.sql;
|
||||
oRs = Oracle.Execute(sql);
|
||||
Oracle.Execute(sql);
|
||||
|
||||
shared.trackaction("FINNEW", fin_key);
|
||||
|
||||
@@ -97,74 +97,125 @@ else
|
||||
Oracle.Execute(sql);
|
||||
|
||||
shared.trackaction("FINUPD", fin_key);
|
||||
|
||||
// Delete old invoice lines
|
||||
if (this_fin.canInvLinChange)
|
||||
{
|
||||
sql = "DELETE fin_factuurregel"
|
||||
+ " WHERE fin_factuur_key = " + fin_key;
|
||||
Oracle.Execute(sql);
|
||||
}
|
||||
}
|
||||
|
||||
var frnum = 0;
|
||||
regelnr = 1;
|
||||
|
||||
// Nu de regels (terug) toevoegen
|
||||
// Nu de regels toevoegen/updaten.
|
||||
if (fin_key < 0 || this_fin.canInvLinChange)
|
||||
{
|
||||
while (frnum <= rowIndex)
|
||||
while (frnum <= rowIndex)
|
||||
{
|
||||
var descrn = Request.Form("descript" + frnum).Count;
|
||||
var sumn = Request.Form("sum" + frnum).Count;
|
||||
var BTWn = Request.Form("BTW" + frnum).Count;
|
||||
|
||||
if (descrn < 1 && sumn < 1 && BTWn < 1)
|
||||
{
|
||||
var descrn = Request.Form("descript" + frnum).Count;
|
||||
var sumn = Request.Form("sum" + frnum).Count;
|
||||
var BTWn = Request.Form("BTW" + frnum).Count;
|
||||
frnum++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (descrn < 1 && sumn < 1 && BTWn < 1)
|
||||
var regel_key = getFParamInt("regel_key" + frnum, -1);
|
||||
var regel_id = getFParam("regel_id" + frnum, "");
|
||||
var descr = getFParam("descript" + frnum);
|
||||
var ref = getFParam("ref" + frnum);
|
||||
var sum = getFParamFloat("sum" + frnum);
|
||||
var BTWkey = getFParamInt("BTW" + frnum);
|
||||
|
||||
if (regel_key < -1)
|
||||
{
|
||||
fin.deleteFactuurregel(-regel_key);
|
||||
fintrack = L("lcl_fin_regel_del") + ": " + descr + "/" + ref + "/" + sum;
|
||||
}
|
||||
else if ((descr == "" && sum == "") || regel_key == 0)
|
||||
{ // Geen waarden (omschrijving, excl. BTW) ingevuld of verwijderde nieuwe factuurregel
|
||||
if (regel_key > 0)
|
||||
{
|
||||
frnum++;
|
||||
continue;
|
||||
fin.deleteFactuurregel(regel_key);
|
||||
fintrack = L("lcl_fin_regel_del") + ": " + descr + "/" + ref + "/" + sum;
|
||||
}
|
||||
|
||||
var descr = getFParam("descript" + frnum);
|
||||
var ref = getFParam("ref" + frnum);
|
||||
var sum = getFParamFloat("sum" + frnum);
|
||||
var BTWkey = getFParamInt("BTW" + frnum);
|
||||
}
|
||||
else
|
||||
{ // Nieuwe of bestaande factuurregels
|
||||
sql = "SELECT fin_btwtabelwaarde_perc"
|
||||
+ " , fin_btwtabelwaarde_verlegd"
|
||||
+ " FROM fin_btwtabelwaarde"
|
||||
+ " WHERE fin_btwtabelwaarde_key = " + BTWkey;
|
||||
oRs = Oracle.Execute(sql);
|
||||
// Er moet een waarde zijn
|
||||
// Er moet een waarde zijn.
|
||||
var BTW = oRs("fin_btwtabelwaarde_perc").value;
|
||||
var verlegd = oRs("fin_btwtabelwaarde_verlegd").value;
|
||||
oRs.Close();
|
||||
var fincostsrt = getFParamInt("fincostsrt" + frnum, -1);
|
||||
frnum++;
|
||||
|
||||
if ((descr != '' || sum != 0))
|
||||
{
|
||||
sql = "INSERT INTO fin_factuurregel ("
|
||||
+ " fin_factuur_key"
|
||||
+ " , fin_factuurregel_nr"
|
||||
+ " , fin_factuurregel_totaal"
|
||||
+ " , fin_factuurregel_btw"
|
||||
+ " , fin_factuurregel_omschrijving"
|
||||
+ " , fin_factuurregel_referentie"
|
||||
+ " , fin_btwtabelwaarde_key"
|
||||
+ " , prs_kostensoort_key"
|
||||
+ " ) VALUES ("
|
||||
+ fin_key
|
||||
+ ", " + regelnr
|
||||
+ ", " + sum
|
||||
+ ", " + (verlegd ? 0 : (sum * BTW / 100))
|
||||
+ ", " + safe.quoted_sql(descr)
|
||||
+ ", " + safe.quoted_sql(ref)
|
||||
+ ", " + BTWkey
|
||||
+ ", " + (fincostsrt > 0? fincostsrt : "NULL") + ")";
|
||||
Oracle.Execute(sql);
|
||||
regelnr++;
|
||||
var regelfields = [ { dbs: "fin_factuur_key", typ: "key", val: fin_key },
|
||||
{ dbs: "fin_factuurregel_nr", typ: "key", val: regelnr },
|
||||
{ dbs: "fin_factuurregel_totaal", typ: "float", val: sum, track: L("lcl_fin_total_sum_exBTW") },
|
||||
{ dbs: "fin_factuurregel_btw", typ: "float", val: (verlegd ? 0 : (sum * BTW / 100)), track: L("lcl_fin_total_sum_inBTW"), len: 30 },
|
||||
{ dbs: "fin_factuurregel_omschrijving", typ: "varchar", val: descr, track: L("lcl_descr"), len: 60 },
|
||||
{ dbs: "fin_factuurregel_referentie", typ: "varchar", val: ref, track: L("lcl_location"), len: 30 },
|
||||
{ dbs: "fin_btwtabelwaarde_key", typ: "key", val: BTWkey, track: L("lcl_fin_btwtarief") },
|
||||
{ dbs: "prs_kostensoort_key", typ: "key", val: (fincostsrt > 0? fincostsrt : "-1"), track: L("lcl_shared_charge_type"), foreign: "prs_kostensoort" }
|
||||
];
|
||||
|
||||
if (regel_key == -1)
|
||||
{ // Nieuwe factuurregel
|
||||
regelfields.push({ dbs: "fin_factuurregel_key", typ: "key", seq: "fin_s_fin_factuurregel_key" });
|
||||
|
||||
var finIns = buildInsert("fin_factuurregel", regelfields);
|
||||
var new_regel_key = finIns.sequences["fin_factuurregel_key"];
|
||||
Oracle.Execute(finIns.sql);
|
||||
var finUpd = {trackarray: [L("lcl_bez_is_bezadd") + ": " + safe.quoted_sql(descr) + "/" + sum]};
|
||||
}
|
||||
else
|
||||
{ // Bestaande factuurregel
|
||||
// finUpd heeft na afloop handige oldjsvals
|
||||
var finUpd = buildTrackingUpdate("fin_factuurregel", " fin_factuurregel_key = " + regel_key, regelfields);
|
||||
var new_regel_key = regel_key;
|
||||
// SUBMIT THE CHANGED DATA
|
||||
Oracle.Execute(finUpd.sql);
|
||||
regelnr++;
|
||||
}
|
||||
|
||||
// Nu de kermerken behorend bij de factuurregel opslaan
|
||||
var currentKenmerkenSQL = "SELECT f.fin_kenmerk_key"
|
||||
+ " , f.fin_kenmerkfactregel_waarde"
|
||||
+ " FROM fin_kenmerkfactregel f"
|
||||
+ " , fin_kenmerk k"
|
||||
+ " WHERE k.fin_kenmerk_key = f.fin_kenmerk_key"
|
||||
+ " AND f.fin_kenmerkfactregel_verwijder IS NULL"
|
||||
+ " AND f.fin_factuurregel_key = " + regel_key;
|
||||
|
||||
var allKenmerkenSQL = " SELECT " + lcl.xsql('k.fin_kenmerk_omschrijving', 'k.fin_kenmerk_key') + " kenmerk_omschrijving"
|
||||
+ " , k.fin_kenmerk_key srtkenmerk_key"
|
||||
+ " , k.fac_kenmerkdomein_key"
|
||||
+ " FROM fin_kenmerk k"
|
||||
+ " WHERE k.fin_kenmerk_verwijder IS NULL"
|
||||
+ " AND k.fin_kenmerk_key = "; /* wordt in saveFlexkenmerken uitgebreid */
|
||||
|
||||
var flextrack = saveFlexKenmerken(new_regel_key,
|
||||
{ kenmerkTable: "fin_kenmerkfactregel",
|
||||
kenmerkParentKey : "fin_factuurregel_key",
|
||||
kenmerkWaarde: "fin_kenmerkfactregel_waarde",
|
||||
kenmerkKey: "fin_kenmerk_key",
|
||||
currentKenmerkenSQL: currentKenmerkenSQL,
|
||||
allKenmerkenSQL: allKenmerkenSQL,
|
||||
requestQF: Request.Form,
|
||||
nameprefix: (regel_key == -1? regel_id : "flex" + regel_key) + "_",
|
||||
extraserie: true,
|
||||
isNew: (regel_key < 0),
|
||||
flexPath: "FIN/F",
|
||||
tracking: true, // allKenmerkenSQL en module zijn dan verplicht.
|
||||
module: "FIN"
|
||||
});
|
||||
}
|
||||
}
|
||||
frnum++
|
||||
}
|
||||
}
|
||||
|
||||
// Redundante info bijwerken. Door dat hier te doen hebben we redelijk consistentie-garantie.
|
||||
@@ -178,7 +229,7 @@ var sql = "UPDATE fin_factuur ff"
|
||||
+ " WHERE fin_factuur_key = " + fin_key;
|
||||
Oracle.Execute(sql);
|
||||
|
||||
// Flex *na* regels opslaan zodat bij mogelijk falen in ieder geval de regels terug zijn
|
||||
// Nu de algemene kenmerken opslaan
|
||||
currentKenmerkenSQL = "SELECT kf.fin_kenmerk_key"
|
||||
+ " , kf.fin_kenmerkfactuur_waarde"
|
||||
+ " FROM fin_kenmerkfactuur kf"
|
||||
@@ -196,7 +247,6 @@ saveFlexKenmerken(fin_key, { kenmerkTable: "fin_kenmerkfactuur",
|
||||
isNew: isNew, flexPath: "FIN/F"
|
||||
});
|
||||
|
||||
|
||||
// Autofiatteer de factuur als dat zo ingesteld is
|
||||
sql = "BEGIN fin.autoapprovefactuur(" + fin_key + "); END;";
|
||||
Oracle.Execute(sql);
|
||||
|
||||
@@ -27,10 +27,13 @@ function generateFlexKenmerkCode(params)
|
||||
user.auth_required_or_abort(authparamsFINFOF || authparamsFINBOF || user.isBudgethouder());
|
||||
|
||||
var fin_key = params.fin_key; // Factuurnummer
|
||||
var regel_key = params.regel_key; // Factuurregelnummer
|
||||
var kenmerk_niveau = params.kenmerk_niveau; // Kenmerk niveau (F=factuur, R=regel).
|
||||
var reado = params.reado; // Readonly
|
||||
var flexcolumns = params.flexcolumns;
|
||||
var advanced = params.advanced; // Geavanceerd
|
||||
var reqId = params.reqId; // Perslid key (!search && multiMode)
|
||||
var nameprefix = params.nameprefix;
|
||||
var copy = (params.copy? params.copy : false);
|
||||
|
||||
function isReadonly (volgnummer)
|
||||
@@ -44,6 +47,29 @@ function generateFlexKenmerkCode(params)
|
||||
otherKenmerkPath = " 'FIN/" + subfolderKey("F", fin_key) + "/' || fin_kenmerk_key otherpath, ";
|
||||
}
|
||||
|
||||
|
||||
var kenmerkwaarde = "";
|
||||
if (kenmerk_niveau == "F")
|
||||
{
|
||||
kenmerkwaarde = (fin_key > 0
|
||||
? " (SELECT f.fin_kenmerkfactuur_waarde"
|
||||
+ " FROM fin_kenmerkfactuur f"
|
||||
+ " WHERE f.fin_factuur_key = " + fin_key
|
||||
+ " AND f.fin_kenmerk_key = k.fin_kenmerk_key"
|
||||
+ " AND f.fin_kenmerkfactuur_verwijder IS NULL)"
|
||||
: lcl.xsql('k.fin_kenmerk_default', 'k.fin_kenmerk_key'))
|
||||
}
|
||||
else
|
||||
{
|
||||
kenmerkwaarde = (regel_key > 0
|
||||
? " (SELECT f.fin_kenmerkfactregel_waarde"
|
||||
+ " FROM fin_kenmerkfactregel f"
|
||||
+ " WHERE f.fin_factuurregel_key = " + regel_key
|
||||
+ " AND f.fin_kenmerk_key = k.fin_kenmerk_key"
|
||||
+ " AND f.fin_kenmerkfactregel_verwijder IS NULL)"
|
||||
: lcl.xsql('k.fin_kenmerk_default', 'k.fin_kenmerk_key'))
|
||||
}
|
||||
|
||||
sql = "SELECT k.fin_kenmerk_key kenmerk_key, "
|
||||
+ lcl.xsql('k.fin_kenmerk_omschrijving', 'k.fin_kenmerk_key') +" kenmerk_omschrijving, "
|
||||
+ " k.fin_kenmerk_kenmerktype kenmerk_kenmerktype, "
|
||||
@@ -52,14 +78,7 @@ function generateFlexKenmerkCode(params)
|
||||
+ " k.fin_kenmerk_dec kenmerk_dec, "
|
||||
+ " k.fin_kenmerk_nmin kenmerk_nmin, "
|
||||
+ " k.fin_kenmerk_nmax kenmerk_nmax, "
|
||||
+ (fin_key > 0
|
||||
? " (SELECT f.fin_kenmerkfactuur_waarde"
|
||||
+ " FROM fin_kenmerkfactuur f"
|
||||
+ " WHERE f.fin_factuur_key = " + fin_key
|
||||
+ " AND f.fin_kenmerk_key = k.fin_kenmerk_key"
|
||||
+ " AND f.fin_kenmerkfactuur_verwijder IS NULL)"
|
||||
: lcl.xsql('k.fin_kenmerk_default', 'k.fin_kenmerk_key')
|
||||
) + " kenmerk_waarde, "
|
||||
+ kenmerkwaarde + " kenmerk_waarde, "
|
||||
+ " k.fin_kenmerk_volgnr kenmerk_volgnr, "
|
||||
+ lcl.xsql('k.fin_kenmerk_dimensie', 'k.fin_kenmerk_key') +" kenmerk_dimensie, "
|
||||
+ lcl.xsql('k.fin_kenmerk_hint', 'k.fin_kenmerk_key') +" kenmerk_hint, "
|
||||
@@ -71,6 +90,7 @@ function generateFlexKenmerkCode(params)
|
||||
+ " k.fin_kenmerk_regexp kenmerk_regexp"
|
||||
+ " FROM fin_kenmerk k"
|
||||
+ " WHERE k.fin_kenmerk_verwijder IS NULL"
|
||||
+ " AND k.fin_kenmerk_type LIKE '" + kenmerk_niveau + "'"
|
||||
+ " ORDER BY k.fin_kenmerk_volgnr"
|
||||
+ ", UPPER("+lcl.xsql('k.fin_kenmerk_omschrijving', 'k.fin_kenmerk_key')+")";
|
||||
|
||||
@@ -78,12 +98,14 @@ function generateFlexKenmerkCode(params)
|
||||
|
||||
listKenmerk(sql,
|
||||
"FIN",
|
||||
fin_key,
|
||||
(kenmerk_niveau == "F"? fin_key : regel_key),
|
||||
{ flexcolumns: flexcolumns,
|
||||
kenmerk_search: advanced,
|
||||
fnIsReadonly: isReadonly,
|
||||
hideVervallen: fin_key<0,
|
||||
parentKey: fin_key }
|
||||
hideVervallen: fin_key < 0 && regel_key < 0,
|
||||
nameprefix: (kenmerk_niveau == "R"? nameprefix + "_" : null), // nameprefix heeft voor regel kenmerken een uniek nummer in zich die voor elke regel anders is.
|
||||
extraserie: (kenmerk_niveau == "R"? true : false),
|
||||
parentKey: (kenmerk_niveau == "F"? fin_key : regel_key) }
|
||||
);
|
||||
%>
|
||||
<%
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
|
||||
<!-- #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"]
|
||||
js: ["date.js", "num2curr.js", "../FIN/fin_show_factuur.js", "../FIN/fin.js"]
|
||||
});
|
||||
|
||||
var fin_key = getQParamInt("fin_key");
|
||||
@@ -215,12 +216,13 @@ var urlMail = "../shared/queuemail.asp?pcode=FINMAI&defemail_key=-1&key=" + fin_
|
||||
BLOCK_START("finFlex"+(S("fin_flexcolumns")!=1?"2":""), L("lcl_mld_flexblok"));
|
||||
generateFlexKenmerkCode ({ fin_key: fin_key, // Factuurnummer
|
||||
reado : true,
|
||||
flexcolumns: S("fin_flexcolumns")
|
||||
flexcolumns: S("fin_flexcolumns"),
|
||||
kenmerk_niveau: "F"
|
||||
});
|
||||
BLOCK_END();
|
||||
|
||||
BLOCK_START("finItems", L("lcl_fin_invoicerows"));
|
||||
fin.showFINregels(); // de factuur regels
|
||||
fin.showReadableFINregels(); // de factuur regels
|
||||
BLOCK_END();
|
||||
%>
|
||||
</form>
|
||||
|
||||
@@ -26,10 +26,13 @@ var DOCTYPE_Disable = true;
|
||||
<table id="flextable" cellpadding="0" cellspacing="0">
|
||||
<%
|
||||
generateFlexKenmerkCode ({ fin_key: getQParamInt("fin_key", -1), // Factuurnummer
|
||||
regel_key: getQParamInt("regel_key", -1), // Factuurregelnummer
|
||||
kenmerk_niveau: getQParam("kenmerk_niveau", 'F'), // Kenmerk niveau (F=factuur, R=regel).
|
||||
reado: getQParamInt("reado", 0) == 1, // Readonly
|
||||
flexcolumns: getQParamInt("advanced", 0) == 1?1:S("fin_flexcolumns"),
|
||||
flexcolumns: getQParamInt("advanced", 0) == 1? 1 : S("fin_flexcolumns"),
|
||||
advanced: getQParamInt("advanced", 0) == 1, // Geavanceerd
|
||||
reqId: getQParamInt("reqId", -1) // Perslid key (!search && multiMode)
|
||||
reqId: getQParamInt("reqId", -1), // Perslid key (!search && multiMode)
|
||||
nameprefix: getQParam("nameprefix", "") != ""? getQParam("nameprefix", "") : null
|
||||
});
|
||||
%>
|
||||
</table>
|
||||
@@ -33,7 +33,9 @@ function hideInlineDetails(thisTR)
|
||||
$(thisTR).find(".inlinedetails").toggleClass("closed");
|
||||
$(thisTR).find(".inlinedetails").html(L("lcl_shared_inlinecolumnclosed"));
|
||||
var thisTABLE = thisTR.parentNode;
|
||||
thisTABLE.deleteRow(thisTR.rowIndex);
|
||||
if (thisTABLE.nodeName == "TBODY")
|
||||
thisTABLE = thisTABLE.parentNode; // Indien de tabel een <tbody> heeft dan de parent <table> pakken.
|
||||
thisTABLE.deleteRow(thisTR.rowIndex + 1); // De volgende rij verwijderen.
|
||||
thisTR.inlineVisible = false;
|
||||
return false;
|
||||
}
|
||||
@@ -47,13 +49,18 @@ function hideAllInlineDetails(ID)
|
||||
function showInlineDetails(thisTD, strfnURL)
|
||||
{
|
||||
var thisTR = thisTD.parentNode;
|
||||
var thisTRid = thisTR.id;
|
||||
var thisRowkey = thisTR.getAttribute("ROWKEY");
|
||||
if (thisTR.inlineVisible)
|
||||
return hideInlineDetails(thisTR);
|
||||
$(thisTR).find(".inlinedetails").toggleClass("closed");
|
||||
$(thisTR).find(".inlinedetails").html(L("lcl_shared_inlinecolumnopen"));
|
||||
thisTR.inlineVisible = true;
|
||||
var thisTABLE = thisTR.parentNode;
|
||||
var newRow = thisTABLE.insertRow(thisTR.rowIndex);
|
||||
var thisTABLE = thisTR.parentNode; // Parent node kan ook <tbody> zijn
|
||||
if (thisTABLE.nodeName == "TBODY")
|
||||
thisTABLE = thisTABLE.parentNode; // Indien de tabel een <tbody> heeft dan de parent <table> pakken.
|
||||
var newRow = thisTABLE.insertRow(thisTR.rowIndex + 1); // De nieuwe rij erna toevoegen.
|
||||
newRow.id = thisTRid + "inline"
|
||||
newRow.insertCell(0);
|
||||
var theCell = newRow.insertCell(1);
|
||||
theCell.innerHTML = L("lcl_shared_loading");
|
||||
|
||||
Reference in New Issue
Block a user