app/Plugin/ClaimPdf42/Controller/Admin/Order/ClaimPdf_Controller.php line 73

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.ec-cube.co.jp/
  8.  *
  9.  * For the full copyright and license information, please view the LICENSE
  10.  * file that was distributed with this source code.
  11.  */
  12. namespace Plugin\ClaimPdf42\Controller\Admin\Order;
  13. use Eccube\Controller\AbstractController;
  14. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  15. use Symfony\Component\Form\FormBuilder;
  16. use Symfony\Component\HttpFoundation\RedirectResponse;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use Symfony\Component\HttpFoundation\StreamedResponse;
  20. use Symfony\Component\Routing\Annotation\Route;
  21. use Eccube\Repository\ShippingRepository;
  22. use Plugin\ClaimPdf42\Entity\ClaimPdf;
  23. use Plugin\ClaimPdf42\Entity\ClaimHistory;
  24. use Plugin\ClaimPdf42\Form\Type\Admin\ClaimPdfType;
  25. use Plugin\ClaimPdf42\Form\Type\Admin\ClaimHistoryType;
  26. use Plugin\ClaimPdf42\Repository\ClaimPdfRepository;
  27. use Plugin\ClaimPdf42\Repository\ClaimHistoryRepository;
  28. use Plugin\ClaimPdf42\Service\ClaimPdfService;
  29. class ClaimPdf_Controller extends AbstractController
  30. {
  31.     /**
  32.      * @var ShippingRepository
  33.      */
  34.     protected $shippingRepository;
  35.     /**
  36.      * @var ClaimPdfRepository
  37.      */
  38.     protected $claimPdfRepository;
  39.     /**
  40.      * @var ClaimPdfService
  41.      */
  42.     protected $claimPdfService;
  43.     /**
  44.      * ClaimPdf_Controller constructor.
  45.      *
  46.      * @param ShippingRepository $shippingRepository
  47.      * @param ClaimPdfRepository $claimPdfRepository
  48.      * @param ClaimPdfService $claimPdfService;
  49.      */
  50.     public function __construct(
  51.         ShippingRepository $shippingRepository,
  52.         ClaimPdfRepository $claimPdfRepository,
  53.         ClaimPdfService $claimPdfService
  54.     ) {
  55.         $this->shippingRepository $shippingRepository;
  56.         $this->claimPdfRepository $claimPdfRepository;
  57.         $this->claimPdfService $claimPdfService;
  58.     }
  59.     /**
  60.      * @Route("/%eccube_admin_route%/order/export/claimpdf", name="admin_order_export_claimpdf")
  61.      * @Template("@ClaimPdf42/admin/Order/claimpdf.twig")
  62.      *
  63.      * @param Request $request
  64.      *
  65.      * @return array|RedirectResponse
  66.      */
  67.     public function exportClaimtPdf(Request $request)
  68.     {
  69.         // セッションから注文日(開始)と注文日(終了)を取得する
  70.         $orderDatetimeStart null;
  71.         $orderDatetimeEnd null;
  72.         $viewData $this->session->get('eccube.admin.order.search', []);
  73.         if (isset($viewData['order_datetime_start'])) {
  74.             $orderDatetimeStart substr($viewData['order_datetime_start'], 010);
  75.         }
  76.         if (isset($viewData['order_datetime_end'])) {
  77.             $orderDatetimeEnd substr($viewData['order_datetime_end'], 010);
  78.         }
  79.         // requestから出荷番号IDの一覧を取得する.
  80.         $ids $request->get('ids', []);
  81.         if (count($ids) == 0) {
  82.             $this->addError('admin.order.delivery_note_parameter_error''admin');
  83.             log_info('The Order cannot found!');
  84.             return $this->redirectToRoute('admin_order');
  85.         }
  86.         // 出荷番号を昇順にソート
  87.         sort($idsSORT_REGULAR);
  88.         $orderId_tmp "";
  89.         $orderId_cnt 0;
  90.         // 受注ID配列テーブルを作成する
  91.         foreach ($ids as $id) {
  92.             // 出荷番号から出荷情報を取得する
  93.             $Shipping $this->shippingRepository->find($id);
  94.             // 出荷情報から受注情報を取得する
  95.             $orderData_tmp $Shipping->getOrder();
  96.             // 設定条件:初回または同一受注番号でない場合(複数配送の場合は同一受注番号が複数存在する)
  97.             if ($orderId_tmp == "" or $orderId_tmp != $orderData_tmp->getId()) {
  98.                 // 受注番号を取得して設定
  99.                 $orderIdDatas[$orderId_cnt] = $orderData_tmp->getId();
  100.                 $orderId_tmp $orderIdDatas[$orderId_cnt];
  101.                 $orderId_cnt++;
  102.             }
  103.         }
  104.         /** @var ClaimPdf $ClaimPdf */
  105.         $ClaimPdf $this->claimPdfRepository->find($this->getUser());
  106.         //dump($ClaimPdf);
  107.         if (empty($ClaimPdf)) {
  108.             $ClaimPdf = new ClaimPdf();
  109.             $ClaimPdf
  110.                 ->setTitleNouhin(trans('admin.order.delivery_note_title_nouhin__default'))
  111.                 ->setMessage1Nouhin(trans('admin.order.delivery_note_message__default1'))
  112.                 ->setMessage2Nouhin(trans('admin.order.delivery_note_message__default2'))
  113.                 ->setMessage3Nouhin(trans('admin.order.delivery_note_message__default3'))
  114.                 ->setTitleNouhinShipping(trans('admin.order.delivery_note_title_otodoke__default'))
  115.                 ->setMessage1NouhinShipping(trans('admin.order.delivery_note_message__default7'))
  116.                 ->setMessage2NouhinShipping(trans('admin.order.delivery_note_message__default8'))
  117.                 ->setMessage3NouhinShipping(trans(''))
  118.                 ->setTitleOtodoke(trans('admin.order.delivery_note_title_otodoke__default'))
  119.                 ->setMessage1Otodoke(trans('admin.order.delivery_note_message__default7'))
  120.                 ->setMessage2Otodoke(trans('admin.order.delivery_note_message__default8'))
  121.                 ->setMessage3Otodoke(trans(''))
  122.                 ->setTitleSeikyu(trans('admin.order.delivery_note_title_seikyu__default'))
  123.                 ->setMessage1Seikyu(trans('admin.order.delivery_note_message__default4'))
  124.                 ->setMessage2Seikyu(trans('admin.order.delivery_note_message__default5'))
  125.                 ->setMessage3Seikyu(trans('admin.order.delivery_note_message__default6'))
  126.                 ->setHurikomiBank(trans(''))
  127.                 ->setHurikomiBankSiten(trans(''))
  128.                 ->setHurikomiBankKouza(trans(''))
  129.                 ->setHurikomiFreeArea(trans(''));
  130.         }
  131.         /**
  132.          * @var FormBuilder
  133.          */
  134.         $builder $this->formFactory->createBuilder(ClaimPdfType::class, $ClaimPdf);
  135.         /* @var \Symfony\Component\Form\Form $form */
  136.         $form $builder->getForm();
  137.         // Formへの設定
  138.         $form->get('ids')->setData(implode(','$ids));
  139.         $form->get('orderids')->setData(implode(','$orderIdDatas));
  140.         $form->get('orderdatetime_st')->setData($orderDatetimeStart);
  141.         $form->get('orderdatetime_en')->setData($orderDatetimeEnd);
  142.         return [
  143.             'form' => $form->createView(),
  144.         ];
  145.     }
  146.     /**
  147.      * @Route("/%eccube_admin_route%/order/export/claimpdf/download", name="admin_order_export_claimpdf_download")
  148.      * @Template("@ClaimPdf42/admin/Order/claimpdf.twig")
  149.      *
  150.      * @param Request $request
  151.      *
  152.      * @return Response
  153.      */
  154.     public function exportClaimPdfDownload(Request $request)
  155.     {
  156.         /**
  157.          * @var FormBuilder
  158.          */
  159.         $builder $this->formFactory->createBuilder(ClaimPdfType::class);
  160.         /* @var \Symfony\Component\Form\Form $form */
  161.         $form $builder->getForm();
  162.         $form->handleRequest($request);
  163.         
  164.         //dump($request);
  165.         //dump($form);
  166.         
  167.         
  168.         // Validation
  169.         if (!$form->isValid()) {
  170.             log_info('The parameter is invalid!');
  171.             return $this->render('@ClaimPdf42/admin/Order/claimpdf.twig', [
  172.                 'form' => $form->createView(),
  173.             ]);
  174.         }
  175.         $formData $form->getData();
  176.         $data = array();
  177.         $data["orderDatetime"]["st"] = $form->get('orderdatetime_st')->getData();
  178.         $data["orderDatetime"]["en"] = $form->get('orderdatetime_en')->getData();
  179.         $data["orderIds"] = $form->get('orderids')->getData();
  180.         $data["outputKbn"] = $form->get('outputkbn')->getData();
  181.         $data["title"] = $form->get('title')->getData();
  182.         $data["message1"] = $form->get('message1')->getData();
  183.         $data["message2"] = $form->get('message2')->getData();
  184.         $data["message3"] = $form->get('message3')->getData();
  185.         $data["atenaKbn"] = $form->get('ryosyu_atena')->getData();
  186.         $data["ryosyu_add_company"] = $form->get('ryosyu_add_company')->getData(); // 会社名追加@hanari
  187.         $data["ryosyu_add_name"] = $form->get('ryosyu_add_name')->getData();  // 宛名追加@hanari
  188.         // 出力帳票により処理を振り分ける
  189.         switch($data["outputKbn"]) {
  190.             case $this->eccubeConfig->get('eccube_claim_pdf_output_kbn_nouhin'):
  191.                 $formData['title_nouhin'] = $data["title"];
  192.                 $formData['message1_nouhin'] = $data["message1"];
  193.                 $formData['message2_nouhin'] = $data["message2"];
  194.                 $formData['message3_nouhin'] = $data["message3"];
  195.                 break;
  196.             case $this->eccubeConfig->get('eccube_claim_pdf_output_kbn_nouhin_shipping'):
  197.                 $formData['title_nouhin_shipping'] = $data["title"];
  198.                 $formData['message1_nouhin_shipping'] = $data["message1"];
  199.                 $formData['message2_nouhin_shipping'] = $data["message2"];
  200.                 $formData['message3_nouhin_shipping'] = $data["message3"];
  201.                 break;
  202.             case $this->eccubeConfig->get('eccube_claim_pdf_output_kbn_nouhin_otodoke'):
  203.                 $formData['title_otodoke'] = $data["title"];
  204.                 $formData['message1_otodoke'] = $data["message1"];
  205.                 $formData['message2_otodoke'] = $data["message2"];
  206.                 $formData['message3_otodoke'] = $data["message3"];
  207.                 break;
  208.             case $this->eccubeConfig->get('eccube_claim_pdf_output_kbn_seikyu'):
  209.                 $formData['title_seikyu'] = $data["title"];
  210.                 $formData['message1_seikyu'] = $data["message1"];
  211.                 $formData['message2_seikyu'] = $data["message2"];
  212.                 $formData['message3_seikyu'] = $data["message3"];
  213.                 break;
  214.             case $this->eccubeConfig->get('eccube_claim_pdf_output_kbn_seikyu_matome'):
  215.                 $formData['title_seikyu'] = $data["title"];
  216.                 $formData['message1_seikyu'] = $data["message1"];
  217.                 $formData['message2_seikyu'] = $data["message2"];
  218.                 $formData['message3_seikyu'] = $data["message3"];
  219.                 break;
  220.             case $this->eccubeConfig->get('eccube_claim_pdf_output_kbn_seikyu_matome_company'):
  221.                 $formData['title_seikyu'] = $data["title"];
  222.                 $formData['message1_seikyu'] = $data["message1"];
  223.                 $formData['message2_seikyu'] = $data["message2"];
  224.                 $formData['message3_seikyu'] = $data["message3"];
  225.                 break;
  226.             case $this->eccubeConfig->get('eccube_claim_pdf_output_kbn_ryosyu'):
  227.                 break;
  228.             default:
  229.         }
  230.         // 購入情報からPDFを作成する
  231.         $status $this->claimPdfService->makePdf($formData$data);
  232.         // 異常終了した場合の処理
  233.         if (!$status) {
  234.             $this->addError('admin.order.delivery_note_download_error''admin');
  235.             log_info('Unable to create pdf files! Process have problems!');
  236.             return $this->render('@ClaimPdf42/admin/Order/claimpdf.twig', [
  237.                 'form' => $form->createView(),
  238.             ]);
  239.         }
  240.         // ダウンロードする
  241.         $response = new Response(
  242.             $this->claimPdfService->outputPdf(),
  243.             200,
  244.             ['content-type' => 'application/pdf']
  245.         );
  246.         $downloadKind $form->get('download_kind')->getData();
  247.         // レスポンスヘッダーにContent-Dispositionをセットし、ファイル名を指定
  248.         if ($downloadKind == 1) {
  249.             $response->headers->set('Content-Disposition''attachment; filename="'.$this->claimPdfService->getPdfFileName().'"');
  250.         } else {
  251.             $response->headers->set('Content-Disposition''inline; filename="'.$this->claimPdfService->getPdfFileName().'"');
  252.         }
  253.         log_info('ClaimPdf download success!', ['Order ID' => implode(','$request->get('ids', []))]);
  254.         $isDefault = isset($formData['default']) ? $formData['default'] : false;
  255.         if ($isDefault) {
  256.             // Save input to DB
  257.             $formData['admin'] = $this->getUser();
  258.             $this->claimPdfRepository->save($formData);
  259.         }
  260.         return $response;
  261.     }
  262. }