# Event für Finish Checkout

**URL:** <https://forum.shopware.com/t/event-fur-finish-checkout/47300>\
**Category:** Programmierung\
**Created:** [3. August 2017 um 19:22 UTC](https://forum.shopware.com/t/event-fur-finish-checkout/47300 "2017-08-03T19:22:28Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![ricochet](https://avatars.discourse-cdn.com/v4/letter/r/3ec8ea/32.png) [@ricochet](https://forum.shopware.com/u/ricochet)\
**Post date:** [3. August 2017 um 19:22 UTC](https://forum.shopware.com/t/event-fur-finish-checkout/47300/1 "2017-08-03T19:22:28Z")

</div>

Hallo,

auf welchen Event leg ich denn am besten einen Listener in meinem Plugin, um einen Kaufabschluss mitzukriegen, wobei ich im Callback Zugriff auf den Order habe und sodann im Template frontend\checkout\finish.tpl je nach Kunde einen bestimmten Block anders gestalten kann?

Enlight\_Controller\_Action\_PreDispatchSecure\_Frontend\_Checkout und Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend\_Checkout reagieren nicht.

Auch wüsste ich gerne, wie ich im EventArgs Parameter an die orderId bzw. orderNumber gelange.

Vielen Dank.

---

<div class="post-metadata">

**Author:** ![simkli](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/simkli/32/13124_2.png) [@simkli](https://forum.shopware.com/u/simkli)\
**Post date:** [3. August 2017 um 20:46 UTC](https://forum.shopware.com/t/event-fur-finish-checkout/47300/2 "2017-08-03T20:46:59Z")

</div>

Als Event für den Kaufabschluss eigent sich am besten, welches ich in folgendem Thread erwähnt habe:&nbsp;[18 days ago](https://forum.shopware.com/discussion/comment/199564/#Comment_199564)

Am besten “flagst” du die Bestellung über ein Attribut(=Freitextfeld)&nbsp;in der s\_order\_attributes. Und im&nbsp;Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend\_Checkout\_Finish sollte dir dann auch die Attribute zur Verfügung stehen, sodass du dort dann das Template manipulierst.

Viele Grüße

---

<div class="post-metadata">

**Author:** ![ricochet](https://avatars.discourse-cdn.com/v4/letter/r/3ec8ea/32.png) [@ricochet](https://forum.shopware.com/u/ricochet)\
**Post date:** [3. August 2017 um 22:14 UTC](https://forum.shopware.com/t/event-fur-finish-checkout/47300/3 "2017-08-03T22:14:58Z")

</div>

Im anderen Thread empfiehlst Du aber den Einsatz von Shopware\_Modules\_Order\_SaveOrder\_ProcessDetails. Diesen Event kann ich tatsächlich abfangen, aber keine Template Änderungen vornehmen.

In der install() Funktion meines Plugins habe ich 2 subscribeEvents: Shopware\_Modules\_Order\_SaveOrder\_ProcessDetails und Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend\_Checkout\_Finish, wobei der zweite scheinbar bei einem Kaufabschluss nicht aufgerufen wird.

```
    public function install()
    {
		# this event will be used after saving the order in the database
        $this->subscribeEvent(
            'Shopware_Modules_Order_SaveOrder_ProcessDetails',
            'onSaveOrder'
        );

		$this->subscribeEvent(
            'Enlight_Controller_Action_PostDispatchSecure_Frontend_Checkout_Finish',
            'onFrontendOrderPostDispatchFinish'
        );
        
        return true;
    }

```

&nbsp;

```
	public function onFrontendOrderPostDispatchFinish(Enlight_Event_EventArgs $args)
	{
	    $subject = $args->get('subject');
		
	    $request = $subject->Request();
	    $action = $request->getActionName();
		$view = $subject->View();
		
		$view->addTemplateDir(
	        __DIR__. '/Views'
	    );
		
		if ($action === 'finish') {
			$orderId = $args['orderID'];
			if ($this->isPostOrder($orderID)) {
				# now we have to exchange the text content
				$view->assign('isPostOrder', true);
			}
		}
	}	

```

&nbsp;

1. Kann ich in der install() Funktion mehrere subscribeEvents() aufführen?
2. Wieso wird onFrontendOrderPostDispatchFinish() nicht aufgerufen nach einem Kaufabschluss?
3. Kann ich das assignment der Variable ‘isPostOrder’ in dieser Listener Funktion so machen, damit die erweiterte finish.tpl dies abfragen kann?

---

<div class="post-metadata">

**Author:** ![IFF](https://avatars.discourse-cdn.com/v4/letter/i/c37758/32.png) [@IFF](https://forum.shopware.com/u/IFF)\
**Post date:** [4. August 2017 um 07:06 UTC](https://forum.shopware.com/t/event-fur-finish-checkout/47300/4 "2017-08-04T07:06:32Z")

</div>

oder…

Shopware\_Controllers\_Frontend\_Checkout::finishAction::before

&nbsp;

---

<div class="post-metadata">

**Author:** ![ricochet](https://avatars.discourse-cdn.com/v4/letter/r/3ec8ea/32.png) [@ricochet](https://forum.shopware.com/u/ricochet)\
**Post date:** [4. August 2017 um 09:20 UTC](https://forum.shopware.com/t/event-fur-finish-checkout/47300/5 "2017-08-04T09:20:21Z")

</div>

Ok ich blicke da echt noch nicht durch… Den Event Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend\_Checkout kann ich abfangen und prüfe im Callback auf die Action.

Wo sehe ich denn nun, welche Attribute mir im EventArgs Objekt des Callbacks zur Verfügung stehen? Ich bräuchte die Id der soeben angelegten Bestellung in der Datenbank.

Übersehe ich hier irgendwas oder ist das tatsächlich ziemlich unübersichtlich, wie man an solche Infos kommt?

---

<div class="post-metadata">

**Author:** ![IFF](https://avatars.discourse-cdn.com/v4/letter/i/c37758/32.png) [@IFF](https://forum.shopware.com/u/IFF)\
**Post date:** [4. August 2017 um 09:33 UTC](https://forum.shopware.com/t/event-fur-finish-checkout/47300/6 "2017-08-04T09:33:43Z")

</div>

Suchst du das?

$this-\>session = Shopware()-\>Session();  
$sOrderVariables = $this-\>session[‚sOrderVariables‘]-\>getArrayCopy()

&nbsp;

---

<div class="post-metadata">

**Author:** ![ricochet](https://avatars.discourse-cdn.com/v4/letter/r/3ec8ea/32.png) [@ricochet](https://forum.shopware.com/u/ricochet)\
**Post date:** [4. August 2017 um 10:00 UTC](https://forum.shopware.com/t/event-fur-finish-checkout/47300/7 "2017-08-04T10:00:10Z")

</div>

Bingo, da kann ich die sOrderNumber herausfischen und damit hab ich auch den Order. Vielen Dank.

Den F5 Klick muss ich aber schon nach abfangen, denke ich. Dafür kommt dann wohl das von simkli vorgeschlagene Flag zum Zuge.
