<?php/* * Copyright(c) 2020 RACCOON HOLDINGS, Inc. All rights reserved. * https://paid.jp/ */namespace Plugin\Paid4\EventSubscriber;use Doctrine\ORM\EntityManagerInterface;use Eccube\Common\EccubeConfig;use Eccube\Entity\Order;use Eccube\Event\TemplateEvent;use Plugin\Paid4\Service\Payment\Method\PaidMethod;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\Form\FormView;//use Symfony\Component\HttpKernel\Event\FilterResponseEvent;use Symfony\Component\HttpKernel\Event\ResponseEvent; // ここを修正use Symfony\Component\HttpKernel\KernelEvents;class AdminOrderEventSubscriber implements EventSubscriberInterface{ /** * 未決済ステータス * @var mixed */ protected $unsettled; /** * 決済完了ステータス * @var mixed */ protected $complete; /** * キャンセルステータス * @var mixed */ protected $cancel; /** * @var EntityManagerInterface */ protected $entityManager; /** * OrderEditIndexCompleteListener constructor. * * @param EccubeConfig $eccubeConfig * @param EntityManagerInterface $entityManager */ public function __construct( EccubeConfig $eccubeConfig, EntityManagerInterface $entityManager ) { $this->entityManager = $entityManager; // 未決済 $this->unsettled = $eccubeConfig['paid4.settlement.unsettled']; // 決済完了 $this->complete = $eccubeConfig['paid4.settlement.complete']; // キャンセル $this->cancel = $eccubeConfig['paid4.settlement.cancel']; } public function onResponse(ResponseEvent $event) { } /** * @return array */ public static function getSubscribedEvents(): array { return [ KernelEvents::RESPONSE => ['onResponse'], '@admin/Order/edit.twig' => 'onAdminOrderEditTwig', '@admin/Order/index.twig' => 'onAdminOrderIndexTwig', ]; } /** * 管理画面 -> 受注一覧 */ public function onAdminOrderIndexTwig(TemplateEvent $event) { $event->addSnippet('@Paid4/admin/Order/index.twig'); $pagination = $event->getParameter('pagination'); $PaidOrder = array(); /** @var Order $Order */ foreach ($pagination as $Order) { $isPaidEntry = false; if ($Order instanceof Order) { foreach ($Order->getShippings() as $Shipping) { if (!is_null($Order->getPaidOrder())) { $isPaidEntry = true; $PaidOrder[$Shipping->getId()]['data'] = $Order->getPaidOrder(); } else { $isPaidEntry = false; $PaidOrder[$Shipping->getId()]['data'] = null; } $PaidOrder[$Shipping->getId()]['view'] = $isPaidEntry; } } } $event->setParameter('paid_order', $PaidOrder); } /** * 管理画面 -> 受注詳細 */ public function onAdminOrderEditTwig(TemplateEvent $event) { /** @var FormView $form */ $form = $event->getParameter('form'); /** @var Order $Order */ $Order = $event->getParameter('Order'); // 管理画面->新規受注登録で作成した受注はpaid支払を選択できないようにする if (is_null($Order->getId()) || is_null($Order->getPaidOrder())) { foreach ($form->children as $key => $children) { if ($key === 'Payment') { foreach ($children->vars['choices'] as $choice) { if ($choice->data['method_class'] == PaidMethod::class) { $choice->value = ''; $choice->attr = array_merge($choice->attr, ['disabled' => 'disabled']); $choice->attr = array_merge($choice->attr, ['class' => 'option-background-color']); break; } } } } $event->addAsset('@Paid4/admin/Order/edit_css.twig'); $event->setParameter('form', $form); } }}