領収証発行サービス
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
1.8KB

  1. <?php
  2. namespace App\Logic\ReceiptIssuingOrder;
  3. use App\Events\ReceiptIssuingOrder\DownloadedEvent;
  4. use App\Exceptions\AppCommonException;
  5. use App\Models\ReceiptIssuingOrder;
  6. use App\Util\DateUtil;
  7. use PDF;
  8. class PDFDownLoadManager extends ReceiptIssuingOrderManager
  9. {
  10. public function __construct(
  11. protected ReceiptIssuingOrder $order,
  12. ) {
  13. parent::__construct($order);
  14. }
  15. public function downlaodA4()
  16. {
  17. $order = $this->order;
  18. $data = $this->getPDFData();
  19. $pdf = PDF::loadView('pdf/receipt_a4', $data);
  20. // はがきサイズを指定
  21. $ret = $pdf->setPaper('A4')
  22. ->setOption('encoding', 'utf-8')
  23. ->inline();
  24. if ($order->status_receipt_download_datetime === null) {
  25. $order->status_receipt_download_datetime = DateUtil::now();
  26. // イベント登録
  27. DownloadedEvent::dispatch($this->order);
  28. }
  29. $this->save();
  30. return $ret;
  31. }
  32. public function downlaodLetter()
  33. {
  34. $data = $this->getPDFData();
  35. $pdf = PDF::loadView('pdf/receipt_letter', $data);
  36. // はがきサイズを指定
  37. $ret = $pdf->setOption('page-height', 148)
  38. ->setOption('page-width', 100)
  39. ->setOption('encoding', 'utf-8')
  40. ->inline();
  41. return $ret;
  42. }
  43. protected function getPDFData()
  44. {
  45. $o = $this->order;
  46. return [
  47. ...$this->order->toArray(),
  48. ReceiptIssuingOrder::COL_NAME_STATUS_RECEIPT_CONFIRM_DATETIME => $o->status_receipt_confirm_datetime->format('Y/m/d'),
  49. ReceiptIssuingOrder::COL_NAME_RECEIPT_USE_DATE => $o->receipt_use_date->format('Y/m/d'),
  50. ReceiptIssuingOrder::COL_NAME_RECEIPT_AMOUNT => number_format($o->receipt_amount)
  51. ];
  52. }
  53. }