Jobticket

sand vorbereiteIn der Administration kann unter Verwaltung → Shops → bearbeiten → Vorlagen das Jobticket pro Shop aktiviert werden. Hierfür muss die Vorlage befüllt werden. Das Jobticket wird aktiviert wenn die Vorlage Daten enthält. Dann wird diese jeweils an den eingestellten Stellen angezeigt / ausgegeben.

Umbruch auf eine zweite Seite:

<div style="PAGE-BREAK-AFTER: always">...</div>

Folgende Variablen stehen für das Jobticket zur Verfügung:


VariableTypBeschreibung
{$order}
object
Bestellung
{$cart} 
array
Warenkorb
{$orderInfo} 
array
Zusätzliche Bestellinformationen
{$module}
array
Für Abfragen ob jeweiliges Modul aktiv ist
{$Payment}
array
Zahlungsart (Live)
{$Firma1}
string
Lieferadresse: Firma
{$Firma2}
string
Lieferadresse: Firma 2
{$Titel}
string
Lieferadresse: Titel
{$Ansprechpartner}
string
Lieferadresse: Ansprechpartner
{$Strasse}
string
Lieferadresse: Straße
{$PLZ}
string
Lieferadresse: PLZ
{$Ort}
string
Lieferadresse: Ort
{$Kostenstelle}
string
Kostenstelle
{$InvoiceCompany}
string
Rechnungsadresse: Firma
{$InvoiceCompany2}
string
Rechnungsadresse: Firma 2
{$InvoiceCompany3}
string
Rechnungsadresse: Firma 3
{$InvoiceTitle}
string
Rechnungsadresse: Titel
{$InvoiceName}
string
Rechnungsadresse: Ansprechpartner
{$InvoiceStreet} 
string
Rechnungsadresse: Straße
{$InvoiceZIP}
string
Rechnungsadresse: PLZ
{$InvoiceTown}stringRechnungsadresse: Ort
{$InvoiceCountry}
string
Rechnungsadresse: Land
{$InvoiceEMail}
string
Rechnungsadresse: E-Mail
{$Bestelldatum}
string
Bestelldatum
{$DeliveryDate}
string
Lieferdatum
{$InvoiceDate}
string
Bestelldatum formatiert (%e.%m.%Y)
{$Datum}
string
Bestelldatum formatiert (%e.%m.%Y)
{$Bestellcode}
string
Auftrags-Code (berücksichtigt aus den individuellen Code)
{$OrderCode}
string
6-stelliger Auftrags-Code
{$LieferscheinCode}
string
6-stelliger Auftrags-Code
{$Rechungscode}
string
6-stelliger Auftrags-Code
{$OrderNr}
string
Bestellnummer
{$LieferscheinNr}
string
Bestellnummer
{$InvoiceNr} 
string
Bestellnummer
{$billNumber}
string
Bestellnummer für Dienstleister
{$Lieferscheindatum}
string
Datum zum Zeitpunkt des Aufrufes
{$Bemerkung}
string
Bemerkung
{$CustomerUser}
array
Daten des Benutzers (live)
{$Kundendaten} 
array
Daten des Benutzers (live)
{$Kunde} 
array
Kundennummer des Benutzers (live)
{$ShopURL}
string
Url des Kunden-Shops
{$payment}
array
Zahlungsart 
{$delivery}
array
Versandart


Code-Vorlagen für das Jobticket

MwSt
# Mit dem folgenden Beispiel kann die verwendete MwSt satz und den dazugehörigen Wert ausgeben. 
# Falls der Warenkorb einen der beiden Steuersätze nicht hat, wird diese nicht angezeigt mit "floatval($vatValue) !== 0.0".

{foreach from=$taxSplitted->orderItemTaxSums item=vat key=vatKey}
    {if floatval($vat->taxValue) !== 0.0 }
        <div>
            <span>{$vatKey}% MwSt</span>
            <span>{$vat->taxValue/100} EUR</span>
        </div>
    {/if}
{/foreach}
Freifelder im Warenkorb
{assign var="customFields" value=$order->getCustomFields()}
{if $customFields}
  {foreach key=name item=value from=$customFields}
    {$name}: {$value}<br>
  {/foreach}
{/if}
Artikelzusatzfelder im Warenkorb
Alte Vorlage:
Innerhalb der folgenden Abfrage werden die Warenkorbpositionen durchlaufen:
{foreach key=key item=item from=$cart}
{/foreach}

Setzen Sie die Abfrage für die Zusatzfelder ein.
{if $item.warenkorb_zusatzfelder_array}
  	{foreach key=name item=value from=$item.warenkorb_zusatzfelder_array}
    	{$name}: {$value}<br>
  	{/foreach}
{/if}

Beispiel:
{foreach key=key item=item from=$cart}
	{if $item.warenkorb_zusatzfelder_array}
  		{foreach key=name item=value from=$item.warenkorb_zusatzfelder_array}
    		{$name}: {$value}<br>
  		{/foreach}
	{/if}
{/foreach}

Neue Vorlage:
{if $item->get('warenkorb_zusatzfelder_array')}
{foreach from=$item->get('warenkorb_zusatzfelder_array')|unserialize item=zusatzfeld key=name}
{$name}: {$zusatzfeld} 
{/foreach}
{/if}
 
	
Artikeloptionen im Warenkorb
Innerhalb der folgenden Abfrage werden die Warenkorbpositionen durchlaufen:
{foreach key=key item=item from=$cart}
{/foreach}

Setzen Sie die Abfrage für die Artikeloptionen ein.
{if $item.article_options}
  	{foreach key=name item=value from=$item.article_options}
    	{$name}: {$value}<br>
  	{/foreach}
{/if}

Beispiel:
{foreach key=key item=item from=$cart}
	{if $item.article_options}
  		{foreach key=name item=value from=$item.article_options}
    		{$name}: {$value}<br>
  		{/foreach}
	{/if}
{/foreach}
 

 
	
Personalisierungsfelder
Innerhalb der folgenden Abfrage werden die Warenkorbpositionen durchlaufen:
{foreach key=key item=item from=$cart}
{/foreach}

Setzen Sie die Abfrage für die Personalisierungsfelder ein.
{if $item.persdata_array}
  	{foreach key=name item=value from=$item.persdata_array}
    	{$name}: {$value}<br>
  	{/foreach}
{/if}

Beispiel:
{foreach key=key item=item from=$cart}
	{if $item.persdata_array}
  		{foreach key=name item=value from=$item.persdata_array}
    		{$name}: {$value}<br>
  		{/foreach}
	{/if}
{/foreach}

	
Artikeldaten
Innerhalb der folgenden Abfrage werden die Warenkorbpositionen durchlaufen:
{foreach key=key item=item from=$cart}
{/foreach}

Setzen Sie die Abfrage für die Artikelbeschreibung ein.
{if $item.article_fulldesc}
  	{$item.article_fulldesc}
{/if}

Setzen Sie die Abfrage für die interne Artikelbezeichnung ein.
{if $item.article_desc_intern}
  	{$item.article_desc_intern}
{/if}

Beispiel:
{foreach key=key item=item from=$cart}
	{if $item.article_fulldesc}
  	   Artikelbeschreibung: {$item.item.article_fulldesc}
    {/if}
	{if $item.article_desc_intern}
  		interne Artikelbezeichnung: {$item.item.article_desc_intern}
	{/if}
{/foreach}


Setzen Sie die Abfrage für die Artikelnummer (SAP-Nummer / openTRANS Manufacturer-AID) ein.
{foreach from=$orderObject->getOrderCart() item=item key=cartId name=foo}

Wenn Sie Positionen mit dem Status Storno, Druckfreigabe abgelehnt, Freigabe abgelehnt, Gelöscht ausschließen möchten:
    {if in_array($item->get('status'), ['STORNO','DRUCKFREIGABE ABGELEHNT', 'GELÖSCHT', 'FREIGABE ABGELEHNT'])}
        {continue}
    {/if}

	{if $item->getArticle()->get('article_sap_nummer')}{$item->getArticle()->get('article_sap_nummer')}{/if}
{/foreach}
Beispiel Jobticket
<!--  {bb_vars output='html'}--><head>
<style>
      h3 { font-family: Verdana; font-size: large; font-weight: bold; color: #0000FF;}
      h1 { font-family: Verdana; font-size: 24px; font-weight: normal }
    </style>
  </head>
  
<table width="95%" cellspacing="1" cellpadding="1" border="1" summary="">
    <tbody>
         <tr>
            <td>
            <h3>AUFTRAGSTASCHE I-Shop</h3>
            </td>
            <td width=30% valign="top" align="left">
            <h3>Nr.: {$Rechungscode}</h3><br>Termin: schnellst möglich
            </td>
        </tr>
        <tr>
            <td> <h1>
            <p >{$Firma1}<br />
            {$Firma2}<br />
            {$Strasse}<br />
            {$PLZ} {$Ort}</font></p> </h1>
            </td>
            <td valign="top" align="left"> <h1>
            <p >Bestelldatum:<br />
            {$datum}<br />{$OrderDate}<br />Bestellnummer-Nr. {$LieferscheinNr}
            - {$LieferscheinCode}</p></h1></td>
        </tr>
        <tr>
            <td>            
            </td>
            <td width="50" align="left">
            </td>
        </tr>
    </tbody>
  </table>
<br>
<br>
  <table width=95% cellspacing="2" cellpadding="2" bordercolor="#666666" border="0" align="" summary="">
  <tbody>
      <tr>
          <td style="background-color: rgb(204, 204, 204); font-family: Arial;"><font size="2"><span ><strong>Pos.</strong></span></font></td>
          <td style="background-color: rgb(204, 204, 204); font-family: Arial;"><font size="2"><span ><strong>Produkt:</strong></span></font></td>
          <td style="background-color: rgb(204, 204, 204); font-family: Arial;"><font size="2"><span ><strong>Daten:</strong></span></font></td>
          <td style="background-color: rgb(204, 204, 204); font-family: Arial;"><font size="2"><span ><strong>Anzahl</strong></span></font></td>
      </tr>
 <font size="2">         {counter start=0 print=false assign=pos} {foreach from=$cart item=item} {counter}         </font>
      <tr valign="top">
          <td bgcolor="#ffffcc" bordercolor="#000000"><font size="2"><span >{$pos}<br /></span></font></td>
          <td bgcolor="#ffffcc" bordercolor="#000000"><font size="2"><span ><font size="1"><!--Artikelbeschreibung-->{$item.s_desc}{if $item.artikelnummer}<br><!--Artikelnummer-->{$item.artikelnummer}{/if}</font><br />              
          
          <br>
<!--Ausgabe von Nichtartikel (Bestelloptionen) -->
    {foreach from=$order->getOrderCart() item=cartObject}
        {if !$cartObject->getArticle()}<font size="2"><span >
        {$cartObject->getCartPosition()}<br>
        {$cartObject->get('s_desc')}<br>
        Anzahl:{$cartObject->get('s_qty')}<br>
        </span></font></br>
        {/if}
    {/foreach}
<!-- -->
<br /> <!-- Bemerkung -->{if $item.remark} <span style="font-weight: bold;"><font size="1">Bemerkung</font>:</span><br /><font size="1">{$item.remark}</font><br>{/if}
          </span></font></td>
          <td bgcolor="#ffffcc" bordercolor="#000000"><font size="2"><span >{$item.persdata}</span></font></td>
          <td bgcolor="#ffffcc" bordercolor="#000000"><font size="2"><span >{$item.s_qty}</span></font></td>
      </tr>
               {/foreach} 
  </tbody>
</table>
<br>
<br>
<table border="1" summary="" width="95%" cellspacing="2" cellpadding="2" align="">
<tbody>
  <tr>
  <td><span style="font-size: small;"><strong>Endmenge:</strong></span></td>
   <td><span style="font-size: small;"><strong>Anz. Kartons:</strong></span></td>
    <td><span style="font-size: small;"><strong>zu:</strong></span></td>
    <td><span style="font-size: small;"><strong>verpackt von:</strong></span></td>
  </tr>
  <tr>
  <td><span style="font-size: small;"><strong><br><br></strong></span></td>
   <td><span style="font-size: small;"><strong>{$artikelnummer}</strong></span></td>
    <td><span style="font-size: small;"><strong></strong></span></td>
    <td><span style="font-size: small;"><strong></strong></span></td>
  </tr>
</tbody>
</table>
Notizen für Bestellungen
Innerhalb der folgenden Abfrage werden bestellbezogene Notizen abgefragt, die nach Bestellung im Backend abgeändert werden können:

VARIABLE
{if $orderObject}{$orderObject->getOrderInfo('notes')}{/if}

	
Dienstleister Zusatzfelder aus Bestelloption
{foreach key=key item=additionalField from=$serviceProvider->additionalFields}
    {$additionalField->name}: {$additionalField->value}<br>
{/foreach}
Währung
{assign var='currency' value=$orderObject->getOrderInfo('currency')}
Symbol: {$currency.symbol}
Name:   {$currency.name}
Vorschau personalisierter Artikel bzw. Artikelbild
{foreach from=$orderObject->getOrderCart() item=item key=cartId} 
 {if isset($cart[$item->get('id')]['previewArticleImagePath'])}
  <img src="{$cart[$item->get('id')]['previewArticleImagePath']}">
 {/if} 
{/foreach}
Nur freigegebene Positionen ausgeben
{* nur einträge laden, die den Staus "OK" haben *}
{assign var=orderItems value=$orderObject->getOrderCart(null, true, 'OK')}

{* Anzahl relevante Einträge initilaisieren *}
{assign var=orderItemCount value=0}
{foreach from=$orderItems item=item key=cartId name=foo}
    {if $item->get('parent_id') || !$item->get('aid')}{continue}{/if}

    {* Anzahl relevante Einträge zählen *}
    {$orderItemCount=$orderItemCount+1}
{/foreach}

{counter print=false assign=countPos}
{foreach from=$orderItems item=item key=cartId name=foo}
    {if $item->get('parent_id') || !$item->get('aid')}{continue}{/if}

    Auftrag {$OrderCode} - Pos {$countPos} von {$orderItemCount}

    ....
{/foreach}
Dynamischer Dateiname von Warenkorbpositionen
{foreach from=$item.positionFiles item=itemFile name=foo}
	{$itemFile->displayName}
{/foreach}


Jobticket pro Dienstleister

Sollen ausschließlich die Bestellpositionen des jeweiligen Dienstleisters im Jobticket aufgeführt werden, kann dies über die Funktion "Jobticket pro Dienstleister" eingestellt werden. Diese Option befindet sich unter "Verwaltung → Shops → bearbeiten → Vorlagen" (unterhalb des Jobtickets). Ist diese Funktion aktiviert, wird der direkte Download in der Bestellung innerhalb der globalen Administration deaktiviert. Das Jobticket ist dann nur noch im Dienstleisterbackend in den einzelnen Bestellungen downloadbar.