Skip to content

Commit fa7ec2a

Browse files
Merge pull request #35 from NicolasBarbey/main
add listener to generate label with picking
2 parents 6afa8d3 + 27e2bc9 commit fa7ec2a

2 files changed

Lines changed: 54 additions & 1 deletion

File tree

Config/module.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<language>en_US</language>
1414
<language>fr_FR</language>
1515
</languages>
16-
<version>2.1.5</version>
16+
<version>2.1.6</version>
1717
<authors>
1818
<author>
1919
<name>Gilles Bourgeat</name>
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?php
2+
3+
namespace ColissimoLabel\EventListeners;
4+
5+
6+
use ColissimoLabel\ColissimoLabel;
7+
use ColissimoLabel\Service\LabelService;
8+
use Picking\Event\GenerateLabelEvent;
9+
use Picking\Picking;
10+
use Symfony\Component\DependencyInjection\ContainerInterface;
11+
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
12+
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
13+
use Thelia\Controller\Admin\BaseAdminController;
14+
use Thelia\Core\HttpFoundation\JsonResponse;
15+
16+
/**
17+
* Class GenerateLabelListener
18+
*
19+
* This class is used only when you have the Picking module
20+
*
21+
* @package ColissimoLabel\EventListeners
22+
*/
23+
class GenerateLabelListener extends BaseAdminController implements EventSubscriberInterface
24+
{
25+
public function __construct(
26+
private readonly LabelService $labelService,
27+
private readonly EventDispatcherInterface $eventDispatcher
28+
) {
29+
}
30+
31+
public function generateLabel(GenerateLabelEvent $event)
32+
{
33+
$deliveryModuleCode = $event->getOrder()->getModuleRelatedByDeliveryModuleId()?->getCode();
34+
if ($deliveryModuleCode === "ColissimoHomeDelivery" || $deliveryModuleCode === "ColissimoPickupPoint"|| $deliveryModuleCode === "SoColissimo") {
35+
$data = [];
36+
$orderId = $event->getOrder()->getId();
37+
$data['new_status'] = ColissimoLabel::getConfigValue("new_status", 'nochange');
38+
$data['order_id'][$orderId] = $orderId;
39+
$data['weight'][$orderId] = $event->getWeight();
40+
$data['signed'][$orderId] = $event->isSignedDelivery();
41+
$event->setResponse(new JsonResponse($this->labelService->generateLabel($data, $this->eventDispatcher)[0]));
42+
}
43+
}
44+
45+
public static function getSubscribedEvents()
46+
{
47+
$events = [];
48+
if (class_exists('Picking\Event\GenerateLabelEvent')){
49+
$events[GenerateLabelEvent::PICKING_GENERATE_LABEL] = ['generateLabel', 65];
50+
}
51+
return $events;
52+
}
53+
}

0 commit comments

Comments
 (0)