Neu Funktion wird nicht mehr registriert

crossover

Neues Mitglied
15. April 2024
7
0
Hallo Zusammen,

ich habe ein Problem bei meinem Plugin und komme einfach nicht weiter. Den Shop habe ich jetzt von 5.2.4 auf 5.3.2 geupdated. Jetzt funktioniert allerdings mein Plugin nicht mehr und ich kann mir nicht erklären warum.
Der Fehler der im Frontend ausgespuckt wird lautet:

Syntax error in template "file:/var/www/vhosts/testsystem.xxx.de/httpdocs/templates/eigenesTemplate/boxes/box_filter_characteristics.tpl" on line 6 "{filter_group_and_sort_adjust_sort_of_jtl_filter}" unknown tag 'filter_group_and_sort_adjust_sort_of_jtl_filter

Code:
{block name='boxes-box-filter-characteristics'}
    {if $nSeitenTyp === $smarty.const.PAGE_ARTIKELLISTE
        && !($isMobile || $Einstellungen.template.productlist.filter_placement === 'modal')}
       

            {filter_group_and_sort_adjust_sort_of_jtl_filter assign='sortedAndGroupedBoxItems' boxItems=$oBox->getItems() ignoreNotDefined=false groupByDefinition=true}
      
          
 
            {foreach $sortedAndGroupedBoxItems as $boxItemGroup}
                {foreach $boxItemGroup.items as $characteristic}
                    {if ($characteristic->getData('cTyp') === 'SELECTBOX') && $characteristic->getOptions()|@count > 0}
                        {if {showMerkmalfilter merkmalname=$characteristic->getName()} && $characteristic->getOptions()|@count > 0}
                            {assign var="showfilter" value=true}
                        {/if}
                    {/if}
                {/foreach}
            {/foreach}
                           
           
            {if $showfilter}
                <h4 class="d-lg-block title_merkmalfilter float-left">{lang key="merkmalfilter_title" section="global"}</h4>
                {if $NaviFilter->getURL()->getUnsetAll() !== null}
                    {block name='snippets-filter-active-filter-remove'}
                        {link href=$NaviFilter->getURL()->getUnsetAll()
                        title="{lang key='removeFilters'}"
                        class='float-right mt-1 text-muted font-weight-bold'}
                        {lang key='removeFilters'}
                        {/link}
                    {/block}
                {/if}
            {else}
                &nbsp;
            {/if}

   
           
            {foreach $sortedAndGroupedBoxItems as $boxItemGroup}
                {*if ($sortedAndGroupedBoxItems|count <= 1 && $boxItemGroup.name != "unknown group") || $sortedAndGroupedBoxItems|count > 1}
                    {foreach $boxItemGroup.items as $characteristic}
                        {if {showMerkmalfilter merkmalname=$characteristic->getName()} && $characteristic->getOptions()|@count > 0}
                            {assign var="titlevisible" value=true}
                        {/if}
                    {/foreach}
                {/if*}
               
                {assign var="titlevisible" value=false}
                {foreach $boxItemGroup.items as $characteristic}
                    {if ($characteristic->getData('cTyp') === 'SELECTBOX') && $characteristic->getOptions()|@count > 0}
                        {if {showMerkmalfilter merkmalname=$characteristic->getName()} && $characteristic->getOptions()|@count > 0}
                            {assign var="titlevisible" value=true}
                        {/if}
                    {/if}
                {/foreach}  
                {if $titlevisible}
                    <div class="filter-group-title">{if $boxItemGroup.name == "unknown group"}{lang key='miscellaneous'}{else}{lang key=$boxItemGroup.name section="custom"}{/if}</div>
                {/if}
                     
                {foreach $boxItemGroup.items as $characteristic}
                    {if ($characteristic->getData('cTyp') === 'SELECTBOX') && $characteristic->getOptions()|@count > 0}
                        {if {showMerkmalfilter merkmalname=$characteristic->getName()} && $characteristic->getOptions()|@count > 0}
                            {* Hole Reset Link & Aktuellen Wert *}
                            {assign var=characteristic_options value=$characteristic->getOptions()}
                            {assign var=wg_aktueller_filter value=''}
                            {assign var=wg_unset_url value=''}
                            {foreach $NaviFilter->getActiveFilters() as $activeFilter}
                                {assign var=activeFilterValue value=$activeFilter->getValue()}
                                {assign var=activeValues value=$activeFilter->getActiveValues()}
                                {if $activeFilterValue !== null}
                                    {if isset($characteristic_options[0])}
                                        {if $characteristic_options[0]->__get('kMerkmalWert') == $activeFilter->__get('kMerkmalWert')}
                                            {* Aktiver Filterwert Name *}
                                            {assign var=wg_aktueller_filter value=$activeValues->getFrontendName()}
                                            {assign var=activeFilterValue value=$activeFilter->getValue()}
                                            {assign var=activeValues value=$activeFilter->getActiveValues()}
                                            {if $activeFilterValue !== null}
                                                {* Reset Link *}
                                                {assign var=wg_unset_url value=$activeFilter->getUnsetFilterURL($activeFilter->getValue())}
                                            {/if}
                                        {/if}
                                    {/if}
                                {/if}
                            {/foreach}
                            {* / Hole Reset Link & Aktuellen Wert *}
                            <div id="sidebox{$oBox->getID()}-{$characteristic->getID()}" class="box box-filter-characteristics d-lg-block mb-3">
                            {*button
                                variant="link"
                                class="btn-filter-box dropdown-toggle"
                                role="button"
                                block=true
                                data=["toggle"=> "collapse", "target"=>"#cllps-box{$oBox->getID()}-{$characteristic->getID()}"]
                            }
                                <span class="characteristic-collapse-btn-inner text-truncate">
                                    {$img = $characteristic->getImage(\JTL\Media\Image::SIZE_XS)}
                                    {if $Einstellungen.navigationsfilter.merkmal_anzeigen_als !== 'T'
                                    && $img !== null
                                    && $img|strpos:$smarty.const.BILD_KEIN_MERKMALBILD_VORHANDEN === false
                                    && $img|strpos:$smarty.const.BILD_KEIN_ARTIKELBILD_VORHANDEN === false}
                                        {include file='snippets/image.tpl'
                                            item=$characteristic
                                            square=false
                                            class='img-xs'
                                            srcSize='xs'
                                            sizes='24px'}
                                    {/if}
                                    {if $Einstellungen.navigationsfilter.merkmal_anzeigen_als !== 'B'}
                                        {$characteristic->getName()|escape:'html'}
                                    {/if}
                                </span>
                            {/button*}
                            {* Hole Merkmalfilter Texte *}
                            {get_merkmalfilter_beschreibung assign='merkmalfilter_beschreibung' merkmalname=$characteristic->getName()}
                            {collapse id="cllps-box{$oBox->getID()}-{$characteristic->getID()}" visible=$characteristic->isActive() || $Einstellungen.template.productlist.filter_items_always_visible === 'Y'}
                                <div class="btn-group btn-block" role="group" aria-label="{$characteristic->getName()|escape:'html'}">
                                    {block name='boxes-box-filter-characteristics-characteristics'}
                                        {if ($characteristic->getData('cTyp') === 'SELECTBOX') && $characteristic->getOptions()|@count > 0}
                                            {block name='boxes-box-filter-characteristics-select'}
                                                {* Merkmalfilter-Name Dropdown Burron *}
                                                <button class="{if $characteristic->isActive()}bg-g1 {/if}btn btn-outline-secondary dropdown-toggle btn-block text-left-util btn-sm font-weight-normal" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                                                    {$characteristic->getName()|escape:'html'}{if !empty($wg_aktueller_filter)}: {$wg_aktueller_filter}{/if}
                                                </button>
                                                {* Filter Reset *}
                                                {if $characteristic->isActive()}
                                                    <a href="{$wg_unset_url}" class="btn btn-outline-secondary btn-sm ml-1 " aria-expanded="true">
                                                        <i class="fas fa-times-circle"></i>
                                                    </a>
                                                {/if}
                                                {* Merkmalfilter Werte *}
                                                <div class="dropdown-menu">
                                                    {block name='boxes-box-filter-characteristics-include-characteristics-dropdown'}
                                                        {include file='snippets/filter/characteristic.tpl' Merkmal=$characteristic}
                                                    {/block}
                                                </div>
                                                {* Merkmal Info Button *}
                                                {if $merkmalfilter_beschreibung !== false}
                                                    <button type="button" class="btn btn-outline-secondary btn-sm no-toggler collapsed ml-1 merkmal_info" data-toggle="collapse" href="#filter-info-{$oBox->getID()}-{$characteristic->getID()}" role="button" aria-expanded="false" aria-controls="collapseExample">
                                                        <img width="20" src="templates/Webgreat_KE/themes/ke/images/icons/ke-info-32.svg">
                                                    </button>
                                                {/if}
                                            {/block}
                                        {else}
                                            {*
                                            {block name='boxes-box-filter-characteristics-link'}
                                                {block name='boxes-box-filter-characteristics-include-characteristics-link'}
                                                    {include file='snippets/filter/characteristic.tpl' Merkmal=$characteristic}
                                                {/block}
                                            {/block}
                                            *}
                                        {/if}
                                    {/block}
                                </div> {*/ btn group*}
                                {if $merkmalfilter_beschreibung !== false}
                                    <div class="collapse" id="filter-info-{$oBox->getID()}-{$characteristic->getID()}">
                                        <div class="p-2 bg-light">
                                            {$merkmalfilter_beschreibung}
                                        </div>
                                    </div>
                                {/if}
                            {/collapse}
                            {block name='boxes-box-filter-characteristics-hr'}
                                <hr class="border-0 mt-2 mb-2">
                            {/block}
                        </div>
                        {/if} {* END IF cName !== xy *}
                    {/if} {* END IF SELECTBOX  *}
                {/foreach}
            {/foreach}
   
    {/if}
{/block}


PHP:
<?php
declare(strict_types=1);
namespace Plugin\sm_characteristicFilter\src;
use JTL\Plugin\LegacyPlugin;
use JTL\Plugin\Plugin;
use JTL\Events\Dispatcher;
use Monolog\Logger;
use JTL\Shop;
use Smarty as SmartyCore;
use SmartyException;

/**
 * Class Frontend
 * @package Plugin\sm_characteristicFilter\src
 *
 */
class Frontend
{
    /**
     * @var LegacyPlugin|Plugin
     */
    protected $plugin;
    /**
     * @var Logger
     */
    protected $logger;
    /**
     * Frontend constructor.
     *
     * @param LegacyPlugin|Plugin $plugin
     * @param Logger $logger
     */
    public function __construct($plugin, Logger $logger)
    {
        $this->plugin = $plugin;
        $this->logger = $logger;
    }
    /**
     * Bootup the frontend and registers the required event listeners.
     *
     * @param Dispatcher $dispatcher
     *
     * @return void
     *
     * @throws SmartyException
     */
    public function boot(Dispatcher $dispatcher)
    {
       
        // No hooks defined to listen to
        if (empty(Hooks::LISTEN_TO)) {
            return;
        }
        // Create new hook handler
        $hooks = new Hooks($this->plugin, $this->logger);
        foreach (Hooks::LISTEN_TO as $hook => $config) {
            // Read the config of hook
            $method = $config['method'];
            $priority = (int) ($config['priority'] ?? 5);
            // Method doesn't exists
            if (! method_exists($hooks, $method)) {
                continue;
            }
            $dispatcher->listen('shop.hook.' . $hook, [$hooks, $method], $priority);
        }
        // Create an instance of our smarty plugin
        //$plugin = new Smarty();  
        $plugin = new SmartyCore();  
        //dump(function_exists('getCharacteristicGroups'));
        //dump($plugin);
       
        // Get the smarty instance of shop
        Shop::Smarty()
            ->registerPlugin(SmartyCore::PLUGIN_FUNCTION, 'load_filter_group_and_sort_characteristics', [
                $plugin,
                'loadFilterGroupAndSortCharacteristics',
            ])
            ->registerPlugin(SmartyCore::PLUGIN_FUNCTION, 'filter_group_and_sort_characteristics', [
                $plugin,
                'filterGroupAndSortCharacteristics',
            ])
            ->registerPlugin(SmartyCore::PLUGIN_FUNCTION, 'filter_group_and_sort_property_groups', [
                $plugin,
                'propertyGroupAndSorts',
            ])
            ->registerPlugin(SmartyCore::PLUGIN_FUNCTION, 'filter_group_and_sort_adjust_sort_of_jtl_filter', [
                $plugin,
                'adjustJTLFilterSort',
            ])
            ->registerPlugin(SmartyCore::PLUGIN_FUNCTION, 'get_characteristic_group_definitions', [
                $plugin,
                'getCharacteristicGroups',
            ]);       
    }   
}

Code:
/**
     * Handle the update of jtl filter characteristic sort.
     *
     * @param array $params
     * @param Smarty_Internal_TemplateBase $smarty
     *
     * @return void
     */
    public function adjustJTLFilterSort(array $params, Smarty_Internal_TemplateBase $smarty): void
    {

       
        // We're missing an required param
        if (! isset($params['assign'], $params['boxItems'])) {
            return;
        }

        // Load the sort definition
        $sortDefinitions = array_map(function (array $item): array
        {
            $item['characteristic_id'] = (int) $item['characteristic_id'];
            $item['item_sort'] = (int) $item['item_sort'];
            $item['sort'] = (int) $item['sort'];
            $item['enabled'] = (bool) ((int) $item['enabled']);
            $item['group_id'] = (int) $item['group_id'];
            $item['group_sort'] = (int) $item['group_sort'];
            //((`characteristic`.`sort` + 1) * (`group`.`sort` + `group`.`id`)) as `sort`
            return $item;
        }, Shop::Container()->getDB()->executeQuery('
                select
                    `characteristic`.`characteristic_id`,
                    ((`group`.`sort` + `group`.`id` + 10) + (`characteristic`.`sort` + 15)) as `sort`,
                    `characteristic`.`enabled`,
                    `characteristic`.`sort` AS `item_sort`,
                    `group`.`id` as `group_id`,
                    `group`.`name` as `group_name`,
                    `group`.`sort` as `group_sort`
                from
                    `' . CharacteristicSort::TABLE . '` as `characteristic`
                    join `' . CharacteristicGroup::TABLE . '` as `group` on `group`.`id` = `characteristic`.`group_id`
                order by
                    `group`.`sort`
                ', DBReturnType::ARRAY_OF_ASSOC_ARRAYS));           

                // Map the definitions by their id
                $sortDefinitionsTmp = [];

                foreach ($sortDefinitions as $sortDefinition) {
                    $sortDefinitionsTmp[$sortDefinition['characteristic_id']] = $sortDefinition;
                }

                $sortDefinitions = $sortDefinitionsTmp;
                unset($sortDefinitionsTmp);

                // Handle the sort of box items
                $boxItems = (new Collection($params['boxItems']))
                    ->transform(function (Option $option) use (&$sortDefinitions) {
                        $optionId = $option->getID();
                        $optionSortDefinitions = [
                            'characteristic_id' => null,
                            'sort' => PHP_INT_MAX,
                            'enabled' => null,
                            'group_id' => null,
                            'group_name' => null,
                            'group_sort' => PHP_INT_MAX - 1,
                        ];

                        // We have an definition for this characteristic option
                        if (isset($sortDefinitions[$optionId])) {
                            $optionSortDefinitions = $sortDefinitions[$optionId];
                        }

                        $option->setData('customSort', $optionSortDefinitions['sort']);
                        $option->setData('customItemSort', $optionSortDefinitions['item_sort']);
                        $option->setData('isListEnabled', $optionSortDefinitions['enabled']);
                        $option->setData('customGroup', [
                            'id' => $optionSortDefinitions['group_id'],
                            'name' => $optionSortDefinitions['group_name'],
                            'sort' => $optionSortDefinitions['group_sort'],
                        ]);

                        return $option;
                    })
                    ->sortBy(function (Option $option) {
                        return $option->getData('customSort');
                    }, SORT_REGULAR, isset($params['descending']) && $params['descending']);

                // We should ignore none grouped items?
                if (isset($params['ignoreNotDefined']) && $params['ignoreNotDefined']) {
                    $boxItems = $boxItems->reject(function (Option $option) {
                        return $option->getData('customGroup')['id'] === null;
                    });
                }

                // We want an grouped version as result
                if (isset($params['groupByDefinition']) && $params['groupByDefinition']) {
                    // Group the items by their group definition
                    $boxItems = $boxItems
                        ->sortBy(function (Option $option) {
                            return $option->getData('customGroup')['sort'] ?? 0;
                        })
                        ->groupBy(function (Option $option) {
                            return $option->getData('customGroup')['name'] ?? 'unknown group';
                        })
                        ->map(function (Collection $options, string $name) {
                            return [
                                'id' => $options->first()->getData('customGroup')['id'] ?? null,
                                'name' => $name,
                                'items' => $options
                                    ->sortBy(function (Option $option, int $index) {
                                        return $option->getData('customItemSort') ?? $index;
                                    })
                                    ->all(),
                            ];
                        })
                        ->values();
                }

                $smarty->assign($params['assign'], $boxItems->toArray());
    }

PHP:
<?php

declare(strict_types=1);

namespace Plugin\sm_characteristicFilter;

use JTL\Exceptions\CircularReferenceException;
use JTL\Exceptions\ServiceNotFoundException;
use JTL\Plugin\Bootstrapper;
use JTL\Events\Dispatcher;
use JTL\Shop;
use JTL\Smarty\JTLSmarty;
use Plugin\sm_characteristicFilter\Migrations\Migration20201120181500;
use Plugin\sm_characteristicFilter\Migrations\Migration20210206111500;
use Plugin\sm_characteristicFilter\Migrations\Migration20210513082400;
use Plugin\sm_characteristicFilter\src\Frontend;
use Plugin\sm_characteristicFilter\src\Admin;

/**
 * Class Bootstrap
 * @package Plugin\sm_characteristicFilter
 */
class Bootstrap extends Bootstrapper
{
    /**
     * Hold the id of ajax request detection.
     *
     * @var string
     */
    const AJAX_REQUEST_ID = 'xxx_characteristics';

    /**
     * Hold the list of defined migrations to handle at remove.
     *
     * @var string[]
     */
    const MIGRATIONS = [
        Migration20201120181500::class,
        Migration20210206111500::class,
        Migration20210513082400::class,
    ];

    /**
     * @var Frontend|null
     */
    protected $frontend;

    /**
     * @var Admin|null
     */
    protected $admin;

    /**
     * Handle the boot of plugin.
     *
     * @param Dispatcher $dispatcher
     *
     * @return void
     *
     * @throws ServiceNotFoundException
     * @throws CircularReferenceException
     */
    public function boot(Dispatcher $dispatcher)
    {
        // Handle the parent boot first before do our boot up
        parent::boot($dispatcher);
        
        

        if (Shop::isFrontend()) {
            $this->frontend = new Frontend($this->getPlugin(), Shop::Container()->getLogService());           
            
            $this->frontend->boot($dispatcher);

            return;
        }

        $this->admin = new Admin($this->getPlugin(), Shop::Container()->getBackendLogService());
                
    }

    /**
     * Handle the uninstallation of plugin and delete the added database tables if wished.
     *
     * @param bool $deleteData
     *
     * @return void
     */
    public function uninstalled(bool $deleteData = true)
    {
        // Handle parent first if there maybe change something in future
        parent::uninstalled($deleteData);

        // The administrator want to delete the data too
        if ($deleteData) {
            // Load the database instance to handle remove
            $db = Shop::Container()->getDB();

            // Step through the migrations and remove the database tables which were added by each migration.
            foreach (static::MIGRATIONS as $migrationClass) {
                $migration = new $migrationClass($db);
                $migration->remove();
            }
        }
    }

    /**
     * Render the tab and return the content of the rendered tab.
     *
     * @param string $tabName
     * @param int $menuID
     * @param JTLSmarty $smarty
     *
     * @return string
     */
    public function renderAdminMenuTab(string $tabName, int $menuID, JTLSmarty $smarty): string
    {
        // Extend the smarty data
        $smarty
            ->assign('apiUrl', Shop::getURL() . '/index.php?fromAdmin=yes&' . static::AJAX_REQUEST_ID . '=1')
            ->assign('pluginAdminUrl', $this->getPlugin()->getPaths()->getAdminURL())
            ->assign('pluginId', $this->getPlugin()->getID())
            ->assign('tabName', $tabName)
            ->assign('menuId', $menuID);

        // Render the tab
        switch ($tabName) {
            case 'Merkmal - Gruppen':
                return $this->admin->getGroupsTab($smarty);

            case 'Eigenschaft - Gruppen':
                return $this->admin->getPropertyGroupTab($smarty);
        }

        // No group was found than handle by parent
        return parent::renderAdminMenuTab($tabName, $menuID, $smarty);
    }
}

Hat jemand eine Ahnung, warum, wieso, weshalb das jetzt auf einmal nicht mehr funktioniert. Hätte gedacht, dass das innerhalb einer Major-Version kein Problem sein dürfte.
Vielen Dank im Vorraus
 
Zuletzt bearbeitet:

NoOne

Mitglied
16. März 2024
59
22
Ich bin da kein Profi, aber sollte man die Smarty-Funktionen nicht in prepareFrontend() registrieren? Oder irgendwann in einer __construct einer Klasse vom Plugin? boot() scheint mir bissel früh.
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Cache Funktion Bug 5.2.5 JTL-Shop - Fehler und Bugs 0
Neu Workflow - SQL - Frage zur DATEADD()-Funktion User helfen Usern - Fragen zu JTL-Wawi 2
Neu Wawi 1.9.4.0 Ausgabe ohne Funktion JTL-Wawi - Fehler und Bugs 5
Neu "Funktion" Weiterlesen Templates für JTL-Shop 6
Das Styling von benutzerdefinierten Feldern wird nicht überall angezeigt Allgemeine Fragen zu JTL-Shop 0
Wawi 1.9 - Stückliste wird bei Auslieferung über JTL-POS auf dem Bon gedruckt JTL-Wawi 1.9 0
Feld Karton im Auftrag wird nach Auftragsübermittlung aus Shop nicht befüllt. JTL-Wawi 1.9 1
Neu IBAN wird in Sofortaufträgen nicht gezogen User helfen Usern - Fragen zu JTL-Wawi 0
Neu WooCommerce-Kategorie Name wird nicht übertragen -> WooCommerce-Kategorie #1, #2, #3 wird als Name genommen WooCommerce-Connector 0
Neu MHD wird nicht mehr angezeigt 5.3.2 JTL-Shop - Fehler und Bugs 2
Neu Stücklistenartikel wird in POS nicht angezeigt Einrichtung / Updates von JTL-POS 0
Neu Umsatzsteuer Einstellungen - Feld "Preise im Shop anzeigen" wird immer zurückgesetzt WooCommerce-Connector 2
Beantwortet Amazon Versandstatus wird nicht übermittelt eBay-Anbindung - Fehler und Bugs 1
Neu Frankatur wird nicht mehr angeboten JTL-ShippingLabels - Fehler und Bugs 1
Neu E-Mail Bestellung versandt wird nur verschickt, wenn ich Zahlung bestätige (keine Vorkasse) JTL-Shop - Fehler und Bugs 0
Neu unsere Webseite wird nicht mehr richtig angezeigt kein Kauf mehr JTL-Shop - Fehler und Bugs 6
In Bearbeitung TES wird nicht auf dem Bog als QR-Code gedruckt Allgemeine Fragen zu JTL-POS 2
Neu Wareneingang wird nicht vollständig der Lieferantenbestellung zugeordnet Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Neu Lagerumbuchung möglich, wenn Artikel gepickt wird? Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Neu Logo für Bondruck wird nicht gespeichert JTL-POS - Fehler und Bugs 1
Neu Versandbestätigung an Amazon mit aktualisierten Daten ... wird nicht übertragen Amazon-Anbindung - Fehler und Bugs 2
Neu eBay Lagerbestand wird nicht reduziert eBay-Anbindung - Fehler und Bugs 0
Abonnement Fälligkeit wird bei Auftragserstellung nicht erhöht. JTL-Wawi 1.8 0
Neu Bestandsveränderung (Verkauf) wird angezeigt aber nicht gebucht User helfen Usern - Fragen zu JTL-Wawi 1
Neu USB Swissbit-TSE wird nicht erkannt Android 11? Einrichtung / Updates von JTL-POS 0
Neu Wenn bereits eine Retoure zu einem Auftrag existiert, wird der Auftrag in der WMS im Retourenfenster nicht mehr angezeigt. JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 0
Neu Manuelle ID wird nicht übertragen JTL-ShippingLabels - Fehler und Bugs 0
Neu JTL Exportformat Google Shopping v2.2.2 - Export bleibt bei 500 Artikeln stehen und wird nicht final durchgeführt Plugins für JTL-Shop 0
Neu Kategorienzuordnung wird gelöscht Shopware-Connector 1
Neu Versandklassen-Assistent wird nicht angezeigt Allgemeine Fragen zu JTL-Shop 0
Gelöst JTL POS Sobald ein neuer Bon erstellt wird, soll auch ein Rabatt automatisch erzeugt werden Allgemeine Fragen zu JTL-POS 1
Artikel -> Mindestabnahme/Abnahmeintervall wird bei Auftragsanlage in der App nicht übernommen JTL-Wawi App 2
Neu Ersetzt Greyhound den Servicedesk oder wird das parallel nutzbar sein? Servicedesk (Beta) 21
Neu Amazon.co.uk Lister Flatfile / Produkttyp wird nicht angezeigt - neue Produktseite nicht möglich Amazon-Lister - Fehler und Bugs 0
Gelöst Wird die Anzahl der Kassenlade-Öffnungen irgendwo erfasst? Wenn ja, wo finde ich die Angabe? Allgemeine Fragen zu JTL-POS 6
Neu Druckvorlage Artikeletikett - Bild wird nicht angezeigt User helfen Usern - Fragen zu JTL-Wawi 8
Neu Im lieferschein wird der Gutscheincode im Arikelnamen mit ausgegeben User helfen Usern - Fragen zu JTL-Wawi 0
Neu Bluetooth Etikettendrucker wird nicht in Wawi angezeigt JTL-Wawi - Fehler und Bugs 4
Neu automatische E-Mails wenn Artikel bezahlt aber geplantes Lieferdatum überschritten wird User helfen Usern - Fragen zu JTL-Wawi 2
Neu Plugin zum testen wird nicht angezeigt Allgemeine Fragen zu JTL-Shop 1
Kupon Gültig vom bis - Datum wird in Email nicht angezeigt. Einrichtung JTL-Shop5 3
Neu Artikel wird als Warenpost erkannt, obwohl er keine Warenpost ist JTL-ShippingLabels - Fehler und Bugs 11
Dropdown Variation wird nicht angezeigt Allgemeine Fragen zu JTL-Shop 1
Neu Header Checkout, Topbar wird nicht ausgeblendet, Shop-Template 5.3, Neustes Child Theme GitLab Gelöste Themen in diesem Bereich 4
Neu Passwort vergessen Mail wird nicht gesendet in 5.3.1 JTL-Shop - Fehler und Bugs 1
Beantwortet JTL-WMS Mobile Artikelname wird nicht mehr vollständig angezeigt JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 2
Neu Seitennavigation wird doppelt angezeigt Allgemeine Fragen zu JTL-Shop 0
Eigenes Feld wird nicht angezeigt JTL-Wawi 1.8 2
Bestellvorschläge - Lagerbsestand in "Bestand gesamt" wird nicht angezeigt JTL-Wawi 1.8 0
In Diskussion Auftragszahlung über Kasse, Auftrag wird nicht als "Verpackt und Versendet" markiert JTL-POS - Fehler und Bugs 2

Ähnliche Themen