FSN#47307 Bestellijst met aantal 0 aanbieden

svn path=/Website/trunk/; revision=36731
This commit is contained in:
Jos Groot Lipman
2018-01-25 12:06:03 +00:00
parent dee79e7305
commit 089653a77d
7 changed files with 141 additions and 62 deletions

View File

@@ -156,11 +156,18 @@ model_bes_disc_params =
"label": L("bes_discipline_remoteconfirm"),
"typ": "check0"
},
"freeartikel": {
"dbs": "bes_disc_params_freeartikel",
"label": L("bes_discipline_freeartikel"),
"ordermode": {
"dbs": "bes_disc_params_bestelmode",
"label": L("bes_discipline_bestelmode"),
"typ": "number",
"LOV": L("bes_discipline_freeartikelLOV"),
"LOV": L("bes_discipline_bestelmodeLOV"),
"emptyoption": null
},
"photomode": {
"dbs": "bes_disc_params_fotomode",
"label": L("bes_discipline_fotomode"),
"typ": "number",
"LOV": L("bes_discipline_fotomodeLOV"),
"emptyoption": null
},
"punchouturl": {

View File

@@ -132,7 +132,8 @@
+ " , bes_disc_params_maxartikel"
+ " , bes_disc_params_kpautorisatie"
+ " , bes_disc_params_for_others"
+ " , bes_disc_params_freeartikel"
+ " , bes_disc_params_bestelmode"
+ " , bes_disc_params_fotomode"
+ " FROM bes_discipline bd, bes_disc_params bdp"
+ " WHERE bd.ins_discipline_key = " + disc_key
+ " AND bdp.bes_ins_discipline_key = bd.ins_discipline_key";
@@ -165,7 +166,9 @@
maxartikel : oRs("bes_disc_params_maxartikel").Value? oRs("bes_disc_params_maxartikel").Value : -1,
kpautorisatie : oRs("bes_disc_params_kpautorisatie").Value == 1,
disc_params_for_others : oRs("bes_disc_params_for_others").Value == 1,
isFreeArticle : oRs("bes_disc_params_freeartikel").Value == 1, // {0=ouderwets, 1=vrij artikelen, 2=met suggest voor bestaande (future)}
bestelmode : oRs("bes_disc_params_bestelmode").Value, // 0=ouderwets artikelselector, 1=vrij artikelen, 2=bestellijst
fotomode : oRs("bes_disc_params_fotomode").Value, // 0=ouderwets bij kiezen, 1=ook in bestellijst
isFreeArticle : oRs("bes_disc_params_bestelmode").Value == 1,
can_concept : oRs("bes_disc_params_herfiat").Value > 0 // 5.1.2 functionaliteit
}
oRs.Close();
@@ -1027,7 +1030,16 @@
for (var i = 0; i < srtdeel_keys.length; i++)
{
if (itemaantal_arr[i] == 0) // Bij een bestel_lijst zijn er heel veel met aantal 0
{
ItemArray.push({ item_key : srtdeel_keys[i],
aantal : itemaantal_arr[i],
prijs : null,
eenheid : null,
staffelgroep: null
});
continue;
}
sql = "SELECT sd.bes_staffeltabel_key staffelgroep"
+ ", bst.bes_staffeltabel_naam staffelgroepnaam"

View File

@@ -211,7 +211,9 @@ else // nieuwe bestelling. Defaults bepalen
var psrt_keys = getQParamIntArray("ps", []); // array met srtdeel_key's
var pamounts = getQParamIntArray("pn", []); // array met aantallen
var auto_bestellijst = true; // TODO!!
if (bes_key > 0 && bes_disc_info.bestelmode == 2) // Bij *wijzigen* altijd gewone interface
bes_disc_info.bestelmode = 0;
var auto_bestellijst = bes_disc_info.bestelmode == 2;
bes_bestelling.flex_defaults = {};
var flex_defaults = getQParam("flex_defaults", "").split("&"); // flex_defaults=bestellingid=12345
@@ -235,6 +237,8 @@ else // nieuwe bestelling. Defaults bepalen
var user_kpnaam = "<%=safe.jsstring(user.afdeling().kpn_naam())%>";
var inclBTW = <%=bes_bestelling.inclBTW%> == 1;
var maxartikel = <%=bes_disc_info.maxartikel%>;
var fotomode = <%=bes_disc_info.fotomode%>;
var bestelmode = <%=bes_disc_info.bestelmode%>;
</script>
<% if (bes_key > 0)
{
@@ -827,55 +831,58 @@ else // nieuwe bestelling. Defaults bepalen
}
else // Gewoon artikel uit catalogus kiezen
{
FCLTartikelgroepselector("srtgroep",
"sgSrtgroep",
{ label: L("lcl_bes_srtgroup"),
artikelgroepKey: bes_bestelling.srtgroep,
disc_key: bes_bestelling.dis_key,
onChange: bes_disc_info.isFreeArticle?null:"onChangeArtikelgroep",
required: bes_disc_info.isFreeArticle,
extraParamField: "singlegroep",
extracode: "S",
readonly: (bes_key > 0 && bes_bestelling.singlegroep)
});
sql = " SELECT bs.bes_staffeltabel_key"
+ ", bs.bes_staffeltabel_naam"
+ " FROM bes_staffeltabel bs"
+ " WHERE EXISTS (SELECT sd.bes_srtdeel_key"
+ " FROM bes_v_aanwezigsrtgroep sg"
+ ", bes_v_aanwezigsrtdeel sd"
+ " WHERE sg.ins_discipline_key = " + bes_bestelling.dis_key
+ " AND sg.bes_srtgroep_key = sd.bes_srtgroep_key"
+ " AND sd.bes_staffeltabel_key = bs.bes_staffeltabel_key)"
+ " ORDER BY 2";
oRs = Oracle.Execute(sql);
if (!oRs.eof)
if (bes_disc_info.bestelmode == 0) // Gewone artikel selector
{
FCLTselector("staffelgroep", sql, // filter op suggest besitem
{ label: L("lcl_bes_staffelgroep"),
emptyOption: ""
}
);
}
else
{ // Staffelgroep hidden weergeven met -1 als waarde (geen staffelgroep geselecteerd)
%> <input type="hidden" id="staffelgroep" tabindex="-1" class="fldselect" value="-1">
<% }
oRs.Close();
FCLTartikelgroepselector("srtgroep",
"sgSrtgroep",
{ label: L("lcl_bes_srtgroup"),
artikelgroepKey: bes_bestelling.srtgroep,
disc_key: bes_bestelling.dis_key,
onChange: bes_disc_info.isFreeArticle?null:"onChangeArtikelgroep",
required: bes_disc_info.isFreeArticle,
extraParamField: "singlegroep",
extracode: "S",
readonly: (bes_key > 0 && bes_bestelling.singlegroep)
});
FCLTbesitemselector("besitem",
"sgBesItem",
{ label: L("lcl_bes_srtdeel"),
bessrtdeel_key: -1,
disc_key: bes_bestelling.dis_key,
readonly: !this_bes.canItemsChange,
urlAdd: [{urlParam: "srtgroep_key", field: "srtgroep"},
{urlParam: "staffel_key", field: "staffelgroep"}],
onChange: "load_item_info",
favouritelist: true
sql = " SELECT bs.bes_staffeltabel_key"
+ ", bs.bes_staffeltabel_naam"
+ " FROM bes_staffeltabel bs"
+ " WHERE EXISTS (SELECT sd.bes_srtdeel_key"
+ " FROM bes_v_aanwezigsrtgroep sg"
+ ", bes_v_aanwezigsrtdeel sd"
+ " WHERE sg.ins_discipline_key = " + bes_bestelling.dis_key
+ " AND sg.bes_srtgroep_key = sd.bes_srtgroep_key"
+ " AND sd.bes_staffeltabel_key = bs.bes_staffeltabel_key)"
+ " ORDER BY 2";
oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
FCLTselector("staffelgroep", sql, // filter op suggest besitem
{ label: L("lcl_bes_staffelgroep"),
emptyOption: ""
}
);
}
else
{ // Staffelgroep hidden weergeven met -1 als waarde (geen staffelgroep geselecteerd)
%> <input type="hidden" id="staffelgroep" tabindex="-1" class="fldselect" value="-1">
<% }
oRs.Close();
FCLTbesitemselector("besitem",
"sgBesItem",
{ label: L("lcl_bes_srtdeel"),
bessrtdeel_key: -1,
disc_key: bes_bestelling.dis_key,
readonly: !this_bes.canItemsChange,
urlAdd: [{urlParam: "srtgroep_key", field: "srtgroep"},
{urlParam: "staffel_key", field: "staffelgroep"}],
onChange: "load_item_info",
favouritelist: true
});
}
// Het informatieblok van een geselecteerd artikel
%>
<tr>
@@ -907,6 +914,9 @@ else // nieuwe bestelling. Defaults bepalen
<td colspan="2" class="iteminfo2" title="<%=L("lcl_bes_multiple")%>" id="veelvoud_text"></td></tr>
<tr id="stock_tr" style="display:none">
<td colspan="2" class="iteminfo2" title="<%=L("lcl_bes_stock")%>"><%=L("lcl_bes_stock")%>: <span id="stock_text"></span></td></tr>
<% if (bes_disc_info.bestelmode == 0) // Gewone artikel selector
{
%>
<tr id="aantal_tr" style="display:none">
<td><label><%=L("lcl_bes_amount")%>:</label><td><input onfocus="this.select()" class="fldbescnt" type="text" id="aantal_text" value="1"></td></tr>
<tr id="buttons_tr" style="display:none"><td colspan="2">
@@ -917,6 +927,9 @@ else // nieuwe bestelling. Defaults bepalen
CreateButtons(buttons, { showIcons: true })
%></div>
</td></tr>
<%
}
%>
</table>
</td>
</tr>
@@ -932,6 +945,13 @@ else // nieuwe bestelling. Defaults bepalen
<tr>
<th></th>
<!--<th><%=L("lcl_bes_srtgroup")%></th>-->
<% if (bes_disc_info.fotomode == 1) // Foto erbij
{
%>
<th><%=L("lcl_bes_image")%></th>
<%
}
%>
<th><%=L("lcl_bes_srtdeel_nr")%></th>
<th><%=L("lcl_bes_srtdeel")%></th>
<th><%=L("lcl_bes_unity")%></th>

View File

@@ -236,6 +236,7 @@ var currency_suff = '<%=S("currency_suff")%>';
var show_price = '<%=show_price%>';
var lower = false;
var inclBTW = <%=bes_bestelling.inclBTW%> == 1;
var fotomode = <%=bes_disc_info.fotomode%>;
function bes_accept()
{
@@ -277,6 +278,13 @@ function bes_reject()
<thead>
<tr>
<th></th>
<% if (bes_disc_info.fotomode == 1) // Foto erbij
{
%>
<th><%=L("lcl_bes_image")%></th>
<%
}
%>
<th><%=L("lcl_bes_srtdeel_nr")%></th>
<th><%=L("lcl_bes_srtdeel")%></th>
<th><%=L("lcl_bes_unity")%></th>

View File

@@ -33,7 +33,8 @@ function generateDetails(bes_key, params)
+ " , s.bes_srtdeel_nr"
+ ", " + lcl.xsqla('s.bes_srtdeel_omschrijving', 's.bes_srtdeel_key')
+ " , bes_srtdeel_details_loc"
+ " , i.bes_bestelling_item_aantal"
+ " , NVL2(s.bes_srtdeel_image, p.prs_bedrijf_image_loc || s.bes_srtdeel_image, NULL) foto"
+ " , i.bes_bestelling_item_aantal"
+ ", " + lcl.xsqla('g.bes_srtgroep_omschrijving', 'g.bes_srtgroep_key')
+ (edit
? " , COALESCE(bes.getsrtdeelprijs(i.bes_srtdeel_key, null) , 0)"
@@ -61,14 +62,17 @@ function generateDetails(bes_key, params)
+ " , bes_srtgroep g"
+ " , bes_bestelling b"
+ " , bes_staffeltabel bst"
+ " , prs_bedrijf p"
+ " WHERE i.bes_bestelling_key = " + bes_key
+ " AND i.bes_srtdeel_key = s.bes_srtdeel_key"
+ " AND b.bes_bestelling_key = i.bes_bestelling_key"
+ " AND s.bes_srtgroep_key = g.bes_srtgroep_key"
+ " AND bst.bes_staffeltabel_key(+) = s.bes_staffeltabel_key"
+ " AND p.prs_bedrijf_verwijder IS NULL" // want ook die geven later een error en kunnen niet besteld worden
+ " AND s.prs_bedrijf_key = p.prs_bedrijf_key"
+ " ORDER BY bes_srtdeel_nr, UPPER(bes_srtdeel_omschrijving)"; // XLAT??
}
else // punchout data heeft niets met staffels o.i.d.
else // punchout en bestellijst hebben niets met staffels o.i.d.
{
sql = "SELECT ins_discipline_key"
+ " , s.bes_srtdeel_key"
@@ -76,6 +80,7 @@ function generateDetails(bes_key, params)
+ ", " + lcl.xsqla('s.bes_srtdeel_omschrijving', 's.bes_srtdeel_key')
// + " , 0 bes_bestelling_item_aantal" // komt straks uit pamounts
+ " , bes_srtdeel_details_loc"
+ " , NVL2(s.bes_srtdeel_image, p.prs_bedrijf_image_loc || s.bes_srtdeel_image, NULL) foto"
+ ", " + lcl.xsqla('g.bes_srtgroep_omschrijving', 'g.bes_srtgroep_key')
+ " , bes.getsrtdeelprijs (s.bes_srtdeel_key, NULL) prijs"
+ " , s.bes_srtdeel_btw"
@@ -89,11 +94,18 @@ function generateDetails(bes_key, params)
+ ", " + lcl.xsqla('s.bes_srtdeel_opmerking', 's.bes_srtdeel_key')
+ " FROM bes_srtdeel s"
+ " , bes_srtgroep g"
+ " , prs_bedrijf p"
+ " WHERE "
+ (params.auto_bestellijst
+ (params.auto_bestellijst // Dan alle artikelen van deze discipline
?"g.ins_discipline_key = " + params.disc_key
+ " AND bes_srtdeel_verwijder IS NULL"
+ " AND bes_srtgroep_verwijder IS NULL"
+ " AND (bes_srtdeel_vervaldatum IS NULL"
+ " OR bes_srtdeel_vervaldatum > SYSDATE)"
:"s.bes_srtdeel_key IN (" + psrt_keys.join(", ") + ")")
+ " AND s.bes_srtgroep_key = g.bes_srtgroep_key"
+ " AND p.prs_bedrijf_verwijder IS NULL" // want ook die geven later een error en kunnen niet besteld worden
+ " AND s.prs_bedrijf_key = p.prs_bedrijf_key"
+ " ORDER BY g.bes_srtgroep_volgnr"
+ " , " + lcl.xsql('g.bes_srtgroep_omschrijving', 'g.bes_srtgroep_key')
+ " , s.bes_srtdeel_volgnr"
@@ -205,14 +217,16 @@ function generateDetails(bes_key, params)
}
}
}
// hieronder niet te veel spaties toevoegen: die gaan allemaal over het lijntje!
var fotopad = oRs("foto").Value;
if (fotopad && fotopad.indexOf("/") == -1) // Nog geen enkele slash? Dan moet het wel lokaal zijn.
fotopad = S("bes_image_path") + oRs("ins_discipline_key").Value + "/" + fotopad;
%>
details_Items[<%=oRs("bes_bestelling_item_key").value%>] =
{ srtdeel_key: <%=oRs("bes_srtdeel_key").value%>,
srtdeel_nr: "<%=safe.jsstring(oRs("bes_srtdeel_nr").value)%>",
srtdeel_omschrijving: "<%=safe.jsstring(oRs("bes_srtdeel_omschrijving").value)%>",
srtdeel_details_loc: "<%=safe.jsstring(oRs("bes_srtdeel_details_loc").value)%>",
srtdeel_fotopad: "<%=safe.jsstring(fotopad)%>",
srtgroup_text: "<%=safe.jsstring(oRs("bes_srtgroep_omschrijving").value)%>",
amount: <%=amount%>,
price: <%=safe.jsfloat(oRs("prijs").value || 0)%>,

View File

@@ -333,6 +333,16 @@ function CreateRow(bes_item_info, aantal, received, editable, objFlex, urole)
var new_price = aantal * bes_item_info.price;
if (window.fotomode == 1)
{
// Create foto
cell = tr.insertCell(-1);
cell.vAlign = 'top';
cell.className = 'bessrtdeelfoto';
if (bes_item_info.srtdeel_fotopad)
$(cell).html("<img src='{0}'>".format(bes_item_info.srtdeel_fotopad));
}
// Create srtdeel
cell = tr.insertCell(-1);
cell.vAlign = 'top';
@@ -381,7 +391,7 @@ function CreateRow(bes_item_info, aantal, received, editable, objFlex, urole)
}
cell.innerHTML += "<div id='div" + id_key + "' style='display: \"none\"'></div>"+ "</nobr>";
// Create order unity field
// Create order unit field
cell = tr.insertCell(-1);
cell.vAlign = 'top';
cell.innerHTML = "<nobr>" + bes_item_info.eenheid + "</nobr>";
@@ -778,7 +788,13 @@ function checkAmount(aantal_cell)
var id_key = aantal_cell.id.substring(6);
var valid = true;
var error = "";
if (aantal_cell.value == '') aantal_cell.value = amount = 1;
if (aantal_cell.value == '')
{
if (window.bestelmode == 2) // Bij autobestellijst staan we gewoon 0 of leeg toen
aantal_cell.value = amount = 0;
else
aantal_cell.value = amount = 1;
}
valid = !isNaN(amount) && isGoodNumber(aantal_cell.value, true,false,-1,-1) && amount <= 99999;
validateField(aantal_cell, valid, L("lcl_bes_invalidAmount"));
if (!valid)

View File

@@ -3622,13 +3622,15 @@ td.iconmenu {
td.iconmenu h3 {
font-weight: normal;
}
td.iconmenu img {
td.iconmenu img, td.bessrtdeelfoto img {
width: 100px;
height: 100px;
padding: 5px;
text-align: center;
border: 1px solid #ffffff;
}
td.bessrtdeelfoto {
text-align: center;
}
.iconlabel {
background-color: #fcfcfc;