<?xml version="1.0"?>
<!--
/**
 * Copyright © Zhik Pty Ltd. All rights reserved.
 * See LICENSE.txt for license details.
 */
-->
<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">

    <!-- Extension table for Forward Order extended attributes using generic type/value pattern -->
    <table name="myoba_prices_extension" resource="default" engine="innodb" comment="Forward Order Price Extensions">
        <!-- Primary key -->
        <column xsi:type="int" name="id" unsigned="true" nullable="false" identity="true" comment="Entity ID"/>

        <!-- Foreign key to myoba_prices table -->
        <column xsi:type="int" name="myoba_prices_id" unsigned="true" nullable="false" comment="Reference to myoba_prices.id"/>

        <!-- Generic type/value pattern for extensibility -->
        <column xsi:type="varchar" name="type" nullable="false" length="50" comment="Extension Type (e.g., TradePrice, RetailPrice, MinOrderQty, LeadTime)"/>
        <column xsi:type="varchar" name="value" nullable="true" length="255" comment="Extension Value (stored as string, cast in application layer)"/>

        <!-- Optional metadata for complex values -->
        <column xsi:type="text" name="metadata" nullable="true" comment="Optional JSON metadata for complex extension data"/>

        <!-- Timestamps -->
        <column xsi:type="timestamp" name="created_at" nullable="false" default="CURRENT_TIMESTAMP" comment="Created At"/>
        <column xsi:type="timestamp" name="updated_at" nullable="false" default="CURRENT_TIMESTAMP" on_update="true" comment="Updated At"/>

        <!-- Constraints -->
        <constraint xsi:type="primary" referenceId="PRIMARY">
            <column name="id"/>
        </constraint>

        <!-- Note: Foreign key to myoba_prices added via data patch AddExtensionTableForeignKey
             since myoba_prices table was created via setup scripts, not declarative schema -->

        <!-- Indexes for performance -->
        <index referenceId="IDX_MYOBA_PRICES_EXT_MYOBA_PRICES_ID" indexType="btree">
            <column name="myoba_prices_id"/>
        </index>

        <index referenceId="IDX_MYOBA_PRICES_EXT_TYPE" indexType="btree">
            <column name="type"/>
        </index>

        <!-- Composite index for common lookups -->
        <index referenceId="IDX_MYOBA_PRICES_EXT_LOOKUP" indexType="btree">
            <column name="myoba_prices_id"/>
            <column name="type"/>
        </index>
    </table>

    <!-- Add ordering period fields to sales_order table -->
    <table name="sales_order" resource="sales" engine="innodb">
        <column xsi:type="varchar" name="ordering_period_id" nullable="true" length="255" comment="Forward Order Ordering Period ID"/>
        <column xsi:type="varchar" name="ordering_period_name" nullable="true" length="255" comment="Forward Order Ordering Period Name"/>
        <column xsi:type="date" name="requested_delivery_date" nullable="true" comment="Forward Order Requested Delivery Date"/>
        <column xsi:type="varchar" name="ordering_period_season" nullable="true" length="10" comment="Forward Order Season (S1/S2)"/>
        <column xsi:type="varchar" name="ordering_period_year" nullable="true" length="4" comment="Forward Order Year"/>
    </table>

    <!-- Add ordering period fields to quote table -->
    <table name="quote" resource="checkout" engine="innodb">
        <column xsi:type="varchar" name="ordering_period_id" nullable="true" length="255" comment="Forward Order Ordering Period ID"/>
        <column xsi:type="varchar" name="ordering_period_name" nullable="true" length="255" comment="Forward Order Ordering Period Name"/>
        <column xsi:type="date" name="ordering_period_delivery_date" nullable="true" comment="Forward Order Requested Delivery Date"/>
        <column xsi:type="varchar" name="ordering_period_season" nullable="true" length="10" comment="Forward Order Season"/>
        <column xsi:type="varchar" name="ordering_period_year" nullable="true" length="4" comment="Forward Order Year"/>
    </table>
</schema>