diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php
index 108c7b5..bdd1b1e 100644
--- a/app/Console/Kernel.php
+++ b/app/Console/Kernel.php
@@ -13,6 +13,7 @@ class Kernel extends ConsoleKernel
protected function schedule(Schedule $schedule): void
{
Schedules\HeartBeat::register($schedule);
+ Schedules\PollSMSSendOrder::register($schedule);
}
/**
diff --git a/app/Console/Schedules/PollSMSSendOrder.php b/app/Console/Schedules/PollSMSSendOrder.php
new file mode 100644
index 0000000..a8ec38c
--- /dev/null
+++ b/app/Console/Schedules/PollSMSSendOrder.php
@@ -0,0 +1,17 @@
+command(CommandsPollSMSSendOrder::class)
+ ->everyMinute()
+ ->description("SMS送信状況確認");
+ }
+}
diff --git a/app/Http/Controllers/Web/Custom/HelloTechno/ReceiptIssuingsOrdersParam.php b/app/Http/Controllers/Web/Custom/HelloTechno/ReceiptIssuingsOrdersParam.php
index f2efb3c..9cb92ff 100644
--- a/app/Http/Controllers/Web/Custom/HelloTechno/ReceiptIssuingsOrdersParam.php
+++ b/app/Http/Controllers/Web/Custom/HelloTechno/ReceiptIssuingsOrdersParam.php
@@ -4,8 +4,10 @@ namespace App\Http\Controllers\Web\Custom\HelloTechno;
use App\Http\Controllers\Web\BaseParam;
use App\Models\ReceiptIssuingHTParkingCustomOrder as HT;
+use App\Models\ReceiptIssuingOrder;
/**
+ * @property ?string $id
* @property ?string $customerCode
* @property ?string $customerName
* @property ?string $parkingManagementCode
@@ -20,6 +22,7 @@ class ReceiptIssuingsOrdersParam extends BaseParam
return
array_merge(
[
+ ReceiptIssuingOrder::COL_NAME_ID => $this->str(true),
HT::COL_NAME_CUSTOMER_CODE => $this->str(true),
HT::COL_NAME_CUSTOMER_NAME => $this->str(true),
HT::COL_NAME_PARKING_MANAGEMENT_CODE => $this->str(true),
diff --git a/app/Http/Controllers/Web/ReceiptIssuingOrder/DownloadController.php b/app/Http/Controllers/Web/ReceiptIssuingOrder/DownloadController.php
index 57c00a2..f2a4bff 100644
--- a/app/Http/Controllers/Web/ReceiptIssuingOrder/DownloadController.php
+++ b/app/Http/Controllers/Web/ReceiptIssuingOrder/DownloadController.php
@@ -4,7 +4,7 @@ namespace App\Http\Controllers\Web\ReceiptIssuingOrder;
use App\Http\Controllers\Web\IParam;
use App\Http\Controllers\Web\WebController;
-use App\Logic\ReceiptIssuingOrder\PDFDownLoadManager;
+use App\Logic\ReceiptIssuingOrder\Custom\HelloTechno\PDFDownLoadManagerHelloTechno;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
@@ -22,7 +22,7 @@ class DownloadController extends WebController
public function __construct(
protected DownloadParam $param,
- private PDFDownLoadManager $manager
+ private PDFDownLoadManagerHelloTechno $manager
) {
parent::__construct();
}
@@ -37,6 +37,5 @@ class DownloadController extends WebController
$param = $this->param;
return $this->manager->initByToken($param->accessToken)->downlaodA4();
- // return $this->manager->initByToken($param->accessToken)->downlaodLetter();
}
}
diff --git a/app/Http/Controllers/Web/ReceiptIssuingOrder/DownloadLetterController.php b/app/Http/Controllers/Web/ReceiptIssuingOrder/DownloadLetterController.php
new file mode 100644
index 0000000..fa8a187
--- /dev/null
+++ b/app/Http/Controllers/Web/ReceiptIssuingOrder/DownloadLetterController.php
@@ -0,0 +1,41 @@
+param;
+ }
+
+ protected function run(Request $request): Response
+ {
+ $param = $this->param;
+
+ return $this->manager->initById($param->id)->downlaodLetter();
+ }
+}
diff --git a/app/Http/Controllers/Web/ReceiptIssuingOrder/DownloadLetterParam.php b/app/Http/Controllers/Web/ReceiptIssuingOrder/DownloadLetterParam.php
new file mode 100644
index 0000000..c3ba669
--- /dev/null
+++ b/app/Http/Controllers/Web/ReceiptIssuingOrder/DownloadLetterParam.php
@@ -0,0 +1,19 @@
+ $this->str(),
+ ];
+ }
+}
diff --git a/app/Http/Controllers/Web/ReceiptIssuingOrder/MailPostCompleteController.php b/app/Http/Controllers/Web/ReceiptIssuingOrder/MailPostCompleteController.php
new file mode 100644
index 0000000..800d1d2
--- /dev/null
+++ b/app/Http/Controllers/Web/ReceiptIssuingOrder/MailPostCompleteController.php
@@ -0,0 +1,53 @@
+param;
+ }
+
+ protected function run(Request $request): JsonResponse
+ {
+ $param = $this->param;
+
+
+ $this->manager->initById($param->id)
+ ->checkTimestamp($param->timestamp)
+ ->fill(
+ [
+ ReceiptIssuingOrder::COL_NAME_STATUS_MAIL_POST_DATE => $param->statusMailPostDate
+ ]
+ )
+ ->update();
+
+ return $this->successResponse();
+ }
+}
diff --git a/app/Http/Controllers/Web/ReceiptIssuingOrder/MailPostCompleteParam.php b/app/Http/Controllers/Web/ReceiptIssuingOrder/MailPostCompleteParam.php
new file mode 100644
index 0000000..5d12503
--- /dev/null
+++ b/app/Http/Controllers/Web/ReceiptIssuingOrder/MailPostCompleteParam.php
@@ -0,0 +1,27 @@
+ $this->str(),
+ ReceiptIssuingOrder::COL_NAME_STATUS_MAIL_POST_DATE => $this->date(),
+ ],
+ $this->timestamp(),
+ );
+ }
+}
diff --git a/app/Logic/ReceiptIssuingOrder/Custom/HelloTechno/PDFDownLoadManagerHelloTechno.php b/app/Logic/ReceiptIssuingOrder/Custom/HelloTechno/PDFDownLoadManagerHelloTechno.php
new file mode 100644
index 0000000..52b44e6
--- /dev/null
+++ b/app/Logic/ReceiptIssuingOrder/Custom/HelloTechno/PDFDownLoadManagerHelloTechno.php
@@ -0,0 +1,42 @@
+customOrder = ReceiptIssuingHTParkingCustomOrder::whereReceiptIssuingOrderId($this->order->id)->firstOrFail();
+ return $this;
+ }
+
+ public function initById(string $id)
+ {
+ parent::initById($id);
+
+ $this->customOrder = ReceiptIssuingHTParkingCustomOrder::whereReceiptIssuingOrderId($this->order->id)->firstOrFail();
+ return $this;
+ }
+
+ protected function getPDFData()
+ {
+ return [
+ ...parent::getPDFData(),
+ ...$this->customOrder->toArray(),
+ ];
+ }
+}
diff --git a/app/Logic/ReceiptIssuingOrder/PDFDownLoadManager.php b/app/Logic/ReceiptIssuingOrder/PDFDownLoadManager.php
index a223aa6..56cc856 100644
--- a/app/Logic/ReceiptIssuingOrder/PDFDownLoadManager.php
+++ b/app/Logic/ReceiptIssuingOrder/PDFDownLoadManager.php
@@ -22,13 +22,10 @@ class PDFDownLoadManager extends ReceiptIssuingOrderManager
{
$order = $this->order;
- // $data = [
- // 'amount'
- // ];
+ $data = $this->getPDFData();
-
- $pdf = PDF::loadView('pdf/receipt_a4', $order->toArray());
+ $pdf = PDF::loadView('pdf/receipt_a4', $data);
// はがきサイズを指定
$ret = $pdf->setPaper('A4')
->setOption('encoding', 'utf-8')
@@ -44,14 +41,8 @@ class PDFDownLoadManager extends ReceiptIssuingOrderManager
public function downlaodLetter()
{
$order = $this->order;
-
- // $data = [
- // 'amount'
- // ];
-
-
-
- $pdf = PDF::loadView('pdf/receipt_letter', $order->toArray());
+ $data = $this->getPDFData();
+ $pdf = PDF::loadView('pdf/receipt_letter', $data);
// はがきサイズを指定
$ret = $pdf->setOption('page-height', 148)
->setOption('page-width', 100)
@@ -65,4 +56,15 @@ class PDFDownLoadManager extends ReceiptIssuingOrderManager
return $ret;
}
+
+ protected function getPDFData()
+ {
+ $o = $this->order;
+ return [
+ ...$this->order->toArray(),
+ ReceiptIssuingOrder::COL_NAME_STATUS_RECEIPT_CONFIRM_DATETIME => $o->status_receipt_confirm_datetime->format('Y/m/d'),
+ ReceiptIssuingOrder::COL_NAME_RECEIPT_USE_DATE => $o->receipt_use_date->format('Y/m/d'),
+ ReceiptIssuingOrder::COL_NAME_RECEIPT_AMOUNT => number_format($o->receipt_amount)
+ ];
+ }
}
diff --git a/app/Logic/ReceiptIssuingOrder/ReceiptIssuingOrderManager.php b/app/Logic/ReceiptIssuingOrder/ReceiptIssuingOrderManager.php
index ae46d98..b03667d 100644
--- a/app/Logic/ReceiptIssuingOrder/ReceiptIssuingOrderManager.php
+++ b/app/Logic/ReceiptIssuingOrder/ReceiptIssuingOrderManager.php
@@ -66,6 +66,10 @@ abstract class ReceiptIssuingOrderManager
}
if ($this->order->updated_at->notEqualTo($timestamp)) {
+ logger([
+ 'request' => $timestamp,
+ 'current' => $this->order->updated_at,
+ ]);
throw new ExclusiveException();
}
diff --git a/app/Models/ReceiptIssuingOrder.php b/app/Models/ReceiptIssuingOrder.php
index a54b463..d16dc21 100644
--- a/app/Models/ReceiptIssuingOrder.php
+++ b/app/Models/ReceiptIssuingOrder.php
@@ -37,7 +37,6 @@ class ReceiptIssuingOrder extends AppModel
const COL_NAME_RECEIPT_PURPOSE = "receipt_purpose";
const COL_NAME_RECEIPT_INVOICE_NO = "receipt_invoice_no";
const COL_NAME_RECEIPT_AMOUNT = "receipt_amount";
- const COL_NAME_RECEIPT_HOW_TO_RECEIVE = "receipt_how_to_receive";
const COL_NAME_EMAIL = "email";
const COL_NAME_MAIL_PREF_CODE = "mail_pref_code";
const COL_NAME_MAIL_ZIP_CODE = "mail_zip_code";
diff --git a/app/Repositories/BaseRepository.php b/app/Repositories/BaseRepository.php
index b66521f..702bfa5 100644
--- a/app/Repositories/BaseRepository.php
+++ b/app/Repositories/BaseRepository.php
@@ -3,6 +3,7 @@
namespace App\Repositories;
use Illuminate\Database\Query\Builder;
+use Illuminate\Support\Arr;
abstract class BaseRepository
{
@@ -72,4 +73,9 @@ abstract class BaseRepository
$as = $as ? " as {$as}" : "";
return implode('.', $targets) . $as;
}
+ protected function makeColumnNameForSelect(array $targets, ?string $as = null): string
+ {
+ $as = $as ? " as {$as}" : " as " . Arr::last($targets);
+ return implode('.', $targets) . $as;
+ }
}
diff --git a/app/Repositories/Custom/HelloTechno/ReceiptIssuingOrderRepository.php b/app/Repositories/Custom/HelloTechno/ReceiptIssuingOrderRepository.php
index d71ffad..ccc2575 100644
--- a/app/Repositories/Custom/HelloTechno/ReceiptIssuingOrderRepository.php
+++ b/app/Repositories/Custom/HelloTechno/ReceiptIssuingOrderRepository.php
@@ -52,6 +52,8 @@ class ReceiptIssuingOrderRepository extends BaseRepository
});
// -----検索条件
+ // ID
+ $this->where($table, $condition, static::CONDITION_ID, $this->makeColumnName([static::TABLE_ORDER, ReceiptIssuingOrder::COL_NAME_ID]));
// 運営会社
$this->where($table, $condition, $this->makeColumnName([static::TABLE_CUSTOM_ORDER, CustomOrder::COL_NAME_CUSTOMER_CODE]));
@@ -88,15 +90,48 @@ class ReceiptIssuingOrderRepository extends BaseRepository
$custom = static::TABLE_CUSTOM_ORDER;
$handler = static::TABLE_HANDLER;
$columns = [
- $this->makeColumnName([$order, ReceiptIssuingOrder::COL_NAME_ID], 'id'),
- $this->makeColumnName([$order, ReceiptIssuingOrder::COL_NAME_STATUS_NAME], 'status_name'),
- $this->makeColumnName([$order, ReceiptIssuingOrder::COL_NAME_ORDER_DATETIME], 'order_datetime'),
- $this->makeColumnName([$custom, CustomOrder::COL_NAME_CUSTOMER_CODE], 'customer_code'),
- $this->makeColumnName([$custom, CustomOrder::COL_NAME_PARKING_MANAGEMENT_CODE], 'parking_management_code'),
- $this->makeColumnName([$custom, CustomOrder::COL_NAME_CUSTOMER_NAME], 'customer_name'),
- $this->makeColumnName([$custom, CustomOrder::COL_NAME_PARKING_NAME], 'parking_name'),
- $this->makeColumnName([$handler, User::COL_NAME_ID], 'handler_id'),
- $this->makeColumnName([$handler, User::COL_NAME_NAME], 'handler_name'),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_ID], 'id'),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_STATUS_NAME], 'status_name'),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_ORDER_DATETIME], 'order_datetime'),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_SUMMARY_KEY1]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_SUMMARY_KEY2]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_ACCESS_TOKEN]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_ACCESS_TOKEN_EXPIRES_AT]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_STATUS_DONE]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_STATUS_SMS_SEND_DATETIME]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_STATUS_FIRST_ACCESS_DATETIME]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_STATUS_RECEIPT_CONFIRM_DATETIME]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_STATUS_ORDER_MAIL_DATETIME]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_STATUS_MAIL_DOWNLOAD_DATETIME]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_STATUS_MAIL_POST_DATE]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_STATUS_RECEIPT_DOWNLOAD_DATETIME]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_STATUS_RECEIPT_EMAIL_SEND_ORDER_DATETIME]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_STATUS_RECEIPT_EMAIL_SEND_DATETIME]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_SMS_PHONE_NUMBER]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_SMS_SEND_SUCCESS]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_RECEIPT_NO]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_RECEIPT_USE_DATE]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_RECEIPT_SHOP_NAME]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_RECEIPT_ISSUER]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_RECEIPT_NAME]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_RECEIPT_PURPOSE]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_RECEIPT_INVOICE_NO]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_RECEIPT_AMOUNT]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_EMAIL]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_MAIL_PREF_CODE]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_MAIL_ZIP_CODE]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_MAIL_ADDRESS1]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_MAIL_ADDRESS2]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_MAIL_ADDRESS3]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_MAIL_NAME]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_MEMO]),
+ $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_UPDATED_AT]),
+ $this->makeColumnNameForSelect([$custom, CustomOrder::COL_NAME_CUSTOMER_CODE], 'customer_code'),
+ $this->makeColumnNameForSelect([$custom, CustomOrder::COL_NAME_PARKING_MANAGEMENT_CODE], 'parking_management_code'),
+ $this->makeColumnNameForSelect([$custom, CustomOrder::COL_NAME_CUSTOMER_NAME], 'customer_name'),
+ $this->makeColumnNameForSelect([$custom, CustomOrder::COL_NAME_PARKING_NAME], 'parking_name'),
+ $this->makeColumnNameForSelect([$handler, User::COL_NAME_ID], 'handler_id'),
+ $this->makeColumnNameForSelect([$handler, User::COL_NAME_NAME], 'handler_name'),
];
diff --git a/resources/views/pdf/receipt_a4.blade.php b/resources/views/pdf/receipt_a4.blade.php
index 053e689..03907c0 100644
--- a/resources/views/pdf/receipt_a4.blade.php
+++ b/resources/views/pdf/receipt_a4.blade.php
@@ -16,19 +16,19 @@
- 株式会社サテライトテクノロジーズ 様
+ {{ $receipt_name }} 様
- ¥1,600-
+ ¥{{ $receipt_amount }} -
(内税 10%対象)
@@ -39,14 +39,14 @@
内消費税 ¥160-
- 但し 駐車料金として
+ 但し {{ $receipt_purpose }}として
上記正に領収いたしました。
- 利用日 : 2023/05/28
- 駐車場名 : 浜松町サテ駐車場
+ 利用日 : {{ $receipt_use_date }}
+ 駐車場名 : {{ $parking_name }}
- 発行者 株式会社パーキングサテライト
- インボイス登録番号 T1234567890123
+ 発行者 {{ $customer_name }}
+ インボイス登録番号 {{ $receipt_invoice_no }}
diff --git a/resources/views/pdf/receipt_letter.blade.php b/resources/views/pdf/receipt_letter.blade.php
index 41a6358..86a0271 100644
--- a/resources/views/pdf/receipt_letter.blade.php
+++ b/resources/views/pdf/receipt_letter.blade.php
@@ -35,26 +35,30 @@
-
発行日 2023/05/23
-
No 20230523-123456
+
発行日 {{ $status_receipt_confirm_datetime }}
+
No {{ $receipt_no }}
- 株式会社 サテライトテクノロジーズ 様
- 利用日 2023/10/12
+ {{ $receipt_name }} 様
+ 利用日 {{ $receipt_use_date }}
- ¥{{ number_format($receipt_amount) }}-
+ ¥{{ $receipt_amount }} -
-
内消費税 ¥160- (10%対象)
+
内消費税 ¥XXX- (10%対象)
- 但し、北堀江第一駐車場 駐車料金として
+
+ 但し、{{ $parking_name }}
+
+
+ {{ $receipt_purpose }}として
上記正に領収いたしました。
-
運営会社 スーパーパーキング株式会社
-
インボイス登録番号 T1234567890123
+
運営会社 {{ $customer_name }}
+
インボイス登録番号 {{ $receipt_invoice_no }}
発行元及び返送先
〒550-0014
diff --git a/routes/api.php b/routes/api.php
index 2a4e072..a8808d4 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -20,6 +20,7 @@ RouteHelper::get('/logout', App\Http\Controllers\Web\Auth\LogoutController::clas
RouteHelper::get('/app-token-check', App\Http\Controllers\Web\ReceiptIssuingOrder\TokenCheckController::class);
RouteHelper::post('/receipt-issuing-order/confirm', App\Http\Controllers\Web\ReceiptIssuingOrder\ConfirmController::class);
RouteHelper::post('/receipt-issuing-order/mail-order', App\Http\Controllers\Web\ReceiptIssuingOrder\MailOrderController::class);
+RouteHelper::post('/receipt-issuing-order/mail-complete', App\Http\Controllers\Web\ReceiptIssuingOrder\MailPostCompleteController::class);
RouteHelper::get('/receipt/download', App\Http\Controllers\Web\ReceiptIssuingOrder\TokenCheckController::class);
diff --git a/routes/web.php b/routes/web.php
index 936a0e2..ad21819 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -21,6 +21,7 @@ RouteHelper::post('/receiptIssuingOrder/create', App\Http\Controllers\Web\Receip
// 領収証ダウンロード
RouteHelper::get('/receipt/download', App\Http\Controllers\Web\ReceiptIssuingOrder\DownloadController::class);
+RouteHelper::get('/receipt-letter/download', App\Http\Controllers\Web\ReceiptIssuingOrder\DownloadLetterController::class);
// ルーティングで適合しない場合はフロント側のRoutingにゆだねる
RouteHelper::get('/{any?}', App\Http\Controllers\Web\IndexController::class)->where('any', '.*');