diff --git a/src/EventSubscriber/AddLinkToPeakSubscriber.php b/src/EventSubscriber/AddLinkToPeakSubscriber.php new file mode 100644 index 0000000..7e40b2c --- /dev/null +++ b/src/EventSubscriber/AddLinkToPeakSubscriber.php @@ -0,0 +1,55 @@ + 'addLink']; + } + + public function addLink(OrderShowMenuBuilderEvent $event): void + { + $order = $event->getOrder(); + if (!$order instanceof OrderInterface) { + return; + } + + $uploadOrderRequest = $order->getPeakWMSUploadOrderRequest(); + if ($uploadOrderRequest === null) { + return; + } + + $peakOrderId = $uploadOrderRequest->getPeakOrderId(); + + if ($uploadOrderRequest->getState() !== UploadOrderRequestInterface::STATE_UPLOADED || null === $peakOrderId) { + return; + } + + $menu = $event->getMenu(); + $menu + ->addChild('view_order_in_peak', [ + 'uri' => sprintf('https://app%s.peakwms.com/dialog/orderOverview/%d/details', $this->testEnvironment ? '-test' : '', $peakOrderId), + ]) + ->setAttribute('type', 'link') + ->setLabel('setono_sylius_peak_wms.ui.view_order_in_peak') + ->setLabelAttribute('icon', 'external alternate') + ->setLabelAttribute('color', 'blue') + ; + + $menu->reorderChildren(['view_order_in_peak', 'order_history', 'cancel']); + } +} diff --git a/src/Resources/config/doctrine/model/UploadOrderRequest.orm.xml b/src/Resources/config/doctrine/model/UploadOrderRequest.orm.xml index 4df8355..db0942a 100644 --- a/src/Resources/config/doctrine/model/UploadOrderRequest.orm.xml +++ b/src/Resources/config/doctrine/model/UploadOrderRequest.orm.xml @@ -15,6 +15,7 @@ + diff --git a/src/Resources/config/services/event_subscriber.xml b/src/Resources/config/services/event_subscriber.xml index 0d9d345..05eb077 100644 --- a/src/Resources/config/services/event_subscriber.xml +++ b/src/Resources/config/services/event_subscriber.xml @@ -7,6 +7,13 @@ + + %kernel.debug% + + + + diff --git a/src/Resources/translations/messages.en.yaml b/src/Resources/translations/messages.en.yaml index 5ac03e7..b1ead29 100644 --- a/src/Resources/translations/messages.en.yaml +++ b/src/Resources/translations/messages.en.yaml @@ -9,4 +9,5 @@ setono_sylius_peak_wms: peak_wms_state: Peak WMS state uploaded: Uploaded processing: Processing + view_order_in_peak: View order in Peak WMS webhooks: Webhooks diff --git a/src/Resources/views/admin/order/grid/field/peak_wms_upload_order_request.html.twig b/src/Resources/views/admin/order/grid/field/peak_wms_upload_order_request.html.twig index cc325a0..8552445 100644 --- a/src/Resources/views/admin/order/grid/field/peak_wms_upload_order_request.html.twig +++ b/src/Resources/views/admin/order/grid/field/peak_wms_upload_order_request.html.twig @@ -1,9 +1,11 @@ -{# @var data \Setono\SyliusPeakWMSPlugin\Model\UploadOrderRequestInterface #} -{% set state = data.state %} -{% set value = 'setono_sylius_peak_wms.ui.' ~ state %} +{# @var data \Setono\SyliusPeakWMSPlugin\Model\UploadOrderRequestInterface|null #} +{% if data is not null %} + {% set state = data.state %} + {% set value = 'setono_sylius_peak_wms.ui.' ~ state %} -{% if options.vars.labels is defined %} - {% include [(options.vars.labels ~ '/' ~ state ~ '.html.twig'), '@SyliusUi/Label/_default.html.twig'] with {'value': value} %} -{% else %} - {% include '@SyliusUi/Label/_default.html.twig' with {'value': value} %} + {% if options.vars.labels is defined %} + {% include [(options.vars.labels ~ '/' ~ state ~ '.html.twig'), '@SyliusUi/Label/_default.html.twig'] with {'value': value} %} + {% else %} + {% include '@SyliusUi/Label/_default.html.twig' with {'value': value} %} + {% endif %} {% endif %}