Prämienartikel und Fehler Numeric value out of range

An dieser Stelle habe ich keine wirkliche Frage da Problem gelöst, aber eher ein Hinweis. Möchte man Prämienartikel verwenden, so läuft man als Shopbertreiber schnell Gefahr, dass irgendwann der Warenkorb bzw. der komplette Bestellprozess nicht mehr funktioniert. Und stattdessen nur noch:

Numeric value out of range: 1690 BIGINT UNSIGNED value is out of range

als Fehlermeldung angezeigt wird. Das passiert immer dann, wenn Prämienartikel auch im Abverkauf stehen und der Lagerbestand unter 0 gesunken ist. Das kann schnell passieren. Ok, in der Doku heißt es dazu:

Prämienartikel werden nicht auf Lagerbestand geprüft. Wenn Artikel als Prämien angeboten werden, müssen diese immer mit ausreichendem Lagerbestand im Shop verfügbar sein.

Wenn hier keine Prüfung im Core stattfindet, warum wird dann nicht einfach im Template abgefragt? Wieso lässt man den Shopbetreiber so auflaufen? Und warum wird in der Doku nicht darauf hingewiesen, dass in solchen Fällen der komplette Bestellprozess nicht mehr geht? Dabei hätte man mit wenigen Zeilen dieses Problem umgehen können.

Ein Beispiel mit eigenen Theme:

{extends file='parent:frontend/checkout/premiums.tpl'}

{* Product slider item *}
{block name='frontend_checkout_premium_slider_item'}

  {if $premium.sArticle.ordernumber && $premium.sArticle.laststock == 0 }
    {$smarty.block.parent}

  {else if $premium.sArticle.ordernumber && $premium.sArticle.laststock == 1 && $premium.sArticle.instock > 0 }
    {$smarty.block.parent}

  {/if}

{/block}

In einem Test-Shop wurden auch tote Prämienartikel angezeigt, also Artikel ohne Bestellnummer, ohne Bilder, ohne Name. Woher das kommt weiß ich nicht. Aber mit „laststock“ und „instock“ könnte man generell abfragen, ob diese Prämienartikel in ausreihender Stückzahl vorhanden ist. Schade, dass diese 4 Zeilen nicht Standard im Shop sind.

Super, hat mir sehr geholfen. Es gibt nur noch ein Problem, dass der Bestand des Artikels nicht angepasst wird, wenn dieser als Prämie erworben wird.

Gibt es dafür eine Lösung?

 

LG