13
13
use Magento \Sales \Model \Order \Shipment ;
14
14
use Magento \Sales \Model \Resource \Order \Shipment as ShipmentResource ;
15
15
use Magento \Sales \Model \Order \Address \Renderer ;
16
+ use Magento \Framework \Event \ManagerInterface ;
16
17
17
18
/**
18
19
* Class ShipmentSender
@@ -34,26 +35,36 @@ class ShipmentSender extends NotifySender
34
35
*/
35
36
protected $ addressRenderer ;
36
37
38
+ /**
39
+ * Application Event Dispatcher
40
+ *
41
+ * @var ManagerInterface
42
+ */
43
+ protected $ eventManager ;
44
+
37
45
/**
38
46
* @param Template $templateContainer
39
47
* @param ShipmentIdentity $identityContainer
40
48
* @param Order\Email\SenderBuilderFactory $senderBuilderFactory
41
49
* @param PaymentHelper $paymentHelper
42
50
* @param ShipmentResource $shipmentResource
43
51
* @param Renderer $addressRenderer
52
+ * @param ManagerInterface $eventManager
44
53
*/
45
54
public function __construct (
46
55
Template $ templateContainer ,
47
56
ShipmentIdentity $ identityContainer ,
48
57
\Magento \Sales \Model \Order \Email \SenderBuilderFactory $ senderBuilderFactory ,
49
58
PaymentHelper $ paymentHelper ,
50
59
ShipmentResource $ shipmentResource ,
51
- Renderer $ addressRenderer
60
+ Renderer $ addressRenderer ,
61
+ ManagerInterface $ eventManager
52
62
) {
53
63
parent ::__construct ($ templateContainer , $ identityContainer , $ senderBuilderFactory );
54
64
$ this ->paymentHelper = $ paymentHelper ;
55
65
$ this ->shipmentResource = $ shipmentResource ;
56
66
$ this ->addressRenderer = $ addressRenderer ;
67
+ $ this ->eventManager = $ eventManager ;
57
68
}
58
69
59
70
/**
@@ -73,18 +84,28 @@ public function send(Shipment $shipment, $notify = true, $comment = '')
73
84
$ formattedShippingAddress = '' ;
74
85
}
75
86
$ formattedBillingAddress = $ this ->addressRenderer ->format ($ order ->getBillingAddress (), 'html ' );
76
- $ this ->templateContainer ->setTemplateVars (
77
- [
78
- 'order ' => $ order ,
79
- 'shipment ' => $ shipment ,
80
- 'comment ' => $ comment ,
81
- 'billing ' => $ order ->getBillingAddress (),
82
- 'payment_html ' => $ this ->getPaymentHtml ($ order ),
83
- 'store ' => $ order ->getStore (),
84
- 'formattedShippingAddress ' => $ formattedShippingAddress ,
85
- 'formattedBillingAddress ' => $ formattedBillingAddress ,
87
+
88
+ $ transport = new \Magento \Framework \Object (
89
+ ['templateVars ' =>
90
+ [
91
+ 'order ' => $ order ,
92
+ 'shipment ' => $ shipment ,
93
+ 'comment ' => $ comment ,
94
+ 'billing ' => $ order ->getBillingAddress (),
95
+ 'payment_html ' => $ this ->getPaymentHtml ($ order ),
96
+ 'store ' => $ order ->getStore (),
97
+ 'formattedShippingAddress ' => $ formattedShippingAddress ,
98
+ 'formattedBillingAddress ' => $ formattedBillingAddress ,
99
+ ]
86
100
]
87
101
);
102
+
103
+ $ this ->eventManager ->dispatch (
104
+ 'email_shipment_set_template_vars_before ' , array ('sender ' => $ this , 'transport ' => $ transport )
105
+ );
106
+
107
+ $ this ->templateContainer ->setTemplateVars ($ transport ->getTemplateVars ());
108
+
88
109
$ result = $ this ->checkAndSend ($ order , $ notify );
89
110
if ($ result ) {
90
111
$ shipment ->setEmailSent (true );
0 commit comments