Neu Kann nicht auf eigene Smartyvariable zugreifen

  • Wichtiger Hinweis Liebe Kunden, solltet Ihr den DATEV Rechnungsdatenservice 2.0 nutzen, dann müsst Ihr bis zum 30.06.2024 JTL-Wawi 1.9 installieren. Danach wird die Schnittstelle für ältere Versionen nicht mehr unterstützt.

karabas

Gut bekanntes Mitglied
26. September 2015
162
4
Hallo zusammen.
Ich habe ein Problem mit eigens erstellten Smartyvariablen.
Ich habe in Bootstrap.php in Child-Template eine Funktion erstellt:
Code:
public function boot(): void
    {
        parent::boot();
        try {
            $this->getSmarty()->registerPlugin(Smarty::PLUGIN_FUNCTION, 'getRating', [$this, 'getRating']);
        } catch (\SmartyException $e) {
            throw new \RuntimeException('Problems during smarty instantiation: ' . $e->getMessage());
        }
    }
Code:
    public function getRating($params, $smarty)
    {
        $erg = Shop::Container()->getDB()->queryPrepared(
            'SELECT AVG(tbewertung.nSterne) AS Durchschnitt, COUNT(*) AS Anzahl
            FROM tbewertung
            INNER JOIN tkategorieartikel ON tbewertung.kArtikel = tkategorieartikel.kArtikel
            WHERE tkategorieartikel.kKategorie = :artikelID AND tbewertung.nAktiv = 1',
            ['artikelID' => $params['artikelID']],
            ReturnType::ARRAY_OF_OBJECTS
        );
        $assocArray = get_object_vars($erg[0]);
        Shop::Smarty()->assign('Rating', $assocArray);
        /*$smarty->assign('Rating', $erg);*/
        
        return;
    }
Es wird auch im Debugger ausgegeben:
smarty.jpg
Aber wenn ich in Template darauf zugreifen will, passiert gar nicht.
So greife ich darauf zu: {$Rating.Anzahl}
Kann jemand vielleicht erkennen, was ich falsch mache?
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.878
519
Halle
Kann jemand vielleicht erkennen, was ich falsch mache?
Zuerst musst du natürlich dafür sorgen, dass deine eigene Smarty-Funktion (getRating) aufgerufen wird, bevor du auf die Variable zugreifst.
Das ist ungünstig:
PHP:
Shop::Smarty()->assign('Rating', $assocArray);
Das wäre richtig:
PHP:
$smarty->assign('Rating', $assocArray);
Das hier
PHP:
$assocArray = get_object_vars($erg[0]);
birgt die Gefahr eines Fatal Error, wenn es keine Bewertungen gibt. Dann ist $erg[0] undefined und get_object_vars erwartet ein Objekt als Parameter.
Das hier
SQL:
WHERE tkategorieartikel.kKategorie = :artikelID
sieht falsch aus. Entweder stimmt das Naming nicht oder du vergleichst tatsächlich die ID einer Kategorie mit der eines Artikels.

Es ist ggfs. extrem performancelastig in einer Template-Funktion SQL auszuführen!
Es ist immer ungünstig eine gesamte Liste (ARRAY_OF_OBJECTS) per SQL abzufragen, wenn man zum Schluß nur ein Element verwenden will. Hier wäre ein ReturnType::SINGLE_OBJECT und ein zusätzliches LIMT 1 im SQL in jedem Fall performanter. Für deinen konkreten Fall wäre sogar ReturnType::SINGLE_ASSOC_ARRAY empfehlenswert, da sparst du zusätzlich das get_object_vars.
 

karabas

Gut bekanntes Mitglied
26. September 2015
162
4
Zuerst musst du natürlich dafür sorgen, dass deine eigene Smarty-Funktion (getRating) aufgerufen wird, bevor du auf die Variable zugreifst.
Das ist ungünstig:
PHP:
Shop::Smarty()->assign('Rating', $assocArray);
Das wäre richtig:
PHP:
$smarty->assign('Rating', $assocArray);
Das hier
PHP:
$assocArray = get_object_vars($erg[0]);
birgt die Gefahr eines Fatal Error, wenn es keine Bewertungen gibt. Dann ist $erg[0] undefined und get_object_vars erwartet ein Objekt als Parameter.
Das hier
SQL:
WHERE tkategorieartikel.kKategorie = :artikelID
sieht falsch aus. Entweder stimmt das Naming nicht oder du vergleichst tatsächlich die ID einer Kategorie mit der eines Artikels.

Es ist ggfs. extrem performancelastig in einer Template-Funktion SQL auszuführen!
Es ist immer ungünstig eine gesamte Liste (ARRAY_OF_OBJECTS) per SQL abzufragen, wenn man zum Schluß nur ein Element verwenden will. Hier wäre ein ReturnType::SINGLE_OBJECT und ein zusätzliches LIMT 1 im SQL in jedem Fall performanter. Für deinen konkreten Fall wäre sogar ReturnType::SINGLE_ASSOC_ARRAY empfehlenswert, da sparst du zusätzlich das get_object_vars.
Vielen Dank für deine kommentare!
Ich müsste wahrscheinlich zuerst mein Vorhaben beschreiben. Ich möchte einfach die Bewertungen von allen Produkten aus aktuelle Kategorie auf Kategorieseite anzeigen lassen. Vielleicht gibt es eine einfache Lösung dazu, ich habe aber nichts dazu gefunden.
Ich habe mir gedacht, ich frage einfach in DB alle Daten ab und stelle die in Tamplate dar. Durch DB-Abfrage:
Code:
WHERE tkategorieartikel.kKategorie = :artikelID
ermittle ich alle Produkte aus aktuelle Kategorie (die Variable "artikelID" ist die ID von aktuelle Kategorie, die ich der Funktion "getRating" mittels "$oNavigationsinfo->getCategory()->kKategorie" in Template übergebe - {getRating artikelID=$oNavigationsinfo->getCategory()->kKategorie}).
Ich habe jetzt deine Vorschläge umgesetzt und ich kann jetzt endlich auf die Daten zugreifen!!! Vielen DANK!
Allerdings werden die Daten in Debugger nicht angezeigt.

So sieht jetzt meine Code aus:
Bootstrap.php:
Code:
public function getRating($params, $smarty)
{
    $erg = Shop::Container()->getDB()->queryPrepared(
        'SELECT AVG(tbewertung.nSterne) AS Durchschnitt, COUNT(*) AS Anzahl
        FROM tbewertung
        INNER JOIN tkategorieartikel ON tbewertung.kArtikel = tkategorieartikel.kArtikel
        WHERE tkategorieartikel.kKategorie = :artikelID AND tbewertung.nAktiv = 1',
        ['artikelID' => $params['artikelID']],
        ReturnType::SINGLE_ASSOC_ARRAY
    );
    $smarty->assign('Rating', $erg);
}
Und in Template rufe ich die Daten so ab:
Code:
{getRating artikelID=$oNavigationsinfo->getCategory()->kKategorie}
<ul>
    <li class="rating-wrapper nav-it dpflex-a-center">
        <strong class="icon-wt">{lang key="catRating" section="custom"}:</strong>
        <a id="jump-to-votes-tab" class="hidden-print">
            {$Rating.Anzahl}
        </a>
    </li>
    <li class="rating-wrapper nav-it dpflex-a-center">
        <strong class="icon-wt">{lang key="catRatingStars" section="custom"}:</strong>
        <a id="jump-to-votes-tab" class="hidden-print">
            {include file='productdetails/rating.tpl' stars=$Rating.Durchschnitt total=$Rating.Anzahl}
        </a>
    </li>
</ul>

Das Ergebnis sieht dann so aus:
bewertungen.jpg
Noch mal vielen Dank!
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.878
519
Halle
(die Variable "artikelID" ist die ID von aktuelle Kategorie, die ich der Funktion "getRating" mittels "$oNavigationsinfo->getCategory()->kKategorie" in Template übergebe - {getRating artikelID=$oNavigationsinfo->getCategory()->kKategorie}).
Dann tu dir doch den Gefallen und nenne den Parameter auch categoryID oder kategorieID statt artikelID, wenn du darüber eine Kategorie-ID übergibst. Sonst stolpert man doch da jedesmal drüber...
Das Ergebnis deiner Abfrage kann immer noch NULL sein und wird ungeprüft im Template ausgegeben. Das wird zu einem Fehler führen, wenn eine Kategorie KEINE Bewertungen hat.
 

karabas

Gut bekanntes Mitglied
26. September 2015
162
4
Dann tu dir doch den Gefallen und nenne den Parameter auch categoryID oder kategorieID statt artikelID, wenn du darüber eine Kategorie-ID übergibst. Sonst stolpert man doch da jedesmal drüber...
Das Ergebnis deiner Abfrage kann immer noch NULL sein und wird ungeprüft im Template ausgegeben. Das wird zu einem Fehler führen, wenn eine Kategorie KEINE Bewertungen hat.
Da hast du Recht, habe die Variable in "catID" umbenannt.
In Template prüfe ich ob Bewertungsanzahl größer 0 ist und erst dann wird was ausgegeben.

Es ist ggfs. extrem performancelastig in einer Template-Funktion SQL auszuführen!
Wie kann ich den das anders lösen? Für jede Info diesbezüglich bin ich dir sehr dankbar!

Wie gesagt, ich möchte alle Bewertungen von allen Produkten aus aktuelle Kategorie auf Kategorieseite darstellen.
Mit deine Hilfe kann ich schon auf alle Daten in Template zugreifen, bin wahrscheinlich heute damit fertig und poste endgültigen Code hier rein (vielleicht braucht jemand das auch).
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.878
519
Halle
Wie kann ich den das anders lösen? Für jede Info diesbezüglich bin ich dir sehr dankbar!
Wenn diese Funktion nur einmalig pro Seite aufgerufen wird ist das OK - deshalb habe ich ja ggfs. geschrieben. ;)
Aufgrund der falschen Benennung des Parameters (artikelID) bin ich jedoch davon ausgegangen, dass dies für jeden Artikel auf der Seite einzeln aufgerufen werden soll. Das wäre dann als zentraler Aufruf besser gewesen.
 

karabas

Gut bekanntes Mitglied
26. September 2015
162
4
Vielen Dank für deine Unterstützung!

Wie versprochen hier das ganze Projekt. Ich muss dazu sagen, dass ich den Snackys-Template von eRock-Marketing nutze und die Anpassungen in Child-Template nur für diesen Template gelten:

Das Ergebnis kann man z.B. hier betrachten: https://www.germes.com/bankauflagen
kategoriebewertungen.jpg
PFAD_CHILD_TEMPLATE/Bootstrap.php:
Code:
public function boot(): void
{
    parent::boot();
    try {
        $this->getSmarty()->registerPlugin(Smarty::PLUGIN_FUNCTION, 'hatPreiskonfig', [$this, 'hatPreiskonfig']);
        $this->getSmarty()->registerPlugin(Smarty::PLUGIN_FUNCTION, 'cachePreiskonfig', [$this, 'cachePreiskonfig']);
        /*Eigene Funktion "getRating" registrieren*/
        $this->getSmarty()->registerPlugin(Smarty::PLUGIN_FUNCTION, 'getRating', [$this, 'getRating']);
    } catch (\SmartyException $e) {
        throw new \RuntimeException('Problems during smarty instantiation: ' . $e->getMessage());
    }
}

/*Eigene Funktion "getRating"*/
public function getRating($params, $smarty)
{
    $bewertungen = Shop::Container()->getDB()->queryPrepared(
        'SELECT tbewertung.cName AS Name, tbewertung.cText AS Text, tbewertung.dDatum AS Datum, tbewertung.cTitel AS Titel, tbewertung.nSterne AS Sterne
        FROM tbewertung
        INNER JOIN tkategorieartikel ON tbewertung.kArtikel = tkategorieartikel.kArtikel
        WHERE tkategorieartikel.kKategorie = :catID AND tbewertung.nAktiv = 1
        ORDER BY tbewertung.nSterne DESC',
        ['catID' => $params['catID']],
        ReturnType::ARRAY_OF_ASSOC_ARRAYS
    );
    $smarty->assign('Bewertungen', $bewertungen);
}

PFAD_CHILD_TEMPLATE/productdetails/rating.tpl (habe ich angepasst, damit der Gesamtanzahl von Bewertungen in Klammern hinter den Sternen angezeigt werden):
kategoriebewertungen-2.jpg
Code:
{extends file="{$parent_template_path}/productdetails/rating.tpl"}

{block name='productdetails-rating'}
{if $stars > 0}
{assign var=filename1 value='rate'}
{assign var=filename3 value='.png'}
{if isset($total) && $total > 1}
{lang key='averageProductRating' section='product rating' assign='ratingLabelText'}
{else}
{lang key='productRating' section='product rating' assign='ratingLabelText'}
{/if}
{block name="productdetails-rating-main"}
<div class="rating dpflex-a-center dpflex-wrap" title="{$ratingLabelText}: {$stars}/5">
    {strip}
    <div class="img-ct icon op1">
        <svg><use xlink:href="{$ShopURL}/{if empty($parentTemplateDir)}{$currentTemplateDir}{else}{$parentTemplateDir}{/if}img/icons/icons.svg?v={$nTemplateVersion}#icon-star-full"></use></svg>
    </div>
    <div class="img-ct icon op1">
        <svg><use xlink:href="{$ShopURL}/{if empty($parentTemplateDir)}{$currentTemplateDir}{else}{$parentTemplateDir}{/if}img/icons/icons.svg?v={$nTemplateVersion}#icon-star{if $stars >= 2}-full{elseif $stars > 1}-half{/if}"></use></svg>
    </div>
    <div class="img-ct icon op1">
        <svg><use xlink:href="{$ShopURL}/{if empty($parentTemplateDir)}{$currentTemplateDir}{else}{$parentTemplateDir}{/if}img/icons/icons.svg?v={$nTemplateVersion}#icon-star{if $stars >= 3}-full{elseif $stars > 2}-half{/if}"></use></svg>
    </div>
    <div class="img-ct icon op1">
        <svg><use xlink:href="{$ShopURL}/{if empty($parentTemplateDir)}{$currentTemplateDir}{else}{$parentTemplateDir}{/if}img/icons/icons.svg?v={$nTemplateVersion}#icon-star{if $stars >= 4}-full{elseif $stars > 3}-half{/if}"></use></svg>
    </div>
    <div class="img-ct icon op1">
        <svg><use xlink:href="{$ShopURL}/{if empty($parentTemplateDir)}{$currentTemplateDir}{else}{$parentTemplateDir}{/if}img/icons/icons.svg?v={$nTemplateVersion}#icon-star{if $stars >= 5}-full{elseif $stars > 4}-half{/if}"></use></svg>
    </div>
    {/strip}
    {if $nSeitenTyp === $smarty.const.PAGE_ARTIKEL && !empty($total)}
        <small>({$total})</small>
    {elseif empty($total) && !empty($total2)}
        <small>({$total2})</small>
    {/if}
</div>
{/block}
{/if}
{/block}

Snackys-Template hat eigenen Plugin, wo man eigene Inhalte auf der Seite ausgeben kann. Ich habe engender Code in Zone "after_content" bei Seitentyp "Artikelliste" eingefügt:
Code:
{getRating catID=$oNavigationsinfo->getCategory()->kKategorie}
{assign var="gesamtSterne" value=0}
{assign var="anzahlBewertungen" value=$Bewertungen|count}
{if $anzahlBewertungen > 0}
{foreach from=$Bewertungen item=bewertung}
    {assign var="gesamtSterne" value=$gesamtSterne + $bewertung.Sterne}
{/foreach}
{assign var="durchschnitt" value=$gesamtSterne / $anzahlBewertungen}
{assign var="nSterne_arr" value=[0,0,0,0,0]}
{foreach from=$Bewertungen item=bewertung}
    {assign var="index" value=$bewertung.Sterne-1}
    {$nSterne_arr[4-$index] = $nSterne_arr[4-$index]+1}
{/foreach}

<div class="tab-ct tab-pane panel-default" id="tab-votes">
<h2>Produktbewertungen aus der Kategorie "{$oNavigationsinfo->getCategory()->cName}"</h2>
<br>
    <div class="dpflex row">
        <div id="reviews-overview" class="col-xs-12 col-md-4 col-md-push-4">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <h4 class="panel-title">
                        <div>
                            <span class="h1 m0">{$durchschnitt|round:1}</span>
                            <span class="h2 m0">/5</span>
                        </div>
                        <div class="float-left">{include file='productdetails/rating.tpl' stars=$durchschnitt|round:1 total2=$anzahlBewertungen}</div>
                    </h4>
                </div>
                <div class="panel-body hidden-print">
                {if $anzahlBewertungen > 0}
                    <div id="article_votes">
                    {foreach name=sterne from=$nSterne_arr item=nSterne key=i}
                        {assign var=int1 value=5}
                        {math equation='x - y' x=$int1 y=$i assign='schluessel'}
                        {assign var=int2 value=100}
                        {math equation='(a/b)*c' a=$nSterne b=$anzahlBewertungen c=$int2 assign='percent'}
                        <div class="dpflex-a-center">
                            <div class="text">
                            {if isset($bewertungSterneSelected) && $bewertungSterneSelected === $schluessel}
                                <strong>
                            {/if}
                            {if $nSterne > 0 && (!isset($bewertungSterneSelected) || $bewertungSterneSelected !== $schluessel)}
                                <a>
                                    <strong>
                                        {$schluessel}
                                        {if $i == 4}
                                            {lang key="starSingular" section="product rating"} ({$nSterne})
                                        {else}
                                            {lang key="starPlural" section="product rating"} ({$nSterne})
                                        {/if}
                                    </strong>
                                </a>
                            {else}
                                {$schluessel}
                                {if $i == 4}
                                    {lang key="starSingular" section="product rating"}
                                {else}
                                    {lang key="starPlural" section="product rating"}
                                {/if}
                            {/if}
                            {if isset($bewertungSterneSelected) && $bewertungSterneSelected === $schluessel}
                                </strong>
                            {/if}
                            </div>
                                <div class="progress">
                                    {if $nSterne > 0}
                                        <div class="progress-bar" role="progressbar" aria-valuenow="{$percent|round}" aria-valuemin="0" aria-valuemax="100" style="width: {$percent|round}%;">
                                            {$nSterne}
                                        </div>
                                    {/if}
                            </div>
                        </div>
                    {/foreach}
                    </div>
                {/if}
                </div>
            </div>
        </div>
        <div id="rv-wp" class="col-xs-12 col-md-8 col-md-pull-8">
            {foreach from=$Bewertungen item=bewertung}
                <div class="review panel panel-default mb-sm bewertung">
                    <div class="review-comment">
                        <div class="top5">
                            <div class="title dpflex-j-between dpflex-a-start row">
                                <strong class="col-xs-12">{$bewertung.Titel}</strong>
                                <span class="col-xs-12">{include file='productdetails/rating.tpl' stars=$bewertung.Sterne}</span>
                            </div>
                            {$bewertung.Text|replace:"\r\n":"<br>"}<br>
                            <small>
                                <cite><span><span>{$bewertung.Name}</span></span>.</cite>, {$bewertung.Datum|date_format:"%d.%m.%Y"}
                            </small>
                            <span class="verified-purchase">{lang key="verKauf" section="custom"}</span>
                        </div>
                    </div>
                </div>
            {/foreach}
            <nav aria-label="Page navigation"><ul id="pagination" class="pagination text-center"></ul></nav>
        </div>
    </div>

</div>
<style>
#article_votes .progress {
    flex-grow: 1;
}
#tab-votes .progress, #tab-votes .progress-bar {
    border-radius: 1rem;
    font-size: 0;
    height: 0.5rem;
    background: #ddd;
}
#tab-votes .progress-bar {
    background: #666;
}
#tab-votes .progress, #tab-votes .progress-bar {
    border-radius: 1rem;
    font-size: 0;
    height: 0.5rem;
}
#article_votes .text {
    width: 7rem;
}
/*#reviews-overview {
    min-width: 25rem;
    order: 1;
}
#rv-wp {
    flex-grow: 1;
    margin-right: 4rem;
}*/
.lh-4rem {
    line-height: 4rem;
}
.bewertung {
    display: none;
}
#pagination {
    padding: 0;
}
.pagination li {
    display: inline;
}

.pagination li a {
    width: 40px;
    height: 40px;
    line-height: 40px;
    border-radius: 50%;
    display: inline-block;
    text-align: center;
    margin-right: 5px;
    border: 1px solid #ddd;
}

.pagination li.active a {
    background-color: #900;
    color: white;
    border-color: #900;
}

.pagination li.disabled a {
    color: #ddd;
    cursor: not-allowed;
    background-color: #f5f5f5;
}

/* Styles für Hover-Effekte */
.pagination li a:hover:not(.active) {
    background-color: #ddd;
}
</style>
<script>
$(document).ready(function() {
    var itemsPerPage = 4; // Anzahl der Bewertungen pro Seite
    var totalItems = $('.bewertung').length; // Gesamtzahl der Bewertungen
    var totalPages = Math.ceil(totalItems / itemsPerPage); // Anzahl der Seiten
    var visiblePages = 5; // Anzahl der sichtbaren Paginationslinks

    // Funktion zum Anzeigen der Bewertungen für eine bestimmte Seite
    function showPage(page) {
        $('.bewertung').hide();
        var start = (page - 1) * itemsPerPage;
        var end = start + itemsPerPage;
        $('.bewertung').slice(start, end).show();
    }

    // Funktion zum Erstellen der Pagination-Links
    function renderPagination(currentPage) {
        var startIndex = (currentPage - Math.floor(visiblePages / 2) > 0) ? currentPage - Math.floor(visiblePages / 2) : 1;
        var endIndex = (startIndex + visiblePages <= totalPages) ? startIndex + visiblePages : totalPages + 1;
        if (endIndex - startIndex < visiblePages) {
            startIndex = endIndex - visiblePages > 0 ? endIndex - visiblePages : 1;
        }

        var paginationHtml = '<li class="page-item ' + (currentPage === 1 ? 'disabled' : '') + '"><a class="page-link" href="#" aria-label="Previous" data-page="' + (currentPage - 1) + '"><span aria-hidden="true">&laquo;</span></a></li>';
        
        for (var i = startIndex; i < endIndex; i++) {
            paginationHtml += '<li class="page-item ' + (i === currentPage ? 'active' : '') + '"><a class="page-link" href="#" data-page="' + i + '">' + i + '</a></li>';
        }
        
        paginationHtml += '<li class="page-item ' + (currentPage === totalPages ? 'disabled' : '') + '"><a class="page-link" href="#" aria-label="Next" data-page="' + (currentPage + 1) + '"><span aria-hidden="true">&raquo;</span></a></li>';
        
        $('#pagination').html(paginationHtml);
    }

    // Klick-Event für die Pagination-Links
    $('#pagination').on('click', 'a.page-link', function(e) {
        e.preventDefault();
        var page = $(this).data('page');
        if (page >= 1 && page <= totalPages) {
            renderPagination(page);
            showPage(page);
        }
    });

    // Initialisieren der Pagination und Anzeigen der ersten Seite
    renderPagination(1);
    showPage(1);
});
</script>
{/if}

Bin kein richtiger Programmierer, daher würde ich für jede Art an Verbesserungsvorschläge dankbar.
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Kann Versandregeln nicht importieren Einrichtung und Installation von JTL-eazyAuction 0
Neu Workflow Aktion E-Mail senden kann nicht Plain und HTML Email zusammen versenden Arbeitsabläufe in JTL-Wawi 6
Neu Amazon Prime - DHL Versandlabel kann nicht gedruckt werden "Ein Prime Versandlabel wurde nicht gekauft, da kein verfügbares gefunden wurde." JTL-ShippingLabels - Fehler und Bugs 0
Neu Versandschein für Schweiz kann nicht gedruckt werden folgende Fehlermeldung JTL-ShippingLabels - Fehler und Bugs 1
Neu Woran kann es liegen, dass ein neu erstellter Connector-Verkaufskanal nicht in der Statusliste des Workers vorkommt? Shopify-Connector 2
In Diskussion Wer kann mir OPI einrichten Einrichtung / Updates von JTL-POS 4
Gelöst DHL: Es kann kein Versandetikett erstellt werden Gelöste Themen in diesem Bereich 3
Neu Wie kann man Anzahl der VPE per SQL abfragen? User helfen Usern - Fragen zu JTL-Wawi 1
Neu Sitemap ist HTML - Sitemap kann gelesen werden, enthält aber Fehler / Google Web Master Tool Allgemeine Fragen zu JTL-Shop 6
Neu Wie kann ich mit der Wawi Ebay Rechnungen erstellen und nach ebay hochladen? eBay-Anbindung - Fehler und Bugs 3
Neu Kann man in der POS zwischen Mandanten umschalten? User helfen Usern - Fragen zu JTL-Wawi 1
Neu Auftrag verpacken druckt auf 2 Drucker RE aus / wo kann das eingestellt werden? Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Wie kann ich etwas in der WAWI Datenbank per SQL ändern? JTL-Wawi 1.8 2
Neu Wo kann ich einstellen, welche Rechnungsvorlage "gezogen" wird Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 13
Neu kann man in List & Label Zeilen auskommentieren User helfen Usern - Fragen zu JTL-Wawi 4
Kann ich eine email an die Wawi senden durch die dann ein neuer Auftrag generiert wird? (Daten müssen händisch vervollständigt werden...) JTL-Wawi 1.8 2
Neu Kann uns jemand beim Otto einrichten helfen? Dienstleistung, Jobs und Ähnliches 3
Beantwortet #GEFUNDEN# Suche jemand , der uns eine (automatische) SQL Abfrage erstellen kann mit Mail Ausgabe Dienstleistung, Jobs und Ähnliches 2
Neu Wie kann ich im JTL-Shop einen Abwesenheitshinweis einstellen? Allgemeine Fragen zu JTL-Shop 1
Neu Wie kann ich eine Inventurliste als Excel- oder csv-Datei erstellen? Gelöste Themen in diesem Bereich 3
Wie kann ich eine Benachrichtigung bei einem Wareneingang auslösen mit einer Mail über die Artikel die eingebucht wurden JTL-Wawi 1.8 2
Neu Wie kann ich die vergebene Coupons sehen. Welche Kunde welchen Copoun Allgemeine Fragen zu JTL-Shop 0
Worker gleicht Woocommerce, jedoch nicht JTL ab JTL-Wawi 1.8 0
Neu Artikelsuche mit % Platzhalter funktioniert nicht mehr JTL-Wawi - Fehler und Bugs 3
Neu 1.9.4.1 Ausgabe Dropdown-Menü für Angebote und Aufträge funktioniert nach Update nicht mehr Installation von JTL-Wawi 0
Neu Wawi Beta 1.9.4.1 Instalationsdatei lässt sich nicht öffnen Installation von JTL-Wawi 16
Neu Rechnungen werden nicht an Amazon übertragen Amazon-Anbindung - Fehler und Bugs 0
Neu Bluetooth Etikettendrucker wird nicht in Wawi angezeigt JTL-Wawi - Fehler und Bugs 4
Kaufland eingerichtet - Kundengruppen-Preise Feld Leer - Nicht vorhanden - Was tun? kaufland.de - Anbindung (SCX) 2
Neu Ausgabeknopf im Kundenreiter funktioniert nicht mehr // 1.9.4.1 Stable JTL-Wawi - Fehler und Bugs 1
Versanddaten-Exportvorlage (nicht EU) für DPD Cloud JTL-Wawi 1.8 0
Neu Merkmale werden nicht übertragen. Artikel werden nicht den Merkmalen zugeordneten. WooCommerce-Connector 9
Neu Upload funktioniert nicht, von jetzt auf gleich! WooCommerce-Connector 7
Neu Bilder werden nicht an den Shopify-Shop übertragen Shopify-Connector 0
Neu EAN übertragen geht irgendwie nicht... WooCommerce-Connector 4
Neu Verfügbare Mengen bei Variationsartikeln werden falsch berechnet / nicht aktualisiert eBay-Anbindung - Fehler und Bugs 0
Neu Shop und Backend nach versuchter Cache leerung nicht mehr erreichbar Allgemeine Fragen zu JTL-Shop 2
Neu Nach dem Anlegen eines Artikels ist dieser nicht mehr sichtbar User helfen Usern - Fragen zu JTL-Wawi 6
Neu Google Consent Mode V2 klappt nicht Plugins für JTL-Shop 1
Neu Plugin zum testen wird nicht angezeigt Allgemeine Fragen zu JTL-Shop 1
Neu Pfandartikel nicht anzeigen/ausblenden. Allgemeine Fragen zu JTL-Shop 1
Kartonagen und Versandart nicht in Positionsliste mit aufführen JTL-Wawi 1.8 1
Kassenbuch wir nicht erstellt Tipps und Tricks - hilfreiche Videoanleitungen 0
Neu Benachrichtigung anfordern - Fehler: Der eingegebene Bestätigungscode ist nicht bekannt JTL-Shop - Fehler und Bugs 0
JTL Worker Kaufland SCX erscheint nicht JTL-Wawi 1.8 2
Neu DHL ShippingLabels nach Umstellung auf DHL Versenden 3.0 geht nicht JTL-ShippingLabels - Fehler und Bugs 11
Neu Preise werden nicht übertragen Shopware-Connector 0
Gelöst Einrichtung Drucker gelingt nicht JTL-POS - Fehler und Bugs 2
Neu JTL Wawi berücksichtigt bei Bestellvorschlag indirekten Zulauf aus angemeldeter Retoure nicht JTL-Wawi - Ideen, Lob und Kritik 0
Neu ebay Fehler 240 - nicht öffentliche Bieter-/Käuferliste eBay-Anbindung - Fehler und Bugs 5

Ähnliche Themen