PCHD#27790: Uitbreiding factuurscherm (flexkenmerken).

svn path=/Website/trunk/; revision=19711
This commit is contained in:
Maykel Geerdink
2013-11-05 10:49:06 +00:00
parent 9d3e920655
commit 07e5c62229
8 changed files with 358 additions and 157 deletions

View File

@@ -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,17 +1041,65 @@ 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'"
@@ -1067,7 +1116,7 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
// 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) + "'>");
+ "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,8 +1178,7 @@ 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));
@@ -1129,7 +1186,8 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
{
rowIndex ++;
fin.CreateEditRow(rowIndex,
{ regel_key: oRs("fin_factuurregel_key").value,
{ 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,
@@ -1145,11 +1203,68 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
oRs.moveNext();
}
oRs.close();
return rowIndex;
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)

View File

@@ -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,53 +405,17 @@ 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>
<%
}
fin.showEditableFINregels(this_fin, serversidebtwtabel);
BLOCK_END();
IFACE.FORM_END();
%>

View File

@@ -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);
}

View File

@@ -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,20 +97,12 @@ 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)
@@ -125,45 +117,104 @@ if (fin_key < 0 || this_fin.canInvLinChange)
continue;
}
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)
{
fin.deleteFactuurregel(regel_key);
fintrack = L("lcl_fin_regel_del") + ": " + descr + "/" + ref + "/" + sum;
}
}
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);
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++
}
}
@@ -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);

View File

@@ -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) }
);
%>
<%

View File

@@ -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>

View File

@@ -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>

View File

@@ -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");