Anzahl der Bestellungen auf Lieferschein ausgeben [GELÖST]

Hallo,

 

Im jeweiligen Kundenkonto im backend wird die Anzahl der getätigten Bestellungen angezeigt. 

Kann diese Information auf den Lieferschein ausgegeben werden? Wir legen bei Neukunden bestimmte Gutscheine, Flyer, Infomaterial hinein. Wenn der Kunde aber bereits 4 mal bestellt hat, macht dies natürlich keinen Sinn.

Hat da jemand vielleicht einen Ansatz, wie man die TPL erweitern kann?

Viele Grüße
Danio

Hat keiner eine Idee ?

Man müsste rauskriegen ob’s für die PDF Belege für die bestellanzahl ne Variable überhaupt gibt.

Hi Danio,

Direkt gibt’s da nichts. Ich sehe zwei Möglichkeiten:

  1. Quick&dirty, aber nicht falsch: eine Smarty-Funktion {numorders customerid=…} die die Anzahl zurückgibt. Um das update-sicher zu machen, brauchst Du ein kleines Plugin, dass deine Smarty-Custom-Lib für die Belegerstellung verügbar macht.

  2. Sauberer: Plugin schreiben, das die Anzahl als Variable ans tpl übergibt.

Viel Erfolg,

Geert

vanwittlaer schrieb:

Hi Danio,

Direkt gibt’s da nichts. Ich sehe zwei Möglichkeiten:

  1. Quick&dirty, aber nicht falsch: eine Smarty-Funktion {numorders customerid=…} die die Anzahl zurückgibt. Um das update-sicher zu machen, brauchst Du ein kleines Plugin, dass deine Smarty-Custom-Lib für die Belegerstellung verügbar macht.

  2. Sauberer: Plugin schreiben, das die Anzahl als Variable ans tpl übergibt.

Viel Erfolg,

 

Also ich finde Quick&dirty recht ansprechend :slight_smile: - Daes nur für mich ist würde esreichen. Bei einem Updatet mache ich meine Änderungen einfach neu. Habe eine Liste mit Änderungen in den jeweiligen Datein. 

 

Kannst du mir etwas mehr zur Variante 1 verraten? Ich bin kein Programierer und versuche bestimmte Datein mit UltraEdit zu bearbeiten und zu modifizieren.

 

Nimm das hier, stell es als Datei ‘function.vwNumOrders.php’ in das Verzeichnis …/engine/Library/Smarty/plugins/ (wie gesagt, ist nach jedem Update weg) - Aufruf mit

 {vwNumOrders userId= **$** User. **$** address.userID}

ohne Gewähr, und wie komm ich jetzt an mein Bier? Was vertickt ihr denn?

 

Container()->get( 'dbal_connection' )->createQueryBuilder();

	$qb->select( 'count(*)' )
		->from( 's_order', 'o' )
		->where( $qb->expr()->eq( 'o.status', 2 ) )
		->andWhere( $qb->expr()->eq( 'o.userID', ':userId' ) )
		->setParameter( ':userId', $userId );

	/** @var int $numOrders */
	$numOrders = $qb->execute()->fetchColumn();

    return $numOrders;
}

 

Danke erst einmal für den Code.

Ich habe diesen nun in die index_ls.tpl eingefügt.

{block name="document_index_head_right"}
    {vwNumOrders userId=$User.$address.userID}. Bestellung
{/block}

Leider gibt er mir 0 aus, obwohl der Kunde bereits laut Kundenkonto bereits 20 Bestellungen gemacht hat. Also ist der Count nicht richtig

Lass mal diese Zeile weg:

->where( $qb->expr()->eq( 'o.status', 2 ) )

und mach aus dem ‘andWhere’ ein einfaches ‘where’. Oder schau mal in die Tabelle s_order bei Euch welcher Status bei einer erfolgreichen/abgeschlossenen Bestellung gesetzt wird.

1 „Gefällt mir“

Hi vanwittlaer,

Thumb-Up DANKE, dass entfernen der Zeile hat jetzt das Problem gelöst, aber auch die Anpassung der ID hat geholfen. Bei mir war es die 7 statt der 2 !

Danke für deine Hilfe !

Huhu vanwittlaer,

Kann man eigentlich das Ergebnis um +1 manipulieren? Bei Neukunden steht dort 0. Bestellung, da der Status 7 ja erst nach dem Versenden gesetzt wird. Lieferscheine werden ja vor dem Versenden erstellt.

Kann man hier auch einen zweiten Status mit einbeziehen? Sprich 7 & 1 soll abgefragt werden.

->where( $qb->expr()->eq( ‘o.status’, 7 ) )

Viele Grüße

Danio

So glaub ich meinst Du:

	$qb->select( 'count(*)' )
		->from( 's_order', 'o' )
		->where( $qb->expr()
			->in( 'o.status', [1, 7] ) )
		->andWhere( $qb->expr()->eq( 'o.userID', ':userId' ) )
		->setParameter( ':userId', $userId );

 

1 „Gefällt mir“

Ja genau, funktioniert so - Supa ! Danke dir für deine Hilfe bei der Umsetzung. Halo

Hallo,
wie würde das ganze denn aussehen, wenn ich ein Plugin dafür schreiben möchte? Ich habe bislang wenig Erfahrung in Sachen plugins und versteh noch nicht ganz, wie ich meine Variable, also in deinem Beispiel die $numOrders so bereitstelle, dass ich in den pdf Belegen darauf zugreifen kann. Könntest du mir da (zumindest Stichpunktartig) weiterhelfen? Ich habe natürlich die shopware entwickler doku durchforstet und auch schon tutorials gemacht, aber diesen Fall habe ich noch nicht gefunden :frowning:

Danke!

Eigentlich brauchst Du dafür kein Plugin:

https://developers.shopware.com/designers-guide/smarty/#register-custom-smarty-plugins

Smarty-Modifier direkt in Dein Theme in diesem Pfad: themes/Frontend/ThemeName/_private/smarty/modifier.picture.php

Viel Erfolg,

Geert