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
1=== modified file 'account/account_view.xml'
2--- account/account_view.xml 2013-10-27 12:31:04 +0000
3+++ account/account_view.xml 2013-12-05 09:45:50 +0000
4@@ -631,7 +631,7 @@
5 <field name="arch" type="xml">
6 <xpath expr="//div[@name='import_buttons']" position="inside">
7 <button name="button_journal_entries"
8- string="Journal Items" type="object"
9+ string="Journal Items" type="object" class="oe_link"
10 attrs="{'invisible':[('state','!=','confirm')]}"/>
11 </xpath>
12 </field>
13
14=== modified file 'account/partner.py'
15--- account/partner.py 2013-11-27 15:32:57 +0000
16+++ account/partner.py 2013-12-05 09:45:50 +0000
17@@ -222,7 +222,11 @@
18 help="This payment term will be used instead of the default one for purchase orders and supplier invoices"),
19 'ref_companies': fields.one2many('res.company', 'partner_id',
20 'Companies that refers to partner'),
21- '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.')
22+ '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.'),
23+ 'ref_companies': fields.one2many('res.company', 'partner_id',
24+ 'Companies that refers to partner'),
25+ 'invoice_ids': fields.one2many('account.invoice', 'partner_id', 'Invoices'),
26+ 'contract_ids': fields.one2many('account.analytic.account', 'partner_id', 'Contracts'),
27 }
28
29 def _commercial_fields(self, cr, uid, context=None):
30
31=== modified file 'account/partner_view.xml'
32--- account/partner_view.xml 2013-10-27 12:31:04 +0000
33+++ account/partner_view.xml 2013-12-05 09:45:50 +0000
34@@ -50,13 +50,6 @@
35 </field>
36 </record>
37
38- <record id="action_open_partner_analytic_accounts" model="ir.actions.act_window">
39- <field name="context">{'search_default_partner_id': [active_id], 'default_partner_id': active_id}</field>
40- <field name="name">Contracts/Analytic Accounts</field>
41- <field name="res_model">account.analytic.account</field>
42- <field name="view_id" ref="view_account_analytic_account_tree"/>
43- <field name="search_view_id" ref="view_account_analytic_account_search"/>
44- </record>
45 <record model="ir.ui.view" id="partner_view_buttons">
46 <field name="name">partner.view.buttons</field>
47 <field name="model">res.partner</field>
48@@ -64,12 +57,14 @@
49 <field name="priority" eval="20"/>
50 <field name="arch" type="xml">
51 <xpath expr="//div[@name='buttons']" position="inside">
52- <button type="action" string="Invoices"
53- name="%(account.action_invoice_tree)d"
54+ <field name="invoice_ids"
55+ widget="x2many_counter" class="oe_vertical_separator"
56+ options='{"views": [[false, "list"], [false, "form"]]}'
57 context="{'search_default_partner_id': active_id,'default_partner_id': active_id}" groups="account.group_account_invoice"/>
58- <button type="action" string="Journal Items" name="%(account.action_account_moves_all_tree)d" groups="account.group_account_user"/>
59- <button type="action" string="Contracts" name="%(account.action_open_partner_analytic_accounts)d"
60- groups="analytic.group_analytic_accounting"/>
61+ <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"/>
62+ <field name="contract_ids" groups="analytic.group_analytic_accounting"
63+ widget="x2many_counter" class="oe_vertical_separator"
64+ options='{"views": [[false, "list"], [false, "form"]]}'/>
65 </xpath>
66 </field>
67 </record>
68
69=== modified file 'account_analytic_default/account_analytic_default_view.xml'
70--- account_analytic_default/account_analytic_default_view.xml 2013-10-27 12:31:04 +0000
71+++ account_analytic_default/account_analytic_default_view.xml 2013-12-05 09:45:50 +0000
72@@ -80,7 +80,7 @@
73 <field name="inherit_id" ref="product.product_normal_form_view"/>
74 <field name="arch" type="xml">
75 <xpath expr="//div[@name='buttons']" position="inside">
76- <button string="Analytic Rules" name= "%(action_product_default_list)d" type="action" groups="analytic.group_analytic_accounting" />
77+ <button string="Analytic Rules" class="oe_link oe_vertical_separator" name= "%(action_product_default_list)d" type="action" groups="analytic.group_analytic_accounting" />
78 </xpath>
79 </field>
80 </record>
81
82=== modified file 'account_asset/account_asset_view.xml'
83--- account_asset/account_asset_view.xml 2013-10-27 12:31:04 +0000
84+++ account_asset/account_asset_view.xml 2013-12-05 09:45:50 +0000
85@@ -84,7 +84,7 @@
86 </header>
87 <sheet>
88 <div class="oe_button_box oe_right">
89- <button name="open_entries" string="Entries" type="object" class="oe_inline"/>
90+ <button name="open_entries" string="Entries" type="object" class="oe_inline oe_link"/>
91 </div>
92 <div class="oe_title">
93 <label for="name" class="oe_edit_only"/>
94
95=== modified file 'account_payment/account_payment_view.xml'
96--- account_payment/account_payment_view.xml 2013-11-27 15:32:57 +0000
97+++ account_payment/account_payment_view.xml 2013-12-05 09:45:50 +0000
98@@ -70,7 +70,7 @@
99 </header>
100 <sheet string="Payment order">
101 <div class="oe_button_box">
102- <button name="%(action_create_payment_order)d" string="Select Invoices to Pay"
103+ <button class="oe_link oe_vertical_separator" name="%(action_create_payment_order)d" string="Select Invoices to Pay"
104 type="action" attrs="{'invisible':[('state','=','done')]}" icon="gtk-find"/>
105 </div>
106 <div class="oe_title">
107
108=== modified file 'account_voucher/account_voucher_view.xml'
109--- account_voucher/account_voucher_view.xml 2013-10-27 12:31:04 +0000
110+++ account_voucher/account_voucher_view.xml 2013-12-05 09:45:50 +0000
111@@ -201,7 +201,7 @@
112 <field name="arch" type="xml">
113 <xpath expr="//div[@name='import_buttons']" position="inside">
114 <button name="%(action_view_account_statement_from_invoice_lines)d"
115- string="Import Invoices" type="action"
116+ string="Import Invoices" type="action" class="oe_link oe_vertical_separator"
117 attrs="{'invisible':[('state','=','confirm')]}"/>
118 </xpath>
119 </field>
120
121=== modified file 'auth_signup/res_users_view.xml'
122--- auth_signup/res_users_view.xml 2013-11-27 15:32:57 +0000
123+++ auth_signup/res_users_view.xml 2013-12-05 09:45:50 +0000
124@@ -30,7 +30,7 @@
125 type="object" name="action_reset_password"
126 attrs="{'invisible': [('state', '!=', 'active')]}"/>
127 <button string="Send an Invitation Email"
128- class="oe_link"
129+ class="oe_link oe_vertical_separator"
130 type="object" name="action_reset_password" context="{'create_user': 1}"
131 attrs="{'invisible': [('state', '!=', 'new')]}"/>
132 </xpath>
133
134=== modified file 'claim_from_delivery/claim_delivery_view.xml'
135--- claim_from_delivery/claim_delivery_view.xml 2012-11-29 22:26:45 +0000
136+++ claim_from_delivery/claim_delivery_view.xml 2013-12-05 09:45:50 +0000
137@@ -17,7 +17,7 @@
138 <field name="arch" type="xml">
139 <xpath expr="/form/sheet/h1" position="before">
140 <div class="oe_right oe_button_box">
141- <button name="%(action_claim_from_delivery)d" string="Claims" type="action"/>
142+ <button name="%(action_claim_from_delivery)d" class="oe_link" string="Claims" type="action"/>
143 </div>
144 </xpath>
145 </field>
146
147=== modified file 'crm/crm_lead_view.xml'
148--- crm/crm_lead_view.xml 2013-11-29 09:46:10 +0000
149+++ crm/crm_lead_view.xml 2013-12-05 09:45:50 +0000
150@@ -105,6 +105,7 @@
151 <sheet>
152 <div class="oe_right oe_button_box" name="buttons">
153 <button string="Schedule/Log Call"
154+ class="oe_link"
155 name="%(opportunity2phonecall_act)d"
156 type="action"/>
157 </div>
158@@ -389,9 +390,9 @@
159 <sheet>
160 <div class="oe_right oe_button_box">
161 <button string="Schedule/Log Call" type="action"
162- name="%(opportunity2phonecall_act)d"/>
163+ name="%(opportunity2phonecall_act)d" class="oe_link"/>
164 <button string="Meeting" type="object"
165- name="action_makeMeeting"
166+ name="action_makeMeeting" class="oe_link oe_vertical_separator"
167 context="{'search_default_attendee_id': active_id, 'default_attendee_id' : active_id}"/>
168 </div>
169 <div class="oe_title">
170
171=== modified file 'crm/res_partner_view.xml'
172--- crm/res_partner_view.xml 2013-10-27 12:31:04 +0000
173+++ crm/res_partner_view.xml 2013-12-05 09:45:50 +0000
174@@ -90,16 +90,21 @@
175 <field name="section_id" completion="1" groups="base.group_multi_salesteams"/>
176 </field>
177 <xpath expr="//div[@name='buttons']" position="inside">
178- <button class="oe_inline" type="action" string="Opportunities"
179+ <field string="Opportunities"
180 attrs="{'invisible': [('customer', '=', False)]}"
181- name="%(crm.crm_case_category_act_oppor11)d"
182+ name="opportunity_ids"
183+ widget="x2many_counter" class="oe_vertical_separator"
184+ options='{"views": [[false, "kanban"], [false, "list"], [false, "form"], [false, "calendar"], [false, "graph"]]}'
185 context="{'search_default_partner_id': active_id}"/>
186- <button class="oe_inline" type="action"
187- string="Meetings"
188- name="%(base_calendar.action_crm_meeting)d"
189+ <field string="Meetings"
190+ name="meeting_ids"
191+ widget="x2many_counter" class="oe_vertical_separator"
192+ options='{"views": [[false, "list"], [false, "form"], [false, "calendar"], [false, "gantt"]]}'
193 context="{'search_default_partner_ids': active_id, 'default_partner_ids' : [active_id]}"/>
194- <button class="oe_inline" type="action" string="Calls"
195- name="%(crm.crm_case_categ_phone_incoming0)d"
196+ <field string="Calls"
197+ name="phonecall_ids"
198+ widget="x2many_counter" class="oe_vertical_separator"
199+ options='{"views": [[false, "list"], [false, "form"], [false, "calendar"]]}'
200 context="{'search_default_partner_id': active_id, 'default_duration': 1.0}" />
201 </xpath>
202 </data>
203
204=== modified file 'crm_claim/res_partner_view.xml'
205--- crm_claim/res_partner_view.xml 2013-06-14 12:10:20 +0000
206+++ crm_claim/res_partner_view.xml 2013-12-05 09:45:50 +0000
207@@ -9,9 +9,9 @@
208 <field name="priority" eval="50"/>
209 <field name="arch" type="xml">
210 <xpath expr="//div[@name='buttons']" position="inside">
211- <button class="oe_inline" type="action"
212- name="%(crm_case_categ_claim0)d"
213- string="Claims"
214+ <field name="claims_ids"
215+ widget="x2many_counter" class="oe_vertical_separator"
216+ options='{"views": [[false, "list"], [false, "form"], [false, "calendar"]]}'
217 context="{'search_default_partner_id': active_id, 'default_partner_id': active_id}"
218 groups="base.group_sale_salesman" />
219 </xpath>
220
221=== modified file 'email_template/email_template_view.xml'
222--- email_template/email_template_view.xml 2013-10-27 12:31:04 +0000
223+++ email_template/email_template_view.xml 2013-12-05 09:45:50 +0000
224@@ -15,13 +15,13 @@
225 <div class="oe_right oe_button_box" name="buttons">
226 <field name="ref_ir_act_window" invisible="1"/>
227 <button name="create_action" string="Add context action" type="object"
228- attrs="{'invisible':[('ref_ir_act_window','!=',False)]}"
229+ attrs="{'invisible':[('ref_ir_act_window','!=',False)]}" class="oe_link"
230 help="Display an option on related documents to open a composition wizard with this template"/>
231 <button name="unlink_action" string="Remove context action" type="object"
232- attrs="{'invisible':[('ref_ir_act_window','=',False)]}"
233+ attrs="{'invisible':[('ref_ir_act_window','=',False)]}" class="oe_link"
234 help="Remove the contextual action to use this template on related documents"/>
235 <button name="%(wizard_email_template_preview)d" string="Preview"
236- type="action" target="new"
237+ type="action" target="new" class="oe_link oe_vertical_separator"
238 context="{'template_id':active_id}"/>
239 </div>
240 <notebook>
241
242=== modified file 'event/event_view.xml'
243--- event/event_view.xml 2013-10-27 12:31:04 +0000
244+++ event/event_view.xml 2013-12-05 09:45:50 +0000
245@@ -71,7 +71,8 @@
246 </header>
247 <sheet>
248 <div class="oe_right oe_button_box" groups="base.group_user">
249- <button name="%(event.act_event_list_register_event)d" type="action" string="Registrations" help="Register with this event"/>
250+ <field name="registration_ids" widget="x2many_counter"
251+ options='{"views": [[false, "list"], [false, "form"], [false, "calendar"], [false, "graph"]]}'/>
252 </div>
253 <div class="oe_title">
254 <label for="name" class="oe_edit_only"/>
255
256=== modified file 'fleet/fleet_view.xml'
257--- fleet/fleet_view.xml 2013-11-27 15:32:57 +0000
258+++ fleet/fleet_view.xml 2013-12-05 09:45:50 +0000
259@@ -211,11 +211,15 @@
260 <field name="tag_ids" widget="many2many_tags" />
261 </div>
262 <div class="oe_right oe_button_box">
263- <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" />
264- <button name="act_show_log_cost" type="object" string="Costs" help="show all the costs for this vehicle" groups="fleet.group_fleet_manager"/>
265- <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" />
266- <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" />
267- <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" />
268+ <field name="log_contracts" widget="x2many_counter" class="oe_vertical_separator"
269+ options='{"views": [[false, "list"], [false, "form"], [false, "graph"]]}'
270+ string="Contracts" help="show the contract for this vehicle" />
271+ <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"/>
272+ <field name="log_services" class="oe_vertical_separator" string="Services"
273+ options='{"views": [[false, "list"], [false, "form"], [false, "graph"]]}' widget="x2many_counter"
274+ help="show the services logs for this vehicle" />
275+ <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" />
276+ <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" />
277 </div>
278 <group col="2" string="General Properties">
279 <group >
280
281=== modified file 'hr_contract/hr_contract_view.xml'
282--- hr_contract/hr_contract_view.xml 2013-10-27 12:31:04 +0000
283+++ hr_contract/hr_contract_view.xml 2013-12-05 09:45:50 +0000
284@@ -21,7 +21,9 @@
285 <field name="arch" type="xml">
286 <data>
287 <xpath expr="//div[@name='button_box']" position="inside">
288- <button name="%(act_hr_employee_2_hr_contract)d" string="Contracts" type="action" groups="base.group_hr_manager"/>
289+ <field name="contract_ids" string="Contracts" widget="x2many_counter"
290+ groups="base.group_hr_manager" class="oe_vertical_separator"
291+ options='{"views": [[false, "list"], [false, "form"]]}'/>
292 </xpath>
293 <xpath expr="//field[@name='coach_id']" position="after">
294 <field name="manager"/>
295
296=== modified file 'hr_evaluation/hr_evaluation_view.xml'
297--- hr_evaluation/hr_evaluation_view.xml 2013-10-27 12:31:04 +0000
298+++ hr_evaluation/hr_evaluation_view.xml 2013-12-05 09:45:50 +0000
299@@ -145,7 +145,7 @@
300 </group>
301 </xpath>
302 <xpath expr="//div[@name='button_box']" position="inside">
303- <button name="%(act_hr_employee_2_hr__evaluation_interview)d" string="Appraisal Interviews" type="action"/>
304+ <button name="%(act_hr_employee_2_hr__evaluation_interview)d" class="oe_link oe_vertical_separator" string="Appraisal Interviews" type="action"/>
305 </xpath>
306 </field>
307 </record>
308@@ -183,8 +183,8 @@
309 <field nolabel="1" name="survey_request_ids" attrs="{'readonly': [('state', '=', 'done')]}">
310 <form string="Interview Appraisal" version="7.0">
311 <div class="oe_right oe_button_box">
312- <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)]}"/>
313- <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)]}" />
314+ <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)]}"/>
315+ <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)]}" />
316 </div>
317 <group>
318 <group>
319@@ -305,7 +305,7 @@
320 <sheet>
321 <div class="oe_right oe_button_box" name="button_box">
322 <button string="Send Reminder Email" name="%(mail.action_email_compose_message_wizard)d" type="action"
323- states="waiting_answer"
324+ states="waiting_answer" class="oe_link"
325 context="{'default_body_text': 'Hello,\n\nKindly post your response for the survey interview.\n\nThanks',
326 'default_subject': 'Reminder to fill up Survey' }"/>
327 </div>
328
329=== modified file 'hr_holidays/hr_holidays.py'
330--- hr_holidays/hr_holidays.py 2013-11-27 15:32:57 +0000
331+++ hr_holidays/hr_holidays.py 2013-12-05 09:45:50 +0000
332@@ -548,6 +548,7 @@
333 'current_leave_id': fields.function(_get_leave_status, multi="leave_status", string="Current Leave Type",type='many2one', relation='hr.holidays.status'),
334 'leave_date_from': fields.function(_get_leave_status, multi='leave_status', type='date', string='From Date'),
335 'leave_date_to': fields.function(_get_leave_status, multi='leave_status', type='date', string='To Date'),
336+ 'leave_ids': fields.one2many('hr.holidays','employee_id',string="Leaves")
337 }
338
339
340
341=== modified file 'hr_holidays/hr_holidays_view.xml'
342--- hr_holidays/hr_holidays_view.xml 2013-10-27 12:31:04 +0000
343+++ hr_holidays/hr_holidays_view.xml 2013-12-05 09:45:50 +0000
344@@ -522,7 +522,8 @@
345 </group>
346 </xpath>
347 <xpath expr="//div[@name='button_box']" position="inside">
348- <button name="%(act_hr_employee_holiday_request)d" string="Leaves" type="action" groups="base.group_hr_user"/>
349+ <field name="leave_ids" widget="x2many_counter" groups="base.group_hr_user" class="oe_vertical_separator"
350+ options='{"views": [[false, "list"], [false, "form"], [false, "calendar"]]}'/>
351 </xpath>
352 </field>
353 </record>
354
355=== modified file 'hr_payroll/hr_payroll_view.xml'
356--- hr_payroll/hr_payroll_view.xml 2013-10-27 12:31:04 +0000
357+++ hr_payroll/hr_payroll_view.xml 2013-12-05 09:45:50 +0000
358@@ -222,7 +222,7 @@
359 </header>
360 <sheet>
361 <div class="oe_right oe_button_box">
362- <button name="%(act_payslip_lines)d" string="Payslip Computation Details" type="action"/>
363+ <button name="%(act_payslip_lines)d" class="oe_link" string="Payslip Computation Details" type="action"/>
364 </div>
365 <div class="oe_title">
366 <label for="employee_id" class="oe_edit_only"/>
367@@ -387,7 +387,8 @@
368 <field name="arch" type="xml">
369 <data>
370 <xpath expr="//div[@name='button_box']" position="inside">
371- <button name="%(act_hr_employee_payslip_list)d" string="Payslips" type="action" groups="base.group_hr_user"/>
372+ <field name="slip_ids" string="Payslips" widget="x2many_counter" class="oe_vertical_separator"
373+ groups="base.group_hr_user" options='{"views": [[false, "list"], [false, "form"]]}'/>
374 </xpath>
375 </data>
376 </field>
377
378=== modified file 'hr_recruitment/hr_recruitment_view.xml'
379--- hr_recruitment/hr_recruitment_view.xml 2013-11-27 15:32:57 +0000
380+++ hr_recruitment/hr_recruitment_view.xml 2013-12-05 09:45:50 +0000
381@@ -74,13 +74,13 @@
382 </header>
383 <sheet>
384 <div class="oe_right oe_button_box">
385- <button name="action_makeMeeting" type="object"
386+ <button name="action_makeMeeting" class="oe_link" type="object"
387 string="Schedule Meeting" help="Schedule interview with this applicant"/>
388- <button name="%(survey.action_view_survey_question_message)d" type="action"
389+ <button name="%(survey.action_view_survey_question_message)d" class="oe_link oe_vertical_separator" type="action"
390 string="Start Interview" help="Answer related job question"
391 context="{'survey_id': survey, 'response_id': [response], 'response_no':0 ,'active' : response, 'object' : 'hr.applicant'}"
392- attrs="{'invisible':[('survey','=',False)]}"/>
393- <button name="action_print_survey" type="object"
394+ attrs="{'invisible':[('survey','=',False)]}"/>
395+ <button name="action_print_survey" type="object" class="oe_link oe_vertical_separator"
396 string="Print Interview" help="Print interview report"
397 attrs="{'invisible':[('survey','=',False)]}"/>
398 </div>
399
400=== modified file 'hr_timesheet/hr_timesheet_view.xml'
401--- hr_timesheet/hr_timesheet_view.xml 2013-11-27 15:32:57 +0000
402+++ hr_timesheet/hr_timesheet_view.xml 2013-12-05 09:45:50 +0000
403@@ -119,7 +119,7 @@
404 </xpath>
405 <xpath expr='//div[@name="buttons"]' position='inside'>
406 <button string="Costs and Revenues"
407- name="%(act_analytic_cost_revenue)d"
408+ name="%(act_analytic_cost_revenue)d" class="oe_link"
409 type="action"/>
410
411 </xpath>
412
413=== modified file 'hr_timesheet_sheet/hr_timesheet_sheet_view.xml'
414--- hr_timesheet_sheet/hr_timesheet_sheet_view.xml 2012-12-17 11:14:02 +0000
415+++ hr_timesheet_sheet/hr_timesheet_sheet_view.xml 2013-12-05 09:45:50 +0000
416@@ -71,10 +71,11 @@
417 </header>
418 <sheet>
419 <div class="oe_right oe_button_box" name="buttons">
420- <button type="action"
421+ <button type="action" class="oe_link"
422 name="%(act_hr_timesheet_sheet_sheet_2_hr_analytic_timesheet)d"
423 string="Timesheet Activities" />
424 <button type="action" groups="base.group_hr_attendance"
425+ class="oe_link oe_vertical_separator"
426 name="%(act_hr_timesheet_sheet_sheet_2_hr_attendance)d"
427 string="Attendances" />
428 </div>
429@@ -365,7 +366,7 @@
430 <field name="inherit_id" ref="hr_timesheet.hr_timesheet_employee_extd_form"/>
431 <field name="arch" type="xml">
432 <xpath expr="//div[@name='button_box']" position="inside">
433- <button name="%(act_hr_employee_2_hr_timesheet)d" string="Timesheets" type="action" groups="base.group_hr_manager"/>
434+ <button name="%(act_hr_employee_2_hr_timesheet)d" string="Timesheets" class="oe_link oe_vertical_separator" type="action" groups="base.group_hr_manager"/>
435 </xpath>
436 </field>
437 </record>
438
439=== modified file 'mail/mail_alias_view.xml'
440--- mail/mail_alias_view.xml 2013-10-27 12:31:04 +0000
441+++ mail/mail_alias_view.xml 2013-12-05 09:45:50 +0000
442@@ -15,7 +15,7 @@
443 type="object" class="oe_link"
444 attrs="{'invisible': ['|', ('alias_model_id', '=', False), ('alias_force_thread_id', '=', 0)]}"/>
445 <button name="open_parent_document" string="Open Parent Document"
446- type="object" class="oe_link"
447+ type="object" class="oe_link oe_vertical_separator"
448 attrs="{'invisible': ['|', ('alias_parent_model_id', '=', False), ('alias_parent_thread_id', '=', 0)]}"/>
449 </div>
450 <group>
451
452=== modified file 'marketing_campaign/marketing_campaign.py'
453--- marketing_campaign/marketing_campaign.py 2013-11-27 15:32:57 +0000
454+++ marketing_campaign/marketing_campaign.py 2013-12-05 09:45:50 +0000
455@@ -120,6 +120,10 @@
456 'Status',),
457 'activity_ids': fields.one2many('marketing.campaign.activity',
458 'campaign_id', 'Activities'),
459+ 'segment_ids': fields.one2many('marketing.campaign.segment',
460+ 'campaign_id', 'Segments'),
461+ 'followup_ids': fields.one2many('marketing.campaign.workitem',
462+ 'campaign_id', 'Follow-Up'),
463 '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')),
464 }
465
466
467=== modified file 'marketing_campaign/marketing_campaign_view.xml'
468--- marketing_campaign/marketing_campaign_view.xml 2013-10-27 12:31:04 +0000
469+++ marketing_campaign/marketing_campaign_view.xml 2013-12-05 09:45:50 +0000
470@@ -18,16 +18,6 @@
471
472 <menuitem name="Configuration" id="menu_marketing_configuration" parent="base.marketing_menu" sequence="1"/>
473
474- <!-- Marketing Campaign -->
475-
476- <record id="act_marketing_campaing_segment_opened" model="ir.actions.act_window">
477- <field name="res_model">marketing.campaign.segment</field>
478- <field name="view_type">form</field>
479- <field name="name">Segments</field>
480- <field name="view_mode">tree,form</field>
481- <field name="context">{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}</field>
482- </record>
483-
484 <!-- Campaign Follow-ups -->
485
486 <record id="act_marketing_campaing_followup" model="ir.actions.act_window">
487@@ -65,14 +55,12 @@
488 <sheet string="Campaign">
489 <div class="oe_right oe_button_box" name="button_box">
490 <button type="action"
491- name="%(act_marketing_campaing_stat)d"
492+ name="%(act_marketing_campaing_stat)d" class="oe_link"
493 string="Campaign Statistics"/>
494- <button type="action"
495- name="%(act_marketing_campaing_segment_opened)d"
496- string="Segments"/>
497- <button type="action"
498- name="%(act_marketing_campaing_followup)d"
499- string="Follow-Up"/>
500+ <field name="segment_ids" widget="x2many_counter" class="oe_vertical_separator"
501+ options='{"views": [[false, "list"], [false, "form"]]}'/>
502+ <field name="followup_ids" widget="x2many_counter" class="oe_vertical_separator"
503+ options='{"views": [[false, "list"], [false, "form"]]}'/>
504 </div>
505 <div class="oe_title">
506 <label for="name" class="oe_edit_only"/>
507
508=== modified file 'mrp/mrp_view.xml'
509--- mrp/mrp_view.xml 2013-10-27 12:31:04 +0000
510+++ mrp/mrp_view.xml 2013-12-05 09:45:50 +0000
511@@ -1041,9 +1041,11 @@
512 <field name="inherit_id" ref="product.product_normal_form_view"/>
513 <field name="arch" type="xml">
514 <xpath expr="//div[@name='buttons']" position="inside">
515- <button string="Bill of Materials" name="%(product_open_bom)d" type="action" attrs="{'invisible':[('type', '=', 'service')]}"/>
516- <button string="BoM Structure" name="%(act_product_mrp_bom_open)d" type="action" groups="mrp.group_mrp_user" attrs="{'invisible':[('type', '=', 'service')]}"/>
517- <button string="Manufacturing Orders" name="%(act_product_mrp_production)d" type="action" groups="mrp.group_mrp_user" attrs="{'invisible':[('type', '=', 'service')]}"/>
518+ <button string="Bill of Materials" name="%(product_open_bom)d" type="action" attrs="{'invisible':[('type', '=', 'service')]}" class="oe_link oe_vertical_separator"/>
519+ <button string="BoM Structure" name="%(act_product_mrp_bom_open)d" type="action" class="oe_link oe_vertical_separator"
520+ groups="mrp.group_mrp_user" attrs="{'invisible':[('type', '=', 'service')]}"/>
521+ <button string="Manufacturing Orders" name="%(act_product_mrp_production)d" type="action" class="oe_link oe_vertical_separator"
522+ groups="mrp.group_mrp_user" attrs="{'invisible':[('type', '=', 'service')]}"/>
523 </xpath>
524 </field>
525 </record>
526
527=== modified file 'point_of_sale/point_of_sale_view.xml'
528--- point_of_sale/point_of_sale_view.xml 2013-11-27 15:32:57 +0000
529+++ point_of_sale/point_of_sale_view.xml 2013-12-05 09:45:50 +0000
530@@ -884,8 +884,8 @@
531 </header>
532 <sheet>
533 <div class="oe_right oe_button_box">
534- <button name="%(action_pos_box_in)d" string="Put Money In" type="action" states="opened,closing_control"/>
535- <button name="%(action_pos_box_out)d" string="Take Money Out" type="action" states="opened,closing_control"/>
536+ <button name="%(action_pos_box_in)d" class="oe_link" string="Put Money In" type="action" states="opened,closing_control"/>
537+ <button name="%(action_pos_box_out)d" class="oe_link oe_vertical_separator" string="Take Money Out" type="action" states="opened,closing_control"/>
538 </div>
539 <h1 class="oe_title">
540 Session:
541
542=== modified file 'procurement/procurement_view.xml'
543--- procurement/procurement_view.xml 2013-10-27 12:31:04 +0000
544+++ procurement/procurement_view.xml 2013-12-05 09:45:50 +0000
545@@ -323,7 +323,9 @@
546 <button string="⇒ Request Procurement" name="%(act_make_procurement)d" type="action" class="oe_link"/>
547 </xpath>
548 <xpath expr="//div[@name='buttons']" position="inside">
549- <button string="Orderpoints" name="%(product_open_orderpoint)d" type="action" attrs="{'invisible':[('type', '=', 'service')]}"/>
550+ <field string="Orderpoints" name="orderpoint_ids" widget="x2many_counter"
551+ class="oe_vertical_separator" options='{"views": [[false, "list"], [false, "form"]]}'
552+ attrs="{'invisible':[('type', '=', 'service')]}"/>
553 </xpath>
554 <xpath expr="//field[@name='cost_method']" position="before">
555 <field name="procure_method" groups="base.group_user"/>
556
557=== modified file 'project/project.py'
558--- project/project.py 2013-11-27 15:32:57 +0000
559+++ project/project.py 2013-12-05 09:45:50 +0000
560@@ -167,7 +167,7 @@
561 alias_ids = []
562 mail_alias = self.pool.get('mail.alias')
563 for proj in self.browse(cr, uid, ids, context=context):
564- if proj.tasks:
565+ if proj.task_ids:
566 raise osv.except_osv(_('Invalid Action!'),
567 _('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.'))
568 elif proj.alias_id:
569@@ -243,25 +243,25 @@
570 help="Gives the sequence order when displaying the list of projects"),
571 'members': fields.many2many('res.users', 'project_user_rel', 'project_id', 'uid', 'Project Members',
572 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)]}),
573- 'tasks': fields.one2many('project.task', 'project_id', "Task Activities"),
574+ 'task_ids': fields.one2many('project.task', 'project_id', "Task Activities"),
575 '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.",
576 store = {
577- 'project.project': (_get_project_and_parents, ['tasks', 'parent_id', 'child_ids'], 10),
578+ 'project.project': (_get_project_and_parents, ['task_ids', 'parent_id', 'child_ids'], 10),
579 'project.task': (_get_projects_from_tasks, ['planned_hours', 'remaining_hours', 'work_ids', 'stage_id'], 20),
580 }),
581 '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.",
582 store = {
583- 'project.project': (_get_project_and_parents, ['tasks', 'parent_id', 'child_ids'], 10),
584+ 'project.project': (_get_project_and_parents, ['task_ids', 'parent_id', 'child_ids'], 10),
585 'project.task': (_get_projects_from_tasks, ['planned_hours', 'remaining_hours', 'work_ids', 'stage_id'], 20),
586 }),
587 '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.",
588 store = {
589- 'project.project': (_get_project_and_parents, ['tasks', 'parent_id', 'child_ids'], 10),
590+ 'project.project': (_get_project_and_parents, ['task_ids', 'parent_id', 'child_ids'], 10),
591 'project.task': (_get_projects_from_tasks, ['planned_hours', 'remaining_hours', 'work_ids', 'stage_id'], 20),
592 }),
593 '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.",
594 store = {
595- 'project.project': (_get_project_and_parents, ['tasks', 'parent_id', 'child_ids'], 10),
596+ 'project.project': (_get_project_and_parents, ['task_ids', 'parent_id', 'child_ids'], 10),
597 'project.task': (_get_projects_from_tasks, ['planned_hours', 'remaining_hours', 'work_ids', 'stage_id'], 20),
598 }),
599 'resource_calendar_id': fields.many2one('resource.calendar', 'Working Time', help="Timetable working hours to adjust the gantt diagram report", states={'close':[('readonly',True)]} ),
600@@ -343,9 +343,9 @@
601 map_task_id = {}
602 task_obj = self.pool.get('project.task')
603 proj = self.browse(cr, uid, old_project_id, context=context)
604- for task in proj.tasks:
605+ for task in proj.task_ids:
606 map_task_id[task.id] = task_obj.copy(cr, uid, task.id, {}, context=context)
607- self.write(cr, uid, [new_project_id], {'tasks':[(6,0, map_task_id.values())]})
608+ self.write(cr, uid, [new_project_id], {'task_ids':[(6,0, map_task_id.values())]})
609 task_obj.duplicate_task(cr, uid, map_task_id, context=context)
610 return True
611
612@@ -358,7 +358,7 @@
613 context['active_test'] = False
614 default['state'] = 'open'
615 default['line_ids'] = []
616- default['tasks'] = []
617+ default['task_ids'] = []
618 proj = self.browse(cr, uid, id, context=context)
619 if not default.get('name', False):
620 default.update(name=_("%s (copy)") % (proj.name))
621@@ -447,7 +447,7 @@
622 u_ids = [i.id for i in project.members]
623 if project.user_id and (project.user_id.id not in u_ids):
624 u_ids.append(project.user_id.id)
625- for task in project.tasks:
626+ for task in project.task_ids:
627 if task.user_id and (task.user_id.id not in u_ids):
628 u_ids.append(task.user_id.id)
629 calendar_id = project.resource_calendar_id and project.resource_calendar_id.id or False
630@@ -503,7 +503,7 @@
631 result = self._schedule_header(cr, uid, ids, False, context=context)
632 for project in projects:
633 result += self._schedule_project(cr, uid, project, context=context)
634- result += self.pool.get('project.task')._generate_task(cr, uid, project.tasks, ident=4, context=context)
635+ result += self.pool.get('project.task')._generate_task(cr, uid, project.task_ids, ident=4, context=context)
636
637 local_dict = {}
638 exec result in local_dict
639@@ -511,7 +511,7 @@
640
641 for project in projects:
642 project_gantt = getattr(projects_gantt, 'Project_%d' % (project.id,))
643- for task in project.tasks:
644+ for task in project.task_ids:
645 if task.stage_id and task.stage_id.fold:
646 continue
647
648
649=== modified file 'project/project_view.xml'
650--- project/project_view.xml 2013-11-29 09:46:10 +0000
651+++ project/project_view.xml 2013-12-05 09:45:50 +0000
652@@ -93,8 +93,9 @@
653 </div>
654 </div>
655 <div class="oe_right oe_button_box" name="buttons" groups="base.group_user">
656- <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"]]}'/>
657- <button name="attachment_tree_view" string="Documents" type="object"/>
658+ <field name="task_ids" widget="x2many_counter" string="Tasks" attrs="{'invisible':[('use_tasks','=', False)]}"
659+ options='{"views": [[false, "kanban"], [false, "list"], [false, "form"], [false, "calendar"], [false, "gantt"], [false, "graph"]]}'/>
660+ <button name="attachment_tree_view" class="oe_link oe_vertical_separator" string="Documents" type="object"/>
661 </div>
662 <group>
663 <group>
664
665=== modified file 'project/res_partner_view.xml'
666--- project/res_partner_view.xml 2013-10-27 12:31:04 +0000
667+++ project/res_partner_view.xml 2013-12-05 09:45:50 +0000
668@@ -10,9 +10,9 @@
669 <field name="priority" eval="50"/>
670 <field name="arch" type="xml">
671 <xpath expr="//div[@name='buttons']" position="inside">
672- <button class="oe_inline" type="action"
673- name="%(action_view_task)d"
674- string="Tasks"
675+ <field name="task_ids"
676+ string="Tasks" widget="x2many_counter" class="oe_vertical_separator"
677+ options='{"views": [[false, "kanban"], [false, "list"], [false, "form"], [false, "calendar"], [false, "gantt"], [false, "graph"]]}'
678 context="{'search_default_partner_id': active_id, 'default_partner_id': active_id}"
679 groups="project.group_project_user" />
680 </xpath>
681
682=== modified file 'project/tests/test_project_flow.py'
683--- project/tests/test_project_flow.py 2013-07-10 13:29:54 +0000
684+++ project/tests/test_project_flow.py 2013-12-05 09:45:50 +0000
685@@ -67,19 +67,19 @@
686 self.project_project.set_template(cr, user_projectmanager_id, [project_pigs_id])
687 project.refresh()
688 self.assertEqual(project.state, 'template', 'project: set_template: project state should be template')
689- self.assertEqual(len(project.tasks), 0, 'project: set_template: project tasks should have been set inactive')
690+ self.assertEqual(len(project.task_ids), 0, 'project: set_template: project tasks should have been set inactive')
691
692 # Duplicate template
693 new_template_act = self.project_project.duplicate_template(cr, user_projectmanager_id, [project_pigs_id])
694 new_project = self.project_project.browse(cr, user_projectmanager_id, new_template_act['res_id'])
695 self.assertEqual(new_project.state, 'open', 'project: incorrect duplicate_template')
696- self.assertEqual(len(new_project.tasks), 2, 'project: duplicating a project template should duplicate its tasks')
697+ self.assertEqual(len(new_project.task_ids), 2, 'project: duplicating a project template should duplicate its tasks')
698
699 # Convert into real project
700 self.project_project.reset_project(cr, user_projectmanager_id, [project_pigs_id])
701 project.refresh()
702 self.assertEqual(project.state, 'open', 'project: resetted project should be in open state')
703- self.assertEqual(len(project.tasks), 2, 'project: reset_project: project tasks should have been set active')
704+ self.assertEqual(len(project.task_ids), 2, 'project: reset_project: project tasks should have been set active')
705
706 # Put as pending
707 self.project_project.set_pending(cr, user_projectmanager_id, [project_pigs_id])
708@@ -107,7 +107,7 @@
709 # Copy the project
710 new_project_id = self.project_project.copy(cr, user_projectmanager_id, project_pigs_id)
711 new_project = self.project_project.browse(cr, user_projectmanager_id, new_project_id)
712- self.assertEqual(len(new_project.tasks), 2, 'project: copied project should have copied task')
713+ self.assertEqual(len(new_project.task_ids), 2, 'project: copied project should have copied task')
714
715 # Cancel the project
716 self.project_project.set_cancel(cr, user_projectmanager_id, [project_pigs_id])
717
718=== modified file 'project_issue/project_issue.py'
719--- project_issue/project_issue.py 2013-11-27 15:32:57 +0000
720+++ project_issue/project_issue.py 2013-12-05 09:45:50 +0000
721@@ -507,8 +507,8 @@
722 states={'close': [('readonly', True)], 'cancelled': [('readonly', True)]}),
723 'issue_count': fields.function(_issue_count, type='integer', string="Unclosed Issues",
724 deprecated="This field will be removed in OpenERP v8. Use issue_ids one2many field instead."),
725- 'issue_ids': fields.one2many('project.issue', 'project_id',
726- domain=[('stage_id.fold', '=', False)])
727+ 'issue_ids': fields.one2many('project.issue', 'project_id', 'Issues',
728+ domain=[('stage_id.fold', '=', False)])
729 }
730
731 def _check_escalation(self, cr, uid, ids, context=None):
732@@ -576,5 +576,12 @@
733 self._check_create_write_values(cr, uid, vals, context=context)
734 return super(project_project, self).write(cr, uid, ids, vals, context=context)
735
736+class res_partner(osv.osv):
737+
738+ """ Inherits partner and adds Issues information in the partner form """
739+ _inherit = 'res.partner'
740+ _columns = {
741+ 'issue_ids': fields.one2many('project.issue', 'partner_id', 'Issues'),
742+ }
743
744 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
745
746=== modified file 'project_issue/project_issue_view.xml'
747--- project_issue/project_issue_view.xml 2013-11-29 09:46:10 +0000
748+++ project_issue/project_issue_view.xml 2013-12-05 09:45:50 +0000
749@@ -305,7 +305,8 @@
750 <label for="use_issues"/>
751 </xpath>
752 <xpath expr='//div[@name="buttons"]' position='inside'>
753- <button name="%(act_project_project_2_project_issue_all)d" string="Issues" type="action" attrs="{'invisible':[('use_issues','=', 0)]}"/>
754+ <field name="issue_ids" widget="x2many_counter" class="oe_vertical_separator" string="Issues" attrs="{'invisible':[('use_issues','=', 0)]}"
755+ options='{"views": [[false, "kanban"], [false, "list"], [false, "form"], [false, "calendar"], [false, "graph"]]}'/>
756 </xpath>
757 <xpath expr='//page[@name="project_stages"]' position="attributes">
758 <attribute name="attrs">{'invisible': [('use_tasks', '=', False),('use_issues','=',False)]}</attribute>
759@@ -374,9 +375,9 @@
760 <field name="priority" eval="50"/>
761 <field name="arch" type="xml">
762 <xpath expr="//div[@name='buttons']" position="inside">
763- <button class="oe_inline" type="action" string="Issues"
764- attrs="{'invisible': [('customer', '=', False)]}"
765- name="%(action_view_issues)d"
766+ <field name="issue_ids" attrs="{'invisible': [('customer', '=', False)]}"
767+ options='{"views": [[false, "kanban"], [false, "list"], [false, "form"], [false, "calendar"], [false, "graph"]]}'
768+ widget="x2many_counter" class="oe_vertical_separator"
769 context="{'search_default_partner_id': active_id, 'default_partner_id': active_id}"
770 groups="project.group_project_user"/>
771 </xpath>
772
773=== modified file 'project_long_term/project_long_term_view.xml'
774--- project_long_term/project_long_term_view.xml 2013-10-27 12:31:04 +0000
775+++ project_long_term/project_long_term_view.xml 2013-12-05 09:45:50 +0000
776@@ -102,9 +102,8 @@
777 <label for="use_phases"/>
778 </xpath>
779 <xpath expr="//div[@name='buttons']" position='inside'>
780- <button name="%(act_project_phases)d"
781- string="Phases" type="action"
782- attrs="{'invisible':[('use_phases','=', 0)]}"/>
783+ <field name="phase_ids" class="oe_vertical_separator" widget="x2many_counter" attrs="{'invisible':[('use_phases','=', 0)]}"
784+ options='{"views": [[false, "list"], [false, "form"], [false, "calendar"]]}'/>
785 </xpath>
786 </field>
787 </record>
788@@ -151,7 +150,9 @@
789 <field name="state" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}'/>
790 </header>
791 <sheet>
792- <button name="%(project_phase_task_list)d" string="Related Tasks" type="action" class="oe_right"/>
793+ <div class="oe_right oe_button_box">
794+ <button name="%(project_phase_task_list)d" string="Related Tasks" type="action" class="oe_link"/>
795+ </div>
796 <div class="oe_title">
797 <label for="name" class="oe_edit_only"/>
798 <h1><field name="name"/></h1>
799
800=== modified file 'project_long_term/test/task_process.yml'
801--- project_long_term/test/task_process.yml 2013-10-27 12:31:04 +0000
802+++ project_long_term/test/task_process.yml 2013-12-05 09:45:50 +0000
803@@ -13,7 +13,7 @@
804 -
805 !python {model: project.project}: |
806 prj = self.browse(cr, uid, [ref("project.project_project_1")])[0]
807- for task in prj.tasks:
808+ for task in prj.task_ids:
809 if task.stage_id and task.stage_id.fold:
810 continue
811 assert task.user_id and task.date_start and task.date_end, "Project tasks not scheduled"
812
813=== modified file 'project_timesheet/project_timesheet_view.xml'
814--- project_timesheet/project_timesheet_view.xml 2013-10-27 12:31:04 +0000
815+++ project_timesheet/project_timesheet_view.xml 2013-12-05 09:45:50 +0000
816@@ -30,7 +30,7 @@
817 <label for="use_timesheets"/>
818 </xpath>
819 <xpath expr='//div[@name="buttons"]' position="inside">
820- <button name="open_timesheets" string="Timesheets" type="object" attrs="{'invisible':[('use_timesheets','=', 0)]}"/>
821+ <button name="open_timesheets" string="Timesheets" class="oe_link oe_vertical_separator" type="object" attrs="{'invisible':[('use_timesheets','=', 0)]}"/>
822 </xpath>
823 </field>
824 </record>
825
826=== modified file 'purchase/partner_view.xml'
827--- purchase/partner_view.xml 2013-10-27 12:31:04 +0000
828+++ purchase/partner_view.xml 2013-12-05 09:45:50 +0000
829@@ -74,13 +74,15 @@
830 <field name="priority" eval="20"/>
831 <field name="arch" type="xml">
832 <xpath expr="//div[@name='buttons']" position="inside">
833- <button name="%(purchase.act_res_partner_2_purchase_order)d" type="action"
834+ <field name="purchase_order_ids"
835 string="Purchase Orders"
836+ widget="x2many_counter" class="oe_vertical_separator"
837+ options='{"views": [[false, "list"], [false, "form"], [false, "calendar"]]}'
838 attrs="{'invisible': [('supplier', '=', False)]}"
839 groups="purchase.group_purchase_user"/>
840 <button name="%(purchase.act_res_partner_2_supplier_invoices)d" type="action"
841 attrs="{'invisible': [('supplier', '=', False)]}"
842- string="Supplier Invoices"/>
843+ string="Supplier Invoices" class="oe_link oe_vertical_separator"/>
844 </xpath>
845 </field>
846 </record>
847
848=== modified file 'purchase/purchase.py'
849--- purchase/purchase.py 2013-11-30 13:07:25 +0000
850+++ purchase/purchase.py 2013-12-05 09:45:50 +0000
851@@ -1311,4 +1311,9 @@
852 readonly=True),
853 }
854
855+class product_product(osv.Model):
856+ _inherit = "product.product"
857+ _columns = {
858+ 'purchase_ids': fields.one2many('purchase.order', 'product_id', 'Purchases'),
859+ }
860 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
861
862=== modified file 'purchase/purchase_view.xml'
863--- purchase/purchase_view.xml 2013-11-30 13:07:25 +0000
864+++ purchase/purchase_view.xml 2013-12-05 09:45:50 +0000
865@@ -619,7 +619,9 @@
866 <field name="inherit_id" ref="account.product_normal_form_view"/>
867 <field name="arch" type="xml">
868 <xpath expr="//div[@name='buttons']" position="inside">
869- <button string="Purchases" name="%(action_purchase_line_product_tree)d" type="action" groups="purchase.group_purchase_user"/>
870+ <field name="purchase_ids" class="oe_vertical_separator" widget="x2many_counter"
871+ options='{"views": [[false, "list"], [false, "form"], [false, "calendar"], [false, "graph"]]}'
872+ groups="purchase.group_purchase_user"/>
873 </xpath>
874 <xpath expr="//field[@name='property_account_expense']" position="replace" >
875 <field name="property_account_expense" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]" attrs="{'readonly':[('purchase_ok','=',0)]}" groups="account.group_account_user"/>
876
877=== modified file 'purchase/stock_view.xml'
878--- purchase/stock_view.xml 2013-10-27 12:31:04 +0000
879+++ purchase/stock_view.xml 2013-12-05 09:45:50 +0000
880@@ -46,9 +46,9 @@
881 <xpath expr="//div[contains(@class, 'oe_title')]" position="before">
882 <div class="oe_right oe_button_box" name="buttons">
883 <button type="object"
884- name="view_picking"
885+ name="view_picking" class="oe_link"
886 string="Incoming Shipments" states="approved"/>
887- <button type="object" name="invoice_open"
888+ <button type="object" name="invoice_open" class="oe_link oe_vertical_separator"
889 string="Invoices" attrs="{'invisible': [('state', 'in', ['draft','sent'])]}"/>
890 </div>
891 </xpath>
892
893=== modified file 'purchase_requisition/purchase_requisition_view.xml'
894--- purchase_requisition/purchase_requisition_view.xml 2013-10-27 12:31:04 +0000
895+++ purchase_requisition/purchase_requisition_view.xml 2013-12-05 09:45:50 +0000
896@@ -77,7 +77,7 @@
897 </field>
898 <div class="oe_right oe_button_box" style="margin-top: 10px">
899 <button name="%(action_purchase_requisition_partner)d" type="action"
900- string="Request a Quotation" icon="gtk-execute"
901+ string="Request a Quotation" class="oe_link"
902 attrs="{'invisible': [('line_ids','=',False),('state', 'not in', ('in_progress'))]}"/>
903 </div>
904 <separator string="Quotations"/>
905
906=== modified file 'sale/res_partner_view.xml'
907--- sale/res_partner_view.xml 2013-10-27 12:31:04 +0000
908+++ sale/res_partner_view.xml 2013-12-05 09:45:50 +0000
909@@ -48,9 +48,10 @@
910 <field name="priority" eval="20"/>
911 <field name="arch" type="xml">
912 <xpath expr="//div[@name='buttons']" position="inside">
913- <button name="%(sale.act_res_partner_2_sale_order)d" type="action"
914- string="Quotations and Sales"
915+ <field name="sale_order_ids"
916+ string="Sales" widget="x2many_counter" class="oe_vertical_separator"
917 attrs="{'invisible': [('customer', '=', False)]}"
918+ options='{"views": [[false, "list"], [false, "form"], [false, "calendar"], [false, "graph"]]}'
919 groups="base.group_sale_salesman"/>
920 </xpath>
921 </field>
922
923=== modified file 'sale/sale.py'
924--- sale/sale.py 2013-11-27 15:32:57 +0000
925+++ sale/sale.py 2013-12-05 09:45:50 +0000
926@@ -1004,4 +1004,10 @@
927 workflow.trg_validate(uid, 'account.invoice', id, 'invoice_cancel', cr)
928 return super(account_invoice, self).unlink(cr, uid, ids, context=context)
929
930+class product_product(osv.Model):
931+ _inherit = "product.product"
932+ _columns = {
933+ 'sale_ids': fields.one2many('sale.order.line', 'product_id', 'Sales'),
934+ }
935+
936 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
937
938=== modified file 'sale/sale_view.xml'
939--- sale/sale_view.xml 2013-11-27 15:32:57 +0000
940+++ sale/sale_view.xml 2013-12-05 09:45:50 +0000
941@@ -499,7 +499,9 @@
942 <field name="inherit_id" ref="product.product_normal_form_view"/>
943 <field name="arch" type="xml">
944 <xpath expr="//div[@name='buttons']" position="inside">
945- <button string="Sales" name="%(action_order_line_product_tree)d" type="action" groups="base.group_sale_salesman"/>
946+ <field name="sale_ids" class="oe_vertical_separator" widget="x2many_counter"
947+ options='{"views": [[false, "list"], [false, "form"]]}'
948+ type="action" groups="base.group_sale_salesman"/>
949 </xpath>
950 </field>
951 </record>
952
953=== modified file 'stock/product.py'
954--- stock/product.py 2013-10-27 12:31:04 +0000
955+++ stock/product.py 2013-12-05 09:45:50 +0000
956@@ -422,6 +422,7 @@
957 help="If real-time valuation is enabled for a product, the system will automatically write journal entries corresponding to stock moves." \
958 "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."
959 , required=True),
960+ 'move_ids': fields.one2many('stock.move', 'product_id', 'Moves'),
961 }
962
963 _defaults = {
964
965=== modified file 'stock/product_view.xml'
966--- stock/product_view.xml 2013-11-27 15:32:57 +0000
967+++ stock/product_view.xml 2013-12-05 09:45:50 +0000
968@@ -72,8 +72,10 @@
969 <field name="inherit_id" ref="product.product_normal_form_view"/>
970 <field name="arch" type="xml">
971 <xpath expr="//div[@name='buttons']" position="inside">
972- <button string="Inventory" name="%(action_product_location_tree)d" type="action" attrs="{'invisible':[('type', '=', 'service')]}" groups="stock.group_locations"/>
973- <button string="Moves" name= "%(act_product_stock_move_open)d" type="action" attrs="{'invisible':[('type', '=', 'service')]}" groups="stock.group_stock_user"/>
974+ <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"/>
975+ <field name= "move_ids" class="oe_vertical_separator" widget="x2many_counter"
976+ options='{"views": [[false, "list"], [false, "form"], [false, "calendar"]]}'
977+ attrs="{'invisible':[('type', '=', 'service')]}" groups="stock.group_stock_user"/>
978 </xpath>
979 <group name="procurement_uom" position="before">
980 <group name="delay" string="Delays">
981
982=== modified file 'stock/stock_view.xml'
983--- stock/stock_view.xml 2013-11-27 15:32:57 +0000
984+++ stock/stock_view.xml 2013-12-05 09:45:50 +0000
985@@ -114,7 +114,7 @@
986 </header>
987 <sheet>
988 <div class="oe_right oe_button_box">
989- <button name="%(action_view_stock_fill_inventory)d" string="Fill Inventory" states="draft,confirm" type="action" />
990+ <button name="%(action_view_stock_fill_inventory)d" class="oe_link" string="Fill Inventory" states="draft,confirm" type="action" />
991 </div>
992 <group>
993 <group>
994@@ -338,8 +338,8 @@
995 <field name="arch" type="xml">
996 <form string="Serial Number" version="7.0">
997 <div class="oe_button_box oe_right">
998- <button name="action_traceability" string="Upstream Traceability" type="object" context="{'type': 'move_history_ids2', 'field': 'prodlot_id'}"/>
999- <button name="action_traceability" string="Downstream Traceability" type="object" context="{'type': 'move_history_ids', 'field': 'prodlot_id'}"/>
1000+ <button name="action_traceability" string="Upstream Traceability" class="oe_link" type="object" context="{'type': 'move_history_ids2', 'field': 'prodlot_id'}"/>
1001+ <button name="action_traceability" string="Downstream Traceability" class="oe_link oe_vertical_separator" type="object" context="{'type': 'move_history_ids', 'field': 'prodlot_id'}"/>
1002 </div>
1003 <div class="oe_title">
1004 <label for="name" class="oe_edit_only"/>
1005
1006=== modified file 'survey/survey_view.xml'
1007--- survey/survey_view.xml 2013-11-27 15:32:57 +0000
1008+++ survey/survey_view.xml 2013-12-05 09:45:50 +0000
1009@@ -28,10 +28,10 @@
1010 </header>
1011 <sheet>
1012 <div class="oe_button_box oe_right">
1013- <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)]}"/>
1014- <button name="fill_survey" states="open" string="Answer Survey" type="object" icon="gtk-execute" context="{'survey_id': active_id}" attrs="{'invisible':[('state','!=','open')]}"/>
1015- <button name="action_print_survey" states="open,draft,close,cancel" string="Print Answer" type="object"/>
1016- <button name="edit_survey" states="open,draft,close,cancel"
1017+ <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)]}"/>
1018+ <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')]}"/>
1019+ <button name="action_print_survey" class="oe_link oe_vertical_separator" states="open,draft,close,cancel" string="Print Answer" type="object"/>
1020+ <button name="edit_survey" class="oe_link" states="open,draft,close,cancel"
1021 string="Edit Survey" type="object" context="{'active':True,'edit' : True,'survey_id': active_id}"/>
1022
1023 </div>

Subscribers

People subscribed via source and target branches

to all changes: