Produkte mittels Gutschein zusteuern

Sie haben die Möglichkeit, für jeden Gutschein bis zu 3 Produkte im Warenkorb zuzusteuern. Diese müssen bei der Erstellung eines Gutscheins im Gutschein-Generator angegeben werden. Sie werden automatisch in den Warenkorb gelegt, sobald der Käufer auf der Warenkorbseite die Gutscheinnummer eingibt und der Gutschein akzeptiert worden ist.

Hierbei gelten folgende Bedingungen und Regeln:

Zusteuerbare Produkte müssen als solche gekennzeichnet sein (im WSPManager oder Warenwirtschaftssystem, Feld VoucherProduct).

Jedem zusteuerbaren Produkt muss eine eindeutige Produktnummer zugewiesen sein.

Bei zusteuerbaren Produkten werden Varianten unterstützt.

Ein zusteuerbares Produkt kann aus dem Warenkorb heraus geändert werden.

Ein zusteuerbares Produkt kann nicht direkt aus dem Warenkorb gelöscht werden. Nur mit dem Entfernen des Gutscheins werden alle zugesteuerten Produkte gelöscht.

Die Menge eines zugesteuerten Produkts ist immer eins und kann nicht geändert werden.

Ein zusteuerbares Produkt kann nicht von der Produktansicht aus in den Warenkorb gelegt werden.

Uploadprodukte, Set-Produkte oder Produkte mit dynamischem Lagerbestand können nicht als zusteuerbare Produkte verwendet werden.

Zusteuerbare Produkte sollten nur in versteckten Kategorien geführt werden, damit sie nicht über die Suche auffindbar sind.

Zugesteuerte Produkte werden in den Bestelldaten als solche gekennzeichnet.

Integration

Gehen Sie folgendermaßen vor, um die Funktionalität "Produkte mittels Gutschein zusteuern" in Ihrem Shop einzubauen:

Schritt 1: Freischaltung des Gutschein-Generators

Falls Sie den Gutschein-Generator nutzen wollen, muss dieser zunächst freigeschaltet werden. Bitte wenden Sie sich dazu an Ihren WEBSALE-Ansprechpartner.


Hinweis:

Wenn Sie Gutscheine verwenden wollen, die von einem externen System generiert werden (und deshalb nicht im WEBSALE-Format vorliegen), müssen Sie im Abschnitt <Voucher-Txt> der Shopkonfiguration shop.config den Parametereintrag ExternalVouchers-Allow = yes hinzufügen.

Näheres siehe Referenz: Abschnitt "Voucher-Txt" der shop.config

Schritt 2: "Anbieten von Gutscheinen" integrieren

Wenn Sie in Ihrem Shop noch keine Gutscheine anbieten, müssen Sie zunächst die Gutscheineingabe integrieren: auf der Warenkorbseite (ws_basket.htm) und/oder auf der Bestellübersichtsseite (ws_place_order.htm).

Wegweiser: Gutschein-Eingabe vorsehen

Schritt 3: Gutschein konfigurieren im OSB-Dienst Gutschein-Generator

Die Produkte, die bei Einlösung des Gutscheins in den Warenkorb gelegt werden sollen, werden beim Anlegen des Gutscheins im OSB-Dienst Gutschein-Generator im Feld " Produkte für Warenkorb" definiert.

Beachten Sie hierbei die oben genannten Bedingungen und Regeln.

Schritt 4: Hinweismeldung konfigurieren

Legen Sie eine Hinweismeldung fest, die angezeigt wird, wenn ein Käufer versucht, ein zusteuerbares Produkt von der Produkt-Detailansicht aus direkt in den Warenkorb zu legen. Diese Meldung tragen Sie in der Shopkonfiguration shop.config im Abschnitt <NotifyMessages-Txt> ein:

<NotifyMessages-Txt>
   ...
   VoucherProduct = Dieses Produkt ist nur in Verbindung mit einem Gutschein verfügbar.
   ...
</NotifyMessages-Txt>

Referenz: Abschnitt NotifyMessages-Txt

Schritt 5: "Nicht-aufgelöste" Gutscheinprodukte zusteuern (optional)

Wenn Sie Gutscheinprodukte mit Varianten zusteuern möchten, bei denen der Käufer im Warenkorb die Auswahl der gewünschten Variante selber vornehmen soll, ist folgende Einstellung im Abschnitt <Voucher-Txt> der Shopkonfiguration shop.config nötig:

<Voucher-Txt>
   ...
   UnresolvedVoucherProducts-Allow = yes 
   ...
</Voucher-Txt>

Referenz: Abschnitt Voucher-Txt

Schritt 6: Mengeneingabefeld auf der Produkt-Detailansicht anpassen

Da die Menge eines zugesteuerten Produktes immer eins ist, muss auf der Produkt-Detailansicht bei zugesteuerten Produkten das Mengeneingabefeld als verstecktes Eingabefeld platziert werden:

...
   <form action="~FORM-Product~" method="post">
   ...
      {PR-VoucherProduct}
         <input type="hidden" name="~PR-Quantity_Input~" value="1">
      {/PR-VoucherProduct}
      {!PR-VoucherProduct}
         <input type="text" name="~PR-Quantity_Input~" value="~PR-Quantity~">
      {/!PR-VoucherProduct}
   ...
   </form>
...

Referenz: PR-VoucherProduct

Schritt 7: Kennzeichnung auf der Produkt-Detailansicht (optional)

Sie können ein zugesteuertes Produkt auf der Produkt-Detailansicht als solches kennzeichnen, indem Sie einen Hinweis einblenden, dass dieses Produkt nur in Verbindung mit einem Gutschein bestellbar ist.

...
   {PR-VoucherProduct}
      Bitte beachten Sie: Dieses Produkt ist nur in Verbindung mit einem Gutschein verfügbar.
   {/PR-VoucherProduct}  
...

Referenz: PR-VoucherProduct

Schritt 8: Kennzeichnung im Warenkorb (optional)

Sie können ein zugesteuertes Produkt im Warenkorb als solches kennzeichnen, indem Sie einen Hinweis einblenden, dass dieses Produkt nur aufgrund des eingegebenen Gutscheins dem Warenkorb hinzugefügt wurde:

...
   {@BASKET-PR-Data}
      ...
      {BASKET-PR-VoucherProduct}
         Dieses Produkt erhalten Sie aufgrund Ihres eingegebenen Gutscheins.
      {/BASKET-PR-VoucherProduct}
      ...
   {/@BASKET-PR-Data}
...

Referenz: BASKET-PR-VoucherProduct

Schritt 9: Hinweis bei "nicht-aufgelösten" Gutscheinprodukten im Warenkorb anzeigen (optional)

Wenn sich nicht-aufgelöste Gutscheinprodukte im Warenkorb befinden, kann die Bestellung nicht abgeschlossen werden. Ergänzen Sie für diesen Fall folgende Hinweismeldung:

...
   {@BASKET-PR-Data}
      ...
      {BASKET-PR-UnresolvedVoucherProduct}
         Bitte wählen Sie die gewünschte Variante Ihres Gutscheinproduktes aus, um die Bestellung abschließen zu können.
      {/BASKET-PR-UnresolvedVoucherProduct}
      ...
   {/@BASKET-PR-Data}
...

Referenz: BASKET-PR-UnresolvedVoucherProduct

Schritt 10: Variante bei "nicht-aufgelösten" Gutscheinprodukten im Warenkorb auswählbar machen (optional)

Damit der Käufer die Variante des Produkts im Warenkorb auswählen kann, sind Ergänzungen auf den Templates nötig, die wir im folgenden Beispiel (mit FastInclude) beschreiben:

Ergänzungen in der FastInclude-Datei (incl_fast_includes.htm) im Abschnitt Incl-Basket
 

{BASKET-PR-Data}
   {@BASKET-PR-Data}
      {ST-BasketPage}
         ~DC-FPshowVariationBtn_reset~
         {BASKET-PR-UnresolvedVoucherProduct}
            ~DC-FPshowVariationBtn_set(true)~
         {/BASKET-PR-UnresolvedVoucherProduct}
      
         {BASKET-PR-VoucherProduct}
            {BASKET-PR-Variations}
               ~DC-FPshowVariationBtn_set(true)~
            {/BASKET-PR-Variations}
         {/BASKET-PR-VoucherProduct}

         {VOUCHER-VoucherProducts_data}
            {@VOUCHER-VoucherProducts_data}
               ~DC-SPvoucherProductIndex_set($VOUCHER-VoucherProducts_data_prodnumber$)~
            {/@VOUCHER-VoucherProducts_data}
         {/VOUCHER-VoucherProducts_data}
         
        {DC-FPshowVariationBtn(true)}
          <button type="button" id="wsVoucherProductVariationBtn" onclick="ws_AJAXloadTemplate('~BASKET-PR-ChangeLink~'+'&tpl=incl_voucher_product_change.htm&otp1=~BASKET-PR-ProdIndex~', '~WS-CharSet~', ws_AJAXVoucherProductChangeQuantityStart, ws_AJAXVoucherProductChangeQuantityError, 'ws_AJAXVoucherProductChangeQuantityResponseSuccess()', 'ws_AJAXVoucherProductChangeQuantityResponseError()');"{BASKET-PR-UnresolvedVoucherProduct} style="display:none"{/BASKET-PR-UnresolvedVoucherProduct}>Voucher Produkt wählen</button>            
          <script>
             function ws_AJAXVoucherProductChangeQuantityStart() {}
             function ws_AJAXVoucherProductChangeQuantityError() {}
             function ws_AJAXVoucherProductChangeQuantityResponseSuccess() {}
             function ws_AJAXVoucherProductChangeQuantityResponseError() {}
          </script>

          <script>
             function SubmitSelection() {}
             $(document).on("change", '.select_dep_variations', function() {
                $("#voucherProductForm_~BASKET-PR-ProdIndex~ input[name='js_dep_var']").val("on");
             });
          </script>
        {/DC-FPshowVariationBtn(true)}       
      {/ST-BasketPage}
   {/@BASKET-PR-Data}
{/BASKET-PR-Data}

Die Anzeige für die Auswahl, außerhalb von FORM-Basket:

{Incl-Basket}
    {ST-BasketPage}
        <div id="voucherProduct">
            <div id="voucherProductChangeAjax_~DC-SPvoucherProductIndex~"></div>
        </div>
    {/ST-BasketPage}
{/Incl-Basket}

Neues Template incl_voucher_product_change.htm

Hinterlegen Sie in der Shopkonfiguration shop.config im Abschnitt <Templates> den Namen dieses neuen FastInclude-Templates, z. B. incl_voucher_product_change.htm:

<Templates>
   ...
   FastIncludes2      = incl_voucher_product_change.htm   
   ...
</Templates> 

Referenz: Abschnitt Templates

Legen Sie ein neues Template an und speichern Sie es unter dem oben gewählten Namen im Template-Verzeichnis Ihres Shops, z. B. benutzer/templates/translation.

Fügen Sie auf diesem Template folgenden Code ein:

...
<WS-Ajax-voucherProductChangeAjax_~WS-OTP1~>
   {PR-Data}
      <form action="~FORM-Product~" method="Post" id="voucherProductForm_~PR-Number~">
            {PR-Thumbnail}
               <img src="~PR-Thumbnail~" width="150" height="150">
            {/PR-Thumbnail}
            {PR-DepVariationName1}
               ~PR-DepVariationName1~
               ~PR-DepVariationList1~
            {/PR-DepVariationName1}
            {PR-DepVariationName2}
               ~PR-DepVariationName2~
               ~PR-DepVariationList2~
            {/PR-DepVariationName2}
            {ST-PR_Change}
               ~PR-PrintHiddenDepVariations~
               <input type="hidden" name="tpl" value="incl_voucher_product_change.htm">
               <input type="hidden" name="otp1" value="~WS-OTP1~">
               <input type="hidden" name="otp2" value="~PR-Number~">
               <input type="hidden" name="~PR-Quantity_Input~" value="~PR-Quantity~">
            {/ST-PR_Change}
         </div>
         <button type="submit" {!ST-DepVar_OK} disabled{/!ST-DepVar_OK}{ST-DepVar_OK}{PR-Inventory}
         {PR-InventoryState(red-hard)} disabled{/PR-InventoryState(red-hard)}{/PR-Inventory}{/ST-DepVar_OK}>Speichern</button>
      </form>
   {/PR-Data}
</WS-Ajax-voucherProductChangeAjax_~WS-OTP1~>
...