[MERGE] trunk-portal_public_layout-abo (improve portal views, access rights and ir rules)

bzr revid: abo@openerp.com-20120731133508-n2xr4jf1jm4j51ep
This commit is contained in:
Antonin Bourguignon
2012-07-31 15:35:08 +02:00
101 changed files with 2912 additions and 1256 deletions
+2 -2
View File
@@ -32,7 +32,7 @@ class account_cashbox_line(osv.osv):
_name = 'account.cashbox.line'
_description = 'CashBox Line'
_rec_name = 'number'
_rec_name = 'pieces'
def _sub_total(self, cr, uid, ids, name, arg, context=None):
@@ -325,7 +325,7 @@ account_journal()
class account_journal_cashbox_line(osv.osv):
_name = 'account.journal.cashbox.line'
_rec_name = 'value'
_rec_name = 'pieces'
_columns = {
'pieces': fields.float('Values', digits_compute=dp.get_precision('Account')),
'journal_id' : fields.many2one('account.journal', 'Journal', required=True, select=1),
+1 -1
View File
@@ -16,7 +16,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-30 04:55+0000\n"
"X-Launchpad-Export-Date: 2012-07-31 04:58+0000\n"
"X-Generator: Launchpad (build 15702)\n"
#. module: account
+1 -1
View File
@@ -24,7 +24,7 @@
"author" : "OpenERP SA",
"category": 'Accounting & Finance',
"sequence": 10,
"summary": "Accounts Moves, Journals, Chart of Accounts",
"summary": "Financial and Analytic Accounting",
"description": """
Accounting Access Rights.
=========================
@@ -1,22 +1,19 @@
<?xml version="1.0"?>
<openerp>
<data>
<data>
#---------------------------------------------------------
# Fiscal Year
#---------------------------------------------------------
<record model="ir.ui.view" id="view_account_invoice_asset_form">
<field name="name">account.invoice.line.form</field>
<field name="model">account.invoice.line</field>
<field name="inherit_id" ref="account.view_invoice_line_form"/>
<field name="type">form</field>
<field name="arch" type="xml">
<field name="account_id" position="after">
<field name="asset_category_id"/>
<!-- Fiscal Year -->
<record model="ir.ui.view" id="view_account_invoice_asset_form">
<field name="name">account.invoice.line.form</field>
<field name="model">account.invoice.line</field>
<field name="inherit_id" ref="account.view_invoice_line_form"/>
<field name="type">form</field>
<field name="arch" type="xml">
<field name="account_id" position="after">
<field name="asset_category_id"/>
</field>
</field>
</field>
</record>
</record>
</data>
</data>
</openerp>
+1 -1
View File
@@ -14,7 +14,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-30 04:55+0000\n"
"X-Launchpad-Export-Date: 2012-07-31 04:58+0000\n"
"X-Generator: Launchpad (build 15702)\n"
#. module: account_asset
+1 -1
View File
@@ -23,7 +23,7 @@
"name" : "eInvoicing & Payments",
"version" : "1.0",
"author" : 'OpenERP SA',
"summary": 'Supplier & Customer Invoices, Payments',
"summary": 'Send Invoices and Track Payments',
"description": """
eInvoicing & Payments module manage all Voucher Entries such as "Reconciliation Entries", "Adjustment Entries", "Closing or Opening Entries" for Sales, Purchase, Bank, Cash, Expense, Contra.
==============================================================================================================================================================================================
@@ -22,7 +22,7 @@
<field name="journal_id" widget="selection" context="{'journal_id': self, 'set_visible':False}" domain="[('type','in',('bank','cash'))]"/>
<field name="period_id"/>
</group>
<newline/>
<newline/>
<group expand="0" string="Group By...">
<filter string="Customer" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'journal_id'}"/>
@@ -54,7 +54,7 @@
<field name="journal_id" widget="selection" context="{'journal_id': self, 'set_visible':False}" domain="[('type','in',('bank','cash'))]"/>
<field name="period_id"/>
</group>
<newline/>
<newline/>
<group expand="0" string="Group By...">
<filter string="Supplier" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'journal_id'}"/>
@@ -72,7 +72,7 @@
<field name="arch" type="xml">
<form string="Bill Payment" version="7.0">
<group col="6">
<field name="partner_id" required="1" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date, context)" string="Supplier" context="{'default_customer': 0, 'search_default_supplier': 1, 'default_supplier': 1, 'invoice_currency': currency_id}" />
<field name="partner_id" required="1" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date, context)" string="Supplier" context="{'default_customer': 0, 'search_default_supplier': 1, 'default_supplier': 1, 'invoice_currency': currency_id}"/>
<field name="amount" on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/>
<field name="journal_id"
domain="[('type','in',['bank', 'cash'])]"
@@ -94,8 +94,7 @@
<tree string="Open Supplier Journal Entries" editable="bottom" colors="gray:amount==0">
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
on_change="onchange_move_line_id(move_line_id)"
domain="[('account_id.type','=','payable'), ('reconcile_id','=', False), ('partner_id','=',parent.partner_id)]"
/>
domain="[('account_id.type','=','payable'), ('reconcile_id','=', False), ('partner_id','=',parent.partner_id)]"/>
<field name="account_id" domain="[('type','=','payable')]"/>
<field name="date_original" readonly="1"/>
<field name="date_due" readonly="1"/>
@@ -108,8 +107,7 @@
<tree string="Open Customer Journal Entries" editable="bottom" colors="gray:amount==0">
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
on_change="onchange_move_line_id(move_line_id)"
domain="[('account_id.type','=','payable'), ('reconcile_id','=', False), ('partner_id','=',parent.partner_id)]"
/>
domain="[('account_id.type','=','payable'), ('reconcile_id','=', False), ('partner_id','=',parent.partner_id)]"/>
<field name="account_id" domain="[('type','=','payable')]"/>
<field name="date_original" readonly="1"/>
<field name="date_due" readonly="1"/>
@@ -156,11 +154,11 @@
<group>
<group>
<field name="partner_id" required="1" invisible="context.get('line_type', False)" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date, context)" context="{'invoice_currency':currency_id, 'default_customer': 0, 'search_default_supplier': 1, 'default_supplier': 1}" string="Supplier"/>
<label for="amount" string="Amount"/>
<div>
<label for="amount" string="Amount"/>
<div>
<field name="amount" invisible="context.get('line_type', False)" on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)" class="oe_inline"/>
<field name="currency_id" class="oe_inline"/>
</div>
</div>
<field name="journal_id"
domain="[('type','in',['bank', 'cash'])]"
invisible="context.get('line_type', False)"
@@ -182,8 +180,7 @@
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
on_change="onchange_move_line_id(move_line_id)"
domain="[('account_id.type','=','payable'), ('reconcile_id','=', False), ('partner_id','=',parent.partner_id)]"
required="1"
/>
required="1"/>
<field name="account_id" groups="base.group_no_one" domain="[('type','=','payable')]"/>
<field name="date_original" readonly="1"/>
<field name="date_due" readonly="1"/>
@@ -198,8 +195,7 @@
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
on_change="onchange_move_line_id(move_line_id)"
domain="[('account_id.type','=','payable'), ('reconcile_id','=', False), ('partner_id','=',parent.partner_id)]"
required="1"
/>
required="1"/>
<field name="account_id" groups="base.group_no_one" domain="[('type','=','payable')]"/>
<field name="date_original" readonly="1"/>
<field name="date_due" readonly="1"/>
@@ -278,7 +274,7 @@
<field name="view_id" eval="False"/>
<field name="search_view_id" ref="view_voucher_filter_vendor_pay"/>
<field name="target">current</field>
<field name="help">Click on "Create" to register a supplier payment.
<field name="help">Click on "Create" to register a supplier payment.
&lt;p&gt;
Track payments you do to your supplier and amounts you pay.</field>
</record>
@@ -316,14 +312,13 @@
<group>
<group>
<field name="partner_id" domain="[('customer','=',True)]" required="1" invisible="context.get('line_type', False)" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date, context)" string="Customer" context="{'search_default_customer': 1}"/>
<label for="amount"
string="Paid Amount"/>
<div>
<label for="amount" string="Paid Amount"/>
<div>
<field name="amount" class="oe_inline"
invisible="context.get('line_type', False)"
on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/>
<field name="currency_id" class="oe_inline"/>
</div>
</div>
<field name="journal_id"
domain="[('type','in',['bank', 'cash'])]"
@@ -347,7 +342,7 @@
</group>
<notebook>
<page string="Payment Information">
<page string="Payment Information" groups="base.group_user">
<field name="line_cr_ids" context="{'journal_id':journal_id, 'type':type, 'partner_id':partner_id}" on_change="onchange_line_ids(line_dr_ids, line_cr_ids, amount, currency_id, context)">
<tree string="Invoices and outstanding transactions" editable="bottom" colors="gray:amount==0">
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
@@ -369,8 +364,7 @@
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
on_change="onchange_move_line_id(move_line_id)"
domain="[('account_id.type','in',('receivable','payable')), ('reconcile_id','=', False), ('partner_id','=',parent.partner_id)]"
required="1"
/>
required="1"/>
<field name="account_id" groups="base.group_no_one" domain="[('type','=','receivable')]"/>
<field name="date_original" readonly="1"/>
<field name="date_due" readonly="1"/>
@@ -409,21 +403,21 @@
<field name="audit"/>
</group>
<field name="move_ids" readonly="1">
<tree string="Journal Items">
<field name="move_id"/>
<field name="ref"/>
<field name="date"/>
<field name="statement_id"/>
<field name="partner_id"/>
<field name="account_id"/>
<field name="name"/>
<field name="debit"/>
<field name="credit"/>
<field name="state"/>
<field name="reconcile_id"/>
<field name="amount_currency"/>
<field name="currency_id"/>
</tree>
<tree string="Journal Items">
<field name="move_id"/>
<field name="ref"/>
<field name="date"/>
<field name="statement_id"/>
<field name="partner_id"/>
<field name="account_id"/>
<field name="name"/>
<field name="debit"/>
<field name="credit"/>
<field name="state"/>
<field name="reconcile_id"/>
<field name="amount_currency"/>
<field name="currency_id"/>
</tree>
</field>
</page>
</notebook>
@@ -464,5 +458,6 @@
<menuitem action="action_vendor_receipt" icon="STOCK_JUSTIFY_FILL" sequence="12"
id="menu_action_vendor_receipt" parent="account.menu_finance_receivables"/>
</data>
</openerp>
@@ -5,6 +5,7 @@
<!-- Top menu item -->
<menuitem name="Association"
id="base.menu_association"
groups="base.group_user"
sequence="70"/>
<menuitem name="Configuration" id="base.menu_event_config" parent="base.menu_association" sequence="30"/>
<menuitem name="Association" id="base.menu_report_association" parent="base.menu_reporting" sequence="23"/>
+1 -1
View File
@@ -25,7 +25,7 @@
'version': '1.0',
'category': 'Customer Relationship Management',
"sequence": 2,
"summary": "Agenda, Leads, Opportunities",
"summary": "Leads, Opportunities, Agenda",
'description': """
The generic OpenERP Customer Relationship Management.
=====================================================
+3 -3
View File
@@ -15,7 +15,7 @@
</tree>
</field>
</record>
<record id="view_delivery_carrier_form" model="ir.ui.view">
<field name="name">delivery.carrier.form</field>
<field name="model">delivery.carrier</field>
@@ -90,7 +90,7 @@
</form>
</field>
</record>
<record id="action_delivery_carrier_form" model="ir.actions.act_window">
<field name="name">Delivery Method</field>
<field name="type">ir.actions.act_window</field>
@@ -299,7 +299,7 @@
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_out_form"/>
<field name="arch" type="xml">
<xpath expr="/form/header/button[@string='Create Invoice/Refund']" position="after">
<xpath expr="/form/header//button[@string='Create Invoice/Refund']" position="after">
<button name="%(report_shipping)d" string="Delivery Order" states="done" type="action" icon="gtk-print"/>
</xpath>
</field>
+1 -1
View File
@@ -25,7 +25,7 @@
'name': 'Events Organisation',
'version': '0.1',
'category': 'Tools',
'summary': 'Invitations, Subscriptions',
'summary': 'For Trainings, Conferences & Meetings',
'description': """
Organization and management of Events.
======================================
+12 -11
View File
@@ -23,6 +23,7 @@ import time
from osv import fields, osv
from tools.translate import _
import decimal_precision as dp
from openerp import SUPERUSER_ID
class event_type(osv.osv):
""" Event Type """
@@ -159,7 +160,7 @@ class event_event(osv.osv):
elif field == 'register_prospect':
number = reg_draft
elif field == 'register_avail':
#the number of ticket is unlimited if the event.register_max field is not set.
#the number of ticket is unlimited if the event.register_max field is not set.
#In that cas we arbitrary set it to 9999, it is used in the kanban view to special case the display of the 'subscribe' button
number = event.register_max - reg_open if event.register_max != 0 else 9999
res[event.id][field] = number
@@ -178,7 +179,7 @@ class event_event(osv.osv):
if reg.state in ('open','done'):
res[event.id]= True
continue
return res
return res
_columns = {
'name': fields.char('Name', size=64, required=True, translate=True, readonly=False, states={'done': [('readonly', True)]}),
@@ -189,7 +190,7 @@ class event_event(osv.osv):
'register_current': fields.function(_get_register, string='Confirmed Registrations', multi='register_numbers'),
'register_avail': fields.function(_get_register, string='Available Registrations', multi='register_numbers',type='integer'),
'register_prospect': fields.function(_get_register, string='Unconfirmed Registrations', multi='register_numbers'),
'register_attended': fields.function(_get_register, string='# of Participations', multi='register_numbers'),
'register_attended': fields.function(_get_register, string='# of Participations', multi='register_numbers'),
'registration_ids': fields.one2many('event.registration', 'event_id', 'Registrations', readonly=False, states={'done': [('readonly', True)]}),
'date_begin': fields.datetime('Start Date', required=True, readonly=True, states={'draft': [('readonly', False)]}),
'date_end': fields.datetime('End Date', required=True, readonly=True, states={'draft': [('readonly', False)]}),
@@ -227,18 +228,18 @@ class event_event(osv.osv):
self.check_registration_limits_before(cr, uid, ids, num_of_seats, context=context)
user = user_pool.browse(cr, uid, uid, context=context)
curr_reg_ids = register_pool.search(cr, uid, [('user_id', '=', user.id), ('event_id', '=' , ids[0])])
#the subscription is done with UID = 1 because in case we share the kanban view, we want anyone to be able to subscribe
#the subscription is done with SUPERUSER_ID because in case we share the kanban view, we want anyone to be able to subscribe
if not curr_reg_ids:
curr_reg_ids = [register_pool.create(cr, 1, {'event_id': ids[0] ,'email': user.user_email, 'name':user.name, 'user_id': user.id, 'nb_register': num_of_seats})]
curr_reg_ids = [register_pool.create(cr, SUPERUSER_ID, {'event_id': ids[0] ,'email': user.user_email, 'name':user.name, 'user_id': user.id, 'nb_register': num_of_seats})]
else:
register_pool.write(cr, uid, curr_reg_ids, {'nb_register': num_of_seats}, context=context)
return register_pool.confirm_registration(cr, 1, curr_reg_ids, context=context)
return register_pool.confirm_registration(cr, SUPERUSER_ID, curr_reg_ids, context=context)
def unsubscribe_to_event(self, cr, uid, ids, context=None):
register_pool = self.pool.get('event.registration')
#the unsubscription is done with UID = 1 because in case we share the kanban view, we want anyone to be able to unsubscribe
curr_reg_ids = register_pool.search(cr, 1, [('user_id', '=', uid), ('event_id', '=', ids[0])])
return register_pool.button_reg_cancel(cr, 1, curr_reg_ids, context=context)
#the unsubscription is done with SUPERUSER_ID because in case we share the kanban view, we want anyone to be able to unsubscribe
curr_reg_ids = register_pool.search(cr, SUPERUSER_ID, [('user_id', '=', uid), ('event_id', '=', ids[0])])
return register_pool.button_reg_cancel(cr, SUPERUSER_ID, curr_reg_ids, context=context)
def _check_closing_date(self, cr, uid, ids, context=None):
for event in self.browse(cr, uid, ids, context=context):
@@ -260,7 +261,7 @@ class event_event(osv.osv):
'register_max': type_info.default_registration_max,
}
return {'value': dic}
# ----------------------------------------
# OpenChatter methods and notifications
# ----------------------------------------
@@ -415,7 +416,7 @@ class event_registration(osv.osv):
return {}
event_obj = self.pool.get('event.event')
data_event = event_obj.browse(cr, uid, event_id, context=context)
return {'value':
return {'value':
{'event_begin_date': data_event.date_begin,
'event_end_date': data_event.date_end,
'company_id': data_event.company_id and data_event.company_id.id or False,
+25 -22
View File
@@ -1,6 +1,7 @@
<?xml version="1.0"?>
<openerp>
<data>
<act_window
id="act_event_list_register_event"
name="Registration"
@@ -13,6 +14,7 @@
<!-- Top menu item -->
<menuitem name="Events"
id="event_main_menu"
groups="base.group_user"
sequence="80"/>
<menuitem name="Events Organisation" id="base.menu_event_main" parent="event_main_menu"/>
@@ -102,10 +104,12 @@
<field name="arch" type="xml">
<form string="Events" version="7.0">
<header>
<button string="Confirm Event" name="button_confirm" states="draft" type="object" class="oe_highlight"/>
<button string="Event Ended" name="button_done" states="confirm" type="object" class="oe_highlight"/>
<button string="Set To Draft" name="button_draft" states="cancel,done" type="object" />
<button string="Cancel Event" name="button_cancel" states="draft,confirm" type="object"/>
<span groups="base.user_group">
<button string="Confirm Event" name="button_confirm" states="draft" type="object" class="oe_highlight"/>
<button string="Event Ended" name="button_done" states="confirm" type="object" class="oe_highlight"/>
<button string="Set To Draft" name="button_draft" states="cancel,done" type="object" />
<button string="Cancel Event" name="button_cancel" states="draft,confirm" type="object"/>
</span>
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,done"/>
</header>
<sheet>
@@ -126,20 +130,20 @@
<field name="address_id" widget="many2one_address_google_map" widget_option="{'placeholder':'.oe_google_map'}"/>
<field name="street" placeholder="Street..."/>
<div>
<field name="zip" class="oe_inline" placeholder="Zip"/>
<field name="city" class="oe_inline" placeholder="City"/>
<field name="zip" class="oe_inline" placeholder="Zip"/>
<field name="city" class="oe_inline" placeholder="City"/>
</div>
</div>
</group>
<group>
<field name="type" on_change="onchange_event_type(type,context)"/>
<field name="register_min"/>
<field name="register_max"/>
<label for="register_current" string="Current Registrations"/>
<div>
Confirmed: <field name="register_current" class="oe_inline"/>, Unconfirmed: <field name="register_prospect" class="oe_inline"/>
</div>
</group>
<field name="type" on_change="onchange_event_type(type,context)"/>
<field name="register_min"/>
<field name="register_max"/>
<label for="register_current" string="Current Registrations" groups="base.group_user"/>
<div groups="base.group_user">
Confirmed: <field name="register_current" class="oe_inline"/>, Unconfirmed: <field name="register_prospect" class="oe_inline"/>
</div>
</group>
</group>
</div>
<!-- <div class="oe_right" style="height: 200px"></div> -->
@@ -474,8 +478,8 @@
<div>
<field name="email" class="oe_inline"/>
<button class="oe_inline oe_right" string="Send Email"
name="%(mail.action_email_compose_message_wizard)d"
icon="terp-mail-message-new" context= '{"default_email_to":email}' type="action"/>
name="%(mail.action_email_compose_message_wizard)d"
icon="terp-mail-message-new" context= '{"default_email_to":email}' type="action"/>
</div>
</group>
<group>
@@ -541,9 +545,9 @@
<filter icon="terp-check" string="New" name="draft" domain="[('state','=','draft')]" help="Registrations in unconfirmed state"/>
<filter icon="terp-camera_test" string="Confirmed" domain="[('state','=','open')]" help="Confirmed registrations"/>
<filter icon="terp-personal"
string="My Registrations"
help="My Registrations"
domain="[('user_id','=',uid)]"/>
string="My Registrations"
help="My Registrations"
domain="[('user_id','=',uid)]"/>
<separator orientation="vertical"/>
<field name="event_id" widget="selection"/>
<field name="user_id"/>
@@ -571,12 +575,11 @@
<field name="search_view_id" ref="view_registration_search"/>
</record>view_
<menuitem
name="Registrations"
<menuitem name="Registrations"
id="menu_action_registration" parent="base.menu_event_main"
action="action_registration" groups="event.group_event_manager,event.group_event_user"/>
<menuitem name="Reporting" id="base.menu_report_association" parent="event_main_menu" sequence="20"/>
</data>
</openerp>
+33 -32
View File
@@ -1,45 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="0">
<data>
<record model="ir.module.category" id="module_category_event_management">
<record model="ir.module.category" id="module_category_event_management">
<field name="name">Event</field>
<field name="description">Helps you manage your Events.</field>
<field name="sequence">3</field>
</record>
<record id="group_event_user" model="res.groups">
<field name="name">User</field>
<field name="category_id" ref="module_category_event_management"/>
</record>
<record id="group_event_user" model="res.groups">
<field name="name">User</field>
<field name="category_id" ref="module_category_event_management"/>
</record>
<record id="group_event_manager" model="res.groups">
<field name="name">Manager</field>
<field name="category_id" ref="module_category_event_management"/>
<field name="implied_ids" eval="[(4, ref('group_event_user'))]"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
<record id="group_event_manager" model="res.groups">
<field name="name">Manager</field>
<field name="category_id" ref="module_category_event_management"/>
<field name="implied_ids" eval="[(4, ref('group_event_user'))]"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
<!-- Multi - Company Rules -->
<!-- Multi - Company Rules -->
<record model="ir.rule" id="event_event_comp_rule">
<field name="name">Event multi-company</field>
<field name="model_id" ref="model_event_event"/>
<field name="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record model="ir.rule" id="event_event_comp_rule">
<field name="name">Event multi-company</field>
<field name="model_id" ref="model_event_event"/>
<field name="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record model="ir.rule" id="event_registration_comp_rule">
<field name="name">Event Registration multi-company</field>
<field name="model_id" ref="model_event_registration"/>
<field name="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record model="ir.rule" id="event_registration_comp_rule">
<field name="name">Event Registration multi-company</field>
<field name="model_id" ref="model_event_registration"/>
<field name="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record model="ir.rule" id="report_event_registration_comp_rule">
<field name="name">Report Event Registration multi-company</field>
<field name="model_id" ref="model_report_event_registration"/>
<field name="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>-->
</data>
<record model="ir.rule" id="report_event_registration_comp_rule">
<field name="name">Report Event Registration multi-company</field>
<field name="model_id" ref="model_report_event_registration"/>
<field name="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
</data>
</openerp>
+1 -1
View File
@@ -26,7 +26,7 @@
"category": "Human Resources",
"sequence": 12,
"website": "http://www.openerp.com",
"summary": "Hierarchy, Jobs, Departments",
"summary": "All Infos on Employees",
"description": """
Module for Human Resource Management.
=====================================
+4 -8
View File
@@ -2,11 +2,7 @@
<openerp>
<data>
<!--
======================
department
======================
-->
<!-- Department -->
<record id="view_department_form" model="ir.ui.view">
<field name="name">hr.department.form</field>
<field name="model">hr.department</field>
@@ -37,7 +33,7 @@
</tree>
</field>
</record>
<record id="view_department_filter" model="ir.ui.view">
<record id="view_department_filter" model="ir.ui.view">
<field name="name">Departments</field>
<field name="model">hr.department</field>
<field name="type">search</field>
@@ -48,7 +44,7 @@
<field name="manager_id" />
</search>
</field>
</record>
</record>
<record id="open_module_tree_department" model="ir.actions.act_window">
<field name="name">Departments</field>
@@ -60,5 +56,5 @@
<menuitem action="open_module_tree_department" id="menu_hr_department_tree" parent="hr.menu_hr_configuration" sequence="5"/>
</data>
</data>
</openerp>
+12 -20
View File
@@ -11,7 +11,7 @@
<menuitem id="menu_hr_configuration" name="Configuration" parent="hr.menu_hr_root" groups="base.group_hr_manager" sequence="50"/>
<menuitem id="menu_hr_management" name="Human Resources" parent="hr.menu_hr_configuration" groups="base.group_no_one" sequence="25"/>
<menuitem id="menu_hr_reporting_timesheet" name="Reports"
parent="menu_hr_reporting" sequence="6" />
parent="menu_hr_reporting" sequence="6"/>
<!--Employee form view -->
<record id="view_employee_form" model="ir.ui.view">
@@ -40,9 +40,9 @@
<!-- Put here related buttons -->
</div>
<group colspan="4" col="4">
<field name="work_email" widget="email" />
<field name="work_email" widget="email"/>
<field name="work_phone"/>
<field name="address_id" on_change="onchange_address_id(address_id)" />
<field name="address_id" on_change="onchange_address_id(address_id)"/>
<field name="mobile_phone"/>
</group>
<notebook>
@@ -50,7 +50,7 @@
<group>
<group>
<field name="user_id" on_change="onchange_user(user_id)"/>
<field name="parent_id" />
<field name="parent_id"/>
<field name="coach_id"/>
</group>
<group>
@@ -142,7 +142,9 @@
<a type="edit"><img t-att-src="kanban_image('hr.employee', 'photo', record.id.value)" class="oe_employee_picture"/></a>
</div>
<div class="oe_employee_details">
<h4><a type="edit"><field name="name"/> (<field name="login"/>)</a></h4>
<h4>
<a type="edit"><field name="name"/><t t-if="record.login.raw_value"> (<field name="login"/>)</t></a>
</h4>
<ul>
<li id="last_login">
<span t-if="record.last_login.raw_value &amp;&amp; record.last_login.raw_value.is().today()" class="oe_kanban_button" style="font-size: 100%%">
@@ -225,12 +227,7 @@
<field name="res_id" ref="hr.menu_open_view_employee_list_my"/>
</record>
<!--
=======================
Employee architecture
=======================
-->
<!-- Employee architecture -->
<record id="view_partner_tree2" model="ir.ui.view">
<field name="name">hr.employee.tree</field>
<field name="model">hr.employee</field>
@@ -269,12 +266,7 @@
<field eval="True" name="replace"/>
</ir_set>
<!--
============
Employee Category
============
-->
<!-- Employee Category -->
<record id="view_employee_category_form" model="ir.ui.view">
<field name="name">hr.employee.category.form</field>
<field name="model">hr.employee.category</field>
@@ -373,8 +365,8 @@
</h1>
<group>
<group>
<field name="no_of_employee"/>
<field name="expected_employees"/>
<field name="no_of_employee" groups="base.group_user"/>
<field name="expected_employees" groups="base.group_user"/>
<field name="no_of_recruitment" on_change="on_change_expected_employee(no_of_recruitment,no_of_employee)"/>
</group>
<group>
@@ -427,7 +419,7 @@
help="In Recruitment"/>
<separator orientation="vertical"/>
<field name="department_id" widget="selection"/>
<newline />
<newline/>
<group expand="0" string="Group By...">
<filter string="Department" icon="terp-personal+" domain="[]" context="{'group_by':'department_id'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
+1 -1
View File
@@ -25,7 +25,7 @@
"author": "OpenERP SA",
"category": "Human Resources",
"website": "http://www.openerp.com",
"summary": "Top-Down and Bottom-Up Evaluation",
"summary": "Periodical Evaluations, Surveys",
"images": ["images/hr_evaluation_analysis.jpeg","images/hr_evaluation.jpeg"],
"depends": ["hr","base_calendar","survey"],
"description": """
+1 -1
View File
@@ -26,7 +26,7 @@
"author": "OpenERP SA",
"category": "Human Resources",
"sequence": 28,
"summary": "Allocation and Leave Requests, Reporting by Department",
"summary": "Holidays, Allocation and Leave Requests",
"website": "http://www.openerp.com",
"description": """
This module allows you to manage leaves and leave's requests.
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -24,7 +24,7 @@
'version': '1.0',
'category': 'Human Resources',
"sequence": 24,
"summary": "Job Descriptions, Recruitment Process",
"summary": "Recruitment Process, Job Descriptions",
'description': """
Manages job positions and the recruitment process.
==================================================
+47 -63
View File
@@ -1,23 +1,21 @@
<?xml version="1.0"?>
<openerp>
<data>
<menuitem
id="menu_hr_recruitment_recruitment"
name="Recruitment"
parent="hr.menu_hr_configuration"
sequence="40" />
<act_window
id="act_hr_applicant_to_meeting"
name="Meetings"
res_model="crm.meeting"
src_model="hr.applicant"
view_mode="tree,form,calendar,graph"
view_type="form"/>
<menuitem name="Recruitment"
id="menu_hr_recruitment_recruitment"
parent="hr.menu_hr_configuration"
sequence="40"/>
# ------------------------------------------------------
# Stage
# ------------------------------------------------------
<act_window
id="act_hr_applicant_to_meeting"
name="Meetings"
res_model="crm.meeting"
src_model="hr.applicant"
view_mode="tree,form,calendar,graph"
view_type="form"/>
<!-- Stage -->
<record id="hr_job_stage_act" model="ir.actions.act_window">
<field name="name">Recruitment / Applicants Stages</field>
<field name="res_model">hr.recruitment.stage</field>
@@ -28,10 +26,7 @@
</record>
# ------------------------------------------------------
# Jobs
# ------------------------------------------------------
<!-- Jobs -->
<!-- Applicant Read/Unread actions -->
<record id="actions_server_applicant_unread" model="ir.actions.server">
<field name="name">Mark unread</field>
@@ -44,9 +39,9 @@
<record id="action_applicant_unread" model="ir.values">
<field name="name">action_project_unread</field>
<field name="action_id" ref="actions_server_applicant_unread"/>
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_applicant_unread'))" />
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_applicant_unread'))"/>
<field name="key">action</field>
<field name="model_id" ref="model_hr_applicant" />
<field name="model_id" ref="model_hr_applicant"/>
<field name="model">hr.applicant</field>
<field name="key2">client_action_multi</field>
</record>
@@ -62,9 +57,9 @@
<record id="action_applicant_read" model="ir.values">
<field name="name">action_project_read</field>
<field name="action_id" ref="actions_server_applicant_read"/>
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_applicant_read'))" />
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_applicant_read'))"/>
<field name="key">action</field>
<field name="model_id" ref="model_hr_applicant" />
<field name="model_id" ref="model_hr_applicant"/>
<field name="model">hr.applicant</field>
<field name="key2">client_action_multi</field>
</record>
@@ -175,12 +170,12 @@
<group string="Contract">
<label for="salary_expected"/>
<div>
<field name="salary_expected" class="oe_inline"/>,
<field name="salary_expected" class="oe_inline"/>,
<field name="salary_expected_extra" class="oe_inline" placeholder="Extra advantages..."/>
</div>
<label for="salary_proposed"/>
<div>
<field name="salary_proposed" class="oe_inline"/>,
<field name="salary_proposed" class="oe_inline"/>,
<field name="salary_proposed_extra" class="oe_inline" placeholder="Extra advantages..."/>
</div>
</group>
@@ -222,10 +217,10 @@
<filter icon="terp-document-new" string="New" name="filter_new"/>
<field name="partner_name" filter_domain="['|','|',('name','ilike',self),('partner_name','ilike',self),('email_from','ilike',self)]" string="Subject / Applicant"/>
<separator orientation="vertical"/>
<filter icon="terp-document-new" string="New"
<filter icon="terp-document-new" string="New"
domain="[('state','=','draft')]"
help="All Initial Jobs"/>
<filter icon="terp-camera_test" string="In Progress"
<filter icon="terp-camera_test" string="In Progress"
domain="[('state','=','open')]"
help="Open Jobs"/>
<filter icon="terp-gtk-media-pause" string="Pending"
@@ -260,7 +255,6 @@
</record>
<!-- CRM Lead Calendar View -->
<record model="ir.ui.view" id="hr_applicant_calendar_view">
<field name="name">Hr Applicants Calendar</field>
<field name="model">hr.applicant</field>
@@ -269,15 +263,14 @@
<field name="arch" type="xml">
<calendar string="Applicants"
date_start="date_action" color="user_id">
<field name="name" />
<field name="partner_name" />
<field name="name"/>
<field name="partner_name"/>
<field name="title_action"/>
</calendar>
</field>
</record>
<!-- hr Applicant Kanban View -->
<!-- Hr Applicant Kanban View -->
<record model="ir.ui.view" id="hr_kanban_view_applicant">
<field name="name">Hr Applicants kanban</field>
<field name="model">hr.applicant</field>
@@ -346,10 +339,7 @@
</field>
</record>
# ------------------------------------------------------
# HR Job
# ------------------------------------------------------
<!-- HR Job -->
<record id="hr_job_survey" model="ir.ui.view">
<field name="name">hr.job.form1</field>
<field name="model">hr.job</field>
@@ -357,20 +347,19 @@
<field name="inherit_id" ref="hr.view_hr_job_form"/>
<field name="arch" type="xml">
<field name="no_of_recruitment" version="7.0" position="after">
<label for="survey_id" />
<div>
<field name="survey_id" class="oe_inline"/>
<button class="oe_inline"
string="Interview" icon="gtk-print"
name="action_print_survey" type="object"
attrs="{'invisible':[('survey_id','=',False)]}"/>
</div>
<label for="survey_id" groups="base.group_user"/>
<div groups="base.group_user">
<field name="survey_id" class="oe_inline"/>
<button class="oe_inline"
string="Interview" icon="gtk-print"
name="action_print_survey" type="object"
attrs="{'invisible':[('survey_id','=',False)]}"/>
</div>
</field>
</field>
</record>
<!-- Stage Tree View -->
<!-- Stage Tree View -->
<record model="ir.ui.view" id="hr_recruitment_stage_tree">
<field name="name">hr.recruitment.stage.tree</field>
<field name="model">hr.recruitment.stage</field>
@@ -385,8 +374,7 @@
</field>
</record>
<!-- Stage Form View -->
<!-- Stage Form View -->
<record model="ir.ui.view" id="hr_recruitment_stage_form">
<field name="name">hr.recruitment.stage.form</field>
<field name="model">hr.recruitment.stage</field>
@@ -405,8 +393,7 @@
</field>
</record>
<!-- Stage Action -->
<!-- Stage Action -->
<record id="hr_recruitment_stage_act" model="ir.actions.act_window">
<field name="name">Stages</field>
<field name="res_model">hr.recruitment.stage</field>
@@ -422,8 +409,7 @@
action="hr_recruitment_stage_act"
sequence="1" groups="base.group_no_one"/>
<!-- Degree Tree View -->
<!-- Degree Tree View -->
<record model="ir.ui.view" id="hr_recruitment_degree_tree">
<field name="name">hr.recruitment.degree.tree</field>
<field name="model">hr.recruitment.degree</field>
@@ -436,8 +422,7 @@
</field>
</record>
<!-- Degree Form View -->
<!-- Degree Form View -->
<record model="ir.ui.view" id="hr_recruitment_degree_form">
<field name="name">hr.recruitment.degree.form</field>
<field name="model">hr.recruitment.degree</field>
@@ -452,8 +437,7 @@
</field>
</record>
<!-- Degree Action -->
<!-- Degree Action -->
<record id="hr_recruitment_degree_action" model="ir.actions.act_window">
<field name="name">Degree</field>
<field name="res_model">hr.recruitment.degree</field>
@@ -468,8 +452,7 @@
action="hr_recruitment_degree_action"
sequence="5" groups="base.group_no_one"/>
<!-- Source Tree View -->
<!-- Source Tree View -->
<record model="ir.ui.view" id="hr_recruitment_source_tree">
<field name="name">hr.recruitment.source.tree</field>
<field name="model">hr.recruitment.source</field>
@@ -496,11 +479,12 @@
<field name="view_type">form</field>
</record>
<menuitem
id="menu_hr_recruitment_source"
parent="menu_hr_recruitment_recruitment"
action="hr_recruitment_source_action"
sequence="10" groups="base.group_no_one"/>
<menuitem
id="menu_hr_recruitment_source"
parent="menu_hr_recruitment_recruitment"
action="hr_recruitment_source_action"
groups="base.group_no_one"
sequence="10"/>
</data>
</openerp>
@@ -126,6 +126,25 @@ class account_analytic_line(osv.osv):
'to_invoice': fields.many2one('hr_timesheet_invoice.factor', 'Type of Invoicing', help="It allows to set the discount while making invoice"),
}
def _default_journal(self, cr, uid, context=None):
proxy = self.pool.get('hr.employee')
record_ids = proxy.search(cr, uid, [('user_id', '=', uid)], context=context)
employee = proxy.browse(cr, uid, record_ids[0], context=context)
return employee.journal_id and employee.journal_id.id or False
def _default_general_account(self, cr, uid, context=None):
proxy = self.pool.get('hr.employee')
record_ids = proxy.search(cr, uid, [('user_id', '=', uid)], context=context)
employee = proxy.browse(cr, uid, record_ids[0], context=context)
if employee.product_id and employee.product_id.property_account_income:
return employee.product_id.property_account_income.id
return False
_defaults = {
'journal_id' : _default_journal,
'general_account_id' : _default_general_account,
}
def write(self, cr, uid, ids, vals, context=None):
self._check_inv(cr, uid, ids, vals)
return super(account_analytic_line,self).write(cr, uid, ids, vals,
+2 -2
View File
@@ -21,11 +21,11 @@
{
'name': 'Timesheets Validation',
'name': 'Timesheets',
'version': '1.0',
'category': 'Human Resources',
"sequence": 16,
"summary": "Attendances, Activities, Timing",
"summary": "Timesheets, Attendances, Activities",
'description': """
This module helps you to easily encode and validate timesheet and attendances within the same view.
===================================================================================================
+1 -1
View File
@@ -24,7 +24,7 @@
'version': '1.0',
'category':'Social Network',
"sequence": 2,
"summary": "Discussions, Feeds, Alerts",
"summary": "Discussions, Mailing Lists, News",
'description': """
A bussiness oriented Social Networking with a fully-integrated email
and message management.
+8 -8
View File
@@ -29,10 +29,10 @@
<field name="model">mail.group</field>
<field name="res_id" ref="group_all_company"/>
<field name="content_subtype">html</field>
<field name="body_html"><![CDATA[Lorem ipsum dolor <b>sit amet</b>, consectetur <em>adipiscing elit</em>. Pellentesque et quam sapien, in sagittis tellus.
Praesent vel massa sed massa consequat egestas in tristique orci. Praesent iaculis libero et neque vehicula iaculis. Vivamus placerat tincidunt orci ac ornare. Proin ut dolor fringilla velit ultricies consequat. Maecenas sit amet ipsum non leo interdum imperdiet. Donec sapien mi, varius a consequat id, consectetur sit amet nulla.
<field name="body_html"><![CDATA[Lorem ipsum dolor <b>sit amet</b>, consectetur <em>adipiscing elit</em>. Pellentesque et quam sapien, in sagittis tellus.
Praesent vel massa sed massa consequat egestas in tristique orci. Praesent iaculis libero et neque vehicula iaculis. Vivamus placerat tincidunt orci ac ornare. Proin ut dolor fringilla velit ultricies consequat. Maecenas sit amet ipsum non leo interdum imperdiet. Donec sapien mi, varius a consequat id, consectetur sit amet nulla.
Fusce tempus elit volutpat mi auctor adipiscing. Nam congue luctus suscipit. Duis vestibulum dapibus enim vitae dignissim. Sed tellus libero, venenatis ut mollis ut, luctus quis dui. Sed rhoncus pulvinar orci in consectetur.
Fusce tempus elit volutpat mi auctor adipiscing. Nam congue luctus suscipit. Duis vestibulum dapibus enim vitae dignissim. Sed tellus libero, venenatis ut mollis ut, luctus quis dui. Sed rhoncus pulvinar orci in consectetur.
Nulla turpis leo, rhoncus ut egestas sit amet, consectetur vitae urna. Mauris in dolor in sapien tempus vehicula.]]></field>
<field name="type">comment</field>
@@ -54,11 +54,11 @@ Nulla turpis leo, rhoncus ut egestas sit amet, consectetur vitae urna. Mauris in
<field name="model">mail.group</field>
<field name="res_id" ref="group_all_company"/>
<field name="content_subtype">html</field>
<field name="body_html"><![CDATA[Agreed !
<field name="body_html"><![CDATA[Agreed !
Would it be possible to learn more about the author ? (second comment)]]></field>
<field name="parent_id" ref="message_blogpost0"/>
<field name="type">comment</field>
<field name="user_id" ref="base.user_root"/>
<field name="user_id" ref="base.user_demo"/>
</record>
<record id="message_blogpost0_comment2_attachment0" model="ir.attachment">
@@ -76,10 +76,10 @@ Would it be possible to learn more about the author ? (second comment)]]></fiel
<field name="model">mail.group</field>
<field name="res_id" ref="group_all_company"/>
<field name="content_subtype">html</field>
<field name="body_html"><![CDATA[Sure: Curabitur tempor bibendum diam, et euismod ante rutrum vel.
<field name="body_html"><![CDATA[Sure: Curabitur tempor bibendum diam, et euismod ante rutrum vel.
In quis purus neque. Integer sodales dolor eu elit fringilla blandit. Maecenas lacus nisi, facilisis sit amet viverra eu, tristique vel augue.
Donec viverra congue dui eu blandit. In lacinia molestie nulla, ut sagittis risus feugiat eu.
In quis purus neque. Integer sodales dolor eu elit fringilla blandit. Maecenas lacus nisi, facilisis sit amet viverra eu, tristique vel augue.
Donec viverra congue dui eu blandit. In lacinia molestie nulla, ut sagittis risus feugiat eu.
Check the file in attachment for more information ! (third comment)]]></field>
<field name="parent_id" ref="message_blogpost0"/>
+2 -1
View File
@@ -9,7 +9,8 @@
sequence="10"/>
<!-- left-side menu: Feeds !-->
<menuitem id="mail_feeds" name="Feeds" parent="mail_feeds_main"/>
<menuitem id="mail_feeds" name="Feeds" parent="mail_feeds_main" groups="base.group_user" sequence="10"/>
<record id="mail_wallfeeds" model="ir.ui.menu">
<field name="name">News Feed</field>
<field name="sequence" eval="10"/>
@@ -4,19 +4,14 @@
<menuitem name="Configuration" id="menu_marketing_configuration" parent="base.marketing_menu" sequence="1"/>
<!--
======================
Marketing Campaign
======================
-->
<!-- Marketing Campaign -->
<act_window name="All Segments"
res_model="marketing.campaign.segment"
src_model="marketing.campaign"
view_type="form"
view_mode="tree,form"
id="act_marketing_campaing_segment_opened"
context="{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}"
/>
context="{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}"/>
<!-- Campaign Followups -->
<act_window
@@ -24,7 +19,7 @@
id="act_marketing_campaing_followup"
name="Campaign Follow-up" res_model="marketing.campaign.workitem"
src_model="marketing.campaign" view_mode="tree,form"
view_type="form" />
view_type="form"/>
<record model="ir.ui.view" id="view_marketing_campaign_form">
<field name="name">marketing.campaign.form</field>
@@ -43,10 +38,10 @@
<div class="oe_right oe_button_box" name="button_box">
<button type="action"
name="%(act_marketing_campaing_followup)d"
string="Follow-Up" />
string="Follow-Up"/>
<button type="action"
name="%(act_marketing_campaing_segment_opened)d"
string="Segments" />
string="Segments"/>
</div>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
@@ -61,10 +56,10 @@
<field name="object_id"/>
<field name="partner_field_id"/>
<field name="unique_field_id"/>
</group>
</group>
</group>
<separator string="Activities"/>
<field name="activity_ids" context="{'default_object_id': object_id, 'default_campaign_id': active_id}" />
<field name="activity_ids" context="{'default_object_id': object_id, 'default_campaign_id': active_id}"/>
</sheet>
</form>
</field>
@@ -146,14 +141,9 @@
</record>
<menuitem name="Campaigns" id="menu_marketing_campaign" parent="base.marketing_menu"/>
<menuitem id="menu_marketing_campaign_form" parent="menu_marketing_campaign" action="action_marketing_campaign_form" sequence="30" />
<!--
======================
Marketing Segments
======================
-->
<menuitem id="menu_marketing_campaign_form" parent="menu_marketing_campaign" action="action_marketing_campaign_form" sequence="30"/>
<!-- Marketing Segments -->
<record model="ir.ui.view" id="view_marketing_campaign_segment_form">
<field name="name">marketing.campaign.segment.form</field>
<field name="model">marketing.campaign.segment</field>
@@ -202,7 +192,7 @@
<field name="campaign_id"/>
<field name="date_run"/>
<field name="sync_last_date"/>
<field name="state" />
<field name="state"/>
</tree>
</field>
</record>
@@ -248,16 +238,12 @@
<field name="context">{'group_by': []}</field>
</record>
<menuitem id="menu_marketing_campaign_segment_form" parent="menu_marketing_campaign" action="action_marketing_campaign_segment_form" sequence="20" />
<menuitem id="menu_marketing_campaign_segment_form" parent="menu_marketing_campaign" action="action_marketing_campaign_segment_form" sequence="20"/>
<!--
======================
Marketing Activities
======================
these views are not intended to be used outside the campaign context.
Marketing Activities
These views are not intended to be used outside the campaign context.
-->
<record model="ir.ui.view" id="view_marketing_campaign_activity_form">
<field name="name">marketing.campaign.activity.form</field>
<field name="model">marketing.campaign.activity</field>
@@ -285,7 +271,7 @@
<group>
<field name="type"/>
<field name="email_template_id" attrs="{'required':[('type','=','email')], 'invisible':[('type','!=','email')]}"
context="{'default_model_id':object_id}" />
context="{'default_model_id':object_id}"/>
<field name="server_action_id" attrs="{'required':[('type','=','action')],'invisible':[('type','!=','action')]}" domain="[('model_id','=',object_id)]"/>
<field name="report_id" attrs="{'required':[('type','=','report')],'invisible':[('type','!=','report')]}" context="{'object_id':object_id}"/>
<field name="report_directory_id" attrs="{'required':[('type','=','report')],'invisible':[('type','!=','report')]}"/>
@@ -344,12 +330,7 @@
</record>
<!--
======================
Marketing Workitems
======================
-->
<!-- Marketing Workitems -->
<record model="ir.ui.view" id="view_marketing_campaign_workitem_tree">
<field name="name">marketing.campaign.workitem.tree</field>
<field name="model">marketing.campaign.workitem</field>
@@ -358,10 +339,10 @@
<tree colors="red:state == 'exception';black:state == 'todo';gray:state == 'cancelled'" string="Marketing Campaign Activities">
<field name="campaign_id"/>
<field name="segment_id"/>
<field name="activity_id" />
<field name="activity_id"/>
<field name="object_id" invisible="1"/>
<field name="res_id" invisible="1"/>
<field name="res_name" />
<field name="res_name"/>
<field name="partner_id"/>
<field name="date"/>
<field name="state"/>
@@ -464,8 +445,7 @@
view_type="form"
view_mode="tree,form"
id="act_marketing_campaing_segment_opened"
context="{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}"
/>
context="{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}"/>
<!-- Campaign Follow-ups -->
<act_window
@@ -473,7 +453,7 @@
id="act_marketing_campaing_followup"
name="Campaign Follow-up" res_model="marketing.campaign.workitem"
src_model="marketing.campaign" view_mode="tree,form"
view_type="form" />
view_type="form"/>
<!-- Campaign Statistics -->
<act_window
@@ -481,7 +461,7 @@
id="act_marketing_campaing_stat"
name="Campaign Statistics" res_model="campaign.analysis"
src_model="marketing.campaign" view_mode="tree,form"
view_type="form" />
view_type="form"/>
</data>
</openerp>
@@ -1,16 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- ==================Marketing Campaigns================== -->
<!-- Marketing Campaigns -->
<record id="wkf_marketing_campaign" model="workflow">
<field name="name">marketing.campaign.basic</field>
<field name="osv">marketing.campaign</field>
<field name="on_create">True</field>
</record>
<!-- Activity -->
<!-- Activity -->
<record id="act_marketing_campaign_draft" model="workflow.activity">
<field name="wkf_id" ref="wkf_marketing_campaign"/>
<field name="flow_start">True</field>
@@ -32,7 +31,7 @@
<field name="kind">function</field>
<field name="action">state_done_set()</field>
</record>
<record id="act_marketing_campaign_cancel" model="workflow.activity">
<field name="wkf_id" ref="wkf_marketing_campaign"/>
<field name="name">cancel</field>
@@ -41,19 +40,19 @@
<field name="action">state_cancel_set()</field>
</record>
<!-- Transition -->
<!-- Transition -->
<record id="trans_marketing_campaign_draft_running" model="workflow.transition">
<field name="act_from" ref="act_marketing_campaign_draft"/>
<field name="act_to" ref="act_marketing_campaign_running"/>
<field name="signal">state_running_set</field>
</record>
<record id="trans_campaign_running_done" model="workflow.transition">
<field name="act_from" ref="act_marketing_campaign_running"/>
<field name="act_to" ref="act_marketing_campaign_done"/>
<field name="signal">state_done_set</field>
</record>
<record id="trans_campaign_running_cancel" model="workflow.transition">
<field name="act_from" ref="act_marketing_campaign_running"/>
<field name="act_to" ref="act_marketing_campaign_cancel"/>
@@ -72,15 +71,14 @@
<field name="signal">state_draft_set</field>
</record>
<!-- ==================Marketing Campaign Segment================== -->
<!-- Marketing Campaign Segment -->
<record id="wkf_marketing_campaign_segment" model="workflow">
<field name="name">marketing.campaign.segment.basic</field>
<field name="osv">marketing.campaign.segment</field>
<field name="on_create">True</field>
</record>
<!-- Activity -->
<!-- Activity -->
<record id="act_marketing_campaign_segment_draft" model="workflow.activity">
<field name="wkf_id" ref="wkf_marketing_campaign_segment"/>
<field name="flow_start">True</field>
@@ -102,7 +100,7 @@
<field name="kind">function</field>
<field name="action">state_done_set()</field>
</record>
<record id="act_marketing_campaign_segment_cancel" model="workflow.activity">
<field name="wkf_id" ref="wkf_marketing_campaign_segment"/>
<field name="name">cancel</field>
@@ -111,19 +109,19 @@
<field name="flow_stop" eval="False"/>
</record>
<!-- Transition -->
<!-- Transition -->
<record id="trans_marketing_campaign_segment_draft_running" model="workflow.transition">
<field name="act_from" ref="act_marketing_campaign_segment_draft"/>
<field name="act_to" ref="act_marketing_campaign_segment_running"/>
<field name="signal">state_running_set</field>
</record>
<record id="trans_campaign_segment_running_done" model="workflow.transition">
<field name="act_from" ref="act_marketing_campaign_segment_running"/>
<field name="act_to" ref="act_marketing_campaign_segment_done"/>
<field name="signal">state_done_set</field>
</record>
<record id="trans_campaign_segment_running_cancel" model="workflow.transition">
<field name="act_from" ref="act_marketing_campaign_segment_running"/>
<field name="act_to" ref="act_marketing_campaign_segment_cancel"/>
@@ -141,5 +139,6 @@
<field name="act_to" ref="act_marketing_campaign_segment_draft"/>
<field name="signal">state_draft_set</field>
</record>
</data>
</openerp>
+1 -1
View File
@@ -146,7 +146,7 @@ class membership_line(osv.osv):
'date_to': fields.date('To', readonly=True),
'date_cancel': fields.date('Cancel date'),
'date': fields.date('Join Date', help="Date on which member has joined the membership"),
'member_price': fields.float('Member Price', digits_compute= dp.get_precision('Sale Price'), required=True, help='Amount for the membership'),
'member_price': fields.float('Member Price', digits_compute= dp.get_precision('Sale Price'), required=True, help='Amount for the membership'),
'account_invoice_line': fields.many2one('account.invoice.line', 'Account Invoice line', readonly=True),
'account_invoice_id': fields.related('account_invoice_line', 'invoice_id', type='many2one', relation='account.invoice', string='Invoice', readonly=True),
'state': fields.function(_state,
+4 -4
View File
@@ -19,9 +19,9 @@
<field name="categ_id" widget="selection" operator="child_of"/>
<newline/>
<group expand='0' string='Group by...'>
<filter string='Category' icon="terp-stock_symbol-selection" domain="[]" context="{'group_by' : 'categ_id'}" />
<filter string='Category' icon="terp-stock_symbol-selection" domain="[]" context="{'group_by' : 'categ_id'}"/>
<separator orientation="vertical"/>
<filter string='Date From' icon="terp-go-month" domain="[]" context="{'group_by' : 'membership_date_from'}" />
<filter string='Date From' icon="terp-go-month" domain="[]" context="{'group_by' : 'membership_date_from'}"/>
</group>
</search>
</field>
@@ -177,7 +177,7 @@
<filter icon="terp-personal" name="all_non_members" domain="[('membership_state', 'in', ['none','canceled','old','waiting'])]" string="All non Members" help="None/Canceled/Old/Waiting"/>
<filter icon="terp-personal" name="all_members" domain="[('membership_state', 'in', ['invoiced','paid','free'])]" string="All Members" help="Invoiced/Paid/Free"/>
<group expand="0" string="Group By..." colspan="10" col="8">
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by' : 'user_id'}" />
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by' : 'user_id'}"/>
<filter string="Associate Member" name = "associate" icon="terp-partner" domain="[]" context="{'group_by':'associate_member'}"/>
<separator orientation="vertical"/>
<filter string=" Membership State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'membership_state'}"/>
@@ -288,7 +288,7 @@
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<field name="list_price" position="after">
<field name="member_price"/>
<field name="member_price" groups="base.group_user"/>
</field>
</field>
</record>
+1 -1
View File
@@ -27,7 +27,7 @@
"website" : "http://www.openerp.com",
"category" : "Manufacturing",
"sequence": 18,
"summary": "Manufacturing, Production, Bill of Materials",
"summary": "Manufacturing Orders, Bill of Materials, Routing",
"images" : ["images/bill_of_materials.jpeg", "images/manufacturing_order.jpeg", "images/planning_manufacturing_order.jpeg", "images/production_analysis.jpeg", "images/production_dashboard.jpeg","images/routings.jpeg","images/work_centers.jpeg"],
"depends" : ["procurement", "stock", "resource", "purchase", "product","process"],
"description": """
+2 -2
View File
@@ -686,8 +686,8 @@
</group>
<notebook>
<page string="Consumed Products">
<group>
<group groups="stock.group_locations">
<group groups="stock.group_locations">
<group>
<field name="bom_id" domain="[('product_id','=',product_id)]" context="{'default_product_id': product_id}" on_change="bom_id_change(bom_id)"/>
</group>
<group>
@@ -1,112 +1,106 @@
<?xml version="1.0"?>
<openerp>
<data>
# -----------------------------------------------------------
# Activities
# -----------------------------------------------------------
<!-- Activities -->
<record model="workflow" id="wkf_prod_workcenter">
<field name="name">mrp.production.workcenter.line.basic</field>
<field name="osv">mrp.production.workcenter.line</field>
<field name="on_create">True</field>
</record>
<record model="workflow.activity" id="prod_act_wc_draft">
<field name="wkf_id" ref="wkf_prod_workcenter"/>
<field name="flow_start">True</field>
<field name="name">draft</field>
<field name="kind">function</field>
<field name="action">action_draft()</field>
</record>
<record model="workflow.activity" id="prod_act_wc_start">
<field name="wkf_id" ref="wkf_prod_workcenter"/>
<field name="name">startworking</field>
<field name="kind">function</field>
<field name="action">action_start_working()</field>
</record>
<record model="workflow.activity" id="prod_act_wc_cancel">
<field name="wkf_id" ref="wkf_prod_workcenter"/>
<field name="name">cancel</field>
<field name="kind">function</field>
<field name="action">action_cancel()</field>
</record>
<record model="workflow.activity" id="prod_act_wc_pause">
<field name="wkf_id" ref="wkf_prod_workcenter"/>
<field name="name">pause</field>
<field name="kind">function</field>
<field name="action">action_pause()</field>
</record>
<record model="workflow.activity" id="prod_act_wc_resume">
<field name="wkf_id" ref="wkf_prod_workcenter"/>
<field name="name">resume</field>
<field name="kind">function</field>
<field name="action">action_resume()</field>
</record>
<record model="workflow.activity" id="prod_act_wc_done">
<field name="wkf_id" ref="wkf_prod_workcenter"/>
<field name="name">done</field>
<field name="kind">function</field>
<field name="flow_stop">True</field>
<field name="action">action_done()</field>
</record>
<record model="workflow.activity" id="prod_act_wc_draft">
<field name="wkf_id" ref="wkf_prod_workcenter"/>
<field name="flow_start">True</field>
<field name="name">draft</field>
<field name="kind">function</field>
<field name="action">action_draft()</field>
</record>
<record model="workflow.activity" id="prod_act_wc_start">
<field name="wkf_id" ref="wkf_prod_workcenter"/>
<field name="name">startworking</field>
<field name="kind">function</field>
<field name="action">action_start_working()</field>
</record>
<record model="workflow.activity" id="prod_act_wc_cancel">
<field name="wkf_id" ref="wkf_prod_workcenter"/>
<field name="name">cancel</field>
<field name="kind">function</field>
<field name="action">action_cancel()</field>
</record>
<record model="workflow.activity" id="prod_act_wc_pause">
<field name="wkf_id" ref="wkf_prod_workcenter"/>
<field name="name">pause</field>
<field name="kind">function</field>
<field name="action">action_pause()</field>
</record>
<record model="workflow.activity" id="prod_act_wc_resume">
<field name="wkf_id" ref="wkf_prod_workcenter"/>
<field name="name">resume</field>
<field name="kind">function</field>
<field name="action">action_resume()</field>
</record>
<record model="workflow.activity" id="prod_act_wc_done">
<field name="wkf_id" ref="wkf_prod_workcenter"/>
<field name="name">done</field>
<field name="kind">function</field>
<field name="flow_stop">True</field>
<field name="action">action_done()</field>
</record>
# -----------------------------------------------------------
# Transition
# -----------------------------------------------------------
<!-- Transition -->
<record model="workflow.transition" id="prod_trans_wc_draft_start">
<field name="act_from" ref="prod_act_wc_draft"/>
<field name="act_to" ref="prod_act_wc_start"/>
<field name="signal">button_start_working</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_start_done">
<field name="act_from" ref="prod_act_wc_start"/>
<field name="act_to" ref="prod_act_wc_done"/>
<field name="signal">button_done</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_draft_cancel">
<field name="act_from" ref="prod_act_wc_draft"/>
<field name="act_to" ref="prod_act_wc_cancel"/>
<field name="signal">button_cancel</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_cancel_draft">
<field name="act_from" ref="prod_act_wc_cancel"/>
<field name="act_to" ref="prod_act_wc_draft"/>
<field name="signal">button_draft</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_start_cancel">
<field name="act_from" ref="prod_act_wc_start"/>
<field name="act_to" ref="prod_act_wc_cancel"/>
<field name="signal">button_cancel</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_start_pause">
<field name="act_from" ref="prod_act_wc_start"/>
<field name="act_to" ref="prod_act_wc_pause"/>
<field name="signal">button_pause</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_draft_start">
<field name="act_from" ref="prod_act_wc_draft"/>
<field name="act_to" ref="prod_act_wc_start"/>
<field name="signal">button_start_working</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_start_done">
<field name="act_from" ref="prod_act_wc_start"/>
<field name="act_to" ref="prod_act_wc_done"/>
<field name="signal">button_done</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_draft_cancel">
<field name="act_from" ref="prod_act_wc_draft"/>
<field name="act_to" ref="prod_act_wc_cancel"/>
<field name="signal">button_cancel</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_cancel_draft">
<field name="act_from" ref="prod_act_wc_cancel"/>
<field name="act_to" ref="prod_act_wc_draft"/>
<field name="signal">button_draft</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_start_cancel">
<field name="act_from" ref="prod_act_wc_start"/>
<field name="act_to" ref="prod_act_wc_cancel"/>
<field name="signal">button_cancel</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_start_pause">
<field name="act_from" ref="prod_act_wc_start"/>
<field name="act_to" ref="prod_act_wc_pause"/>
<field name="signal">button_pause</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_pause_resume">
<field name="act_from" ref="prod_act_wc_pause"/>
<field name="act_to" ref="prod_act_wc_resume"/>
<field name="signal">button_resume</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_resume_pause">
<field name="act_from" ref="prod_act_wc_resume"/>
<field name="act_to" ref="prod_act_wc_pause"/>
<field name="signal">button_pause</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_resume_cancel">
<field name="act_from" ref="prod_act_wc_resume"/>
<field name="act_to" ref="prod_act_wc_cancel"/>
<field name="signal">button_cancel</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_resume_done">
<field name="act_from" ref="prod_act_wc_resume"/>
<field name="act_to" ref="prod_act_wc_done"/>
<field name="signal">button_done</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_pause_resume">
<field name="act_from" ref="prod_act_wc_pause"/>
<field name="act_to" ref="prod_act_wc_resume"/>
<field name="signal">button_resume</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_resume_pause">
<field name="act_from" ref="prod_act_wc_resume"/>
<field name="act_to" ref="prod_act_wc_pause"/>
<field name="signal">button_pause</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_resume_cancel">
<field name="act_from" ref="prod_act_wc_resume"/>
<field name="act_to" ref="prod_act_wc_cancel"/>
<field name="signal">button_cancel</field>
</record>
<record model="workflow.transition" id="prod_trans_wc_resume_done">
<field name="act_from" ref="prod_act_wc_resume"/>
<field name="act_to" ref="prod_act_wc_done"/>
<field name="signal">button_done</field>
</record>
</data>
</openerp>
+1 -1
View File
@@ -25,7 +25,7 @@
'version': '1.0.1',
'category': 'Point Of Sale',
"sequence": 6,
"summary": "Touchscreen to Manage your Shop",
"summary": "Touchscreen Interface for Shops",
'description': """
This module provides a quick and easy sale process.
===================================================
+10 -8
View File
@@ -22,18 +22,20 @@
{
'name' : "Portal",
'version' : "1.0",
'depends' : ["base", "share"],
'depends' : ["base", "share", "anonymous"],
'author' : "OpenERP SA",
'category': 'Portal',
'description': """
This module defines 'portals' to customize the access to your OpenERP database for external users.
==================================================================================================
Customize access to your OpenERP database to external users by creating portals.
A portal defines customized user menu and access rights for a group of users
(the ones associated to that portal). It also associates user groups to the
portal users (adding a group in the portal automatically adds it to the portal
users). That feature is very handy when used in combination with the
module 'share'.
A portal defines a specific user menu and access rights for its members. This
menu can ben seen by portal members, anonymous users and any other user that
have the access to technical features (e.g. the administrator).
Also, each portal member is linked to a specific partner.
The module also associates user groups to the portal users (adding a group in
the portal automatically adds it to the portal users, etc). That feature is
very handy when used in combination with the module 'share'.
""",
'website': 'http://www.openerp.com',
'data': [
+15 -15
View File
@@ -32,7 +32,7 @@ class portal(osv.osv):
_name = 'res.portal'
_description = 'Portal'
_inherits = {'res.groups': 'group_id'}
_columns = {
'group_id': fields.many2one('res.groups', required=True, ondelete='cascade',
string='Group',
@@ -53,40 +53,40 @@ class portal(osv.osv):
string='Widgets',
help='Widgets assigned to portal users'),
}
def copy(self, cr, uid, id, values, context=None):
""" override copy(): menu_action_id must be different """
values['menu_action_id'] = None
return super(portal, self).copy(cr, uid, id, values, context)
def create(self, cr, uid, values, context=None):
""" extend create() to assign the portal menu to users """
if context is None:
context = {}
# create portal (admin should not be included)
context['noadmin'] = True
portal_id = super(portal, self).create(cr, uid, values, context)
# assign menu action and widgets to users
if values.get('users') or values.get('menu_action_id'):
self._assign_menu(cr, uid, [portal_id], context)
if values.get('users') or values.get('widget_ids'):
self._assign_widgets(cr, uid, [portal_id], context)
return portal_id
def write(self, cr, uid, ids, values, context=None):
""" extend write() to reflect changes on users """
# first apply portal changes
super(portal, self).write(cr, uid, ids, values, context)
# assign menu action and widgets to users
if values.get('users') or values.get('menu_action_id'):
self._assign_menu(cr, uid, ids, context)
if values.get('users') or values.get('widget_ids'):
self._assign_widgets(cr, uid, ids, context)
# if parent_menu_id has changed, apply the change on menu_action_id
if 'parent_menu_id' in values:
act_window_obj = self.pool.get('ir.actions.act_window')
@@ -95,7 +95,7 @@ class portal(osv.osv):
if action_ids:
action_values = {'domain': [('parent_id', '=', values['parent_menu_id'])]}
act_window_obj.write(cr, uid, action_ids, action_values, context)
return True
def _assign_menu(self, cr, uid, ids, context=None):
@@ -131,26 +131,26 @@ portal()
class portal_override_menu(osv.osv):
"""
extend res.portal with a boolean field 'Override Users Menu', that
Extend res.portal with a boolean field 'Override Users Menu', that
triggers the creation or removal of menu_action_id
"""
_name = 'res.portal'
_inherit = 'res.portal'
def _get_override_menu(self, cr, uid, ids, field_name, arg, context=None):
assert field_name == 'override_menu'
result = {}
for p in self.browse(cr, uid, ids, context):
result[p.id] = bool(p.menu_action_id)
return result
def _set_override_menu(self, cr, uid, id, field_name, field_value, arg, context=None):
assert field_name == 'override_menu'
if field_value:
self.create_menu_action(cr, uid, id, context)
else:
self.write(cr, uid, [id], {'menu_action_id': False}, context)
def create_menu_action(self, cr, uid, id, context=None):
""" create, if necessary, a menu action that opens the menu items below
parent_menu_id """
@@ -169,7 +169,7 @@ class portal_override_menu(osv.osv):
}
action_id = actions_obj.create(cr, uid, action_values, context)
self.write(cr, uid, [id], {'menu_action_id': action_id}, context)
_columns = {
'override_menu': fields.function(
_get_override_menu, fnct_inv=_set_override_menu,
+32 -3
View File
@@ -1,13 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<data>
<record id="portal" model="res.portal">
<field name="name">Portal</field>
<field name="group_id" ref="group_portal_member"/>
<field name="override_menu" eval="True"/>
<field name="parent_menu_id" ref="portal_members_root_menu"/>
<field name="override_menu" eval="False"/>
</record>
<!-- Mail group for the company's news -->
<record id="company_news_feed" model="mail.group">
<field name="name">Company's news feed</field>
</record>
<record id="action_news" model="ir.actions.act_window">
<field name="name">News</field>
<field name="res_model">mail.group</field>
<field name="res_id" ref="company_news_feed"/>
<field name="view_mode">form</field>
</record>
<!-- Top menu item -->
<menuitem name="Portal"
id="portal_menu"
groups="base.group_no_one,portal.group_portal_member,anonymous.group_anonymous"
sequence="20"/>
<menuitem name="Our company" id="portal_company" parent="portal_menu" sequence="10"/>
<menuitem name="News" id="portal_company_news" parent="portal_company" sequence="10" action="action_news"/>
<!--
Create menu items that we'll leave empty for now - they'll be
filled up by other portal modules.
-->
<menuitem name="Orders" id="portal_orders" parent="portal_menu" sequence="20"/>
<menuitem name="Invoices and Payments" id="portal_invoices_payements" parent="portal_menu" sequence="30"/>
<menuitem name="Projects" id="portal_projects" parent="portal_menu" sequence="40"/>
<menuitem name="After Sale Services" id="portal_after_sales" parent="portal_menu" sequence="50"/>
</data>
</openerp>
File diff suppressed because one or more lines are too long
+15 -50
View File
@@ -2,21 +2,6 @@
<openerp>
<data>
<!-- menu Administration/Portals/Portals -->
<record id="portal_list_action" model="ir.actions.act_window">
<field name="name">Portals</field>
<field name="res_model">res.portal</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<!-- a context is necessary to get the right portal form view -->
<field name="context">{'form_view_ref': 'portal.portal_form_view'}</field>
<field name="help">
A portal helps defining specific views and rules for a group of users (the
portal group). A portal menu, widgets and specific groups may be assigned to
the portal's users.
</field>
</record>
<!-- portal tree view -->
<record id="portal_list_view" model="ir.ui.view">
<field name="name">Portal List</field>
@@ -28,7 +13,6 @@ the portal's users.
</tree>
</field>
</record>
<!-- portal form view -->
<record id="portal_form_view" model="ir.ui.view">
<field name="name">Portal Form</field>
@@ -63,42 +47,23 @@ the portal's users.
</page>
</field>
</record>
<record id="company_news_feed" model="mail.group">
<field name="name">Company's news feed</field>
<!-- action Administration/Portals/Portals -->
<record id="portal_list_action" model="ir.actions.act_window">
<field name="name">Portals</field>
<field name="res_model">res.portal</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<!-- a context is necessary to get the right portal form view -->
<field name="context">{'form_view_ref': 'portal.portal_form_view'}</field>
<field name="help">
A portal helps defining specific views and rules for a group of users (the
portal group). A portal menu, widgets and specific groups may be assigned to
the portal's users.
</field>
</record>
<record id="action_news" model="ir.actions.act_window">
<field name="name">News</field>
<field name="res_model">mail.group</field>
<field name="res_id" ref="company_news_feed"/>
<field name="view_mode">form</field>
</record>
<!-- module's menu -->
<!-- menu Administration/Portals -->
<menuitem name="Portals Settings" id="portal_menu_settings" parent="base.menu_administration"
groups="group_portal_manager"/>
<!-- menu Administration/Portals/Portals -->
<menuitem name="Portals Settings" id="portal_menu_settings" parent="base.menu_administration" groups="group_portal_manager"/>
<menuitem name="Portals" id="portal_list_menu" parent="portal_menu_settings" action="portal_list_action"/>
<!-- root menu for portal members (chrooted in this menu) -->
<menuitem name="Portal Members Root Menu" id="portal_members_root_menu" parent="portal_menu_settings"/>
<menuitem name="Portal Member's Menu" id="menu_portal" parent="portal_members_root_menu"/>
<menuitem name="Our company" id="portal_company"
parent="menu_portal" sequence="10"/>
<menuitem name="News" id="portal_company_news"
parent="portal_company" sequence="10" action="action_news"/>
<menuitem name="Orders" id="portal_orders"
parent="menu_portal" sequence="20"/>
<menuitem name="Invoices and Payments" id="portal_invoices_payements"
parent="menu_portal" sequence="30"/>
<menuitem name="Projects" id="portal_projects"
parent="menu_portal" sequence="40"/>
<menuitem name="After Sale Services" id="portal_after_sales"
parent="menu_portal" sequence="50"/>
</data>
</openerp>
-2
View File
@@ -30,7 +30,5 @@ class res_users(osv.osv):
string='Related Partner'),
}
res_users()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+2
View File
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- add partner field in user form -->
<record id="view_users_form" model="ir.ui.view">
<field name="name">res.portal.users.form</field>
@@ -13,5 +14,6 @@
</field>
</field>
</record>
</data>
</openerp>
+3 -3
View File
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<data noupdate="1">
<!-- Don't use any implied_ids here; this group behavior is particular -->
<!-- Don't use any implied_ids here; this group's behavior is particular -->
<record id="group_portal_member" model="res.groups">
<field name="name">Portal Member</field>
<field name="comment">Portal members can access information provided by the portal menu and the others module it's linked with. Also, portal members are chrooted in a specific menu.</field>
<field name="comment">Portal members can access information through the portal menu. Also, they are chrooted in this specific menu.</field>
</record>
<record id="module_category_portal" model="ir.module.category">
+3 -3
View File
@@ -26,15 +26,15 @@
'category': 'Tools',
'complexity': "easy",
'description': """
This module adds claim menu and features to your portal if claim and portal are
This module adds claim menu and features to your portal if claim and portal are
installed.
""",
'author': 'OpenERP SA',
'depends': ['crm_claim','portal'],
'data': [
'security/portal_security.xml',
'portal_claim_view.xml',
"security/ir.model.access.csv",
'security/ir.model.access.csv',
'security/portal_security.xml',
],
'installable': True,
'auto_install':True,
@@ -3,7 +3,7 @@
<data noupdate="1">
<record id="portal_stock_picking_user_rule" model="ir.rule">
<field name="name">Personal Claims</field>
<field name="name">Portal Personal Claims</field>
<field ref="crm_claim.model_crm_claim" name="model_id"/>
<field name="domain_force">[('partner_id','child_of',user.partner_id.id)]</field>
<field name="groups" eval="[(4, ref('portal.group_portal_member'))]"/>
+7 -5
View File
@@ -26,18 +26,20 @@
'category': 'Tools',
'complexity': "easy",
'description': """
This module adds crm menu and features (contact form) to your portal if crm and
portal are installed.
This module adds a contact page (with a contact form creating a lead when
submitted) to your portal if crm and portal are installed.
""",
'author': 'OpenERP SA',
'depends': ['crm','portal'],
'data': [
'security/ir.model.access.csv',
'wizard/contact_view.xml',
],
'installable': True,
'auto_install':True,
'installable': True
, 'auto_install':True,
'category':'Hidden',
'css': [
'static/src/css/portal_crm.css',
],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,2 +0,0 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
@@ -0,0 +1,42 @@
/* Root container */
.openerp .oe_portal_crm_contact {
width: 800px;
margin: auto;
padding: 8px 0 0 0;
}
/* Contact form section */
.openerp .oe_portal_crm_contact .oe_portal_crm_contact_form {
margin-right: 10px;
}
.openerp .oe_portal_crm_contact .oe_portal_crm_contact_form input[type="text"] {
width: 40%;
}
/* Offices list section */
.openerp .oe_portal_crm_contact .oe_portal_crm_office {
background: #DDD;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
-moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
-webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
-o-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
}
.openerp .oe_portal_crm_contact .oe_portal_crm_office * {
background: transparent !important;
}
.openerp .oe_portal_crm_contact .oe_portal_crm_office .oe_fold_column.oe_kanban_record {
float: none;
display: block;
width: 100%;
margin-bottom: 5px;
padding: 5px;
}
.openerp .oe_portal_crm_contact .oe_portal_crm_office li:last-child {
margin-bottom: 1em;
}
.openerp .oe_portal_crm_contact .oe_portal_crm_office ul:last-child li:last-child {
margin-bottom: 0;
}
+77 -19
View File
@@ -1,33 +1,90 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2011 OpenERP S.A (<http://www.openerp.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.osv import osv, fields
from openerp import SUPERUSER_ID
class crm_contact_us(osv.TransientModel):
""" Create new leads through the "contact us" form """
_name = 'portal_crm.crm_contact_us'
_description = 'Contact form for the portal'
_inherit = 'crm.lead'
_columns = {
'company_ids' : fields.many2many('res.company', string='Companies', readonly=True),
}
def _get_companies(self, cr, uid, context=None):
"""
Fetch companies in order to display them in the wizard view
@return a list of ids of the companies
"""
r = self.pool.get('res.company').search(cr, uid, [], context=context)
return r
def _get_current_user_email(self, cr, uid, context=None):
"""
If the user is logged in (i.e. not anonymous), get the user's email to
pre-fill the email_from field.
@return current user's email if the user isn't "anonymous", None otherwise
"""
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
if (user.login != 'anonymous'):
return user.user_email
else:
return None
_defaults = {
'email_from' : _get_current_user_email,
'company_ids' : _get_companies,
}
def create(self, cr, uid, values, context=None):
"""
Since they potentially sensitive, we don't want any user to be able to
read datas generated through this module. That's why we'll write those
information in the crm.lead table and leave blank entries in the
portal_crm.crm_contact_us table. This is why the create() method is
overridden.
"""
Since they potentially sensitive, we don't want any user to be able to
read datas generated through this module. That's why we'll write those
information in the crm.lead table and leave blank entries in the
portal_crm.crm_contact_us table. This is why the create() method is
overwritten.
"""
crm_lead = self.pool.get('crm.lead')
"""
Because of the complex inheritance of the crm.lead model and the other
models implied (like mail.thread, among others, that performs a read
when its create() method is called (in method message_get_subscribers()),
it is quite complicated to set proper rights for this object.
Therefore, user #1 will perform the creation until a better workaround
is figured out.
"""
crm_lead.create(cr, 1, dict(values,user_id=False), context)
""" Create an empty record in the portal_crm.crm_contact_us table """
return super(crm_contact_us, self).create(cr, uid, {})
"""
Because of the complex inheritance of the crm.lead model and the other
models implied (like mail.thread, among others, that performs a read
when its create() method is called (in method message_get_subscribers()),
it is quite complicated to set proper rights for this object.
Therefore, user SUPERUSER_ID will perform the creation until a better
workaround is figured out.
"""
values['contact_name'] = values['name']
crm_lead.create(cr, SUPERUSER_ID, dict(values,user_id=False), context)
"""
Create an empty record in the portal_crm.crm_contact_us table.
Since the 'name' field is mandatory, give an empty string to avoid an integrity error.
"""
return super(crm_contact_us, self).create(cr, uid, {'name': ' '})
def submit(self, cr, uid, ids, context=None):
""" When the form is submitted, redirect the user to a "Thanks" message """
@@ -36,5 +93,6 @@ class crm_contact_us(osv.TransientModel):
'view_type': 'form',
'res_model': self._name,
'res_id': ids[0],
'view_id': self.pool.get('ir.model.data').get_object_reference(cr, uid, 'portal_crm', 'wizard_contact_form_view_thanks')[1]
'view_id': self.pool.get('ir.model.data').get_object_reference(cr, uid, 'portal_crm', 'wizard_contact_form_view_thanks')[1],
'target': 'inline'
}
+69 -14
View File
@@ -8,16 +8,70 @@
<field name="model">portal_crm.crm_contact_us</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Contact Us wizard view">
<group col="2">
<field name="contact_name" string="Name"/>
<field name="name" string="Company"/>
<field name="email_from"/>
<field name="phone"/>
<field name="description" string="Your question"/>
<label string=""/>
<button string="Submit" name="submit" type="object"/>
</group>
<form string="Contact wizard view" version="7.0">
<div class="oe_portal_crm_contact">
<h1>Contact us</h1>
<table>
<tr>
<td width="70%%">
<div class="oe_portal_crm_contact_form">
<group>
<field name="name"/>
<field name="partner_name"/>
<field name="email_from"/>
<field name="phone"/>
<field name="description"/>
<button string="Submit" name="submit" type="object"/>
</group>
</div>
</td>
<td>
<div class="oe_portal_crm_office">
<field name="company_ids" widget="many2many_kanban">
<kanban>
<field name="name"/>
<field name="email"/>
<field name="phone"/>
<field name="street"/>
<field name="street2"/>
<field name="zip"/>
<field name="city"/>
<field name="country_id"/>
<field name="state_id"/>
<templates>
<t t-name="kanban-box">
<h4><field name="name"/></h4>
<ul class="oe_portal_crm_address">
<li t-if="record.street"><field name="street"/></li>
<li t-if="record.street2"><field name="street2"/></li>
<li t-if="record.zip"><field name="zip"/></li>
<li t-if="record.city"><field name="city"/></li>
<li t-if="record.country_id"><field name="country_id"/></li>
</ul>
<ul class="oe_portal_crm_contact_info">
<li t-if="record.phone"><field name="phone"/></li>
<li t-if="record.email.raw_value">
<a title="Mail" t-att-href="'mailto:'+record.email.value">
<field name="email"/>
</a>
</li>
</ul>
</t>
</templates>
</kanban>
</field>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<div class="oe_portal_crm_team">
</div>
</td>
</tr>
</table>
</div>
</form>
</field>
</record>
@@ -31,9 +85,9 @@
<field name="priority">99</field>
<field name="arch" type="xml">
<form string="Thank you">
<!--
make sure there is at least one field in the view,
otherwise the orm will try to select all the model's
<!--
make sure there is at least one field in the view,
otherwise the orm will try to select all the model's
records and this will result in a permission denied error
-->
<field name="name" invisible="1"/>
@@ -44,9 +98,10 @@
<!-- wizard action -->
<record id="action_wizard_contact_us" model="ir.actions.act_window">
<field name="name">Contact Us</field>
<field name="name">Contact</field>
<field name="res_model">portal_crm.crm_contact_us</field>
<field name="view_mode">form</field>
<field name="target">inline</field>
</record>
<!-- attach it to the portal menu -->
+1
View File
@@ -19,3 +19,4 @@
#
##############################################################################
import event
+2 -1
View File
@@ -26,12 +26,13 @@
'category': 'Tools',
'complexity': "easy",
'description': """
This module adds event menu and features to your portal if event and portal are
This module adds event menu and features to your portal if event and portal are
installed.
""",
'author': 'OpenERP SA',
'depends': ['event','portal'],
'data': [
'event_view.xml',
'security/portal_security.xml',
'portal_event_view.xml',
'security/ir.model.access.csv',
+39
View File
@@ -0,0 +1,39 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# 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 osv import osv, fields
class event_event(osv.osv):
_description = 'Portal event'
_inherit = 'event.event'
"""
``visibility``: defines if the event appears on the portal's event page
- 'public' means the event will appear for everyone (anonymous)
- 'private' means the event won't appear
"""
_columns = {
'visibility': fields.selection([('public', 'Public'),('private', 'Private')],
string='Visibility', help='Event\'s visibility in the portal\'s contact page'),
}
_defaults = {
'visibility': 'private',
}
+23
View File
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- add visibility field to the event form view -->
<record id="view_employee_form" model="ir.ui.view">
<field name="name">portal.event.form</field>
<field name="model">event.event</field>
<field name="type">form</field>
<field name="inherit_id" ref="event.view_event_form"/>
<field name="arch" type="xml">
<xpath expr="//page[last()]" position="after">
<page string="Portal Settings">
<group>
<field name="visibility"/>
</group>
</page>
</xpath>
</field>
</record>
</data>
</openerp>
+1 -1
View File
@@ -2,7 +2,7 @@
<openerp>
<data>
<menuitem name="Events" id="portal_company_events" parent="portal.portal_company"
<menuitem name="Events" id="portal_company_events" parent="portal.portal_company"
action="event.action_event_view" sequence="40"/>
</data>
@@ -1,16 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<data noupdate="1">
<record id="portal_event_rule" model="ir.rule">
<field name="name">Personal Events</field>
<field name="name">Portal Visible Events</field>
<field ref="event.model_event_event" name="model_id"/>
<field name="domain_force">[]</field>
<field name="domain_force">[('visibility', '=', 'public')]</field>
<field name="groups" eval="[(4, ref('portal.group_portal_member'))]"/>
</record>
<record id="portal_registration_rule" model="ir.rule">
<field name="name">Personal Registrations</field>
<field name="name">Portal Personal Registrations</field>
<field ref="event.model_event_registration" name="model_id"/>
<field name="domain_force">[('partner_id','child_of',user.partner_id.id)]</field>
<field name="groups" eval="[(4, ref('portal.group_portal_member'))]"/>
+22
View File
@@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# 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/>.
#
##############################################################################
import hr_employee
+46
View File
@@ -0,0 +1,46 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# 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': 'Portal HR employees',
'version': '0.1',
'category': 'Tools',
'complexity': "easy",
'description': """
This module adds a list of employees to your portal's contact page if hr and
portal_crm (which creates the contact page) are installed.
""",
'author': 'OpenERP SA',
'depends': ['hr','portal_crm'],
'data': [
'hr_employee_view.xml',
'security/ir.model.access.csv',
],
'installable': True,
'auto_install':True,
'category':'Hidden',
'css': [
'static/src/css/portal_hr_employees.css',
],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+57
View File
@@ -0,0 +1,57 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2011 OpenERP S.A (<http://www.openerp.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 osv import osv, fields
class crm_contact_us(osv.TransientModel):
""" Add employees list to the portal's contact page """
_description = 'Contact form for the portal'
_inherit = 'portal_crm.crm_contact_us'
_columns = {
'employee_ids' : fields.many2many('hr.employee', string='Employees', readonly=True),
}
""" Little trick to display employees in our wizard view """
def _get_employee(self, cr, uid, context=None):
""" Employees flagged as 'private' won't appear on the contact page """
r = self.pool.get('hr.employee').search(cr, uid, [('visibility', '!=', 'private')], context=context)
return r
_defaults = {
'employee_ids' : _get_employee,
}
class hr_employee(osv.osv):
_description = 'Portal employee'
_inherit = 'hr.employee'
"""
``visibility``: defines if the employee appears on the portal's contact page
- 'public' means the employee will appear for everyone (anonymous)
- 'private' means the employee won't appear
"""
_columns = {
'visibility': fields.selection([('public', 'Public'),('private', 'Private')],
string='Visibility', help='Employee\'s visibility in the portal\'s contact page'),
}
_defaults = {
'visibility': 'private',
}
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- add visibility field to the employee form view -->
<record id="view_employee_form" model="ir.ui.view">
<field name="name">portal_hr_employees.employee.form</field>
<field name="model">hr.employee</field>
<field name="type">form</field>
<field name="inherit_id" ref="hr.view_employee_form"/>
<field name="arch" type="xml">
<xpath expr="//page[last()]" position="after">
<page string="Portal Settings">
<group>
<field name="visibility"/>
</group>
</page>
</xpath>
</field>
</record>
<!-- a kanban view of the employees to the portal's contact page -->
<record id="wizard_contact_form_view_employees_list" model="ir.ui.view">
<field name="name">portal_hr_employees.employees_list</field>
<field name="model">portal_crm.crm_contact_us</field>
<field name="type">form</field>
<field name="inherit_id" ref="portal_crm.wizard_contact_form_view"/>
<field name="arch" type="xml">
<xpath expr="//div[@class='oe_portal_crm_team']" position="inside">
<h1>Meet the team</h1>
<field name="employee_ids" widget="many2many_kanban">
<kanban>
<field name="visibility"/>
<templates>
<t t-name="kanban-box">
<div class="oe_employee_vignette">
<div class="oe_employee_image">
<img t-att-src="kanban_image('hr.employee', 'photo', record.id.value)" class="oe_employee_picture"/>
</div>
<div class="oe_employee_details">
<h4>
<a type="edit"><field name="name"/><t t-if="record.login.raw_value"> (<field name="login"/>)</t></a>
</h4>
<ul>
<li t-if="record.job_id.raw_value"><field name="job_id"/></li>
<li t-if="record.work_phone.raw_value">Tel: <field name="work_phone"/></li>
<li t-if="record.mobile_phone.raw_value">Mobile: <field name="mobile_phone"/></li>
<li t-if="record.work_email.raw_value"><a t-attf-href="mailto:#{record.work_email.value}"><field name="work_email"/></a></li>
</ul>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</xpath>
</field>
</record>
</data>
</openerp>
@@ -0,0 +1,6 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_employee_user,hr.employee user,hr.model_hr_employee,portal.group_portal_member,1,0,0,0
access_res_partner,res.partner,base.model_res_partner,portal.group_portal_member,1,0,0,0
access_res_partner_address,res.partner_address,base.model_res_partner_address,portal.group_portal_member,1,0,0,0
access_res_partner_category,res.partner_category,base.model_res_partner_category,portal.group_portal_member,1,0,0,0
access_res_partner_title,res.partner_title,base.model_res_partner_title,portal.group_portal_member,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_employee_user hr.employee user hr.model_hr_employee portal.group_portal_member 1 0 0 0
3 access_res_partner res.partner base.model_res_partner portal.group_portal_member 1 0 0 0
4 access_res_partner_address res.partner_address base.model_res_partner_address portal.group_portal_member 1 0 0 0
5 access_res_partner_category res.partner_category base.model_res_partner_category portal.group_portal_member 1 0 0 0
6 access_res_partner_title res.partner_title base.model_res_partner_title portal.group_portal_member 1 0 0 0
@@ -0,0 +1,14 @@
/* Employees list section */
.openerp .oe_portal_crm_contact .oe_kanban_groups {
width: 100%;
}
.openerp .oe_portal_crm_contact .oe_portal_crm_team {
padding: 8px 0 0 0;
}
.openerp .oe_portal_crm_contact .oe_portal_crm_team .oe_employee_details {
width: 170px;
}
.openerp .oe_portal_crm_contact .oe_portal_crm_team .oe_employee_image {
width: 65px;
height: 65px;
}
+2 -3
View File
@@ -21,13 +21,12 @@
{
'name': 'Portal Jobs',
'name': 'Portal HR recruitment',
'version': '0.1',
'category': 'Tools',
'complexity': "easy",
'description': """
This module adds applications menu and features to your portal if hr and portal
are installed.
This module adds a jobs page to your portal if hr and portal are installed.
""",
'author': 'OpenERP SA',
'depends': ['hr','portal'],
@@ -2,8 +2,8 @@
<openerp>
<data>
<menuitem name="Jobs" id="portal_company_jobs"
parent="portal.portal_company" action="hr.action_hr_job"
<menuitem name="Jobs" id="portal_company_jobs"
parent="portal.portal_company" action="hr.action_hr_job"
sequence="20"/>
</data>
+2 -2
View File
@@ -21,12 +21,12 @@
{
'name': 'Portal Issue',
'name': 'Portal Project',
'version': '0.1',
'category': 'Tools',
'complexity': "easy",
'description': """
This module adds project menu and features (tasks) to your portal if project
This module adds project menu and features (tasks) to your portal if project
and portal are installed.
""",
'author': 'OpenERP SA',
@@ -2,3 +2,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_task,tasks,project.model_project_task,portal.group_portal_member,1,0,0,0
access_task_type,task_type,project.model_project_task_type,portal.group_portal_member,1,0,0,0
access_task_work,task_work,project.model_project_task_work,portal.group_portal_member,1,0,0,0
access_project_category,project_category,project.model_project_category,portal.group_portal_member,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_task tasks project.model_project_task portal.group_portal_member 1 0 0 0
3 access_task_type task_type project.model_project_task_type portal.group_portal_member 1 0 0 0
4 access_task_work task_work project.model_project_task_work portal.group_portal_member 1 0 0 0
5 access_project_category project_category project.model_project_category portal.group_portal_member 1 0 0 0
@@ -3,7 +3,7 @@
<data noupdate="1">
<record id="portal_task_rule" model="ir.rule">
<field name="name">Personal Task</field>
<field name="name">Portal Personal Task</field>
<field ref="project.model_project_task" name="model_id"/>
<field name="domain_force">[('partner_id','child_of',user.partner_id.id)]</field>
<field name="groups" eval="[(4, ref('portal.group_portal_member'))]"/>
+4 -1
View File
@@ -26,7 +26,7 @@
'category': 'Tools',
'complexity': "easy",
'description': """
This module adds issue menu and features to your portal if project_issue and
This module adds issue menu and features to your portal if project_issue and
portal are installed.
""",
'author': 'OpenERP SA',
@@ -39,5 +39,8 @@ portal are installed.
'installable': True,
'auto_install':True,
'category':'Hidden',
'css': [
'static/src/css/portal_project_issue.css',
],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -2,12 +2,71 @@
<openerp>
<data>
<record id="portal_project_issue_kanban_view" model="ir.ui.view">
<field name="name">Project Issue Kanban</field>
<field name="model">project.issue</field>
<field name="type">kanban</field>
<field name="arch" type="xml">
<kanban version="7.0" class="oe_portal_project_issue">
<field name="priority"/>
<field name="user_email"/>
<field name="user_id"/>
<field name="date_deadline"/>
<field name="create_date"/>
<field name="categ_ids"/>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_card oe_kanban_global_click">
<div class="oe_kanban_content">
<div>
<h1><a type="edit"><field name="name"/></a></h1>
<field name="partner_id"/> <br/>
<field name="version_id"/>
</div>
<div class="oe_kanban_footer_left">
<div class="oe_left oe_tags">
<t t-foreach="record.categ_ids.raw_value" t-as="categ_id">
<span class="oe_tag" t-att-data-categ_id="categ_id"></span>
</t>
</div>
<div class="oe_right">
Creation: <field name="create_date"/>
<span class="oe_kanban_highlight">
<t t-set="priority" t-value="record.priority.raw_value || 5"/>
<a type="object" name="set_priority" args="['3']" t-if="priority gt 3" title="Normal Priority">
<img src="/web/static/src/img/icons/star-off.png" width="16" height="16"/>
</a>
<a type="object" name="set_priority" args="['5']" t-if="priority lte 3" title="Normal Priority">
<img t-attf-src="/web/static/src/img/icons/star-#{priority lte 3 ? 'on' : 'off'}.png" width="16" height="16"/>
</a>
<a type="object" name="set_priority" args="['2']" title="High Priority">
<img t-attf-src="/web/static/src/img/icons/star-#{priority lte 2 ? 'on' : 'off'}.png" width="16" height="16"/>
</a>
<a type="object" name="set_priority" args="['1']" title="Highest Priority">
<img t-attf-src="/web/static/src/img/icons/star-#{priority == 1 ? 'on' : 'off'}.png" width="16" height="16"/>
</a>
</span>
<t t-if="record.date_deadline.raw_value and record.date_deadline.raw_value lt (new Date())">
<span t-attf-class="oe_kanban_status oe_kaban_status_red"> </span>
</t>
<img t-att-src="kanban_image('res.users', 'avatar', record.user_id.raw_value[0])" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar"/>
</div>
</div>
</div>
<div class="oe_clear"></div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="project_issue_categ_act0" model="ir.actions.act_window">
<field name="name">Issues</field>
<field name="res_model">project.issue</field>
<field name="view_type">form</field>
<field name="view_mode">kanban,tree,calendar</field>
<field name="view_id" eval="False"/>
<field name="view_mode">kanban,form</field>
<field name="view_id" ref="portal_project_issue_kanban_view"/>
<field name="domain" eval=""/>
<field name="context">{"search_default_user_id":'', "search_default_draft":'', "search_default_todo":''}</field>
<field name="search_view_id" ref="project_issue.view_project_issue_filter"/>
@@ -1,2 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_issues,project_issue,project_issue.model_project_issue,portal.group_portal_member,1,0,1,0
access_issues,project_issue,project_issue.model_project_issue,portal.group_portal_member,1,0,0,0
access_case_section,crm_case_section,crm.model_crm_case_section,portal.group_portal_member,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_issues project_issue project_issue.model_project_issue portal.group_portal_member 1 0 1 0 0
3 access_case_section crm_case_section crm.model_crm_case_section portal.group_portal_member 1 0 0 0
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<record id="portal_issue_rule" model="ir.rule">
<field name="name">Personal Issues</field>
<field name="name">Portal Personal Issues</field>
<field ref="project_issue.model_project_issue" name="model_id"/>
<field name="domain_force">[('partner_id','child_of',user.partner_id.id)]</field>
<field name="groups" eval="[(4, ref('portal.group_portal_member'))]"/>
@@ -0,0 +1,32 @@
.oe_portal_project_issue {
width: 960px;
margin: 0 auto;
}
.oe_portal_project_issue .oe_kanban_groups {
width: 100%;
}
.oe_portal_project_issue .oe_fold_column.oe_kanban_record {
float: none;
display: block;
width: 100%;
border-width: 1px;
border-radius: 4px;
border-style: solid;
border-bottom-color: #B9B9B9;
border-left-color: #D8D8D8;
border-right-color: #D8D8D8;
border-top-color: #D8D8D8;
margin-bottom: 5px;
}
.oe_portal_project_issue .oe_fold_column.oe_kanban_record .oe_kanban_content {
padding: 5px;
}
.oe_portal_project_issue .oe_fold_column.oe_kanban_record h1 {
margin: 0;
font-size: 1.2em;
font-weight: bold;
}
+8 -8
View File
@@ -4,10 +4,10 @@
<record id="action_picking_tree" model="ir.actions.act_window">
<field name="name">Delivery Orders</field>
<field name="res_model">stock.picking</field>
<field name="res_model">stock.picking.out</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('type','=','out')]</field>
<field name="context">{'default_type': 'out', 'contact_display': 'partner_address'}</field>
<field name="search_view_id" ref="stock.view_picking_out_search"/>
@@ -25,18 +25,18 @@
<field name="help">You must define a Product for everything you buy or sell. Products can be raw materials, stockable products, consumables or services. The Product form contains detailed information about your products related to procurement logistics, sales price, product category, suppliers and so on.</field>
</record>
<menuitem name="Quotations" id="portal_quotations" parent="portal.portal_orders"
<menuitem name="Quotations" id="portal_quotations" parent="portal.portal_orders"
action="sale.action_order_tree5" sequence="10"/>
<menuitem name="Sales Orders" id="portal_sales_orders" parent="portal.portal_orders"
<menuitem name="Sales Orders" id="portal_sales_orders" parent="portal.portal_orders"
action="sale.action_order_form" sequence="20"/>
<menuitem name="Delivery Orders" id="portal_delivery" parent="portal.portal_orders"
<menuitem name="Delivery Orders" id="portal_delivery" parent="portal.portal_orders"
action="action_picking_tree" sequence="30"/>
<menuitem name="Products" id="portal_products" parent="portal.portal_orders"
<menuitem name="Products" id="portal_products" parent="portal.portal_orders"
action="product_normal_action" sequence="40"/>
<menuitem name="Invoice" id="portal_invoices" parent="portal.portal_invoices_payements"
<menuitem name="Invoice" id="portal_invoices" parent="portal.portal_invoices_payements"
action="account.action_invoice_tree1" sequence="10"/>
<menuitem name="Refund/Payments" id="portal_payments" parent="portal.portal_invoices_payements"
<menuitem name="Refund/Payments" id="portal_payments" parent="portal.portal_invoices_payements"
action="account_voucher.action_vendor_receipt" sequence="20"/>
</data>
@@ -2,6 +2,7 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_sale_order,sale.order,sale.model_sale_order,portal.group_portal_member,1,0,0,0
access_sale_order_line,sale.order.line,sale.model_sale_order_line,portal.group_portal_member,1,0,0,0
access_stock_picking,stock.picking,stock.model_stock_picking,portal.group_portal_member,1,0,0,0
access_stock_picking.out,stock.picking.out,stock.model_stock_picking_out,portal.group_portal_member,1,0,0,0
access_stock_move,stock.move,stock.model_stock_move,portal.group_portal_member,1,0,0,0
access_stock_warehouse_orderpoint,stock.warehouse.orderpoint,procurement.model_stock_warehouse_orderpoint,portal.group_portal_member,1,0,0,0
access_account_invoice,account.invoice,account.model_account_invoice,portal.group_portal_member,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_sale_order sale.order sale.model_sale_order portal.group_portal_member 1 0 0 0
3 access_sale_order_line sale.order.line sale.model_sale_order_line portal.group_portal_member 1 0 0 0
4 access_stock_picking stock.picking stock.model_stock_picking portal.group_portal_member 1 0 0 0
5 access_stock_picking.out stock.picking.out stock.model_stock_picking_out portal.group_portal_member 1 0 0 0
6 access_stock_move stock.move stock.model_stock_move portal.group_portal_member 1 0 0 0
7 access_stock_warehouse_orderpoint stock.warehouse.orderpoint procurement.model_stock_warehouse_orderpoint portal.group_portal_member 1 0 0 0
8 access_account_invoice account.invoice account.model_account_invoice portal.group_portal_member 1 0 0 0
@@ -1,39 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<data noupdate="1">
<!-- Sale Portal Access Rules -->
<record id="portal_sale_order_user_rule" model="ir.rule">
<field name="name">Personal Quotations/Sales Orders</field>
<field name="name">Portal Personal Quotations/Sales Orders</field>
<field ref="sale.model_sale_order" name="model_id"/>
<field name="domain_force">[('partner_id','child_of',user.partner_id.id)]</field>
<field name="groups" eval="[(4, ref('portal.group_portal_member'))]"/>
</record>
<record id="portal_stock_picking_user_rule" model="ir.rule">
<field name="name">Personal Delivery Orders</field>
<field name="name">Portal Personal Delivery Orders</field>
<field ref="stock.model_stock_picking" name="model_id"/>
<field name="domain_force">[('partner_id','child_of',[user.partner_id.id])]</field>
<field name="groups" eval="[(4, ref('portal.group_portal_member'))]"/>
</record>
<record id="portal_stock_picking_user_rule" model="ir.rule">
<field name="name">Portal Personal Delivery Orders Out</field>
<field ref="stock.model_stock_picking_out" name="model_id"/>
<field name="domain_force">[('partner_id','child_of',[user.partner_id.id])]</field>
<field name="groups" eval="[(4, ref('portal.group_portal_member'))]"/>
</record>
<record id="portal_account_invoice_user_rule" model="ir.rule">
<field name="name">Personal Account Invoices</field>
<field name="name">Portal Personal Account Invoices</field>
<field ref="account.model_account_invoice" name="model_id"/>
<field name="domain_force">[('partner_id','child_of',user.partner_id.id)]</field>
<field name="groups" eval="[(4, ref('portal.group_portal_member'))]"/>
</record>
<record id="portal_personal_payment" model="ir.rule">
<field name="name">Personal Payments</field>
<field name="name">Portal Personal Payments</field>
<field ref="account_voucher.model_account_voucher" name="model_id"/>
<field name="domain_force">[('partner_id','child_of',user.partner_id.id)]</field>
<field name="groups" eval="[(4, ref('portal.group_portal_member'))]"/>
</record>
<record id="portal_personal_contact" model="ir.rule">
<field name="name">Personal Contacts</field>
<field name="name">Portal Personal Contacts</field>
<field ref="base.model_res_partner" name="model_id"/>
<field name="domain_force">[('id','child_of',user.partner_id.id)]</field>
<field name="groups" eval="[(4, ref('portal.group_portal_member'))]"/>
+3 -3
View File
@@ -73,7 +73,7 @@
<div class="oe_title">
<div class="oe_edit_only">
<label for="name" string="Product Name"/>
<label for="name" string="Product Name"/>
</div>
<h1>
<field name="name"/>
@@ -95,12 +95,12 @@
</group>
<group string="Procurement">
<field name="type"/>
<field name="procure_method"/>
<field name="procure_method" groups="base.group_user"/>
<field name="supply_method" groups="base.group_user"/>
</group>
<group string="Prices">
<field name="list_price"/>
<field name="cost_method"/>
<field name="cost_method" groups="base.group_user"/>
<field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}"/>
<field name="price_margin" groups="product.group_product_variant"/>
<field name="price_extra" groups="product.group_product_variant"/>
@@ -2,9 +2,7 @@
<openerp>
<data>
#---------------------------------------------------------
# product price list
#---------------------------------------------------------
<!-- Product price list -->
<record model="ir.ui.view" id="product_pricelist_view_tree">
<field name="name">product.pricelist.tree</field>
<field name="model">product.pricelist</field>
@@ -26,5 +24,6 @@
</field>
</field>
</record>
</data>
</openerp>
</openerp>
+20 -11
View File
@@ -220,7 +220,7 @@ class project(osv.osv):
'followers': fields.function(_get_followers, method=True, fnct_search=_search_followers,
type='many2many', relation='res.users', string='Followers'),
}
def dummy(self, cr, uid, ids, context):
return True
@@ -566,7 +566,7 @@ class task(base_stage, osv.osv):
# restore order of the search
result.sort(lambda x,y: cmp(stage_ids.index(x[0]), stage_ids.index(y[0])))
return result
def _read_group_user_id(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
res_users = self.pool.get('res.users')
project_id = self._resolve_project_id_from_context(cr, uid, context=context)
@@ -700,6 +700,7 @@ class task(base_stage, osv.osv):
When the case is over, the state is set to \'Done\'.\
If the case needs to be reviewed then the state is \
set to \'Pending\'.'),
'categ_ids': fields.many2many('project.category', string='Categories'),
'kanban_state': fields.selection([('normal', 'Normal'),('blocked', 'Blocked'),('done', 'Ready To Pull')], 'Kanban State',
help="A task's kanban state indicates special situations affecting it:\n"
" * Normal is the default situation\n"
@@ -903,7 +904,7 @@ class task(base_stage, osv.osv):
return True
def action_close(self, cr, uid, ids, context=None):
""" This action closes the task
""" This action closes the task
"""
task_id = len(ids) and ids[0] or False
self._check_child_task(cr, uid, ids, context=context)
@@ -913,7 +914,7 @@ class task(base_stage, osv.osv):
def do_close(self, cr, uid, ids, context=None):
""" Compatibility when changing to case_close. """
return self.case_close(cr, uid, ids, context=context)
def case_close(self, cr, uid, ids, context=None):
""" Closes Task """
if not isinstance(ids, list): ids = [ids]
@@ -946,7 +947,7 @@ class task(base_stage, osv.osv):
def do_cancel(self, cr, uid, ids, context=None):
""" Compatibility when changing to case_cancel. """
return self.case_cancel(cr, uid, ids, context=context)
def case_cancel(self, cr, uid, ids, context=None):
tasks = self.browse(cr, uid, ids, context=context)
self._check_child_task(cr, uid, ids, context=context)
@@ -958,7 +959,7 @@ class task(base_stage, osv.osv):
def do_open(self, cr, uid, ids, context=None):
""" Compatibility when changing to case_open. """
return self.case_open(cr, uid, ids, context=context)
def case_open(self, cr, uid, ids, context=None):
if not isinstance(ids,list): ids = [ids]
self.case_set(cr, uid, ids, 'open', {'date_start': fields.datetime.now()}, context=context)
@@ -968,7 +969,7 @@ class task(base_stage, osv.osv):
def do_draft(self, cr, uid, ids, context=None):
""" Compatibility when changing to case_draft. """
return self.case_draft(cr, uid, ids, context=context)
def case_draft(self, cr, uid, ids, context=None):
self.case_set(cr, uid, ids, 'draft', {}, context=context)
self.case_draft_send_note(cr, uid, ids, context=context)
@@ -977,11 +978,11 @@ class task(base_stage, osv.osv):
def do_pending(self, cr, uid, ids, context=None):
""" Compatibility when changing to case_pending. """
return self.case_pending(cr, uid, ids, context=context)
def case_pending(self, cr, uid, ids, context=None):
self.case_set(cr, uid, ids, 'pending', {}, context=context)
return self.case_pending_send_note(cr, uid, ids, context=context)
def _delegate_task_attachments(self, cr, uid, task_id, delegated_task_id, context=None):
attachment = self.pool.get('ir.attachment')
attachment_ids = attachment.search(cr, uid, [('res_model', '=', self._name), ('res_id', '=', task_id)], context=context)
@@ -1083,7 +1084,7 @@ class task(base_stage, osv.osv):
new_stage = vals.get('stage_id')
vals_reset_kstate = dict(vals, kanban_state='normal')
for t in self.browse(cr, uid, ids, context=context):
#TO FIX:Kanban view doesn't raise warning
#TO FIX:Kanban view doesn't raise warning
#stages = [stage.id for stage in t.project_id.type_ids]
#if new_stage not in stages:
#raise osv.except_osv(_('Warning !'), _('Stage is not defined in the project.'))
@@ -1130,7 +1131,7 @@ class task(base_stage, osv.osv):
result += "\n"
return result
# ---------------------------------------------------
# OpenChatter methods and notifications
# ---------------------------------------------------
@@ -1367,3 +1368,11 @@ class project_task_history_cumulative(osv.osv):
)
""")
class project_category(osv.osv):
""" Category of project's task (or issue) """
_name = "project.category"
_description = "Category of project's task, issue, ..."
_columns = {
'name': fields.char('Name', size=64, required=True, translate=True),
}
+93 -92
View File
@@ -2,50 +2,50 @@
<openerp>
<data noupdate="1">
<!-- Users -->
<!-- Users -->
<record id="base.user_demo" model="res.users">
<field eval="[(4, ref('base.group_sale_salesman')),(4, ref('group_project_user'))]" name="groups_id"/>
<field name="groups_id" eval="[(4, ref('base.group_sale_salesman')),(4, ref('group_project_user'))]"/>
</record>
<record id="base.user_niv" model="res.users">
<field name="name">Nicolas</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_manager')])]" name="groups_id"/>
<field name="groups_id" eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_manager')])]"/>
<field name="login">niv</field>
<field name="password">niv</field>
</record>
<record id="base.user_al" model="res.users">
<field name="name">Antony</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_manager')])]" name="groups_id"/>
<field name="groups_id" eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_manager')])]"/>
<field name="login">al</field>
<field name="password">al</field>
</record>
<record id="base.user_qdp" model="res.users">
<field name="name">Quentin</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_user')])]" name="groups_id"/>
<field name="groups_id" eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_user')])]"/>
<field name="login">qdp</field>
<field name="password">qdp</field>
</record>
<record id="base.user_fpi" model="res.users">
<field name="name">Francois</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_user')])]" name="groups_id"/>
<field name="groups_id" eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_user')])]"/>
<field name="login">fpi</field>
<field name="password">fpi</field>
</record>
<record id="base.user_jth" model="res.users">
<field name="name">Julien</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_user')])]" name="groups_id"/>
<field name="groups_id" eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_user')])]"/>
<field name="login">jth</field>
<field name="password">jth</field>
</record>
<record id="base.user_mit" model="res.users">
<field name="name">Minh</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_user')])]" name="groups_id"/>
<field name="groups_id" eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_user')])]"/>
<field name="login">mit</field>
<field name="password">mit</field>
</record>
<record id="base.user_vad" model="res.users">
<field name="name">Valérie</field>
<field eval="[(6, 0, [ref('base.group_user')])]" name="groups_id"/>
<field name="groups_id" eval="[(6, 0, [ref('base.group_user')])]"/>
<field name="login">vad</field>
<field name="password">vad</field>
</record>
@@ -56,68 +56,83 @@
<field name="state">open</field>
<field name="type">normal</field>
<field name="description">Integrate a Sale and Warehouse Management.</field>
<field eval="[(6, 0, [
<field name="members" eval="[(6, 0, [
ref('base.user_niv'),
ref('base.user_al'),
ref('base.user_qdp'),
ref('base.user_fpi'),
ref('base.user_jth'),
ref('base.user_mit'),
ref('base.user_vad')])]" name="members"/>
ref('base.user_vad')])]"/>
<field name="user_id" ref="base.user_al"/>
<field name="name">Integrate a Sale and Warehouse Management.</field>
</record>
<!-- Tasks -->
<!-- Categories -->
<record id="project_category_01" model="project.category">
<field name="name">Partner's suggestion</field>
</record>
<record id="project_category_02" model="project.category">
<field name="name">Feature request</field>
</record>
<record id="project_category_03" model="project.category">
<field name="name">Experiment</field>
</record>
<record id="project_category_04" model="project.category">
<field name="name">Usability</field>
</record>
<!-- Tasks -->
<record id="project_task_1" model="project.task">
<field eval="100.0" name="planned_hours"/>
<field eval="100.0" name="remaining_hours"/>
<field name="planned_hours" eval="100.0"/>
<field name="remaining_hours" eval="100.0"/>
<field name="user_id" ref="base.user_niv"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Prepare Requirements Document</field>
<field name="stage_id" ref="project_tt_specification"/>
<field name="color">3</field>
<field name="categ_ids" eval="[(6, 0, [
ref('project.project_category_02')])]"/>
</record>
<record id="project_task_2" model="project.task">
<field eval="80.0" name="planned_hours"/>
<field eval="80.0" name="remaining_hours"/>
<field name="planned_hours" eval="80.0"/>
<field name="remaining_hours" eval="80.0"/>
<field name="user_id" ref="base.user_niv"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Make SRS</field>
<field name="stage_id" ref="project_tt_specification"/>
</record>
<record id="project_task_3" model="project.task">
<field eval="40.0" name="planned_hours"/>
<field eval="40.0" name="remaining_hours"/>
<field name="planned_hours" eval="40.0"/>
<field name="remaining_hours" eval="40.0"/>
<field name="user_id" ref="base.user_al"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Design Use Cases</field>
<field name="date_deadline" eval="time.strftime('%Y-%m-24')"/>
<field name="stage_id" ref="project_tt_specification"/>
<field name="color">4</field>
<field name="categ_ids" eval="[(6, 0, [
ref('project_category_02'),
ref('project_category_04')])]"/>
</record>
<record id="project_task_4" model="project.task">
<field eval="25.0" name="planned_hours"/>
<field eval="25.0" name="remaining_hours"/>
<field name="planned_hours" eval="25.0"/>
<field name="remaining_hours" eval="25.0"/>
<field name="user_id" ref="base.user_al"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Budget Planning</field>
<field name="description">Use the account_budget module</field>
<field name="date_deadline" eval="time.strftime('%Y-%m-19')"/>
<field name="color">3</field>
<field name="color">5</field>
<field name="stage_id" ref="project_tt_specification"/>
</record>
<record id="project_task_5" model="project.task">
<field eval="25.0" name="planned_hours"/>
<field eval="25.0" name="remaining_hours"/>
<field name="planned_hours" eval="25.0"/>
<field name="remaining_hours" eval="25.0"/>
<field name="user_id" ref="base.user_al"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
@@ -127,51 +142,48 @@
<field name="date_deadline" eval="time.strftime('%Y-%m-%d')"/>
<field name="stage_id" ref="project_tt_specification"/>
</record>
<record id="project_task_6" model="project.task">
<field eval="20.0" name="planned_hours"/>
<field eval="20.0" name="remaining_hours"/>
<field name="planned_hours" eval="20.0"/>
<field name="remaining_hours" eval="20.0"/>
<field name="user_id" ref="base.user_al"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Risk Management Planning</field>
<field name="stage_id" ref="project_tt_specification"/>
</record>
<record id="project_task_7" model="project.task">
<field eval="30.0" name="planned_hours"/>
<field eval="30.0" name="remaining_hours"/>
<field name="planned_hours" eval="30.0"/>
<field name="remaining_hours" eval="30.0"/>
<field name="user_id" ref="base.user_al"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Create Project Schedules</field>
<field name="stage_id" ref="project_tt_specification"/>
</record>
<record id="project_task_8" model="project.task">
<field eval="10.0" name="planned_hours"/>
<field eval="10.0" name="remaining_hours"/>
<field name="planned_hours" eval="10.0"/>
<field name="remaining_hours" eval="10.0"/>
<field name="user_id" ref="base.user_al"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Dataflow Design</field>
<field name="priority">0</field>
<field name="stage_id" ref="project_tt_specification"/>
<field name="categ_ids" eval="[(6, 0, [
ref('project.project_category_01')])]"/>
</record>
<record id="project_task_9" model="project.task">
<field eval="50.0" name="planned_hours"/>
<field eval="50.0" name="remaining_hours"/>
<field name="planned_hours" eval="50.0"/>
<field name="remaining_hours" eval="50.0"/>
<field name="user_id" ref="base.user_al"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">User Interface Design</field>
<field name="stage_id" ref="project_tt_specification"/>
</record>
<record id="project_task_10" model="project.task">
<field eval="40.0" name="planned_hours"/>
<field eval="40.0" name="remaining_hours"/>
<field name="planned_hours" eval="40.0"/>
<field name="remaining_hours" eval="40.0"/>
<field name="user_id" ref="base.user_fpi"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
@@ -179,56 +191,55 @@
<field name="kanban_state">blocked</field>
<field name="stage_id" ref="project_tt_development"/>
</record>
<record id="project_task_11" model="project.task">
<field eval="90.0" name="planned_hours"/>
<field eval="90.0" name="remaining_hours"/>
<field name="planned_hours" eval="90.0"/>
<field name="remaining_hours" eval="90.0"/>
<field name="user_id" ref="base.user_fpi"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Develop module in Warehouse</field>
<field name="stage_id" ref="project_tt_merge"/>
</record>
<function model="project.task" name="do_close" eval="[ref('project_task_11')], {'install_mode': True}"/>
<record id="project_task_12" model="project.task">
<field eval="20.0" name="planned_hours"/>
<field eval="20.0" name="remaining_hours"/>
<field name="planned_hours" eval="20.0"/>
<field name="remaining_hours" eval="20.0"/>
<field name="user_id" ref="base.user_fpi"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Integrate Modules</field>
<field name="stage_id" ref="project_tt_development"/>
<field name="color">6</field>
<field name="categ_ids" eval="[(6, 0, [
ref('project_category_01'),
ref('project_category_03')])]"/>
</record>
<function model="project.task" name="do_close" eval="[ref('project_task_12')], {'install_mode': True}"/>
<record id="project_task_13" model="project.task">
<field eval="50.0" name="planned_hours"/>
<field eval="50.0" name="remaining_hours"/>
<field name="planned_hours" eval="50.0"/>
<field name="remaining_hours" eval="50.0"/>
<field name="user_id" ref="base.user_mit"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Unit Testing</field>
<field name="stage_id" ref="project_tt_development"/>
</record>
<function model="project.task" name="do_pending" eval="[ref('project_task_13')], {'install_mode': True}"/>
<record id="project_task_14" model="project.task">
<field eval="30.0" name="planned_hours"/>
<field eval="30.0" name="remaining_hours"/>
<field name="planned_hours" eval="30.0"/>
<field name="remaining_hours" eval="30.0"/>
<field name="user_id" ref="base.user_mit"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Regression Test</field>
<field name="stage_id" ref="project_tt_development"/>
<field name="stage_id" ref="project_tt_development"/>
</record>
<record id="project_task_15" model="project.task">
<field eval="15.0" name="planned_hours"/>
<field eval="15.0" name="remaining_hours"/>
<field name="planned_hours" eval="15.0"/>
<field name="remaining_hours" eval="15.0"/>
<field name="user_id" ref="base.user_fpi"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
@@ -236,11 +247,10 @@
<field name="stage_id" ref="project_tt_specification"/>
<field name="date_start">2011-02-06</field>
</record>
<record id="project_task_16" model="project.task">
<field eval="10" name="sequence"/>
<field eval="40.0" name="planned_hours"/>
<field eval="40.0" name="remaining_hours"/>
<field name="sequence" eval="10"/>
<field name="planned_hours" eval="40.0"/>
<field name="remaining_hours" eval="40.0"/>
<field name="user_id" ref="base.user_mit"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
@@ -251,8 +261,8 @@
<function model="project.task" name="do_open" eval="[ref('project_task_16')], {'install_mode': True}"/>
<record id="project_task_17" model="project.task">
<field eval="5.0" name="planned_hours"/>
<field eval="5.0" name="remaining_hours"/>
<field name="planned_hours" eval="5.0"/>
<field name="remaining_hours" eval="5.0"/>
<field name="user_id" ref="base.user_niv"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
@@ -262,8 +272,8 @@
<function model="project.task" name="do_open" eval="[ref('project_task_17')], {'install_mode': True}"/>
<record id="project_task_18" model="project.task">
<field eval="10.0" name="planned_hours"/>
<field eval="10.0" name="remaining_hours"/>
<field name="planned_hours" eval="10.0"/>
<field name="remaining_hours" eval="10.0"/>
<field name="user_id" ref="base.user_niv"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
@@ -271,45 +281,37 @@
<field name="stage_id" ref="project_tt_specification"/>
</record>
<!--
Resource: project.project
-->
<!-- Resource: project.project-->
<!-- Projects -->
<!-- <record id="all_projects_account" model="project.project">
<field name="name">Projects</field>
<field name="code">3</field>
</record> -->
<record id="project_project_9" model="project.project">
<field name="name">OpenERP Integration</field>
<field name="parent_id" ref="all_projects_account"/>
<field name="user_id" ref="base.user_root"/>
<field eval="[(6, 0, [ref('project_tt_specification'),ref('project_tt_development'),ref('project_tt_testing'),ref('project_tt_merge')])]" name="type_ids"/>
<field name="type_ids" eval="[(6, 0, [ref('project_tt_specification'),ref('project_tt_development'),ref('project_tt_testing'),ref('project_tt_merge')])]"/>
</record>
<record id="project_project_21" model="project.project">
<field name="priority">10</field>
<field name="parent_id" ref="all_projects_account"/>
<field name="name">Study + Prototype</field>
<field name="user_id" ref="base.user_root"/>
<field eval="[(6, 0, [ref('project_tt_specification'),ref('project_tt_development')])]" name="type_ids"/>
<field eval="[(6, 0, [ref('base.user_root'),ref('base.user_demo')])]" name="members"/>
<field name="type_ids" eval="[(6, 0, [ref('project_tt_specification'),ref('project_tt_development')])]"/>
<field name="members" eval="[(6, 0, [ref('base.user_root'),ref('base.user_demo')])]"/>
</record>
<record id="project_project_22" model="project.project">
<field name="priority">20</field>
<field name="parent_id" ref="all_projects_account"/>
<field name="name">Specific Developments</field>
<field name="user_id" ref="base.user_root"/>
<field eval="[(6, 0, [ref('project_tt_specification'), ref('project_tt_development')])]" name="type_ids"/>
<field eval="[(6, 0, [ref('base.user_root'),ref('base.user_demo')])]" name="members"/>
<field name="type_ids" eval="[(6, 0, [ref('project_tt_specification'), ref('project_tt_development')])]"/>
<field name="members" eval="[(6, 0, [ref('base.user_root'),ref('base.user_demo')])]"/>
</record>
<record id="project_project_23" model="project.project">
<field name="priority">30</field>
<field name="parent_id" ref="all_projects_account"/>
<field name="name">Install, data import, configuration</field>
<field eval="[(6, 0, [ref('project_tt_development')])]" name="type_ids"/>
<field eval="[(6, 0, [ref('base.user_root'),ref('base.user_demo')])]" name="members"/>
<field name="type_ids" eval="[(6, 0, [ref('project_tt_development')])]"/>
<field name="members" eval="[(6, 0, [ref('base.user_root'),ref('base.user_demo')])]"/>
</record>
<!-- Tasks -->
@@ -323,7 +325,7 @@
<field name="name">Specific adaptation to MRP</field>
</record>
<function model="project.task" name="do_open" eval="[ref('project_task_116')], {'install_mode': True}"/>
<record id="project_task_130" model="project.task">
<field name="planned_hours">16.0</field>
<field name="remaining_hours">16.0</field>
@@ -343,7 +345,7 @@
<field name="name">Modifications asked by the customer.</field>
</record>
<function model="project.task" name="do_open" eval="[ref('project_task_131')], {'install_mode': True}"/>
<record id="project_task_184" model="project.task">
<field name="planned_hours">16.0</field>
<field name="remaining_hours">16.0</field>
@@ -352,7 +354,7 @@
<field name="priority">0</field>
<field name="project_id" ref="project_project_21"/>
<field name="name">Customer analysis + Architecture</field>
<field name="color">3</field>
<field name="color">7</field>
</record>
<record id="project_task_186" model="project.task">
<field name="sequence">15</field>
@@ -362,7 +364,7 @@
<field name="user_id" eval="False"/>
<field name="project_id" ref="project_project_21"/>
<field name="name">Internal testing + Software Install</field>
<field name="color">4</field>
<field name="color">8</field>
</record>
<record id="project_task_188" model="project.task">
<field name="sequence">17</field>
@@ -375,7 +377,7 @@
<field name="name">Analysis, Data Importation</field>
</record>
<function model="project.task" name="do_open" eval="[ref('project_task_188')], {'install_mode': True}"/>
<record id="project_task_189" model="project.task">
<field name="sequence">20</field>
<field name="planned_hours">16.0</field>
@@ -386,7 +388,7 @@
<field name="stage_id" ref="project_tt_specification"/>
</record>
<function model="project.task" name="do_open" eval="[ref('project_task_189')], {'install_mode': True}"/>
<record id="project_task_190" model="project.task">
<field name="sequence">20</field>
<field name="planned_hours">32.0</field>
@@ -399,8 +401,7 @@
<!-- Schedule tasks to assign users and dates -->
<function model="project.project" name="schedule_tasks"
eval="[ref('project_project_21'), ref('project_project_22'), ref('project_project_23')], {'install_mode': True}"
/>
eval="[ref('project_project_21'), ref('project_project_22'), ref('project_project_23')], {'install_mode': True}"/>
</data>
</openerp>
+12 -1
View File
@@ -431,6 +431,9 @@
<field name="progress" widget="progressbar"
groups="project.group_time_work_estimation_tasks"/>
</group>
<group>
<field name="categ_ids" widget="many2many_tags"/>
</group>
</group>
<notebook>
<page string="Description">
@@ -512,6 +515,7 @@
<field name="date_deadline"/>
<field name="message_summary"/>
<field name="needaction_pending"/>
<field name="categ_ids"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
@@ -554,6 +558,13 @@
<t t-esc="Math.round(record.remaining_hours.raw_value)"/>
</span>
</div>
<div class="oe_kanban_footer_left" style="margin-top:5px;">
<div class="oe_left oe_tags">
<t t-foreach="record.categ_ids.raw_value" t-as="categ_id">
<span class="oe_tag" t-att-data-categ_id="categ_id"></span>
</t>
</div>
</div>
</div>
<div class="oe_clear"></div>
</div>
@@ -820,7 +831,7 @@
</field>
</record>
<!-- User Form-->
<!-- User Form -->
<act_window context="{'search_default_user_id': [active_id], 'default_user_id': active_id}" domain="[('state', '&lt;&gt;', 'cancelled'),('state', '&lt;&gt;', 'done')]" id="act_res_users_2_project_task_opened" name="Assigned Tasks" res_model="project.task" src_model="res.users" view_mode="tree,form,gantt,calendar,graph" view_type="form"/>
</data>
+53 -17
View File
@@ -1,25 +1,61 @@
openerp.project = function(openerp) {
openerp.web_kanban.KanbanView.include({
on_groups_started: function() {
project_display_members_names: function() {
/*
* Set avatar title for members.
* In kanban views, many2many fields only return a list of ids.
* We can implement return value of m2m fields like [(1,"Adminstration"),...].
*/
var self = this;
self._super.apply(this, arguments);
if (this.dataset.model === 'project.project') {
/* Set avatar title for members.
In many2many fields, returns only list of ids.
we can implement return value of m2m fields like [(1,"Adminstration"),...].
*/
var members_ids = [];
this.$element.find('.oe_kanban_project_avatars img').each(function() {
members_ids.push($(this).data('member_id'));
});
var dataset = new openerp.web.DataSetSearch(this, 'res.users', self.session.context, [['id', 'in', _.uniq(members_ids)]]);
dataset.read_slice(['id', 'name']).then(function(result) {
_.each(result, function(v, k) {
self.$element.find('.oe_kanban_project_avatars img[data-member_id=' + v.id + ']').attr('title', v.name).tipsy({
offset: 10
});
var members_ids = [];
// Collect members ids
self.$element.find('img[data-member_id]').each(function() {
members_ids.push($(this).data('member_id'));
});
// Find their matching names
var dataset = new openerp.web.DataSetSearch(self, 'res.users', self.session.context, [['id', 'in', _.uniq(members_ids)]]);
dataset.read_slice(['id', 'name']).then(function(result) {
_.each(result, function(v, k) {
// Set the proper value in the DOM
self.$element.find('img[data-member_id=' + v.id + ']').attr('title', v.name).tipsy({
offset: 10
});
});
});
},
project_display_categ_names: function() {
/*
* Set proper names to project categories.
* In kanban views, many2many fields only return a list of ids.
* Therefore, we have to fetch the matching data by ourselves.
*/
var self = this;
var categ_ids = [];
// Collect categories ids
self.$element.find('span[data-categ_id]').each(function() {
categ_ids.push($(this).data('categ_id'));
});
// Find their matching names
var dataset = new openerp.web.DataSetSearch(self, 'project.category', self.session.context, [['id', 'in', _.uniq(categ_ids)]]);
dataset.read_slice(['id', 'name']).then(function(result) {
_.each(result, function(v, k) {
// Set the proper value in the DOM and display the element
self.$element.find('span[data-categ_id=' + v.id + ']').text(v.name);
});
});
},
on_groups_started: function() {
var self = this;
self._super.apply(self, arguments);
if (self.dataset.model === 'project.project') {
self.project_display_members_names();
} else if (self.dataset.model === 'project.task') {
self.project_display_categ_names();
}
}
});
+5 -2
View File
@@ -25,7 +25,7 @@
'version': '1.0',
'category': 'Project Management',
"sequence": 22,
"summary": "Multi Level Support",
"summary": "Support, Bug Traker, Helpdesk",
'description': """
This module provides Issues/Bugs Management in Project.
=======================================================
@@ -39,7 +39,7 @@ and decide on their status as they evolve.
'website': 'http://www.openerp.com',
'images': ['images/issue_analysis.jpeg','images/project_issue.jpeg'],
'depends': [
'base_status',
'base_status',
'crm',
'project',
],
@@ -66,6 +66,9 @@ and decide on their status as they evolve.
'auto_install': False,
'application': True,
'certificate' : '001236490750848623845',
'js': [
'static/src/js/project_issue.js',
],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -18,7 +18,7 @@
<field name="progress" widget="progressbar" attrs="{'invisible':[('task_id','=',False)]}"/>
<field name="stage_id" widget="selection" readonly="1"/>
<field name="state" groups="base.group_no_one"/>
<field name="categ_id" invisible="1"/>
<field name="categ_ids" invisible="1"/>
<field name="task_id" invisible="1"/>
</tree>
</field>
+10 -28
View File
@@ -236,7 +236,7 @@ class project_issue(base_stage, osv.osv):
'date_closed': fields.datetime('Closed', readonly=True,select=True),
'date': fields.datetime('Date'),
'channel_id': fields.many2one('crm.case.channel', 'Channel', help="Communication channel."),
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('object_id.model', '=', 'crm.project.bug')]"),
'categ_ids': fields.many2many('project.category', string='Categories'),
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority', select=True),
'version_id': fields.many2one('project.issue.version', 'Version'),
'stage_id': fields.many2one ('project.task.type', 'Stage',
@@ -279,7 +279,6 @@ class project_issue(base_stage, osv.osv):
'section_id': lambda s, cr, uid, c: s._get_default_section_id(cr, uid, c),
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.helpdesk', context=c),
'priority': crm.AVAILABLE_PRIORITIES[2][0],
'categ_id' : lambda *a: False,
}
_group_by_full = {
@@ -304,11 +303,11 @@ class project_issue(base_stage, osv.osv):
def convert_issue_task(self, cr, uid, ids, context=None):
if context is None:
context = {}
case_obj = self.pool.get('project.issue')
data_obj = self.pool.get('ir.model.data')
task_obj = self.pool.get('project.task')
result = data_obj._get_id(cr, uid, 'project', 'view_task_search_form')
res = data_obj.read(cr, uid, result, ['res_id'])
id2 = data_obj._get_id(cr, uid, 'project', 'view_task_form2')
@@ -351,23 +350,6 @@ class project_issue(base_stage, osv.osv):
'nodestroy': True
}
def _convert(self, cr, uid, ids, xml_id, context=None):
data_obj = self.pool.get('ir.model.data')
id2 = data_obj._get_id(cr, uid, 'project_issue', xml_id)
categ_id = False
if id2:
categ_id = data_obj.browse(cr, uid, id2, context=context).res_id
if categ_id:
self.write(cr, uid, ids, {'categ_id': categ_id})
return True
def convert_to_feature(self, cr, uid, ids, context=None):
return self._convert(cr, uid, ids, 'feature_request_categ', context=context)
def convert_to_bug(self, cr, uid, ids, context=None):
return self._convert(cr, uid, ids, 'bug_categ', context=context)
def copy(self, cr, uid, id, default=None, context=None):
issue = self.read(cr, uid, id, ['name'], context=context)
if not default:
@@ -376,7 +358,7 @@ class project_issue(base_stage, osv.osv):
default['name'] = issue['name'] + _(' (copy)')
return super(project_issue, self).copy(cr, uid, id, default=default,
context=context)
def write(self, cr, uid, ids, vals, context=None):
#Update last action date every time the user change the stage, the state or send a new email
logged_fields = ['stage_id', 'state', 'message_ids']
@@ -463,7 +445,7 @@ class project_issue(base_stage, osv.osv):
# -------------------------------------------------------
# Mail gateway
# -------------------------------------------------------
def message_new(self, cr, uid, msg, custom_values=None, context=None):
""" Overrides mail_thread message_new that is called by the mailgateway
through message_process.
@@ -485,7 +467,7 @@ class project_issue(base_stage, osv.osv):
custom_values.update(self.message_partner_by_email(cr, uid, msg.get('from'), context=context))
res_id = super(project_issue, self).message_new(cr, uid, msg, custom_values=custom_values, context=context)
self.convert_to_bug(cr, uid, [res_id], context=context)
# self.convert_to_bug(cr, uid, [res_id], context=context)
return res_id
def message_update(self, cr, uid, ids, msg, update_vals=None, context=None):
@@ -515,7 +497,7 @@ class project_issue(base_stage, osv.osv):
update_vals[key] = res.group(2).lower()
return super(project_issue, self).message_update(cr, uid, ids, update_vals=update_vals, context=context)
# -------------------------------------------------------
# OpenChatter methods and notifications
# -------------------------------------------------------
@@ -588,18 +570,18 @@ project()
class account_analytic_account(osv.osv):
_inherit = 'account.analytic.account'
_description = 'Analytic Account'
_columns = {
'use_issues' : fields.boolean('Issues Tracking', help="Check this field if this project manages issues"),
}
def on_change_template(self, cr, uid, ids, template_id, context=None):
res = super(account_analytic_account, self).on_change_template(cr, uid, ids, template_id, context=context)
if template_id and 'value' in res:
template = self.browse(cr, uid, template_id, context=context)
res['value']['use_issues'] = template.use_issues
return res
def _trigger_project_creation(self, cr, uid, vals, context=None):
res = super(account_analytic_account, self)._trigger_project_creation(cr, uid, vals, context=context)
return res or vals.get('use_issues')
+218 -215
View File
@@ -1,236 +1,239 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<data noupdate="1">
<record id="crm_case_buginaccountsmodule0" model="project.issue">
<field eval="time.strftime('%Y-%m-08 10:15:00')" name="date"/>
<field eval="&quot;5&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_agrolait"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="bug_categ"/>
<field name="project_id" ref="project.project_project_22"/>
<field eval="15.0" name="duration"/>
<field eval="&quot;Bug in Accounts module&quot;" name="name"/>
<field eval="&quot;agr@agrolait.com&quot;" name="email_from"/>
<field name="stage_id" ref="project.project_tt_specification"/>
</record>
<!-- Categories -->
<record id="project_issue_category_01" model="project.category">
<field name="name">Little problem</field>
</record>
<record id="project_issue_category_02" model="project.category">
<field name="name">PBCK</field>
</record>
<record id="project_issue_category_03" model="project.category">
<field name="name">Deadly bug</field>
</record>
<record id="crm_case_programnotgivingproperoutput0" model="project.issue">
<field eval="time.strftime('%Y-%m-15 12:50:00')" name="date"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_asus"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="3.5" name="duration"/>
<field name="categ_id" ref="bug_categ"/>
<field eval="&quot;Program not giving proper output&quot;" name="name"/>
<field name="project_id" ref="project.project_project_22"/>
<field name="stage_id" ref="project.project_tt_specification"/>
</record>
<!-- Issues -->
<record id="crm_case_buginaccountsmodule0" model="project.issue">
<field eval="time.strftime('%Y-%m-08 10:15:00')" name="date"/>
<field name="priority">5</field>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_agrolait"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field name="project_id" ref="project.project_project_22"/>
<field eval="15.0" name="duration"/>
<field name="name">Bug in Accounts module</field>
<field name="email_from">agr@agrolait.com</field>
<field name="stage_id" ref="project.project_tt_specification"/>
<field name="categ_ids" eval="[(6, 0, [
ref('project_issue_category_01')])]"/>
</record>
<record id="crm_case_outputincorrect0" model="project.issue">
<field eval="time.strftime('%Y-%m-18 14:30:00')" name="date"/>
<field eval="&quot;4&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="2.3" name="duration"/>
<field name="categ_id" ref="bug_categ"/>
<field name="project_id" ref="project.project_project_23"/>
<field eval="&quot;Output incorrect&quot;" name="name"/>
<field name="stage_id" ref="project.project_tt_development"/>
</record>
<record id="crm_case_programnotgivingproperoutput0" model="project.issue">
<field eval="time.strftime('%Y-%m-15 12:50:00')" name="date"/>
<field name="priority">3</field>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_asus"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="3.5" name="duration"/>
<field name="name">Program not giving proper output</field>
<field name="project_id" ref="project.project_project_22"/>
<field name="stage_id" ref="project.project_tt_specification"/>
</record>
<record id="crm_case_problemloadingpage0" model="project.issue">
<field eval="time.strftime('%Y-%m-20 15:25:05')" name="date"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_14"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="4.0" name="duration"/>
<field name="categ_id" ref="bug_categ"/>
<field name="project_id" ref="project.project_project_22"/>
<field eval="&quot;Problem loading page&quot;" name="name"/>
<field name="stage_id" ref="project.project_tt_testing"/>
</record>
<record id="crm_case_outputincorrect0" model="project.issue">
<field eval="time.strftime('%Y-%m-18 14:30:00')" name="date"/>
<field name="priority">4</field>
<field name="user_id" ref="base.user_demo"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="2.3" name="duration"/>
<field name="project_id" ref="project.project_project_23"/>
<field name="name">Output incorrect</field>
<field name="stage_id" ref="project.project_tt_development"/>
<field name="categ_ids" eval="[(6, 0, [
ref('project_issue_category_01'),
ref('project_issue_category_02')])]"/>
</record>
<record id="crm_case_pagenotfound0" model="project.issue">
<field eval="time.strftime('%Y-%m-22 18:15:00')" name="date"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_desertic_hispafuentes"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="1.0" name="duration"/>
<field name="categ_id" ref="bug_categ"/>
<field name="project_id" ref="project.project_project_22"/>
<field eval="&quot;Page not Found&quot;" name="name"/>
<field name="stage_id" ref="project.project_tt_development"/>
</record>
<record id="crm_case_problemloadingpage0" model="project.issue">
<field eval="time.strftime('%Y-%m-20 15:25:05')" name="date"/>
<field name="priority">3</field>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_14"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="4.0" name="duration"/>
<field name="project_id" ref="project.project_project_22"/>
<field name="name">Problem loading page</field>
<field name="stage_id" ref="project.project_tt_testing"/>
</record>
<record id="crm_case_programmingerror0" model="project.issue">
<field eval="time.strftime('%Y-%m-24 09:45:00')" name="date"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_5"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="4.0" name="duration"/>
<field name="categ_id" ref="bug_categ"/>
<field name="project_id" ref="project.project_project_22"/>
<field eval="&quot;Programming Error&quot;" name="name"/>
<field name="stage_id" ref="project.project_tt_testing"/>
</record>
<record id="crm_case_pagenotfound0" model="project.issue">
<field eval="time.strftime('%Y-%m-22 18:15:00')" name="date"/>
<field name="priority">3</field>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_desertic_hispafuentes"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="1.0" name="duration"/>
<field name="project_id" ref="project.project_project_22"/>
<field name="name">Page not Found</field>
<field name="stage_id" ref="project.project_tt_development"/>
</record>
<record id="crm_case_logicalerrorinprogram0" model="project.issue">
<field eval="time.strftime('%Y-%m-26 11:10:00')" name="date"/>
<field eval="&quot;2&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_6"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="2.0" name="duration"/>
<field name="categ_id" ref="bug_categ"/>
<field name="project_id" ref="project.project_project_9"/>
<field eval="&quot;Logical Error in Program&quot;" name="name"/>
<field name="stage_id" ref="project.project_tt_testing"/>
</record>
<record id="crm_case_programmingerror0" model="project.issue">
<field eval="time.strftime('%Y-%m-24 09:45:00')" name="date"/>
<field name="priority">3</field>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_5"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="4.0" name="duration"/>
<field name="project_id" ref="project.project_project_22"/>
<field name="name">Programming Error</field>
<field name="stage_id" ref="project.project_tt_testing"/>
<field name="categ_ids" eval="[(6, 0, [
ref('project_issue_category_02'),
ref('project_issue_category_03')])]"/>
</record>
<record id="crm_case_constrainterror0" model="project.issue">
<field eval="time.strftime('%Y-%m-25 13:35:00')" name="date"/>
<field eval="&quot;2&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_6"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="7.3" name="duration"/>
<field name="categ_id" ref="bug_categ"/>
<field name="project_id" ref="project.project_project_9"/>
<field eval="&quot;Constraint Error&quot;" name="name"/>
<field name="stage_id" ref="project.project_tt_testing"/>
</record>
<record id="crm_case_logicalerrorinprogram0" model="project.issue">
<field eval="time.strftime('%Y-%m-26 11:10:00')" name="date"/>
<field name="priority">2</field>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_6"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="2.0" name="duration"/>
<field name="project_id" ref="project.project_project_9"/>
<field name="name">Logical Error in Program</field>
<field name="stage_id" ref="project.project_tt_testing"/>
</record>
<record id="crm_case_errorinprogram0" model="project.issue">
<field eval="time.strftime('%Y-%m-28 15:40:00')" name="date"/>
<field eval="&quot;2&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field name="partner_id" ref="base.res_partner_5"/>
<field eval="1" name="active"/>
<field eval="1.3" name="duration"/>
<field name="categ_id" ref="feature_request_categ"/>
<field name="project_id" ref="project.project_project_22"/>
<field eval="&quot;Error in Program&quot;" name="name"/>
<field name="stage_id" ref="project.project_tt_testing"/>
</record>
<record id="crm_case_constrainterror0" model="project.issue">
<field eval="time.strftime('%Y-%m-25 13:35:00')" name="date"/>
<field name="priority">2</field>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_6"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="7.3" name="duration"/>
<field name="project_id" ref="project.project_project_9"/>
<field name="name">Constraint Error</field>
<field name="stage_id" ref="project.project_tt_testing"/>
</record>
<record id="crm_case_patcheserrorinprogram0" model="project.issue">
<field eval="time.strftime('%Y-%m-28 16:30:00')" name="date"/>
<field eval="&quot;2&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_2"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="13.0" name="duration"/>
<field name="categ_id" ref="feature_request_categ"/>
<field name="project_id" ref="project.project_project_9"/>
<field eval="&quot;Patches Error in Program&quot;" name="name"/>
<field name="stage_id" ref="project.project_tt_testing"/>
</record>
<record id="crm_case_errorinprogram0" model="project.issue">
<field eval="time.strftime('%Y-%m-28 15:40:00')" name="date"/>
<field name="priority">2</field>
<field name="user_id" ref="base.user_demo"/>
<field name="partner_id" ref="base.res_partner_5"/>
<field eval="1" name="active"/>
<field eval="1.3" name="duration"/>
<field name="project_id" ref="project.project_project_22"/>
<field name="name">Error in Program</field>
<field name="stage_id" ref="project.project_tt_testing"/>
</record>
<record id="crm_case_newfeaturestobeadded0" model="project.issue">
<field eval="time.strftime('%Y-%m-01 12:15:10')" name="date"/>
<field eval="&quot;4&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_maxtor"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="3.2" name="duration"/>
<field name="categ_id" ref="feature_request_categ"/>
<field name="project_id" ref="project.project_project_21"/>
<field eval="&quot;New Features To Be Added&quot;" name="name"/>
<field name="stage_id" ref="project.project_tt_merge"/>
</record>
<record id="crm_case_patcheserrorinprogram0" model="project.issue">
<field eval="time.strftime('%Y-%m-28 16:30:00')" name="date"/>
<field name="priority">2</field>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_2"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="13.0" name="duration"/>
<field name="project_id" ref="project.project_project_9"/>
<field name="name">Patches Error in Program</field>
<field name="stage_id" ref="project.project_tt_testing"/>
</record>
<record id="crm_case_addmenustothemodule0" model="project.issue">
<field eval="time.strftime('%Y-%m-05 18:00:00')" name="date"/>
<field eval="&quot;1&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field name="partner_id" ref="base.res_partner_9"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="3.0" name="duration"/>
<field name="categ_id" ref="feature_request_categ"/>
<field name="project_id" ref="project.project_project_21"/>
<field eval="&quot;Add menus to the module&quot;" name="name"/>
<field eval="&quot;info@opensides.be&quot;" name="email_from"/>
<field name="stage_id" ref="project.project_tt_development"/>
</record>
<record id="crm_case_newfeaturestobeadded0" model="project.issue">
<field eval="time.strftime('%Y-%m-01 12:15:10')" name="date"/>
<field name="priority">4</field>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_maxtor"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="3.2" name="duration"/>
<field name="project_id" ref="project.project_project_21"/>
<field name="name">New Features To Be Added</field>
<field name="stage_id" ref="project.project_tt_merge"/>
</record>
<record id="crm_case_includeattendancesheetinproject0" model="project.issue">
<field eval="time.strftime('%Y-%m-10 17:05:30')" name="date"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_10"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="2.0" name="duration"/>
<field name="categ_id" ref="feature_request_categ"/>
<field name="project_id" ref="project.project_project_9"/>
<field eval="&quot;Include Attendance sheet in Project&quot;" name="name"/>
<field eval="&quot;contact@tecsas.fr&quot;" name="email_from"/>
<field name="stage_id" ref="project.project_tt_development"/>
</record>
<record id="crm_case_addmenustothemodule0" model="project.issue">
<field eval="time.strftime('%Y-%m-05 18:00:00')" name="date"/>
<field name="priority">1</field>
<field name="user_id" ref="base.user_demo"/>
<field name="partner_id" ref="base.res_partner_9"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="3.0" name="duration"/>
<field name="project_id" ref="project.project_project_21"/>
<field name="name">Add menus to the module</field>
<field name="email_from">info@opensides.be</field>
<field name="stage_id" ref="project.project_tt_development"/>
</record>
<record id="crm_case_createnewobject0" model="project.issue">
<field eval="time.strftime('%Y-%m-15 10:35:15')" name="date"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_6"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="2.45" name="duration"/>
<field name="categ_id" ref="feature_request_categ"/>
<field name="project_id" ref="project.project_project_22"/>
<field eval="&quot;Create new object&quot;" name="name"/>
<field name="stage_id" ref="project.project_tt_specification"/>
</record>
<record id="crm_case_includeattendancesheetinproject0" model="project.issue">
<field eval="time.strftime('%Y-%m-10 17:05:30')" name="date"/>
<field name="priority">3</field>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_10"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="2.0" name="duration"/>
<field name="project_id" ref="project.project_project_9"/>
<field name="name">Include Attendance sheet in Project</field>
<field name="email_from">contact@tecsas.fr</field>
<field name="stage_id" ref="project.project_tt_development"/>
</record>
<record id="crm_case_improvereportsinhrms0" model="project.issue">
<field eval="time.strftime('%Y-%m-19 12:15:00')" name="date"/>
<field eval="&quot;4&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_11"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="15.0" name="duration"/>
<field name="categ_id" ref="feature_request_categ"/>
<field name="project_id" ref="project.project_project_22"/>
<field eval="&quot;Improve Reports in HRMS&quot;" name="name"/>
<field name="stage_id" ref="project.project_tt_development"/>
</record>
<record id="crm_case_createnewobject0" model="project.issue">
<field eval="time.strftime('%Y-%m-15 10:35:15')" name="date"/>
<field name="priority">3</field>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_6"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="2.45" name="duration"/>
<field name="project_id" ref="project.project_project_22"/>
<field name="name">Create new object</field>
<field name="stage_id" ref="project.project_tt_specification"/>
</record>
<record id="crm_case_improvereportsinpms0" model="project.issue">
<field eval="time.strftime('%Y-%m-21 14:30:00')" name="date"/>
<field eval="&quot;2&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field name="partner_id" ref="base.res_partner_11"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="06.15" name="duration"/>
<field name="categ_id" ref="feature_request_categ"/>
<field name="project_id" ref="project.project_project_22"/>
<field eval="&quot;Improve Reports in PMS&quot;" name="name"/>
<field name="stage_id" ref="project.project_tt_specification"/>
</record>
<record id="crm_case_improvereportsinhrms0" model="project.issue">
<field eval="time.strftime('%Y-%m-19 12:15:00')" name="date"/>
<field name="priority">4</field>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_11"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="15.0" name="duration"/>
<field name="project_id" ref="project.project_project_22"/>
<field name="name">Improve Reports in HRMS</field>
<field name="stage_id" ref="project.project_tt_development"/>
</record>
<!-- Call Function to set some issues as Unread -->
<function model="project.issue" name="message_mark_as_unread"
eval="[ ref('crm_case_improvereportsinhrms0'), ref('crm_case_createnewobject0')], {}"
/>
<record id="crm_case_improvereportsinpms0" model="project.issue">
<field eval="time.strftime('%Y-%m-21 14:30:00')" name="date"/>
<field name="priority">2</field>
<field name="user_id" ref="base.user_demo"/>
<field name="partner_id" ref="base.res_partner_11"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field eval="06.15" name="duration"/>
<field name="project_id" ref="project.project_project_22"/>
<field name="name">Improve Reports in PMS</field>
<field name="stage_id" ref="project.project_tt_specification"/>
</record>
</data>
<!-- Call function to set some issues as 'unread' -->
<function model="project.issue" name="message_mark_as_unread"
eval="[ ref('crm_case_improvereportsinhrms0'), ref('crm_case_createnewobject0')], {}"/>
</data>
</openerp>
+84 -85
View File
@@ -16,9 +16,9 @@
<record id="action_project_issue_unread" model="ir.values">
<field name="name">action_project_issue_unread</field>
<field name="action_id" ref="actions_server_project_issue_unread"/>
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_project_issue_unread'))" />
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_project_issue_unread'))"/>
<field name="key">action</field>
<field name="model_id" ref="model_project_issue" />
<field name="model_id" ref="model_project_issue"/>
<field name="model">project.issue</field>
<field name="key2">client_action_multi</field>
</record>
@@ -34,9 +34,9 @@
<record id="action_project_issue_read" model="ir.values">
<field name="name">action_project_issue_read</field>
<field name="action_id" ref="actions_server_project_issue_read"/>
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_project_issue_read'))" />
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_project_issue_read'))"/>
<field name="key">action</field>
<field name="model_id" ref="model_project_issue" />
<field name="model_id" ref="model_project_issue"/>
<field name="model">project.issue</field>
<field name="key2">client_action_multi</field>
</record>
@@ -133,14 +133,12 @@
<field name="task_id" on_change="onchange_task_id(task_id)" class="oe_inline"/>
<field name="progress" widget="progressbar" attrs="{'invisible':[('task_id','=',False)]}" class="oe_inline"/>
</div>
<field name="categ_ids" widget="many2many_tags"/>
</group>
</group>
<notebook>
<page string="Description">
<group>
<group>
<field name="categ_id" widget="selection" domain="[('object_id.model', '=', 'project.issue')]"/>
</group>
<group>
<field name="version_id" widget="selection"/>
</group>
@@ -194,7 +192,7 @@
<field name="progress" widget="progressbar" attrs="{'invisible':[('task_id','=',False)]}"/>
<field name="stage_id" widget="selection" readonly="1"/>
<field name="state" groups="base.group_no_one"/>
<field name="categ_id" invisible="1"/>
<field name="categ_ids" invisible="1"/>
<field name="task_id" invisible="1"/>
</tree>
</field>
@@ -216,7 +214,7 @@
<separator orientation="vertical"/>
<filter string="New" icon="terp-document-new" domain="[('state','=','draft')]" help="New Issues"/>
<filter string="To Do" domain="[('state','=','open')]" help="To Do Issues" icon="terp-check"/>
<filter string="Unassigned Issues" domain="[('user_id','=',False)]" help="Unassigned Issues" icon="terp-personal-" />
<filter string="Unassigned Issues" domain="[('user_id','=',False)]" help="Unassigned Issues" icon="terp-personal-"/>
<separator orientation="vertical"/>
<field name="user_id"/>
<field name="project_id"/>
@@ -236,7 +234,7 @@
domain="[]" context="{'group_by':'version_id'}"/>
<separator orientation="vertical"/>
<filter string="Category" icon="terp-stock_symbol-selection" domain="[]"
context="{'group_by':'categ_id'}"/>
context="{'group_by':'categ_ids'}"/>
<filter string="Priority" icon="terp-rating-rated" domain="[]"
context="{'group_by':'priority'}"/>
<filter string="Stage" icon="terp-stage" domain="[]"
@@ -265,79 +263,81 @@
</record>
<!-- Project Issue Karban View-->
<!-- Project Issue Karban View-->
<record model="ir.ui.view" id="project_issue_kanban_view">
<field name="name">Project Issue Kanban</field>
<field name="model">project.issue</field>
<field name="type">kanban</field>
<field name="arch" type="xml">
<kanban default_group_by="stage_id">
<field name="color"/>
<field name="priority"/>
<field name="user_email"/>
<field name="user_id"/>
<field name="date_deadline"/>
<templates>
<t t-name="kanban-tooltip">
<ul class="oe_kanban_tooltip">
<li><b>Project:</b> <field name="project_id"/></li>
<li><b>Category:</b> <field name="categ_id"/></li>
</ul>
</t>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
<div class="oe_dropdown_toggle oe_dropdown_kanban">
<span class="oe_e">i</span>
<ul class="oe_dropdown_menu">
<li><a type="edit" >Edit...</a></li>
<li><a type="delete">Delete</a></li>
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
</ul>
</div>
<div class="oe_kanban_content" tooltip="kanban-tooltip">
<div>
<b><field name="name"/></b> <br/>
<field name="partner_id"/> <br/>
<field name="version_id"/>
</div>
<div class="oe_kanban_footer_left">
<div class="oe_right">
<span class="oe_kanban_highlight">
<t t-set="priority" t-value="record.priority.raw_value || 5"/>
<a type="object" name="set_priority" args="['3']" t-if="priority gt 3" title="Normal Priority">
<img src="/web/static/src/img/icons/star-off.png" width="16" height="16"/>
</a>
<a type="object" name="set_priority" args="['5']" t-if="priority lte 3" title="Normal Priority">
<img t-attf-src="/web/static/src/img/icons/star-#{priority lte 3 ? 'on' : 'off'}.png" width="16" height="16"/>
</a>
<a type="object" name="set_priority" args="['2']" title="High Priority">
<img t-attf-src="/web/static/src/img/icons/star-#{priority lte 2 ? 'on' : 'off'}.png" width="16" height="16"/>
</a>
<a type="object" name="set_priority" args="['1']" title="Highest Priority">
<img t-attf-src="/web/static/src/img/icons/star-#{priority == 1 ? 'on' : 'off'}.png" width="16" height="16"/>
</a>
</span>
<t t-if="record.date_deadline.raw_value and record.date_deadline.raw_value lt (new Date())">
<span t-attf-class="oe_kanban_status oe_kaban_status_red"> </span>
</t>
<img t-att-src="kanban_image('res.users', 'avatar', record.user_id.raw_value[0])" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar"/>
<record model="ir.ui.view" id="project_issue_kanban_view">
<field name="name">Project Issue Kanban</field>
<field name="model">project.issue</field>
<field name="type">kanban</field>
<field name="arch" type="xml">
<kanban default_group_by="stage_id">
<field name="color"/>
<field name="priority"/>
<field name="user_email"/>
<field name="user_id"/>
<field name="date_deadline"/>
<templates>
<t t-name="kanban-tooltip">
<ul class="oe_kanban_tooltip">
<li><b>Project:</b> <field name="project_id"/></li>
<li><b>Category:</b> <field name="categ_ids"/></li>
</ul>
</t>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
<div class="oe_dropdown_toggle oe_dropdown_kanban">
<span class="oe_e">i</span>
<ul class="oe_dropdown_menu">
<li><a type="edit" >Edit...</a></li>
<li><a type="delete">Delete</a></li>
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
</ul>
</div>
<div class="oe_kanban_content" tooltip="kanban-tooltip">
<div>
<b><field name="name"/></b> <br/>
<field name="partner_id"/> <br/>
<field name="version_id"/>
</div>
<div class="oe_kanban_footer_left">
<div class="oe_left oe_tags">
<t t-foreach="record.categ_ids.raw_value" t-as="categ_id">
<span class="oe_tag" t-att-data-categ_id="categ_id"></span>
</t>
</div>
<div class="oe_right">
<span class="oe_kanban_highlight">
<t t-set="priority" t-value="record.priority.raw_value || 5"/>
<a type="object" name="set_priority" args="['3']" t-if="priority gt 3" title="Normal Priority">
<img src="/web/static/src/img/icons/star-off.png" width="16" height="16"/>
</a>
<a type="object" name="set_priority" args="['5']" t-if="priority lte 3" title="Normal Priority">
<img t-attf-src="/web/static/src/img/icons/star-#{priority lte 3 ? 'on' : 'off'}.png" width="16" height="16"/>
</a>
<a type="object" name="set_priority" args="['2']" title="High Priority">
<img t-attf-src="/web/static/src/img/icons/star-#{priority lte 2 ? 'on' : 'off'}.png" width="16" height="16"/>
</a>
<a type="object" name="set_priority" args="['1']" title="Highest Priority">
<img t-attf-src="/web/static/src/img/icons/star-#{priority == 1 ? 'on' : 'off'}.png" width="16" height="16"/>
</a>
</span>
<t t-if="record.date_deadline.raw_value and record.date_deadline.raw_value lt (new Date())">
<span t-attf-class="oe_kanban_status oe_kaban_status_red"> </span>
</t>
<img t-att-src="kanban_image('res.users', 'avatar', record.user_id.raw_value[0])" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar"/>
</div>
</div>
</div>
<div class="oe_clear"></div>
</div>
<div class="oe_clear"></div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
</t>
</templates>
</kanban>
</field>
</record>
# ------------------------------------------------------
# Feature Requests
# ------------------------------------------------------
<!-- Feature Requests -->
<record model="ir.ui.view" id="project_feature_tree_view">
<field name="name">Project Issue- Feature Tracker Tree</field>
<field name="model">project.issue</field>
@@ -378,7 +378,7 @@
</search>
</field>
</record>
<act_window id="act_project_project_2_project_issue_all"
name="Issues"
src_model="project.project"
@@ -387,10 +387,7 @@
view_mode="kanban,tree,form,calendar,graph"
context="{'search_default_project_id': [active_id], 'default_project_id': active_id}"/>
# ------------------------------------------------------
# Project
# ------------------------------------------------------
<!-- Project -->
<record id="view_project_form_inherited" model="ir.ui.view">
<field name="name">project.project.form.inherited</field>
<field name="model">project.project</field>
@@ -409,7 +406,7 @@
</field>
</field>
</record>
<record id="view_project_kanban_inherited" model="ir.ui.view">
<field name="name">project.project.kanban.inherited</field>
<field name="model">project.project</field>
@@ -427,7 +424,8 @@
</xpath>
</field>
</record>
<record id="analytic_account_inherited_issue_form" model="ir.ui.view">
<record id="analytic_account_inherited_issue_form" model="ir.ui.view">
<field name="name">account.analytic.account.issue.form.inherit</field>
<field name="model">account.analytic.account</field>
<field name="type">form</field>
@@ -438,9 +436,10 @@
<separator colspan="4" string="Project Management" name="project_sep"/> <!-- removal of invisible attribute -->
</xpath>
<xpath expr='//separator[@name="project_sep"]' position='after'>
<field name="use_issues" />
<field name="use_issues"/>
</xpath>
</field>
</record>
</data>
</openerp>
@@ -50,7 +50,6 @@ class project_issue_report(osv.osv):
'opening_date': fields.date('Date of Opening', readonly=True),
'creation_date': fields.date('Creation Date', readonly=True),
'date_closed': fields.date('Date of Closing', readonly=True),
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'project.issue')]"),
'stage_id': fields.many2one('project.task.type', 'Stage'),
'nbr': fields.integer('# of Issues', readonly=True),
'working_hours_open': fields.float('Avg. Working Hours to Open', readonly=True),
@@ -86,7 +85,6 @@ class project_issue_report(osv.osv):
c.working_hours_open,
c.working_hours_close,
c.section_id,
c.categ_id,
c.stage_id,
to_char(c.date_closed, 'YYYY-mm-dd') as date_closed,
c.company_id as company_id,
@@ -104,7 +102,7 @@ class project_issue_report(osv.osv):
FROM
project_issue c
WHERE c.active= 'true' and c.categ_id IN (select id from crm_case_categ where object_id in (select id from ir_model where model = 'project.issue'))
WHERE c.active= 'true'
)""")
project_issue_report()
@@ -17,19 +17,18 @@
<field name="company_id" invisible="1" groups="base.group_multi_company"/>
<field name="section_id" invisible="1"/>
<field name="user_id" invisible="1"/>
<field name="categ_id" invisible="1"/>
<field name="channel_id" invisible="1"/>
<field name="partner_id" invisible="1"/>
<field name="task_id" invisible="1"/>
<field name="task_id" invisible="1"/>
<field name="date_closed" invisible="1"/>
<field name="state" invisible="1"/>
<field name="day" invisible="1"/>
<field name="nbr" string="#Project Issues" sum='#Number of Project Issues'/>
<field name="delay_open" avg='Avg Opening Delay'/>
<field name="delay_close" avg='Avg Closing Delay'/>
<field name="working_hours_open" avg='Open Working Hours'/>
<field name="working_hours_close" avg='Close Working hours'/>
<field name="email" sum='# Emails'/>
<field name="nbr" string="#Project Issues" sum="#Number of Project Issues"/>
<field name="delay_open" avg="Avg Opening Delay"/>
<field name="delay_close" avg="Avg Closing Delay"/>
<field name="working_hours_open" avg="Open Working Hours"/>
<field name="working_hours_close" avg="Close Working hours"/>
<field name="email" sum="# Emails"/>
</tree>
</field>
</record>
@@ -0,0 +1,13 @@
openerp.portal_project_issue = function(openerp) {
openerp.web_kanban.KanbanView.include({
on_groups_started: function() {
var self = this;
self._super.apply(this, arguments);
if (self.dataset.model === 'project.issue') {
// Load project's categories names from m2m field
self.project_display_categ_names();
}
}
});
};
@@ -2,12 +2,9 @@
<openerp>
<data>
<menuitem id="base.menu_project_long_term" name="Long Term Planning" parent="base.menu_main_pm" sequence="3"/>
# ------------------------------------------------------
# Project User Allocation
# ------------------------------------------------------
<menuitem id="base.menu_project_long_term" name="Long Term Planning" parent="base.menu_main_pm" sequence="3"/>
<!-- Project User Allocation -->
<record id="view_project_user_allocation_gantt" model="ir.ui.view">
<field name="name">project.user.allocation.gantt</field>
<field name="model">project.user.allocation</field>
@@ -94,9 +91,7 @@
</record>
# ------------------------------------------------------
# Project Phase
# ------------------------------------------------------
<!-- Project Phase -->
<act_window id="act_project_phases"
name="Phases"
src_model="project.project"
@@ -182,7 +177,7 @@
<form string="Project Users" version="7.0">
<group col="4">
<field name="user_id"/>
<field name="date_start" />
<field name="date_start"/>
<field name="date_end"/>
</group>
</form>
@@ -195,7 +190,7 @@
<field name="name"/>
<field name="user_id"/>
<field name="date_start"/>
<field name="date_end" />
<field name="date_end"/>
<field name="planned_hours" widget="float_time"/>
<field name="project_id" invisible="1"/>
<field name="total_hours" sum='Total Hours'/>
@@ -285,7 +280,7 @@
<separator orientation="vertical"/>
<field name="project_id"/>
</group>
<newline/>
<newline/>
<group expand="0" string="Group By...">
<filter string="Project" icon="terp-folder-violet" domain="[]" context="{'group_by':'project_id'}" name="project"/>
<separator orientation="vertical"/>
@@ -317,10 +312,7 @@
</record>
# ------------------------------------------------------
# Project Task
# ------------------------------------------------------
<!-- Project Task -->
<record id="view_phase_task_form2" model="ir.ui.view">
<field name="name">phase.task.form2</field>
<field name="model">project.task</field>
@@ -368,16 +360,15 @@
</field>
</record>
<act_window
context="{'search_default_phase_id': [active_id], 'default_phase_id' : active_id}"
id="project_phase_task_list"
name="Related Tasks"
res_model="project.task"
src_model="project.phase"
view_mode="tree,form"
/>
<act_window
context="{'search_default_phase_id': [active_id], 'default_phase_id' : active_id}"
id="project_phase_task_list"
name="Related Tasks"
res_model="project.task"
src_model="project.phase"
view_mode="tree,form"/>
<record id="analytic_account_inherited_phase_form" model="ir.ui.view">
<record id="analytic_account_inherited_phase_form" model="ir.ui.view">
<field name="name">account.analytic.account.phase.form.inherit</field>
<field name="model">account.analytic.account</field>
<field name="type">form</field>
@@ -393,10 +384,7 @@
</field>
</record>
# ------------------------------------------------------
# Menu Items
# ------------------------------------------------------
<!-- Menu Items -->
<menuitem action="act_project_phase_list"
id="menu_project_phase_list" parent="project.menu_project_management" sequence="2"/>
+1 -1
View File
@@ -25,7 +25,7 @@
'version': '1.1',
'category': 'Purchase Management',
"sequence": 19,
"summary": "Requests for Quotation, Invoicing Control",
"summary": "RfQ, Purchase Orders, Delivery & Invoicing Control",
'description': """
Purchase Management module is for generating a purchase order for purchase of goods from a supplier.
====================================================================================================
+64 -65
View File
@@ -7,6 +7,7 @@
id="base.menu_purchase_root"
groups="group_purchase_manager,group_purchase_user"
sequence="40"/>
<menuitem id="menu_procurement_management" name="Purchase"
parent="base.menu_purchase_root" sequence="1" />
@@ -54,12 +55,12 @@
action="base.action_partner_category_form" id="menu_partner_categories_in_form" name="Partner Categories"
parent="purchase.menu_purchase_partner_cat" groups="base.group_no_one"/>
<!--supplier menu-->
<!--Supplier menu-->
<menuitem id="base.menu_procurement_management_supplier_name" name="Suppliers"
parent="menu_procurement_management"
action="base.action_partner_supplier_form" sequence="15"/>
<!--Inventory control-->
<!--Inventory control-->
<menuitem id="menu_procurement_management_inventory" name="Receive Products"
parent="base.menu_purchase_root" sequence="4"/>
<menuitem action="stock.action_picking_tree4" id="menu_action_picking_tree4" parent="menu_procurement_management_inventory"
@@ -80,11 +81,11 @@
<field name="domain">[('type','=','in_invoice')]</field>
<field name="context">{'default_type':'in_invoice', 'type':'in_invoice', 'journal_type': 'purchase', 'search_default_draft': 1}</field>
<field name="search_view_id" ref="account.view_account_invoice_filter"/>
<field name="help">
Use this menu to control the invoices to be received from your supplier.
OpenERP generates draft invoices from your purchase orders or receptions, according to your settings.
Once you receive a supplier invoice, you can match it with the draft invoice and validate it.
</field>
<field name="help">
Use this menu to control the invoices to be received from your supplier.
OpenERP generates draft invoices from your purchase orders or receptions, according to your settings.
Once you receive a supplier invoice, you can match it with the draft invoice and validate it.
</field>
</record>
<menuitem name="Based on Draft Invoices"
@@ -93,7 +94,7 @@
parent="menu_procurement_management_invoice"
sequence="13"/>
<!--product menu-->
<!-- Product menu-->
<menuitem id="menu_procurement_management_product" name="Products"
parent="base.menu_purchase_root" sequence="8"/>
@@ -140,7 +141,7 @@
<field name="key2">client_action_multi</field>
</record>
<record model="ir.ui.view" id="purchase_order_calendar">
<record model="ir.ui.view" id="purchase_order_calendar">
<field name="name">purchase.order.calendar</field>
<field name="model">purchase.order</field>
<field name="type">calendar</field>
@@ -245,7 +246,7 @@
<field name="invoice_method"/>
<field name="invoiced"/>
<field name="fiscal_position"/>
<!-- we do not need these fields anymore, the information is in open chatter -->
<!-- We do not need these fields anymore, the information is in open chatter -->
<field name="validator" groups="base.group_no_one"/>
<field name="date_approve" groups="base.group_no_one"/>
</group>
@@ -256,7 +257,7 @@
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
@@ -268,29 +269,29 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Purchase Order">
<group>
<field name="name" string="Reference"/>
<separator orientation="vertical"/>
<filter icon="terp-document-new" name="draft" string="Quotations" domain="[('state','=','draft')]" help="Purchase order which are in draft state"/>
<filter icon="terp-check" name="approved" string="Approved" domain="[('state','in',('approved','done'))]" help="Approved purchase order"/>
<filter icon="terp-gtk-go-back-rtl" name="not_invoiced" string="Not Invoiced" domain="[('invoice_ids','=', False)]" help="Purchase orders that include lines not invoiced."/>
<filter icon="terp-emblem-important" name="exception" string="Exception" domain="[('state','in',('except_invoice','except_picking'))]" help="Purchase order which are in the exception state"/>
<separator orientation="vertical"/>
<field name="partner_id"/>
<field name="product_id"/>
<field name="create_uid"/>
</group>
<newline/>
<group expand="0" string="Group By...">
<filter string="Supplier" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
<separator orientation="vertical"/>
<filter string="Source" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'origin'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
<separator orientation="vertical"/>
<filter string="Order Date" icon="terp-go-month" domain="[]" context="{'group_by':'date_order'}"/>
<filter string="Expected Date" icon="terp-go-month" domain="[]" context="{'group_by':'minimum_planned_date'}"/>
</group>
</search>
<group>
<field name="name" string="Reference"/>
<separator orientation="vertical"/>
<filter icon="terp-document-new" name="draft" string="Quotations" domain="[('state','=','draft')]" help="Purchase order which are in draft state"/>
<filter icon="terp-check" name="approved" string="Approved" domain="[('state','in',('approved','done'))]" help="Approved purchase order"/>
<filter icon="terp-gtk-go-back-rtl" name="not_invoiced" string="Not Invoiced" domain="[('invoice_ids','=', False)]" help="Purchase orders that include lines not invoiced."/>
<filter icon="terp-emblem-important" name="exception" string="Exception" domain="[('state','in',('except_invoice','except_picking'))]" help="Purchase order which are in the exception state"/>
<separator orientation="vertical"/>
<field name="partner_id"/>
<field name="product_id"/>
<field name="create_uid"/>
</group>
<newline/>
<group expand="0" string="Group By...">
<filter string="Supplier" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
<separator orientation="vertical"/>
<filter string="Source" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'origin'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
<separator orientation="vertical"/>
<filter string="Order Date" icon="terp-go-month" domain="[]" context="{'group_by':'date_order'}"/>
<filter string="Expected Date" icon="terp-go-month" domain="[]" context="{'group_by':'minimum_planned_date'}"/>
</group>
</search>
</field>
</record>
@@ -300,34 +301,34 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Purchase Order">
<group>
<field name="name" string="Reference"/>
<separator orientation="vertical"/>
<filter icon="terp-mail-message-new"
string="Inbox" help="Unread messages"
name="needaction_pending"
domain="[('needaction_pending','=',True)]"/>
<separator orientation="vertical"/>
<filter icon="terp-document-new" name="draft" string="Quotations" domain="[('state','=','draft')]" help="Purchase orders which are in draft state"/>
<filter icon="terp-check" name="approved" string="Purchase Orders" domain="[('state','not in',('draft','cancel'))]" help="Approved purchase orders"/>
<filter icon="terp-gtk-go-back-rtl" name="not_invoiced" string="Not Invoiced" domain="[('invoice_ids','=', False)]" help="Purchase orders that include lines not invoiced."/>
<filter icon="terp-emblem-important" name="exception" string="Exception" domain="[('state','in',('except_invoice','except_picking'))]" help="Purchase orders which are in exception state"/>
<separator orientation="vertical"/>
<field name="partner_id"/>
<field name="product_id"/>
<field name="create_uid"/>
</group>
<newline/>
<group expand="0" string="Group By...">
<filter string="Supplier" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
<separator orientation="vertical"/>
<filter string="Source" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'origin'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
<separator orientation="vertical"/>
<filter string="Order Date" icon="terp-go-month" domain="[]" context="{'group_by':'date_order'}"/>
<filter string="Expected Date" icon="terp-go-month" domain="[]" context="{'group_by':'minimum_planned_date'}"/>
</group>
</search>
<group>
<field name="name" string="Reference"/>
<separator orientation="vertical"/>
<filter icon="terp-mail-message-new"
string="Inbox" help="Unread messages"
name="needaction_pending"
domain="[('needaction_pending','=',True)]"/>
<separator orientation="vertical"/>
<filter icon="terp-document-new" name="draft" string="Quotations" domain="[('state','=','draft')]" help="Purchase orders which are in draft state"/>
<filter icon="terp-check" name="approved" string="Purchase Orders" domain="[('state','not in',('draft','cancel'))]" help="Approved purchase orders"/>
<filter icon="terp-gtk-go-back-rtl" name="not_invoiced" string="Not Invoiced" domain="[('invoice_ids','=', False)]" help="Purchase orders that include lines not invoiced."/>
<filter icon="terp-emblem-important" name="exception" string="Exception" domain="[('state','in',('except_invoice','except_picking'))]" help="Purchase orders which are in exception state"/>
<separator orientation="vertical"/>
<field name="partner_id"/>
<field name="product_id"/>
<field name="create_uid"/>
</group>
<newline/>
<group expand="0" string="Group By...">
<filter string="Supplier" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
<separator orientation="vertical"/>
<filter string="Source" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'origin'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
<separator orientation="vertical"/>
<filter string="Order Date" icon="terp-go-month" domain="[]" context="{'group_by':'date_order'}"/>
<filter string="Expected Date" icon="terp-go-month" domain="[]" context="{'group_by':'minimum_planned_date'}"/>
</group>
</search>
</field>
</record>
@@ -559,9 +560,7 @@
parent="menu_procurement_management_invoice"
sequence="72"/>
<!--
Procurements
-->
<!-- Procurements -->
<record id="view_procurement_form_inherit" model="ir.ui.view">
<field name="name">procurement.order.form.inherit</field>
+1 -1
View File
@@ -24,7 +24,7 @@
'version': '1.0',
'category': 'Sales Management',
"sequence": 14,
"summary": "Quotations, Sales, Invoicing",
"summary": "Quotations, Sale Orders, Invoicing",
'description': """
The base module to manage quotations and sales orders.
======================================================
+16 -16
View File
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2012-07-06 21:31+0000\n"
"PO-Revision-Date: 2012-07-30 16:29+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-14 05:49+0000\n"
"X-Generator: Launchpad (build 15614)\n"
"X-Launchpad-Export-Date: 2012-07-31 04:58+0000\n"
"X-Generator: Launchpad (build 15702)\n"
#. module: sale_crm
#: field:sale.order,categ_id:0
@@ -31,12 +31,12 @@ msgstr "注文参照は、会社ごとに固有でなければなりません。
#: code:addons/sale_crm/wizard/crm_make_sale.py:112
#, python-format
msgid "Converted to Sales Quotation(%s)."
msgstr "販売見積書(%s)を移動"
msgstr "受注見積(%s)に変換"
#. module: sale_crm
#: view:crm.make.sale:0
msgid "Convert to Quotation"
msgstr "見積りへ移動"
msgstr "見積に変換"
#. module: sale_crm
#: code:addons/sale_crm/wizard/crm_make_sale.py:89
@@ -48,7 +48,7 @@ msgstr "データ不足です。"
#: code:addons/sale_crm/wizard/crm_make_sale.py:89
#, python-format
msgid "Customer has no addresses defined!"
msgstr "顧客の住所が不明確です。"
msgstr "顧客の住所が定義されていません。"
#. module: sale_crm
#: model:ir.model,name:sale_crm.model_crm_make_sale
@@ -58,7 +58,7 @@ msgstr "営業する。"
#. module: sale_crm
#: view:crm.make.sale:0
msgid "_Create"
msgstr "_作成"
msgstr "作成"
#. module: sale_crm
#: view:sale.order:0
@@ -69,22 +69,22 @@ msgstr "私の営業チーム"
#: help:crm.make.sale,close:0
msgid ""
"Check this to close the opportunity after having created the sale order."
msgstr "発注書を作成後、これをチェックしオポチュニティを終了します。"
msgstr "発注書を作成後、商談を終了するためにこれをチェックします。"
#. module: sale_crm
#: view:board.board:0
msgid "My Opportunities"
msgstr "私のオポチュニティ"
msgstr "私の商談"
#. module: sale_crm
#: view:crm.lead:0
msgid "Convert to Quote"
msgstr "見積りへ移動"
msgstr "見積に変換"
#. module: sale_crm
#: field:crm.make.sale,shop_id:0
msgid "Shop"
msgstr "お店"
msgstr "店"
#. module: sale_crm
#: field:crm.make.sale,partner_id:0
@@ -95,12 +95,12 @@ msgstr "顧客"
#: code:addons/sale_crm/wizard/crm_make_sale.py:92
#, python-format
msgid "Opportunity: %s"
msgstr "オポチュニティ: %s"
msgstr "商談:%s"
#. module: sale_crm
#: field:crm.make.sale,close:0
msgid "Close Opportunity"
msgstr "オポチュニティ成立"
msgstr "商談を閉じる"
#. module: sale_crm
#: view:board.board:0
@@ -111,7 +111,7 @@ msgstr "段階別私の計画売上高"
#: code:addons/sale_crm/wizard/crm_make_sale.py:110
#, python-format
msgid "Opportunity '%s' is converted to Quotation."
msgstr "オポチュニティの'%s' は、見積に変換されました。"
msgstr "商談 %s は見積に変換されました。"
#. module: sale_crm
#: view:sale.order:0
@@ -122,7 +122,7 @@ msgstr "営業チーム"
#. module: sale_crm
#: model:ir.actions.act_window,name:sale_crm.action_crm_make_sale
msgid "Make Quotation"
msgstr "見積り作成"
msgstr "見積作成"
#. module: sale_crm
#: view:crm.make.sale:0
@@ -132,4 +132,4 @@ msgstr "キャンセル"
#. module: sale_crm
#: model:ir.model,name:sale_crm.model_sale_order
msgid "Sales Order"
msgstr "受注"
msgstr "受注オーダー"
+7 -7
View File
@@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2012-04-20 04:29+0000\n"
"Last-Translator: Tomomi Mengelberg <tomomi.mengelberg@aquasys.co.jp>\n"
"PO-Revision-Date: 2012-07-30 16:32+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-14 06:17+0000\n"
"X-Generator: Launchpad (build 15614)\n"
"X-Launchpad-Export-Date: 2012-07-31 04:58+0000\n"
"X-Generator: Launchpad (build 15702)\n"
#. module: sale_margin
#: sql_constraint:sale.order:0
msgid "Order Reference must be unique per Company!"
msgstr "発注参照は、会社ごとにユニークでなければなりません。"
msgstr "オーダー参照は、会社ごとに固有でなければなりません。"
#. module: sale_margin
#: field:sale.order.line,purchase_price:0
@@ -30,7 +30,7 @@ msgstr "原価"
#. module: sale_margin
#: model:ir.model,name:sale_margin.model_sale_order
msgid "Sales Order"
msgstr "受注"
msgstr "受注オーダー"
#. module: sale_margin
#: help:sale.order,margin:0
@@ -48,4 +48,4 @@ msgstr "粗利益"
#. module: sale_margin
#: model:ir.model,name:sale_margin.model_sale_order_line
msgid "Sales Order Line"
msgstr "受注明細"
msgstr "受注オーダー行"
+1 -1
View File
@@ -23,7 +23,7 @@
"name" : "Warehouse Management",
"version" : "1.1",
"author" : "OpenERP SA",
"summary": "Incoming Shipments, Deliveries, Inventory, Stock",
"summary": "Inventory, Logistic, Storage",
"description" : """
OpenERP Inventory Management module can manage multi-warehouses, multi and structured stock locations.
======================================================================================================
+6 -18
View File
@@ -105,15 +105,15 @@
<group name="status" position="before" version="7.0">
<group string="Stock and Expected Variations">
<field name="qty_available"/>
<field name="incoming_qty"/>
<label for="virtual_available"/>
<div>
<field name="incoming_qty" groups="base.group_user"/>
<label for="virtual_available" groups="base.group_user"/>
<div groups="base.group_user">
<field name="virtual_available" class="oe_inline"/>
<button name="%(action_view_change_product_quantity)d" string="Update" attrs="{'invisible': [('type', '=', 'service')]}"
type="action" icon="gtk-execute" groups="stock.group_stock_manager,stock.group_stock_user" class="oe_inline"/>
</div>
<field name="outgoing_qty"/>
<field name="outgoing_qty" groups="base.group_user"/>
</group>
<group name="lot" groups="stock.group_tracking_lot,stock.group_production_lot" string="Lots">
<field name="track_production" groups="stock.group_production_lot"/>
@@ -123,7 +123,7 @@
</group>
</field>
</record>
<record id="action_receive_move" model="ir.actions.act_window">
<field name="name">Receive Products</field>
<field name="res_model">stock.move</field>
@@ -136,7 +136,7 @@
<field name="search_view_id" ref="view_move_search_reception_incoming_picking"/>
<field name="help">Here you can receive individual products, no matter what purchase order or picking order they come from. You will find the list of all products you are waiting for. Once you receive an order, you can filter based on the name of the supplier or the purchase order reference. Then you can confirm all products received using the buttons on the right of each line.</field>
</record>
<record id="action_deliver_move" model="ir.actions.act_window">
<field name="name">Receive Products</field>
<field name="res_model">stock.move</field>
@@ -215,17 +215,5 @@
</field>
</record>
<!-- <record id="view_product_valuation_form" model="ir.ui.view">
<field name="name">product.valuation.stock.form.inherit</field>
<field name="model">product.product</field>
<field name="type">form</field>
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<field name="cost_method" position="after">
<field name="valuation"/>
</field>
</field>
</record>-->
</data>
</openerp>
+23 -24
View File
@@ -6,9 +6,9 @@
<field eval="[(4, ref('group_stock_user'))]" name="groups_id"/>
</record>
<!--
Resource: stock.location
-->
<!-- Resource: stock.location -->
<record id="stock_location_3" model="stock.location">
<field name="name">IT Suppliers</field>
<field name="location_id" ref="stock_location_suppliers"/>
@@ -44,16 +44,14 @@
</record>
<!--
Resource: stock.inventory
-->
<!-- Resource: stock.inventory -->
<record id="stock_inventory_0" model="stock.inventory">
<field name="name">Starting Inventory</field>
</record>
<!--
Resource: stock.inventory.line
-->
<!-- Resource: stock.inventory.line -->
<record id="stock_inventory_line_0" model="stock.inventory.line">
<field name="product_id" ref="product.product_product_pc1"/>
@@ -185,10 +183,10 @@
<field eval="0" name="supplier"/>
<field name="is_company">1</field>
<field eval="1" name="active"/>
<field eval="&quot;&quot;&quot;Shop 1&quot;&quot;&quot;" name="name"/>
<field name="name">Shop 1</field>
</record>
<record id="res_partner_address_fabien0" model="res.partner">
<field eval="&quot;&quot;&quot;Felix&quot;&quot;&quot;" name="name"/>
<field name="name">Felix</field>
<field name="parent_id" ref="res_partner_tinyshop0"/>
<field name="use_parent_address" eval="1"/>
<field eval="1" name="active"/>
@@ -197,17 +195,17 @@
<field name="currency_id" ref="base.EUR"/>
<field name="partner_id" ref="res_partner_tinyshop0"/>
<field name="parent_id" ref="base.main_company"/>
<field eval="&quot;&quot;&quot;Shop 1&quot;&quot;&quot;" name="name"/>
<field name="name">Shop 1</field>
</record>
<record id="res_partner_tinyshop1" model="res.partner">
<field eval="1" name="customer"/>
<field eval="0" name="supplier"/>
<field eval="1" name="active"/>
<field name="is_company">1</field>
<field eval="&quot;&quot;&quot;Shop 2&quot;&quot;&quot;" name="name"/>
<field name="name">Shop 2</field>
</record>
<record id="res_partner_address_eric0" model="res.partner">
<field eval="&quot;&quot;&quot;Edwin&quot;&quot;&quot;" name="name"/>
<field name="name">Edwin</field>
<field name="parent_id" ref="res_partner_tinyshop1"/>
<field name="use_parent_address" eval="1"/>
<field eval="1" name="active"/>
@@ -216,36 +214,36 @@
<field name="currency_id" ref="base.EUR"/>
<field name="partner_id" ref="res_partner_tinyshop1"/>
<field name="parent_id" ref="base.main_company"/>
<field eval="&quot;&quot;&quot;Shop 2&quot;&quot;&quot;" name="name"/>
<field name="name">Shop 2</field>
</record>
<record id="stock_location_shop0" model="stock.location">
<field model="res.partner" name="partner_id" search="[('name','=','Fabien')]"/>
<field name="location_id" ref="stock.stock_location_locations"/>
<field name="company_id" ref="res_company_shop0"/>
<field eval="&quot;&quot;&quot;internal&quot;&quot;&quot;" name="usage"/>
<field eval="&quot;&quot;&quot;none&quot;&quot;&quot;" name="chained_location_type"/>
<field name="usage">internal</field>
<field name="chained_location_type">none</field>
<field eval="1" name="active"/>
<field eval="&quot;&quot;&quot;Shop 1&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;manual&quot;&quot;&quot;" name="chained_auto_packing"/>
<field name="name">Shop 1</field>
<field name="chained_auto_packing">manual</field>
</record>
<record id="stock_location_shop1" model="stock.location">
<field model="res.partner" name="partner_id" search="[('name','=','Eric')]"/>
<field name="company_id" ref="res_company_tinyshop0"/>
<field name="location_id" ref="stock.stock_location_locations"/>
<field eval="&quot;&quot;&quot;internal&quot;&quot;&quot;" name="usage"/>
<field name="usage">internal</field>
<field eval="1" name="active"/>
<field eval="&quot;&quot;&quot;Shop 2&quot;&quot;&quot;" name="name"/>
<field name="name">Shop 2</field>
</record>
<record id="stock_location_intermediatelocation0" model="stock.location">
<field name="partner_id" ref="base.main_partner"/>
<field name="location_id" ref="stock.stock_location_locations_partner"/>
<field eval="&quot;&quot;&quot;procurement&quot;&quot;&quot;" name="usage"/>
<field eval="&quot;&quot;&quot;Internal Shippings&quot;&quot;&quot;" name="name"/>
<field name="usage">procurement</field>
<field name="name">Internal Shippings</field>
</record>
<record id="stock_warehouse_shop0" model="stock.warehouse">
<field name="lot_output_id" ref="stock.stock_location_output"/>
<field eval="&quot;&quot;&quot;Shop 1&quot;&quot;&quot;" name="name"/>
<field name="name">Shop 1</field>
<field name="lot_stock_id" ref="stock_location_shop0"/>
<field name="partner_id" ref="res_partner_address_fabien0"/>
<field name="company_id" ref="res_company_shop0"/>
@@ -266,5 +264,6 @@
<field eval="'account.account,'+str(ref('account.stk'))" model="account.account" name="value"/>
<field name="company_id" ref="base.main_company"/>
</record>
</data>
</openerp>
+39 -53
View File
@@ -683,14 +683,9 @@
<menuitem action="action_warehouse_form" id="menu_action_warehouse_form" groups="stock.group_locations"
parent="menu_stock_configuration" sequence="1"/>
<!--
STOCK PICKING
-->
<!--
#
# Defaults and Internal Pickings
#
Stock picking
Defaults and Internal Pickings
-->
<record model="ir.ui.view" id="stock_picking_calendar">
@@ -733,14 +728,16 @@
<field name="arch" type="xml">
<form string="Internal Picking List" version="7.0">
<header>
<button name="draft_force_assign" states="draft" string="Confirm" type="object" class="oe_highlight"/>
<button name="draft_validate" states="draft" string="Confirm &amp; Transfer" type="object" class="oe_highlight"/>
<!-- <button name="action_assign" states="confirmed" string="Check Availability" type="object"/> -->
<button name="force_assign" states="confirmed" string="Force Availability" type="object" class="oe_highlight"/>
<button name="action_process" states="assigned" string="Confirm &amp; Transfer" groups="stock.group_stock_user" type="object" class="oe_highlight"/>
<button name="%(action_stock_invoice_onshipping)d" string="Create Invoice/Refund" attrs="{'invisible': ['|','|',('state','&lt;&gt;','done'),('invoice_state','=','invoiced'),('invoice_state','=','none')]}" type="action" class="oe_highlight"/>
<button name="%(act_stock_return_picking)d" string="Reverse Transfer" states="done" type="action"/>
<button name="button_cancel" states="assigned,confirmed,draft" string="_Cancel"/>
<span groups="base.group_user">
<button name="draft_force_assign" states="draft" string="Confirm" type="object" class="oe_highlight"/>
<button name="draft_validate" states="draft" string="Confirm &amp; Transfer" type="object" class="oe_highlight"/>
<!-- <button name="action_assign" states="confirmed" string="Check Availability" type="object"/> -->
<button name="force_assign" states="confirmed" string="Force Availability" type="object" class="oe_highlight"/>
<button name="action_process" states="assigned" string="Confirm &amp; Transfer" groups="stock.group_stock_user" type="object" class="oe_highlight"/>
<button name="%(action_stock_invoice_onshipping)d" string="Create Invoice/Refund" attrs="{'invisible': ['|','|',('state','&lt;&gt;','done'),('invoice_state','=','invoiced'),('invoice_state','=','none')]}" type="action" class="oe_highlight"/>
<button name="%(act_stock_return_picking)d" string="Reverse Transfer" states="done" type="action"/>
<button name="button_cancel" states="assigned,confirmed,draft" string="_Cancel"/>
</span>
<field name="state" widget="statusbar" statusbar_visible="draft,assigned,done" statusbar_colors='{"shipping_except":"red","invoice_except":"red","waiting_date":"blue"}'/>
</header>
<sheet>
@@ -776,7 +773,8 @@
<button name="%(stock.move_scrap)d"
string="Scrap Products" type="action"
icon="gtk-convert" context="{'scrap': True}"
states="draft,waiting,confirmed,assigned"/>
states="draft,waiting,confirmed,assigned"
groups="base.group_user"/>
<field name="scrapped" invisible="1"/>
<field name="prodlot_id" groups="stock.group_production_lot"/>
<button
@@ -800,9 +798,11 @@
</tree>
<form string="Stock Moves" version="7.0">
<header>
<button name="force_assign" states="confirmed" string="Force Availability" type="object" icon="gtk-jump-to"/>
<button name="action_confirm" states="draft" string="Confirm" type="object" icon="gtk-apply"/>
<button name="cancel_assign" states="assigned" string="Cancel Availability" type="object" icon="gtk-find"/>
<span groups="base.group_user">
<button name="force_assign" states="confirmed" string="Force Availability" type="object" icon="gtk-jump-to"/>
<button name="action_confirm" states="draft" string="Confirm" type="object" icon="gtk-apply"/>
<button name="cancel_assign" states="assigned" string="Cancel Availability" type="object" icon="gtk-find"/>
</span>
<field name="state" widget="statusbar" statusbar_visible="draft,assigned,done"/>
</header>
<group>
@@ -816,7 +816,8 @@
<button name="%(stock.move_scrap)d"
string="Scrap" type="action"
icon="gtk-convert" context="{'scrap': True}"
states="draft,waiting,confirmed,assigned"/>
states="draft,waiting,confirmed,assigned"
groups="base.group_user"/>
</div>
<label for="product_uos_qty" groups="product.group_uos"/>
<div groups="product.group_uos">
@@ -866,8 +867,8 @@
<group>
<group>
<field name="move_type"/>
<field name="type"/>
<field name="auto_picking"/>
<field name="type" groups="base.group_user"/>
<field name="auto_picking" groups="base.group_user"/>
</group>
<group>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
@@ -941,11 +942,7 @@
<field name="act_window_id" ref="action_picking_tree6"/>
</record>
<!--
#
# Sending Products
#
-->
<!-- Sending Products -->
<record id="view_picking_out_tree" model="ir.ui.view">
<field name="name">stock.picking.out.tree</field>
<field name="model">stock.picking</field>
@@ -971,18 +968,18 @@
<field name="type">form</field>
<field name="arch" type="xml">
<data>
<xpath expr="/form/header/button[@name='%(act_stock_return_picking)d']" position="replace">
<xpath expr="/form/header//button[@name='%(act_stock_return_picking)d']" position="replace">
<button name="%(report_picking_list_out)d" string="Print Delivery Slip" type="action" states="done" class="oe_highlight"/>
<button name="%(act_stock_return_picking)d" string="Return Products" states="done" type="action"/>
</xpath>
<xpath expr="/form/header/button[@name='draft_validate']" position="replace">
<xpath expr="/form/header//button[@name='draft_validate']" position="replace">
<button name="draft_validate" states="draft" string="Confirm &amp; Deliver" type="object" class="oe_highlight"/>
<button name="action_assign" states="confirmed" string="Check Availability" type="object" class="oe_highlight"/>
</xpath>
<xpath expr="/form/header/button[@name='action_process']" position="replace">
<xpath expr="/form/header//button[@name='action_process']" position="replace">
<button name="action_process" states="assigned" string="Deliver" type="object" icon="gtk-go-forward" class="oe_highlight"/>
</xpath>
<xpath expr="/form/header/field[@name='state']" position="replace">
<xpath expr="/form/header//field[@name='state']" position="replace">
<field name="state" nolabel="1" readonly="1" widget="statusbar" statusbar_visible="draft,confirmed,assigned,done" statusbar_colors='{"auto":"blue", "confirmed":"blue"}'/>
</xpath>
<xpath expr="//field[@name='partner_id']" position="replace">
@@ -1059,11 +1056,7 @@
</record>
<menuitem action="action_picking_tree" id="menu_action_picking_tree" parent="menu_stock_warehouse_mgmt" sequence="3"/>
<!--
#
# Incomming Shipments
#
-->
<!-- Incomming Shipments -->
<record id="view_picking_in_tree" model="ir.ui.view">
<field name="name">stock.picking.in.tree</field>
<field name="model">stock.picking.in</field>
@@ -1089,7 +1082,7 @@
<field name="type">form</field>
<field name="arch" type="xml">
<data>
<xpath expr="//button[@name='%(act_stock_return_picking)d']" position="replace">
<xpath expr="/form/header//button[@name='%(act_stock_return_picking)d']" position="replace">
<button name="%(act_stock_return_picking)d" string="Return Products" states="done" type="action"/>
</xpath>
<xpath expr="//button[@name='draft_validate']" position="replace">
@@ -1191,8 +1184,7 @@
<button name="%(stock.move_scrap)d"
string="Scrap Products" type="action"
icon="gtk-convert" context="{'scrap': True}"
states="draft,waiting,confirmed,assigned"
/>
states="draft,waiting,confirmed,assigned"/>
<field name="prodlot_id" groups="stock.group_production_lot"/>
<button name="%(track_line)d" string="Split in Serial Numbers" type="action"
icon="terp-stock_effects-object-colorize" attrs="{'invisible': [('prodlot_id','&lt;&gt;',False)]}"
@@ -1217,8 +1209,6 @@
</field>
</record>
<!-- <menuitem id="menu_traceability_low" name="Low Level" parent="menu_traceability"/> -->
<record id="view_move_form" model="ir.ui.view">
<field name="name">stock.move.form</field>
<field name="model">stock.move</field>
@@ -1351,13 +1341,10 @@
</record>
<menuitem action="action_move_form2" id="menu_action_move_form2" parent="menu_traceability" sequence="3"/>
====================================
Reception Picking (By Stock Move)
====================================
<!-- from stock_partial_move_view -->
<!--
Reception Picking (By Stock Move)
From stock_partial_move_view
-->
<record id="view_move_tree_reception_picking" model="ir.ui.view">
<field name="name">stock.move.tree2</field>
<field name="model">stock.move</field>
@@ -1377,7 +1364,7 @@
<field name="prodlot_id" groups="stock.group_production_lot"/>
<button name="%(track_line)d" string="Split in Serial Numbers" type="action"
icon="terp-stock_effects-object-colorize" attrs="{'invisible': [('prodlot_id','&lt;&gt;',False)]}"
states="draft,waiting,confirmed,assigned,done"
states="draft,waiting,confirmed,assigned,done"
groups="stock.group_tracking_lot"/>
<field name="tracking_id" groups="stock.group_tracking_lot"/>
<button name="setlast_tracking" string="Put in current pack" type="object"
@@ -1394,8 +1381,9 @@
</tree>
</field>
</record>
<!-- test -->
<record id="view_move_tree_reception_picking_board" model="ir.ui.view">
<record id="view_move_tree_reception_picking_board" model="ir.ui.view">
<field name="name">stock.move.tree3</field>
<field name="model">stock.move</field>
<field name="type">tree</field>
@@ -1499,9 +1487,7 @@
<field name="act_window_id" ref="action_reception_picking_move"/>
</record>
# -------------------------------------------------------------
# Stock incoterms
# -------------------------------------------------------------
<!-- Stock incoterms -->
<record id="view_incoterms_tree" model="ir.ui.view">
<field name="name">stock.incoterms.tree</field>
<field name="model">stock.incoterms</field>
+4 -4
View File
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2012-07-04 23:38+0000\n"
"PO-Revision-Date: 2012-07-30 16:28+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-14 06:20+0000\n"
"X-Generator: Launchpad (build 15614)\n"
"X-Launchpad-Export-Date: 2012-07-31 04:58+0000\n"
"X-Generator: Launchpad (build 15702)\n"
#. module: stock_planning
#: code:addons/stock_planning/wizard/stock_planning_createlines.py:73
@@ -1184,7 +1184,7 @@ msgstr "誰がこの予測を作成したのか、検証したのかを示しま
#. module: stock_planning
#: field:stock.sale.forecast,analyzed_team_id:0
msgid "Sales Team"
msgstr "販売チーム"
msgstr "営業チーム"
#. module: stock_planning
#: help:stock.planning,incoming_left:0

Some files were not shown because too many files have changed in this diff Show More