領収証発行サービス
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.

75 lines
2.2KB

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