<?xml version="1.0"?>
<schema version="4.0.0" id="$Id$" >
    
  <table name="access">
    <field name="access_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="invoice_id" type="int" notnull="1"/>
    <field name="invoice_payment_id" type="int"/>
    <field name="user_id" type="int" notnull="1"/>f
    <field name="product_id" type="int" notnull="1"/>
    <field name="transaction_id" type="varchar" len="64"/>
    <field name="begin_date" type="date" notnull="1"/>
    <field name="expire_date" type="date" notnull="1"/>
    <index name="PRIMARY" unique="1">
      <field name="access_id"/>
    </index>
    <index name="invoice_id_2" unique="1">
      <field name="invoice_id"/>
      <field name="user_id"/>
      <field name="product_id"/>
      <field name="transaction_id"/>
    </index>
    <index name="user_id">
      <field name="user_id"/>
    </index>
    <index name="invoice_id">
      <field name="invoice_id"/>
    </index>
  </table>

  <!-- this table is updated daily and when access table changed - it holds status, calculated number of "days"
       for each customer/product-product_category and start of first subsciption, end of last subscription 
       this table has no record about future subscriptions (yet?) \
       use WHERE status='active' in SQL to be sure about
  -->
  <table name="access_cache">
      <field name="user_id" type="int" notnull="1" />
      <field name="fn" type="enum" len="'product_id','product_category_id'" notnull="1" />
      <field name="id" type="int" notnull="1" />
      <!-- days mean count of full days user had subscription. 1 if subscribed today and so on -->
      <field name="days" type="int" />
      <field name="begin_date" type="date" notnull="1" />
      <field name="expire_date" type="date" notnull="1" />
      <field name="status" type="enum" len="'active','expired'" notnull="1" />
      <alter><drop field="months" /></alter>
      <index name="speed" unique="1">
          <field name="user_id" />
          <field name="fn" />
          <field name="id" />
      </index>
  </table>
  
  <table name="access_log">
    <field name="log_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="user_id" type="int" notnull="1"/>
    <field name="time" type="datetime" notnull="1" />
    <field name="url" type="varchar" len="255"/>
    <field name="remote_addr" type="varchar" len="15"/>
    <field name="referrer" type="varchar" len="255"/>
    <index name="PRIMARY" unique="1">
      <field name="log_id"/>
    </index>
    <index name="user_id">
      <field name="user_id"/>
      <field name="time"/>
      <field name="remote_addr"/>
    </index>
    <index name="time">
      <field name="time"/>
    </index>
  </table>
  <table name="admin_log">
    <field name="log_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="dattm" type="datetime"/>
    <field name="admin_id" type="int"/>
    <field name="ip" type="varchar" len="32"/>
    <field name="tablename" type="varchar" len="32" notnull="1"/>
    <field name="record_id" type="varchar" notnull="0" len="32" />
    <field name="message" type="text"/>
    <field name="admin_login" type="varchar" len="32"/>
    <index name="PRIMARY" unique="1">
      <field name="log_id"/>
    </index>
    <index name="al">
      <field name="tablename"/>
      <field name="record_id"/>
    </index>
  </table>
  <table name="admin">
    <field name="admin_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="login" type="varchar" len="32" notnull="1"/>
    <field name="name_f" type="varchar" len="64" notnull="1" />
    <field name="name_l" type="varchar" len="64" notnull="1" />
    <field name="pass" type="varchar" len="128" notnull="1"/>
    <field name="last_login" type="datetime"/>
    <field name="last_ip" type="varchar" len="32"/>
    <field name="last_session" type="varchar" len="32"/>
    <field name="email" type="varchar" len="255"/>
    <field name="super_user" type="smallint" notnull="1" default="0"/>
    <field name="perms" type="text"/>
    <field name="prefs" type="blob"/>
    <field name="reseller_id" type="int" />
    <index name="PRIMARY" unique="1">
      <field name="admin_id"/>
    </index>
    <index name="login" unique="1">
      <field name="login"/>
    </index>
    <data>
        <query>
        INSERT INTO ?_admin (login, pass, email, super_user, name_f, name_l) VALUES ('@ADMIN_LOGIN@', '@ADMIN_PASS@', '@ADMIN_EMAIL@', 1, '', '');
        </query>
    </data>
  </table>
  
  <table name="billing_plan">
    <field name="plan_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="product_id" type="int" notnull="1"/>
    <field name="title" type="varchar" len="255" notnull="1" />
    <field name="terms" type="varchar" len="255" notnull="1" />
    <field name="first_price" type="decimal" len="12,2" notnull="1"/>
    <field name="first_period" type="varchar" len="32" notnull="1"/>
    <field name="rebill_times" type="int" notnull="1" default="0"/>
    <field name="second_price" type="decimal" len="12,2"/>
    <field name="second_period" type="varchar" len="32"/>
    <field name="disabled" type="tinyint" notnull="1" default="0" />
    <field name="qty" type="int" notnull="1" default="1" />
    <field name="variable_qty" type="tinyint" notnull="1" default="0" />
    <index name="PRIMARY" unique="1">
      <field name="plan_id"/>
    </index>
    <index name="product" >
      <field name="product_id"/>
    </index>
    <table_data name="billing_plan">
     <row>
      <field name="product_id">1</field>
      <field name="title">Default Billing Plan</field>
      <field name="terms"></field>
      <field name="first_price">1.11</field>
      <field name="first_period">1d</field>
      <field name="rebill_times">99999</field>
      <field name="second_price">2.22</field>
      <field name="second_period">2d</field>
      <field name="disabled">0</field>
     </row>
    </table_data>
  </table>

  <table name="cc">
    <field name="cc_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="user_id" type="int" notnull="1"/>
    <field name="cc" type="varchar" len="25"/>
    <field name="cc_number" type="varchar" len="255"/>
    <field name="cc_expire" type="char" len="4"/>
    <field name="cc_name_f" type="varchar" len="64"/>
    <field name="cc_name_l" type="varchar" len="64"/>
    <field name="cc_country" type="varchar" len="255"/>
    <field name="cc_street" type="varchar" len="255"/>
    <field name="cc_street2" type="varchar" len="255"/>
    <field name="cc_city" type="varchar" len="255"/>
    <field name="cc_state" type="varchar" len="255"/>
    <field name="cc_zip" type="varchar" len="255"/>
    <field name="cc_company" type="varchar" len="255"/>
    <field name="cc_phone" type="varchar" len="255"/>
    <field name="cc_housenumber" type="varchar" len="255"/>
    <field name="cc_province" type="varchar" len="50"/>
    <field name="cc_issuenum" type="varchar" len="25"/>
    <field name="cc_startdate" type="varchar" len="12"/>
    <field name="cc_type" type="varchar" len="255"/>
    <index name="PRIMARY" unique="1">
      <field name="cc_id"/>
    </index>
    <index name="user_id" unique="1">
      <field name="user_id"/>
    </index>
  </table>
  <table name="config">
    <field name="config_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="name" type="char" len="64" notnull="1" />
    <field name="config" type="mediumblob"/>
    <index name="PRIMARY" unique="1">
      <field name="config_id"/>
    </index>
    <index name="name" unique="1">
      <field name="name"/>
    </index>
  </table>
  <table name="store">
    <field name="store_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="name" type="varchar" len="255" notnull="1"/>
    <field name="value" type="varchar" len="255"/>
    <field name="blob_value" type="blob"/>
    <field name="expires" type="datetime" notnull="0" />
    <index name="PRIMARY" unique="1">
      <field name="store_id"/>
    </index>
    <index name="name" unique="1">
      <field name="name"/>
    </index>
  </table>
  <table name="country">
    <field name="country_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="country" type="char" len="2" notnull="1"/>
    <field name="alpha2" type="char" len="2" notnull="1"/>
    <field name="alpha3" type="char" len="3" notnull="1"/>
    <field name="numeric" type="smallint" notnull="1"/>
    <field name="title" type="varchar" len="64"/>
    <field name="tag" type="int"/>
    <field name="status" type="enum" len="'added','changed'"/>
    <index name="PRIMARY" unique="1">
      <field name="country_id"/>
    </index>
    <index name="country" unique="1">
      <field name="country"/>
    </index>
  </table>
  <table name="coupon">
    <field name="coupon_id" type="int" unsigned="1" notnull="1" extra="auto_increment"/>
    <field name="batch_id" type="int" unsigned="1" notnull="1"/>
    <field name="code" type="varchar" len="32" notnull="1"/>
    <field name="used_count" type="int" notnull="1" default="0"/>
    <index name="PRIMARY" unique="1">
      <field name="coupon_id"/>
    </index>
    <index name="code" unique="1">
      <field name="code"/>
    </index>
  </table>
  <table name="coupon_batch">
    <field name="batch_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="comment" type="varchar" len="128"/>
    <field name="discount_type" type="enum" len="'percent','number'" default="number"/>
    <field name="discount" type="decimal" len="12,2"/>
    <field name="begin_date" type="date"/>
    <field name="expire_date" type="date"/>
    <field name="is_disabled" type="tinyint"/>
    <field name="is_recurring" type="tinyint" notnull="1" default="0"/>
    <field name="product_ids" type="varchar" len="255"/>
    <field name="use_count" type="int"/>
    <field name="user_use_count" type="int"/>
    <field name="user_id" type="int"/>
    <index name="PRIMARY" unique="1">
      <field name="batch_id"/>
    </index>
  </table>
  <table name="data">
    <field name="table" type="varchar" len="64" notnull="1"/>
    <field name="id" type="int" notnull="1"/>
    <field name="key" type="varchar" len="255" notnull="1"/>
    <field name="type" type="smallint" notnull="1" default="0"/>
    <field name="value" type="varchar" len="255"/>
    <field name="blob" type="mediumblob"/>
    <index name="table" unique="1">
      <field name="table"/>
      <field name="id"/>
      <field name="key"/>
    </index>
  </table>
  <table name="email_template">
    <field name="email_template_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="name" type="varchar" len="64" notnull="1"/>
    <field name="lang" type="varchar" len="16" notnull="1"/>
    <field name="format" type="enum" len="'text','html','multipart'" notnull="1" default="text"/>
    <field name="subject" type="varchar" len="255" notnull="1"/>
    <field name="txt" type="mediumtext" notnull="1"/>
    <field name="plain_txt" type="mediumtext"/>
    <field name="attachments" type="mediumtext"/>
    <field name="day" type="int"/>
    <field name="days" type="varchar" len="255" notnull="0" />
    <field name="conditions" type="varchar" len="255" notnull="0" />
    <field name="not_conditions" type="varchar" len="255" notnull="0" />
    <field name="not_conditions_expired" type="tinyint" notnull="0" />
    <index name="PRIMARY" unique="1">
      <field name="email_template_id"/>
    </index>
  </table>
  
  <!-- emails sent via admin-email function -->
  <table name="email_sent">
    <field name="email_sent_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="subject" type="varchar" len="255" />
    <field name="format" type="varchar" len="16" />
    <field name="body" type="text" />
    <field name="files" type="varchar" len="255" />
    <field name="newsletter_ids" type="varchar" len="255" />
    <field name="count_users" type="int" />
    <field name="sent_users" type="int" />
    <field name="last_email" type="varchar" len="255" />
    <field name="desc_users" type="varchar" len="255" />
    <field name="is_cancelled" type="varchar" len="255" />
    <field name="serialized_vars" type="text" />
    <field name="tm_added" type="datetime" notnull="1" />
    <field name="tm_finished" type="datetime" notnull="0" />
    <field name="admin_id" type="int" />
    <index name="PRIMARY" unique="1">
      <field name="email_sent_id"/>
    </index>
  </table>

  <table name="error_log">
    <field name="log_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="user_id" type="int" default="0"/>
    <field name="time" type="datetime" notnull="1" />
    <field name="url" type="varchar" len="255"/>
    <field name="remote_addr" type="varchar" len="15"/>
    <field name="referrer" type="varchar" len="255"/>
    <field name="error" type="text"/>
    <field name="trace" type="text"/>
    <index name="PRIMARY" unique="1">
      <field name="log_id"/>
    </index>
  </table>
  
  <table name="failed_login">
    <field name="failed_login_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="ip" type="char" len="15" notnull="1"/>
    <field name="login_type" type="int" notnull="1"/>
    <field name="failed_logins" type="int" notnull="1"/>
    <field name="last_failed" type="int" notnull="1"/>
    <index name="PRIMARY" unique="1">
      <field name="failed_login_id"/>
    </index>
    <index name="ip" unique="1">
      <field name="ip"/>
      <field name="login_type"/>
    </index>
  </table>
  <table name="resource_access">
    
    <field name="resource_access_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="resource_id" type="int" notnull="0" />
    <field name="resource_type" type="varchar" len="64" notnull="1" />
    <field name="fn" type="enum" len="'product_id','product_category_id','free','free_without_login'" notnull="1" />
    <field name="id" type="int" notnull="1" />
    <field name="start_days" type="int" notnull="0" />
    <field name="stop_days"  type="int" notnull="0" />

    <index name="PRIMARY" unique="1">
        <field name="resource_access_id" />
    </index>
    <index name="res" >
        <field name="resource_type" />
        <field name="resource_id" />
    </index>
  </table>
  
  <table name="folder">
    <field name="folder_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="title" type="varchar" len="255" notnull="1"/>
    <field name="desc" type="text" />
    <field name="path" type="varchar" len="255" notnull="1"/>
    <field name="url" type="varchar" len="255" notnull="1"/>
    <field name="method" type="varchar" len="64"/>
    <field name="dattm" type="datetime" notnull="0" />
    <field name="hide" type="smallint" size="1" default="0" />
    <index name="PRIMARY" unique="1">
      <field name="folder_id"/>
    </index>
    <index name="path" unique="1">
      <field name="path"/>
    </index>
    <index name="url" unique="1">
      <field name="url"/>
    </index>
  </table>
  <table name="file">
    <field name="file_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="title" type="varchar" len="255" notnull="1"/>
    <field name="desc" type="text" />
    <field name="path" type="varchar" len="255" notnull="1"/>
    <field name="mime" type="varchar" len="64" />
    <field name="size" type="int" notnull="0" />
    <field name="display_type" type="varchar" len="255" notnull="0" />
    <field name="dattm" type="datetime" notnull="0" />
    <field name="hide" type="smallint" size="1" default="0" />
    <field name="download_limit" type="varchar" len="50" notnull="1" default="" />
    <index name="PRIMARY" unique="1">
        <field name="file_id" />
    </index>
  </table>
  <table name="video">
    <field name="video_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="title" type="varchar" len="255" notnull="1"/>
    <field name="desc" type="text" />
    <field name="path" type="varchar" len="255" notnull="1"/>
    <field name="mime" type="varchar" len="64" />
    <field name="size" type="int" notnull="0" />
    <field name="dattm" type="datetime" notnull="0" />
    <field name="hide" type="smallint" size="1" default="0" />
    <field name="config" type="blob"/>
    <index name="PRIMARY" unique="1">
        <field name="video_id" />
    </index>
  </table>
  <table name="upload">
      <field name="upload_id" type="int" notnull="1" extra="auto_increment" />
      <field name="path" type="varchar" len="255" />
      <field name="desc" type="varchar" len="255" />
      <field name="prefix" type="varchar" len="255" notnull="1" />
      <field name="name" type="varchar" len="255" />
      <field name="mime" type="varchar" len="255" />
      <field name="size" type="int" notnull="0" />
      <field name="delete" type="int" notnull="0" />
      <field name="uploaded" type="int" notnull="0" />
      <field name="storage_id" type="varchar" len="32" notnull="0" default="null" />
      <field name="admin_id" type="int" notnull="0" />
      <field name="user_id" type="int" notnull="0" />
      <index name="PRIMARY" unique="1">
          <field name="upload_id" />
      </index>
  </table>
  <table name="page">
    <field name="page_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="title" type="varchar" len="255" notnull="1"/>
    <field name="desc" type="text" />
    <field name="path" type="varchar" len="255" notnull="1"/>
    <field name="use_layout" type="int" default="0" />
    <field name="html" type="text" notnull="0" />
    <field name="dattm" type="datetime" notnull="0" />
    <field name="hide" type="smallint" size="1" default="0" />
    <index name="PRIMARY" unique="1">
        <field name="page_id" />
    </index>
  </table>
  <table name="link">
    <field name="link_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="title" type="varchar" len="255" notnull="1"/>
    <field name="url" type="varchar" len="255" notnull="1"/>
    <field name="dattm" type="datetime" notnull="0" />
    <field name="hide" type="smallint" size="1" default="0" />
    <index name="PRIMARY" unique="1">
        <field name="link_id" />
    </index>
  </table>
  <table name="integration">
    <field name="integration_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="comment" type="varchar" len="255" notnull="1"/>
    <field name="plugin" type="text" />
    <field name="vars" type="text" />
    <index name="PRIMARY" unique="1">
        <field name="integration_id" />
    </index>
  </table>
  <table name="invoice">
    <field name="invoice_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="user_id" type="int"/>
    <field name="paysys_id" type="varchar" len="64"/>
    <field name="currency" type="char" len="3" notnull="1"/>
    <field name="first_subtotal" type="decimal" len="12,2"/>
    <field name="first_discount" type="decimal" len="12,2"/>
    <field name="first_tax" type="decimal" len="12,2"/>
    <field name="first_shipping" type="decimal" len="12,2"/>
    <field name="first_total" type="decimal" len="12,2"/>
    <field name="first_period" type="varchar" len="32" notnull="1"/>
    <field name="rebill_times" type="int"/>
    <field name="second_subtotal" type="decimal" len="12,2"/>
    <field name="second_discount" type="decimal" len="12,2"/>
    <field name="second_tax" type="decimal" len="12,2"/>
    <field name="second_shipping" type="decimal" len="12,2"/>
    <field name="second_total" type="decimal" len="12,2"/>
    <field name="second_period" type="varchar" len="32"/>
    <field name="tax_rate" type="varchar" len="255" />
    <field name="tax_type" type="varchar" len="255" />
    <field name="tax_title" type="varchar" len="255"/>
    <field name="status" type="tinyint" notnull="1" default="0"/>
    <field name="coupon_id" type="int"/>
    <field name="is_confirmed" type="tinyint"/>
    <field name="is_cancelled" type="datetime"/>
    <field name="public_id" type="char" notnull="1" len="16"/>
    <field name="invoice_key" type="varchar" len="32"/>
    <field name="tm_added" type="datetime" notnull="1" />
    <field name="tm_started" type="datetime" notnull="0" />
    <field name="tm_cancelled" type="datetime" notnull="0" />
    <field name="rebill_date" type="date" notnull="0" />
    <field name="comment" type="text"/>
    <field name="base_currency_multi" type="decimal" len="12,6" default="1.0" />
    <index name="PRIMARY" unique="1">
      <field name="invoice_id"/>
    </index>
    <index name="user_id">
      <field name="user_id"/>
    </index>
    <index name="public_id" unique="1">
      <field name="public_id"/>
    </index>
    <index name="rebill_date">
      <field name="rebill_date"/>
    </index>
  </table>
  <table name="invoice_item">
    <field name="invoice_item_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="invoice_id" type="int" notnull="1"/>
    <field name="item_id" type="int"/>
    <field name="item_type" type="varchar" len="16" notnull="1" default="product"/>
    <field name="item_title" type="varchar" len="255" notnull="1"/>
    <field name="item_description" type="varchar" len="255" notnull="1"/>
    <field name="qty" type="int" notnull="1" default="1"/>
    <field name="first_price" type="decimal" len="12,2" notnull="1"/>
    <field name="first_discount" type="decimal" len="12,2" notnull="1"/>
    <field name="first_tax" type="decimal" len="12,2" notnull="1"/>
    <field name="first_total" type="decimal" len="12,2" notnull="1"/>
    <field name="first_shipping" type="decimal" len="12,2" notnull="1"/>
    <field name="first_period" type="varchar" len="32" notnull="1"/>
    <field name="rebill_times" type="int"/>
    <field name="second_price" type="decimal" len="12,2"/>
    <field name="second_discount" type="decimal" len="12,2"/>
    <field name="second_tax" type="decimal" len="12,2"/>
    <field name="second_total" type="decimal" len="12,2"/>
    <field name="second_shipping" type="decimal" len="12,2"/>
    <field name="second_period" type="varchar" len="32"/>
    <field name="currency" type="char" len="3"/>
    <field name="tax_group" type="varchar" len="255" default="-1" />
    <!--
    <field name="trial_group" type="int" deprecated="deprecated" />
    <field name="renewal_group" type="int" deprecated="deprecated" /> -->
    <!-- can more than 1 item be added to basket -->
    <field name="is_countable" type="tinyint" notnull="1" default="0"/>
    <!-- can the qty be changed by user -->
    <field name="variable_qty" type="tinyint" notnull="1" default="0" />
    <field name="is_tangible" type="tinyint"/>
    <field name="billing_plan_id" type="int" notnull="0" />
    <field name="billing_plan_data" type="text" />
    <field name="option1" type="varchar" len="255" notnull="0" />
    <field name="option2" type="varchar" len="255" notnull="0" />
    <field name="option3" type="varchar" len="255" notnull="0" />
    <index name="PRIMARY" unique="1">
      <field name="invoice_item_id"/>
    </index>
    <index name="invoice_id">
      <field name="invoice_id"/>
    </index>
  </table>
  <table name="invoice_log">
    <field name="log_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="tm" type="datetime" notnull="1" />
    <field name="invoice_id" type="int"/>
    <field name="user_id" type="int"/>
    <field name="paysys_id" type="varchar" len="64"/>
    <field name="type" type="varchar" len="32"/>
    <field name="title" type="varchar" len="255"/>
    <field name="details" type="text"/>
    <field name="remote_addr" type="varchar" len="15"/>
    <field name="is_processed" type="tinyint" default="0" />
    <index name="PRIMARY" unique="1">
      <field name="log_id"/>
    </index>
    <index name="invoice_id">
      <field name="invoice_id"/>
    </index>
  </table>
  <table name="invoice_payment">
    <field name="invoice_payment_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="invoice_id" type="int" notnull="1"/>
    <field name="user_id" type="int" notnull="1"/>
    <field name="paysys_id" type="varchar" len="64"/>
    <field name="receipt_id" type="varchar" len="64" notnull="1"/>
    <field name="transaction_id" type="varchar" len="64" notnull="1"/>
    <field name="dattm" type="datetime" notnull="1" />
    <field name="currency" type="char" len="3" notnull="1" />
    <field name="amount" type="decimal" len="12,2" notnull="1"/>
    <field name="discount" type="decimal" len="12,2"/>
    <field name="tax" type="decimal" len="12,2"/>
    <field name="shipping" type="decimal" len="12,2"/>
    <field name="refund_dattm" type="datetime"/>
    <field name="base_currency_multi" type="decimal" len="12,6" default="1.0" />
    <index name="PRIMARY" unique="1">
      <field name="invoice_payment_id"/>
    </index>
    <index name="invoice_id" unique="1">
      <field name="invoice_id"/>
      <field name="user_id"/>
      <field name="transaction_id"/>
    </index>
    <index name="user_id">
      <field name="user_id"/>
    </index>
    <index name="dattm">
      <field name="dattm"/>
    </index>
  </table>
  <table name="invoice_refund">
    <field name="invoice_refund_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="invoice_id" type="int" notnull="1"/>
    <field name="invoice_payment_id" type="int" notnull="0"/>
    <field name="user_id" type="int" notnull="1"/>
    <field name="paysys_id" type="varchar" len="64"/>
    <field name="receipt_id" type="varchar" len="64" notnull="1"/>
    <field name="transaction_id" type="varchar" len="64" notnull="1"/>
    <field name="dattm" type="datetime" notnull="1" />
    <field name="currency" type="char" len="3" notnull="1" />
    <field name="amount" type="decimal" len="12,2" notnull="1"/>
    <field name="refund_type" type="int" notnull="1" default="0"/>
    <field name="base_currency_multi" type="decimal" len="12,6" default="1.0" />
    <index name="PRIMARY" unique="1">
      <field name="invoice_refund_id"/>
    </index>
    <index name="invoice_id" unique="1">
      <field name="invoice_id"/>
      <field name="user_id"/>
      <field name="transaction_id"/>
    </index>
    <index name="user_id">
      <field name="user_id"/>
    </index>
    <index name="dattm">
      <field name="dattm"/>
    </index>
  </table>
  <table name="mail_queue">
    <field name="queue_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="from" type="varchar" len="255" notnull="1"/>
    <field name="recipients" type="varchar" len="255" notnull="1"/>
    <field name="count_recipients" type="smallint" notnull="1"/>
    <field name="subject" type="text" />
    <field name="added" type="int" notnull="1"/>
    <field name="sent" type="int"/>
    <field name="failures" type="int" default="0"/>
    <field name="priority" type="int" default="0"/>
    <field name="last_error" type="varchar" len="255"/>
    <field name="headers" type="blob"/>
    <field name="body" type="blob"/>
    <index name="PRIMARY" unique="1">
      <field name="queue_id"/>
    </index>
    <index name="sent">
      <field name="sent"/>
      <field name="priority"/>
      <field name="added"/>
    </index>
  </table>
  <table name="user_status">
    <field name="user_status_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="user_id" type="int" notnull="1"/>
    <field name="product_id" type="int" notnull="1"/>
    <field name="status" type="tinyint" notnull="1" default="0"/>
    <index name="PRIMARY" unique="1">
      <field name="user_status_id"/>
    </index>
    <index name="user_id" unique="1">
      <field name="user_id"/>
      <field name="product_id"/>
    </index>
  </table>
  <table name="user">
    <field name="user_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="login" type="varchar" len="32" notnull="1"/>
    <field name="pass" type="varchar" len="64"/>
    <field name="email" type="varchar" len="64"/>
    <field name="name_f" type="varchar" len="64" notnull="1"/>
    <field name="name_l" type="varchar" len="64" notnull="1"/>
    <field name="street" type="varchar" len="255"/>
    <field name="street2" type="varchar" len="255"/>
    <field name="city" type="varchar" len="255"/>
    <field name="state" type="varchar" len="255"/>
    <field name="zip" type="varchar" len="255"/>
    <field name="country" type="varchar" len="255"/>
    <field name="phone" type="varchar" len="255"/>
    <field name="added" type="datetime" notnull="1" default="0000-00-00 00:00:00"/>
    <field name="remote_addr" type="varchar" len="15"/>
    <field name="status" type="smallint" notnull="1" default="0"/>
    <field name="unsubscribed" type="tinyint" />
    <field name="lang" type="varchar" len="32"/>
    <field name="i_agree" type="tinyint" default="0"/>
    <field name="is_approved" type="tinyint" default="1"/>
    <field name="is_locked" type="tinyint" default="0"/>
    <field name="reseller_id" type="int"/>
    <field name="comment" type="text"/>
    <field name="tax_id" type="varchar" len="255" notnull="0" /><!-- to store EU VAT Id -->
     <!-- add fields from [aff] module here to similfy import -->
    <field name="aff_id" type="int"/>
    <field name="is_affiliate" type="tinyint"/>
    <field name="aff_payout_type" type="varchar" len="32"/>
    <!-- end of affiliate fields -->
    <index name="PRIMARY" unique="1">
      <field name="user_id"/>
    </index>
    <index name="login" unique="1">
      <field name="login"/>
    </index>
  </table>

    <table name="user_group">
        <field name="user_group_id" type="int" notnull="1" extra="auto_increment"/>
        <field name="title" type="varchar" len="255"/>
        <field name="description" type="text" />
        <field name="parent_id" type="int" notnull="1" />
        <field name="sort_order" type="int" notnull="1" default="0" />
        <index name="PRIMARY" unique="1">
            <field name="user_group_id" />
        </index>
        <index name="parent_id">
            <field name="parent_id" />
        </index>
    </table>
    <table name="user_user_group">
        <field name="user_user_group_id" type="int" notnull="1" extra="auto_increment"/>
        <field name="user_id" type="int" notnull="1" />
        <field name="user_group_id" type="int" notnull="1" />
        <index name="PRIMARY" unique="1">
            <field name="user_user_group_id" />
        </index>
        <index name="user_group" unique="1">
            <field name="user_id" />
            <field name="user_group_id" />
        </index>
        <index name="user_group_id">
            <field name="user_group_id" />
        </index>
    </table>
  
  <table name="product">
    <field name="product_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="title" type="varchar" len="255" notnull="1"/>
    <field name="description" type="text"/>
    <field name="trial_group" type="varchar" len="32"/>
    <field name="start_date" type="varchar" len="255" />
    <field name="currency" type="varchar" len="12"/>
    <field name="tax_group" type="varchar" len="255" default="-1" />
    <field name="sort_order" type="varchar" len="32"/>
    <field name="renewal_group" type="varchar" len="255"/>
    <field name="start_date_fixed" type="date" /> 
    <field name="require_other" type="text"/>
    <field name="prevent_if_other" type="text" />
    <field name="paysys_id" type="varchar" len="255"/>
    <field name="comment" type="varchar" len="255" />
    <field name="default_billing_plan_id" type="int" notnull="0" />
    <field name="is_tangible" type="tinyint" default="0" notnull="1" />
    <field name="is_disabled" type="tinyint" default="0" notnull="1" />
    <!-- <field name="is_countable" type="tinyint" default="0" notnull="1" deprecated="deprecated" /> -->
    <field name="comment" type="text"/>
    <index name="PRIMARY" unique="1">
      <field name="product_id"/>
    </index>
    <table_data name="product">
     <row>
      <field name="title">Sample Subscription</field>
      <field name="description">this is a sample subscription type</field>
      <field name="start_date">payment,product</field>
      <field name="currency">USD</field>
      <field name="default_billing_plan_id">1</field>
     </row>
    </table_data>    
  </table>
  
  <table name="product_category">
    <field name="product_category_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="title" type="varchar" len="255"/>
    <field name="description" type="text" />
    <field name="parent_id" type="int" notnull="0" />
    <field name="code" type="varchar" len="64" />
    <field name="sort_order" type="int" />
    <index name="PRIMARY" unique="1">
      <field name="product_category_id" />
    </index>
    <index name="parent_id">
      <field name="parent_id" />
    </index>
  </table>
  <table name="product_product_category">
    <field name="product_product_category_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="product_id" type="int" notnull="1" />
    <field name="product_category_id" type="int" notnull="1" />
    <index name="PRIMARY" unique="1">
      <field name="product_product_category_id" />
    </index>
    <index name="product_category" unique="1">
      <field name="product_id" />
      <field name="product_category_id" />
    </index>
    <index name="product_category_id">
      <field name="product_category_id" />
    </index>
  </table>
  <table name="rebill_log">
    <field name="rebill_log_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="added_tm" type="datetime" notnull="1"/>
    <field name="payment_date" type="date" notnull="1"/>
    <field name="payment_id" type="int" notnull="1"/>
    <field name="rebill_payment_id" type="int" notnull="1"/>
    <field name="amount" type="decimal" len="12,2" notnull="1"/>
    <field name="status" type="smallint"/>
    <field name="status_tm" type="datetime"/>
    <field name="status_msg" type="varchar" len="255"/>
    <index name="PRIMARY" unique="1">
      <field name="rebill_log_id"/>
    </index>
    <index name="payment_id">
      <field name="payment_id"/>
    </index>
  </table>
  <table name="saved_search">
    <field name="saved_search_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="name" type="varchar" len="64" notnull="1"/>
    <field name="class" type="varchar" len="64" notnull="1"/>
    <field name="search" type="text"/>
    <field name="updated" type="timestamp" notnull="1" default="CURRENT_TIMESTAMP" extra="on update CURRENT_TIMESTAMP"/>
    <field name="admin_id" type="int"/>
    <index name="PRIMARY" unique="1">
      <field name="saved_search_id"/>
    </index>
  </table>
  <table name="session">
    <field name="id" type="char" len="32" notnull="1"/>
    <field name="modified" type="int"/>
    <field name="lifetime" type="int"/>
    <field name="user_id" type="int"/>
    <field name="data" type="text"/>
    <index name="PRIMARY" unique="1">
      <field name="id"/>
    </index>
  </table>
  <table name="state">
    <field name="state_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="state" type="char" len="12" notnull="1"/>
    <field name="country" type="char" len="2" notnull="1"/>
    <field name="title" type="varchar" len="64"/>
    <field name="status" type="enum" len="'added','changed'"/>
    <field name="tag" type="int" default="0"/>
    <index name="PRIMARY" unique="1">
      <field name="state_id"/>
    </index>
    <index name="state" unique="1">
      <field name="state"/>
    </index>
    <index name="country">
      <field name="country"/>
    </index>
  </table>
  <table name="saved_form">
    <field name="saved_form_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="title" type="varchar" len="255" />
    <field name="comment" type="varchar" len="255" />
    <field name="code" type="varchar" len="64" />
    <field name="fields" type="text" />
    <field name="tpl" type="varchar" len="255" />
    <field name="type" type="varchar" len="16" />
    <field name="default_for" type="varchar" len="255" />
    <index name="PRIMARY" unique="1">
        <field name="saved_form_id" />
    </index>
    <table_data name="saved_form">
     <row type="saved_form">
      <field name="title">Signup Form</field>
      <field name="comment">customer signup/payment form</field>
      <field name="code">default</field>
      <field name="fields">[{&quot;id&quot;:&quot;product-0&quot;,&quot;class&quot;:&quot;product&quot;},{&quot;id&quot;:&quot;paysystem&quot;,&quot;class&quot;:&quot;paysystem&quot;},{&quot;id&quot;:&quot;name&quot;,&quot;class&quot;:&quot;name&quot;,&quot;hide-if-logged-in&quot;:true},{&quot;id&quot;:&quot;email&quot;,&quot;class&quot;:&quot;email&quot;,&quot;hide-if-logged-in&quot;:true},{&quot;id&quot;:&quot;login&quot;,&quot;class&quot;:&quot;login&quot;,&quot;hide-if-logged-in&quot;:true},{&quot;id&quot;:&quot;password&quot;,&quot;class&quot;:&quot;password&quot;,&quot;hide-if-logged-in&quot;:true}]</field>
      <field name="default_for">signup,member</field>
      <field name="type">signup</field>
     </row>
     <row type="saved_form">
      <field name="title">Create Customer Profile</field>
      <field name="comment">shopping cart signup form</field>
      <field name="fields">[{&quot;id&quot;:&quot;name&quot;,&quot;class&quot;:&quot;name&quot;,&quot;hide-if-logged-in&quot;:true},{&quot;id&quot;:&quot;email&quot;,&quot;class&quot;:&quot;email&quot;,&quot;hide-if-logged-in&quot;:true},{&quot;id&quot;:&quot;login&quot;,&quot;class&quot;:&quot;login&quot;,&quot;hide-if-logged-in&quot;:true},{&quot;id&quot;:&quot;password&quot;,&quot;class&quot;:&quot;password&quot;,&quot;hide-if-logged-in&quot;:true}]</field>
      <field name="type">cart</field>
     </row>
     <row type="saved_form">
      <field name="title">Customer Profile</field>
      <field name="comment">customer profile form</field>
      <field name="fields">[{&quot;id&quot;:&quot;name&quot;,&quot;class&quot;:&quot;name&quot;,&quot;hide-if-logged-in&quot;:true},{&quot;id&quot;:&quot;email&quot;,&quot;class&quot;:&quot;email&quot;,&quot;hide-if-logged-in&quot;:true},{&quot;id&quot;:&quot;new-password&quot;,&quot;class&quot;:&quot;new-password&quot;}]</field>
      <field name="type">profile</field>
     </row>
    </table_data>
  </table>
  <table name="translation">
    <field name="language" type="varchar" len="10" notnull="1"/>
    <field name="translations" type="mediumtext" notnull="1"/>
    <index name="PRIMARY" unique="1">
      <field name="language"/>
    </index>
  </table>
  <table name="saved_pass">
    <field name="saved_pass_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="user_id" type="int" notnull="1" />
    <field name="format" type="varchar" len="32" notnull="1"/>
    <field name="pass" type="varchar" len="255" notnull="1"/>
    <field name="salt" type="varchar" len="255"/>
    <field name="time" type="timestamp" notnull="1" default="CURRENT_TIMESTAMP" extra="on update CURRENT_TIMESTAMP"/>
    <index name="PRIMARY" unique="1"><field name="saved_pass_id" /></index>
    <index name="user" unique="1"><field name="user_id"/><field name="format"/></index>
  </table>
  <table name="ban">
    <field name="ban_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="type"  type="varchar" len="32" notnull="1" />
    <field name="value" type="varchar" len="255" notnull="1" />
    <field name="comment" type="varchar" len="255" notnull="0" />
    <index name="PRIMARY" unique="1">
      <field name="ban_id"/>
    </index>
    <index name="type">
      <field name="type"/>
    </index>
  </table>
  
  <table name="exchange_rate">
    <field name="rate_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="from" type="char" len="3" notnull="1" />
    <field name="to" type="char" len="3" notnull="1" />
    <field name="date" type="date"  />
    <index name="PRIMARY" unique="1">
      <field name="rate_id"/>
    </index>
    <index name="date">
      <field name="date"/>
    </index>
  </table>
  
  <table name="product_upgrade">
    <field name="product_upgrade_id" type="int" notnull="1" extra="auto_increment" />
    <field name="from_billing_plan_id" type="int" />
    <field name="to_billing_plan_id" type="int" />
    <field name="surcharge" type="decimal" len="12,2" default="0.00" />
    <index name="PRIMARY" unique="1">
      <field name="product_upgrade_id"/>
    </index>
  </table>
  
  <table name="currency_exchange">
    <field name="rate_id" type="int" notnull="1" extra="auto_increment" />
    <field name="currency" type="char" len="3" notnull="1" />
    <field name="date" type="date" notnull="1" />
    <field name="rate" type="decimal" len="12,6" notnull="1" />
    <index name="PRIMARY" unique="1">
      <field name="rate_id"/>
    </index>
    <index name="currency_rate" unique="1">
        <field name="currency" />
        <field name="date" />
    </index>
  </table>
  <table name="file_download">
    <field name="download_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="file_id" type="int" notnull="1"/>
    <field name="user_id" type="int" notnull="1"/>
    <field name="dattm" type="datetime" notnull="1" />
    <field name="remote_addr" type="varchar" len="15"/>
    <index name="PRIMARY" unique="1">
      <field name="download_id"/>
    </index>
    <index name="download">
      <field name="file_id"/>
      <field name="user_id"/>
      <field name="dattm"/>
    </index>
  </table>
  <table name="saved_report">
    <field name="saved_report_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="report_id" type="varchar" len="64" notnull="1"/>
    <field name="title" type="varchar" len="255" />
    <field name="request" type="blob"/>
    <field name="admin_id" type="int"/>
    <index name="PRIMARY" unique="1">
      <field name="saved_report_id"/>
    </index>
  </table>
  <table name="store_rebuild">
    <field name="store_rebuild_id" type="int" notnull="1" extra="auto_increment"/>
    <field name="rebuild_name" type="char" len="32" notnull="1"/>
    <field name="session_id" type="char" len="32" notnull="1"/>
    <field name="user_id" type="int" notnull="1"/>
    <field name="expires" type="datetime" notnull="0" />
    <index name="PRIMARY" unique="1">
      <field name="store_rebuild_id"/>
    </index>
    <index name="full_name" unique="1">
      <field name="rebuild_name"/>
      <field name="session_id"/>
      <field name="user_id"/>
    </index>
  </table>
</schema>