Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

71 lines
1.7KB

  1. <?php
  2. namespace App\Logic;
  3. use App\Files\PDF\Receipt as ReceiptReceipt;
  4. use App\Kintone\Models\Receipt;
  5. use PDF;
  6. class ReceiptManager
  7. {
  8. private ?Receipt $receipt = null;
  9. public function __construct(?int $recordNo = null)
  10. {
  11. if ($recordNo) {
  12. $this->load($recordNo);
  13. } else {
  14. $this->receipt = new Receipt();
  15. }
  16. }
  17. private function load(int $recordNo)
  18. {
  19. $this->receipt = Receipt::find($recordNo);
  20. }
  21. public function getReceipt(): Receipt
  22. {
  23. return $this->receipt;
  24. }
  25. public function makePdf(): ReceiptReceipt
  26. {
  27. $pdf = PDF::loadView("pdf/receipt", $this->getPdfData())
  28. // ->setPaper("A4")
  29. ->setOption('page-width', 210)
  30. ->setOption('page-height', 148)
  31. ->setOrientation("Portrait")
  32. ->setOption('encoding', 'utf-8');
  33. $file = new ReceiptReceipt();
  34. $file->setAppFileName($this->makeFileName($file))
  35. ->put($pdf->output());
  36. return $file;
  37. }
  38. private function makeFileName(ReceiptReceipt $file)
  39. {
  40. return sprintf(
  41. "領収証_%s_%s_%s.%s",
  42. $this->receipt->receiptNo,
  43. $this->receipt->customerName,
  44. $this->receipt->receiptPurpose,
  45. $file->getFileExtension(),
  46. );
  47. }
  48. private function getPdfData()
  49. {
  50. return [
  51. 'receiptDate' => "2023/10/17",
  52. 'receiptCustomerName' => $this->receipt->receiptCustomerName,
  53. 'receiptTotalAmount' => number_format($this->receipt->receiptTotalAmount),
  54. 'taxTotalAmount' => number_format(100),
  55. 'receiptPurpose' => $this->receipt->receiptPurpose,
  56. ];
  57. }
  58. }