Parcourir la source

領収証ダウンロード時にファイルを保存するように修正

master
sosuke.iwabuchi il y a 2 ans
Parent
révision
29c76bbefd
2 fichiers modifiés avec 40 ajouts et 11 suppressions
  1. +3
    -0
      app/Kintone/Models/Receipt.php
  2. +37
    -11
      app/Logic/ReceiptManager.php

+ 3
- 0
app/Kintone/Models/Receipt.php Voir le fichier

@@ -26,6 +26,7 @@ use Illuminate\Support\Collection;
* @property string receiptCustomerName * @property string receiptCustomerName
* @property int receiptTotalAmount * @property int receiptTotalAmount
* @property Collection<int, PaymentPlan> paymentPlans * @property Collection<int, PaymentPlan> paymentPlans
* @property ?Carbon receiptPdfFileDownloadDatetime
*/ */
class Receipt extends KintoneModel class Receipt extends KintoneModel
{ {
@@ -67,6 +68,7 @@ class Receipt extends KintoneModel
const FIELD_PAYMENT_PLANS_TARGET_MONTH = "入金実績支払対象_利用_月"; const FIELD_PAYMENT_PLANS_TARGET_MONTH = "入金実績支払対象_利用_月";


const FIELD_RECEIPT_PDF_FILE = "領収証PDF"; const FIELD_RECEIPT_PDF_FILE = "領収証PDF";
const FIELD_RECEIPT_PDF_FILE_DOWNLOAD_DATETIME = "初回領収証ダウンロード日時";


protected const FIELDS = [ protected const FIELDS = [
...parent::FIELDS, ...parent::FIELDS,
@@ -83,6 +85,7 @@ class Receipt extends KintoneModel
self::FIELD_RECEIPT_CUSTOMER_NAME => FieldType::SINGLE_LINE_TEXT, self::FIELD_RECEIPT_CUSTOMER_NAME => FieldType::SINGLE_LINE_TEXT,
self::FIELD_RECEIPT_TOTAL_AMOUNT => FieldType::NUMBER, self::FIELD_RECEIPT_TOTAL_AMOUNT => FieldType::NUMBER,
self::FIELD_RECEIPT_PDF_FILE => FieldType::FILE, self::FIELD_RECEIPT_PDF_FILE => FieldType::FILE,
self::FIELD_RECEIPT_PDF_FILE_DOWNLOAD_DATETIME => FieldType::DATETIME,
self::FIELD_PAYMENT_PLANS => FieldType::SUBTABLE, self::FIELD_PAYMENT_PLANS => FieldType::SUBTABLE,
]; ];




+ 37
- 11
app/Logic/ReceiptManager.php Voir le fichier

@@ -14,6 +14,7 @@ use App\Kintone\Models\SubTable\Receipt\ReceiptDetail;
use App\Kintone\Models\SubTable\Receipt\TaxDetail; use App\Kintone\Models\SubTable\Receipt\TaxDetail;
use App\Util\DateUtil; use App\Util\DateUtil;
use App\Util\TaxUtil; use App\Util\TaxUtil;
use Exception;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use PDF; use PDF;


@@ -180,12 +181,7 @@ class ReceiptManager


public function makePdf(): ReceiptReceipt public function makePdf(): ReceiptReceipt
{ {
$pdf = PDF::loadView("pdf/receipt", $this->getPdfData())
->setPaper("A4")
// ->setOption('page-width', 210)
// ->setOption('page-height', 148)
->setOrientation("Portrait")
->setOption('encoding', 'utf-8');
$pdf = $this->pdf();




$file = new ReceiptReceipt(); $file = new ReceiptReceipt();
@@ -195,16 +191,47 @@ class ReceiptManager
return $file; return $file;
} }


private function savePdf()
{
if ($this->receipt === null) {
throw new Exception("領収証不正");
}

$file = $this->makePdf();
$access = Receipt::getAccess();

$data = [];
$data[] = [
'fileKey' => $access->filePut($file),
'name' => sprintf("領収証_%s.pdf", $this->receipt->receiptNo),
'contentType' => $file->getMimeType(),
];

$this->receipt->set(Receipt::FIELD_RECEIPT_PDF_FILE, $data);

$this->receipt->save();
}

public function getPdf() public function getPdf()
{ {
$pdf = PDF::loadView("pdf/receipt", $this->getPdfData())
$pdf = $this->pdf();

if ($this->receipt->receiptPdfFileDownloadDatetime === null) {
$this->receipt->receiptPdfFileDownloadDatetime = DateUtil::now();
$this->savePdf();
}

return $pdf->inline();
}

private function pdf()
{
return PDF::loadView("pdf/receipt", $this->getPdfData())
->setPaper("A4") ->setPaper("A4")
// ->setOption('page-width', 210) // ->setOption('page-width', 210)
// ->setOption('page-height', 148) // ->setOption('page-height', 148)
->setOrientation("Portrait") ->setOrientation("Portrait")
->setOption('encoding', 'utf-8'); ->setOption('encoding', 'utf-8');

return $pdf->inline();
} }


public function getHtml() public function getHtml()
@@ -215,10 +242,9 @@ class ReceiptManager
private function makeFileName(ReceiptReceipt $file) private function makeFileName(ReceiptReceipt $file)
{ {
return sprintf( return sprintf(
"領収証_%s_%s_%s.%s",
"領収証_%s_%s.%s",
$this->receipt->receiptNo, $this->receipt->receiptNo,
$this->receipt->customerName, $this->receipt->customerName,
$this->receipt->receiptPurpose,
$file->getFileExtension(), $file->getFileExtension(),
); );
} }


Chargement…
Annuler
Enregistrer