[IMP]GOLEM Activity : merge session with main activity and reform views

This commit is contained in:
Fabien Bourgeois 2016-10-10 16:25:55 +02:00
parent bd9b795c4f
commit 6925575c30
12 changed files with 187 additions and 2236 deletions

View File

@ -22,12 +22,41 @@ class GolemActivity(models.Model):
_name = 'golem.activity'
_description = 'GOLEM Activity'
_inherit = 'mail.thread'
_inherits = {'product.template': 'product_id'}
_rec_name = 'full_name'
name = fields.Char('Name', index=True, required=True)
default_code = fields.Char('Internal Reference', index=True)
image = fields.Binary('Image', help='This field holds the image used as '
'image for the activity.')
note = fields.Text('Note')
product_id = fields.Many2one('product.template', required=True,
ondelete='cascade')
image = fields.Binary(help='This field holds the image used as image for '
'the activity.')
full_name = fields.Char('Name', compute='_compute_full_name', store=True,
index=True)
@api.one
@api.depends('name', 'default_code')
def _compute_full_name(self):
""" Provide a better displayed name """
full_name = unicode(self.name)
if self.default_code:
full_name = u'[{}] {}'.format(self.default_code, full_name)
self.full_name = full_name
type_of = fields.Selection([('activity', _('Activity')),
('workshop', _('Workshop')),
('training', _('Training'))],
default='activity', index=True, string='Type')
@api.onchange('type_of')
def onchange_type_of(self):
for s in self:
if s.type_of != 'activity':
s.is_recurrent = False
else:
s.is_recurrent = True
# TODO: to link with calendar.event
@api.model
def _default_season(self):
@ -38,31 +67,6 @@ class GolemActivity(models.Model):
season_id = fields.Many2one('golem.season', string='Season', copy=False,
required=True, default=_default_season,
ondelete='restrict')
animator_id = fields.Many2one('res.partner', string='Animator',
domain=[('is_company', '=', False)])
categ_id = fields.Many2one('product.category', 'Internal Category',
required=True,
help='Select category for the current activity')
date_start = fields.Date('Start date', copy=False)
date_end = fields.Date('End date', copy=False)
@api.constrains('date_start', 'date_end')
def _check_period(self):
""" Check if end date if after start date """
for a in self:
if a.date_start and a.date_end and a.date_start > a.date_end:
raise models.ValidationError(_('Start of the period cannot be '
'after end of the period.'))
@api.onchange('season_id')
def onchange_season_dates(self):
""" Sets defaults dates according to season """
for a in self:
if a.season_id:
if not a.date_start:
a.date_start = a.season_id.date_start
if not a.date_end:
a.date_end = a.season_id.date_end
is_current = fields.Boolean('Current season?', store=True, default=False,
compute='_compute_is_current')
@ -73,3 +77,71 @@ class GolemActivity(models.Model):
""" Checks if activity is active for current season """
default_season = self._default_season()
self.is_current = (default_season == self.season_id)
animator_id = fields.Many2one('res.partner', string='Animator',
domain=[('is_company', '=', False)])
categ_id = fields.Many2one('product.category',
help='Select category for the current activity')
is_recurrent = fields.Boolean('Is recurrent ?', default=True,
help='Work in progress')
date_start = fields.Date('Start date', copy=False)
date_stop = fields.Date('End date', copy=False)
@api.onchange('date_start')
def onchange_date_start(self):
""" Sets end date to start date if no start date """
for s in self:
if not s.date_stop:
s.date_stop = s.date_start
@api.constrains('date_start', 'date_stop')
def _check_period(self):
""" Check if end date if after start date """
for a in self:
if a.date_start and a.date_stop and a.date_start > a.date_stop:
raise models.ValidationError(_('Start of the period cannot be '
'after end of the period.'))
@api.onchange('season_id')
def onchange_season_dates(self):
""" Sets defaults dates according to season """
for a in self:
if a.season_id:
if not a.date_start:
a.date_start = a.season_id.date_start
if not a.date_stop:
a.date_stop = a.season_id.date_stop
weekday = fields.Selection([('mon', _('Monday')),
('tue', _('Tuesday')),
('wed', _('Wednesday')),
('thu', _('Thursday')),
('fri', _('Friday')),
('sat', _('Saturday')),
('sun', _('Sunday'))], copy=False)
hour_start = fields.Float('Start time', copy=False)
hour_end = fields.Float('End time', copy=False)
@api.onchange('hour_start')
def onchange_hour_start(self):
""" Sets end hour to start hour if no start hour """
for s in self:
if s.hour_start and not s.hour_end:
s.hour_end = s.hour_start + 1
@api.constrains('hour_start', 'hour_end')
def _check_hour_period(self):
""" Check if end hour if after start hour """
for s in self:
if s.hour_start > s.hour_end:
raise models.ValidationError(_('Start of the period cannot be '
'after end of the period.'))
class ProductTemplate(models.Model):
_inherit = 'product.template'
# Make default service for type
type = fields.Selection(default='service')
# Copy the default code
default_code = fields.Char(copy=True)

View File

@ -25,41 +25,55 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<field name="arch" type="xml">
<form>
<sheet>
<div class="oe_right oe_button_box" style="width: 300px;"
name="buttons"></div>
<div class="oe_left" style="width: 500px;">
<field name="image" widget="image" class="oe_avatar oe_left"/>
<div class="oe_title" style="width: 390px;">
<label class="oe_edit_only" for="name" string="Activity Name"/>
<h1><field name="name" class="oe_inline"/></h1>
</div>
<div class="oe_right oe_button_box" style="width: 300px;"
name="buttons"></div>
<div class="oe_left" style="width: 500px;">
<field name="image" widget="image" class="oe_avatar oe_left"/>
<div class="oe_title" style="width: 390px;">
<label class="oe_edit_only" for="name" string="Activity Name"/>
<h1><field name="name" required="True" class="oe_inline"/></h1>
</div>
</div>
<group>
<group>
<field name="season_id" />
<field name="default_code" />
</group>
<group string="Details">
<group>
<field name="categ_id" />
<field name="season_id" required="True" />
<field name="animator_id" />
<field name="type_of" required="True" />
</group>
<group>
<field name="date_start" />
<field name="date_end" />
<field name="categ_id" required="True" />
<field name="default_code" />
<field name="list_price" />
</group>
</group>
<notebook>
<page string="Session">
<group>
<field name="is_recurrent" />
<field name="weekday"
attrs="{'invisible': [('is_recurrent', '=', False)]}" />
<field name="hour_start" widget="float_time"
attrs="{'invisible': [('is_recurrent', '=', False)]}" />
<field name="hour_end" widget="float_time"
attrs="{'invisible': [('is_recurrent', '=', False)]}" />
<field name="date_start"
attrs="{'invisible': [('is_recurrent', '=', True)]}" />
<field name="date_stop"
attrs="{'invisible': [('is_recurrent', '=', True)]}" />
</group>
</page>
<page name="activity_info" string="Information">
<group>
<field name="note"
placeholder="describe the activity characteristics..."/>
<field name="description"
placeholder="describe the activity characteristics..." />
<field name="active" />
</group>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers" />
<field name="message_ids" widget="mail_thread" />
<field name="message_follower_ids" widget="mail_followers" />
<field name="message_ids" widget="mail_thread" />
</div>
</form>
</field>
@ -70,31 +84,75 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<field name="name">GOLEM Activity Tree/List</field>
<field name="model">golem.activity</field>
<field name="arch" type="xml">
<tree string="GOLEM Activities">
<tree>
<field name="is_recurrent" invisible="True" />
<field name="season_id" />
<field name="name" />
<field name="type_of" />
<field name="full_name" />
<field name="animator_id" />
<field name="weekday" string="Day"
attrs="{'invisible': [('is_recurrent', '=', False)]}" />
<field name="date_start" string="Date"
attrs="{'invisible': [('is_recurrent', '=', True)]}" />
<field name="list_price" sum="True" />
</tree>
</field>
</record>
<!-- Calendars -->
<record id="calendar" model="ir.ui.view">
<field name="name">Activity calendar view</field>
<field name="model">golem.activity</field>
<field name="arch" type="xml">
<calendar date_start="date_start" date_stop="date_stop"
color="categ_id" display="[name]">
<field name="name" />
</calendar>
</field>
</record>
<!-- Searches -->
<record id="view_filter" model="ir.ui.view">
<field name="name">GOLEM Activity Filters</field>
<field name="model">golem.activity</field>
<field name="arch" type="xml">
<search>
<field name="name" />
<field name="full_name" />
<field name="animator_id" widget="many2one" />
<field name="categ_id" widget="many2one" />
<field name="season_id" widget="many2one" />
<filter name="season_default" string="Default season"
domain="[('is_current', '=', True)]" />
<filter name="type_of_activity" string="Activity"
domain="[('type_of', '=', 'activity')]" />
<filter name="type_of_workshop" string="Workshop"
domain="[('type_of', '=', 'workshop')]" />
<filter name="type_of_training" string="Training"
domain="[('type_of', '=', 'training')]" />
<group string="Group By">
<filter name="group_type_of" string="By type"
context="{'group_by': 'type_of'}" />
<filter name="group_category" string="By category"
context="{'group_by': 'categ_id'}"/>
<filter name="group_weekday" string="By weekday"
context="{'group_by': 'weekday'}" />
<filter name="group_animator" string="By animator"
context="{'group_by': 'animator_id'}" />
</group>
</search>
</field>
</record>
<!-- Actions -->
<act_window id="action" name="GOLEM Activities" res_model="golem.activity"
view_mode="tree,form,calendar"
context="{'search_default_season_default': True, 'default_categ_id': ref('golem_activity.golem_product_category_activities')}" />
<record id="category_action" model="ir.actions.act_window">
<field name="name">Activities Categories</field>
<field name="res_model">product.category</field>
<field name="view_type">form</field>
<field name="view_id" ref="product.product_category_list_view" />
</record>
<!-- Menus -->
<menuitem id="activity_menu" name="Activities"
@ -103,6 +161,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<menuitem id="activity_list" name="List"
groups="golem_base.group_golem_user"
parent="activity_menu" sequence="0" action="action" />
<menuitem id="activity_categ" name="Categories"
parent="golem_activity.activity_menu" sequence="20"
groups="golem_base.group_golem_manager"
action="category_action" />
</data>
</openerp>

View File

@ -1,18 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2016 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/>.
from . import models

View File

@ -1,31 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2016 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/>.
{
'name': 'GOLEM Activity Sessions',
'summary': 'GOLEM Activities Session management',
'description': ''' Non-profit french MJC activies session management ''',
'version': '0.1',
'category': 'GOLEM',
'author': 'Fabien Bourgeois',
'license': 'AGPL-3',
'application': False,
'installable': True,
'auto_install': True,
'depends': ['product', 'mail', 'golem_activity'],
'data': ['security/ir.model.access.csv', 'views/golem_activity_view.xml']
}

View File

@ -1,837 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * golem_activity_session
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 14:08+0000\n"
"PO-Revision-Date: 2016-09-09 14:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: golem_activity_session
#: field:golem.activity.session,product_variant_count:0
msgid "# of Product Variants"
msgstr "# de variantes d'articles"
#. module: golem_activity_session
#: help:golem.activity.session,description_sale:0
msgid "A description of the Product that you want to communicate to your customers. This description will be copied to every Sale Order, Delivery Order and Customer Invoice/Refund"
msgstr "Une description de l'article que vous voulez communiquer à vos utilisateurs. Cette description sera utilisée dans chaque bon de commande, bon de livraison et facture client ou avoir."
#. module: golem_activity_session
#: help:golem.activity.session,description_purchase:0
msgid "A description of the Product that you want to communicate to your suppliers. This description will be copied to every Purchase Order, Receipt and Supplier Invoice/Refund."
msgstr "Une description de l'article que vous voulez communiquer à vos utilisateurs. Cette description sera utilisée dans chaque bon de commande, bon de livraison et facture client ou avoir."
#. module: golem_activity_session
#: help:golem.activity.session,description:0
msgid "A precise description of the Product, used only for internal information purposes."
msgstr "Une description précise de l'article, utilisée seulement pour de l'information interne (hors factures)."
#. module: golem_activity_session
#: field:golem.activity.session,active:0
msgid "Active"
msgstr "Actif"
#. module: golem_activity_session
#: view:golem.member:golem_activity_session.sessions_inscription
#: field:golem.member,activity_session_ids:0
msgid "Activities"
msgstr "Activités"
#. module: golem_activity_session
#: model:ir.actions.act_window,name:golem_activity_session.category_action
msgid "Activities Categories"
msgstr "Catégories d'activités"
#. module: golem_activity_session
#: model:ir.ui.menu,name:golem_activity_session.session_menu_list
msgid "Activities sessions"
msgstr "Séances des activités"
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:93
#: view:golem.activity.session:golem_activity_session.searches
#: field:golem.activity.session,activity_id:0
#: selection:golem.activity.session,type_of:0
#, python-format
msgid "Activity"
msgstr "Activité"
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:43
#, python-format
msgid "Activity Sessions"
msgstr "Séances de l'activité"
#. module: golem_activity_session
#: field:golem.activity.session,is_overbooked:0
msgid "Allow overbook?"
msgstr "Autoriser la surcharge?"
#. module: golem_activity_session
#: field:golem.activity.session,animator_id:0
msgid "Animator"
msgstr "Intervenant"
#. module: golem_activity_session
#: help:golem.activity.session,list_price:0
msgid "Base price to compute the customer price. Sometimes called the catalog price."
msgstr "Prix de base pour calculer le prix client."
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.searches
msgid "By animator"
msgstr "Par intervenant"
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.searches
msgid "By category"
msgstr "Par catégorie"
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.searches
msgid "By type"
msgstr "Par type"
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.searches
msgid "By weekday"
msgstr "Par jour de la semaine"
#. module: golem_activity_session
#: field:golem.activity.session,rental:0
msgid "Can be Rent"
msgstr "Peut être loué"
#. module: golem_activity_session
#: field:golem.activity.session,sale_ok:0
msgid "Can be Sold"
msgstr "Peut être vendu"
#. module: golem_activity_session
#: model:ir.ui.menu,name:golem_activity_session.activity_categ
msgid "Categories"
msgstr "Categories"
#. module: golem_activity_session
#: help:golem.activity.session,membership:0
msgid "Check if the product is eligible for membership."
msgstr "Check if the product is eligible for membership."
#. module: golem_activity_session
#: help:golem.activity.session,uos_coeff:0
msgid "Coefficient to convert default Unit of Measure to Unit of Sale\n"
" uos = uom * coeff"
msgstr "Coefficient to convert default Unit of Measure to Unit of Sale\n"
" uos = uom * coeff"
#. module: golem_activity_session
#: field:golem.activity.session,color:0
msgid "Color Index"
msgstr "Color Index"
#. module: golem_activity_session
#: field:golem.activity.session,company_id:0
msgid "Company"
msgstr "Company"
#. module: golem_activity_session
#: help:golem.activity.session,type:0
msgid "Consumable are product where you don't manage stock, a service is a non-material product provided by a company or an individual."
msgstr "Consumable are product where you don't manage stock, a service is a non-material product provided by a company or an individual."
#. module: golem_activity_session
#: field:golem.activity.session,standard_price:0
msgid "Cost Price"
msgstr "Cost Price"
#. module: golem_activity_session
#: help:golem.activity.session,standard_price:0
msgid "Cost price of the product template used for standard stock valuation in accounting and used as a base price on purchase orders. Expressed in the default unit of measure of the product."
msgstr "Cost price of the product template used for standard stock valuation in accounting and used as a base price on purchase orders. Expressed in the default unit of measure of the product."
#. module: golem_activity_session
#: field:golem.activity.session,create_uid:0
msgid "Created by"
msgstr "Créé par"
#. module: golem_activity_session
#: field:golem.activity.session,create_date:0
msgid "Created on"
msgstr "Créé le"
#. module: golem_activity_session
#: field:golem.activity.session,is_current:0
msgid "Current season?"
msgstr "Saison en cours?"
#. module: golem_activity_session
#: field:golem.activity.session,taxes_id:0
msgid "Customer Taxes"
msgstr "Taxes"
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.session_tree
msgid "Date"
msgstr "Date"
#. module: golem_activity_session
#: help:golem.activity.session,membership_date_from:0
msgid "Date from which membership becomes active."
msgstr "Date à partir de laquelle l'adhésion est devenu active."
#. module: golem_activity_session
#: help:golem.activity.session,message_last_post:0
msgid "Date of the last message posted on the record."
msgstr "Date du dernier message sur l'enregistrement."
#. module: golem_activity_session
#: help:golem.activity.session,membership_date_to:0
msgid "Date until which membership remains active."
msgstr "Date à laquelle l'adhésion reste active."
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.session_tree
msgid "Day"
msgstr "Jour"
#. module: golem_activity_session
#: help:golem.activity.session,uom_id:0
msgid "Default Unit of Measure used for all stock operation."
msgstr "Default Unit of Measure used for all stock operation."
#. module: golem_activity_session
#: help:golem.activity.session,uom_po_id:0
msgid "Default Unit of Measure used for purchase orders. It must be in the same category than the default unit of measure."
msgstr "Default Unit of Measure used for purchase orders. It must be in the same category than the default unit of measure."
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.searches
msgid "Default season"
msgstr "Saison par défaut"
#. module: golem_activity_session
#: view:golem.member:golem_activity_session.sessions_inscription
msgid "Default season activities"
msgstr "Activités de la saison affichée par défaut"
#. module: golem_activity_session
#: field:golem.activity.session,description:0
msgid "Description"
msgstr "Description"
#. module: golem_activity_session
#: field:golem.activity.session,display_name:0
msgid "Display Name"
msgstr "Nom affiché"
#. module: golem_activity_session
#: field:golem.activity.session,ean13:0
msgid "EAN13 Barcode"
msgstr "Code-barres EAN13"
#. module: golem_activity_session
#: field:golem.activity.session,date_end:0
msgid "End date"
msgstr "Date de fin"
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:166
#, python-format
msgid "End of the session cannot be after the end of activity date"
msgstr "La fin de la séance ne peut être après la fin de l'activité"
#. module: golem_activity_session
#: field:golem.activity.session,hour_end:0
msgid "End time"
msgstr "Heure de fin"
#. module: golem_activity_session
#: field:golem.activity.session,property_account_expense:0
msgid "Expense Account"
msgstr "Compte de dépense"
#. module: golem_activity_session
#: field:golem.activity.session,message_follower_ids:0
msgid "Followers"
msgstr "Abonnés"
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:174
#: selection:golem.activity.session,weekday:0
#, python-format
msgid "Friday"
msgstr "Vendredi"
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.searches
msgid "Full"
msgstr "Plein"
#. module: golem_activity_session
#: model:ir.model,name:golem_activity_session.model_golem_activity_session
msgid "GOLEM Activities Sessions"
msgstr "Séances des activités"
#. module: golem_activity_session
#: model:ir.actions.act_window,name:golem_activity_session.session_action_list
msgid "GOLEM Activities Sessions List"
msgstr "Liste des séances"
#. module: golem_activity_session
#: model:ir.model,name:golem_activity_session.model_golem_activity
msgid "GOLEM Activity"
msgstr "Activité"
#. module: golem_activity_session
#: model:ir.model,name:golem_activity_session.model_golem_member
msgid "GOLEM Member"
msgstr "Adhérent"
#. module: golem_activity_session
#: help:golem.activity.session,packaging_ids:0
msgid "Gives the different ways to package the same product. This has no impact on the picking order and is mainly used if you use the EDI module."
msgstr "Gives the different ways to package the same product. This has no impact on the picking order and is mainly used if you use the EDI module."
#. module: golem_activity_session
#: field:golem.activity.session,weight:0
msgid "Gross Weight"
msgstr "Gross Weight"
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.searches
msgid "Group By"
msgstr "Grouper par"
#. module: golem_activity_session
#: help:golem.activity.session,message_summary:0
msgid "Holds the Chatter summary (number of messages, ...). This summary is directly in html format in order to be inserted in kanban views."
msgstr "Holds the Chatter summary (number of messages, ...). This summary is directly in html format in order to be inserted in kanban views."
#. module: golem_activity_session
#: field:golem.activity.session,id:0
msgid "ID"
msgstr "ID"
#. module: golem_activity_session
#: help:golem.activity.session,message_unread:0
msgid "If checked new messages require your attention."
msgstr "If checked new messages require your attention."
#. module: golem_activity_session
#: help:golem.activity.session,active:0
msgid "If unchecked, it will allow you to hide the product without removing it."
msgstr "If unchecked, it will allow you to hide the product without removing it."
#. module: golem_activity_session
#: field:golem.activity.session,image:0
msgid "Image"
msgstr "Image"
#. module: golem_activity_session
#: field:golem.activity.session,property_account_income:0
msgid "Income Account"
msgstr "Income Account"
#. module: golem_activity_session
#: field:golem.activity.session,categ_id:0
msgid "Internal Category"
msgstr "Catégorie"
#. module: golem_activity_session
#: field:golem.activity.session,default_code:0
msgid "Internal Reference"
msgstr "Référence"
#. module: golem_activity_session
#: field:golem.activity.session,message_is_follower:0
msgid "Is a Follower"
msgstr "Is a Follower"
#. module: golem_activity_session
#: field:golem.activity.session,is_product_variant:0
msgid "Is product variant"
msgstr "Is product variant"
#. module: golem_activity_session
#: field:golem.activity.session,is_recurrent:0
msgid "Is recurrent ?"
msgstr "Est récurrent ?"
#. module: golem_activity_session
#: field:golem.activity.session,message_last_post:0
msgid "Last Message Date"
msgstr "Date du dernier message"
#. module: golem_activity_session
#: field:golem.activity.session,__last_update:0
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: golem_activity_session
#: field:golem.activity.session,write_uid:0
msgid "Last Updated by"
msgstr "Dernière modification par"
#. module: golem_activity_session
#: field:golem.activity.session,write_date:0
msgid "Last Updated on"
msgstr "Dernière modification le"
#. module: golem_activity_session
#: field:golem.activity.session,packaging_ids:0
msgid "Logistical Units"
msgstr "Logistical Units"
#. module: golem_activity_session
#: field:golem.activity.session,seller_id:0
msgid "Main Supplier"
msgstr "Main Supplier"
#. module: golem_activity_session
#: help:golem.activity.session,seller_id:0
msgid "Main Supplier who has highest priority in Supplier List."
msgstr "Main Supplier who has highest priority in Supplier List."
#. module: golem_activity_session
#: field:golem.activity.session,mes_type:0
msgid "Measure Type"
msgstr "Measure Type"
#. module: golem_activity_session
#: field:golem.activity.session,image_medium:0
msgid "Medium-sized image"
msgstr "Medium-sized image"
#. module: golem_activity_session
#: help:golem.activity.session,image_medium:0
msgid "Medium-sized image of the product. It is automatically resized as a 128x128px image, with aspect ratio preserved, only when the image exceeds one of those sizes. Use this field in form views or some kanban views."
msgstr "Medium-sized image of the product. It is automatically resized as a 128x128px image, with aspect ratio preserved, only when the image exceeds one of those sizes. Use this field in form views or some kanban views."
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.view_form
#: field:golem.activity.session,member_ids:0
msgid "Members"
msgstr "Adhérents"
#. module: golem_activity_session
#: field:golem.activity.session,membership:0
msgid "Membership"
msgstr "Adhésion"
#. module: golem_activity_session
#: field:golem.activity.session,membership_date_to:0
msgid "Membership End Date"
msgstr "Fin de l'adhésion"
#. module: golem_activity_session
#: field:golem.activity.session,membership_date_from:0
msgid "Membership Start Date"
msgstr "Début de l'adhésion"
#. module: golem_activity_session
#: field:golem.activity.session,message_ids:0
msgid "Messages"
msgstr "Messages"
#. module: golem_activity_session
#: help:golem.activity.session,message_ids:0
msgid "Messages and communication history"
msgstr "Messages et historique des échanges"
#. module: golem_activity_session
#: field:golem.activity.session,places_min:0
msgid "Minimum places"
msgstr "Places minimum"
#. module: golem_activity_session
#: help:golem.activity.session,places_min:0
msgid "Minimum places to maintain the session"
msgstr "Nombre de places minimum pour maintenir la session"
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:170
#: selection:golem.activity.session,weekday:0
#, python-format
msgid "Monday"
msgstr "Lundi"
#. module: golem_activity_session
#: field:golem.activity.session,name:0
#: field:golem.activity.session,session_name:0
msgid "Name"
msgstr "Nom"
#. module: golem_activity_session
#: field:golem.activity.session,weight_net:0
msgid "Net Weight"
msgstr "Net Weight"
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:70
#: sql_constraint:golem.activity.session:0
#, python-format
msgid "Number of places cannot be negative."
msgstr "Le nombre de places ne peut pas être négatif"
#. module: golem_activity_session
#: field:golem.activity.session,places:0
msgid "Places"
msgstr "Places"
#. module: golem_activity_session
#: field:golem.activity.session,places_used:0
msgid "Places used"
msgstr "Places prises"
#. module: golem_activity_session
#: field:golem.activity.session,places_overbooked:0
msgid "Places with overbook"
msgstr "Places avec surcharge"
#. module: golem_activity_session
#: field:golem.activity.session,price:0
msgid "Price"
msgstr "Prix"
#. module: golem_activity_session
#: field:golem.activity.session,pricelist_id:0
msgid "Pricelist"
msgstr "Liste de prix"
#. module: golem_activity_session
#: field:golem.activity.session,attribute_line_ids:0
msgid "Product Attributes"
msgstr "Product Attributes"
#. module: golem_activity_session
#: field:golem.activity.session,product_manager:0
msgid "Product Manager"
msgstr "Product Manager"
#. module: golem_activity_session
#: model:ir.model,name:golem_activity_session.model_product_template
msgid "Product Template"
msgstr "Modèle d'article"
#. module: golem_activity_session
#: field:golem.activity.session,type:0
msgid "Product Type"
msgstr "Type d'article"
#. module: golem_activity_session
#: field:golem.activity.session,product_id:0
msgid "Product id"
msgstr "Product id"
#. module: golem_activity_session
#: field:golem.activity.session,product_variant_ids:0
msgid "Products"
msgstr "Articles"
#. module: golem_activity_session
#: field:golem.activity.session,lst_price:0
msgid "Public Price"
msgstr "Prix public"
#. module: golem_activity_session
#: field:golem.activity.session,description_purchase:0
msgid "Purchase Description"
msgstr "Purchase Description"
#. module: golem_activity_session
#: field:golem.activity.session,uom_po_id:0
msgid "Purchase Unit of Measure"
msgstr "Purchase Unit of Measure"
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.session_tree
msgid "Remain"
msgstr "Reste"
#. module: golem_activity_session
#: field:golem.activity.session,places_remain:0
msgid "Remaining places"
msgstr "Places restantes"
#. module: golem_activity_session
#: field:golem.activity.session,description_sale:0
msgid "Sale Description"
msgstr "Description de vente"
#. module: golem_activity_session
#: field:golem.activity.session,list_price:0
msgid "Sale Price"
msgstr "Prix de vente"
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:175
#: selection:golem.activity.session,weekday:0
#, python-format
msgid "Saturday"
msgstr "Samedi"
#. module: golem_activity_session
#: field:golem.activity.session,season_id:0
msgid "Season"
msgstr "Saison"
#. module: golem_activity_session
#: help:golem.activity.session,categ_id:0
msgid "Select category for the current activity"
msgstr "Select category for the current activity"
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.view_form
msgid "Service"
msgstr "Service"
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.view_form
msgid "Session"
msgstr "Session"
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.view_form
msgid "Session Name"
msgstr "Nom de la séance"
#. module: golem_activity_session
#: view:golem.activity:golem_activity_session.session_smart
#: field:golem.activity,session_count:0
msgid "Sessions"
msgstr "Séances"
#. module: golem_activity_session
#: field:golem.activity.session,image_small:0
msgid "Small-sized image"
msgstr "Small-sized image"
#. module: golem_activity_session
#: help:golem.activity.session,image_small:0
msgid "Small-sized image of the product. It is automatically resized as a 64x64px image, with aspect ratio preserved. Use this field anywhere a small image is required."
msgstr "Small-sized image of the product. It is automatically resized as a 64x64px image, with aspect ratio preserved. Use this field anywhere a small image is required."
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:210
#, python-format
msgid "Sorry, there is no more place !"
msgstr "Désolé mais il n'y a plus de place disponible !"
#. module: golem_activity_session
#: help:golem.activity.session,uos_id:0
msgid "Specify a unit of measure here if invoicing is made in another unit of measure than inventory. Keep empty to use the default unit of measure."
msgstr "Specify a unit of measure here if invoicing is made in another unit of measure than inventory. Keep empty to use the default unit of measure."
#. module: golem_activity_session
#: help:golem.activity.session,sale_ok:0
msgid "Specify if the product can be selected in a sales order line."
msgstr "Specify if the product can be selected in a sales order line."
#. module: golem_activity_session
#: field:golem.activity.session,date_start:0
msgid "Start date"
msgstr "Date de début"
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:192
#, python-format
msgid "Start of the period cannot be after end of the period."
msgstr "Le début de la période ne peut être antérieure à sa fin"
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:158
#, python-format
msgid "Start of the session cannot be after end of the session."
msgstr "Le début de la séance ne peut être après sa fin"
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:162
#, python-format
msgid "Start of the session cannot be before the start of activity date"
msgstr "Le début de la séance ne peut être fixé avant le début de l'activité"
#. module: golem_activity_session
#: field:golem.activity.session,hour_start:0
msgid "Start time"
msgstr "Heure de début"
#. module: golem_activity_session
#: field:golem.activity.session,state:0
msgid "Status"
msgstr "Statut"
#. module: golem_activity_session
#: field:golem.activity.session,message_summary:0
msgid "Summary"
msgstr "Résumé"
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:176
#: selection:golem.activity.session,weekday:0
#, python-format
msgid "Sunday"
msgstr "Dimanche"
#. module: golem_activity_session
#: field:golem.activity.session,seller_ids:0
msgid "Supplier"
msgstr "Supplier"
#. module: golem_activity_session
#: field:golem.activity.session,seller_delay:0
msgid "Supplier Lead Time"
msgstr "Supplier Lead Time"
#. module: golem_activity_session
#: field:golem.activity.session,seller_qty:0
msgid "Supplier Quantity"
msgstr "Supplier Quantity"
#. module: golem_activity_session
#: field:golem.activity.session,supplier_taxes_id:0
msgid "Supplier Taxes"
msgstr "Supplier Taxes"
#. module: golem_activity_session
#: help:golem.activity.session,weight:0
msgid "The gross weight in Kg."
msgstr "The gross weight in Kg."
#. module: golem_activity_session
#: help:golem.activity.session,weight_net:0
msgid "The net weight in Kg."
msgstr "The net weight in Kg."
#. module: golem_activity_session
#: help:golem.activity.session,volume:0
msgid "The volume in m3."
msgstr "The volume in m3."
#. module: golem_activity_session
#: help:golem.activity.session,property_account_expense:0
msgid "This account will be used for invoices instead of the default one to value expenses for the current product."
msgstr "This account will be used for invoices instead of the default one to value expenses for the current product."
#. module: golem_activity_session
#: help:golem.activity.session,property_account_income:0
msgid "This account will be used for invoices instead of the default one to value sales for the current product."
msgstr "This account will be used for invoices instead of the default one to value sales for the current product."
#. module: golem_activity_session
#: help:golem.activity.session,image:0
msgid "This field holds the image used as image for the activity."
msgstr "This field holds the image used as image for the activity."
#. module: golem_activity_session
#: help:golem.activity.session,seller_qty:0
msgid "This is minimum quantity to purchase from Main Supplier."
msgstr "This is minimum quantity to purchase from Main Supplier."
#. module: golem_activity_session
#: help:golem.activity.session,seller_delay:0
msgid "This is the average delay in days between the purchase order confirmation and the receipts for this product and for the default supplier. It is used by the scheduler to order requests based on reordering delays."
msgstr "This is the average delay in days between the purchase order confirmation and the receipts for this product and for the default supplier. It is used by the scheduler to order requests based on reordering delays."
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:173
#: selection:golem.activity.session,weekday:0
#, python-format
msgid "Thursday"
msgstr "Jeudi"
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:100
#: view:golem.activity.session:golem_activity_session.searches
#: selection:golem.activity.session,type_of:0
#, python-format
msgid "Training"
msgstr "Stage"
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.session_tree
msgid "True"
msgstr "Vrai"
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:171
#: selection:golem.activity.session,weekday:0
#, python-format
msgid "Tuesday"
msgstr "Mardi"
#. module: golem_activity_session
#: field:golem.activity.session,type_of:0
msgid "Type"
msgstr "Type"
#. module: golem_activity_session
#: field:golem.activity.session,uom_id:0
msgid "Unit of Measure"
msgstr "Unit of Measure"
#. module: golem_activity_session
#: field:golem.activity.session,uos_coeff:0
msgid "Unit of Measure -> UOS Coeff"
msgstr "Unit of Measure -> UOS Coeff"
#. module: golem_activity_session
#: field:golem.activity.session,uos_id:0
msgid "Unit of Sale"
msgstr "Unit of Sale"
#. module: golem_activity_session
#: field:golem.activity.session,message_unread:0
msgid "Unread Messages"
msgstr "Messages non lus"
#. module: golem_activity_session
#: field:golem.activity.session,volume:0
msgid "Volume"
msgstr "Volume"
#. module: golem_activity_session
#: field:golem.activity.session,warranty:0
msgid "Warranty"
msgstr "Garantie"
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:172
#: selection:golem.activity.session,weekday:0
#, python-format
msgid "Wednesday"
msgstr "Mercredi"
#. module: golem_activity_session
#: field:golem.activity.session,weekday:0
msgid "Weekday"
msgstr "Jour de la semaine"
#. module: golem_activity_session
#: help:golem.activity.session,is_recurrent:0
msgid "Work in progress"
msgstr "Travail en cours"
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:99
#: view:golem.activity.session:golem_activity_session.searches
#: selection:golem.activity.session,type_of:0
#, python-format
msgid "Workshop"
msgstr "Atelier"
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.view_form
msgid "describe the activity characteristics..."
msgstr "describe the activity characteristics..."

View File

@ -1,814 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * golem_activity_session
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 14:08+0000\n"
"PO-Revision-Date: 2016-09-09 14:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: golem_activity_session
#: field:golem.activity.session,product_variant_count:0
msgid "# of Product Variants"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,description_sale:0
msgid "A description of the Product that you want to communicate to your customers. This description will be copied to every Sale Order, Delivery Order and Customer Invoice/Refund"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,description_purchase:0
msgid "A description of the Product that you want to communicate to your suppliers. This description will be copied to every Purchase Order, Receipt and Supplier Invoice/Refund."
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,description:0
msgid "A precise description of the Product, used only for internal information purposes."
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,active:0
msgid "Active"
msgstr ""
#. module: golem_activity_session
#: view:golem.member:golem_activity_session.sessions_inscription
#: field:golem.member,activity_session_ids:0
msgid "Activities"
msgstr ""
#. module: golem_activity_session
#: model:ir.actions.act_window,name:golem_activity_session.category_action
msgid "Activities Categories"
msgstr ""
#. module: golem_activity_session
#: model:ir.ui.menu,name:golem_activity_session.session_menu_list
msgid "Activities sessions"
msgstr ""
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:98
#: view:golem.activity.session:golem_activity_session.searches
#: field:golem.activity.session,activity_id:0
#: selection:golem.activity.session,type_of:0
#, python-format
msgid "Activity"
msgstr ""
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:43
#, python-format
msgid "Activity Sessions"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,animator_id:0
msgid "Animator"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,list_price:0
msgid "Base price to compute the customer price. Sometimes called the catalog price."
msgstr ""
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.searches
msgid "By animator"
msgstr ""
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.searches
msgid "By category"
msgstr ""
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.searches
msgid "By type"
msgstr ""
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.searches
msgid "By weekday"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,rental:0
msgid "Can be Rent"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,sale_ok:0
msgid "Can be Sold"
msgstr ""
#. module: golem_activity_session
#: model:ir.ui.menu,name:golem_activity_session.activity_categ
msgid "Categories"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,membership:0
msgid "Check if the product is eligible for membership."
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,uos_coeff:0
msgid "Coefficient to convert default Unit of Measure to Unit of Sale\n"
" uos = uom * coeff"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,color:0
msgid "Color Index"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,company_id:0
msgid "Company"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,type:0
msgid "Consumable are product where you don't manage stock, a service is a non-material product provided by a company or an individual."
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,standard_price:0
msgid "Cost Price"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,standard_price:0
msgid "Cost price of the product template used for standard stock valuation in accounting and used as a base price on purchase orders. Expressed in the default unit of measure of the product."
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,create_uid:0
msgid "Created by"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,create_date:0
msgid "Created on"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,is_current:0
msgid "Current season?"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,taxes_id:0
msgid "Customer Taxes"
msgstr ""
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.session_tree
msgid "Date"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,membership_date_from:0
msgid "Date from which membership becomes active."
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,message_last_post:0
msgid "Date of the last message posted on the record."
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,membership_date_to:0
msgid "Date until which membership remains active."
msgstr ""
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.session_tree
msgid "Day"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,uom_id:0
msgid "Default Unit of Measure used for all stock operation."
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,uom_po_id:0
msgid "Default Unit of Measure used for purchase orders. It must be in the same category than the default unit of measure."
msgstr ""
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.searches
msgid "Default season"
msgstr ""
#. module: golem_activity_session
#: view:golem.member:golem_activity_session.sessions_inscription
msgid "Default season activities"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,description:0
msgid "Description"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,display_name:0
msgid "Display Name"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,ean13:0
msgid "EAN13 Barcode"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,date_end:0
msgid "End date"
msgstr ""
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:166
#, python-format
msgid "End of the session cannot be after the end of activity date"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,hour_end:0
msgid "End time"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,property_account_expense:0
msgid "Expense Account"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,message_follower_ids:0
msgid "Followers"
msgstr ""
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:174
#: selection:golem.activity.session,weekday:0
#, python-format
msgid "Friday"
msgstr ""
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.searches
msgid "Full"
msgstr ""
#. module: golem_activity_session
#: model:ir.model,name:golem_activity_session.model_golem_activity_session
msgid "GOLEM Activities Sessions"
msgstr ""
#. module: golem_activity_session
#: model:ir.actions.act_window,name:golem_activity_session.session_action_list
msgid "GOLEM Activities Sessions List"
msgstr ""
#. module: golem_activity_session
#: model:ir.model,name:golem_activity_session.model_golem_activity
msgid "GOLEM Activity"
msgstr ""
#. module: golem_activity_session
#: model:ir.model,name:golem_activity_session.model_golem_member
msgid "GOLEM Member"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,packaging_ids:0
msgid "Gives the different ways to package the same product. This has no impact on the picking order and is mainly used if you use the EDI module."
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,weight:0
msgid "Gross Weight"
msgstr ""
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.searches
msgid "Group By"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,message_summary:0
msgid "Holds the Chatter summary (number of messages, ...). This summary is directly in html format in order to be inserted in kanban views."
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,id:0
msgid "ID"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,message_unread:0
msgid "If checked new messages require your attention."
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,active:0
msgid "If unchecked, it will allow you to hide the product without removing it."
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,image:0
msgid "Image"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,property_account_income:0
msgid "Income Account"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,categ_id:0
msgid "Internal Category"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,default_code:0
msgid "Internal Reference"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,message_is_follower:0
msgid "Is a Follower"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,is_product_variant:0
msgid "Is product variant"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,is_recurrent:0
msgid "Is recurrent ?"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,message_last_post:0
msgid "Last Message Date"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,__last_update:0
msgid "Last Modified on"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,packaging_ids:0
msgid "Logistical Units"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,seller_id:0
msgid "Main Supplier"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,seller_id:0
msgid "Main Supplier who has highest priority in Supplier List."
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,mes_type:0
msgid "Measure Type"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,image_medium:0
msgid "Medium-sized image"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,image_medium:0
msgid "Medium-sized image of the product. It is automatically resized as a 128x128px image, with aspect ratio preserved, only when the image exceeds one of those sizes. Use this field in form views or some kanban views."
msgstr ""
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.view_form
#: field:golem.activity.session,member_ids:0
msgid "Members"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,membership:0
msgid "Membership"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,membership_date_to:0
msgid "Membership End Date"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,membership_date_from:0
msgid "Membership Start Date"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,message_ids:0
msgid "Messages"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,message_ids:0
msgid "Messages and communication history"
msgstr ""
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:170
#: selection:golem.activity.session,weekday:0
#, python-format
msgid "Monday"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,name:0
#: field:golem.activity.session,session_name:0
msgid "Name"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,weight_net:0
msgid "Net Weight"
msgstr ""
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:70
#: sql_constraint:golem.activity.session:0
#, python-format
msgid "Number of places cannot be negative."
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,places:0
msgid "Places"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,places_used:0
msgid "Places used"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,price:0
msgid "Price"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,pricelist_id:0
msgid "Pricelist"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,attribute_line_ids:0
msgid "Product Attributes"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,product_manager:0
msgid "Product Manager"
msgstr ""
#. module: golem_activity_session
#: model:ir.model,name:golem_activity_session.model_product_template
msgid "Product Template"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,type:0
msgid "Product Type"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,product_id:0
msgid "Product id"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,product_variant_ids:0
msgid "Products"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,lst_price:0
msgid "Public Price"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,description_purchase:0
msgid "Purchase Description"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,uom_po_id:0
msgid "Purchase Unit of Measure"
msgstr ""
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.session_tree
msgid "Remain"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,places_remain:0
msgid "Remaining places"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,description_sale:0
msgid "Sale Description"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,list_price:0
msgid "Sale Price"
msgstr ""
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:175
#: selection:golem.activity.session,weekday:0
#, python-format
msgid "Saturday"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,season_id:0
msgid "Season"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,categ_id:0
msgid "Select category for the current activity"
msgstr ""
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.view_form
msgid "Service"
msgstr ""
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.view_form
msgid "Session"
msgstr ""
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.view_form
msgid "Session Name"
msgstr ""
#. module: golem_activity_session
#: view:golem.activity:golem_activity_session.session_smart
#: field:golem.activity,session_count:0
msgid "Sessions"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,image_small:0
msgid "Small-sized image"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,image_small:0
msgid "Small-sized image of the product. It is automatically resized as a 64x64px image, with aspect ratio preserved. Use this field anywhere a small image is required."
msgstr ""
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:210
#, python-format
msgid "Sorry, there is no more place !"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,uos_id:0
msgid "Specify a unit of measure here if invoicing is made in another unit of measure than inventory. Keep empty to use the default unit of measure."
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,sale_ok:0
msgid "Specify if the product can be selected in a sales order line."
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,date_start:0
msgid "Start date"
msgstr ""
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:192
#, python-format
msgid "Start of the period cannot be after end of the period."
msgstr ""
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:158
#, python-format
msgid "Start of the session cannot be after end of the session."
msgstr ""
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:162
#, python-format
msgid "Start of the session cannot be before the start of activity date"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,hour_start:0
msgid "Start time"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,state:0
msgid "Status"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,message_summary:0
msgid "Summary"
msgstr ""
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:176
#: selection:golem.activity.session,weekday:0
#, python-format
msgid "Sunday"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,seller_ids:0
msgid "Supplier"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,seller_delay:0
msgid "Supplier Lead Time"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,seller_qty:0
msgid "Supplier Quantity"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,supplier_taxes_id:0
msgid "Supplier Taxes"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,weight:0
msgid "The gross weight in Kg."
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,weight_net:0
msgid "The net weight in Kg."
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,volume:0
msgid "The volume in m3."
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,property_account_expense:0
msgid "This account will be used for invoices instead of the default one to value expenses for the current product."
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,property_account_income:0
msgid "This account will be used for invoices instead of the default one to value sales for the current product."
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,image:0
msgid "This field holds the image used as image for the activity."
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,seller_qty:0
msgid "This is minimum quantity to purchase from Main Supplier."
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,seller_delay:0
msgid "This is the average delay in days between the purchase order confirmation and the receipts for this product and for the default supplier. It is used by the scheduler to order requests based on reordering delays."
msgstr ""
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:173
#: selection:golem.activity.session,weekday:0
#, python-format
msgid "Thursday"
msgstr ""
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:100
#: view:golem.activity.session:golem_activity_session.searches
#: selection:golem.activity.session,type_of:0
#, python-format
msgid "Training"
msgstr ""
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.session_tree
msgid "True"
msgstr ""
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:171
#: selection:golem.activity.session,weekday:0
#, python-format
msgid "Tuesday"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,type_of:0
msgid "Type"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,uom_id:0
msgid "Unit of Measure"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,uos_coeff:0
msgid "Unit of Measure -> UOS Coeff"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,uos_id:0
msgid "Unit of Sale"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,message_unread:0
msgid "Unread Messages"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,volume:0
msgid "Volume"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,warranty:0
msgid "Warranty"
msgstr ""
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:172
#: selection:golem.activity.session,weekday:0
#, python-format
msgid "Wednesday"
msgstr ""
#. module: golem_activity_session
#: field:golem.activity.session,weekday:0
msgid "Weekday"
msgstr ""
#. module: golem_activity_session
#: help:golem.activity.session,is_recurrent:0
msgid "Work in progress"
msgstr ""
#. module: golem_activity_session
#: code:addons/golem_activity_session/models/golem_activity_session.py:99
#: view:golem.activity.session:golem_activity_session.searches
#: selection:golem.activity.session,type_of:0
#, python-format
msgid "Workshop"
msgstr ""
#. module: golem_activity_session
#: view:golem.activity.session:golem_activity_session.view_form
msgid "describe the activity characteristics..."
msgstr ""

View File

@ -1,18 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2016 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/>.
from . import golem_activity_session

View File

@ -1,174 +0,0 @@
# -*- coding: utf-8 -*-
# copyright 2016 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/>.
from openerp import models, fields, api, _
class GolemActivity(models.Model):
_inherit = 'golem.activity'
session_count = fields.Integer('Sessions',
compute='_compute_session_count')
@api.one
def _compute_session_count(self):
dmn = [('activity_id', '=', self.id)]
cnt = self.env['golem.activity.session'].search_count(dmn)
self.session_count = cnt
@api.multi
def button_session(self):
self.ensure_one()
return {'name': _('Activity Sessions'),
'type': 'ir.actions.act_window',
'res_model': 'golem.activity.session',
'view_mode': 'tree,form',
'context': {'default_activity_id': self.id,
'default_animator_id': self.animator_id.id},
'domain': [('activity_id', '=', self.id)]}
class ProductTemplate(models.Model):
_inherit = 'product.template'
# Make default service for type
type = fields.Selection(default='service')
# Copy the default code
default_code = fields.Char(copy=True)
class GolemActivitySession(models.Model):
_name = 'golem.activity.session'
_description = 'GOLEM Activities Sessions'
_inherit = 'mail.thread'
_inherits = {'product.template': 'product_id'}
_rec_name = 'session_name'
product_id = fields.Many2one('product.template', required=True,
ondelete='cascade')
@api.model
def _default_name(self):
""" Default name to activity name """
d_aid = self.env.context.get('default_activity_id')
aobj = self.env['golem.activity']
return aobj.browse([d_aid]).name if d_aid else None
image = fields.Binary(related='activity_id.image')
categ_id = fields.Many2one(related='activity_id.categ_id', readonly=True)
session_name = fields.Char('Name', compute='_compute_full_name',
store=True, index=True)
@api.one
@api.depends('name', 'default_code')
def _compute_full_name(self):
""" Provide a better displayed name """
session_name = unicode(self.name)
if self.default_code:
session_name = u'[{}] {}'.format(self.default_code, session_name)
self.session_name = session_name
type_of = fields.Selection([('activity', _('Activity')),
('workshop', _('Workshop')),
('training', _('Training'))],
default='activity', index=True, string='Type')
@api.onchange('type_of')
def onchange_type_of(self):
for s in self:
if s.type_of != 'activity':
s.is_recurrent = False
else:
s.is_recurrent = True
# TODO: to link with calendar.event
activity_id = fields.Many2one('golem.activity', string='Activity',
required=True)
animator_id = fields.Many2one('res.partner', string='Animator')
is_current = fields.Boolean('Current season?',
related='activity_id.is_current')
season_id = fields.Many2one(string='Season',
related='activity_id.season_id')
@api.onchange('activity_id')
def onchange_activity_id(self):
""" Sets session name and animator as activity's one if empty """
for s in self:
if not s.name:
s.name = s.activity_id.name
if not s.default_code:
s.default_code = s.activity_id.default_code
if not s.animator_id:
s.animator_id = s.activity_id.animator_id
is_recurrent = fields.Boolean('Is recurrent ?', default=True,
help='Work in progress')
date_start = fields.Datetime('Start date')
date_end = fields.Datetime('End date')
@api.onchange('date_start')
def onchange_date_start(self):
""" Sets end date to start date if no start date """
for s in self:
if not s.date_end:
s.date_end = s.date_start
@api.constrains('date_start', 'date_end')
def _check_date_period(self):
""" Check if end date if after start date and if dates are included
into main activity period"""
for s in self:
if not s.is_recurrent:
if s.date_start > s.date_end:
emsg = _('Start of the session cannot be after end of the '
'session.')
raise models.ValidationError(emsg)
if s.date_start < s.activity_id.date_start:
emsg = _('Start of the session cannot be before the start '
'of activity date')
raise models.ValidationError(emsg)
if s.date_end > s.activity_id.date_end:
emsg = _('End of the session cannot be after the end of '
'activity date')
raise models.ValidationError(emsg)
weekday = fields.Selection([('mon', _('Monday')),
('tue', _('Tuesday')),
('wed', _('Wednesday')),
('thu', _('Thursday')),
('fri', _('Friday')),
('sat', _('Saturday')),
('sun', _('Sunday'))])
hour_start = fields.Float('Start time')
hour_end = fields.Float('End time')
@api.onchange('hour_start')
def onchange_hour_start(self):
""" Sets end hour to start hour if no start hour """
for s in self:
if s.hour_start and not s.hour_end:
s.hour_end = s.hour_start + 1
@api.constrains('hour_start', 'hour_end')
def _check_hour_period(self):
""" Check if end hour if after start hour """
for s in self:
if s.hour_start > s.hour_end:
raise models.ValidationError(_('Start of the period cannot be '
'after end of the period.'))

View File

@ -1,5 +0,0 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_golem_activity_session_user,Access GOLEM Activity Session User,model_golem_activity_session,golem_base.group_golem_user,1,1,1,1
access_golem_product_template_user,Access GOLEM Product Template User,model_product_template,golem_base.group_golem_user,1,1,1,1
access_golem_product_product_user,Access GOLEM Product Product User,product.model_product_product,golem_base.group_golem_user,1,1,1,1
access_golem_product_pricehist_user,Access GOLEM Product Price History User,product.model_product_price_history,golem_base.group_golem_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_golem_activity_session_user Access GOLEM Activity Session User model_golem_activity_session golem_base.group_golem_user 1 1 1 1
3 access_golem_product_template_user Access GOLEM Product Template User model_product_template golem_base.group_golem_user 1 1 1 1
4 access_golem_product_product_user Access GOLEM Product Product User product.model_product_product golem_base.group_golem_user 1 1 1 1
5 access_golem_product_pricehist_user Access GOLEM Product Price History User product.model_product_price_history golem_base.group_golem_user 1 1 1 1

View File

@ -1,18 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2016 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/>.
from . import test_golem_activity_session

View File

@ -1,85 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2016 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/>.
from openerp.tests.common import TransactionCase
from openerp.models import ValidationError
from psycopg2 import IntegrityError
class GolemActivitySessionTestCase(TransactionCase):
def setUp(self):
super(GolemActivitySessionTestCase, self).setUp()
season_model = self.env['golem.season'].sudo()
season_data = {'name': u'Current', 'date_start': '2010-01-01',
'date_end': '2010-12-31'}
season1 = season_model.create(season_data)
activity_model = self.env['golem.activity'].sudo()
categ = self.ref('golem_activity.golem_product_category_activities')
self.activity1 = activity_model.create({'name': 'activity1',
'default_code': 'A1',
'categ_id': categ,
'season_id': season1.id})
self.activity1.onchange_season_dates()
self.session_model = self.env['golem.activity.session'].sudo()
sdata = {'name': 's1', 'activity_id': self.activity1.id}
self.session1 = self.session_model.create(sdata)
self.session1.onchange_activity_id()
self.member_model = self.env['golem.member'].sudo()
def test_session_name(self):
""" Test activity session name computing """
self.assertEqual(self.session1.default_code,
self.activity1.default_code)
self.assertEqual(self.session1.session_name, u'[A1] s1')
def test_check_period(self):
""" Test periods constraints """
self.session1.write({'is_recurrent': False, 'date_start': '2010-01-10',
'date_end': '2010-01-31'})
# Start after end
with self.assertRaises(ValidationError):
self.session1.date_start = '2011-01-15'
# Start before activity start
with self.assertRaises(ValidationError):
self.session1.date_start = '2009-01-15'
# End after activity end
with self.assertRaises(ValidationError):
self.session1.date_end = '2012-01-15'
def test_session_places_constraint(self):
""" Test that you cannot fix negative places """
try:
self.session1.places = -2
except IntegrityError as e:
self.assertIn('violates check constraint', e.args[0])
self.cr.rollback()
def test_session_places(self):
""" Test computed places fields """
self.session1.places = 1
self.assertEqual(self.session1.places_remain, 1)
self.assertEqual(self.session1.places_used, 0)
m1 = self.member_model.create({'lastname': 'DOE', 'firstname': 'Joe'})
m2 = self.member_model.create({'lastname': 'DOE', 'firstname': 'Jen'})
# Member subscription
self.session1.member_ids = [m1.id]
self.assertEqual(self.session1.places_remain, 0)
self.assertEqual(self.session1.places_used, 1)
# No place anymore
with self.assertRaises(ValidationError):
self.session1.member_ids = [m1.id, m2.id]

View File

@ -1,183 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2016 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/>.
-->
<openerp>
<data>
<!-- Form -->
<record model="ir.ui.view" id="session_smart">
<field name="name">Add sessions management into smart button</field>
<field name="model">golem.activity</field>
<field name="inherit_id" ref="golem_activity.view_form" />
<field name="arch" type="xml">
<div name="buttons" position="inside">
<button class="oe_inline oe_stat_button" type="object"
name="button_session" icon="fa-list">
<field string="Sessions" name="session_count"
widget="statinfo" />
</button>
</div>
</field>
</record>
<record id="view_form" model="ir.ui.view">
<field name="name">GOLEM Activity Sessions Form</field>
<field name="model">golem.activity.session</field>
<field name="arch" type="xml">
<form>
<sheet>
<div class="oe_title" style="width: 390px;">
<label class="oe_edit_only" for="name" string="Session Name"/>
<h1><field name="name" class="oe_inline"/></h1>
</div>
<group string="Session">
<group>
<field name="activity_id" />
<field name="animator_id" />
<field name="type_of" />
</group>
<group>
<field name="is_recurrent" />
<field name="weekday"
attrs="{'invisible': [('is_recurrent', '=', False)]}" />
<field name="hour_start" widget="float_time"
attrs="{'invisible': [('is_recurrent', '=', False)]}" />
<field name="hour_end" widget="float_time"
attrs="{'invisible': [('is_recurrent', '=', False)]}" />
<field name="date_start"
attrs="{'invisible': [('is_recurrent', '=', True)]}" />
<field name="date_end"
attrs="{'invisible': [('is_recurrent', '=', True)]}" />
</group>
</group>
<notebook>
<page string="Service">
<group>
<group>
<field name="default_code" />
<field name="list_price" />
<field name="description"
placeholder="describe the activity characteristics..."/>
</group>
<group>
<field name="type" />
<field name="categ_id" />
<field name="active" />
</group>
</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>
<!-- Tree -->
<record id="session_tree" model="ir.ui.view">
<field name="name">Session list</field>
<field name="model">golem.activity.session</field>
<field name="arch" type="xml">
<tree>
<field name="is_recurrent" invisible="True" />
<field name="season_id" />
<field name="type_of" />
<field name="session_name" />
<field name="weekday" string="Day"
attrs="{'invisible': [('is_recurrent', '=', False)]}" />
<field name="date_start" string="Date"
attrs="{'invisible': [('is_recurrent', '=', True)]}" />
<field name="list_price" sum="True" />
</tree>
</field>
</record>
<!-- Calendars -->
<record id="calendar" model="ir.ui.view">
<field name="name">Activity sessions calendar view</field>
<field name="model">golem.activity.session</field>
<field name="arch" type="xml">
<calendar date_start="date_start" date_end="date_end"
color="categ_id" display="[name]">
<field name="name" />
</calendar>
</field>
</record>
<!-- Searches -->
<record id="searches" model="ir.ui.view">
<field name="name">GOLEM Activity Sessions Searches</field>
<field name="model">golem.activity.session</field>
<field name="arch" type="xml">
<search>
<field name="session_name" />
<field name="activity_id" widget="many2one" />
<field name="animator_id" widget="many2one" />
<field name="categ_id" widget="many2one" />
<field name="season_id" widget="many2one" />
<filter name="season_default" string="Default season"
domain="[('is_current', '=', True)]" />
<filter name="type_of_activity" string="Activity"
domain="[('type_of', '=', 'activity')]" />
<filter name="type_of_workshop" string="Workshop"
domain="[('type_of', '=', 'workshop')]" />
<filter name="type_of_training" string="Training"
domain="[('type_of', '=', 'training')]" />
<group string="Group By">
<filter name="group_type_of" string="By type"
context="{'group_by': 'type_of'}" />
<filter name="group_category" string="By category"
context="{'group_by': 'categ_id'}"/>
<filter name="group_weekday" string="By weekday"
context="{'group_by': 'weekday'}" />
<filter name="group_animator" string="By animator"
context="{'group_by': 'animator_id'}" />
</group>
</search>
</field>
</record>
<!-- Actions -->
<record id="session_action_list" model="ir.actions.act_window">
<field name="name">GOLEM Activities Sessions List</field>
<field name="res_model">golem.activity.session</field>
<field name="view_mode">tree,form,calendar</field>
<field name="context">{'search_default_season_default': True}</field>
<!--<field name="view_id" ref="product.product_template_kanban_view"/>-->
</record>
<record id="category_action" model="ir.actions.act_window">
<field name="name">Activities Categories</field>
<field name="res_model">product.category</field>
<field name="view_type">form</field>
<field name="view_id" ref="product.product_category_list_view" />
</record>
<!-- Menus -->
<menuitem id="session_menu_list" name="Activities sessions"
parent="golem_activity.activity_menu" action="session_action_list"
groups="golem_base.group_golem_user"
sequence="10" />
<menuitem id="activity_categ" name="Categories"
parent="golem_activity.activity_menu" sequence="20"
groups="golem_base.group_golem_manager"
action="category_action" />
</data>
</openerp>