<?xml version="1.0" encoding="utf-8"?>

<!--
Copyright 2017-2018 Fabien Bourgeois <fabien@yaltik.com>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
-->

<odoo>
  <data>

    <!-- Actions -->
    <act_window id="golem_member_action" name="Subscribers"
      res_model="res.partner" view_mode="kanban,tree,form,graph"
      domain="[('membership_state', 'not in', ['none', 'canceled'])]" />
    <act_window id="golem_member_user_action" name="Service Users"
      res_model="golem.member" view_mode="kanban,tree,form,graph" />
    <act_window id="res_partner_category_action" name="GOLEM Members Tags"
      res_model="res.partner.category" view_mode="tree,form" />
    <record id="golem_membership_invoice_action" model="ir.actions.act_window">
        <field name="name">Join Membership</field>
        <field name="res_model">golem.membership.invoice</field>
        <field name="src_model">golem.member</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form</field>
        <field name="view_id" ref="golem_membership.golem_membership_invoice_form"/>
        <field name="target">new</field>
    </record>

    <!-- Forms -->
    <record id="golem_member_form" model="ir.ui.view">
      <field name="name">GOLEM Member Form</field>
      <field name="model">golem.member</field>
      <field name="arch" type="xml">
        <form>
          <header></header>
          <sheet>
            <div colspan="2" attrs="{'invisible': [('membership_state', '=', 'none')]}"
              style="background-color: #ccc; color: #fff; font-size: 150%; font-weight: bold; padding: 0.5%; text-align: center; margin-bottom: 1%;">Service User form</div>
            <div colspan="2" attrs="{'invisible': [('membership_state', '!=', 'none')]}"
              style="background-color: #ccc; color: #fff; font-size: 150%; font-weight: bold; padding: 0.5%; text-align: center; margin-bottom: 1%;">Member form</div>
            <group>
              <div class="oe_title">
                <h1>
                  <field name="image" widget="image" class="oe_left oe_avatar"
                    options="{'preview_image': 'image_medium', 'size': [90, 90]}" />
                  <field name="number_name" class="oe_inline" readonly="True"
                   style="margin-left: 2%" />
                </h1>
              </div>
              <div class="oe_right oe_button_box" name="buttons" />
              <group>
                <field name="season_ids" widget="many2many_tags"
		  options="{'no_create': True}" />
                <field name="category_id" widget="many2many_tags"
                  placeholder="Tags..."/>
              </group>
            </group>
            <group string="Personal details">
              <group>
                <field name="is_number_manual" invisible="True" />
                <field name="lastname" required="True" />
                <field name="firstname" required="True" />
                <field name="number" readonly="True"
                  attrs="{'invisible': ['|', ('membership_state', '=', 'none'), ('is_number_manual', '=', True)]}" />
                <field name="number_manual"
                  attrs="{'invisible': ['|', ('membership_state', '=', 'none'), ('is_number_manual', '=', False)],
                  'required': [('is_number_manual', '=', True), ('membership_state', '!=', 'none')]}" />
              </group>
              <group>
                <field name="gender" />
                <field name="birthdate_date" />
                <field name="nationality_id" />
                <field name="function" />
              </group>
            </group>
            <notebook>
              <page name="contact_details" string="Contact details">
                <group string="Address">
                  <group>
                    <field name="street" placeholder="Street..." />
                    <field name="street2" />
                    <field name="area_id" placeholder="Area, quarter..."
                      options="{'no_create': true}" />
                    <field name="zip" placeholder="ZIP" />
                    <field name="city" placeholder="City" />
                  </group>
                  <group>
                    <field name="state_id" class="oe_no_button"
                      placeholder="State" />
                    <field name="country_id" placeholder="Country"
                      class="oe_no_button" />
                  </group>
                </group>
                <group string="Communication">
                  <group>
                    <field name="phone" placeholder="0000000000"
                      widget="phonefr" />
                    <field name="mobile" placeholder="0000000000"
                      widget="phonefr" />
                    <field name="opt_out_sms" />
                    <field name="email" widget="email"
                      placeholder="name@example.org" />
                    <label for="opt_out" string="Out of mailings?" />
                    <field name="opt_out" nolabel="1" />
                  </group>
                  <group>
                    <field name="electronic_processing_agreement"/>
                    <field name="pictures_agreement"/>
                    <field name="website" widget="url"
                      placeholder="e.g. www.odoo.com"/>
                  </group>
                </group>
              </page>
              <page name="membership" string="Membership">
                <group>
                  <group>
                    <field name="free_member"/>
                    <label for="membership_state"/>
                    <div>
                      <field name="partner_id" invisible="True" required="False" />
                      <field name="membership_state"/>
                      <button name="%(golem_membership_invoice_action)d"
                        type="action" string="Buy Membership"
                        attrs="{'invisible':[('free_member','=',True)]}"
                        context="{'default_partner_id': partner_id}"
                        class="oe_link"/>
                    </div>
                  </group>
                  <group>
                    <field name="membership_start"
                      attrs="{'invisible':[('membership_start','=',False)]}"/>
                    <field name="membership_stop"
                      attrs="{'invisible':[('membership_stop','=',False)]}"/>
                    <field name="membership_cancel"
                      attrs="{'invisible':[('membership_cancel','=',False)]}"/>
                  </group>
                </group>
                <field name="member_lines" nolabel="1" colspan="4" readonly="1">
                  <tree string="Memberships">
                    <field name="date"/>
                    <field name="membership_id"/>
                    <field name="member_price"/>
                    <field name="account_invoice_id"/>
                    <field name="state"/>
                  </tree>
                  <form string="Memberships">
                    <group>
                      <field name="date"/>
                      <field name="member_price"/>
                      <field name="membership_id"/>
                      <field name="account_invoice_id"
                        context="{'form_view_ref': 'account.invoice_form'}"/>
                      <field name="state" colspan="4"/>
                    </group>
                  </form>
                </field>
              </page>
              <page name="other_page" string="Others">
                <group>
                  <field name="comment" placeholder="Put an internal note..." />
                </group>
              </page>
            </notebook>
          </sheet>
          <div class="oe_chatter">
              <field name="message_follower_ids" widget="mail_followers" />
              <field name="message_ids" widget="mail_thread" />
          </div>
        </form>
      </field>
    </record>

    <!-- Kanban -->
    <record model="ir.ui.view" id="golem_member_kanban">
      <field name="name">GOLEM Member Kanban view</field>
      <field name="model">golem.member</field>
      <field name="arch" type="xml">
        <kanban>
          <field name="is_company" />
          <field name="image" />
          <field name="color" />
          <field name="display_name" />
          <field name="title" />
          <field name="email" />
          <field name="phone" />
          <field name="mobile" />
          <field name="city" />
          <field name="country_id" />
          <field name="number" />
          <field name="season_ids" />
          <field name="category_id"/>
          <templates>
            <t t-name="kanban-box">
              <div class="oe_kanban_vignette oe_semantic_html_override">
                <div class="o_kanban_image">
                  <img t-if="record.image.raw_value"
                    t-att-src="'data:image/png;base64,'+ record.image.raw_value"/>
                  <t t-if="!record.image.raw_value">
                    <img t-if="record.is_company.raw_value === true"
                      t-att-src='_s + "/base/static/src/img/company_image.png"'/>
                    <img t-if="record.is_company.raw_value === false"
                      t-att-src='_s + "/base/static/src/img/avatar.png"'/>
                    </t>
                </div>
                <div class="oe_kanban_details">
                  <h4 class="oe_partner_heading">
                    <a type="open"><field name="display_name" /></a>
                    <t t-if="record.number.raw_value != ''">(N° <field name="number" />)</t>
                  </h4>
                  <div class="oe_kanban_partner_categories" />
                  <div class="oe_kanban_partner_links" />
                  <field name="season_ids" />
                  <ul>
                    <li t-if="record.city.raw_value and !record.country_id.raw_value">
                      <field name="city" />
                    </li>
                    <li t-if="!record.city.raw_value and record.country_id.raw_value">
                      <field name="country_id" />
                    </li>
                    <li t-if="record.city.raw_value and record.country_id.raw_value">
                      <field name="city" />, <field name="country_id" />
                    </li>
                    <li t-if="record.phone.raw_value or record.mobile.raw_value">
                      <a t-attf-href="tel:#{record.phone.raw_value}">
                        <field name="phone" />
                      </a>
                      <a t-attf-href="tel:#{record.mobile.raw_value}">
                        <field name="mobile" />
                      </a>
                    </li>
                    <li t-if="record.email.raw_value">
                      <a t-attf-href="mailto:#{record.email.raw_value}">
                        <field name="email" />
                      </a>
                    </li>
                  </ul>
                </div>
              </div>
            </t>
          </templates>
        </kanban>
      </field>
    </record>

    <!-- Trees -->
    <record model="ir.ui.view" id="golem_member_tree">
      <field name="name">GOLEM Member Tree/List</field>
      <field name="model">golem.member</field>
      <field name="arch" type="xml">
        <tree string="GOLEM Members">
          <field name="season_ids" options="{'no_create': True}" />
          <field name="number" />
          <field name="name" />
          <field name="contact_address" />
          <field name="phone" />
          <field name="mobile" />
          <field name="email" widget="email" />
        </tree>
      </field>
    </record>

    <!-- Searches -->
    <record id="golem_member_search" model="ir.ui.view">
      <field name="name">GOLEM Member Filters</field>
      <field name="model">golem.member</field>
      <field name="arch" type="xml">
        <search>
          <field name="number" />
          <field name="name" />
          <field name="season_ids" widget="many2one" />
          <field name="area_id" />
          <field name="contact_address" />
          <field name="city" />
          <field name="phone" />
          <field name="mobile" />
          <field name="email" />
          <field name="category_id" widget="many2one" />
          <filter name="season_default" string="Default season"
           domain="[('is_default', '=', True)]" />
          <separator />
          <filter name="is_subscriber" string="Is Subscriber"
            domain="[('membership_state', '!=', 'none')]" />
          <filter name="is_service_user_only" string="Is Service User Only"
            domain="[('membership_state', '=', 'none')]" />
          <group string="Group By">
            <filter name="group_age" string="By age"
              context="{'group_by': 'is_minor'}"/>
            <filter name="group_gender" string="By gender"
              context="{'group_by': 'gender'}"/>
            <filter name="group_area" string="By area"
              context="{'group_by': 'area_id'}"/>
            <filter name="group_city" string="By city"
              context="{'group_by': 'city'}"/>
          </group>
        </search>
      </field>
    </record>

    <!-- Graphs -->
    <record model="ir.ui.view" id="golem_member_graph">
      <field name="name">GOLEM Member Graph</field>
      <field name="model">golem.member</field>
      <field name="arch" type="xml">
        <graph string="Service Users" type="pivot">
          <field name="partner_id" />
        </graph>
      </field>
    </record>

    <!-- Menu items -->
    <!-- Add new menu items -->
    <menuitem id="golem_member_user_menu" name="Service users"
      parent="golem_membership.menu_association" sequence="5"
      action="golem_member_user_action" groups="golem_base.group_golem_user" />
    <menuitem id="golem_members_menu" name="Subscribers"
      parent="golem_membership.menu_association" sequence="10"
      action="golem_member_action" groups="golem_base.group_golem_user" />
    <menuitem id="golem_member_tool_menu" name="Tools"
      parent="golem_membership.menu_association" sequence="80"
      groups="golem_base.group_golem_user" />
    <menuitem id="res_partner_category_menu" name="Service User Tags"
      parent="golem_membership.menu_config_association" sequence="15"
      action="res_partner_category_action"
      groups="golem_base.group_golem_manager" />
  </data>
</odoo>