<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
final class Version20260506000000 extends AbstractMigration
{
public function getDescription(): string
{
return '再注文機能: is_reorder・origin_order_id追加 / 廃盤・欠品フラグ追加 / データ種別「リピート」マスター追加';
}
public function up(Schema $schema): void
{
// 再注文フラグ・元注文ID
$this->addSql("ALTER TABLE dtb_estimate_cart_item ADD COLUMN is_reorder TINYINT(1) NOT NULL DEFAULT 0 COMMENT '再注文フラグ'");
$this->addSql("ALTER TABLE dtb_estimate_cart_item ADD COLUMN origin_order_id INT UNSIGNED NULL DEFAULT NULL COMMENT '再注文元の注文ID'");
// 見積もりアイテムにも元注文IDを追加(管理画面表示用)
$this->addSql("ALTER TABLE dtb_estimate_item ADD COLUMN origin_order_id INT UNSIGNED NULL DEFAULT NULL COMMENT '再注文元の注文ID'");
// 素材マスター: 廃盤・欠品フラグ
$this->addSql("ALTER TABLE plg_productoption_dtb_material ADD COLUMN is_discontinued TINYINT(1) NOT NULL DEFAULT 0 COMMENT '廃盤フラグ'");
$this->addSql("ALTER TABLE plg_productoption_dtb_material ADD COLUMN is_out_of_stock TINYINT(1) NOT NULL DEFAULT 0 COMMENT '欠品フラグ'");
// 素材カラーマスター: 廃盤・欠品フラグ
$this->addSql("ALTER TABLE plg_productoption_dtb_material_color ADD COLUMN is_discontinued TINYINT(1) NOT NULL DEFAULT 0 COMMENT '廃盤フラグ'");
$this->addSql("ALTER TABLE plg_productoption_dtb_material_color ADD COLUMN is_out_of_stock TINYINT(1) NOT NULL DEFAULT 0 COMMENT '欠品フラグ'");
// データ種別「リピート」をマスターに追加(option_id=12はdesign_data_type)
// data_temp_value=4 は再注文専用の値。通常フローでは使用しない。
$this->addSql("INSERT INTO plg_productoption_dtb_optioncategory (option_id, name, sort_no, create_date, update_date, discriminator_type, config) VALUES (12, 'リピート', 4, NOW(), NOW(), 'optioncategory', '{\"print_sticker\":{\"label\":\"リピート\",\"data_temp_value\":4},\"cutting_sticker\":{\"label\":\"リピート\",\"data_temp_value\":4}}')");
}
public function down(Schema $schema): void
{
$this->addSql("ALTER TABLE dtb_estimate_cart_item DROP COLUMN is_reorder");
$this->addSql("ALTER TABLE dtb_estimate_cart_item DROP COLUMN origin_order_id");
$this->addSql("ALTER TABLE dtb_estimate_item DROP COLUMN origin_order_id");
$this->addSql("ALTER TABLE plg_productoption_dtb_material DROP COLUMN is_discontinued");
$this->addSql("ALTER TABLE plg_productoption_dtb_material DROP COLUMN is_out_of_stock");
$this->addSql("ALTER TABLE plg_productoption_dtb_material_color DROP COLUMN is_discontinued");
$this->addSql("ALTER TABLE plg_productoption_dtb_material_color DROP COLUMN is_out_of_stock");
$this->addSql("DELETE FROM plg_productoption_dtb_optioncategory WHERE option_id = 12 AND name = 'リピート'");
}
}