Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
4a4d272
test: マーカー削除のみで green になる incomplete テストを復活
nanasess Jul 17, 2026
6ccea0e
test: OrderItemTypeTest の陳腐化した testInvalidQuantityHasMinus を現行仕様に合わせる
nanasess Jul 17, 2026
b71e43b
test: 復旧不能な Silex 時代の化石テストを削除
nanasess Jul 17, 2026
9fcae0b
test: TransactionListener のテストを追加
nanasess Jul 17, 2026
385d443
test: 管理画面 受注編集の複数配送カバレッジを復活
nanasess Jul 17, 2026
b5f57e1
test: 廃止された CartService::lock()/unlock() 前提の未完了テストを整理
nanasess Jul 17, 2026
4b9b827
fix(tests): 死んだテストの旧シグネチャ・廃止ルート・Silex 残骸を修正
nanasess Jul 17, 2026
9a4c70c
test: 販売種別テストを4系のカート分割仕様へ書き換え
nanasess Jul 17, 2026
920b228
test: 商品CSV出力の未完了テストをUI変更に追従させて復活
nanasess Jul 17, 2026
4d31f19
test: CSV雛形の未完了テストを出力エンコーディング追従で復活
nanasess Jul 17, 2026
134ba5c
test: 根因が個別に散っていた未完了テストを現行仕様に追従させて復活
nanasess Jul 17, 2026
790129d
style: rector / php-cs-fixer を適用する
nanasess Jul 17, 2026
269f330
test: PurchaseFlow の "TODO: FIXME" 未完了テストを解消する
nanasess Jul 17, 2026
add8125
fix: RoundingType 未設定の課税明細で受注画面が致命的エラーになる問題を修正
nanasess Jul 17, 2026
fba2e19
fix: お問い合わせ確認ページの title が入力ページのままになる問題を修正
nanasess Jul 17, 2026
1f991c9
test: 空振りするテストとリポジトリを汚すテストを修正する
nanasess Jul 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion src/Eccube/Controller/ContactController.php
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,16 @@ public function index(Request $request): Response|RedirectResponse|array
if ($form->isSubmitted() && $form->isValid()) {
switch ($request->get('mode')) {
case 'confirm':
$Page = $this->pageRepository->getPageByRoute('contact_confirm');

return $this->render('Contact/confirm.twig', [
'form' => $form->createView(),
'Page' => $this->pageRepository->getPageByRoute('contact_confirm'),
'Page' => $Page,
// contact と contact_confirm は同一パス '/contact' のため, ルータは常に
// contact にマッチする. TwigInitializeListener が _route から引く
// twig グローバル title は「入力ページ」のままになるので,
// title より優先される subtitle で確認ページ名を上書きする.
'subtitle' => $Page->getName(),
]);

case 'complete':
Expand Down
4 changes: 4 additions & 0 deletions src/Eccube/Entity/Order.php
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,10 @@ public function getTotalByTaxRate(): array
$taxFreeDiscount = $this->getTaxFreeDiscount();

foreach ($this->getTaxableTotalByTaxRate() as $rate => $totalPrice) {
if (!array_key_exists($rate, $roundingTypes) || null === $roundingTypes[$rate]) {
continue;
}

if (bccomp($taxableTotal, '0', 2) !== 0) {
// 按分計算: totalPrice - (abs(taxFreeDiscount) * totalPrice / taxableTotal)
$absDiscount = ltrim($taxFreeDiscount, '-');
Expand Down
171 changes: 0 additions & 171 deletions tests/Eccube/Tests/Command/CommandTestCase.php

This file was deleted.

83 changes: 0 additions & 83 deletions tests/Eccube/Tests/Command/CsvLoaderCommandTest.php

This file was deleted.

41 changes: 41 additions & 0 deletions tests/Eccube/Tests/Entity/OrderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,47 @@ public function testGetTaxByTaxRate()
$this->assertSame('65261', $Order->getTaxByTaxRate()['10'], '10%対象値引き後消費税額');
}

/**
* RoundingType 未設定の課税明細があっても致命的エラーにならないこと.
*
* 通常は PurchaseFlow の TaxProcessor が必ず設定するが, 明細を直接組み立てた場合は
* null になり得る. getTaxByTaxRate() は元から null を読み飛ばすため, 両者で
* 集計対象の税率がずれると OrderPdfService が getTaxByTaxRate()[$rate] で
* 未定義キーを引く. 税率キーの集合が一致することを検証する.
*/
#[Group(name: 'decimal')]
public function testGetTotalByTaxRateWithoutRoundingType()
{
$Order = $this->createTestOrder();

$Taxation = $this->entityManager->find(TaxType::class, TaxType::TAXATION);
$this->assertInstanceOf(TaxType::class, $Taxation);
$ProductItem = $this->entityManager->find(OrderItemType::class, OrderItemType::PRODUCT);
$this->assertInstanceOf(OrderItemType::class, $ProductItem);
$TaxExcluded = $this->entityManager->find(TaxDisplayType::class, TaxDisplayType::EXCLUDED);
$this->assertInstanceOf(TaxDisplayType::class, $TaxExcluded);

// RoundingType を設定しない課税明細を追加する
$OrderItem = new OrderItem();
$OrderItem->setTaxType($Taxation);
$OrderItem->setTaxRate('20');
$OrderItem->setPrice('1000');
$OrderItem->setTax('200');
$OrderItem->setQuantity('1');
$OrderItem->setOrderItemType($ProductItem);
$OrderItem->setTaxDisplayType($TaxExcluded);
$Order->addOrderItem($OrderItem);

$total = $Order->getTotalByTaxRate();

$this->assertArrayNotHasKey('20', $total, 'RoundingType 未設定の税率は集計対象外');
$this->assertSame(
array_keys($Order->getTaxByTaxRate()),
array_keys($total),
'getTotalByTaxRate と getTaxByTaxRate の税率が一致すること'
);
}

protected function createTestOrder()
{
$Taxation = $this->entityManager->find(TaxType::class, TaxType::TAXATION);
Expand Down
Loading
Loading