Selaa lähdekoodia

申込関連のメールを修正

master
sosuke.iwabuchi 2 vuotta sitten
vanhempi
commit
af625fe52c
10 muutettua tiedostoa jossa 149 lisäystä ja 30 poistoa
  1. +16
    -10
      app/Email/Members/EntryApprove.php
  2. +43
    -0
      app/Email/Members/EntryMessageBuilder.php
  3. +16
    -10
      app/Email/Members/EntryPaymentComplete.php
  4. +4
    -2
      app/Http/Controllers/Web/Email/EmailSendController.php
  5. +2
    -2
      app/Http/Controllers/Web/Email/EmailSendParam.php
  6. +13
    -0
      app/Http/Controllers/Web/NoneParams.php
  7. +32
    -0
      app/Kintone/Models/SeasonTicketContractEntry.php
  8. +11
    -0
      app/Kintone/Models/SeasonTicketContractPlan.php
  9. +7
    -3
      resources/views/emails/members/entry_approve.blade.php
  10. +5
    -3
      resources/views/emails/members/entry_payment_complete.blade.php

+ 16
- 10
app/Email/Members/EntryApprove.php Näytä tiedosto

@@ -4,6 +4,7 @@ namespace App\Email\Members;

use App\Kintone\Models\Parking;
use App\Kintone\Models\SeasonTicketContractEntry;
use App\Kintone\Models\SeasonTicketContractPlan;

class EntryApprove extends Members
{
@@ -11,6 +12,7 @@ class EntryApprove extends Members
public function __construct(
private Parking $parking,
private SeasonTicketContractEntry $entry,
private SeasonTicketContractPlan $plan,
) {
$this->setEmail($entry->email);
parent::__construct(null);
@@ -28,17 +30,21 @@ class EntryApprove extends Members

public function getMemberParams(): array
{
$entry = $this->entry;

return [
'customer_name' => $this->entry->customerName,
'customer_name_kana' => $this->entry->customerNameKana,
'parking_name' => $this->entry->parkingName,
'type_name' => '##TODO##',
'season_ticket_select' => '##TODO##',
'plan_name' => '##TODO##',
'vehicle_no' => $this->entry->vehicleNo,
'use_start_date' => $this->entry->useStartDate->format('Y/m/d'),
'payment_method' => $this->entry->paymentMethod,
'amount' => '##TODO##',
'customer_name' => $entry->customerName ?? "-",
'customer_name_kana' => $entry->customerNameKana ?? "-",
'parking_name' => $entry->parkingName ?? "-",
'type_name' => "##TODO どの値を設定する??", //##TODO
'season_ticket_select' => null, //##TODO
'plan_name' => $entry->planName ?? "-",
'vehicle_no' => $entry->vehicleNo ?? "-",
'use_start_date' => $entry->useStartDate ? $entry->useStartDate->format('Y/m/d') : "-",
'payment_method' => $entry->paymentMethod ?? "-",
'amount' => number_format($entry->amount ?? 0),
'paymentExplain' => EntryMessageBuilder::getPaymentExplainStr($this->entry),
'taxExplain' => EntryMessageBuilder::getTaxExplain($this->plan),
'can_terminate_15' => in_array(Parking::ELEMENT_CAN_TERMINATE_DATE_15, $this->parking->canTerminateDate),
'can_terminate_end_of_month' => in_array(Parking::ELEMENT_CAN_TERMINATE_DATE_END_OF_MONTH, $this->parking->canTerminateDate),
];


+ 43
- 0
app/Email/Members/EntryMessageBuilder.php Näytä tiedosto

@@ -0,0 +1,43 @@
<?php

namespace App\Email\Members;

use App\Kintone\Models\SeasonTicketContractEntry;
use App\Kintone\Models\SeasonTicketContractPlan;

abstract class EntryMessageBuilder
{
public static function getPaymentExplainStr(SeasonTicketContractEntry $entry): string
{
if (!$entry->paymentLimitDate) {
return "";
}
if (!$entry->firstAmount) {
return "";
}

$hiwariStr = !!$entry->hiwariAmount ? sprintf(
"%d月分日割分%s円と",
$entry->hiwariMonth,
number_format($entry->hiwariAmount)
) : "";

return sprintf(
"※料金は利用日までの前払いのため、%s%d月分%s円 (合計%s円)を%sまでにお振込下さい。(手数料は振込者負担でお願い致します。)",
$hiwariStr,
$entry->targetMonth,
number_format($entry->targetAmount),
number_format($entry->firstAmount),
$entry->paymentLimitDate->format("Y年m月d日")
);
}

public static function getTaxExplain(SeasonTicketContractPlan $plan): string
{
return sprintf(
"(消費税等含む,適用税率%d%%  消費税額 %s円)",
$plan->taxRate ?? 0,
number_format($plan->taxAmount ?? 0),
);
}
}

+ 16
- 10
app/Email/Members/EntryPaymentComplete.php Näytä tiedosto

@@ -4,6 +4,7 @@ namespace App\Email\Members;

use App\Kintone\Models\Parking;
use App\Kintone\Models\SeasonTicketContractEntry;
use App\Kintone\Models\SeasonTicketContractPlan;

class EntryPaymentComplete extends Members
{
@@ -11,6 +12,7 @@ class EntryPaymentComplete extends Members
public function __construct(
private Parking $parking,
private SeasonTicketContractEntry $entry,
private SeasonTicketContractPlan $plan,
) {
$this->setEmail($entry->email);
parent::__construct(null);
@@ -28,17 +30,21 @@ class EntryPaymentComplete extends Members

public function getMemberParams(): array
{
$entry = $this->entry;

return [
'customer_name' => $this->entry->customerName,
'customer_name_kana' => $this->entry->customerNameKana,
'parking_name' => $this->entry->parkingName,
'type_name' => '##TODO##',
'season_ticket_select' => '##TODO##',
'plan_name' => '##TODO##',
'vehicle_no' => $this->entry->vehicleNo,
'use_start_date' => $this->entry->useStartDate->format('Y/m/d'),
'payment_method' => $this->entry->paymentMethod,
'amount' => '##TODO##',
'customer_name' => $entry->customerName ?? "-",
'customer_name_kana' => $entry->customerNameKana ?? "-",
'parking_name' => $entry->parkingName ?? "-",
'type_name' => "##TODO どの値を設定する??", //##TODO
'season_ticket_select' => null, //##TODO
'plan_name' => $entry->planName ?? "-",
'vehicle_no' => $entry->vehicleNo ?? "-",
'use_start_date' => $entry->useStartDate ? $entry->useStartDate->format('Y/m/d') : "-",
'payment_method' => $entry->paymentMethod ?? "-",
'amount' => number_format($entry->amount ?? 0),
'paymentExplain' => EntryMessageBuilder::getPaymentExplainStr($this->entry),
'taxExplain' => EntryMessageBuilder::getTaxExplain($this->plan),
'can_terminate_15' => in_array(Parking::ELEMENT_CAN_TERMINATE_DATE_15, $this->parking->canTerminateDate),
'can_terminate_end_of_month' => in_array(Parking::ELEMENT_CAN_TERMINATE_DATE_END_OF_MONTH, $this->parking->canTerminateDate),
];


+ 4
- 2
app/Http/Controllers/Web/Email/EmailSendController.php Näytä tiedosto

@@ -89,13 +89,15 @@ class EmailSendController extends FromKintoneController
if ($emailId === Email::ENTRY_APPROVE) {
$entry = SeasonTicketContractEntry::find($this->param->seasonTicketContractEntryRecordNo);
$parking = $entry->getParking();
$this->setEmail(new EntryApprove($parking, $entry));
$plan = $entry->getPlan();
$this->setEmail(new EntryApprove($parking, $entry, $plan));
return;
}
if ($emailId === Email::ENTRY_PAYMENT_COMPLETE) {
$entry = SeasonTicketContractEntry::find($this->param->seasonTicketContractEntryRecordNo);
$parking = $entry->getParking();
$this->setEmail(new EntryPaymentComplete($parking, $entry));
$plan = $entry->getPlan();
$this->setEmail(new EntryPaymentComplete($parking, $entry, $plan));
return;
}



+ 2
- 2
app/Http/Controllers/Web/Email/EmailSendParam.php Näytä tiedosto

@@ -8,7 +8,7 @@ use Illuminate\Validation\Rules\Enum;

/**
* @property Email emailId
* @property ?string seasonTicketContractEntryRecordNo
* @property ?int seasonTicketContractEntryRecordNo
* @property ?string applicationNo
*/
class EmailSendParam extends BaseParam
@@ -17,7 +17,7 @@ class EmailSendParam extends BaseParam
{
return [
'email_id' => $this->enum([new Enum(Email::class)]),
'season_ticket_contract_entry_record_no' => $this->str(true),
'season_ticket_contract_entry_record_no' => $this->numeric(true),
'application_no' => $this->str(true),
];
}


+ 13
- 0
app/Http/Controllers/Web/NoneParams.php Näytä tiedosto

@@ -0,0 +1,13 @@
<?php

namespace App\Http\Controllers\Web;

use App\Http\Controllers\Web\BaseParam;

class NoneParams extends BaseParam
{
public function rules(): array
{
return [];
}
}

+ 32
- 0
app/Kintone/Models/SeasonTicketContractEntry.php Näytä tiedosto

@@ -19,6 +19,14 @@ use Illuminate\Support\Carbon;
* @property string paymentMethod
* @property Carbon entryDatetime
* @property string planName
* @property ?string seasonTicketPlanName
* @property ?int amount
* @property ?int firstAmount
* @property ?int hiwariMonth
* @property ?int hiwariAmount
* @property ?int targetMonth
* @property ?int targetAmount
* @property ?Carbon paymentLimitDate
*/
class SeasonTicketContractEntry extends KintoneModel
{
@@ -37,6 +45,14 @@ class SeasonTicketContractEntry extends KintoneModel
const FIELD_PAYMENT_METHOD = "支払方法";
const FIELD_ENTRY_DATETIME = "受付日時";
const FIELD_PLAN_NAME = "ParkingNaviプラン";
const FIELD_SEASON_TICKET_PLAN_NAME = "定期駐車場プラン";
const FIELD_AMOUNT = "定期駐車料金";
const FIELD_HIWARI_MONTH = "日割り分_月";
const FIELD_HIWARI_AMOUNT = "日割り分_金額";
const FIELD_TARGET_MONTH = "請求対象分_月";
const FIELD_TARGET_AMOUNT = "請求対象分_金額";
const FIELD_FIRST_AMOUNT = "初回振り込み合計額";
const FIELD_PAYMENT_LIMIT_DATE = "振込期日";

protected const FIELDS = [
...parent::FIELDS,
@@ -51,6 +67,14 @@ class SeasonTicketContractEntry extends KintoneModel
self::FIELD_PAYMENT_METHOD => FieldType::DROP_DOWN,
self::FIELD_ENTRY_DATETIME => FieldType::DATETIME,
self::FIELD_PLAN_NAME => FieldType::SINGLE_LINE_TEXT,
self::FIELD_SEASON_TICKET_PLAN_NAME => FieldType::SINGLE_LINE_TEXT,
self::FIELD_AMOUNT => FieldType::NUMBER,
self::FIELD_HIWARI_MONTH => FieldType::NUMBER,
self::FIELD_HIWARI_AMOUNT => FieldType::NUMBER,
self::FIELD_TARGET_MONTH => FieldType::NUMBER,
self::FIELD_TARGET_AMOUNT => FieldType::NUMBER,
self::FIELD_FIRST_AMOUNT => FieldType::NUMBER,
self::FIELD_PAYMENT_LIMIT_DATE => FieldType::DATE,
];

protected const FIELD_NAMES = [
@@ -69,4 +93,12 @@ class SeasonTicketContractEntry extends KintoneModel
{
return Parking::findByParkingName($this->parkingName);
}

public function getPlan(): ?SeasonTicketContractPlan
{
if (!$this->planName) {
return null;
}
return SeasonTicketContractPlan::findByName($this->seasonTicketPlanName);
}
}

+ 11
- 0
app/Kintone/Models/SeasonTicketContractPlan.php Näytä tiedosto

@@ -9,6 +9,8 @@ namespace App\Kintone\Models;
* @property string parkingName
* @property string[] sendItem
* @property string vehicleType
* @property ?int taxAmount
* @property ?int taxRate
*/
class SeasonTicketContractPlan extends KintoneModel
{
@@ -18,12 +20,16 @@ class SeasonTicketContractPlan extends KintoneModel
const FIELD_PARKING_NAME = "定期_駐車場名";
const FIELD_SEND_ITEM = "送付物";
const FIELD_VEHICLE_TYPE = "種別";
const FIELD_TAX_AMOUNT = "内税";
const FIELD_TAX_RATE = "税率";

protected const FIELDS = [
...parent::FIELDS,
self::FIELD_PARKING_NAME => FieldType::SINGLE_LINE_TEXT,
self::FIELD_SEND_ITEM => FieldType::CHECK_BOX,
self::FIELD_VEHICLE_TYPE => FieldType::SINGLE_LINE_TEXT,
self::FIELD_TAX_AMOUNT => FieldType::NUMBER,
self::FIELD_TAX_RATE => FieldType::NUMBER,
];

protected const FIELD_NAMES = [
@@ -38,4 +44,9 @@ class SeasonTicketContractPlan extends KintoneModel
'has_sticker' => in_array("シール", $item),
];
}

public static function findByName(string $name): static
{
return static::getAccess()->first(static::getQuery()->where(static::FIELD_PLAN_NAME, $name));
}
}

+ 7
- 3
resources/views/emails/members/entry_approve.blade.php Näytä tiedosto

@@ -20,21 +20,25 @@
◆プラン
{{ $plan_name }}

@if($season_ticket_select)
◆定期券の選択
{{ $season_ticket_select }}

@endif
@if($vehicle_no)
◆利用車両番号
{{ $vehicle_no }}
@endif

@endif
◆利用開始日(希望)
{{ $use_start_date }}

◆◆お支払方法及び定期駐車料金
お支払方法:{{ $payment_method }}
定期駐車料金:{{ $amount }}
※料金は利用日までの前払いのため、○月日割分○○円と○月分○○円 (合計○○円)を○年○月○日までにお振込下さい。(手数料は振込者負担でお願い致します。)
定期駐車料金:{{ $amount }}円 {{ $taxExplain }}
@if($paymentExplain)
{{ $paymentExplain }}
@endif

銀行:ゆうちょ銀行
店名:四四八(ヨンヨンハチ)


+ 5
- 3
resources/views/emails/members/entry_payment_complete.blade.php Näytä tiedosto

@@ -1,4 +1,4 @@
@extends('emails.layouts.members')
@extends('emails.layouts.member')

@section('contents')
ご入金を確認致しました。誠にありがとうございます。
@@ -46,9 +46,11 @@
◆プラン
{{ $plan_name }}

@if($season_ticket_select)
◆定期券の選択
XXXXXX
{{ $season_ticket_select }}

@endif
@if($vehicle_no)
◆利用車両番号
{{ $vehicle_no }}
@@ -59,7 +61,7 @@ XXXXXX

◆お支払方法及び定期駐車料金
お支払方法:{{ $payment_method }}
定期駐車料金:XXXX円(消費税等含む,適用税率1 0%  消費税額 XX円)
定期駐車料金:{{ $amount }}円 {{ $taxExplain }}

◆備考
定期利用にあたり、必ず各駐車場・駐輪場ページ掲載の定期利用取扱事項と、ホームページ・メ ール及び現地の案内に従いご利用下さい。


Loading…
Peruuta
Tallenna