Merge lp:~openerp-dev/openobject-addons/trunk-add-x2many-widget-sgo into lp:openobject-addons

Proposed by Sanjay Gohel (Open ERP)
Status: Needs review
Proposed branch: lp:~openerp-dev/openobject-addons/trunk-add-x2many-widget-sgo
Merge into: lp:openobject-addons
Diff against target: 1023 lines (+174/-131)
50 files modified
account/account_view.xml (+1/-1)
account/partner.py (+5/-1)
account/partner_view.xml (+7/-12)
account_analytic_default/account_analytic_default_view.xml (+1/-1)
account_asset/account_asset_view.xml (+1/-1)
account_payment/account_payment_view.xml (+1/-1)
account_voucher/account_voucher_view.xml (+1/-1)
auth_signup/res_users_view.xml (+1/-1)
claim_from_delivery/claim_delivery_view.xml (+1/-1)
crm/crm_lead_view.xml (+3/-2)
crm/res_partner_view.xml (+12/-7)
crm_claim/res_partner_view.xml (+3/-3)
email_template/email_template_view.xml (+3/-3)
event/event_view.xml (+2/-1)
fleet/fleet_view.xml (+9/-5)
hr_contract/hr_contract_view.xml (+3/-1)
hr_evaluation/hr_evaluation_view.xml (+4/-4)
hr_holidays/hr_holidays.py (+1/-0)
hr_holidays/hr_holidays_view.xml (+2/-1)
hr_payroll/hr_payroll_view.xml (+3/-2)
hr_recruitment/hr_recruitment_view.xml (+4/-4)
hr_timesheet/hr_timesheet_view.xml (+1/-1)
hr_timesheet_sheet/hr_timesheet_sheet_view.xml (+3/-2)
mail/mail_alias_view.xml (+1/-1)
marketing_campaign/marketing_campaign.py (+4/-0)
marketing_campaign/marketing_campaign_view.xml (+5/-17)
mrp/mrp_view.xml (+5/-3)
point_of_sale/point_of_sale_view.xml (+2/-2)
procurement/procurement_view.xml (+3/-1)
project/project.py (+12/-12)
project/project_view.xml (+3/-2)
project/res_partner_view.xml (+3/-3)
project/tests/test_project_flow.py (+4/-4)
project_issue/project_issue.py (+9/-2)
project_issue/project_issue_view.xml (+5/-4)
project_long_term/project_long_term_view.xml (+5/-4)
project_long_term/test/task_process.yml (+1/-1)
project_timesheet/project_timesheet_view.xml (+1/-1)
purchase/partner_view.xml (+4/-2)
purchase/purchase.py (+5/-0)
purchase/purchase_view.xml (+3/-1)
purchase/stock_view.xml (+2/-2)
purchase_requisition/purchase_requisition_view.xml (+1/-1)
sale/res_partner_view.xml (+3/-2)
sale/sale.py (+6/-0)
sale/sale_view.xml (+3/-1)
stock/product.py (+1/-0)
stock/product_view.xml (+4/-2)
stock/stock_view.xml (+3/-3)
survey/survey_view.xml (+4/-4)
To merge this branch: bzr merge lp:~openerp-dev/openobject-addons/trunk-add-x2many-widget-sgo
Reviewer Review Type Date Requested Status
OpenERP Core Team Pending
Review via email: mp+196490@code.launchpad.net

Description of the change

Hello,
    Change in button behaviour set oe_link which lies in button_box class and also set x2many widget where is needed on one2many field. If no field is set related with another than also add new one2many field For looks like in kanban view.

Thank You.
Sanjay Gohel

To post a comment you must log in.
8968. By Sanjay Gohel (Open ERP)

[MERGE]with trunk

8969. By Sanjay Gohel (Open ERP)

[IMP]change field name to issues to issue_ids and on long term remove kanban from options

8970. By Sanjay Gohel (Open ERP)

[IMP]add vertical seprator and remove kanban from options

8971. By Sanjay Gohel (Open ERP)

[REM/IMP]remove kanban from options and add vertical seprator

8972. By Sanjay Gohel (Open ERP)

[IMP]set oe_link

8973. By Sanjay Gohel (Open ERP)

[IMP]remove unused options and set field in product form view

8974. By Sanjay Gohel (Open ERP)

[IMP]add separator

8975. By Sanjay Gohel (Open ERP)

[IMP]remove unused code

8976. By RGA(OpenERP)

[IMP] fleet: fix dead link add type of button, project_log_term: add oe_button_box for phase from view and button to dispaly it as link

8977. By Sanjay Gohel (Open ERP)

[MERGE]sync with trunk

8978. By Sanjay Gohel (Open ERP)

[MERGE]sync with trunk

8979. By Sanjay Gohel (Open ERP)

[MERGE]sync with trunk

Unmerged revisions

8979. By Sanjay Gohel (Open ERP)

[MERGE]sync with trunk

8978. By Sanjay Gohel (Open ERP)

[MERGE]sync with trunk

8977. By Sanjay Gohel (Open ERP)

[MERGE]sync with trunk

8976. By RGA(OpenERP)

[IMP] fleet: fix dead link add type of button, project_log_term: add oe_button_box for phase from view and button to dispaly it as link

8975. By Sanjay Gohel (Open ERP)

[IMP]remove unused code

8974. By Sanjay Gohel (Open ERP)

[IMP]add separator

8973. By Sanjay Gohel (Open ERP)

[IMP]remove unused options and set field in product form view

8972. By Sanjay Gohel (Open ERP)

[IMP]set oe_link

8971. By Sanjay Gohel (Open ERP)

[REM/IMP]remove kanban from options and add vertical seprator

8970. By Sanjay Gohel (Open ERP)

[IMP]add vertical seprator and remove kanban from options

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'account/account_view.xml'
--- account/account_view.xml 2013-10-27 12:31:04 +0000
+++ account/account_view.xml 2013-12-05 09:45:50 +0000
@@ -631,7 +631,7 @@
631 <field name="arch" type="xml">631 <field name="arch" type="xml">
632 <xpath expr="//div[@name='import_buttons']" position="inside">632 <xpath expr="//div[@name='import_buttons']" position="inside">
633 <button name="button_journal_entries"633 <button name="button_journal_entries"
634 string="Journal Items" type="object"634 string="Journal Items" type="object" class="oe_link"
635 attrs="{'invisible':[('state','!=','confirm')]}"/>635 attrs="{'invisible':[('state','!=','confirm')]}"/>
636 </xpath>636 </xpath>
637 </field>637 </field>
638638
=== modified file 'account/partner.py'
--- account/partner.py 2013-11-27 15:32:57 +0000
+++ account/partner.py 2013-12-05 09:45:50 +0000
@@ -222,7 +222,11 @@
222 help="This payment term will be used instead of the default one for purchase orders and supplier invoices"),222 help="This payment term will be used instead of the default one for purchase orders and supplier invoices"),
223 'ref_companies': fields.one2many('res.company', 'partner_id',223 'ref_companies': fields.one2many('res.company', 'partner_id',
224 'Companies that refers to partner'),224 'Companies that refers to partner'),
225 'last_reconciliation_date': fields.datetime('Latest Full Reconciliation Date', help='Date on which the partner accounting entries were fully reconciled last time. It differs from the last date where a reconciliation has been made for this partner, as here we depict the fact that nothing more was to be reconciled at this date. This can be achieved in 2 different ways: either the last unreconciled debit/credit entry of this partner was reconciled, either the user pressed the button "Nothing more to reconcile" during the manual reconciliation process.')225 'last_reconciliation_date': fields.datetime('Latest Full Reconciliation Date', help='Date on which the partner accounting entries were fully reconciled last time. It differs from the last date where a reconciliation has been made for this partner, as here we depict the fact that nothing more was to be reconciled at this date. This can be achieved in 2 different ways: either the last unreconciled debit/credit entry of this partner was reconciled, either the user pressed the button "Nothing more to reconcile" during the manual reconciliation process.'),
226 'ref_companies': fields.one2many('res.company', 'partner_id',
227 'Companies that refers to partner'),
228 'invoice_ids': fields.one2many('account.invoice', 'partner_id', 'Invoices'),
229 'contract_ids': fields.one2many('account.analytic.account', 'partner_id', 'Contracts'),
226 }230 }
227231
228 def _commercial_fields(self, cr, uid, context=None):232 def _commercial_fields(self, cr, uid, context=None):
229233
=== modified file 'account/partner_view.xml'
--- account/partner_view.xml 2013-10-27 12:31:04 +0000
+++ account/partner_view.xml 2013-12-05 09:45:50 +0000
@@ -50,13 +50,6 @@
50 </field>50 </field>
51 </record>51 </record>
5252
53 <record id="action_open_partner_analytic_accounts" model="ir.actions.act_window">
54 <field name="context">{'search_default_partner_id': [active_id], 'default_partner_id': active_id}</field>
55 <field name="name">Contracts/Analytic Accounts</field>
56 <field name="res_model">account.analytic.account</field>
57 <field name="view_id" ref="view_account_analytic_account_tree"/>
58 <field name="search_view_id" ref="view_account_analytic_account_search"/>
59 </record>
60 <record model="ir.ui.view" id="partner_view_buttons">53 <record model="ir.ui.view" id="partner_view_buttons">
61 <field name="name">partner.view.buttons</field>54 <field name="name">partner.view.buttons</field>
62 <field name="model">res.partner</field>55 <field name="model">res.partner</field>
@@ -64,12 +57,14 @@
64 <field name="priority" eval="20"/>57 <field name="priority" eval="20"/>
65 <field name="arch" type="xml">58 <field name="arch" type="xml">
66 <xpath expr="//div[@name='buttons']" position="inside">59 <xpath expr="//div[@name='buttons']" position="inside">
67 <button type="action" string="Invoices" 60 <field name="invoice_ids"
68 name="%(account.action_invoice_tree)d" 61 widget="x2many_counter" class="oe_vertical_separator"
62 options='{"views": [[false, "list"], [false, "form"]]}'
69 context="{'search_default_partner_id': active_id,'default_partner_id': active_id}" groups="account.group_account_invoice"/>63 context="{'search_default_partner_id': active_id,'default_partner_id': active_id}" groups="account.group_account_invoice"/>
70 <button type="action" string="Journal Items" name="%(account.action_account_moves_all_tree)d" groups="account.group_account_user"/>64 <button type="action" string="Journal Items" class="oe_link oe_vertical_separator" name="%(account.action_account_moves_all_tree)d" groups="account.group_account_user"/>
71 <button type="action" string="Contracts" name="%(account.action_open_partner_analytic_accounts)d"65 <field name="contract_ids" groups="analytic.group_analytic_accounting"
72 groups="analytic.group_analytic_accounting"/>66 widget="x2many_counter" class="oe_vertical_separator"
67 options='{"views": [[false, "list"], [false, "form"]]}'/>
73 </xpath>68 </xpath>
74 </field>69 </field>
75 </record>70 </record>
7671
=== modified file 'account_analytic_default/account_analytic_default_view.xml'
--- account_analytic_default/account_analytic_default_view.xml 2013-10-27 12:31:04 +0000
+++ account_analytic_default/account_analytic_default_view.xml 2013-12-05 09:45:50 +0000
@@ -80,7 +80,7 @@
80 <field name="inherit_id" ref="product.product_normal_form_view"/>80 <field name="inherit_id" ref="product.product_normal_form_view"/>
81 <field name="arch" type="xml">81 <field name="arch" type="xml">
82 <xpath expr="//div[@name='buttons']" position="inside">82 <xpath expr="//div[@name='buttons']" position="inside">
83 <button string="Analytic Rules" name= "%(action_product_default_list)d" type="action" groups="analytic.group_analytic_accounting" />83 <button string="Analytic Rules" class="oe_link oe_vertical_separator" name= "%(action_product_default_list)d" type="action" groups="analytic.group_analytic_accounting" />
84 </xpath>84 </xpath>
85 </field>85 </field>
86 </record>86 </record>
8787
=== modified file 'account_asset/account_asset_view.xml'
--- account_asset/account_asset_view.xml 2013-10-27 12:31:04 +0000
+++ account_asset/account_asset_view.xml 2013-12-05 09:45:50 +0000
@@ -84,7 +84,7 @@
84 </header>84 </header>
85 <sheet>85 <sheet>
86 <div class="oe_button_box oe_right">86 <div class="oe_button_box oe_right">
87 <button name="open_entries" string="Entries" type="object" class="oe_inline"/>87 <button name="open_entries" string="Entries" type="object" class="oe_inline oe_link"/>
88 </div>88 </div>
89 <div class="oe_title">89 <div class="oe_title">
90 <label for="name" class="oe_edit_only"/>90 <label for="name" class="oe_edit_only"/>
9191
=== modified file 'account_payment/account_payment_view.xml'
--- account_payment/account_payment_view.xml 2013-11-27 15:32:57 +0000
+++ account_payment/account_payment_view.xml 2013-12-05 09:45:50 +0000
@@ -70,7 +70,7 @@
70 </header>70 </header>
71 <sheet string="Payment order">71 <sheet string="Payment order">
72 <div class="oe_button_box">72 <div class="oe_button_box">
73 <button name="%(action_create_payment_order)d" string="Select Invoices to Pay"73 <button class="oe_link oe_vertical_separator" name="%(action_create_payment_order)d" string="Select Invoices to Pay"
74 type="action" attrs="{'invisible':[('state','=','done')]}" icon="gtk-find"/>74 type="action" attrs="{'invisible':[('state','=','done')]}" icon="gtk-find"/>
75 </div>75 </div>
76 <div class="oe_title">76 <div class="oe_title">
7777
=== modified file 'account_voucher/account_voucher_view.xml'
--- account_voucher/account_voucher_view.xml 2013-10-27 12:31:04 +0000
+++ account_voucher/account_voucher_view.xml 2013-12-05 09:45:50 +0000
@@ -201,7 +201,7 @@
201 <field name="arch" type="xml">201 <field name="arch" type="xml">
202 <xpath expr="//div[@name='import_buttons']" position="inside">202 <xpath expr="//div[@name='import_buttons']" position="inside">
203 <button name="%(action_view_account_statement_from_invoice_lines)d"203 <button name="%(action_view_account_statement_from_invoice_lines)d"
204 string="Import Invoices" type="action"204 string="Import Invoices" type="action" class="oe_link oe_vertical_separator"
205 attrs="{'invisible':[('state','=','confirm')]}"/>205 attrs="{'invisible':[('state','=','confirm')]}"/>
206 </xpath>206 </xpath>
207 </field>207 </field>
208208
=== modified file 'auth_signup/res_users_view.xml'
--- auth_signup/res_users_view.xml 2013-11-27 15:32:57 +0000
+++ auth_signup/res_users_view.xml 2013-12-05 09:45:50 +0000
@@ -30,7 +30,7 @@
30 type="object" name="action_reset_password"30 type="object" name="action_reset_password"
31 attrs="{'invisible': [('state', '!=', 'active')]}"/>31 attrs="{'invisible': [('state', '!=', 'active')]}"/>
32 <button string="Send an Invitation Email"32 <button string="Send an Invitation Email"
33 class="oe_link"33 class="oe_link oe_vertical_separator"
34 type="object" name="action_reset_password" context="{'create_user': 1}"34 type="object" name="action_reset_password" context="{'create_user': 1}"
35 attrs="{'invisible': [('state', '!=', 'new')]}"/>35 attrs="{'invisible': [('state', '!=', 'new')]}"/>
36 </xpath>36 </xpath>
3737
=== modified file 'claim_from_delivery/claim_delivery_view.xml'
--- claim_from_delivery/claim_delivery_view.xml 2012-11-29 22:26:45 +0000
+++ claim_from_delivery/claim_delivery_view.xml 2013-12-05 09:45:50 +0000
@@ -17,7 +17,7 @@
17 <field name="arch" type="xml">17 <field name="arch" type="xml">
18 <xpath expr="/form/sheet/h1" position="before">18 <xpath expr="/form/sheet/h1" position="before">
19 <div class="oe_right oe_button_box">19 <div class="oe_right oe_button_box">
20 <button name="%(action_claim_from_delivery)d" string="Claims" type="action"/>20 <button name="%(action_claim_from_delivery)d" class="oe_link" string="Claims" type="action"/>
21 </div>21 </div>
22 </xpath>22 </xpath>
23 </field>23 </field>
2424
=== modified file 'crm/crm_lead_view.xml'
--- crm/crm_lead_view.xml 2013-11-29 09:46:10 +0000
+++ crm/crm_lead_view.xml 2013-12-05 09:45:50 +0000
@@ -105,6 +105,7 @@
105 <sheet>105 <sheet>
106 <div class="oe_right oe_button_box" name="buttons">106 <div class="oe_right oe_button_box" name="buttons">
107 <button string="Schedule/Log Call" 107 <button string="Schedule/Log Call"
108 class="oe_link"
108 name="%(opportunity2phonecall_act)d"109 name="%(opportunity2phonecall_act)d"
109 type="action"/>110 type="action"/>
110 </div>111 </div>
@@ -389,9 +390,9 @@
389 <sheet>390 <sheet>
390 <div class="oe_right oe_button_box">391 <div class="oe_right oe_button_box">
391 <button string="Schedule/Log Call" type="action"392 <button string="Schedule/Log Call" type="action"
392 name="%(opportunity2phonecall_act)d"/>393 name="%(opportunity2phonecall_act)d" class="oe_link"/>
393 <button string="Meeting" type="object"394 <button string="Meeting" type="object"
394 name="action_makeMeeting"395 name="action_makeMeeting" class="oe_link oe_vertical_separator"
395 context="{'search_default_attendee_id': active_id, 'default_attendee_id' : active_id}"/>396 context="{'search_default_attendee_id': active_id, 'default_attendee_id' : active_id}"/>
396 </div>397 </div>
397 <div class="oe_title">398 <div class="oe_title">
398399
=== modified file 'crm/res_partner_view.xml'
--- crm/res_partner_view.xml 2013-10-27 12:31:04 +0000
+++ crm/res_partner_view.xml 2013-12-05 09:45:50 +0000
@@ -90,16 +90,21 @@
90 <field name="section_id" completion="1" groups="base.group_multi_salesteams"/>90 <field name="section_id" completion="1" groups="base.group_multi_salesteams"/>
91 </field>91 </field>
92 <xpath expr="//div[@name='buttons']" position="inside">92 <xpath expr="//div[@name='buttons']" position="inside">
93 <button class="oe_inline" type="action" string="Opportunities"93 <field string="Opportunities"
94 attrs="{'invisible': [('customer', '=', False)]}"94 attrs="{'invisible': [('customer', '=', False)]}"
95 name="%(crm.crm_case_category_act_oppor11)d"95 name="opportunity_ids"
96 widget="x2many_counter" class="oe_vertical_separator"
97 options='{"views": [[false, "kanban"], [false, "list"], [false, "form"], [false, "calendar"], [false, "graph"]]}'
96 context="{'search_default_partner_id': active_id}"/>98 context="{'search_default_partner_id': active_id}"/>
97 <button class="oe_inline" type="action"99 <field string="Meetings"
98 string="Meetings"100 name="meeting_ids"
99 name="%(base_calendar.action_crm_meeting)d"101 widget="x2many_counter" class="oe_vertical_separator"
102 options='{"views": [[false, "list"], [false, "form"], [false, "calendar"], [false, "gantt"]]}'
100 context="{'search_default_partner_ids': active_id, 'default_partner_ids' : [active_id]}"/>103 context="{'search_default_partner_ids': active_id, 'default_partner_ids' : [active_id]}"/>
101 <button class="oe_inline" type="action" string="Calls" 104 <field string="Calls"
102 name="%(crm.crm_case_categ_phone_incoming0)d" 105 name="phonecall_ids"
106 widget="x2many_counter" class="oe_vertical_separator"
107 options='{"views": [[false, "list"], [false, "form"], [false, "calendar"]]}'
103 context="{'search_default_partner_id': active_id, 'default_duration': 1.0}" />108 context="{'search_default_partner_id': active_id, 'default_duration': 1.0}" />
104 </xpath>109 </xpath>
105 </data>110 </data>
106111
=== modified file 'crm_claim/res_partner_view.xml'
--- crm_claim/res_partner_view.xml 2013-06-14 12:10:20 +0000
+++ crm_claim/res_partner_view.xml 2013-12-05 09:45:50 +0000
@@ -9,9 +9,9 @@
9 <field name="priority" eval="50"/>9 <field name="priority" eval="50"/>
10 <field name="arch" type="xml">10 <field name="arch" type="xml">
11 <xpath expr="//div[@name='buttons']" position="inside">11 <xpath expr="//div[@name='buttons']" position="inside">
12 <button class="oe_inline" type="action"12 <field name="claims_ids"
13 name="%(crm_case_categ_claim0)d"13 widget="x2many_counter" class="oe_vertical_separator"
14 string="Claims"14 options='{"views": [[false, "list"], [false, "form"], [false, "calendar"]]}'
15 context="{'search_default_partner_id': active_id, 'default_partner_id': active_id}"15 context="{'search_default_partner_id': active_id, 'default_partner_id': active_id}"
16 groups="base.group_sale_salesman" />16 groups="base.group_sale_salesman" />
17 </xpath>17 </xpath>
1818
=== modified file 'email_template/email_template_view.xml'
--- email_template/email_template_view.xml 2013-10-27 12:31:04 +0000
+++ email_template/email_template_view.xml 2013-12-05 09:45:50 +0000
@@ -15,13 +15,13 @@
15 <div class="oe_right oe_button_box" name="buttons">15 <div class="oe_right oe_button_box" name="buttons">
16 <field name="ref_ir_act_window" invisible="1"/>16 <field name="ref_ir_act_window" invisible="1"/>
17 <button name="create_action" string="Add context action" type="object"17 <button name="create_action" string="Add context action" type="object"
18 attrs="{'invisible':[('ref_ir_act_window','!=',False)]}"18 attrs="{'invisible':[('ref_ir_act_window','!=',False)]}" class="oe_link"
19 help="Display an option on related documents to open a composition wizard with this template"/>19 help="Display an option on related documents to open a composition wizard with this template"/>
20 <button name="unlink_action" string="Remove context action" type="object" 20 <button name="unlink_action" string="Remove context action" type="object"
21 attrs="{'invisible':[('ref_ir_act_window','=',False)]}"21 attrs="{'invisible':[('ref_ir_act_window','=',False)]}" class="oe_link"
22 help="Remove the contextual action to use this template on related documents"/>22 help="Remove the contextual action to use this template on related documents"/>
23 <button name="%(wizard_email_template_preview)d" string="Preview"23 <button name="%(wizard_email_template_preview)d" string="Preview"
24 type="action" target="new"24 type="action" target="new" class="oe_link oe_vertical_separator"
25 context="{'template_id':active_id}"/>25 context="{'template_id':active_id}"/>
26 </div>26 </div>
27 <notebook>27 <notebook>
2828
=== modified file 'event/event_view.xml'
--- event/event_view.xml 2013-10-27 12:31:04 +0000
+++ event/event_view.xml 2013-12-05 09:45:50 +0000
@@ -71,7 +71,8 @@
71 </header>71 </header>
72 <sheet>72 <sheet>
73 <div class="oe_right oe_button_box" groups="base.group_user">73 <div class="oe_right oe_button_box" groups="base.group_user">
74 <button name="%(event.act_event_list_register_event)d" type="action" string="Registrations" help="Register with this event"/>74 <field name="registration_ids" widget="x2many_counter"
75 options='{"views": [[false, "list"], [false, "form"], [false, "calendar"], [false, "graph"]]}'/>
75 </div>76 </div>
76 <div class="oe_title">77 <div class="oe_title">
77 <label for="name" class="oe_edit_only"/>78 <label for="name" class="oe_edit_only"/>
7879
=== modified file 'fleet/fleet_view.xml'
--- fleet/fleet_view.xml 2013-11-27 15:32:57 +0000
+++ fleet/fleet_view.xml 2013-12-05 09:45:50 +0000
@@ -211,11 +211,15 @@
211 <field name="tag_ids" widget="many2many_tags" />211 <field name="tag_ids" widget="many2many_tags" />
212 </div>212 </div>
213 <div class="oe_right oe_button_box">213 <div class="oe_right oe_button_box">
214 <button name="return_action_to_open" type="object" context="{'xml_id':'fleet_vehicle_log_contract_act'}" string="Contracts" help="show the contract for this vehicle" />214 <field name="log_contracts" widget="x2many_counter" class="oe_vertical_separator"
215 <button name="act_show_log_cost" type="object" string="Costs" help="show all the costs for this vehicle" groups="fleet.group_fleet_manager"/>215 options='{"views": [[false, "list"], [false, "form"], [false, "graph"]]}'
216 <button name="return_action_to_open" type="object" context="{'xml_id':'fleet_vehicle_log_services_act'}" string="Services" help="show the services logs for this vehicle" />216 string="Contracts" help="show the contract for this vehicle" />
217 <button name="return_action_to_open" type="object" context="{'xml_id':'fleet_vehicle_log_fuel_act'}" string="Fuel Logs" help="show the fuel logs for this vehicle" />217 <button name="act_show_log_cost" type="object" class="oe_link oe_vertical_separator" string="Costs" help="show all the costs for this vehicle" groups="fleet.group_fleet_manager"/>
218 <button name="return_action_to_open" type="object" context="{'xml_id':'fleet_vehicle_odometer_act'}" string="Odometer Logs" help="show the odometer logs for this vehicle" />218 <field name="log_services" class="oe_vertical_separator" string="Services"
219 options='{"views": [[false, "list"], [false, "form"], [false, "graph"]]}' widget="x2many_counter"
220 help="show the services logs for this vehicle" />
221 <button name="return_action_to_open" type="object" context="{'xml_id':'fleet_vehicle_log_fuel_act'}" class="oe_link" string="Fuel Logs" help="show the fuel logs for this vehicle" />
222 <button name="return_action_to_open" type="object" context="{'xml_id':'fleet_vehicle_odometer_act'}" class="oe_link oe_vertical_separator" string="Odometer Logs" help="show the odometer logs for this vehicle" />
219 </div> 223 </div>
220 <group col="2" string="General Properties">224 <group col="2" string="General Properties">
221 <group >225 <group >
222226
=== modified file 'hr_contract/hr_contract_view.xml'
--- hr_contract/hr_contract_view.xml 2013-10-27 12:31:04 +0000
+++ hr_contract/hr_contract_view.xml 2013-12-05 09:45:50 +0000
@@ -21,7 +21,9 @@
21 <field name="arch" type="xml">21 <field name="arch" type="xml">
22 <data>22 <data>
23 <xpath expr="//div[@name='button_box']" position="inside">23 <xpath expr="//div[@name='button_box']" position="inside">
24 <button name="%(act_hr_employee_2_hr_contract)d" string="Contracts" type="action" groups="base.group_hr_manager"/>24 <field name="contract_ids" string="Contracts" widget="x2many_counter"
25 groups="base.group_hr_manager" class="oe_vertical_separator"
26 options='{"views": [[false, "list"], [false, "form"]]}'/>
25 </xpath>27 </xpath>
26 <xpath expr="//field[@name='coach_id']" position="after">28 <xpath expr="//field[@name='coach_id']" position="after">
27 <field name="manager"/>29 <field name="manager"/>
2830
=== modified file 'hr_evaluation/hr_evaluation_view.xml'
--- hr_evaluation/hr_evaluation_view.xml 2013-10-27 12:31:04 +0000
+++ hr_evaluation/hr_evaluation_view.xml 2013-12-05 09:45:50 +0000
@@ -145,7 +145,7 @@
145 </group>145 </group>
146 </xpath>146 </xpath>
147 <xpath expr="//div[@name='button_box']" position="inside">147 <xpath expr="//div[@name='button_box']" position="inside">
148 <button name="%(act_hr_employee_2_hr__evaluation_interview)d" string="Appraisal Interviews" type="action"/>148 <button name="%(act_hr_employee_2_hr__evaluation_interview)d" class="oe_link oe_vertical_separator" string="Appraisal Interviews" type="action"/>
149 </xpath>149 </xpath>
150 </field>150 </field>
151 </record>151 </record>
@@ -183,8 +183,8 @@
183 <field nolabel="1" name="survey_request_ids" attrs="{'readonly': [('state', '=', 'done')]}">183 <field nolabel="1" name="survey_request_ids" attrs="{'readonly': [('state', '=', 'done')]}">
184 <form string="Interview Appraisal" version="7.0">184 <form string="Interview Appraisal" version="7.0">
185 <div class="oe_right oe_button_box">185 <div class="oe_right oe_button_box">
186 <button name="%(survey.action_view_survey_question_message)d" string="Answer Survey" type="action" states="waiting_answer" icon="gtk-execute" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response,'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}" attrs="{'readonly':[('survey_id','=',False)]}"/>186 <button name="%(survey.action_view_survey_question_message)d" class="oe_link" string="Answer Survey" type="action" states="waiting_answer" icon="gtk-execute" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response,'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}" attrs="{'readonly':[('survey_id','=',False)]}"/>
187 <button name="%(survey.survey_browse_response)d" string="Print Interview" type="action" states="done" icon="gtk-print" context="{'survey_id': survey_id, 'response_id' : [response], 'response_no':0,}" attrs="{'readonly':[('response','=',False)]}" />187 <button name="%(survey.survey_browse_response)d" class="oe_link oe_vertical_separator" string="Print Interview" type="action" states="done" icon="gtk-print" context="{'survey_id': survey_id, 'response_id' : [response], 'response_no':0,}" attrs="{'readonly':[('response','=',False)]}" />
188 </div>188 </div>
189 <group>189 <group>
190 <group>190 <group>
@@ -305,7 +305,7 @@
305 <sheet>305 <sheet>
306 <div class="oe_right oe_button_box" name="button_box">306 <div class="oe_right oe_button_box" name="button_box">
307 <button string="Send Reminder Email" name="%(mail.action_email_compose_message_wizard)d" type="action"307 <button string="Send Reminder Email" name="%(mail.action_email_compose_message_wizard)d" type="action"
308 states="waiting_answer"308 states="waiting_answer" class="oe_link"
309 context="{'default_body_text': 'Hello,\n\nKindly post your response for the survey interview.\n\nThanks',309 context="{'default_body_text': 'Hello,\n\nKindly post your response for the survey interview.\n\nThanks',
310 'default_subject': 'Reminder to fill up Survey' }"/>310 'default_subject': 'Reminder to fill up Survey' }"/>
311 </div>311 </div>
312312
=== modified file 'hr_holidays/hr_holidays.py'
--- hr_holidays/hr_holidays.py 2013-11-27 15:32:57 +0000
+++ hr_holidays/hr_holidays.py 2013-12-05 09:45:50 +0000
@@ -548,6 +548,7 @@
548 'current_leave_id': fields.function(_get_leave_status, multi="leave_status", string="Current Leave Type",type='many2one', relation='hr.holidays.status'),548 'current_leave_id': fields.function(_get_leave_status, multi="leave_status", string="Current Leave Type",type='many2one', relation='hr.holidays.status'),
549 'leave_date_from': fields.function(_get_leave_status, multi='leave_status', type='date', string='From Date'),549 'leave_date_from': fields.function(_get_leave_status, multi='leave_status', type='date', string='From Date'),
550 'leave_date_to': fields.function(_get_leave_status, multi='leave_status', type='date', string='To Date'),550 'leave_date_to': fields.function(_get_leave_status, multi='leave_status', type='date', string='To Date'),
551 'leave_ids': fields.one2many('hr.holidays','employee_id',string="Leaves")
551 }552 }
552553
553554
554555
=== modified file 'hr_holidays/hr_holidays_view.xml'
--- hr_holidays/hr_holidays_view.xml 2013-10-27 12:31:04 +0000
+++ hr_holidays/hr_holidays_view.xml 2013-12-05 09:45:50 +0000
@@ -522,7 +522,8 @@
522 </group>522 </group>
523 </xpath>523 </xpath>
524 <xpath expr="//div[@name='button_box']" position="inside">524 <xpath expr="//div[@name='button_box']" position="inside">
525 <button name="%(act_hr_employee_holiday_request)d" string="Leaves" type="action" groups="base.group_hr_user"/>525 <field name="leave_ids" widget="x2many_counter" groups="base.group_hr_user" class="oe_vertical_separator"
526 options='{"views": [[false, "list"], [false, "form"], [false, "calendar"]]}'/>
526 </xpath>527 </xpath>
527 </field>528 </field>
528 </record>529 </record>
529530
=== modified file 'hr_payroll/hr_payroll_view.xml'
--- hr_payroll/hr_payroll_view.xml 2013-10-27 12:31:04 +0000
+++ hr_payroll/hr_payroll_view.xml 2013-12-05 09:45:50 +0000
@@ -222,7 +222,7 @@
222 </header>222 </header>
223 <sheet>223 <sheet>
224 <div class="oe_right oe_button_box">224 <div class="oe_right oe_button_box">
225 <button name="%(act_payslip_lines)d" string="Payslip Computation Details" type="action"/>225 <button name="%(act_payslip_lines)d" class="oe_link" string="Payslip Computation Details" type="action"/>
226 </div>226 </div>
227 <div class="oe_title">227 <div class="oe_title">
228 <label for="employee_id" class="oe_edit_only"/>228 <label for="employee_id" class="oe_edit_only"/>
@@ -387,7 +387,8 @@
387 <field name="arch" type="xml">387 <field name="arch" type="xml">
388 <data>388 <data>
389 <xpath expr="//div[@name='button_box']" position="inside">389 <xpath expr="//div[@name='button_box']" position="inside">
390 <button name="%(act_hr_employee_payslip_list)d" string="Payslips" type="action" groups="base.group_hr_user"/>390 <field name="slip_ids" string="Payslips" widget="x2many_counter" class="oe_vertical_separator"
391 groups="base.group_hr_user" options='{"views": [[false, "list"], [false, "form"]]}'/>
391 </xpath>392 </xpath>
392 </data>393 </data>
393 </field>394 </field>
394395
=== modified file 'hr_recruitment/hr_recruitment_view.xml'
--- hr_recruitment/hr_recruitment_view.xml 2013-11-27 15:32:57 +0000
+++ hr_recruitment/hr_recruitment_view.xml 2013-12-05 09:45:50 +0000
@@ -74,13 +74,13 @@
74 </header>74 </header>
75 <sheet>75 <sheet>
76 <div class="oe_right oe_button_box">76 <div class="oe_right oe_button_box">
77 <button name="action_makeMeeting" type="object"77 <button name="action_makeMeeting" class="oe_link" type="object"
78 string="Schedule Meeting" help="Schedule interview with this applicant"/>78 string="Schedule Meeting" help="Schedule interview with this applicant"/>
79 <button name="%(survey.action_view_survey_question_message)d" type="action"79 <button name="%(survey.action_view_survey_question_message)d" class="oe_link oe_vertical_separator" type="action"
80 string="Start Interview" help="Answer related job question"80 string="Start Interview" help="Answer related job question"
81 context="{'survey_id': survey, 'response_id': [response], 'response_no':0 ,'active' : response, 'object' : 'hr.applicant'}"81 context="{'survey_id': survey, 'response_id': [response], 'response_no':0 ,'active' : response, 'object' : 'hr.applicant'}"
82 attrs="{'invisible':[('survey','=',False)]}"/>82 attrs="{'invisible':[('survey','=',False)]}"/>
83 <button name="action_print_survey" type="object"83 <button name="action_print_survey" type="object" class="oe_link oe_vertical_separator"
84 string="Print Interview" help="Print interview report"84 string="Print Interview" help="Print interview report"
85 attrs="{'invisible':[('survey','=',False)]}"/>85 attrs="{'invisible':[('survey','=',False)]}"/>
86 </div>86 </div>
8787
=== modified file 'hr_timesheet/hr_timesheet_view.xml'
--- hr_timesheet/hr_timesheet_view.xml 2013-11-27 15:32:57 +0000
+++ hr_timesheet/hr_timesheet_view.xml 2013-12-05 09:45:50 +0000
@@ -119,7 +119,7 @@
119 </xpath>119 </xpath>
120 <xpath expr='//div[@name="buttons"]' position='inside'>120 <xpath expr='//div[@name="buttons"]' position='inside'>
121 <button string="Costs and Revenues"121 <button string="Costs and Revenues"
122 name="%(act_analytic_cost_revenue)d"122 name="%(act_analytic_cost_revenue)d" class="oe_link"
123 type="action"/>123 type="action"/>
124124
125 </xpath>125 </xpath>
126126
=== modified file 'hr_timesheet_sheet/hr_timesheet_sheet_view.xml'
--- hr_timesheet_sheet/hr_timesheet_sheet_view.xml 2012-12-17 11:14:02 +0000
+++ hr_timesheet_sheet/hr_timesheet_sheet_view.xml 2013-12-05 09:45:50 +0000
@@ -71,10 +71,11 @@
71 </header>71 </header>
72 <sheet>72 <sheet>
73 <div class="oe_right oe_button_box" name="buttons">73 <div class="oe_right oe_button_box" name="buttons">
74 <button type="action"74 <button type="action" class="oe_link"
75 name="%(act_hr_timesheet_sheet_sheet_2_hr_analytic_timesheet)d"75 name="%(act_hr_timesheet_sheet_sheet_2_hr_analytic_timesheet)d"
76 string="Timesheet Activities" />76 string="Timesheet Activities" />
77 <button type="action" groups="base.group_hr_attendance"77 <button type="action" groups="base.group_hr_attendance"
78 class="oe_link oe_vertical_separator"
78 name="%(act_hr_timesheet_sheet_sheet_2_hr_attendance)d"79 name="%(act_hr_timesheet_sheet_sheet_2_hr_attendance)d"
79 string="Attendances" />80 string="Attendances" />
80 </div>81 </div>
@@ -365,7 +366,7 @@
365 <field name="inherit_id" ref="hr_timesheet.hr_timesheet_employee_extd_form"/>366 <field name="inherit_id" ref="hr_timesheet.hr_timesheet_employee_extd_form"/>
366 <field name="arch" type="xml">367 <field name="arch" type="xml">
367 <xpath expr="//div[@name='button_box']" position="inside">368 <xpath expr="//div[@name='button_box']" position="inside">
368 <button name="%(act_hr_employee_2_hr_timesheet)d" string="Timesheets" type="action" groups="base.group_hr_manager"/>369 <button name="%(act_hr_employee_2_hr_timesheet)d" string="Timesheets" class="oe_link oe_vertical_separator" type="action" groups="base.group_hr_manager"/>
369 </xpath>370 </xpath>
370 </field>371 </field>
371 </record>372 </record>
372373
=== modified file 'mail/mail_alias_view.xml'
--- mail/mail_alias_view.xml 2013-10-27 12:31:04 +0000
+++ mail/mail_alias_view.xml 2013-12-05 09:45:50 +0000
@@ -15,7 +15,7 @@
15 type="object" class="oe_link"15 type="object" class="oe_link"
16 attrs="{'invisible': ['|', ('alias_model_id', '=', False), ('alias_force_thread_id', '=', 0)]}"/>16 attrs="{'invisible': ['|', ('alias_model_id', '=', False), ('alias_force_thread_id', '=', 0)]}"/>
17 <button name="open_parent_document" string="Open Parent Document"17 <button name="open_parent_document" string="Open Parent Document"
18 type="object" class="oe_link"18 type="object" class="oe_link oe_vertical_separator"
19 attrs="{'invisible': ['|', ('alias_parent_model_id', '=', False), ('alias_parent_thread_id', '=', 0)]}"/>19 attrs="{'invisible': ['|', ('alias_parent_model_id', '=', False), ('alias_parent_thread_id', '=', 0)]}"/>
20 </div>20 </div>
21 <group>21 <group>
2222
=== modified file 'marketing_campaign/marketing_campaign.py'
--- marketing_campaign/marketing_campaign.py 2013-11-27 15:32:57 +0000
+++ marketing_campaign/marketing_campaign.py 2013-12-05 09:45:50 +0000
@@ -120,6 +120,10 @@
120 'Status',),120 'Status',),
121 'activity_ids': fields.one2many('marketing.campaign.activity',121 'activity_ids': fields.one2many('marketing.campaign.activity',
122 'campaign_id', 'Activities'),122 'campaign_id', 'Activities'),
123 'segment_ids': fields.one2many('marketing.campaign.segment',
124 'campaign_id', 'Segments'),
125 'followup_ids': fields.one2many('marketing.campaign.workitem',
126 'campaign_id', 'Follow-Up'),
123 'fixed_cost': fields.float('Fixed Cost', help="Fixed cost for running this campaign. You may also specify variable cost and revenue on each campaign activity. Cost and Revenue statistics are included in Campaign Reporting.", digits_compute=dp.get_precision('Product Price')),127 'fixed_cost': fields.float('Fixed Cost', help="Fixed cost for running this campaign. You may also specify variable cost and revenue on each campaign activity. Cost and Revenue statistics are included in Campaign Reporting.", digits_compute=dp.get_precision('Product Price')),
124 }128 }
125129
126130
=== modified file 'marketing_campaign/marketing_campaign_view.xml'
--- marketing_campaign/marketing_campaign_view.xml 2013-10-27 12:31:04 +0000
+++ marketing_campaign/marketing_campaign_view.xml 2013-12-05 09:45:50 +0000
@@ -18,16 +18,6 @@
1818
19 <menuitem name="Configuration" id="menu_marketing_configuration" parent="base.marketing_menu" sequence="1"/>19 <menuitem name="Configuration" id="menu_marketing_configuration" parent="base.marketing_menu" sequence="1"/>
2020
21 <!-- Marketing Campaign -->
22
23 <record id="act_marketing_campaing_segment_opened" model="ir.actions.act_window">
24 <field name="res_model">marketing.campaign.segment</field>
25 <field name="view_type">form</field>
26 <field name="name">Segments</field>
27 <field name="view_mode">tree,form</field>
28 <field name="context">{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}</field>
29 </record>
30
31 <!-- Campaign Follow-ups -->21 <!-- Campaign Follow-ups -->
32 22
33 <record id="act_marketing_campaing_followup" model="ir.actions.act_window">23 <record id="act_marketing_campaing_followup" model="ir.actions.act_window">
@@ -65,14 +55,12 @@
65 <sheet string="Campaign">55 <sheet string="Campaign">
66 <div class="oe_right oe_button_box" name="button_box">56 <div class="oe_right oe_button_box" name="button_box">
67 <button type="action"57 <button type="action"
68 name="%(act_marketing_campaing_stat)d"58 name="%(act_marketing_campaing_stat)d" class="oe_link"
69 string="Campaign Statistics"/>59 string="Campaign Statistics"/>
70 <button type="action"60 <field name="segment_ids" widget="x2many_counter" class="oe_vertical_separator"
71 name="%(act_marketing_campaing_segment_opened)d"61 options='{"views": [[false, "list"], [false, "form"]]}'/>
72 string="Segments"/> 62 <field name="followup_ids" widget="x2many_counter" class="oe_vertical_separator"
73 <button type="action"63 options='{"views": [[false, "list"], [false, "form"]]}'/>
74 name="%(act_marketing_campaing_followup)d"
75 string="Follow-Up"/>
76 </div>64 </div>
77 <div class="oe_title">65 <div class="oe_title">
78 <label for="name" class="oe_edit_only"/>66 <label for="name" class="oe_edit_only"/>
7967
=== modified file 'mrp/mrp_view.xml'
--- mrp/mrp_view.xml 2013-10-27 12:31:04 +0000
+++ mrp/mrp_view.xml 2013-12-05 09:45:50 +0000
@@ -1041,9 +1041,11 @@
1041 <field name="inherit_id" ref="product.product_normal_form_view"/>1041 <field name="inherit_id" ref="product.product_normal_form_view"/>
1042 <field name="arch" type="xml">1042 <field name="arch" type="xml">
1043 <xpath expr="//div[@name='buttons']" position="inside">1043 <xpath expr="//div[@name='buttons']" position="inside">
1044 <button string="Bill of Materials" name="%(product_open_bom)d" type="action" attrs="{'invisible':[('type', '=', 'service')]}"/>1044 <button string="Bill of Materials" name="%(product_open_bom)d" type="action" attrs="{'invisible':[('type', '=', 'service')]}" class="oe_link oe_vertical_separator"/>
1045 <button string="BoM Structure" name="%(act_product_mrp_bom_open)d" type="action" groups="mrp.group_mrp_user" attrs="{'invisible':[('type', '=', 'service')]}"/>1045 <button string="BoM Structure" name="%(act_product_mrp_bom_open)d" type="action" class="oe_link oe_vertical_separator"
1046 <button string="Manufacturing Orders" name="%(act_product_mrp_production)d" type="action" groups="mrp.group_mrp_user" attrs="{'invisible':[('type', '=', 'service')]}"/>1046 groups="mrp.group_mrp_user" attrs="{'invisible':[('type', '=', 'service')]}"/>
1047 <button string="Manufacturing Orders" name="%(act_product_mrp_production)d" type="action" class="oe_link oe_vertical_separator"
1048 groups="mrp.group_mrp_user" attrs="{'invisible':[('type', '=', 'service')]}"/>
1047 </xpath>1049 </xpath>
1048 </field>1050 </field>
1049 </record>1051 </record>
10501052
=== modified file 'point_of_sale/point_of_sale_view.xml'
--- point_of_sale/point_of_sale_view.xml 2013-11-27 15:32:57 +0000
+++ point_of_sale/point_of_sale_view.xml 2013-12-05 09:45:50 +0000
@@ -884,8 +884,8 @@
884 </header>884 </header>
885 <sheet>885 <sheet>
886 <div class="oe_right oe_button_box">886 <div class="oe_right oe_button_box">
887 <button name="%(action_pos_box_in)d" string="Put Money In" type="action" states="opened,closing_control"/>887 <button name="%(action_pos_box_in)d" class="oe_link" string="Put Money In" type="action" states="opened,closing_control"/>
888 <button name="%(action_pos_box_out)d" string="Take Money Out" type="action" states="opened,closing_control"/>888 <button name="%(action_pos_box_out)d" class="oe_link oe_vertical_separator" string="Take Money Out" type="action" states="opened,closing_control"/>
889 </div>889 </div>
890 <h1 class="oe_title">890 <h1 class="oe_title">
891 Session:891 Session:
892892
=== modified file 'procurement/procurement_view.xml'
--- procurement/procurement_view.xml 2013-10-27 12:31:04 +0000
+++ procurement/procurement_view.xml 2013-12-05 09:45:50 +0000
@@ -323,7 +323,9 @@
323 <button string="⇒ Request Procurement" name="%(act_make_procurement)d" type="action" class="oe_link"/>323 <button string="⇒ Request Procurement" name="%(act_make_procurement)d" type="action" class="oe_link"/>
324 </xpath>324 </xpath>
325 <xpath expr="//div[@name='buttons']" position="inside">325 <xpath expr="//div[@name='buttons']" position="inside">
326 <button string="Orderpoints" name="%(product_open_orderpoint)d" type="action" attrs="{'invisible':[('type', '=', 'service')]}"/>326 <field string="Orderpoints" name="orderpoint_ids" widget="x2many_counter"
327 class="oe_vertical_separator" options='{"views": [[false, "list"], [false, "form"]]}'
328 attrs="{'invisible':[('type', '=', 'service')]}"/>
327 </xpath>329 </xpath>
328 <xpath expr="//field[@name='cost_method']" position="before">330 <xpath expr="//field[@name='cost_method']" position="before">
329 <field name="procure_method" groups="base.group_user"/>331 <field name="procure_method" groups="base.group_user"/>
330332
=== modified file 'project/project.py'
--- project/project.py 2013-11-27 15:32:57 +0000
+++ project/project.py 2013-12-05 09:45:50 +0000
@@ -167,7 +167,7 @@
167 alias_ids = []167 alias_ids = []
168 mail_alias = self.pool.get('mail.alias')168 mail_alias = self.pool.get('mail.alias')
169 for proj in self.browse(cr, uid, ids, context=context):169 for proj in self.browse(cr, uid, ids, context=context):
170 if proj.tasks:170 if proj.task_ids:
171 raise osv.except_osv(_('Invalid Action!'),171 raise osv.except_osv(_('Invalid Action!'),
172 _('You cannot delete a project containing tasks. You can either delete all the project\'s tasks and then delete the project or simply deactivate the project.'))172 _('You cannot delete a project containing tasks. You can either delete all the project\'s tasks and then delete the project or simply deactivate the project.'))
173 elif proj.alias_id:173 elif proj.alias_id:
@@ -243,25 +243,25 @@
243 help="Gives the sequence order when displaying the list of projects"),243 help="Gives the sequence order when displaying the list of projects"),
244 'members': fields.many2many('res.users', 'project_user_rel', 'project_id', 'uid', 'Project Members',244 'members': fields.many2many('res.users', 'project_user_rel', 'project_id', 'uid', 'Project Members',
245 help="Project's members are users who can have an access to the tasks related to this project.", states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}),245 help="Project's members are users who can have an access to the tasks related to this project.", states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}),
246 'tasks': fields.one2many('project.task', 'project_id', "Task Activities"),246 'task_ids': fields.one2many('project.task', 'project_id', "Task Activities"),
247 'planned_hours': fields.function(_progress_rate, multi="progress", string='Planned Time', help="Sum of planned hours of all tasks related to this project and its child projects.",247 'planned_hours': fields.function(_progress_rate, multi="progress", string='Planned Time', help="Sum of planned hours of all tasks related to this project and its child projects.",
248 store = {248 store = {
249 'project.project': (_get_project_and_parents, ['tasks', 'parent_id', 'child_ids'], 10),249 'project.project': (_get_project_and_parents, ['task_ids', 'parent_id', 'child_ids'], 10),
250 'project.task': (_get_projects_from_tasks, ['planned_hours', 'remaining_hours', 'work_ids', 'stage_id'], 20),250 'project.task': (_get_projects_from_tasks, ['planned_hours', 'remaining_hours', 'work_ids', 'stage_id'], 20),
251 }),251 }),
252 'effective_hours': fields.function(_progress_rate, multi="progress", string='Time Spent', help="Sum of spent hours of all tasks related to this project and its child projects.",252 'effective_hours': fields.function(_progress_rate, multi="progress", string='Time Spent', help="Sum of spent hours of all tasks related to this project and its child projects.",
253 store = {253 store = {
254 'project.project': (_get_project_and_parents, ['tasks', 'parent_id', 'child_ids'], 10),254 'project.project': (_get_project_and_parents, ['task_ids', 'parent_id', 'child_ids'], 10),
255 'project.task': (_get_projects_from_tasks, ['planned_hours', 'remaining_hours', 'work_ids', 'stage_id'], 20),255 'project.task': (_get_projects_from_tasks, ['planned_hours', 'remaining_hours', 'work_ids', 'stage_id'], 20),
256 }),256 }),
257 'total_hours': fields.function(_progress_rate, multi="progress", string='Total Time', help="Sum of total hours of all tasks related to this project and its child projects.",257 'total_hours': fields.function(_progress_rate, multi="progress", string='Total Time', help="Sum of total hours of all tasks related to this project and its child projects.",
258 store = {258 store = {
259 'project.project': (_get_project_and_parents, ['tasks', 'parent_id', 'child_ids'], 10),259 'project.project': (_get_project_and_parents, ['task_ids', 'parent_id', 'child_ids'], 10),
260 'project.task': (_get_projects_from_tasks, ['planned_hours', 'remaining_hours', 'work_ids', 'stage_id'], 20),260 'project.task': (_get_projects_from_tasks, ['planned_hours', 'remaining_hours', 'work_ids', 'stage_id'], 20),
261 }),261 }),
262 'progress_rate': fields.function(_progress_rate, multi="progress", string='Progress', type='float', group_operator="avg", help="Percent of tasks closed according to the total of tasks todo.",262 'progress_rate': fields.function(_progress_rate, multi="progress", string='Progress', type='float', group_operator="avg", help="Percent of tasks closed according to the total of tasks todo.",
263 store = {263 store = {
264 'project.project': (_get_project_and_parents, ['tasks', 'parent_id', 'child_ids'], 10),264 'project.project': (_get_project_and_parents, ['task_ids', 'parent_id', 'child_ids'], 10),
265 'project.task': (_get_projects_from_tasks, ['planned_hours', 'remaining_hours', 'work_ids', 'stage_id'], 20),265 'project.task': (_get_projects_from_tasks, ['planned_hours', 'remaining_hours', 'work_ids', 'stage_id'], 20),
266 }),266 }),
267 'resource_calendar_id': fields.many2one('resource.calendar', 'Working Time', help="Timetable working hours to adjust the gantt diagram report", states={'close':[('readonly',True)]} ),267 'resource_calendar_id': fields.many2one('resource.calendar', 'Working Time', help="Timetable working hours to adjust the gantt diagram report", states={'close':[('readonly',True)]} ),
@@ -343,9 +343,9 @@
343 map_task_id = {}343 map_task_id = {}
344 task_obj = self.pool.get('project.task')344 task_obj = self.pool.get('project.task')
345 proj = self.browse(cr, uid, old_project_id, context=context)345 proj = self.browse(cr, uid, old_project_id, context=context)
346 for task in proj.tasks:346 for task in proj.task_ids:
347 map_task_id[task.id] = task_obj.copy(cr, uid, task.id, {}, context=context)347 map_task_id[task.id] = task_obj.copy(cr, uid, task.id, {}, context=context)
348 self.write(cr, uid, [new_project_id], {'tasks':[(6,0, map_task_id.values())]})348 self.write(cr, uid, [new_project_id], {'task_ids':[(6,0, map_task_id.values())]})
349 task_obj.duplicate_task(cr, uid, map_task_id, context=context)349 task_obj.duplicate_task(cr, uid, map_task_id, context=context)
350 return True350 return True
351351
@@ -358,7 +358,7 @@
358 context['active_test'] = False358 context['active_test'] = False
359 default['state'] = 'open'359 default['state'] = 'open'
360 default['line_ids'] = []360 default['line_ids'] = []
361 default['tasks'] = []361 default['task_ids'] = []
362 proj = self.browse(cr, uid, id, context=context)362 proj = self.browse(cr, uid, id, context=context)
363 if not default.get('name', False):363 if not default.get('name', False):
364 default.update(name=_("%s (copy)") % (proj.name))364 default.update(name=_("%s (copy)") % (proj.name))
@@ -447,7 +447,7 @@
447 u_ids = [i.id for i in project.members]447 u_ids = [i.id for i in project.members]
448 if project.user_id and (project.user_id.id not in u_ids):448 if project.user_id and (project.user_id.id not in u_ids):
449 u_ids.append(project.user_id.id)449 u_ids.append(project.user_id.id)
450 for task in project.tasks:450 for task in project.task_ids:
451 if task.user_id and (task.user_id.id not in u_ids):451 if task.user_id and (task.user_id.id not in u_ids):
452 u_ids.append(task.user_id.id)452 u_ids.append(task.user_id.id)
453 calendar_id = project.resource_calendar_id and project.resource_calendar_id.id or False453 calendar_id = project.resource_calendar_id and project.resource_calendar_id.id or False
@@ -503,7 +503,7 @@
503 result = self._schedule_header(cr, uid, ids, False, context=context)503 result = self._schedule_header(cr, uid, ids, False, context=context)
504 for project in projects:504 for project in projects:
505 result += self._schedule_project(cr, uid, project, context=context)505 result += self._schedule_project(cr, uid, project, context=context)
506 result += self.pool.get('project.task')._generate_task(cr, uid, project.tasks, ident=4, context=context)506 result += self.pool.get('project.task')._generate_task(cr, uid, project.task_ids, ident=4, context=context)
507507
508 local_dict = {}508 local_dict = {}
509 exec result in local_dict509 exec result in local_dict
@@ -511,7 +511,7 @@
511511
512 for project in projects:512 for project in projects:
513 project_gantt = getattr(projects_gantt, 'Project_%d' % (project.id,))513 project_gantt = getattr(projects_gantt, 'Project_%d' % (project.id,))
514 for task in project.tasks:514 for task in project.task_ids:
515 if task.stage_id and task.stage_id.fold:515 if task.stage_id and task.stage_id.fold:
516 continue516 continue
517517
518518
=== modified file 'project/project_view.xml'
--- project/project_view.xml 2013-11-29 09:46:10 +0000
+++ project/project_view.xml 2013-12-05 09:45:50 +0000
@@ -93,8 +93,9 @@
93 </div>93 </div>
94 </div>94 </div>
95 <div class="oe_right oe_button_box" name="buttons" groups="base.group_user">95 <div class="oe_right oe_button_box" name="buttons" groups="base.group_user">
96 <field name="tasks" widget="x2many_counter" string="Tasks" attrs="{'invisible':[('use_tasks','=', False)]}" options='{"views": [[false, "kanban"], [false, "tree"], [false, "form"], [false, "calendar"], [false, "gantt"], [false, "graph"]]}'/>96 <field name="task_ids" widget="x2many_counter" string="Tasks" attrs="{'invisible':[('use_tasks','=', False)]}"
97 <button name="attachment_tree_view" string="Documents" type="object"/>97 options='{"views": [[false, "kanban"], [false, "list"], [false, "form"], [false, "calendar"], [false, "gantt"], [false, "graph"]]}'/>
98 <button name="attachment_tree_view" class="oe_link oe_vertical_separator" string="Documents" type="object"/>
98 </div>99 </div>
99 <group>100 <group>
100 <group>101 <group>
101102
=== modified file 'project/res_partner_view.xml'
--- project/res_partner_view.xml 2013-10-27 12:31:04 +0000
+++ project/res_partner_view.xml 2013-12-05 09:45:50 +0000
@@ -10,9 +10,9 @@
10 <field name="priority" eval="50"/>10 <field name="priority" eval="50"/>
11 <field name="arch" type="xml">11 <field name="arch" type="xml">
12 <xpath expr="//div[@name='buttons']" position="inside">12 <xpath expr="//div[@name='buttons']" position="inside">
13 <button class="oe_inline" type="action"13 <field name="task_ids"
14 name="%(action_view_task)d"14 string="Tasks" widget="x2many_counter" class="oe_vertical_separator"
15 string="Tasks"15 options='{"views": [[false, "kanban"], [false, "list"], [false, "form"], [false, "calendar"], [false, "gantt"], [false, "graph"]]}'
16 context="{'search_default_partner_id': active_id, 'default_partner_id': active_id}"16 context="{'search_default_partner_id': active_id, 'default_partner_id': active_id}"
17 groups="project.group_project_user" />17 groups="project.group_project_user" />
18 </xpath>18 </xpath>
1919
=== modified file 'project/tests/test_project_flow.py'
--- project/tests/test_project_flow.py 2013-07-10 13:29:54 +0000
+++ project/tests/test_project_flow.py 2013-12-05 09:45:50 +0000
@@ -67,19 +67,19 @@
67 self.project_project.set_template(cr, user_projectmanager_id, [project_pigs_id])67 self.project_project.set_template(cr, user_projectmanager_id, [project_pigs_id])
68 project.refresh()68 project.refresh()
69 self.assertEqual(project.state, 'template', 'project: set_template: project state should be template')69 self.assertEqual(project.state, 'template', 'project: set_template: project state should be template')
70 self.assertEqual(len(project.tasks), 0, 'project: set_template: project tasks should have been set inactive')70 self.assertEqual(len(project.task_ids), 0, 'project: set_template: project tasks should have been set inactive')
7171
72 # Duplicate template72 # Duplicate template
73 new_template_act = self.project_project.duplicate_template(cr, user_projectmanager_id, [project_pigs_id])73 new_template_act = self.project_project.duplicate_template(cr, user_projectmanager_id, [project_pigs_id])
74 new_project = self.project_project.browse(cr, user_projectmanager_id, new_template_act['res_id'])74 new_project = self.project_project.browse(cr, user_projectmanager_id, new_template_act['res_id'])
75 self.assertEqual(new_project.state, 'open', 'project: incorrect duplicate_template')75 self.assertEqual(new_project.state, 'open', 'project: incorrect duplicate_template')
76 self.assertEqual(len(new_project.tasks), 2, 'project: duplicating a project template should duplicate its tasks')76 self.assertEqual(len(new_project.task_ids), 2, 'project: duplicating a project template should duplicate its tasks')
7777
78 # Convert into real project78 # Convert into real project
79 self.project_project.reset_project(cr, user_projectmanager_id, [project_pigs_id])79 self.project_project.reset_project(cr, user_projectmanager_id, [project_pigs_id])
80 project.refresh()80 project.refresh()
81 self.assertEqual(project.state, 'open', 'project: resetted project should be in open state')81 self.assertEqual(project.state, 'open', 'project: resetted project should be in open state')
82 self.assertEqual(len(project.tasks), 2, 'project: reset_project: project tasks should have been set active')82 self.assertEqual(len(project.task_ids), 2, 'project: reset_project: project tasks should have been set active')
8383
84 # Put as pending84 # Put as pending
85 self.project_project.set_pending(cr, user_projectmanager_id, [project_pigs_id])85 self.project_project.set_pending(cr, user_projectmanager_id, [project_pigs_id])
@@ -107,7 +107,7 @@
107 # Copy the project107 # Copy the project
108 new_project_id = self.project_project.copy(cr, user_projectmanager_id, project_pigs_id)108 new_project_id = self.project_project.copy(cr, user_projectmanager_id, project_pigs_id)
109 new_project = self.project_project.browse(cr, user_projectmanager_id, new_project_id)109 new_project = self.project_project.browse(cr, user_projectmanager_id, new_project_id)
110 self.assertEqual(len(new_project.tasks), 2, 'project: copied project should have copied task')110 self.assertEqual(len(new_project.task_ids), 2, 'project: copied project should have copied task')
111111
112 # Cancel the project112 # Cancel the project
113 self.project_project.set_cancel(cr, user_projectmanager_id, [project_pigs_id])113 self.project_project.set_cancel(cr, user_projectmanager_id, [project_pigs_id])
114114
=== modified file 'project_issue/project_issue.py'
--- project_issue/project_issue.py 2013-11-27 15:32:57 +0000
+++ project_issue/project_issue.py 2013-12-05 09:45:50 +0000
@@ -507,8 +507,8 @@
507 states={'close': [('readonly', True)], 'cancelled': [('readonly', True)]}),507 states={'close': [('readonly', True)], 'cancelled': [('readonly', True)]}),
508 'issue_count': fields.function(_issue_count, type='integer', string="Unclosed Issues",508 'issue_count': fields.function(_issue_count, type='integer', string="Unclosed Issues",
509 deprecated="This field will be removed in OpenERP v8. Use issue_ids one2many field instead."),509 deprecated="This field will be removed in OpenERP v8. Use issue_ids one2many field instead."),
510 'issue_ids': fields.one2many('project.issue', 'project_id',510 'issue_ids': fields.one2many('project.issue', 'project_id', 'Issues',
511 domain=[('stage_id.fold', '=', False)])511 domain=[('stage_id.fold', '=', False)])
512 }512 }
513513
514 def _check_escalation(self, cr, uid, ids, context=None):514 def _check_escalation(self, cr, uid, ids, context=None):
@@ -576,5 +576,12 @@
576 self._check_create_write_values(cr, uid, vals, context=context)576 self._check_create_write_values(cr, uid, vals, context=context)
577 return super(project_project, self).write(cr, uid, ids, vals, context=context)577 return super(project_project, self).write(cr, uid, ids, vals, context=context)
578578
579class res_partner(osv.osv):
580
581 """ Inherits partner and adds Issues information in the partner form """
582 _inherit = 'res.partner'
583 _columns = {
584 'issue_ids': fields.one2many('project.issue', 'partner_id', 'Issues'),
585 }
579586
580# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:587# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
581588
=== modified file 'project_issue/project_issue_view.xml'
--- project_issue/project_issue_view.xml 2013-11-29 09:46:10 +0000
+++ project_issue/project_issue_view.xml 2013-12-05 09:45:50 +0000
@@ -305,7 +305,8 @@
305 <label for="use_issues"/>305 <label for="use_issues"/>
306 </xpath>306 </xpath>
307 <xpath expr='//div[@name="buttons"]' position='inside'>307 <xpath expr='//div[@name="buttons"]' position='inside'>
308 <button name="%(act_project_project_2_project_issue_all)d" string="Issues" type="action" attrs="{'invisible':[('use_issues','=', 0)]}"/>308 <field name="issue_ids" widget="x2many_counter" class="oe_vertical_separator" string="Issues" attrs="{'invisible':[('use_issues','=', 0)]}"
309 options='{"views": [[false, "kanban"], [false, "list"], [false, "form"], [false, "calendar"], [false, "graph"]]}'/>
309 </xpath>310 </xpath>
310 <xpath expr='//page[@name="project_stages"]' position="attributes">311 <xpath expr='//page[@name="project_stages"]' position="attributes">
311 <attribute name="attrs">{'invisible': [('use_tasks', '=', False),('use_issues','=',False)]}</attribute>312 <attribute name="attrs">{'invisible': [('use_tasks', '=', False),('use_issues','=',False)]}</attribute>
@@ -374,9 +375,9 @@
374 <field name="priority" eval="50"/>375 <field name="priority" eval="50"/>
375 <field name="arch" type="xml">376 <field name="arch" type="xml">
376 <xpath expr="//div[@name='buttons']" position="inside">377 <xpath expr="//div[@name='buttons']" position="inside">
377 <button class="oe_inline" type="action" string="Issues"378 <field name="issue_ids" attrs="{'invisible': [('customer', '=', False)]}"
378 attrs="{'invisible': [('customer', '=', False)]}"379 options='{"views": [[false, "kanban"], [false, "list"], [false, "form"], [false, "calendar"], [false, "graph"]]}'
379 name="%(action_view_issues)d"380 widget="x2many_counter" class="oe_vertical_separator"
380 context="{'search_default_partner_id': active_id, 'default_partner_id': active_id}"381 context="{'search_default_partner_id': active_id, 'default_partner_id': active_id}"
381 groups="project.group_project_user"/>382 groups="project.group_project_user"/>
382 </xpath>383 </xpath>
383384
=== modified file 'project_long_term/project_long_term_view.xml'
--- project_long_term/project_long_term_view.xml 2013-10-27 12:31:04 +0000
+++ project_long_term/project_long_term_view.xml 2013-12-05 09:45:50 +0000
@@ -102,9 +102,8 @@
102 <label for="use_phases"/>102 <label for="use_phases"/>
103 </xpath>103 </xpath>
104 <xpath expr="//div[@name='buttons']" position='inside'>104 <xpath expr="//div[@name='buttons']" position='inside'>
105 <button name="%(act_project_phases)d"105 <field name="phase_ids" class="oe_vertical_separator" widget="x2many_counter" attrs="{'invisible':[('use_phases','=', 0)]}"
106 string="Phases" type="action"106 options='{"views": [[false, "list"], [false, "form"], [false, "calendar"]]}'/>
107 attrs="{'invisible':[('use_phases','=', 0)]}"/>
108 </xpath>107 </xpath>
109 </field>108 </field>
110 </record>109 </record>
@@ -151,7 +150,9 @@
151 <field name="state" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}'/>150 <field name="state" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}'/>
152 </header>151 </header>
153 <sheet>152 <sheet>
154 <button name="%(project_phase_task_list)d" string="Related Tasks" type="action" class="oe_right"/>153 <div class="oe_right oe_button_box">
154 <button name="%(project_phase_task_list)d" string="Related Tasks" type="action" class="oe_link"/>
155 </div>
155 <div class="oe_title">156 <div class="oe_title">
156 <label for="name" class="oe_edit_only"/>157 <label for="name" class="oe_edit_only"/>
157 <h1><field name="name"/></h1>158 <h1><field name="name"/></h1>
158159
=== modified file 'project_long_term/test/task_process.yml'
--- project_long_term/test/task_process.yml 2013-10-27 12:31:04 +0000
+++ project_long_term/test/task_process.yml 2013-12-05 09:45:50 +0000
@@ -13,7 +13,7 @@
13-13-
14 !python {model: project.project}: |14 !python {model: project.project}: |
15 prj = self.browse(cr, uid, [ref("project.project_project_1")])[0]15 prj = self.browse(cr, uid, [ref("project.project_project_1")])[0]
16 for task in prj.tasks:16 for task in prj.task_ids:
17 if task.stage_id and task.stage_id.fold:17 if task.stage_id and task.stage_id.fold:
18 continue18 continue
19 assert task.user_id and task.date_start and task.date_end, "Project tasks not scheduled"19 assert task.user_id and task.date_start and task.date_end, "Project tasks not scheduled"
2020
=== modified file 'project_timesheet/project_timesheet_view.xml'
--- project_timesheet/project_timesheet_view.xml 2013-10-27 12:31:04 +0000
+++ project_timesheet/project_timesheet_view.xml 2013-12-05 09:45:50 +0000
@@ -30,7 +30,7 @@
30 <label for="use_timesheets"/>30 <label for="use_timesheets"/>
31 </xpath>31 </xpath>
32 <xpath expr='//div[@name="buttons"]' position="inside">32 <xpath expr='//div[@name="buttons"]' position="inside">
33 <button name="open_timesheets" string="Timesheets" type="object" attrs="{'invisible':[('use_timesheets','=', 0)]}"/>33 <button name="open_timesheets" string="Timesheets" class="oe_link oe_vertical_separator" type="object" attrs="{'invisible':[('use_timesheets','=', 0)]}"/>
34 </xpath>34 </xpath>
35 </field>35 </field>
36 </record>36 </record>
3737
=== modified file 'purchase/partner_view.xml'
--- purchase/partner_view.xml 2013-10-27 12:31:04 +0000
+++ purchase/partner_view.xml 2013-12-05 09:45:50 +0000
@@ -74,13 +74,15 @@
74 <field name="priority" eval="20"/>74 <field name="priority" eval="20"/>
75 <field name="arch" type="xml">75 <field name="arch" type="xml">
76 <xpath expr="//div[@name='buttons']" position="inside">76 <xpath expr="//div[@name='buttons']" position="inside">
77 <button name="%(purchase.act_res_partner_2_purchase_order)d" type="action"77 <field name="purchase_order_ids"
78 string="Purchase Orders"78 string="Purchase Orders"
79 widget="x2many_counter" class="oe_vertical_separator"
80 options='{"views": [[false, "list"], [false, "form"], [false, "calendar"]]}'
79 attrs="{'invisible': [('supplier', '=', False)]}"81 attrs="{'invisible': [('supplier', '=', False)]}"
80 groups="purchase.group_purchase_user"/>82 groups="purchase.group_purchase_user"/>
81 <button name="%(purchase.act_res_partner_2_supplier_invoices)d" type="action"83 <button name="%(purchase.act_res_partner_2_supplier_invoices)d" type="action"
82 attrs="{'invisible': [('supplier', '=', False)]}"84 attrs="{'invisible': [('supplier', '=', False)]}"
83 string="Supplier Invoices"/>85 string="Supplier Invoices" class="oe_link oe_vertical_separator"/>
84 </xpath>86 </xpath>
85 </field>87 </field>
86 </record>88 </record>
8789
=== modified file 'purchase/purchase.py'
--- purchase/purchase.py 2013-11-30 13:07:25 +0000
+++ purchase/purchase.py 2013-12-05 09:45:50 +0000
@@ -1311,4 +1311,9 @@
1311 readonly=True),1311 readonly=True),
1312 }1312 }
13131313
1314class product_product(osv.Model):
1315 _inherit = "product.product"
1316 _columns = {
1317 'purchase_ids': fields.one2many('purchase.order', 'product_id', 'Purchases'),
1318 }
1314# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:1319# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
13151320
=== modified file 'purchase/purchase_view.xml'
--- purchase/purchase_view.xml 2013-11-30 13:07:25 +0000
+++ purchase/purchase_view.xml 2013-12-05 09:45:50 +0000
@@ -619,7 +619,9 @@
619 <field name="inherit_id" ref="account.product_normal_form_view"/>619 <field name="inherit_id" ref="account.product_normal_form_view"/>
620 <field name="arch" type="xml">620 <field name="arch" type="xml">
621 <xpath expr="//div[@name='buttons']" position="inside">621 <xpath expr="//div[@name='buttons']" position="inside">
622 <button string="Purchases" name="%(action_purchase_line_product_tree)d" type="action" groups="purchase.group_purchase_user"/>622 <field name="purchase_ids" class="oe_vertical_separator" widget="x2many_counter"
623 options='{"views": [[false, "list"], [false, "form"], [false, "calendar"], [false, "graph"]]}'
624 groups="purchase.group_purchase_user"/>
623 </xpath>625 </xpath>
624 <xpath expr="//field[@name='property_account_expense']" position="replace" >626 <xpath expr="//field[@name='property_account_expense']" position="replace" >
625 <field name="property_account_expense" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]" attrs="{'readonly':[('purchase_ok','=',0)]}" groups="account.group_account_user"/>627 <field name="property_account_expense" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]" attrs="{'readonly':[('purchase_ok','=',0)]}" groups="account.group_account_user"/>
626628
=== modified file 'purchase/stock_view.xml'
--- purchase/stock_view.xml 2013-10-27 12:31:04 +0000
+++ purchase/stock_view.xml 2013-12-05 09:45:50 +0000
@@ -46,9 +46,9 @@
46 <xpath expr="//div[contains(@class, 'oe_title')]" position="before">46 <xpath expr="//div[contains(@class, 'oe_title')]" position="before">
47 <div class="oe_right oe_button_box" name="buttons">47 <div class="oe_right oe_button_box" name="buttons">
48 <button type="object"48 <button type="object"
49 name="view_picking"49 name="view_picking" class="oe_link"
50 string="Incoming Shipments" states="approved"/>50 string="Incoming Shipments" states="approved"/>
51 <button type="object" name="invoice_open"51 <button type="object" name="invoice_open" class="oe_link oe_vertical_separator"
52 string="Invoices" attrs="{'invisible': [('state', 'in', ['draft','sent'])]}"/> 52 string="Invoices" attrs="{'invisible': [('state', 'in', ['draft','sent'])]}"/>
53 </div>53 </div>
54 </xpath>54 </xpath>
5555
=== modified file 'purchase_requisition/purchase_requisition_view.xml'
--- purchase_requisition/purchase_requisition_view.xml 2013-10-27 12:31:04 +0000
+++ purchase_requisition/purchase_requisition_view.xml 2013-12-05 09:45:50 +0000
@@ -77,7 +77,7 @@
77 </field>77 </field>
78 <div class="oe_right oe_button_box" style="margin-top: 10px">78 <div class="oe_right oe_button_box" style="margin-top: 10px">
79 <button name="%(action_purchase_requisition_partner)d" type="action"79 <button name="%(action_purchase_requisition_partner)d" type="action"
80 string="Request a Quotation" icon="gtk-execute"80 string="Request a Quotation" class="oe_link"
81 attrs="{'invisible': [('line_ids','=',False),('state', 'not in', ('in_progress'))]}"/>81 attrs="{'invisible': [('line_ids','=',False),('state', 'not in', ('in_progress'))]}"/>
82 </div>82 </div>
83 <separator string="Quotations"/>83 <separator string="Quotations"/>
8484
=== modified file 'sale/res_partner_view.xml'
--- sale/res_partner_view.xml 2013-10-27 12:31:04 +0000
+++ sale/res_partner_view.xml 2013-12-05 09:45:50 +0000
@@ -48,9 +48,10 @@
48 <field name="priority" eval="20"/>48 <field name="priority" eval="20"/>
49 <field name="arch" type="xml">49 <field name="arch" type="xml">
50 <xpath expr="//div[@name='buttons']" position="inside">50 <xpath expr="//div[@name='buttons']" position="inside">
51 <button name="%(sale.act_res_partner_2_sale_order)d" type="action"51 <field name="sale_order_ids"
52 string="Quotations and Sales"52 string="Sales" widget="x2many_counter" class="oe_vertical_separator"
53 attrs="{'invisible': [('customer', '=', False)]}"53 attrs="{'invisible': [('customer', '=', False)]}"
54 options='{"views": [[false, "list"], [false, "form"], [false, "calendar"], [false, "graph"]]}'
54 groups="base.group_sale_salesman"/>55 groups="base.group_sale_salesman"/>
55 </xpath>56 </xpath>
56 </field>57 </field>
5758
=== modified file 'sale/sale.py'
--- sale/sale.py 2013-11-27 15:32:57 +0000
+++ sale/sale.py 2013-12-05 09:45:50 +0000
@@ -1004,4 +1004,10 @@
1004 workflow.trg_validate(uid, 'account.invoice', id, 'invoice_cancel', cr)1004 workflow.trg_validate(uid, 'account.invoice', id, 'invoice_cancel', cr)
1005 return super(account_invoice, self).unlink(cr, uid, ids, context=context)1005 return super(account_invoice, self).unlink(cr, uid, ids, context=context)
10061006
1007class product_product(osv.Model):
1008 _inherit = "product.product"
1009 _columns = {
1010 'sale_ids': fields.one2many('sale.order.line', 'product_id', 'Sales'),
1011 }
1012
1007# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:1013# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
10081014
=== modified file 'sale/sale_view.xml'
--- sale/sale_view.xml 2013-11-27 15:32:57 +0000
+++ sale/sale_view.xml 2013-12-05 09:45:50 +0000
@@ -499,7 +499,9 @@
499 <field name="inherit_id" ref="product.product_normal_form_view"/>499 <field name="inherit_id" ref="product.product_normal_form_view"/>
500 <field name="arch" type="xml">500 <field name="arch" type="xml">
501 <xpath expr="//div[@name='buttons']" position="inside">501 <xpath expr="//div[@name='buttons']" position="inside">
502 <button string="Sales" name="%(action_order_line_product_tree)d" type="action" groups="base.group_sale_salesman"/>502 <field name="sale_ids" class="oe_vertical_separator" widget="x2many_counter"
503 options='{"views": [[false, "list"], [false, "form"]]}'
504 type="action" groups="base.group_sale_salesman"/>
503 </xpath>505 </xpath>
504 </field>506 </field>
505 </record>507 </record>
506508
=== modified file 'stock/product.py'
--- stock/product.py 2013-10-27 12:31:04 +0000
+++ stock/product.py 2013-12-05 09:45:50 +0000
@@ -422,6 +422,7 @@
422 help="If real-time valuation is enabled for a product, the system will automatically write journal entries corresponding to stock moves." \422 help="If real-time valuation is enabled for a product, the system will automatically write journal entries corresponding to stock moves." \
423 "The inventory variation account set on the product category will represent the current inventory value, and the stock input and stock output account will hold the counterpart moves for incoming and outgoing products."423 "The inventory variation account set on the product category will represent the current inventory value, and the stock input and stock output account will hold the counterpart moves for incoming and outgoing products."
424 , required=True),424 , required=True),
425 'move_ids': fields.one2many('stock.move', 'product_id', 'Moves'),
425 }426 }
426427
427 _defaults = {428 _defaults = {
428429
=== modified file 'stock/product_view.xml'
--- stock/product_view.xml 2013-11-27 15:32:57 +0000
+++ stock/product_view.xml 2013-12-05 09:45:50 +0000
@@ -72,8 +72,10 @@
72 <field name="inherit_id" ref="product.product_normal_form_view"/>72 <field name="inherit_id" ref="product.product_normal_form_view"/>
73 <field name="arch" type="xml">73 <field name="arch" type="xml">
74 <xpath expr="//div[@name='buttons']" position="inside">74 <xpath expr="//div[@name='buttons']" position="inside">
75 <button string="Inventory" name="%(action_product_location_tree)d" type="action" attrs="{'invisible':[('type', '=', 'service')]}" groups="stock.group_locations"/>75 <button string="Inventory" name="%(action_product_location_tree)d" class="oe_link oe_vertical_separator" type="action" attrs="{'invisible':[('type', '=', 'service')]}" groups="stock.group_locations"/>
76 <button string="Moves" name= "%(act_product_stock_move_open)d" type="action" attrs="{'invisible':[('type', '=', 'service')]}" groups="stock.group_stock_user"/>76 <field name= "move_ids" class="oe_vertical_separator" widget="x2many_counter"
77 options='{"views": [[false, "list"], [false, "form"], [false, "calendar"]]}'
78 attrs="{'invisible':[('type', '=', 'service')]}" groups="stock.group_stock_user"/>
77 </xpath>79 </xpath>
78 <group name="procurement_uom" position="before">80 <group name="procurement_uom" position="before">
79 <group name="delay" string="Delays">81 <group name="delay" string="Delays">
8082
=== modified file 'stock/stock_view.xml'
--- stock/stock_view.xml 2013-11-27 15:32:57 +0000
+++ stock/stock_view.xml 2013-12-05 09:45:50 +0000
@@ -114,7 +114,7 @@
114 </header>114 </header>
115 <sheet>115 <sheet>
116 <div class="oe_right oe_button_box">116 <div class="oe_right oe_button_box">
117 <button name="%(action_view_stock_fill_inventory)d" string="Fill Inventory" states="draft,confirm" type="action" />117 <button name="%(action_view_stock_fill_inventory)d" class="oe_link" string="Fill Inventory" states="draft,confirm" type="action" />
118 </div>118 </div>
119 <group>119 <group>
120 <group>120 <group>
@@ -338,8 +338,8 @@
338 <field name="arch" type="xml">338 <field name="arch" type="xml">
339 <form string="Serial Number" version="7.0">339 <form string="Serial Number" version="7.0">
340 <div class="oe_button_box oe_right">340 <div class="oe_button_box oe_right">
341 <button name="action_traceability" string="Upstream Traceability" type="object" context="{'type': 'move_history_ids2', 'field': 'prodlot_id'}"/>341 <button name="action_traceability" string="Upstream Traceability" class="oe_link" type="object" context="{'type': 'move_history_ids2', 'field': 'prodlot_id'}"/>
342 <button name="action_traceability" string="Downstream Traceability" type="object" context="{'type': 'move_history_ids', 'field': 'prodlot_id'}"/>342 <button name="action_traceability" string="Downstream Traceability" class="oe_link oe_vertical_separator" type="object" context="{'type': 'move_history_ids', 'field': 'prodlot_id'}"/>
343 </div>343 </div>
344 <div class="oe_title">344 <div class="oe_title">
345 <label for="name" class="oe_edit_only"/>345 <label for="name" class="oe_edit_only"/>
346346
=== modified file 'survey/survey_view.xml'
--- survey/survey_view.xml 2013-11-27 15:32:57 +0000
+++ survey/survey_view.xml 2013-12-05 09:45:50 +0000
@@ -28,10 +28,10 @@
28 </header>28 </header>
29 <sheet>29 <sheet>
30 <div class="oe_button_box oe_right">30 <div class="oe_button_box oe_right">
31 <button name="test_survey" states="open,draft,close,cancel" string="Test Survey" type="object" icon="gtk-new" context="{'survey_id': active_id}" attrs="{'invisible':[('id','=',0)]}"/>31 <button name="test_survey" class="oe_link" states="open,draft,close,cancel" string="Test Survey" type="object" context="{'survey_id': active_id}" attrs="{'invisible':[('id','=',0)]}"/>
32 <button name="fill_survey" states="open" string="Answer Survey" type="object" icon="gtk-execute" context="{'survey_id': active_id}" attrs="{'invisible':[('state','!=','open')]}"/>32 <button name="fill_survey" class="oe_link oe_vertical_separator" states="open" string="Answer Survey" type="object" context="{'survey_id': active_id}" attrs="{'invisible':[('state','!=','open')]}"/>
33 <button name="action_print_survey" states="open,draft,close,cancel" string="Print Answer" type="object"/>33 <button name="action_print_survey" class="oe_link oe_vertical_separator" states="open,draft,close,cancel" string="Print Answer" type="object"/>
34 <button name="edit_survey" states="open,draft,close,cancel"34 <button name="edit_survey" class="oe_link" states="open,draft,close,cancel"
35 string="Edit Survey" type="object" context="{'active':True,'edit' : True,'survey_id': active_id}"/>35 string="Edit Survey" type="object" context="{'active':True,'edit' : True,'survey_id': active_id}"/>
3636
37 </div>37 </div>

Subscribers

People subscribed via source and target branches

to all changes: