Files
Facilitor/APPL/BES/sel_items_tab.js
Jos Groot Lipman d57a24ae63 wnd.focus kan falen met access denied als ander domein. Voorzichtiger zijn dus.
svn path=/Website/trunk/; revision=11927
2012-07-26 13:37:57 +00:00

717 lines
25 KiB
JavaScript
Raw Blame History

/*
$Revision$
$Id$
File: sel_items_tab.js
Description: Javascript code om client-side de HTML tabel met bestelitems te vullen
Bij bestaande bestellingen maakt AddAllItems alle regels aan uit details_Items
(gevuld in details.inc)
Bij nieuwe bestellingen worden regels 1 voor 1 toegevoegd via AddItem
Parameters:
Context:
Note: Op het TR-element stoppen wel allerlei informatie (die vroeger in selectedItems zat)
tr.bes_item_info: van alles over het item
orgAmount: oorspronkelijke aantal
retour:
received:
*/
function AddAllItems(editable, show_received)
{
if (this.details_Items == null)
return;
for (i in details_Items)
{
CreateRow(details_Items[i], details_Items[i].amount, (show_received? details_Items[i].received : -1), editable, details_Items[i].objFlex);
}
if (editable) StaffelKortingResult();
FcltMgr.resized();
}
function RetourItems(bes_key, urole) {
var s = "../Bes/bes_retour.asp?bes_key=" + bes_key + "&urole="+ urole;
var retourReturn = FcltMgr.openModalDetail(s, L("lcl_bes_retour"), {callback: FcltMgr.reload});
}
window.bes_item_info = null; // forceer global scope
function load_item_info(srtdeel_key, urole, aantal)
{
if (srtdeel_key == -1)
var bes_item_info = null;
else
$.getJSON("get_item_info_ajax.asp?srtdeel_key=" + srtdeel_key,
function(data)
{
window.bes_item_info = data; // forceer global scope
show_item_details(window.bes_item_info);
// Indien artikelgroep niet is ingevuld, dan deze nog even invullen.
// PNBR#23071: Artikelgroep NIET invullen als artikel rechtstreeks in listbox gekozen is.
if (data.singlegroep && $("#srtgroep").val() == -1)
{
sgSrtgroep.setValue(data.srtgroup_key, data.srtgroup_text, false, false, data.singlegroep, true)
}
if (aantal && aantal > 0)
AddSuggestItem(data, aantal);
}
)
}
function getAantalArtikelen()
{ // Hoeveel artikelen zijn er al geselecteerd
return $("#sel_items>tbody>tr").length;
}
function maxArtikelReached()
{
var aantalArtikelen = getAantalArtikelen();
return (maxartikel > 0 && aantalArtikelen >= maxartikel)
}
function AddSuggestItem(bes_item_info, aantal, urole)
{
if (!bes_item_info || bes_item_info.srtdeel_key < 0)
{
alert(L("lcl_shared_choose_item_first"));
return;
}
// Als flexkenmerken met prs-sql in default dan moet de persoon minimaal ingevuld zijn.
if (bes_item_info.num_prssql != 0 && !validateForm("u2", { checkOnly: ["person_show"] }))
return false;
if (window.stock_info.stock == 0)
alert(L("lcl_bes_out_of_stock"));
else
if (window.stock_info.stock && aantal > window.stock_info.stock)
alert(L("lcl_bes_exceed_stock"));
AddItem(bes_item_info, aantal, urole, true);
}
function AddItem(bes_item_info, aantal, urole, doCheckAmount)
{
var table = $("#sel_items")[0];
// openModalDetail is dan wel modal maar niet synchroon, daarom continueAdd callback
var continueAdd = function(objFlex)
{
if (objFlex || bes_item_info.num_prop == 0)
{
var aantal_cell = CreateRow(bes_item_info, aantal, -1, true, objFlex, urole);
if (doCheckAmount)
checkAmount(aantal_cell); // eventuele minimum en zo
StaffelKortingResult();
// Indien singlegroep is gezet kunnen binnen een catalogus uitsluitend artikelen uit dezelfde groep worden besteld. Alle artikelen in de bestellijst moeten dan uit dezelfde groep komen.
// Indien er minstens <20><>n bestelregels aanwezig is mag de artikelgroep niet meer worden gewijzigd.
if ($("#singlegroep").val() == 1)
{
$("#srtgroep_show")[0].style.display = "none";
$("#srtgroep_ro").val($("#srtgroep_show").val());
$("#srtgroep_ro")[0].style.display = "block";
}
// Item veld en details van item wissen: onChangeArtikelgroep does the trick
onChangeArtikelgroep();
// Als het maximum aantal artikelen voor deze discipline bereikt is moet het artikel veld gedisabled worden.
if (maxArtikelReached())
{
$("#besitem_show").attr('disabled', true);
$("#srtgroep_text").html(L("lcl_bes_max_artikel_reached"));
}
FcltMgr.resized(window);
}
else {
return;
}
}
var objFlex = false;
if (bes_item_info.num_prop>0)
{ // flexkenmerken vragen
var prs_key = document.u2.person.value;
var s = "../bes/bes_edit_item_kenmerk.asp?srtdeel_key=" + bes_item_info.srtdeel_key
+ "&urole=" + urole
+ "&srtgroup_key=" + bes_item_info.srtgroup_key
+ "&dis_key=" + dis_key
+ "&prs_key=" + prs_key;
FcltMgr.openModalDetail(s, L("lcl_bes_article_details"), {
callback: function (data) { continueAdd(data.objReturn)}} );
}
else
continueAdd();
}
function openArtDetails(detailurl)
{
var fwnd = window.open(detailurl, 'ArtDetInfo',
"width=800, height=600, directories=no,location=no,menubar=no,title='ArtDetInfo',"
+ "resizable=yes,status=no,titlebar=yes,toolbar=no,scrollbars=yes");
try { fwnd.focus(); } catch (e) { };
}
// Verwerk het resultaat van fetchArtikelInfo
window.stock_info = {}; // forceer globale scope
function fetchArtikelInfoResult( json, cell)
{
if (json)
{
window.stock_info = json;
var innerTxt = ""
if (json.stock)
innerTxt += json.stock;
if (json.details_url)
{
var myButton = "<img class='details' src='../Pictures/detail.png'"
myButton += " onClick=\"openArtDetails('"+json.details_url+"')\"";
myButton += ">";
innerTxt += (json.details_url != "null"?"&nbsp;" + myButton:"")
}
$(cell).html(innerTxt);
}
else
{
$(cell).html('--');
}
}
// Haal (asynchroon) leverancier informatie van een artikel op.
function fetchArtikelInfo(cell, srtdeel_key, id_key)
{
var s = "DynArtikelInfo.asp?srtdeel_key=" + srtdeel_key;
$.getJSON(s, function (json)
{
fetchArtikelInfoResult( json, cell);
}
);
}
var new_item_key = 0;
// editable: ik mag nog regels toevoegen en verwijderen, verhogen en verlagen
// levert een verwijzing naar de aantal_cell op.
function CreateRow(bes_item_info, aantal, received, editable, objFlex, urole)
{
var table = $("#sel_items>tbody")[0];
// insert data rows
tr = table.insertRow(-1);
tr.title = bes_item_info.srtgroup_text;
if (!bes_item_info.item_key || String(bes_item_info.item_key).match(/^new/))
{
new_item_key ++; // alstie vooralsnog maar uniek is.
// Maak een kloon van bes_item_info omdat we het (compleet) gaan opslaan in de <tr>
// JScript slaat alleen een referentie naar het object op en elke regel zou anders
// indirect naar dezelfde key terugwijzen
var binfo = {};
for (var ii in bes_item_info) // toevallig allemaal atomair dus geen deepclone nodig
{
binfo[ii] = bes_item_info[ii];
}
bes_item_info = binfo;
bes_item_info.item_key = "new" + new_item_key;
}
tr.bes_item_info = bes_item_info;
if (editable)
tr.onclick = function () { if (!maxArtikelReached()) load_item_info(this.bes_item_info.srtdeel_key, urole)};
tr.orgAmount = tr.amount = aantal;
tr.flexvals = [];
var id_key = bes_item_info.srtdeel_key + "_" + bes_item_info.item_key;
// Create drop + info button
cell = tr.insertCell(-1);
cell.align = "center";
// De regels waarvan aantallen zijn geleverd moeten zeker blijven bestaan. Deze zijn al deel van deze bestelaanvraag
$(cell).html( (editable && !bes_item_info.received
? "<img src=../Pictures/order_cancel.gif OnClick='cancel_item(this)' style='cursor:pointer'><BR>"
: "")
+ " <img id='div_staffelinfo" + id_key + "' src=../Pictures/staffel_info.gif OnClick=showStaffels('" + id_key + "') style='display:none;cursor: pointer;'>"
);
var new_price = aantal * bes_item_info.price;
// Create srtdeel
cell = tr.insertCell(-1);
cell.vAlign = 'top';
$(cell).html(bes_item_info.srtdeel_nr);
cell = tr.insertCell(-1);
$(cell).html(bes_item_info.srtdeel_omschrijving + "<input type='hidden' id='price" + id_key + "' value=" + new_price +">");
if (objFlex && objFlex[0]!='')
{
var flexkeys = [];
var flexdeels = [];
var flexitems = [];
var cell_arr = [];
for (i=0; i<objFlex[0].length; i++) {
cell_arr.push(objFlex[2][i] + ": " + objFlex[3][i]);
flexkeys.push(objFlex[0][i]);
tr.flexvals.push(escape(objFlex[1][i])); // escape om komma's in teksten te ondersteunen
flexdeels.push(bes_item_info.srtdeel_key);
flexitems.push(bes_item_info.item_key);
}
var newDiv = document.createElement("div");
newDiv.className = 'besitemflex';
var builder = [];
// Elke regel apart in een span zetten. Een regel met \n werkt niet in FF textContent!
for (var spanIndex in cell_arr)
{
$(newDiv).append($("<span>").text(cell_arr[spanIndex])).append("<br>");
}
$("#besitemflex").append(newDiv);
cell.appendChild(newDiv);
cell.innerHTML += "<input type='hidden' name='flexkeys" + id_key + "' id='flexkeys" + id_key + "' value='" + flexkeys.join(",") + "'>";
cell.innerHTML += "<input type='hidden' name='flexdeels" + id_key + "' id='flexdeels" + id_key + "' value='" + flexdeels.join(",") + "'>";
cell.innerHTML += "<input type='hidden' name='flexitems" + id_key + "' id='flexitems" + id_key + "' value='" + flexitems.join(",") + "'>";
}
else {
cell.innerHTML += "<input type='hidden' name='flexkeys" + id_key + "' id='flexkeys" + id_key + "' value='-1'>";
cell.innerHTML += "<input type='hidden' name='flexdeels" + id_key + "' id='flexdeels" + id_key + "' value=''>";
cell.innerHTML += "<input type='hidden' name='flexitems" + id_key + "' id='flexitems" + id_key + "' value=''>";
}
cell.innerHTML += "<div id='div" + id_key + "' style='display: \"none\"'></div>"+ "</nobr>";
// Create order unity field
cell = tr.insertCell(-1);
cell.vAlign = 'top';
cell.innerHTML = "<nobr>" + bes_item_info.eenheid + "</nobr>";
// Create Price field
cell = tr.insertCell(-1);
cell.innerHTML = "<nobr>" + currency_pref + num2curr(bes_item_info.price) + "</nobr>";
cell.vAlign = 'top';
cell.align = 'right';
// Create amount field
cell = tr.insertCell(-1);
cell.innerHTML = "<nobr>"
+ ((editable) // Als status is 4 dan worden alleen de flexkenmerken opgeslagen NFIT#13069
? ("<input size='5' type='text' onfocus='this.select()' style='text-align:right' onblur='onBlurAmount(this);' id='amount"
+ id_key + "' name='amount" + id_key + "' maxlength=5 value='"
+ (!isNaN(aantal) && aantal > 0?aantal:"") + "'>")
: aantal);
cell.innerHTML += "<input type='hidden' name='retour" + id_key + "' id='retour" + id_key + "' value='" + bes_item_info.retour + "'>" + "</nobr>";
cell.id = 'td' + id_key;
cell.align = 'right';
cell.vAlign = 'top';
if (received >= 0)
{
// Create received field
cell = tr.insertCell(-1);
cell.innerHTML = (received > 0? received : "");
cell.align = 'right';
cell.vAlign = 'top';
}
// Nu kan de staffel zichtbaar gemaakt worden in edit mode.
if (bes_item_info.staffelhtml)
{
$("#div" + id_key).html(bes_item_info.staffelhtml);
if (editable)
{
$("#div" + id_key).show();
$("#img_staffelinfo" + id_key).show();
}
}
// Create price field
cell = tr.insertCell(-1);
cell.id = "totprice"; // Elke regel heeft zijn eigen cell met id=totprice
$(cell).html(currency_pref + num2curr(bes_item_info.price*aantal));
cell.align = 'right';
cell.vAlign = 'top';
if ( !show_price)
cell.style.display = "none";
return $("#amount" + id_key)[0];
}
// Annuleer een item(regel)
function cancel_item(een_cell)
{
if (!confirm(L("lcl_bes_cancelItem")))
return;
var maxreached = maxArtikelReached();
var tr = $(een_cell).closest("tr")[0];
var index = tr.rowIndex;
var table = $("#sel_items")[0];
table.deleteRow(index);
// Artikel veld nu zeker weer wijzigbaar.
$("#besitem_show").attr('disabled', false);
if (maxreached)
{ // De tekst lcl_bes_max_artikel_reached weer verwijderen
$("#srtgroep_text").html("");
}
// Indien singlegroep is gezet kunnen binnen een catalogus uitsluitend artikelen uit dezelfde groep worden besteld. Alle artikelen in de bestellijst moeten dan uit dezelfde groep komen.
// Indien er geen bestelregels aanwezig zijn mag de artikelgroep worden gewijzigd.
if ($("#singlegroep").val() == 1)
{
var teller = 0;
// JGL: Wat is er mis met teller = $("#sel_items>tbody>tr").length ?
$("#sel_items>tbody>tr").each(function()
{
teller++;
});
// Indien readOnly (initieel) is gezet blijft de input box ook readonly. sgSrtgroep is dan ook niet gedefinieerd. $("#srtgroep_show")[0].style.display = "block" doet dan toch niets.
if (teller == 0 && !$("#srtgroep_show")[0].readOnly)
{
$("#srtgroep_ro")[0].style.display = "none";
$("#srtgroep_show")[0].style.display = "block";
}
}
StaffelKortingResult();
}
function checkInput()
{
var filled_lines = 0;
var blank_lines = 0;
var table = $("#sel_items")[0];
$("#sel_items>tbody>tr").each(
function () {
if (this.amount != 0)
filled_lines++;
else
blank_lines++;
});
if (!filled_lines)
{
alert(L("lcl_bes_noItems")); // Er zijn geen volledig ingevulde factuurregels.
return false;
}
// Form srtdeel_keys and amount_string
// and form flexkey_string and flexval_string of items
srtdeel_keys = [];
amount_string = [];
flexkey_string =[];
flexval_string = [];
flexdeel_string = [];
flexitem_string = [];
item_keys = [];
var id_key = "";
var p = 0;
$("#sel_items>tbody>tr").each(
function () {
id_key = this.bes_item_info.srtdeel_key + "_" + this.bes_item_info.item_key;
if ($("#flexkeys" + id_key).val() != -1) {
flexkey_string.push($("#flexkeys" + id_key).val());
flexval_string.push(this.flexvals);
flexdeel_string.push($("#flexdeels" + id_key).val());
flexitem_string.push($("#flexitems" + id_key).val());
}
srtdeel_keys.push(this.bes_item_info.srtdeel_key);
amount_string.push(this.amount);
item_keys.push(this.bes_item_info.item_key);
p++;
});
if (!p)
{
alert(L("lcl_bes_noItems"));
return false;
}
$("#srtdeel_keys").val(srtdeel_keys.join(","));
$("#amount_string").val(amount_string.join(","));
$("#item_keys").val(item_keys.join(","));
$("#flexkey_string").val(flexkey_string.join(","));
$("#flexval_string").val(flexval_string.join(","));
$("#flexdeel_string").val(flexdeel_string.join(","));
$("#flexitem_string").val(flexitem_string.join(","));
var cal = $('#calendar');
if (cal.length)
{
var levDate = new Date(parseInt($('#calendar').val()));
if( cal_isVrijeDag(levDate) && ! confirm( L("lcl_bes_date_holiday") ) )// Geen werkdag. Toch doorgaan?
return false;
}
return true;
}
function MakeOrder ()
{
// Standaard checks op verplichte velden, datum formaat, numeriek en float formaat, currency formaat.
if (!validateForm("u2"))
return false;
// Formulier specifieke checks
if (!checkInput())
return false;
document.forms.u2.submit();
return true; // disables button
}
function Communication()
{
bes_key = document.getElementById("RFO_key").value;
$.post("bes_levopm.asp",
{ bes_key: bes_key },
FcltCallback,
"json");
}
function showStaffels(pid_key)
{
if (document.getElementById('div' + pid_key).style.display == "block")
document.getElementById('div' + pid_key).style.display = "none";
else if (document.getElementById('div' + pid_key).style.display == "none")
document.getElementById('div' + pid_key).style.display = "block";
}
function PrsStaffelListResult(prs_bedrijf_key)
{
var sFeatures="dialogHeight:200px;dialogWidth:400px;status=no;resizable=yes;center=yes;";
var s = "../Bes/PrsStaffelInfo.asp?prs_bedrijf_key=" + prs_bedrijf_key;
var retourReturn = window.showModalDialog("ModalForm.asp?title=" + L("lcl_bes_staffel_details"), s, sFeatures);
}
function getTrText(td1, td2, td3, total_text, total_value, tdid)
{
var trText = '<tr>'
+ '<td><label>' + td1 + '</label>'
+ '<input type="hidden" id="' + tdid + '" name="' + tdid + '" value="' + total_value + '">'
+ '</td>'
+ '<td width="100px" align="right">' + td2 + '</td>'
+ '<td width="100px" align="right">' + td3 + '</td>'
+ '<td width="100px" id="' + tdid + '_txt" align="right">' + total_text + '</td>'
+ '</tr>';
return trText;
}
function addColor(pbedrag)
{
if (pbedrag > 0)
return '<span style="color: red">' + currency_pref + num2curr(pbedrag) + '</span>'
else if (pbedrag < 0)
return '<span style="color: green">' + currency_pref + num2curr(pbedrag) + '</span>'
else
return pbedrag
}
function showStaffelKortingResult( json)
{
if (json)
{
var opdrachtkorting = json.opdrachtkorting||0;
var opdrachtkortingbedrag = json.opdrachtkortingbedrag||0;
var grenswaardevanaf = json.grenswaardevanaf||0;
var grenswaardetot = json.grenswaardetot||0;
var bes_kosten = json.bes_kosten||0;
var bes_limiet = json.bes_limiet||0;
var prs_bedrijf_key = json.prs_bedrijf_key;
iakorting = json.iakorting||0;
totaalbedrag = json.totaalbedrag||0;
sgnaamstring = json.sgnaamstring;
sgkeystring = json.sgkeystring;
sgkortingstring = json.sgkortingstring;
sgaantalstring = json.sgaantalstring;
sgeenheidstring = json.sgeenheidstring;
// Als sgnaamstring dan zijn er groepsstaffels
if (sgnaamstring && (sgkeystring.length != sgnaamstring.length || sgkeystring.length != sgkortingstring.length || sgkeystring.length != sgaantalstring.length))
{
//alert(L("lcl_internal_error") + ": showStaffelKortingResult.asp, aantal staffelgroepen komt niet overeen met het aantal kortingen!");
}
var tabeltext = "";
var subtotaal = 0;
if (show_price)
{
tabeltext = '<table width="100%" cellspacing="0">';
for (var i = 0; i < sgnaamstring.length; i++)
{
if (sgkortingstring[i] != 0)
{
tabeltext += getTrText((sgkortingstring[i] * -1 < 0? L("lcl_bes_st_discount_gp") : L("lcl_bes_st_excharge_gp")) + ": " + sgnaamstring[i], sgaantalstring[i] + " x " + sgeenheidstring[i], addColor(sgkortingstring[i] * -1), "", sgkortingstring[i], "gs" + sgkeystring[i]);
subtotaal += sgkortingstring[i] * -1;
}
}
if (iakorting)
{
tabeltext += getTrText(((iakorting * -1) < 0? L("lcl_bes_st_discount_ind") : L("lcl_bes_st_excharge_ind")), "", addColor(iakorting * -1), "", iakorting, "ia");
subtotaal += (iakorting * -1);
}
if (subtotaal != 0)
{
tabeltext += getTrText(L("lcl_bes_st_discount_tot"), "", "", addColor(currency_pref + num2curr(subtotaal)), num2curr(subtotaal), "subtotaal");
}
if (opdrachtkortingbedrag)
{
if (grenswaardetot == "null")
{ // Als er geen grenswaarde tot is dan "Korting boven <20>500,00 ....."
var textstring = (opdrachtkortingbedrag > 0? L("lcl_bes_st_discount_above") : L("lcl_bes_st_excharge_above")) + num2curr(grenswaardevanaf) + ": " + opdrachtkorting + "%"
+ "&nbsp;<img src=../Pictures/order_info.gif OnClick=PrsStaffelListResult('" + prs_bedrijf_key + "') style=cursor:pointer>";
}
else
{ // Als er een grenswaarde tot is dan "Korting tot <20>1000,00 ....."
var textstring = (opdrachtkortingbedrag > 0? L("lcl_bes_st_discount_under") : L("lcl_bes_st_excharge_under")) + num2curr(grenswaardetot) + ": " + opdrachtkorting + "%"
+ "&nbsp;<img src=../Pictures/order_info.gif OnClick=PrsStaffelListResult('" + prs_bedrijf_key + "') style=cursor:pointer>";
}
tabeltext += getTrText(textstring, "", "", addColor(num2curr(opdrachtkortingbedrag * -1)), num2curr(opdrachtkortingbedrag), "okb");
}
if (bes_kosten)
{
tabeltext += getTrText(L("lcl_bes_st_tpcosts_under") + bes_limiet, "", "", addColor(currency_pref + num2curr(bes_kosten)), num2curr(bes_kosten), "bk");
}
tabeltext += getTrText(L("lcl_bes_total_cost"), "", "", currency_pref + num2curr(totaalbedrag), num2curr(totaalbedrag), "total");
tabeltext += "</table>";
}
$("#total_list").html(tabeltext);
FcltMgr.resized();
}
else
{
var tabeltext = "";
if (show_price)
{
tabeltext = '<table cellspacing="0">';
tabeltext += getTrText(L("lcl_bes_total_cost") + '&nbsp;' + currency_pref, "", "", 0, 0, "total");
tabeltext += "</table>";
$("#total_list").html(tabeltext);
}
}
}
function StaffelItem(item_key, aantal)
{
this.item_key = item_key;
this.aantal = aantal;
}
function onBlurAmount(aantal_cell)
{
checkAmount(aantal_cell);
StaffelKortingResult();
}
function StaffelKortingResult()
{
var staffelItemArray = new Array();
var table = $("#sel_items")[0];
$("#sel_items>tbody>tr").each(
function () {
var srtdeel_key = this.bes_item_info.srtdeel_key;
if (staffelItemArray[srtdeel_key]) // aantallen van een item bij elkaar optellen
staffelItemArray[srtdeel_key].aantal += tr.amount;
else
staffelItemArray[srtdeel_key] = new StaffelItem(srtdeel_key, this.amount, 10)
}
);
var itemstring = "";
var itemaantalstring = "";
var first = true;
for (var j in staffelItemArray)
{
if (staffelItemArray[j] != null && staffelItemArray[j].item_key)
{
itemstring += (!first? "," : "" ) + staffelItemArray[j].item_key;
itemaantalstring += (!first? "," : "" ) + staffelItemArray[j].aantal;
first = false;
}
}
if (itemstring != "")
{
// Haal (asynchroon) korting informatie op van de artikelen
var s = "bes_gettotals.asp?itemstring=" + itemstring + "&itemaantalstring=" + itemaantalstring;
$.getJSON(s, showStaffelKortingResult );
}
else
showStaffelKortingResult()
return;
}
function isGoodNumber(str, checkInteger)
{
var anum=/(^-?\d+$)|(^-?\d+\.\d*$)|(^-?\d*\.\d+$)/
if ( checkInteger ) {
anum=/(^-?\d+$)/
}
return anum.test(str);
}
function checkAmount(aantal_cell)
{
var tr = $(aantal_cell).closest("tr")[0];
var amount = parseInt(aantal_cell.value, 10);
var id_key = aantal_cell.id.substring(6);
var retour = tr.retour;
if (aantal_cell.value == '') aantal_cell.value = amount = 1;
if (aantal_cell.value == '' || isNaN(amount) ||
!isGoodNumber(aantal_cell.value, true) ||
amount > 99999)
{
alert(L("lcl_bes_invalidAmount"));
aantal_cell.focus();
return;
}
var bestelminimum = tr.bes_item_info.bestelminimum;
if (amount < bestelminimum) {
amount = bestelminimum;
alert(L("lcl_bes_bestelminimum") + bestelminimum);
aantal_cell.value = amount;
}
var veelvoud = tr.bes_item_info.veelvoud;
if ( (pcs = amount % veelvoud) != 0 ) {
amount = amount + veelvoud - pcs;
alert(L("lcl_bes_matchedveelvoud") + veelvoud);
aantal_cell.value = amount;
}
// Als er items geleverd zijn, mag het aantal daar niet onder komen
// Of laten we de leverancier dit dan gewoon afkeuren?
if ((amount < tr.bes_item_info.received && tr.orgAmount >= 0) ||
(amount > tr.bes_item_info.received && tr.orgAmount <= 0))
{
alert(L("lcl_bes_exceed_delivered"));
aantal_cell.focus();
return;
}
tr.amount = amount; // voor het gemak
if ( !show_price)
return;
var new_price = amount * tr.bes_item_info.price;
// Elke regel heeft zijn eigen cell met id=totprice
$("#totprice", tr).text(currency_pref + num2curr(new_price))
$("#price" + id_key).val(num2curr(new_price));
}