Merge lp:~openerp-dev/openobject-addons/trunk-move-account-project-cod into lp:openobject-addons

Proposed by Chirag Dodiya(OpenERP)
Status: Needs review
Proposed branch: lp:~openerp-dev/openobject-addons/trunk-move-account-project-cod
Merge into: lp:openobject-addons
Diff against target: 3293 lines (+1053/-1008)
69 files modified
account/__init__.py (+1/-1)
account/__openerp__.py (+1/-16)
account/account.py (+1/-0)
account/account_analytic.py (+1/-0)
account/account_analytic_line.py (+2/-1)
account/account_analytic_view.xml (+136/-0)
account/demo/account_minimal.xml (+6/-6)
account/partner_view.xml (+2/-2)
account/project/__init__.py (+0/-28)
account/project/project.py (+0/-50)
account/project/project_view.xml (+0/-372)
account/project/report/cost_ledger.py (+0/-111)
account/project/report/inverted_analytic_balance.py (+0/-130)
account/project/report/quantity_cost_ledger.py (+0/-127)
account/report/account_analytic_entries_report.py (+2/-2)
account/report/account_analytic_entries_report_view.xml (+2/-2)
account/security/account_security.xml (+1/-1)
account/security/ir.model.access.csv (+3/-4)
account/test/account_fiscalyear_close.yml (+1/-1)
account/test/account_report.yml (+10/-10)
account_analytic_analysis/account_analytic_analysis_view.xml (+17/-2)
account_analytic_analysis/analytic_account_demo.xml (+6/-6)
account_analytic_plans/test/acount_analytic_plans_report.yml (+2/-2)
account_budget/account_budget_demo.xml (+17/-17)
account_budget/test/account_budget.yml (+2/-2)
account_budget/test/account_budget_report.yml (+1/-1)
account_voucher/test/case1_usd_usd.yml (+1/-1)
account_voucher/test/case1_usd_usd_payment_rate.yml (+1/-1)
account_voucher/test/case2_usd_eur_debtor_in_eur.yml (+2/-2)
account_voucher/test/case2_usd_eur_debtor_in_usd.yml (+2/-2)
account_voucher/test/case3_eur_eur.yml (+1/-1)
account_voucher/test/case4_cad_chf.yml (+1/-1)
account_voucher/test/case5_suppl_usd_usd.yml (+2/-2)
account_voucher/test/case_eur_usd.yml (+1/-1)
analytic/__init__.py (+3/-1)
analytic/__openerp__.py (+21/-5)
analytic/models/__init__.py (+3/-0)
analytic/models/analytic.py (+18/-1)
analytic/report/__init__.py (+3/-3)
analytic/report/analytic_balance.py (+1/-1)
analytic/report/analytic_cost_ledger.py (+111/-0)
analytic/report/analytic_inverted_balance.py (+130/-0)
analytic/report/analytic_journal.py (+1/-1)
analytic/report/analytic_quantity_cost_ledger.py (+127/-0)
analytic/views/analytic_view.xml (+315/-0)
analytic/wizard/account_analytic_chart.py (+1/-1)
analytic/wizard/account_analytic_chart_view.xml (+0/-8)
analytic/wizard/account_analytic_journal_report_view.xml (+1/-8)
hr_expense/hr_expense.py (+2/-0)
hr_expense/hr_expense_demo.xml (+4/-4)
hr_expense/hr_expense_view.xml (+2/-2)
hr_expense/hr_expense_workflow.xml (+0/-1)
hr_timesheet/hr_timesheet_demo.xml (+15/-15)
hr_timesheet/test/hr_timesheet_demo.yml (+1/-1)
hr_timesheet/test/test_hr_timesheet.yml (+2/-2)
hr_timesheet_invoice/hr_timesheet_invoice_demo.xml (+7/-7)
hr_timesheet_invoice/hr_timesheet_invoice_view.xml (+4/-4)
hr_timesheet_invoice/report/hr_timesheet_invoice_report.py (+1/-1)
hr_timesheet_invoice/test/test_hr_timesheet_invoice.yml (+5/-5)
hr_timesheet_invoice/test/test_hr_timesheet_invoice_no_prod_tax.yml (+5/-5)
hr_timesheet_sheet/report/hr_timesheet_report.py (+1/-1)
hr_timesheet_sheet/report/hr_timesheet_report_view.xml (+1/-1)
hr_timesheet_sheet/report/timesheet_report.py (+1/-1)
hr_timesheet_sheet/report/timesheet_report_view.xml (+1/-1)
hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml (+2/-2)
multi_company/multi_company_demo.xml (+15/-15)
project/project.py (+11/-3)
project_issue/project_issue.py (+10/-0)
project_timesheet/project_timesheet_view.xml (+3/-3)
To merge this branch: bzr merge lp:~openerp-dev/openobject-addons/trunk-move-account-project-cod
Reviewer Review Type Date Requested Status
OpenERP Core Team Pending
Review via email: mp+217571@code.launchpad.net

Description of the change

Hello,

    I have done following changes,

     -> merged account/project/project* with analytic/analytic*
     -> renamed report name
         cost_ledger.py -> analytic_cost_ledger.py
         quantity_cost_ledger.py -> analytic_quantity_cost_ledger.py
         inverted_analytic_balance.py -> analytic_inverted_balance.py
     ->when deleting a project IF there are no analytic lines defined on the analytic account of the project also delete the analytic account.
     -> when delete an analytic acccount whene there is project IF the project contains NO taks NOR issues also delete the project (instead of the Warning! Please delete the project linked with this account first.)
     -> merged https://pad.openerp.com/p/openerp-project.task-DZ6WAROGUU task.
Thanks,
cod

To post a comment you must log in.
9399. By Chirag Dodiya(OpenERP)

[IMP]Removed some unused code and improved some file

9400. By Chirag Dodiya(OpenERP)

[IMP]Improved model_id in account analytic view file

Unmerged revisions

9400. By Chirag Dodiya(OpenERP)

[IMP]Improved model_id in account analytic view file

9399. By Chirag Dodiya(OpenERP)

[IMP]Removed some unused code and improved some file

9398. By Chirag Dodiya(OpenERP)

[IMP]Improved demo data and yml

9397. By Chirag Dodiya(OpenERP)

[IMP]Improved analytic account demo file

9396. By Chirag Dodiya(OpenERP)

[IMP]Improved hr timesheet demo file

9395. By Chirag Dodiya(OpenERP)

[IMP]Improved some demo and data file and also imporved code whent try to unlink project and try to unlink analytic acccount

9394. By Chirag Dodiya(OpenERP)

[IMP]Improved some report file set proper template

9393. By Chirag Dodiya(OpenERP)

[MRG]Merged lp:~openerp-dev/openobject-addons/trunk-improve-visibility-contract-analytic-bth-jar

9392. By Chirag Dodiya(OpenERP)

[IMP]Removed some code which is already in account_analytic py and xml file

9391. By Chirag Dodiya(OpenERP)

[IMP]Improved code,removed some code which is already in account_analytic.py

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'account/__init__.py'
--- account/__init__.py 2012-11-29 22:26:45 +0000
+++ account/__init__.py 2014-04-29 11:49:43 +0000
@@ -22,7 +22,6 @@
22import partner22import partner
23import account23import account
24import installer24import installer
25import project
26import account_invoice25import account_invoice
27import account_bank_statement26import account_bank_statement
28import account_bank27import account_bank
@@ -38,5 +37,6 @@
38import res_currency37import res_currency
39import edi38import edi
40import res_config39import res_config
40import account_analytic
4141
42# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:42# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
4343
=== modified file 'account/__openerp__.py'
--- account/__openerp__.py 2014-04-29 08:18:08 +0000
+++ account/__openerp__.py 2014-04-29 11:49:43 +0000
@@ -96,24 +96,16 @@
96 'wizard/account_automatic_reconcile_view.xml',96 'wizard/account_automatic_reconcile_view.xml',
97 'wizard/account_financial_report_view.xml',97 'wizard/account_financial_report_view.xml',
98 'wizard/pos_box.xml',98 'wizard/pos_box.xml',
99 'project/wizard/project_account_analytic_line_view.xml',
100 'account_end_fy.xml',99 'account_end_fy.xml',
101 'account_invoice_view.xml',100 'account_invoice_view.xml',
102 'data/account_data.xml',101 'data/account_data.xml',
103 'data/data_account_type.xml',102 'data/data_account_type.xml',
104 'data/configurable_account_chart.xml',103 'data/configurable_account_chart.xml',
105 'account_invoice_workflow.xml',104 'account_invoice_workflow.xml',
106 'project/project_view.xml',
107 'project/project_report.xml',
108 'project/wizard/account_analytic_balance_report_view.xml',
109 'project/wizard/account_analytic_cost_ledger_view.xml',
110 'project/wizard/account_analytic_inverted_balance_report.xml',
111 'project/wizard/account_analytic_journal_report_view.xml',
112 'project/wizard/account_analytic_cost_ledger_for_journal_report_view.xml',
113 'project/wizard/account_analytic_chart_view.xml',
114 'partner_view.xml',105 'partner_view.xml',
115 'product_view.xml',106 'product_view.xml',
116 'account_assert_test.xml',107 'account_assert_test.xml',
108 'account_analytic_view.xml',
117 'process/statement_process.xml',109 'process/statement_process.xml',
118 'process/customer_invoice_process.xml',110 'process/customer_invoice_process.xml',
119 'process/supplier_invoice_process.xml',111 'process/supplier_invoice_process.xml',
@@ -137,11 +129,6 @@
137 'views/report_partnerledgerother.xml',129 'views/report_partnerledgerother.xml',
138 'views/report_financial.xml',130 'views/report_financial.xml',
139 'views/report_generalledger.xml',131 'views/report_generalledger.xml',
140 'project/views/report_analyticbalance.xml',
141 'project/views/report_analyticjournal.xml',
142 'project/views/report_analyticcostledgerquantity.xml',
143 'project/views/report_analyticcostledger.xml',
144 'project/views/report_invertedanalyticbalance.xml',
145 ],132 ],
146 'js': [133 'js': [
147 'static/src/js/account_move_reconciliation.js',134 'static/src/js/account_move_reconciliation.js',
@@ -158,8 +145,6 @@
158 ],145 ],
159 'demo': [146 'demo': [
160 'demo/account_demo.xml',147 'demo/account_demo.xml',
161 'project/project_demo.xml',
162 'project/analytic_account_demo.xml',
163 'demo/account_minimal.xml',148 'demo/account_minimal.xml',
164 'demo/account_invoice_demo.xml',149 'demo/account_invoice_demo.xml',
165 'account_unit_test.xml',150 'account_unit_test.xml',
166151
=== modified file 'account/account.py'
--- account/account.py 2014-04-15 14:29:34 +0000
+++ account/account.py 2014-04-29 11:49:43 +0000
@@ -734,6 +734,7 @@
734 'loss_account_id' : fields.many2one('account.account', 'Loss Account'),734 'loss_account_id' : fields.many2one('account.account', 'Loss Account'),
735 'internal_account_id' : fields.many2one('account.account', 'Internal Transfers Account', select=1),735 'internal_account_id' : fields.many2one('account.account', 'Internal Transfers Account', select=1),
736 'cash_control' : fields.boolean('Cash Control', help='If you want the journal should be control at opening/closing, check this option'),736 'cash_control' : fields.boolean('Cash Control', help='If you want the journal should be control at opening/closing, check this option'),
737 'analytic_journal_id':fields.many2one('account.analytic.journal','Analytic Journal', help="Journal for analytic entries"),
737 }738 }
738739
739 _defaults = {740 _defaults = {
740741
=== added file 'account/account_analytic.py'
--- account/account_analytic.py 1970-01-01 00:00:00 +0000
+++ account/account_analytic.py 2014-04-29 11:49:43 +0000
@@ -0,0 +1,1 @@
1# -*- coding: utf-8 -*-
02
=== modified file 'account/account_analytic_line.py'
--- account/account_analytic_line.py 2013-10-27 12:31:04 +0000
+++ account/account_analytic_line.py 2014-04-29 11:49:43 +0000
@@ -29,13 +29,14 @@
29 _columns = {29 _columns = {
30 'product_uom_id': fields.many2one('product.uom', 'Unit of Measure'),30 'product_uom_id': fields.many2one('product.uom', 'Unit of Measure'),
31 'product_id': fields.many2one('product.product', 'Product'),31 'product_id': fields.many2one('product.product', 'Product'),
32 'general_account_id': fields.many2one('account.account', 'General Account', required=True, ondelete='restrict'),32 'general_account_id': fields.many2one('account.account', 'Financial Account', required=True, ondelete='restrict'),
33 'move_id': fields.many2one('account.move.line', 'Move Line', ondelete='cascade', select=True),33 'move_id': fields.many2one('account.move.line', 'Move Line', ondelete='cascade', select=True),
34 'journal_id': fields.many2one('account.analytic.journal', 'Analytic Journal', required=True, ondelete='restrict', select=True),34 'journal_id': fields.many2one('account.analytic.journal', 'Analytic Journal', required=True, ondelete='restrict', select=True),
35 'code': fields.char('Code', size=8),35 'code': fields.char('Code', size=8),
36 'ref': fields.char('Ref.', size=64),36 'ref': fields.char('Ref.', size=64),
37 'currency_id': fields.related('move_id', 'currency_id', type='many2one', relation='res.currency', string='Account Currency', store=True, help="The related account currency if not equal to the company one.", readonly=True),37 'currency_id': fields.related('move_id', 'currency_id', type='many2one', relation='res.currency', string='Account Currency', store=True, help="The related account currency if not equal to the company one.", readonly=True),
38 'amount_currency': fields.related('move_id', 'amount_currency', type='float', string='Amount Currency', store=True, help="The amount expressed in the related account currency if not equal to the company one.", readonly=True),38 'amount_currency': fields.related('move_id', 'amount_currency', type='float', string='Amount Currency', store=True, help="The amount expressed in the related account currency if not equal to the company one.", readonly=True),
39 'partner_id': fields.related('account_id', 'partner_id', type='many2one', relation='res.partner', string='Partner', store=True),
39 }40 }
4041
41 _defaults = {42 _defaults = {
4243
=== added file 'account/account_analytic_view.xml'
--- account/account_analytic_view.xml 1970-01-01 00:00:00 +0000
+++ account/account_analytic_view.xml 2014-04-29 11:49:43 +0000
@@ -0,0 +1,136 @@
1<?xml version="1.0" encoding="utf-8"?>
2<openerp>
3 <data>
4 <record id="view_account_analytic_line_form_1" model="ir.ui.view">
5 <field name="name">account.analytic.line.form.1</field>
6 <field name="model">account.analytic.line</field>
7 <field name="inherit_id" ref="analytic.view_account_analytic_line_form"/>
8 <field name="arch" type="xml">
9 <xpath expr="//field[@name='account_id']" position="after">
10 <field name="journal_id"/>
11 </xpath>
12 <xpath expr="//field[@name='date']" position="after">
13 <field name="product_id" string="Product"/>
14 <field name="ref"/>
15 </xpath>
16 <xpath expr="//field[@name='company_id']" position="after">
17 <field name="partner_id"/>
18 </xpath>
19 <xpath expr="//field[@name='amount']" position="after">
20 <label for="amount_currency" groups="base.group_multi_currency"/>
21 <div groups="base.group_multi_currency">
22 <field name="amount_currency" class="oe_inline"/>
23 <field name="currency_id" class="oe_inline"/>
24 </div>
25 <field invisible="1" name="general_account_id"/>
26 </xpath>
27 <xpath expr="//group[@string='Product Information']" position="replace">
28 <group string="Product Information">
29 <field name="product_id" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id, journal_id)"/>
30 <label for="unit_amount"/>
31 <div>
32 <field name="unit_amount" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)" class="oe_inline"/>
33 <field name="product_uom_id" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)" class="oe_inline"/>
34 </div>
35 </group>
36 </xpath>
37 <xpath expr="//group[@string='Product Information']" position="after">
38 <group string="General Accounting">
39 <field name="general_account_id"/>
40 <field name="move_id" readonly="1"/>
41 </group>
42 </xpath>
43 </field>
44 </record>
45 <record id="view_account_analytic_line_tree_1" model="ir.ui.view">
46 <field name="name">account.analytic.line.tree.1</field>
47 <field name="model">account.analytic.line</field>
48 <field name="inherit_id" ref="analytic.view_account_analytic_line_tree"/>
49 <field name="arch" type="xml">
50 <xpath expr="//field[@name='date']" position="after">
51 <field name="ref" invisible="context.get('to_invoice', False)"/>
52 </xpath>
53 <xpath expr="//field[@name='user_id']" position="after">
54 <field name="partner_id"/>
55 <field name="journal_id" invisible="context.get('to_invoice', False)"/>
56 </xpath>
57 <xpath expr="//field[@name='amount']" position="after">
58 <field name="product_id" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id, journal_id)" invisible="not context.get('to_invoice', False)"/>
59 </xpath>
60 <xpath expr="//field[@name='unit_amount']" position="after">
61 <field name="product_uom_id" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)" invisible="not context.get('to_invoice', False)"/>
62 </xpath>
63 <xpath expr="//field[@name='account_id']" position="after">
64 <field name="general_account_id" invisible="context.get('to_invoice', False)"/>
65 </xpath>
66 </field>
67 </record>
68 <record id="view_account_analytic_line_filter_1" model="ir.ui.view">
69 <field name="name">account.analytic.line.select.1</field>
70 <field name="model">account.analytic.line</field>
71 <field name="inherit_id" ref="analytic.view_account_analytic_line_filter"/>
72 <field name="arch" type="xml">
73 <xpath expr="//field[@name='date']" position="after">
74 <field name="product_id"/>
75 <filter name="sales" string="Sales" domain="[('journal_id.type','=','sale')]" help="Analytic Journal Items related to a sale journal."/>
76 <filter name="purchases" string="Purchases" domain="[('journal_id.type','=','purchase')]" help="Analytic Journal Items related to a purchase journal."/>
77 <filter name="others" string="Others" domain="[('journal_id.type','in',('cash','general','situation'))]"/>
78 </xpath>
79 <xpath expr="//field[@name='account_id']" position="after">
80 <field name="partner_id" filter_domain="[('partner_id','child_of',self)]"/>
81 </xpath>
82 <xpath expr="//filter[@string='Analytic Account']" position="after">
83 <filter string="Financial Account" context="{'group_by':'general_account_id'}"/>
84 <filter string="Journal" context="{'group_by':'journal_id'}" name="group_journal"/>
85 </xpath>
86 <xpath expr="//filter[@string='User']" position="before">
87 <filter string="Product" context="{'group_by':'product_id'}"/>
88 <filter string="Partner" context="{'group_by':'partner_id'}"/>
89 </xpath>
90 </field>
91 </record>
92
93 <menuitem groups="analytic.group_analytic_accounting"
94 action="analytic.action_account_analytic_journal_open_form"
95 id="account_analytic_journal_entries"
96 parent="menu_finance_entries"/>
97
98 <record id="view_account_journal_1" model="ir.ui.view">
99 <field name="name">account.journal.form.1</field>
100 <field name="model">account.journal</field>
101 <field name="inherit_id" ref="account.view_account_journal_form"/>
102 <field name="arch" type="xml">
103 <field name="type" position="after">
104 <field name="analytic_journal_id" groups="analytic.group_analytic_accounting"/>
105 </field>
106 </field>
107 </record>
108
109 <record model="ir.values" id="account_analytic_journal_values">
110 <field name="model_id" ref="analytic.model_account_analytic_journal" />
111 <field name="name">Account Analytic Journal</field>
112 <field name="key2">client_print_multi</field>
113 <field name="value" eval="'ir.actions.act_window,' + str(ref('analytic.action_account_analytic_journal'))" />
114 <field name="key">action</field>
115 <field name="model">account.analytic.journal</field>
116 </record>
117 <menuitem groups="analytic.group_analytic_accounting" id="next_id_40"
118 name="Analytic" parent="account.menu_finance_generic_reporting"
119 sequence="4"/>
120 <menuitem groups="analytic.group_analytic_accounting"
121 action="analytic.action_account_analytic_journal"
122 id="account_analytic_journal_print" parent="account.next_id_40"/>
123 <menuitem
124 name="Chart of Analytic Accounts"
125 parent="account.menu_finance_charts"
126 action="analytic.action_account_analytic_chart"
127 id="menu_action_analytic_account_tree2"
128 icon="STOCK_INDENT"
129 groups="analytic.group_analytic_accounting"/>
130 <menuitem action="analytic.action_account_analytic_account_form" id="account_analytic_def_account"
131 parent="menu_analytic_accounting"
132 groups="analytic.group_analytic_accounting"/>
133
134 <menuitem groups="analytic.group_analytic_accounting" action="analytic.action_account_analytic_journal_form" id="account_def_analytic_journal" parent="menu_analytic_accounting" sequence="5"/>
135 </data>
136</openerp>
0137
=== modified file 'account/demo/account_minimal.xml'
--- account/demo/account_minimal.xml 2013-10-27 12:31:04 +0000
+++ account/demo/account_minimal.xml 2014-04-29 11:49:43 +0000
@@ -315,7 +315,7 @@
315 <field name="sequence_id" ref="sequence_sale_journal"/>315 <field name="sequence_id" ref="sequence_sale_journal"/>
316 <field name="default_credit_account_id" ref="a_sale"/>316 <field name="default_credit_account_id" ref="a_sale"/>
317 <field name="default_debit_account_id" ref="a_sale"/>317 <field name="default_debit_account_id" ref="a_sale"/>
318 <field name="analytic_journal_id" ref="cose_journal_sale"/>318 <field name="analytic_journal_id" ref="analytic.cose_journal_sale"/>
319 <field name="user_id" ref="base.user_root"/>319 <field name="user_id" ref="base.user_root"/>
320 </record>320 </record>
321 <record id="refund_sales_journal" model="account.journal">321 <record id="refund_sales_journal" model="account.journal">
@@ -325,7 +325,7 @@
325 <field name="sequence_id" ref="sequence_refund_sales_journal"/>325 <field name="sequence_id" ref="sequence_refund_sales_journal"/>
326 <field name="default_credit_account_id" ref="a_sale"/>326 <field name="default_credit_account_id" ref="a_sale"/>
327 <field name="default_debit_account_id" ref="a_sale"/>327 <field name="default_debit_account_id" ref="a_sale"/>
328 <field name="analytic_journal_id" ref="cose_journal_sale"/>328 <field name="analytic_journal_id" ref="analytic.cose_journal_sale"/>
329 <field name="user_id" ref="base.user_root"/>329 <field name="user_id" ref="base.user_root"/>
330 </record>330 </record>
331331
@@ -357,7 +357,7 @@
357 <field name="sequence_id" ref="sequence_bank_journal"/>357 <field name="sequence_id" ref="sequence_bank_journal"/>
358 <field name="default_debit_account_id" ref="bnk"/>358 <field name="default_debit_account_id" ref="bnk"/>
359 <field name="default_credit_account_id" ref="bnk"/>359 <field name="default_credit_account_id" ref="bnk"/>
360 <field name="analytic_journal_id" ref="sit"/>360 <field name="analytic_journal_id" ref="analytic.sit"/>
361 <field name="user_id" ref="base.user_root"/>361 <field name="user_id" ref="base.user_root"/>
362 </record>362 </record>
363 <record id="check_journal" model="account.journal">363 <record id="check_journal" model="account.journal">
@@ -367,7 +367,7 @@
367 <field name="sequence_id" ref="sequence_check_journal"/>367 <field name="sequence_id" ref="sequence_check_journal"/>
368 <field name="default_debit_account_id" ref="cash"/>368 <field name="default_debit_account_id" ref="cash"/>
369 <field name="default_credit_account_id" ref="cash"/>369 <field name="default_credit_account_id" ref="cash"/>
370 <field name="analytic_journal_id" ref="sit"/>370 <field name="analytic_journal_id" ref="analytic.sit"/>
371 <field name="user_id" ref="base.user_root"/>371 <field name="user_id" ref="base.user_root"/>
372 </record>372 </record>
373 <record id="cash_journal" model="account.journal">373 <record id="cash_journal" model="account.journal">
@@ -387,7 +387,7 @@
387 <field name="sequence_id" ref="sequence_cash_journal"/>387 <field name="sequence_id" ref="sequence_cash_journal"/>
388 <field name="default_debit_account_id" ref="cash"/>388 <field name="default_debit_account_id" ref="cash"/>
389 <field name="default_credit_account_id" ref="cash"/>389 <field name="default_credit_account_id" ref="cash"/>
390 <field name="analytic_journal_id" ref="sit"/>390 <field name="analytic_journal_id" ref="analytic.sit"/>
391 <field name="user_id" ref="base.user_root"/>391 <field name="user_id" ref="base.user_root"/>
392 </record>392 </record>
393 <record id="miscellaneous_journal" model="account.journal">393 <record id="miscellaneous_journal" model="account.journal">
@@ -395,7 +395,7 @@
395 <field name="code">TMIS</field>395 <field name="code">TMIS</field>
396 <field name="type">general</field>396 <field name="type">general</field>
397 <field name="sequence_id" ref="sequence_miscellaneous_journal"/>397 <field name="sequence_id" ref="sequence_miscellaneous_journal"/>
398 <field name="analytic_journal_id" ref="sit"/>398 <field name="analytic_journal_id" ref="analytic.sit"/>
399 <field name="user_id" ref="base.user_root"/>399 <field name="user_id" ref="base.user_root"/>
400 </record>400 </record>
401 <record id="opening_journal" model="account.journal">401 <record id="opening_journal" model="account.journal">
402402
=== modified file 'account/partner_view.xml'
--- account/partner_view.xml 2014-04-21 05:05:34 +0000
+++ account/partner_view.xml 2014-04-29 11:49:43 +0000
@@ -54,8 +54,8 @@
54 <field name="context">{'search_default_partner_id': [active_id], 'default_partner_id': active_id}</field>54 <field name="context">{'search_default_partner_id': [active_id], 'default_partner_id': active_id}</field>
55 <field name="name">Contracts/Analytic Accounts</field>55 <field name="name">Contracts/Analytic Accounts</field>
56 <field name="res_model">account.analytic.account</field>56 <field name="res_model">account.analytic.account</field>
57 <field name="view_id" ref="view_account_analytic_account_tree"/>57 <field name="view_id" ref="analytic.view_account_analytic_account_tree"/>
58 <field name="search_view_id" ref="view_account_analytic_account_search"/>58 <field name="search_view_id" ref="analytic.view_account_analytic_account_search"/>
59 </record>59 </record>
60 <record model="ir.ui.view" id="partner_view_buttons">60 <record model="ir.ui.view" id="partner_view_buttons">
61 <field name="name">partner.view.buttons</field>61 <field name="name">partner.view.buttons</field>
6262
=== removed directory 'account/project'
=== removed file 'account/project/__init__.py'
--- account/project/__init__.py 2011-01-14 00:11:01 +0000
+++ account/project/__init__.py 1970-01-01 00:00:00 +0000
@@ -1,28 +0,0 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# OpenERP, Open Source Management Solution
5# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
6#
7# This program is free software: you can redistribute it and/or modify
8# it under the terms of the GNU Affero General Public License as
9# published by the Free Software Foundation, either version 3 of the
10# License, or (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU Affero General Public License for more details.
16#
17# You should have received a copy of the GNU Affero General Public License
18# along with this program. If not, see <http://www.gnu.org/licenses/>.
19#
20##############################################################################
21
22import project
23import report
24import wizard
25
26
27# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
28
290
=== removed file 'account/project/project.py'
--- account/project/project.py 2013-10-27 12:31:04 +0000
+++ account/project/project.py 1970-01-01 00:00:00 +0000
@@ -1,50 +0,0 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# OpenERP, Open Source Management Solution
5# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
6#
7# This program is free software: you can redistribute it and/or modify
8# it under the terms of the GNU Affero General Public License as
9# published by the Free Software Foundation, either version 3 of the
10# License, or (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU Affero General Public License for more details.
16#
17# You should have received a copy of the GNU Affero General Public License
18# along with this program. If not, see <http://www.gnu.org/licenses/>.
19#
20##############################################################################
21
22from openerp.osv import fields, osv
23
24class account_analytic_journal(osv.osv):
25 _name = 'account.analytic.journal'
26 _description = 'Analytic Journal'
27 _columns = {
28 'name': fields.char('Journal Name', size=64, required=True),
29 'code': fields.char('Journal Code', size=8),
30 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the analytic journal without removing it."),
31 'type': fields.selection([('sale','Sale'), ('purchase','Purchase'), ('cash','Cash'), ('general','General'), ('situation','Situation')], 'Type', size=32, required=True, help="Gives the type of the analytic journal. When it needs for a document (eg: an invoice) to create analytic entries, OpenERP will look for a matching journal of the same type."),
32 'line_ids': fields.one2many('account.analytic.line', 'journal_id', 'Lines'),
33 'company_id': fields.many2one('res.company', 'Company', required=True),
34 }
35 _defaults = {
36 'active': True,
37 'type': 'general',
38 'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id,
39 }
40
41
42class account_journal(osv.osv):
43 _inherit="account.journal"
44
45 _columns = {
46 'analytic_journal_id':fields.many2one('account.analytic.journal','Analytic Journal', help="Journal for analytic entries"),
47 }
48
49
50# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
510
=== removed file 'account/project/project_view.xml'
--- account/project/project_view.xml 2013-10-27 12:31:04 +0000
+++ account/project/project_view.xml 1970-01-01 00:00:00 +0000
@@ -1,372 +0,0 @@
1<?xml version="1.0" encoding="utf-8"?>
2<openerp>
3 <data>
4
5 <record id="view_account_analytic_account_list" model="ir.ui.view">
6 <field name="name">account.analytic.account.list</field>
7 <field name="model">account.analytic.account</field>
8 <field eval="8" name="priority"/>
9 <field name="arch" type="xml">
10 <tree toolbar="1" colors="red:state=='pending';grey:state in ('cancelled','close');blue:type=='view'" string="Analytic Accounts">
11 <field name="complete_name"/>
12 <field name="partner_id"/>
13 <field name="code"/>
14 <field name="date_start"/>
15 <field name="date"/>
16 <field name="user_id" invisible="1"/>
17 <field name="manager_id"/>
18 <field name="parent_id" invisible="1"/>
19 <field name="state" invisible="1"/>
20 <field name="type" invisible="1"/>
21 <field name="template_id" invisible="1"/>
22 <field name="company_id" groups="base.group_multi_company"/>
23 </tree>
24 </field>
25 </record>
26
27 <record id="view_account_analytic_account_search" model="ir.ui.view">
28 <field name="name">account.analytic.account.search</field>
29 <field name="model">account.analytic.account</field>
30 <field name="arch" type="xml">
31 <search string="Analytic Account">
32 <field name="name" filter_domain="['|', ('name','ilike',self), ('code','ilike',self)]" string="Analytic Account"/>
33 <field name="date"/>
34 <field name="partner_id" filter_domain="[('partner_id','child_of',self)]"/>
35 <field name="manager_id"/>
36 <field name="parent_id"/>
37 <field name="user_id"/>
38 <filter string="Open" domain="[('state','=','open')]" help="Current Accounts"/>
39 <filter string="Pending" domain="[('state','=','pending')]" help="Pending Accounts"/>
40 <group expand="0" string="Group By...">
41 <filter string="Associated Partner" domain="[]" context="{'group_by':'partner_id'}"/>
42 <filter string="Type" domain="[]" context="{'group_by':'type'}"/>
43 <filter string="Template" domain="[]" context="{'group_by':'template_id'}"/>
44 <filter string="Parent Account" domain="[]" context="{'group_by':'parent_id'}"/>
45 <filter string="Status" domain="[]" context="{'group_by':'state'}" groups="base.group_no_one"/>
46 </group>
47 </search>
48 </field>
49 </record>
50
51 <record id="view_account_analytic_account_tree" model="ir.ui.view">
52 <field name="name">account.analytic.account.tree</field>
53 <field name="model">account.analytic.account</field>
54 <field name="field_parent">child_complete_ids</field>
55 <field name="arch" type="xml">
56 <tree colors="blue:state=='pending';grey:state in ('close','cancelled');blue:type=='view'" string="Analytic account" toolbar="1">
57 <field name="name" invisible="1"/>
58 <field name="complete_name"/>
59 <field name="code"/>
60 <field name="debit"/>
61 <field name="credit"/>
62 <field name="balance"/>
63 <field name="state" invisible="1"/>
64 <field name="currency_id" groups="base.group_multi_currency"/>
65 <field name="date" invisible="1"/>
66 <field name="user_id" invisible="1"/>
67 <field name="partner_id" invisible="1"/>
68 <field name="parent_id" invisible="1"/>
69 <field name="type"/>
70 <field name="company_id" groups="base.group_multi_company"/>
71 <field name="template_id" invisible="1"/>
72 </tree>
73 </field>
74 </record>
75
76
77 <record id="action_account_analytic_account_form" model="ir.actions.act_window">
78 <field name="name">Analytic Accounts</field>
79 <field name="type">ir.actions.act_window</field>
80 <field name="res_model">account.analytic.account</field>
81 <field name="context">{}</field> <!-- repair invalid context by setting empty one -->
82 <field name="view_type">form</field>
83 <field name="view_mode">tree,form</field>
84 <field name="view_id" ref="view_account_analytic_account_tree"/>
85 <field name="search_view_id" ref="account.view_account_analytic_account_search"/>
86 </record>
87 <menuitem action="action_account_analytic_account_form" id="account_analytic_def_account"
88 parent="menu_analytic_accounting"
89 groups="analytic.group_analytic_accounting"/>
90
91 <record id="act_account_renew_view" model="ir.actions.act_window">
92 <field name="name">Accounts to Renew</field>
93 <field name="type">ir.actions.act_window</field>
94 <field name="res_model">account.analytic.account</field>
95 <field name="view_type">form</field>
96 <field name="view_mode">tree,form</field>
97 <field name="domain">[('date','&lt;',time.strftime('%Y-%m-%d %H:%M:%S'))]</field>
98 <field name="filter" eval="True"/>
99 </record>
100
101 <record id="action_account_analytic_account_tree2" model="ir.actions.act_window">
102 <field name="name">Chart of Analytic Accounts</field>
103 <field name="res_model">account.analytic.account</field>
104 <field name="view_type">tree</field>
105 <field name="view_id" ref="view_account_analytic_account_tree"/>
106 <field name="domain">[('parent_id','=',False)]</field>
107 <field name="help" type="html">
108 <p>
109 Click to add a new analytic account.
110 </p><p>
111 The normal chart of accounts has a structure defined by the
112 legal requirement of the country. The analytic chart of
113 accounts structure should reflect your own business needs in
114 term of costs/revenues reporting.
115 </p><p>
116 They are usually structured by contracts, projects, products or
117 departements. Most of the OpenERP operations (invoices,
118 timesheets, expenses, etc) generate analytic entries on the
119 related account.
120 </p>
121 </field>
122 </record>
123
124
125 <record id="view_account_analytic_line_form" model="ir.ui.view">
126 <field name="name">account.analytic.line.form</field>
127 <field name="model">account.analytic.line</field>
128 <field name="priority">1</field>
129 <field name="arch" type="xml">
130 <form string="Analytic Entry" version="7.0">
131 <group>
132 <group>
133 <field name="name"/>
134 <field name="account_id"/>
135 <field name="journal_id"/>
136 <field name="user_id" context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'account.group_account_invoice']}"/>
137 </group>
138 <group>
139 <field name="date"/>
140 <field name="ref"/>
141 <field name="company_id" groups="base.group_multi_company"/>
142 </group>
143 <group string="Amount">
144 <field name="amount"/>
145 <label for="amount_currency" groups="base.group_multi_currency"/>
146 <div groups="base.group_multi_currency">
147 <field name="amount_currency" class="oe_inline"/>
148 <field name="currency_id" class="oe_inline"/>
149 </div>
150 </group>
151 <group string="Product Information">
152 <field name="product_id" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id, journal_id)"/>
153 <label for="unit_amount"/>
154 <div>
155 <field name="unit_amount" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)" class="oe_inline"/>
156 <field name="product_uom_id" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)" class="oe_inline"/>
157 </div>
158 </group>
159 <group string="General Accounting">
160 <field name="general_account_id"/>
161 <field name="move_id" readonly="1"/>
162 </group>
163 </group>
164 </form>
165 </field>
166 </record>
167 <record id="view_account_analytic_line_tree" model="ir.ui.view">
168 <field name="name">account.analytic.line.tree</field>
169 <field name="model">account.analytic.line</field>
170 <field name="arch" type="xml">
171 <tree string="Analytic Entries">
172 <field name="date"/>
173 <field name="ref" invisible="context.get('to_invoice', False)"/>
174 <field name="name"/>
175 <field name="user_id"/>
176 <field name="journal_id" invisible="context.get('to_invoice', False)"/>
177 <field name="amount" sum="Total" invisible="context.get('to_invoice', False)"/>
178 <field name="product_id" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id, journal_id)" invisible="not context.get('to_invoice', False)"/>
179 <field name="unit_amount" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)" sum="Total Quantity"/>
180 <field name="product_uom_id" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)" invisible="not context.get('to_invoice', False)"/>
181 <field domain="[('type','=','normal')]" name="account_id"/>
182 <field name="general_account_id" invisible="context.get('to_invoice', False)"/>
183 <field name="company_id" groups="base.group_multi_company"/>
184 </tree>
185 </field>
186 </record>
187 <record id="view_account_analytic_line_filter" model="ir.ui.view">
188 <field name="name">account.analytic.line.select</field>
189 <field name="model">account.analytic.line</field>
190 <field name="arch" type="xml">
191 <search string="Search Analytic Lines">
192 <field name="name" string="Analytic Line"/>
193 <field name="date"/>
194 <filter name="sales" string="Sales" domain="[('journal_id.type','=','sale')]" help="Analytic Journal Items related to a sale journal."/>
195 <filter name="purchases" string="Purchases" domain="[('journal_id.type','=','purchase')]" help="Analytic Journal Items related to a purchase journal."/>
196 <filter name="others" string="Others" domain="[('journal_id.type','in',('cash','general','situation'))]"/>
197 <separator/>
198 <filter string="My Entries" domain="[('user_id','=',uid)]"/>
199 <field name="account_id"/>
200 <field name="user_id"/>
201 <group string="Group By..." expand="0">
202 <filter string="Analytic Account" context="{'group_by':'account_id'}"/>
203 <filter string="Fin. Account" context="{'group_by':'general_account_id'}"/>
204 <filter string="Journal" context="{'group_by':'journal_id'}" name="group_journal"/>
205 <separator/>
206 <filter string="Product" context="{'group_by':'product_id'}"/>
207 <filter string="User" context="{'group_by':'user_id'}"/>
208 <separator/>
209 <filter string="Tasks Month" context="{'group_by':'date'}" name="group_date" help="Invoice Tasks by Month"/>
210
211 </group>
212 </search>
213 </field>
214 </record>
215 <record id="action_account_analytic_line_form" model="ir.actions.act_window">
216 <field name="name">Analytic Entries</field>
217 <field name="type">ir.actions.act_window</field>
218 <field name="res_model">account.analytic.line</field>
219 <field name="view_type">form</field>
220 <field name="context">{"search_default_user_id":uid}</field>
221 <field name="view_id" ref="view_account_analytic_line_tree"/>
222 </record>
223
224 <!-- Entries by Line -->
225
226 <record id="action_account_tree1" model="ir.actions.act_window">
227 <field name="name">Analytic Items</field>
228 <field name="res_model">account.analytic.line</field>
229 <field name="view_type">form</field>
230 <field name="view_mode">tree,form</field>
231 <field name="domain">[('account_id','child_of',[active_id])]</field>
232 <field name="context">{'account_id':active_id}</field>
233 <field name="search_view_id" ref="view_account_analytic_line_filter"/>
234 </record>
235 <record id="ir_open_account_analytic_account" model="ir.values">
236 <field eval="'tree_but_open'" name="key2"/>
237 <field eval="'account.analytic.account'" name="model"/>
238 <field name="name">Open Account Tree</field>
239 <field eval="'ir.actions.act_window,%d'%action_account_tree1" name="value"/>
240 </record>
241
242 <record id="account_analytic_line_extended_form" model="ir.ui.view">
243 <field name="name">account.analytic.line.extended_form</field>
244 <field name="model">account.analytic.line</field>
245 <field name="arch" type="xml">
246 <form string="Project line" version="7.0">
247 <group>
248 <group>
249 <field name="name"/>
250 <field name="account_id"/>
251 <field name="journal_id"/>
252 </group>
253 <group>
254 <field name="date" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)"/>
255 <field name="company_id" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)"/>
256 </group>
257 <group string="Amount">
258 <field name="amount"/>
259 <label for="amount_currency" groups="base.group_multi_currency"/>
260 <div groups="base.group_multi_currency">
261 <field name="amount_currency" class="oe_inline"/>
262 <field name="currency_id" class="oe_inline"/>
263 </div>
264 <field invisible="1" name="general_account_id"/>
265 </group>
266 <group string="Product Information">
267 <field name="product_id" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id, journal_id)"/>
268 <label for="unit_amount"/>
269 <div>
270 <field name="unit_amount" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)" class="oe_inline"/>
271 <field name="product_uom_id" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)" class="oe_inline"/>
272 </div>
273 </group>
274 </group>
275 </form>
276 </field>
277 </record>
278 <record id="action_account_analytic_account_line_extended_form" model="ir.actions.act_window">
279 <field name="name">account.analytic.line.extended</field>
280 <field name="type">ir.actions.act_window</field>
281 <field name="res_model">account.analytic.line</field>
282 <field name="view_type">form</field>
283 <field name="view_id" ref="account_analytic_line_extended_form"/>
284 </record>
285
286 #
287 # Analytic Journal
288 #
289
290 <record id="view_account_analytic_journal_tree" model="ir.ui.view">
291 <field name="name">account.analytic.journal.tree</field>
292 <field name="model">account.analytic.journal</field>
293 <field name="arch" type="xml">
294 <tree string="Analytic Journal">
295 <field name="code"/>
296 <field name="name"/>
297 <field name="type"/>
298 </tree>
299 </field>
300 </record>
301
302 <record id="view_analytic_journal_search" model="ir.ui.view">
303 <field name="name">account.analytic.journal.search</field>
304 <field name="model">account.analytic.journal</field>
305 <field name="arch" type="xml">
306 <search string="Analytic Journals">
307 <field name="name" filter_domain="['|', ('name','ilike',self), ('code','ilike',self)]" string="Analytic Journal"/>
308 <field name="type"/>
309 <group expand="0" string="Group By...">
310 <filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'type'}"/>
311 </group>
312 </search>
313 </field>
314 </record>
315
316 <record id="view_account_analytic_journal_form" model="ir.ui.view">
317 <field name="name">account.analytic.journal.form</field>
318 <field name="model">account.analytic.journal</field>
319 <field name="arch" type="xml">
320 <form string="Analytic Journal" version="7.0">
321 <group col="4">
322 <field name="name"/>
323 <field name="code"/>
324 <field name="type"/>
325 <field name="active"/>
326 <field name="company_id" groups="base.group_multi_company"/>
327 </group>
328 </form>
329 </field>
330 </record>
331 <record id="action_account_analytic_journal_form" model="ir.actions.act_window">
332 <field name="name">Analytic Journals</field>
333 <field name="res_model">account.analytic.journal</field>
334 <field name="view_type">form</field>
335 <field name="view_mode">tree,form</field>
336 <field name="search_view_id" ref="view_analytic_journal_search" />
337 </record>
338 <menuitem groups="analytic.group_analytic_accounting" action="action_account_analytic_journal_form" id="account_def_analytic_journal" parent="menu_analytic_accounting" sequence="5"/>
339
340 #
341 # Open journal entries
342 #
343
344 <record id="action_account_analytic_journal_open_form" model="ir.actions.act_window">
345 <field name="name">Analytic Journal Items</field>
346 <field name="res_model">account.analytic.line</field>
347 <field name="view_type">form</field>
348 <field name="view_mode">tree,form</field>
349 </record>
350 <menuitem groups="analytic.group_analytic_accounting"
351 action="action_account_analytic_journal_open_form"
352 id="account_analytic_journal_entries"
353 parent="menu_finance_entries"/>
354
355 #
356 # Reporting
357 #
358
359
360 <record id="view_account_journal_1" model="ir.ui.view">
361 <field name="name">account.journal.form.1</field>
362 <field name="model">account.journal</field>
363 <field name="inherit_id" ref="account.view_account_journal_form"/>
364 <field name="arch" type="xml">
365 <field name="type" position="after">
366 <field name="analytic_journal_id" groups="analytic.group_analytic_accounting"/>
367 </field>
368 </field>
369 </record>
370
371 </data>
372</openerp>
3730
=== removed file 'account/project/report/cost_ledger.py'
--- account/project/report/cost_ledger.py 2014-04-02 16:40:53 +0000
+++ account/project/report/cost_ledger.py 1970-01-01 00:00:00 +0000
@@ -1,111 +0,0 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# OpenERP, Open Source Management Solution
5# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
6#
7# This program is free software: you can redistribute it and/or modify
8# it under the terms of the GNU Affero General Public License as
9# published by the Free Software Foundation, either version 3 of the
10# License, or (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU Affero General Public License for more details.
16#
17# You should have received a copy of the GNU Affero General Public License
18# along with this program. If not, see <http://www.gnu.org/licenses/>.
19#
20##############################################################################
21
22import time
23from openerp.osv import osv
24from openerp.report import report_sxw
25
26
27class account_analytic_cost_ledger(report_sxw.rml_parse):
28 def __init__(self, cr, uid, name, context):
29 super(account_analytic_cost_ledger, self).__init__(cr, uid, name, context=context)
30 self.localcontext.update( {
31 'time': time,
32 'lines_g': self._lines_g,
33 'lines_a': self._lines_a,
34 'account_sum_debit': self._account_sum_debit,
35 'account_sum_credit': self._account_sum_credit,
36 'account_sum_balance': self._account_sum_balance,
37 'sum_debit': self._sum_debit,
38 'sum_credit': self._sum_credit,
39 'sum_balance': self._sum_balance,
40 })
41 self.children = {} # a memo for the method _get_children
42
43 def _get_children(self, accounts):
44 """ return all children accounts of the given accounts
45 :param accounts: list of browse records of 'account.analytic.account'
46 :return: tuple of account ids
47 """
48 analytic_obj = self.pool.get('account.analytic.account')
49 res = set()
50 for account in accounts:
51 if account.id not in self.children:
52 self.children[account.id] = analytic_obj.search(self.cr, self.uid, [('parent_id', 'child_of', [account.id])])
53 res.update(self.children[account.id])
54 return tuple(res)
55
56 def _lines_g(self, account, date1, date2):
57 self.cr.execute("SELECT sum(aal.amount) AS balance, aa.code AS code, aa.name AS name, aa.id AS id \
58 FROM account_account AS aa, account_analytic_line AS aal \
59 WHERE (aal.account_id IN %s) AND (aal.date>=%s) AND (aal.date<=%s) AND (aal.general_account_id=aa.id) AND aa.active \
60 GROUP BY aa.code, aa.name, aa.id ORDER BY aa.code", (self._get_children([account]), date1, date2))
61 res = self.cr.dictfetchall()
62 for r in res:
63 r['debit'] = r['balance'] if r['balance'] > 0 else 0.0
64 r['credit'] = -r['balance'] if r['balance'] < 0 else 0.0
65 return res
66
67 def _lines_a(self, general_account, account, date1, date2):
68 self.cr.execute("SELECT aal.name AS name, aal.code AS code, aal.amount AS balance, aal.date AS date, aaj.code AS cj FROM account_analytic_line AS aal, account_analytic_journal AS aaj \
69 WHERE (aal.general_account_id=%s) AND (aal.account_id IN %s) AND (aal.date>=%s) AND (aal.date<=%s) \
70 AND (aal.journal_id=aaj.id) \
71 ORDER BY aal.date, aaj.code, aal.code", (general_account['id'], self._get_children([account]), date1, date2))
72 res = self.cr.dictfetchall()
73 for r in res:
74 r['debit'] = r['balance'] if r['balance'] > 0 else 0.0
75 r['credit'] = -r['balance'] if r['balance'] < 0 else 0.0
76 return res
77
78 def _account_sum_debit(self, account, date1, date2):
79 return self._sum_debit([account], date1, date2)
80
81 def _account_sum_credit(self, account, date1, date2):
82 return self._sum_credit([account], date1, date2)
83
84 def _account_sum_balance(self, account, date1, date2):
85 debit = self._account_sum_debit(account, date1, date2)
86 credit = self._account_sum_credit(account, date1, date2)
87 return (debit-credit)
88
89 def _sum_debit(self, accounts, date1, date2):
90 self.cr.execute("SELECT sum(amount) FROM account_analytic_line WHERE account_id IN %s AND date>=%s AND date<=%s AND amount>0",
91 (self._get_children(accounts), date1, date2,))
92 return self.cr.fetchone()[0] or 0.0
93
94 def _sum_credit(self, accounts, date1, date2):
95 self.cr.execute("SELECT -sum(amount) FROM account_analytic_line WHERE account_id IN %s AND date>=%s AND date<=%s AND amount<0",
96 (self._get_children(accounts), date1, date2,))
97 return self.cr.fetchone()[0] or 0.0
98
99 def _sum_balance(self, accounts, date1, date2):
100 debit = self._sum_debit(accounts, date1, date2)
101 credit = self._sum_credit(accounts, date1, date2)
102 return (debit-credit)
103
104
105class report_analyticcostledger(osv.AbstractModel):
106 _name = 'report.account.report_analyticcostledger'
107 _inherit = 'report.abstract_report'
108 _template = 'account.report_analyticcostledger'
109 _wrapped_report_class = account_analytic_cost_ledger
110
111# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
1120
=== removed file 'account/project/report/inverted_analytic_balance.py'
--- account/project/report/inverted_analytic_balance.py 2014-04-02 16:40:53 +0000
+++ account/project/report/inverted_analytic_balance.py 1970-01-01 00:00:00 +0000
@@ -1,130 +0,0 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# OpenERP, Open Source Management Solution
5# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
6#
7# This program is free software: you can redistribute it and/or modify
8# it under the terms of the GNU Affero General Public License as
9# published by the Free Software Foundation, either version 3 of the
10# License, or (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU Affero General Public License for more details.
16#
17# You should have received a copy of the GNU Affero General Public License
18# along with this program. If not, see <http://www.gnu.org/licenses/>.
19#
20##############################################################################
21
22import time
23from openerp.osv import osv
24from openerp.report import report_sxw
25
26class account_inverted_analytic_balance(report_sxw.rml_parse):
27 def __init__(self, cr, uid, name, context):
28 super(account_inverted_analytic_balance, self).__init__(cr, uid, name, context=context)
29 self.localcontext.update( {
30 'time': time,
31 'lines_g': self._lines_g,
32 'lines_a': self._lines_a,
33 'sum_debit': self._sum_debit,
34 'sum_credit': self._sum_credit,
35 'sum_balance': self._sum_balance,
36 'sum_quantity': self._sum_quantity,
37 })
38
39 def _lines_g(self, accounts, date1, date2):
40 ids = map(lambda x: x.id, accounts)
41 self.cr.execute("SELECT aa.name AS name, aa.code AS code, "
42 "sum(aal.amount) AS balance, "
43 "sum(aal.unit_amount) AS quantity, aa.id AS id \
44 FROM account_analytic_line AS aal, account_account AS aa \
45 WHERE (aal.general_account_id=aa.id) "
46 "AND (aal.account_id IN %s) "
47 "AND (date>=%s) AND (date<=%s) AND aa.active \
48 GROUP BY aal.general_account_id, aa.name, aa.code, aal.code, aa.id "
49 "ORDER BY aal.code",
50 (tuple(ids), date1, date2))
51 res = self.cr.dictfetchall()
52 for r in res:
53 if r['balance'] > 0:
54 r['debit'] = r['balance']
55 r['credit'] = 0.0
56 elif r['balance'] < 0:
57 r['debit'] = 0.0
58 r['credit'] = -r['balance']
59 else:
60 r['debit'] = 0.0
61 r['credit'] = 0.0
62 return res
63
64 def _lines_a(self, accounts, general_account_id, date1, date2):
65 ids = map(lambda x: x.id, accounts)
66 self.cr.execute("SELECT sum(aal.amount) AS balance, "
67 "sum(aal.unit_amount) AS quantity, "
68 "aaa.code AS code, aaa.name AS name, account_id \
69 FROM account_analytic_line AS aal, "
70 "account_analytic_account AS aaa \
71 WHERE aal.account_id=aaa.id AND aal.account_id IN %s "
72 "AND aal.general_account_id=%s AND aal.date>=%s "
73 "AND aal.date<=%s \
74 GROUP BY aal.account_id, general_account_id, aaa.code, aaa.name "
75 "ORDER BY aal.account_id",
76 (tuple(ids), general_account_id, date1, date2))
77 res = self.cr.dictfetchall()
78
79 aaa_obj = self.pool.get('account.analytic.account')
80 res2 = aaa_obj.read(self.cr, self.uid, ids, ['complete_name'])
81 complete_name = {}
82 for r in res2:
83 complete_name[r['id']] = r['complete_name']
84 for r in res:
85 r['complete_name'] = complete_name[r['account_id']]
86 if r['balance'] > 0:
87 r['debit'] = r['balance']
88 r['credit'] = 0.0
89 elif r['balance'] < 0:
90 r['debit'] = 0.0
91 r['credit'] = -r['balance']
92 else:
93 r['debit'] = 0.0
94 r['credit'] = 0.0
95 return res
96
97 def _sum_debit(self, accounts, date1, date2):
98 ids = map(lambda x: x.id, accounts)
99 self.cr.execute("SELECT sum(amount) \
100 FROM account_analytic_line \
101 WHERE account_id IN %s AND date>=%s AND date<=%s AND amount>0", (tuple(ids),date1, date2,))
102 return self.cr.fetchone()[0] or 0.0
103
104 def _sum_credit(self, accounts, date1, date2):
105 ids = map(lambda x: x.id, accounts)
106 self.cr.execute("SELECT -sum(amount) \
107 FROM account_analytic_line \
108 WHERE account_id IN %s AND date>=%s AND date<=%s AND amount<0", (tuple(ids),date1, date2,))
109 return self.cr.fetchone()[0] or 0.0
110
111 def _sum_balance(self, accounts, date1, date2):
112 debit = self._sum_debit(accounts, date1, date2)
113 credit = self._sum_credit(accounts, date1, date2)
114 return (debit-credit)
115
116 def _sum_quantity(self, accounts, date1, date2):
117 ids = map(lambda x: x.id, accounts)
118 self.cr.execute("SELECT sum(unit_amount) \
119 FROM account_analytic_line \
120 WHERE account_id IN %s AND date>=%s AND date<=%s", (tuple(ids),date1, date2,))
121 return self.cr.fetchone()[0] or 0.0
122
123
124class report_invertedanalyticbalance(osv.AbstractModel):
125 _name = 'report.account.report_invertedanalyticbalance'
126 _inherit = 'report.abstract_report'
127 _template = 'account.report_invertedanalyticbalance'
128 _wrapped_report_class = account_inverted_analytic_balance
129
130# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
1310
=== removed file 'account/project/report/quantity_cost_ledger.py'
--- account/project/report/quantity_cost_ledger.py 2014-04-02 16:40:53 +0000
+++ account/project/report/quantity_cost_ledger.py 1970-01-01 00:00:00 +0000
@@ -1,127 +0,0 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# OpenERP, Open Source Management Solution
5# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
6#
7# This program is free software: you can redistribute it and/or modify
8# it under the terms of the GNU Affero General Public License as
9# published by the Free Software Foundation, either version 3 of the
10# License, or (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU Affero General Public License for more details.
16#
17# You should have received a copy of the GNU Affero General Public License
18# along with this program. If not, see <http://www.gnu.org/licenses/>.
19#
20##############################################################################
21import time
22from openerp.osv import osv
23from openerp.report import report_sxw
24
25
26class account_analytic_quantity_cost_ledger(report_sxw.rml_parse):
27 def __init__(self, cr, uid, name, context):
28 super(account_analytic_quantity_cost_ledger, self).__init__(cr, uid, name, context=context)
29 self.localcontext.update( {
30 'time': time,
31 'lines_g': self._lines_g,
32 'lines_a': self._lines_a,
33 'sum_quantity': self._sum_quantity,
34 'account_sum_quantity': self._account_sum_quantity,
35 })
36
37 def _lines_g(self, account_id, date1, date2, journals):
38 if not journals:
39 self.cr.execute("SELECT sum(aal.unit_amount) AS quantity, \
40 aa.code AS code, aa.name AS name, aa.id AS id \
41 FROM account_account AS aa, account_analytic_line AS aal \
42 WHERE (aal.account_id=%s) AND (aal.date>=%s) \
43 AND (aal.date<=%s) AND (aal.general_account_id=aa.id) \
44 AND aa.active \
45 GROUP BY aa.code, aa.name, aa.id ORDER BY aa.code",
46 (account_id, date1, date2))
47 else:
48 journal_ids = journals
49 self.cr.execute("SELECT sum(aal.unit_amount) AS quantity, \
50 aa.code AS code, aa.name AS name, aa.id AS id \
51 FROM account_account AS aa, account_analytic_line AS aal \
52 WHERE (aal.account_id=%s) AND (aal.date>=%s) \
53 AND (aal.date<=%s) AND (aal.general_account_id=aa.id) \
54 AND aa.active \
55 AND (aal.journal_id IN %s ) \
56 GROUP BY aa.code, aa.name, aa.id ORDER BY aa.code",
57 (account_id, date1, date2, tuple(journal_ids)))
58 res = self.cr.dictfetchall()
59 return res
60
61 def _lines_a(self, general_account_id, account_id, date1, date2, journals):
62 if not journals:
63 self.cr.execute("SELECT aal.name AS name, aal.code AS code, \
64 aal.unit_amount AS quantity, aal.date AS date, \
65 aaj.code AS cj \
66 FROM account_analytic_line AS aal, \
67 account_analytic_journal AS aaj \
68 WHERE (aal.general_account_id=%s) AND (aal.account_id=%s) \
69 AND (aal.date>=%s) AND (aal.date<=%s) \
70 AND (aal.journal_id=aaj.id) \
71 ORDER BY aal.date, aaj.code, aal.code",
72 (general_account_id, account_id, date1, date2))
73 else:
74 journal_ids = journals
75 self.cr.execute("SELECT aal.name AS name, aal.code AS code, \
76 aal.unit_amount AS quantity, aal.date AS date, \
77 aaj.code AS cj \
78 FROM account_analytic_line AS aal, \
79 account_analytic_journal AS aaj \
80 WHERE (aal.general_account_id=%s) AND (aal.account_id=%s) \
81 AND (aal.date>=%s) AND (aal.date<=%s) \
82 AND (aal.journal_id=aaj.id) AND (aaj.id IN %s) \
83 ORDER BY aal.date, aaj.code, aal.code",
84 (general_account_id, account_id, date1, date2,tuple(journal_ids)))
85 res = self.cr.dictfetchall()
86 return res
87
88 def _account_sum_quantity(self, account_id, date1, date2, journals):
89 if not journals:
90 self.cr.execute("SELECT sum(unit_amount) \
91 FROM account_analytic_line \
92 WHERE account_id=%s AND date>=%s AND date<=%s",
93 (account_id, date1, date2))
94 else:
95 journal_ids = journals
96 self.cr.execute("SELECT sum(unit_amount) \
97 FROM account_analytic_line \
98 WHERE account_id = %s AND date >= %s AND date <= %s \
99 AND journal_id IN %s",
100 (account_id, date1, date2, tuple(journal_ids),))
101 return self.cr.fetchone()[0] or 0.0
102
103 def _sum_quantity(self, accounts, date1, date2, journals):
104 ids = map(lambda x: x.id, accounts)
105 if not ids:
106 return 0.0
107 if not journals:
108 self.cr.execute("SELECT sum(unit_amount) \
109 FROM account_analytic_line \
110 WHERE account_id IN %s AND date>=%s AND date<=%s",
111 (tuple(ids), date1, date2,))
112 else:
113 journal_ids = journals
114 self.cr.execute("SELECT sum(unit_amount) \
115 FROM account_analytic_line \
116 WHERE account_id IN %s AND date >= %s AND date <= %s \
117 AND journal_id IN %s",(tuple(ids), date1, date2, tuple(journal_ids)))
118 return self.cr.fetchone()[0] or 0.0
119
120
121class report_analyticcostledgerquantity(osv.AbstractModel):
122 _name = 'report.account.report_analyticcostledgerquantity'
123 _inherit = 'report.abstract_report'
124 _template = 'account.report_analyticcostledgerquantity'
125 _wrapped_report_class = account_analytic_quantity_cost_ledger
126
127# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
1280
=== modified file 'account/report/account_analytic_entries_report.py'
--- account/report/account_analytic_entries_report.py 2014-01-29 16:03:48 +0000
+++ account/report/account_analytic_entries_report.py 2014-04-29 11:49:43 +0000
@@ -33,8 +33,8 @@
33 'partner_id': fields.many2one('res.partner', 'Partner'),33 'partner_id': fields.many2one('res.partner', 'Partner'),
34 'company_id': fields.many2one('res.company', 'Company', required=True),34 'company_id': fields.many2one('res.company', 'Company', required=True),
35 'currency_id': fields.many2one('res.currency', 'Currency', required=True),35 'currency_id': fields.many2one('res.currency', 'Currency', required=True),
36 'account_id': fields.many2one('account.analytic.account', 'Account', required=False),36 'account_id': fields.many2one('account.analytic.account', 'Analytic Account', required=False),
37 'general_account_id': fields.many2one('account.account', 'General Account', required=True),37 'general_account_id': fields.many2one('account.account', 'Financial Account', required=True),
38 'journal_id': fields.many2one('account.analytic.journal', 'Journal', required=True),38 'journal_id': fields.many2one('account.analytic.journal', 'Journal', required=True),
39 'move_id': fields.many2one('account.move.line', 'Move', required=True),39 'move_id': fields.many2one('account.move.line', 'Move', required=True),
40 'product_id': fields.many2one('product.product', 'Product', required=True),40 'product_id': fields.many2one('product.product', 'Product', required=True),
4141
=== modified file 'account/report/account_analytic_entries_report_view.xml'
--- account/report/account_analytic_entries_report_view.xml 2014-01-29 16:03:48 +0000
+++ account/report/account_analytic_entries_report_view.xml 2014-04-29 11:49:43 +0000
@@ -14,8 +14,8 @@
14 <group expand="0" string="Group By...">14 <group expand="0" string="Group By...">
15 <filter string="User" name="User" icon="terp-personal" context="{'group_by':'user_id'}"/>15 <filter string="User" name="User" icon="terp-personal" context="{'group_by':'user_id'}"/>
16 <filter string="Partner" icon="terp-partner" context="{'group_by':'partner_id'}"/>16 <filter string="Partner" icon="terp-partner" context="{'group_by':'partner_id'}"/>
17 <filter string="Account" name="Account" icon="terp-folder-green" context="{'group_by':'account_id'}" groups="analytic.group_analytic_accounting"/>17 <filter string="Analytic Account" name="Account" icon="terp-folder-green" context="{'group_by':'account_id'}" groups="analytic.group_analytic_accounting"/>
18 <filter string="General Account" icon="terp-folder-orange" context="{'group_by':'general_account_id'}"/>18 <filter string="Financial Account" icon="terp-folder-orange" context="{'group_by':'general_account_id'}"/>
19 <filter string="Journal" icon="terp-folder-orange" context="{'group_by':'journal_id'}"/>19 <filter string="Journal" icon="terp-folder-orange" context="{'group_by':'journal_id'}"/>
20 <filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>20 <filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>
21 <filter string="Product Unit of Measure" icon="terp-mrp" context="{'group_by':'product_uom_id'}"/>21 <filter string="Product Unit of Measure" icon="terp-mrp" context="{'group_by':'product_uom_id'}"/>
2222
=== modified file 'account/security/account_security.xml'
--- account/security/account_security.xml 2013-10-27 12:31:04 +0000
+++ account/security/account_security.xml 2014-04-29 11:49:43 +0000
@@ -64,7 +64,7 @@
6464
65 <record id="analytic_journal_comp_rule" model="ir.rule">65 <record id="analytic_journal_comp_rule" model="ir.rule">
66 <field name="name">Analytic journal multi-company</field>66 <field name="name">Analytic journal multi-company</field>
67 <field name="model_id" ref="model_account_analytic_journal"/>67 <field name="model_id" ref="analytic.model_account_analytic_journal"/>
68 <field name="global" eval="True"/>68 <field name="global" eval="True"/>
69 <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>69 <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
70 </record>70 </record>
7171
=== modified file 'account/security/ir.model.access.csv'
--- account/security/ir.model.access.csv 2013-10-27 12:31:04 +0000
+++ account/security/ir.model.access.csv 2014-04-29 11:49:43 +0000
@@ -24,8 +24,8 @@
24access_account_bank_statement_line,account.bank.statement.line,model_account_bank_statement_line,account.group_account_user,1,1,1,124access_account_bank_statement_line,account.bank.statement.line,model_account_bank_statement_line,account.group_account_user,1,1,1,1
25access_account_analytic_line_manager,account.analytic.line manager,model_account_analytic_line,account.group_account_manager,1,0,0,025access_account_analytic_line_manager,account.analytic.line manager,model_account_analytic_line,account.group_account_manager,1,0,0,0
26access_account_analytic_account,account.analytic.account,analytic.model_account_analytic_account,base.group_user,1,0,0,026access_account_analytic_account,account.analytic.account,analytic.model_account_analytic_account,base.group_user,1,0,0,0
27access_account_analytic_journal,account.analytic.journal,model_account_analytic_journal,account.group_account_user,1,0,0,027access_account_analytic_journal,account.analytic.journal,analytic.model_account_analytic_journal,account.group_account_user,1,0,0,0
28access_account_analytic_journal_user,account.analytic.journal,model_account_analytic_journal,base.group_user,1,1,1,028access_account_analytic_journal_user,account.analytic.journal,analytic.model_account_analytic_journal,base.group_user,1,1,1,0
29access_account_invoice_uinvoice,account.invoice,model_account_invoice,account.group_account_invoice,1,1,1,129access_account_invoice_uinvoice,account.invoice,model_account_invoice,account.group_account_invoice,1,1,1,1
30access_account_invoice_line_uinvoice,account.invoice.line,model_account_invoice_line,account.group_account_invoice,1,1,1,130access_account_invoice_line_uinvoice,account.invoice.line,model_account_invoice_line,account.group_account_invoice,1,1,1,1
31access_account_invoice_tax_uinvoice,account.invoice.tax,model_account_invoice_tax,account.group_account_invoice,1,1,1,131access_account_invoice_tax_uinvoice,account.invoice.tax,model_account_invoice_tax,account.group_account_invoice,1,1,1,1
@@ -41,8 +41,7 @@
41access_account_period_manager,account.period,model_account_period,account.group_account_manager,1,1,1,141access_account_period_manager,account.period,model_account_period,account.group_account_manager,1,1,1,1
42access_account_period_invoice,account.period invoice,model_account_period,account.group_account_invoice,1,0,0,042access_account_period_invoice,account.period invoice,model_account_period,account.group_account_invoice,1,0,0,0
43access_account_invoice_group_invoice,account.invoice group invoice,model_account_invoice,account.group_account_invoice,1,1,1,143access_account_invoice_group_invoice,account.invoice group invoice,model_account_invoice,account.group_account_invoice,1,1,1,1
44access_account_analytic_journal_manager,account.analytic.journal,model_account_analytic_journal,account.group_account_manager,1,1,1,144access_account_analytic_journal_manager,account.analytic.journal,analytic.model_account_analytic_journal,account.group_account_manager,1,1,1,1access_account_fiscalyear,account.fiscalyear,model_account_fiscalyear,account.group_account_manager,1,1,1,1
45access_account_fiscalyear,account.fiscalyear,model_account_fiscalyear,account.group_account_manager,1,1,1,1
46access_account_fiscalyear_invoice,account.fiscalyear.invoice,model_account_fiscalyear,account.group_account_invoice,1,0,0,045access_account_fiscalyear_invoice,account.fiscalyear.invoice,model_account_fiscalyear,account.group_account_invoice,1,0,0,0
47access_account_fiscalyear_partner_manager,account.fiscalyear.partnermanager,model_account_fiscalyear,base.group_partner_manager,1,0,0,046access_account_fiscalyear_partner_manager,account.fiscalyear.partnermanager,model_account_fiscalyear,base.group_partner_manager,1,0,0,0
48access_account_fiscalyear_employee,account.fiscalyear employee,model_account_fiscalyear,base.group_user,1,0,0,047access_account_fiscalyear_employee,account.fiscalyear employee,model_account_fiscalyear,base.group_user,1,0,0,0
4948
=== modified file 'account/test/account_fiscalyear_close.yml'
--- account/test/account_fiscalyear_close.yml 2013-11-27 15:32:57 +0000
+++ account/test/account_fiscalyear_close.yml 2014-04-29 11:49:43 +0000
@@ -34,7 +34,7 @@
34 name: End of Year34 name: End of Year
35 code: NEW35 code: NEW
36 type: situation36 type: situation
37 analytic_journal_id: sit37 analytic_journal_id: analytic.sit
38 default_debit_account_id: cash38 default_debit_account_id: cash
39 default_credit_account_id: cash39 default_credit_account_id: cash
40 company_id: base.main_company40 company_id: base.main_company
4141
=== modified file 'account/test/account_report.yml'
--- account/test/account_report.yml 2014-04-02 16:40:53 +0000
+++ account/test/account_report.yml 2014-04-29 11:49:43 +0000
@@ -135,47 +135,47 @@
135-135-
136 !python {model: account.analytic.account}: |136 !python {model: account.analytic.account}: |
137 ctx={}137 ctx={}
138 ctx.update({'model': 'account.analytic.account','active_ids': [ref('account.analytic_root')]})138 ctx.update({'model': 'account.analytic.account','active_ids': [ref('analytic.analytic_root')]})
139 data_dict = {}139 data_dict = {}
140 from openerp.tools import test_reports140 from openerp.tools import test_reports
141 test_reports.try_report_action(cr, uid, 'action_account_analytic_balance',wiz_data=data_dict, context=ctx, our_module='account')141 test_reports.try_report_action(cr, uid, 'analytic.action_account_analytic_balance',wiz_data=data_dict, context=ctx, our_module='account')
142142
143-143-
144 Print the Cost Ledger Report through the wizard144 Print the Cost Ledger Report through the wizard
145-145-
146 !python {model: account.analytic.account}: |146 !python {model: account.analytic.account}: |
147 ctx={}147 ctx={}
148 ctx.update({'model': 'account.analytic.account','active_ids': [ref('account.analytic_root'),ref('account.analytic_absences'),ref('account.analytic_internal'),ref('account.analytic_our_super_product')]})148 ctx.update({'model': 'account.analytic.account','active_ids': [ref('analytic.analytic_root'),ref('analytic.analytic_absences'),ref('analytic.analytic_internal'),ref('analytic.analytic_our_super_product')]})
149 data_dict = {}149 data_dict = {}
150 from openerp.tools import test_reports150 from openerp.tools import test_reports
151 test_reports.try_report_action(cr, uid, 'action_account_analytic_cost',wiz_data=data_dict, context=ctx, our_module='account')151 test_reports.try_report_action(cr, uid, 'analytic.action_account_analytic_cost',wiz_data=data_dict, context=ctx, our_module='account')
152152
153-153-
154 Print the Cost Ledger(Only Quantities) Report through the wizard154 Print the Cost Ledger(Only Quantities) Report through the wizard
155-155-
156 !python {model: account.analytic.account}: |156 !python {model: account.analytic.account}: |
157 ctx={}157 ctx={}
158 ctx.update({'model': 'account.analytic.account','active_ids': [ref('account.analytic_root'),ref('account.analytic_absences'),ref('account.analytic_internal'),ref('account.analytic_our_super_product')]})158 ctx.update({'model': 'account.analytic.account','active_ids': [ref('analytic.analytic_root'),ref('analytic.analytic_absences'),ref('analytic.analytic_internal'),ref('analytic.analytic_our_super_product')]})
159 data_dict = {}159 data_dict = {}
160 from openerp.tools import test_reports160 from openerp.tools import test_reports
161 test_reports.try_report_action(cr, uid, 'action_account_analytic_cost_ledger_journal',wiz_data=data_dict, context=ctx, our_module='account')161 test_reports.try_report_action(cr, uid, 'analytic.action_account_analytic_cost_ledger_journal',wiz_data=data_dict, context=ctx, our_module='account')
162162
163-163-
164 Print the Analytic Journal Report through the wizard164 Print the Analytic Journal Report through the wizard
165-165-
166 !python {model: account.analytic.journal}: |166 !python {model: account.analytic.journal}: |
167 ctx={}167 ctx={}
168 ctx.update({'model': 'account.analytic.journal','active_ids': [ref('account.cose_journal_sale'), ref('account.exp'), ref('account.sit')]})168 ctx.update({'model': 'account.analytic.journal','active_ids': [ref('analytic.cose_journal_sale'), ref('account.exp'), ref('analytic.sit')]})
169 data_dict = {}169 data_dict = {}
170 from openerp.tools import test_reports170 from openerp.tools import test_reports
171 test_reports.try_report_action(cr, uid, 'action_account_analytic_journal',wiz_data=data_dict, context=ctx, our_module='account')171 test_reports.try_report_action(cr, uid, 'analytic.action_account_analytic_journal',wiz_data=data_dict, context=ctx, our_module='account')
172172
173-173-
174 Print the Inverted Analytic Balance Report through the wizard174 Print the Inverted Analytic Balance Report through the wizard
175-175-
176 !python {model: account.analytic.account}: |176 !python {model: account.analytic.account}: |
177 ctx={}177 ctx={}
178 ctx.update({'model': 'account.analytic.account','active_ids': [ref('account.analytic_root')]})178 ctx.update({'model': 'account.analytic.account','active_ids': [ref('analytic.analytic_root')]})
179 data_dict = {}179 data_dict = {}
180 from openerp.tools import test_reports180 from openerp.tools import test_reports
181 test_reports.try_report_action(cr, uid, 'action_account_analytic_invert_balance',wiz_data=data_dict, context=ctx, our_module='account')181 test_reports.try_report_action(cr, uid, 'analytic.action_account_analytic_invert_balance',wiz_data=data_dict, context=ctx, our_module='account')
182182
=== modified file 'account_analytic_analysis/account_analytic_analysis_view.xml'
--- account_analytic_analysis/account_analytic_analysis_view.xml 2014-04-01 12:36:57 +0000
+++ account_analytic_analysis/account_analytic_analysis_view.xml 2014-04-29 11:49:43 +0000
@@ -197,7 +197,7 @@
197 <record id="view_account_analytic_account_tree_c2c_3" model="ir.ui.view">197 <record id="view_account_analytic_account_tree_c2c_3" model="ir.ui.view">
198 <field name="name">account.analytic.account.list.contract</field>198 <field name="name">account.analytic.account.list.contract</field>
199 <field name="model">account.analytic.account</field>199 <field name="model">account.analytic.account</field>
200 <field name="inherit_id" ref="account.view_account_analytic_account_list"/>200 <field name="inherit_id" ref="analytic.view_account_analytic_account_list"/>
201 <field name="arch" type="xml">201 <field name="arch" type="xml">
202 <field name="date_start" position="before">202 <field name="date_start" position="before">
203 <field name="last_invoice_date"/>203 <field name="last_invoice_date"/>
@@ -280,7 +280,7 @@
280 <field name="view_mode">tree,form</field>280 <field name="view_mode">tree,form</field>
281 <field name="domain">[('invoice_id','=',False)]</field>281 <field name="domain">[('invoice_id','=',False)]</field>
282 <field name="context">{'search_default_to_invoice': 1}</field>282 <field name="context">{'search_default_to_invoice': 1}</field>
283 <field name="search_view_id" ref="account.view_account_analytic_line_filter"/>283 <field name="search_view_id" ref="analytic.view_account_analytic_line_filter"/>
284 <field name="help" type="html">284 <field name="help" type="html">
285 <p>285 <p>
286 You will find here timesheets and purchases you did for286 You will find here timesheets and purchases you did for
@@ -338,6 +338,21 @@
338 </field>338 </field>
339 </record>339 </record>
340 <menuitem action="template_of_contract_action" id="menu_template_of_contract_action" parent="base.menu_base_config"/>340 <menuitem action="template_of_contract_action" id="menu_template_of_contract_action" parent="base.menu_base_config"/>
341
342 <record id="account_analytic_analysis_form_form" model="ir.ui.view">
343 <field name="name">account.analytic.account.invoice.form.inherit</field>
344 <field name="model">account.analytic.account</field>
345 <field name="inherit_id" ref="analytic.view_account_analytic_account_form"/>
346 <field eval="20" name="priority"/>
347 <field name="arch" type="xml">
348 <xpath expr='//div[@name="buttons"]' position='inside'>
349 <button string="Time &amp; Materials to Invoice"
350 name="%(action_hr_tree_invoiced_all)d"
351 type="action"
352 context="{'search_default_account_id': [active_id], 'default_account_id': active_id}"/>
353 </xpath>
354 </field>
355 </record>
341356
342 </data>357 </data>
343</openerp>358</openerp>
344359
=== modified file 'account_analytic_analysis/analytic_account_demo.xml'
--- account_analytic_analysis/analytic_account_demo.xml 2013-10-27 12:31:04 +0000
+++ account_analytic_analysis/analytic_account_demo.xml 2014-04-29 11:49:43 +0000
@@ -1,7 +1,7 @@
1<?xml version="1.0" encoding="utf-8"?>1<?xml version="1.0" encoding="utf-8"?>
2<openerp>2<openerp>
3 <data noupdate="1">3 <data noupdate="1">
4 <record id="account.analytic_consultancy" model="account.analytic.account">4 <record id="analytic.analytic_consultancy" model="account.analytic.account">
5 <field name="partner_id" ref="base.res_partner_15"/>5 <field name="partner_id" ref="base.res_partner_15"/>
6 <field name="invoice_on_timesheets">True</field>6 <field name="invoice_on_timesheets">True</field>
7 <field name="hours_qtt_est">1200</field>7 <field name="hours_qtt_est">1200</field>
@@ -12,16 +12,16 @@
12 </record>12 </record>
1313
14 <record id="sale.sale_order_4" model="sale.order">14 <record id="sale.sale_order_4" model="sale.order">
15 <field name="project_id" ref="account.analytic_consultancy"/>15 <field name="project_id" ref="analytic.analytic_consultancy"/>
16 </record>16 </record>
17 17
18 <record id="hr_timesheet.working_hours_maintenance" model="hr.analytic.timesheet">18 <record id="hr_timesheet.working_hours_maintenance" model="hr.analytic.timesheet">
19 <field name="account_id" ref="account.analytic_consultancy"/>19 <field name="account_id" ref="analytic.analytic_consultancy"/>
20 <field name="to_invoice" ref="hr_timesheet_invoice.timesheet_invoice_factor1"/>20 <field name="to_invoice" ref="hr_timesheet_invoice.timesheet_invoice_factor1"/>
21 <field name="unit_amount">100</field>21 <field name="unit_amount">100</field>
22 </record>22 </record>
2323
24 <record id="account.analytic_super_product_trainings" model="account.analytic.account">24 <record id="analytic.analytic_super_product_trainings" model="account.analytic.account">
25 <field name="partner_id" ref="base.res_partner_18"/>25 <field name="partner_id" ref="base.res_partner_18"/>
26 <field name="invoice_on_timesheets">True</field>26 <field name="invoice_on_timesheets">True</field>
27 <field name="hours_qtt_est">500</field>27 <field name="hours_qtt_est">500</field>
@@ -32,11 +32,11 @@
32 </record>32 </record>
33 33
34 <record id="sale.sale_order_6" model="sale.order">34 <record id="sale.sale_order_6" model="sale.order">
35 <field name="project_id" ref="account.analytic_super_product_trainings"/>35 <field name="project_id" ref="analytic.analytic_super_product_trainings"/>
36 <field name="partner_id" ref="base.res_partner_1"/>36 <field name="partner_id" ref="base.res_partner_1"/>
37 </record>37 </record>
3838
39 <record id="account.analytic_support_internal" model="account.analytic.account">39 <record id="analytic.analytic_support_internal" model="account.analytic.account">
40 <field name="partner_id" ref="base.res_partner_1"/>40 <field name="partner_id" ref="base.res_partner_1"/>
41 <field name="use_timesheets">True</field>41 <field name="use_timesheets">True</field>
42 <field name="invoice_on_timesheets">True</field>42 <field name="invoice_on_timesheets">True</field>
4343
=== modified file 'account_analytic_plans/test/acount_analytic_plans_report.yml'
--- account_analytic_plans/test/acount_analytic_plans_report.yml 2014-04-02 16:40:53 +0000
+++ account_analytic_plans/test/acount_analytic_plans_report.yml 2014-04-29 11:49:43 +0000
@@ -5,7 +5,7 @@
5 import os, time5 import os, time
6 import openerp.report6 import openerp.report
7 from openerp import tools7 from openerp import tools
8 data_dict = {'model': 'account.analytic.account', 'form': {'date1':time.strftime("%Y-01-01"),'date2':time.strftime('%Y-%m-%d'),'journal_ids':[6,0,(ref('account.cose_journal_sale'))],'ref':ref('account.analytic_root'),'empty_line':True,'id':ref('account.analytic_root'),'context':{}}}8 data_dict = {'model': 'account.analytic.account', 'form': {'date1':time.strftime("%Y-01-01"),'date2':time.strftime('%Y-%m-%d'),'journal_ids':[6,0,(ref('analytic.cose_journal_sale'))],'ref':ref('analytic.analytic_root'),'empty_line':True,'id':ref('analytic.analytic_root'),'context':{}}}
9 data, format = openerp.report.render_report(cr, uid, [ref('account.analytic_root')], 'account_analytic_plans.report_crossoveredanalyticplans', data_dict, {})9 data, format = openerp.report.render_report(cr, uid, [ref('analytic.analytic_root')], 'account_analytic_plans.report_crossoveredanalyticplans', data_dict, {})
10 if tools.config['test_report_directory']:10 if tools.config['test_report_directory']:
11 file(os.path.join(tools.config['test_report_directory'], 'account_analytic_plans-crossovered_analyitic.'+format), 'wb+').write(data)11 file(os.path.join(tools.config['test_report_directory'], 'account_analytic_plans-crossovered_analyitic.'+format), 'wb+').write(data)
1212
=== modified file 'account_budget/account_budget_demo.xml'
--- account_budget/account_budget_demo.xml 2011-11-01 11:28:40 +0000
+++ account_budget/account_budget_demo.xml 2014-04-29 11:49:43 +0000
@@ -42,7 +42,7 @@
42 <!-- Budget lines -->42 <!-- Budget lines -->
43 <data noupdate="1">43 <data noupdate="1">
44 <record id="crossovered_budget_lines_0" model="crossovered.budget.lines">44 <record id="crossovered_budget_lines_0" model="crossovered.budget.lines">
45 <field name="analytic_account_id" ref="account.analytic_consultancy"/>45 <field name="analytic_account_id" ref="analytic.analytic_consultancy"/>
46 <field name="general_budget_id" ref="account_budget_post_purchase0"/>46 <field name="general_budget_id" ref="account_budget_post_purchase0"/>
47 <field eval="str(time.localtime(time.time())[0]+1)+'-01-01'" name="date_from"/>47 <field eval="str(time.localtime(time.time())[0]+1)+'-01-01'" name="date_from"/>
48 <field eval="-500.0" name="planned_amount"/>48 <field eval="-500.0" name="planned_amount"/>
@@ -50,7 +50,7 @@
50 <field eval="str(time.localtime(time.time())[0]+1)+'-01-31'" name="date_to"/>50 <field eval="str(time.localtime(time.time())[0]+1)+'-01-31'" name="date_to"/>
51 </record>51 </record>
52 <record id="crossovered_budget_lines_1" model="crossovered.budget.lines">52 <record id="crossovered_budget_lines_1" model="crossovered.budget.lines">
53 <field name="analytic_account_id" ref="account.analytic_consultancy"/>53 <field name="analytic_account_id" ref="analytic.analytic_consultancy"/>
54 <field name="general_budget_id" ref="account_budget_post_purchase0"/>54 <field name="general_budget_id" ref="account_budget_post_purchase0"/>
55 <field eval="str(time.localtime(time.time())[0]+1)+'-02-01'" name="date_from"/>55 <field eval="str(time.localtime(time.time())[0]+1)+'-02-01'" name="date_from"/>
56 <field eval="-250.0" name="planned_amount"/>56 <field eval="-250.0" name="planned_amount"/>
@@ -58,7 +58,7 @@
58 <field eval="str(time.localtime(time.time())[0]+1)+'-02-28'" name="date_to"/>58 <field eval="str(time.localtime(time.time())[0]+1)+'-02-28'" name="date_to"/>
59 </record>59 </record>
60 <record id="crossovered_budget_lines_2" model="crossovered.budget.lines">60 <record id="crossovered_budget_lines_2" model="crossovered.budget.lines">
61 <field name="analytic_account_id" ref="account.analytic_consultancy"/>61 <field name="analytic_account_id" ref="analytic.analytic_consultancy"/>
62 <field name="general_budget_id" ref="account_budget_post_sales0"/>62 <field name="general_budget_id" ref="account_budget_post_sales0"/>
63 <field eval="str(time.localtime(time.time())[0]+1)+'-01-01'" name="date_from"/>63 <field eval="str(time.localtime(time.time())[0]+1)+'-01-01'" name="date_from"/>
64 <field eval="500.0" name="planned_amount"/>64 <field eval="500.0" name="planned_amount"/>
@@ -66,7 +66,7 @@
66 <field eval="str(time.localtime(time.time())[0]+1)+'-01-31'" name="date_to"/>66 <field eval="str(time.localtime(time.time())[0]+1)+'-01-31'" name="date_to"/>
67 </record>67 </record>
68 <record id="crossovered_budget_lines_3" model="crossovered.budget.lines">68 <record id="crossovered_budget_lines_3" model="crossovered.budget.lines">
69 <field name="analytic_account_id" ref="account.analytic_consultancy"/>69 <field name="analytic_account_id" ref="analytic.analytic_consultancy"/>
70 <field name="general_budget_id" ref="account_budget_post_sales0"/>70 <field name="general_budget_id" ref="account_budget_post_sales0"/>
71 <field eval="str(time.localtime(time.time())[0]+1)+'-02-07'" name="date_from"/>71 <field eval="str(time.localtime(time.time())[0]+1)+'-02-07'" name="date_from"/>
72 <field eval="900.0" name="planned_amount"/>72 <field eval="900.0" name="planned_amount"/>
@@ -74,7 +74,7 @@
74 <field eval="str(time.localtime(time.time())[0]+1)+'-02-28'" name="date_to"/>74 <field eval="str(time.localtime(time.time())[0]+1)+'-02-28'" name="date_to"/>
75 </record>75 </record>
76 <record id="crossovered_budget_lines_4" model="crossovered.budget.lines">76 <record id="crossovered_budget_lines_4" model="crossovered.budget.lines">
77 <field name="analytic_account_id" ref="account.analytic_consultancy"/>77 <field name="analytic_account_id" ref="analytic.analytic_consultancy"/>
78 <field name="general_budget_id" ref="account_budget_post_sales0"/>78 <field name="general_budget_id" ref="account_budget_post_sales0"/>
79 <field eval="str(time.localtime(time.time())[0]+1)+'-03-01'" name="date_from"/>79 <field eval="str(time.localtime(time.time())[0]+1)+'-03-01'" name="date_from"/>
80 <field eval="300.0" name="planned_amount"/>80 <field eval="300.0" name="planned_amount"/>
@@ -84,7 +84,7 @@
84 </data>84 </data>
85 <data noupdate="1">85 <data noupdate="1">
86 <record id="crossovered_budget_lines_5" model="crossovered.budget.lines">86 <record id="crossovered_budget_lines_5" model="crossovered.budget.lines">
87 <field name="analytic_account_id" ref="account.analytic_super_product_trainings"/>87 <field name="analytic_account_id" ref="analytic.analytic_super_product_trainings"/>
88 <field name="general_budget_id" ref="account_budget_post_sales0"/>88 <field name="general_budget_id" ref="account_budget_post_sales0"/>
89 <field eval="str(time.localtime(time.time())[0]+1)+'-03-16'" name="date_from"/>89 <field eval="str(time.localtime(time.time())[0]+1)+'-03-16'" name="date_from"/>
90 <field eval="375.0" name="planned_amount"/>90 <field eval="375.0" name="planned_amount"/>
@@ -93,7 +93,7 @@
93 <field eval="str(time.localtime(time.time())[0]+1)+'-03-31'" name="date_to"/>93 <field eval="str(time.localtime(time.time())[0]+1)+'-03-31'" name="date_to"/>
94 </record>94 </record>
95 <record id="crossovered_budget_lines_6" model="crossovered.budget.lines">95 <record id="crossovered_budget_lines_6" model="crossovered.budget.lines">
96 <field name="analytic_account_id" ref="account.analytic_super_product_trainings"/>96 <field name="analytic_account_id" ref="analytic.analytic_super_product_trainings"/>
97 <field name="general_budget_id" ref="account_budget_post_purchase0"/>97 <field name="general_budget_id" ref="account_budget_post_purchase0"/>
98 <field eval="str(time.localtime(time.time())[0]+1)+'-04-01'" name="date_from"/>98 <field eval="str(time.localtime(time.time())[0]+1)+'-04-01'" name="date_from"/>
99 <field eval="-150.0" name="planned_amount"/>99 <field eval="-150.0" name="planned_amount"/>
@@ -101,7 +101,7 @@
101 <field eval="str(time.localtime(time.time())[0]+1)+'-04-30'" name="date_to"/>101 <field eval="str(time.localtime(time.time())[0]+1)+'-04-30'" name="date_to"/>
102 </record>102 </record>
103 <record id="crossovered_budget_lines_7" model="crossovered.budget.lines">103 <record id="crossovered_budget_lines_7" model="crossovered.budget.lines">
104 <field name="analytic_account_id" ref="account.analytic_super_product_trainings"/>104 <field name="analytic_account_id" ref="analytic.analytic_super_product_trainings"/>
105 <field name="general_budget_id" ref="account_budget_post_sales0"/>105 <field name="general_budget_id" ref="account_budget_post_sales0"/>
106 <field eval="str(time.localtime(time.time())[0]+1)+'-05-01'" name="date_from"/>106 <field eval="str(time.localtime(time.time())[0]+1)+'-05-01'" name="date_from"/>
107 <field eval="375.0" name="planned_amount"/>107 <field eval="375.0" name="planned_amount"/>
@@ -112,7 +112,7 @@
112 </data>112 </data>
113 <data noupdate="1">113 <data noupdate="1">
114 <record id="crossovered_budget_lines_8" model="crossovered.budget.lines">114 <record id="crossovered_budget_lines_8" model="crossovered.budget.lines">
115 <field name="analytic_account_id" ref="account.analytic_seagate_p1"/>115 <field name="analytic_account_id" ref="analytic.analytic_seagate_p1"/>
116 <field name="general_budget_id" ref="account_budget_post_purchase0"/>116 <field name="general_budget_id" ref="account_budget_post_purchase0"/>
117 <field eval="str(time.localtime(time.time())[0]+1)+'-06-01'" name="date_from"/>117 <field eval="str(time.localtime(time.time())[0]+1)+'-06-01'" name="date_from"/>
118 <field eval="-7500.0" name="planned_amount"/>118 <field eval="-7500.0" name="planned_amount"/>
@@ -120,7 +120,7 @@
120 <field eval="str(time.localtime(time.time())[0]+1)+'-06-15'" name="date_to"/>120 <field eval="str(time.localtime(time.time())[0]+1)+'-06-15'" name="date_to"/>
121 </record>121 </record>
122 <record id="crossovered_budget_lines_9" model="crossovered.budget.lines">122 <record id="crossovered_budget_lines_9" model="crossovered.budget.lines">
123 <field name="analytic_account_id" ref="account.analytic_seagate_p1"/>123 <field name="analytic_account_id" ref="analytic.analytic_seagate_p1"/>
124 <field name="general_budget_id" ref="account_budget_post_purchase0"/>124 <field name="general_budget_id" ref="account_budget_post_purchase0"/>
125 <field eval="str(time.localtime(time.time())[0]+1)+'-06-16'" name="date_from"/>125 <field eval="str(time.localtime(time.time())[0]+1)+'-06-16'" name="date_from"/>
126 <field eval="-5000.0" name="planned_amount"/>126 <field eval="-5000.0" name="planned_amount"/>
@@ -128,7 +128,7 @@
128 <field eval="str(time.localtime(time.time())[0]+1)+'-06-30'" name="date_to"/>128 <field eval="str(time.localtime(time.time())[0]+1)+'-06-30'" name="date_to"/>
129 </record>129 </record>
130 <record id="crossovered_budget_lines_10" model="crossovered.budget.lines">130 <record id="crossovered_budget_lines_10" model="crossovered.budget.lines">
131 <field name="analytic_account_id" ref="account.analytic_seagate_p1"/>131 <field name="analytic_account_id" ref="analytic.analytic_seagate_p1"/>
132 <field name="general_budget_id" ref="account_budget_post_purchase0"/>132 <field name="general_budget_id" ref="account_budget_post_purchase0"/>
133 <field eval="str(time.localtime(time.time())[0]+1)+'-07-01'" name="date_from"/>133 <field eval="str(time.localtime(time.time())[0]+1)+'-07-01'" name="date_from"/>
134 <field eval="-2000.0" name="planned_amount"/>134 <field eval="-2000.0" name="planned_amount"/>
@@ -136,7 +136,7 @@
136 <field eval="str(time.localtime(time.time())[0]+1)+'-07-15'" name="date_to"/>136 <field eval="str(time.localtime(time.time())[0]+1)+'-07-15'" name="date_to"/>
137 </record>137 </record>
138 <record id="crossovered_budget_lines_11" model="crossovered.budget.lines">138 <record id="crossovered_budget_lines_11" model="crossovered.budget.lines">
139 <field name="analytic_account_id" ref="account.analytic_seagate_p1"/>139 <field name="analytic_account_id" ref="analytic.analytic_seagate_p1"/>
140 <field name="general_budget_id" ref="account_budget_post_sales0"/>140 <field name="general_budget_id" ref="account_budget_post_sales0"/>
141 <field eval="str(time.localtime(time.time())[0]+1)+'-07-16'" name="date_from"/>141 <field eval="str(time.localtime(time.time())[0]+1)+'-07-16'" name="date_from"/>
142 <field eval="20000.0" name="planned_amount"/>142 <field eval="20000.0" name="planned_amount"/>
@@ -144,7 +144,7 @@
144 <field eval="str(time.localtime(time.time())[0]+1)+'-07-31'" name="date_to"/>144 <field eval="str(time.localtime(time.time())[0]+1)+'-07-31'" name="date_to"/>
145 </record>145 </record>
146 <record id="crossovered_budget_lines_12" model="crossovered.budget.lines">146 <record id="crossovered_budget_lines_12" model="crossovered.budget.lines">
147 <field name="analytic_account_id" ref="account.analytic_seagate_p1"/>147 <field name="analytic_account_id" ref="analytic.analytic_seagate_p1"/>
148 <field name="general_budget_id" ref="account_budget_post_sales0"/>148 <field name="general_budget_id" ref="account_budget_post_sales0"/>
149 <field eval="str(time.localtime(time.time())[0]+1)+'-08-01'" name="date_from"/>149 <field eval="str(time.localtime(time.time())[0]+1)+'-08-01'" name="date_from"/>
150 <field eval="20000.0" name="planned_amount"/>150 <field eval="20000.0" name="planned_amount"/>
@@ -154,7 +154,7 @@
154 </data>154 </data>
155 <data noupdate="1">155 <data noupdate="1">
156 <record id="crossovered_budget_lines_13" model="crossovered.budget.lines">156 <record id="crossovered_budget_lines_13" model="crossovered.budget.lines">
157 <field name="analytic_account_id" ref="account.analytic_seagate_p2"/>157 <field name="analytic_account_id" ref="analytic.analytic_seagate_p2"/>
158 <field name="general_budget_id" ref="account_budget_post_purchase0"/>158 <field name="general_budget_id" ref="account_budget_post_purchase0"/>
159 <field eval="str(time.localtime(time.time())[0]+1)+'-08-16'" name="date_from"/>159 <field eval="str(time.localtime(time.time())[0]+1)+'-08-16'" name="date_from"/>
160 <field eval="-3000.0" name="planned_amount"/>160 <field eval="-3000.0" name="planned_amount"/>
@@ -162,7 +162,7 @@
162 <field eval="str(time.localtime(time.time())[0]+1)+'-08-31'" name="date_to"/>162 <field eval="str(time.localtime(time.time())[0]+1)+'-08-31'" name="date_to"/>
163 </record>163 </record>
164 <record id="crossovered_budget_lines_14" model="crossovered.budget.lines">164 <record id="crossovered_budget_lines_14" model="crossovered.budget.lines">
165 <field name="analytic_account_id" ref="account.analytic_seagate_p2"/>165 <field name="analytic_account_id" ref="analytic.analytic_seagate_p2"/>
166 <field name="general_budget_id" ref="account_budget_post_purchase0"/>166 <field name="general_budget_id" ref="account_budget_post_purchase0"/>
167 <field eval="str(time.localtime(time.time())[0]+1)+'-09-01'" name="date_from"/>167 <field eval="str(time.localtime(time.time())[0]+1)+'-09-01'" name="date_from"/>
168 <field eval="-1000.0" name="planned_amount"/>168 <field eval="-1000.0" name="planned_amount"/>
@@ -170,7 +170,7 @@
170 <field eval="str(time.localtime(time.time())[0]+1)+'-09-15'" name="date_to"/>170 <field eval="str(time.localtime(time.time())[0]+1)+'-09-15'" name="date_to"/>
171 </record>171 </record>
172 <record id="crossovered_budget_lines_15" model="crossovered.budget.lines">172 <record id="crossovered_budget_lines_15" model="crossovered.budget.lines">
173 <field name="analytic_account_id" ref="account.analytic_seagate_p2"/>173 <field name="analytic_account_id" ref="analytic.analytic_seagate_p2"/>
174 <field name="general_budget_id" ref="account_budget_post_sales0"/>174 <field name="general_budget_id" ref="account_budget_post_sales0"/>
175 <field eval="str(time.localtime(time.time())[0]+1)+'-09-16'" name="date_from"/>175 <field eval="str(time.localtime(time.time())[0]+1)+'-09-16'" name="date_from"/>
176 <field eval="10000.0" name="planned_amount"/>176 <field eval="10000.0" name="planned_amount"/>
@@ -178,7 +178,7 @@
178 <field eval="str(time.localtime(time.time())[0]+1)+'-09-30'" name="date_to"/>178 <field eval="str(time.localtime(time.time())[0]+1)+'-09-30'" name="date_to"/>
179 </record>179 </record>
180 <record id="crossovered_budget_lines_16" model="crossovered.budget.lines">180 <record id="crossovered_budget_lines_16" model="crossovered.budget.lines">
181 <field name="analytic_account_id" ref="account.analytic_seagate_p2"/>181 <field name="analytic_account_id" ref="analytic.analytic_seagate_p2"/>
182 <field name="general_budget_id" ref="account_budget_post_sales0"/>182 <field name="general_budget_id" ref="account_budget_post_sales0"/>
183 <field eval="str(time.localtime(time.time())[0]+1)+'-10-01'" name="date_from"/>183 <field eval="str(time.localtime(time.time())[0]+1)+'-10-01'" name="date_from"/>
184 <field eval="10000.0" name="planned_amount"/>184 <field eval="10000.0" name="planned_amount"/>
185185
=== modified file 'account_budget/test/account_budget.yml'
--- account_budget/test/account_budget.yml 2011-01-14 00:11:01 +0000
+++ account_budget/test/account_budget.yml 2014-04-29 11:49:43 +0000
@@ -16,12 +16,12 @@
16-16-
17 !record {model: crossovered.budget, id: crossovered_budget_budget0}:17 !record {model: crossovered.budget, id: crossovered_budget_budget0}:
18 crossovered_budget_line:18 crossovered_budget_line:
19 - analytic_account_id: account.analytic_consultancy19 - analytic_account_id: analytic.analytic_consultancy
20 date_from: !eval "'%s-01-01' %(datetime.now().year+1)"20 date_from: !eval "'%s-01-01' %(datetime.now().year+1)"
21 date_to: !eval "'%s-12-31' %(datetime.now().year+1)"21 date_to: !eval "'%s-12-31' %(datetime.now().year+1)"
22 general_budget_id: account_budget.account_budget_post_purchase022 general_budget_id: account_budget.account_budget_post_purchase0
23 planned_amount: 10000.023 planned_amount: 10000.0
24 - analytic_account_id: account.analytic_super_product_trainings24 - analytic_account_id: analytic.analytic_super_product_trainings
25 date_from: !eval "'%s-09-01' %(datetime.now().year+1)"25 date_from: !eval "'%s-09-01' %(datetime.now().year+1)"
26 date_to: !eval "'%s-09-30' %(datetime.now().year+1)"26 date_to: !eval "'%s-09-30' %(datetime.now().year+1)"
27 general_budget_id: account_budget.account_budget_post_sales027 general_budget_id: account_budget.account_budget_post_sales0
2828
=== modified file 'account_budget/test/account_budget_report.yml'
--- account_budget/test/account_budget_report.yml 2014-04-02 16:40:53 +0000
+++ account_budget/test/account_budget_report.yml 2014-04-29 11:49:43 +0000
@@ -2,7 +2,7 @@
2 Print the Analytic Budget Report through wizard2 Print the Analytic Budget Report through wizard
3-3-
4 !python {model: account.analytic.account}: |4 !python {model: account.analytic.account}: |
5 ctx = {'model': 'account.analytic.account','active_ids': [ref('account.analytic_root')]}5 ctx = {'model': 'account.analytic.account','active_ids': [ref('analytic.analytic_root')]}
6 from openerp.tools import test_reports6 from openerp.tools import test_reports
7 test_reports.try_report_action(cr, uid, 'action_account_budget_analytic',wiz_data={}, context=ctx, our_module='account_budget')7 test_reports.try_report_action(cr, uid, 'action_account_budget_analytic',wiz_data={}, context=ctx, our_module='account_budget')
88
99
=== modified file 'account_voucher/test/case1_usd_usd.yml'
--- account_voucher/test/case1_usd_usd.yml 2013-10-27 12:31:04 +0000
+++ account_voucher/test/case1_usd_usd.yml 2014-04-29 11:49:43 +0000
@@ -60,7 +60,7 @@
60 name: Bank Journal(USD)60 name: Bank Journal(USD)
61 code: BUSD61 code: BUSD
62 type: bank62 type: bank
63 analytic_journal_id: account.sit63 analytic_journal_id: analytic.sit
64 sequence_id: account.sequence_bank_journal64 sequence_id: account.sequence_bank_journal
65 default_debit_account_id: account_cash_usd_id65 default_debit_account_id: account_cash_usd_id
66 default_credit_account_id: account_cash_usd_id66 default_credit_account_id: account_cash_usd_id
6767
=== modified file 'account_voucher/test/case1_usd_usd_payment_rate.yml'
--- account_voucher/test/case1_usd_usd_payment_rate.yml 2013-05-14 12:03:41 +0000
+++ account_voucher/test/case1_usd_usd_payment_rate.yml 2014-04-29 11:49:43 +0000
@@ -60,7 +60,7 @@
60 name: Bank Journal(USD)60 name: Bank Journal(USD)
61 code: BUSD61 code: BUSD
62 type: bank62 type: bank
63 analytic_journal_id: account.sit63 analytic_journal_id: analytic.sit
64 sequence_id: account.sequence_bank_journal64 sequence_id: account.sequence_bank_journal
65 default_debit_account_id: account_cash_usd_id65 default_debit_account_id: account_cash_usd_id
66 default_credit_account_id: account_cash_usd_id66 default_credit_account_id: account_cash_usd_id
6767
=== modified file 'account_voucher/test/case2_usd_eur_debtor_in_eur.yml'
--- account_voucher/test/case2_usd_eur_debtor_in_eur.yml 2013-10-27 12:31:04 +0000
+++ account_voucher/test/case2_usd_eur_debtor_in_eur.yml 2014-04-29 11:49:43 +0000
@@ -54,7 +54,7 @@
54 name: Bank Journal(EUR)54 name: Bank Journal(EUR)
55 code: BEUR55 code: BEUR
56 type: bank56 type: bank
57 analytic_journal_id: account.sit57 analytic_journal_id: analytic.sit
58 sequence_id: account.sequence_bank_journal58 sequence_id: account.sequence_bank_journal
59 default_debit_account_id: account.cash59 default_debit_account_id: account.cash
60 default_credit_account_id: account.cash60 default_credit_account_id: account.cash
@@ -66,7 +66,7 @@
66 name: Bank Journal(USD)66 name: Bank Journal(USD)
67 code: BUSD67 code: BUSD
68 type: bank68 type: bank
69 analytic_journal_id: account.sit69 analytic_journal_id: analytic.sit
70 sequence_id: account.sequence_bank_journal70 sequence_id: account.sequence_bank_journal
71 default_debit_account_id: account_cash_usd_id71 default_debit_account_id: account_cash_usd_id
72 default_credit_account_id: account_cash_usd_id72 default_credit_account_id: account_cash_usd_id
7373
=== modified file 'account_voucher/test/case2_usd_eur_debtor_in_usd.yml'
--- account_voucher/test/case2_usd_eur_debtor_in_usd.yml 2013-10-27 12:31:04 +0000
+++ account_voucher/test/case2_usd_eur_debtor_in_usd.yml 2014-04-29 11:49:43 +0000
@@ -54,7 +54,7 @@
54 name: Bank Journal(EUR)54 name: Bank Journal(EUR)
55 code: BEUR55 code: BEUR
56 type: bank56 type: bank
57 analytic_journal_id: account.sit57 analytic_journal_id: analytic.sit
58 sequence_id: account.sequence_bank_journal58 sequence_id: account.sequence_bank_journal
59 default_debit_account_id: account.cash59 default_debit_account_id: account.cash
60 default_credit_account_id: account.cash60 default_credit_account_id: account.cash
@@ -66,7 +66,7 @@
66 name: Bank Journal(USD)66 name: Bank Journal(USD)
67 code: BUSD67 code: BUSD
68 type: bank68 type: bank
69 analytic_journal_id: account.sit69 analytic_journal_id: analytic.sit
70 sequence_id: account.sequence_bank_journal70 sequence_id: account.sequence_bank_journal
71 default_debit_account_id: account_cash_usd_id71 default_debit_account_id: account_cash_usd_id
72 default_credit_account_id: account_cash_usd_id72 default_credit_account_id: account_cash_usd_id
7373
=== modified file 'account_voucher/test/case3_eur_eur.yml'
--- account_voucher/test/case3_eur_eur.yml 2013-10-27 12:31:04 +0000
+++ account_voucher/test/case3_eur_eur.yml 2014-04-29 11:49:43 +0000
@@ -22,7 +22,7 @@
22 name: Bank Journal(EUR)22 name: Bank Journal(EUR)
23 code: BEUR23 code: BEUR
24 type: bank24 type: bank
25 analytic_journal_id: account.sit25 analytic_journal_id: analytic.sit
26 sequence_id: account.sequence_bank_journal26 sequence_id: account.sequence_bank_journal
27 default_debit_account_id: account.cash27 default_debit_account_id: account.cash
28 default_credit_account_id: account.cash28 default_credit_account_id: account.cash
2929
=== modified file 'account_voucher/test/case4_cad_chf.yml'
--- account_voucher/test/case4_cad_chf.yml 2013-10-27 12:31:04 +0000
+++ account_voucher/test/case4_cad_chf.yml 2014-04-29 11:49:43 +0000
@@ -55,7 +55,7 @@
55 name: Bank Journal(CHF)55 name: Bank Journal(CHF)
56 code: BCHF56 code: BCHF
57 type: bank57 type: bank
58 analytic_journal_id: account.sit58 analytic_journal_id: analytic.sit
59 sequence_id: account.sequence_bank_journal59 sequence_id: account.sequence_bank_journal
60 default_debit_account_id: account_cash_chf_id60 default_debit_account_id: account_cash_chf_id
61 default_credit_account_id: account_cash_chf_id61 default_credit_account_id: account_cash_chf_id
6262
=== modified file 'account_voucher/test/case5_suppl_usd_usd.yml'
--- account_voucher/test/case5_suppl_usd_usd.yml 2013-10-27 12:31:04 +0000
+++ account_voucher/test/case5_suppl_usd_usd.yml 2014-04-29 11:49:43 +0000
@@ -41,7 +41,7 @@
41 name: Bank Journal(EUR)41 name: Bank Journal(EUR)
42 code: BEUR42 code: BEUR
43 type: bank43 type: bank
44 analytic_journal_id: account.sit44 analytic_journal_id: analytic.sit
45 sequence_id: account.sequence_bank_journal45 sequence_id: account.sequence_bank_journal
46 default_debit_account_id: account.cash46 default_debit_account_id: account.cash
47 default_credit_account_id: account.cash47 default_credit_account_id: account.cash
@@ -53,7 +53,7 @@
53 name: Bank Journal(USD)53 name: Bank Journal(USD)
54 code: BUSD54 code: BUSD
55 type: bank55 type: bank
56 analytic_journal_id: account.sit56 analytic_journal_id: analytic.sit
57 sequence_id: account.sequence_bank_journal57 sequence_id: account.sequence_bank_journal
58 default_debit_account_id: account_cash_usd_id258 default_debit_account_id: account_cash_usd_id2
59 default_credit_account_id: account_cash_usd_id259 default_credit_account_id: account_cash_usd_id2
6060
=== modified file 'account_voucher/test/case_eur_usd.yml'
--- account_voucher/test/case_eur_usd.yml 2013-10-27 12:31:04 +0000
+++ account_voucher/test/case_eur_usd.yml 2014-04-29 11:49:43 +0000
@@ -39,7 +39,7 @@
39 name: Bank Journal Test(USD)39 name: Bank Journal Test(USD)
40 code: BEUSD40 code: BEUSD
41 type: bank41 type: bank
42 analytic_journal_id: account.sit42 analytic_journal_id: analytic.sit
43 sequence_id: account.sequence_bank_journal43 sequence_id: account.sequence_bank_journal
44 default_debit_account_id: account_eur_usd_id44 default_debit_account_id: account_eur_usd_id
45 default_credit_account_id: account_eur_usd_id45 default_credit_account_id: account_eur_usd_id
4646
=== modified file 'analytic/__init__.py'
--- analytic/__init__.py 2011-01-14 00:11:01 +0000
+++ analytic/__init__.py 2014-04-29 11:49:43 +0000
@@ -19,7 +19,9 @@
19#19#
20##############################################################################20##############################################################################
2121
22import analytic22import models
23import report
24import wizard
2325
24# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:26# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
2527
2628
=== modified file 'analytic/__openerp__.py'
--- analytic/__openerp__.py 2012-12-19 17:32:15 +0000
+++ analytic/__openerp__.py 2014-04-29 11:49:43 +0000
@@ -37,11 +37,27 @@
37 'data': [37 'data': [
38 'security/analytic_security.xml',38 'security/analytic_security.xml',
39 'security/ir.model.access.csv',39 'security/ir.model.access.csv',
40 'analytic_sequence.xml',40 'data/analytic_sequence.xml',
41 'analytic_view.xml',41 'views/analytic_view.xml',
42 'analytic_data.xml',42 'data/analytic_data.xml',
43 ],43 'wizard/project_account_analytic_line_view.xml',
44 'demo': [],44 'analytic_report.xml',
45 'wizard/account_analytic_balance_report_view.xml',
46 'wizard/account_analytic_cost_ledger_view.xml',
47 'wizard/account_analytic_inverted_balance_report.xml',
48 'wizard/account_analytic_journal_report_view.xml',
49 'wizard/account_analytic_cost_ledger_for_journal_report_view.xml',
50 'wizard/account_analytic_chart_view.xml',
51 'views/report_analyticbalance.xml',
52 'views/report_analyticjournal.xml',
53 'views/report_analyticcostledgerquantity.xml',
54 'views/report_analyticcostledger.xml',
55 'views/report_invertedanalyticbalance.xml',
56 ],
57 'demo': [
58 'data/analytic_demo.xml',
59 'data/analytic_account_demo.xml',
60 ],
45 'installable': True,61 'installable': True,
46 'auto_install': False,62 'auto_install': False,
47}63}
4864
=== renamed file 'account/project/project_report.xml' => 'analytic/analytic_report.xml'
=== added directory 'analytic/data'
=== renamed file 'account/project/analytic_account_demo.xml' => 'analytic/data/analytic_account_demo.xml'
=== renamed file 'analytic/analytic_data.xml' => 'analytic/data/analytic_data.xml'
=== renamed file 'account/project/project_demo.xml' => 'analytic/data/analytic_demo.xml'
=== renamed file 'analytic/analytic_sequence.xml' => 'analytic/data/analytic_sequence.xml'
=== added directory 'analytic/models'
=== added file 'analytic/models/__init__.py'
--- analytic/models/__init__.py 1970-01-01 00:00:00 +0000
+++ analytic/models/__init__.py 2014-04-29 11:49:43 +0000
@@ -0,0 +1,3 @@
1# -*- coding: utf-8 -*-
2
3import analytic
0\ No newline at end of file4\ No newline at end of file
15
=== renamed file 'analytic/analytic.py' => 'analytic/models/analytic.py'
--- analytic/analytic.py 2014-04-01 12:36:57 +0000
+++ analytic/models/analytic.py 2014-04-29 11:49:43 +0000
@@ -321,7 +321,7 @@
321 'account_id': fields.many2one('account.analytic.account', 'Analytic Account', required=True, ondelete='restrict', select=True, domain=[('type','<>','view')]),321 'account_id': fields.many2one('account.analytic.account', 'Analytic Account', required=True, ondelete='restrict', select=True, domain=[('type','<>','view')]),
322 'user_id': fields.many2one('res.users', 'User'),322 'user_id': fields.many2one('res.users', 'User'),
323 'company_id': fields.related('account_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),323 'company_id': fields.related('account_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),
324324 'journal_id': fields.many2one('account.analytic.journal', 'Analytic Journal', required=True, ondelete='restrict', select=True),
325 }325 }
326326
327 def _get_default_date(self, cr, uid, context=None):327 def _get_default_date(self, cr, uid, context=None):
@@ -349,4 +349,21 @@
349 (_check_no_view, 'You cannot create analytic line on view account.', ['account_id']),349 (_check_no_view, 'You cannot create analytic line on view account.', ['account_id']),
350 ]350 ]
351351
352class account_analytic_journal(osv.osv):
353 _name = 'account.analytic.journal'
354 _description = 'Analytic Journal'
355 _columns = {
356 'name': fields.char('Journal Name', size=64, required=True),
357 'code': fields.char('Journal Code', size=8),
358 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the analytic journal without removing it."),
359 'type': fields.selection([('sale','Sale'), ('purchase','Purchase'), ('cash','Cash'), ('general','General'), ('situation','Situation')], 'Type', size=32, required=True, help="Gives the type of the analytic journal. When it needs for a document (eg: an invoice) to create analytic entries, OpenERP will look for a matching journal of the same type."),
360 'company_id': fields.many2one('res.company', 'Company', required=True),
361 'line_ids': fields.one2many('account.analytic.line', 'journal_id', 'Lines'),
362 }
363 _defaults = {
364 'active': True,
365 'type': 'general',
366 'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id,
367 }
368
352# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:369# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
353370
=== renamed directory 'account/project/report' => 'analytic/report'
=== modified file 'analytic/report/__init__.py'
--- account/project/report/__init__.py 2011-01-14 00:11:01 +0000
+++ analytic/report/__init__.py 2014-04-29 11:49:43 +0000
@@ -21,9 +21,9 @@
2121
22import analytic_journal22import analytic_journal
23import analytic_balance23import analytic_balance
24import inverted_analytic_balance24import analytic_inverted_balance
25import cost_ledger25import analytic_cost_ledger
26import quantity_cost_ledger26import analytic_quantity_cost_ledger
2727
28# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:28# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
2929
3030
=== modified file 'analytic/report/analytic_balance.py'
--- account/project/report/analytic_balance.py 2014-04-02 16:40:53 +0000
+++ analytic/report/analytic_balance.py 2014-04-29 11:49:43 +0000
@@ -151,7 +151,7 @@
151class report_analyticbalance(osv.AbstractModel):151class report_analyticbalance(osv.AbstractModel):
152 _name = 'report.account.report_analyticbalance'152 _name = 'report.account.report_analyticbalance'
153 _inherit = 'report.abstract_report'153 _inherit = 'report.abstract_report'
154 _template = 'account.report_analyticbalance'154 _template = 'analytic.report_analyticbalance'
155 _wrapped_report_class = account_analytic_balance155 _wrapped_report_class = account_analytic_balance
156156
157# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:157# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
158158
=== added file 'analytic/report/analytic_cost_ledger.py'
--- analytic/report/analytic_cost_ledger.py 1970-01-01 00:00:00 +0000
+++ analytic/report/analytic_cost_ledger.py 2014-04-29 11:49:43 +0000
@@ -0,0 +1,111 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# OpenERP, Open Source Management Solution
5# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
6#
7# This program is free software: you can redistribute it and/or modify
8# it under the terms of the GNU Affero General Public License as
9# published by the Free Software Foundation, either version 3 of the
10# License, or (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU Affero General Public License for more details.
16#
17# You should have received a copy of the GNU Affero General Public License
18# along with this program. If not, see <http://www.gnu.org/licenses/>.
19#
20##############################################################################
21
22import time
23from openerp.osv import osv
24from openerp.report import report_sxw
25
26
27class account_analytic_cost_ledger(report_sxw.rml_parse):
28 def __init__(self, cr, uid, name, context):
29 super(account_analytic_cost_ledger, self).__init__(cr, uid, name, context=context)
30 self.localcontext.update( {
31 'time': time,
32 'lines_g': self._lines_g,
33 'lines_a': self._lines_a,
34 'account_sum_debit': self._account_sum_debit,
35 'account_sum_credit': self._account_sum_credit,
36 'account_sum_balance': self._account_sum_balance,
37 'sum_debit': self._sum_debit,
38 'sum_credit': self._sum_credit,
39 'sum_balance': self._sum_balance,
40 })
41 self.children = {} # a memo for the method _get_children
42
43 def _get_children(self, accounts):
44 """ return all children accounts of the given accounts
45 :param accounts: list of browse records of 'account.analytic.account'
46 :return: tuple of account ids
47 """
48 analytic_obj = self.pool.get('account.analytic.account')
49 res = set()
50 for account in accounts:
51 if account.id not in self.children:
52 self.children[account.id] = analytic_obj.search(self.cr, self.uid, [('parent_id', 'child_of', [account.id])])
53 res.update(self.children[account.id])
54 return tuple(res)
55
56 def _lines_g(self, account, date1, date2):
57 self.cr.execute("SELECT sum(aal.amount) AS balance, aa.code AS code, aa.name AS name, aa.id AS id \
58 FROM account_account AS aa, account_analytic_line AS aal \
59 WHERE (aal.account_id IN %s) AND (aal.date>=%s) AND (aal.date<=%s) AND (aal.general_account_id=aa.id) AND aa.active \
60 GROUP BY aa.code, aa.name, aa.id ORDER BY aa.code", (self._get_children([account]), date1, date2))
61 res = self.cr.dictfetchall()
62 for r in res:
63 r['debit'] = r['balance'] if r['balance'] > 0 else 0.0
64 r['credit'] = -r['balance'] if r['balance'] < 0 else 0.0
65 return res
66
67 def _lines_a(self, general_account, account, date1, date2):
68 self.cr.execute("SELECT aal.name AS name, aal.code AS code, aal.amount AS balance, aal.date AS date, aaj.code AS cj FROM account_analytic_line AS aal, account_analytic_journal AS aaj \
69 WHERE (aal.general_account_id=%s) AND (aal.account_id IN %s) AND (aal.date>=%s) AND (aal.date<=%s) \
70 AND (aal.journal_id=aaj.id) \
71 ORDER BY aal.date, aaj.code, aal.code", (general_account['id'], self._get_children([account]), date1, date2))
72 res = self.cr.dictfetchall()
73 for r in res:
74 r['debit'] = r['balance'] if r['balance'] > 0 else 0.0
75 r['credit'] = -r['balance'] if r['balance'] < 0 else 0.0
76 return res
77
78 def _account_sum_debit(self, account, date1, date2):
79 return self._sum_debit([account], date1, date2)
80
81 def _account_sum_credit(self, account, date1, date2):
82 return self._sum_credit([account], date1, date2)
83
84 def _account_sum_balance(self, account, date1, date2):
85 debit = self._account_sum_debit(account, date1, date2)
86 credit = self._account_sum_credit(account, date1, date2)
87 return (debit-credit)
88
89 def _sum_debit(self, accounts, date1, date2):
90 self.cr.execute("SELECT sum(amount) FROM account_analytic_line WHERE account_id IN %s AND date>=%s AND date<=%s AND amount>0",
91 (self._get_children(accounts), date1, date2,))
92 return self.cr.fetchone()[0] or 0.0
93
94 def _sum_credit(self, accounts, date1, date2):
95 self.cr.execute("SELECT -sum(amount) FROM account_analytic_line WHERE account_id IN %s AND date>=%s AND date<=%s AND amount<0",
96 (self._get_children(accounts), date1, date2,))
97 return self.cr.fetchone()[0] or 0.0
98
99 def _sum_balance(self, accounts, date1, date2):
100 debit = self._sum_debit(accounts, date1, date2)
101 credit = self._sum_credit(accounts, date1, date2)
102 return (debit-credit)
103
104
105class report_analyticcostledger(osv.AbstractModel):
106 _name = 'report.account.report_analyticcostledger'
107 _inherit = 'report.abstract_report'
108 _template = 'analytic.report_analyticcostledger'
109 _wrapped_report_class = account_analytic_cost_ledger
110
111# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
0112
=== added file 'analytic/report/analytic_inverted_balance.py'
--- analytic/report/analytic_inverted_balance.py 1970-01-01 00:00:00 +0000
+++ analytic/report/analytic_inverted_balance.py 2014-04-29 11:49:43 +0000
@@ -0,0 +1,130 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# OpenERP, Open Source Management Solution
5# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
6#
7# This program is free software: you can redistribute it and/or modify
8# it under the terms of the GNU Affero General Public License as
9# published by the Free Software Foundation, either version 3 of the
10# License, or (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU Affero General Public License for more details.
16#
17# You should have received a copy of the GNU Affero General Public License
18# along with this program. If not, see <http://www.gnu.org/licenses/>.
19#
20##############################################################################
21
22import time
23from openerp.osv import osv
24from openerp.report import report_sxw
25
26class account_inverted_analytic_balance(report_sxw.rml_parse):
27 def __init__(self, cr, uid, name, context):
28 super(account_inverted_analytic_balance, self).__init__(cr, uid, name, context=context)
29 self.localcontext.update( {
30 'time': time,
31 'lines_g': self._lines_g,
32 'lines_a': self._lines_a,
33 'sum_debit': self._sum_debit,
34 'sum_credit': self._sum_credit,
35 'sum_balance': self._sum_balance,
36 'sum_quantity': self._sum_quantity,
37 })
38
39 def _lines_g(self, accounts, date1, date2):
40 ids = map(lambda x: x.id, accounts)
41 self.cr.execute("SELECT aa.name AS name, aa.code AS code, "
42 "sum(aal.amount) AS balance, "
43 "sum(aal.unit_amount) AS quantity, aa.id AS id \
44 FROM account_analytic_line AS aal, account_account AS aa \
45 WHERE (aal.general_account_id=aa.id) "
46 "AND (aal.account_id IN %s) "
47 "AND (date>=%s) AND (date<=%s) AND aa.active \
48 GROUP BY aal.general_account_id, aa.name, aa.code, aal.code, aa.id "
49 "ORDER BY aal.code",
50 (tuple(ids), date1, date2))
51 res = self.cr.dictfetchall()
52 for r in res:
53 if r['balance'] > 0:
54 r['debit'] = r['balance']
55 r['credit'] = 0.0
56 elif r['balance'] < 0:
57 r['debit'] = 0.0
58 r['credit'] = -r['balance']
59 else:
60 r['debit'] = 0.0
61 r['credit'] = 0.0
62 return res
63
64 def _lines_a(self, accounts, general_account_id, date1, date2):
65 ids = map(lambda x: x.id, accounts)
66 self.cr.execute("SELECT sum(aal.amount) AS balance, "
67 "sum(aal.unit_amount) AS quantity, "
68 "aaa.code AS code, aaa.name AS name, account_id \
69 FROM account_analytic_line AS aal, "
70 "account_analytic_account AS aaa \
71 WHERE aal.account_id=aaa.id AND aal.account_id IN %s "
72 "AND aal.general_account_id=%s AND aal.date>=%s "
73 "AND aal.date<=%s \
74 GROUP BY aal.account_id, general_account_id, aaa.code, aaa.name "
75 "ORDER BY aal.account_id",
76 (tuple(ids), general_account_id, date1, date2))
77 res = self.cr.dictfetchall()
78
79 aaa_obj = self.pool.get('account.analytic.account')
80 res2 = aaa_obj.read(self.cr, self.uid, ids, ['complete_name'])
81 complete_name = {}
82 for r in res2:
83 complete_name[r['id']] = r['complete_name']
84 for r in res:
85 r['complete_name'] = complete_name[r['account_id']]
86 if r['balance'] > 0:
87 r['debit'] = r['balance']
88 r['credit'] = 0.0
89 elif r['balance'] < 0:
90 r['debit'] = 0.0
91 r['credit'] = -r['balance']
92 else:
93 r['debit'] = 0.0
94 r['credit'] = 0.0
95 return res
96
97 def _sum_debit(self, accounts, date1, date2):
98 ids = map(lambda x: x.id, accounts)
99 self.cr.execute("SELECT sum(amount) \
100 FROM account_analytic_line \
101 WHERE account_id IN %s AND date>=%s AND date<=%s AND amount>0", (tuple(ids),date1, date2,))
102 return self.cr.fetchone()[0] or 0.0
103
104 def _sum_credit(self, accounts, date1, date2):
105 ids = map(lambda x: x.id, accounts)
106 self.cr.execute("SELECT -sum(amount) \
107 FROM account_analytic_line \
108 WHERE account_id IN %s AND date>=%s AND date<=%s AND amount<0", (tuple(ids),date1, date2,))
109 return self.cr.fetchone()[0] or 0.0
110
111 def _sum_balance(self, accounts, date1, date2):
112 debit = self._sum_debit(accounts, date1, date2)
113 credit = self._sum_credit(accounts, date1, date2)
114 return (debit-credit)
115
116 def _sum_quantity(self, accounts, date1, date2):
117 ids = map(lambda x: x.id, accounts)
118 self.cr.execute("SELECT sum(unit_amount) \
119 FROM account_analytic_line \
120 WHERE account_id IN %s AND date>=%s AND date<=%s", (tuple(ids),date1, date2,))
121 return self.cr.fetchone()[0] or 0.0
122
123
124class report_invertedanalyticbalance(osv.AbstractModel):
125 _name = 'report.account.report_invertedanalyticbalance'
126 _inherit = 'report.abstract_report'
127 _template = 'analytic.report_invertedanalyticbalance'
128 _wrapped_report_class = account_inverted_analytic_balance
129
130# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
0131
=== modified file 'analytic/report/analytic_journal.py'
--- account/project/report/analytic_journal.py 2014-04-02 16:40:53 +0000
+++ analytic/report/analytic_journal.py 2014-04-29 11:49:43 +0000
@@ -62,7 +62,7 @@
62class report_analyticjournal(osv.AbstractModel):62class report_analyticjournal(osv.AbstractModel):
63 _name = 'report.account.report_analyticjournal'63 _name = 'report.account.report_analyticjournal'
64 _inherit = 'report.abstract_report'64 _inherit = 'report.abstract_report'
65 _template = 'account.report_analyticjournal'65 _template = 'analytic.report_analyticjournal'
66 _wrapped_report_class = account_analytic_journal66 _wrapped_report_class = account_analytic_journal
6767
68# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:68# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
6969
=== added file 'analytic/report/analytic_quantity_cost_ledger.py'
--- analytic/report/analytic_quantity_cost_ledger.py 1970-01-01 00:00:00 +0000
+++ analytic/report/analytic_quantity_cost_ledger.py 2014-04-29 11:49:43 +0000
@@ -0,0 +1,127 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# OpenERP, Open Source Management Solution
5# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
6#
7# This program is free software: you can redistribute it and/or modify
8# it under the terms of the GNU Affero General Public License as
9# published by the Free Software Foundation, either version 3 of the
10# License, or (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU Affero General Public License for more details.
16#
17# You should have received a copy of the GNU Affero General Public License
18# along with this program. If not, see <http://www.gnu.org/licenses/>.
19#
20##############################################################################
21import time
22from openerp.osv import osv
23from openerp.report import report_sxw
24
25
26class account_analytic_quantity_cost_ledger(report_sxw.rml_parse):
27 def __init__(self, cr, uid, name, context):
28 super(account_analytic_quantity_cost_ledger, self).__init__(cr, uid, name, context=context)
29 self.localcontext.update( {
30 'time': time,
31 'lines_g': self._lines_g,
32 'lines_a': self._lines_a,
33 'sum_quantity': self._sum_quantity,
34 'account_sum_quantity': self._account_sum_quantity,
35 })
36
37 def _lines_g(self, account_id, date1, date2, journals):
38 if not journals:
39 self.cr.execute("SELECT sum(aal.unit_amount) AS quantity, \
40 aa.code AS code, aa.name AS name, aa.id AS id \
41 FROM account_account AS aa, account_analytic_line AS aal \
42 WHERE (aal.account_id=%s) AND (aal.date>=%s) \
43 AND (aal.date<=%s) AND (aal.general_account_id=aa.id) \
44 AND aa.active \
45 GROUP BY aa.code, aa.name, aa.id ORDER BY aa.code",
46 (account_id, date1, date2))
47 else:
48 journal_ids = journals
49 self.cr.execute("SELECT sum(aal.unit_amount) AS quantity, \
50 aa.code AS code, aa.name AS name, aa.id AS id \
51 FROM account_account AS aa, account_analytic_line AS aal \
52 WHERE (aal.account_id=%s) AND (aal.date>=%s) \
53 AND (aal.date<=%s) AND (aal.general_account_id=aa.id) \
54 AND aa.active \
55 AND (aal.journal_id IN %s ) \
56 GROUP BY aa.code, aa.name, aa.id ORDER BY aa.code",
57 (account_id, date1, date2, tuple(journal_ids)))
58 res = self.cr.dictfetchall()
59 return res
60
61 def _lines_a(self, general_account_id, account_id, date1, date2, journals):
62 if not journals:
63 self.cr.execute("SELECT aal.name AS name, aal.code AS code, \
64 aal.unit_amount AS quantity, aal.date AS date, \
65 aaj.code AS cj \
66 FROM account_analytic_line AS aal, \
67 account_analytic_journal AS aaj \
68 WHERE (aal.general_account_id=%s) AND (aal.account_id=%s) \
69 AND (aal.date>=%s) AND (aal.date<=%s) \
70 AND (aal.journal_id=aaj.id) \
71 ORDER BY aal.date, aaj.code, aal.code",
72 (general_account_id, account_id, date1, date2))
73 else:
74 journal_ids = journals
75 self.cr.execute("SELECT aal.name AS name, aal.code AS code, \
76 aal.unit_amount AS quantity, aal.date AS date, \
77 aaj.code AS cj \
78 FROM account_analytic_line AS aal, \
79 account_analytic_journal AS aaj \
80 WHERE (aal.general_account_id=%s) AND (aal.account_id=%s) \
81 AND (aal.date>=%s) AND (aal.date<=%s) \
82 AND (aal.journal_id=aaj.id) AND (aaj.id IN %s) \
83 ORDER BY aal.date, aaj.code, aal.code",
84 (general_account_id, account_id, date1, date2,tuple(journal_ids)))
85 res = self.cr.dictfetchall()
86 return res
87
88 def _account_sum_quantity(self, account_id, date1, date2, journals):
89 if not journals:
90 self.cr.execute("SELECT sum(unit_amount) \
91 FROM account_analytic_line \
92 WHERE account_id=%s AND date>=%s AND date<=%s",
93 (account_id, date1, date2))
94 else:
95 journal_ids = journals
96 self.cr.execute("SELECT sum(unit_amount) \
97 FROM account_analytic_line \
98 WHERE account_id = %s AND date >= %s AND date <= %s \
99 AND journal_id IN %s",
100 (account_id, date1, date2, tuple(journal_ids),))
101 return self.cr.fetchone()[0] or 0.0
102
103 def _sum_quantity(self, accounts, date1, date2, journals):
104 ids = map(lambda x: x.id, accounts)
105 if not ids:
106 return 0.0
107 if not journals:
108 self.cr.execute("SELECT sum(unit_amount) \
109 FROM account_analytic_line \
110 WHERE account_id IN %s AND date>=%s AND date<=%s",
111 (tuple(ids), date1, date2,))
112 else:
113 journal_ids = journals
114 self.cr.execute("SELECT sum(unit_amount) \
115 FROM account_analytic_line \
116 WHERE account_id IN %s AND date >= %s AND date <= %s \
117 AND journal_id IN %s",(tuple(ids), date1, date2, tuple(journal_ids)))
118 return self.cr.fetchone()[0] or 0.0
119
120
121class report_analyticcostledgerquantity(osv.AbstractModel):
122 _name = 'report.account.report_analyticcostledgerquantity'
123 _inherit = 'report.abstract_report'
124 _template = 'analytic.report_analyticcostledgerquantity'
125 _wrapped_report_class = account_analytic_quantity_cost_ledger
126
127# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
0128
=== renamed directory 'account/project/views' => 'analytic/views'
=== renamed file 'analytic/analytic_view.xml' => 'analytic/views/analytic_view.xml'
--- analytic/analytic_view.xml 2014-04-01 12:36:57 +0000
+++ analytic/views/analytic_view.xml 2014-04-29 11:49:43 +0000
@@ -62,5 +62,320 @@
62 </form>62 </form>
63 </field>63 </field>
64 </record>64 </record>
65
66 <record id="view_account_analytic_account_list" model="ir.ui.view">
67 <field name="name">account.analytic.account.list</field>
68 <field name="model">account.analytic.account</field>
69 <field eval="8" name="priority"/>
70 <field name="arch" type="xml">
71 <tree toolbar="1" colors="red:state=='pending';grey:state in ('cancelled','close');blue:type=='view'" string="Analytic Accounts">
72 <field name="complete_name"/>
73 <field name="partner_id"/>
74 <field name="code"/>
75 <field name="date_start"/>
76 <field name="date"/>
77 <field name="user_id" invisible="1"/>
78 <field name="manager_id"/>
79 <field name="parent_id" invisible="1"/>
80 <field name="state" invisible="1"/>
81 <field name="type" invisible="1"/>
82 <field name="template_id" invisible="1"/>
83 <field name="company_id" groups="base.group_multi_company"/>
84 </tree>
85 </field>
86 </record>
87
88 <record id="view_account_analytic_account_search" model="ir.ui.view">
89 <field name="name">account.analytic.account.search</field>
90 <field name="model">account.analytic.account</field>
91 <field name="arch" type="xml">
92 <search string="Analytic Account">
93 <field name="name" filter_domain="['|', ('name','ilike',self), ('code','ilike',self)]" string="Analytic Account"/>
94 <field name="date"/>
95 <field name="partner_id" filter_domain="[('partner_id','child_of',self)]"/>
96 <field name="manager_id"/>
97 <field name="parent_id"/>
98 <field name="user_id"/>
99 <filter string="Open" domain="[('state','=','open')]" help="Current Accounts"/>
100 <filter string="Pending" domain="[('state','=','pending')]" help="Pending Accounts"/>
101 <group expand="0" string="Group By...">
102 <filter string="Associated Partner" domain="[]" context="{'group_by':'partner_id'}"/>
103 <filter string="Type" domain="[]" context="{'group_by':'type'}"/>
104 <filter string="Template" domain="[]" context="{'group_by':'template_id'}"/>
105 <filter string="Parent Account" domain="[]" context="{'group_by':'parent_id'}"/>
106 <filter string="Status" domain="[]" context="{'group_by':'state'}" groups="base.group_no_one"/>
107 </group>
108 </search>
109 </field>
110 </record>
111
112 <record id="view_account_analytic_account_tree" model="ir.ui.view">
113 <field name="name">account.analytic.account.tree</field>
114 <field name="model">account.analytic.account</field>
115 <field name="field_parent">child_complete_ids</field>
116 <field name="arch" type="xml">
117 <tree colors="blue:state=='pending';grey:state in ('close','cancelled');blue:type=='view'" string="Analytic account" toolbar="1">
118 <field name="name" invisible="1"/>
119 <field name="complete_name"/>
120 <field name="code"/>
121 <field name="debit"/>
122 <field name="credit"/>
123 <field name="balance"/>
124 <field name="state" invisible="1"/>
125 <field name="currency_id" groups="base.group_multi_currency"/>
126 <field name="date" invisible="1"/>
127 <field name="user_id" invisible="1"/>
128 <field name="partner_id" invisible="1"/>
129 <field name="parent_id" invisible="1"/>
130 <field name="type"/>
131 <field name="company_id" groups="base.group_multi_company"/>
132 <field name="template_id" invisible="1"/>
133 </tree>
134 </field>
135 </record>
136
137
138 <record id="action_account_analytic_account_form" model="ir.actions.act_window">
139 <field name="name">Analytic Accounts</field>
140 <field name="type">ir.actions.act_window</field>
141 <field name="res_model">account.analytic.account</field>
142 <field name="context">{}</field> <!-- repair invalid context by setting empty one -->
143 <field name="view_type">form</field>
144 <field name="view_mode">tree,form</field>
145 <field name="view_id" ref="view_account_analytic_account_tree"/>
146 <field name="search_view_id" ref="analytic.view_account_analytic_account_search"/>
147 </record>
148
149 <record id="act_account_renew_view" model="ir.actions.act_window">
150 <field name="name">Accounts to Renew</field>
151 <field name="type">ir.actions.act_window</field>
152 <field name="res_model">account.analytic.account</field>
153 <field name="view_type">form</field>
154 <field name="view_mode">tree,form</field>
155 <field name="domain">[('date','&lt;',time.strftime('%Y-%m-%d %H:%M:%S'))]</field>
156 <field name="filter" eval="True"/>
157 </record>
158
159 <record id="action_account_analytic_account_tree2" model="ir.actions.act_window">
160 <field name="name">Chart of Analytic Accounts</field>
161 <field name="res_model">account.analytic.account</field>
162 <field name="view_type">tree</field>
163 <field name="view_id" ref="view_account_analytic_account_tree"/>
164 <field name="domain">[('parent_id','=',False)]</field>
165 <field name="help" type="html">
166 <p>
167 Click to add a new analytic account.
168 </p><p>
169 The normal chart of accounts has a structure defined by the
170 legal requirement of the country. The analytic chart of
171 accounts structure should reflect your own business needs in
172 term of costs/revenues reporting.
173 </p><p>
174 They are usually structured by contracts, projects, products or
175 departements. Most of the OpenERP operations (invoices,
176 timesheets, expenses, etc) generate analytic entries on the
177 related account.
178 </p>
179 </field>
180 </record>
181
182
183 <record id="view_account_analytic_line_form" model="ir.ui.view">
184 <field name="name">account.analytic.line.form</field>
185 <field name="model">account.analytic.line</field>
186 <field name="priority">1</field>
187 <field name="arch" type="xml">
188 <form string="Analytic Entry" version="7.0">
189 <group>
190 <group>
191 <field name="name"/>
192 <field name="account_id"/>
193 <field name="user_id" context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'account.group_account_invoice']}"/>
194 </group>
195 <group>
196 <field name="date"/>
197 <field name="company_id" groups="base.group_multi_company"/>
198 </group>
199 <group string="Amount">
200 <field name="amount"/>
201 </group>
202 <group string="Product Information">
203 <label for="unit_amount"/>
204 <div>
205 <field name="unit_amount" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)" class="oe_inline"/>
206 </div>
207 </group>
208 </group>
209 </form>
210 </field>
211 </record>
212 <record id="view_account_analytic_line_tree" model="ir.ui.view">
213 <field name="name">account.analytic.line.tree</field>
214 <field name="model">account.analytic.line</field>
215 <field name="arch" type="xml">
216 <tree string="Analytic Entries">
217 <field name="date"/>
218 <field name="name"/>
219 <field name="user_id"/>
220 <field name="amount" sum="Total" invisible="context.get('to_invoice', False)"/>
221 <field name="unit_amount" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)" sum="Total Quantity"/>
222 <field domain="[('type','=','normal')]" name="account_id"/>
223 <field name="company_id" groups="base.group_multi_company"/>
224 </tree>
225 </field>
226 </record>
227 <record id="view_account_analytic_line_filter" model="ir.ui.view">
228 <field name="name">account.analytic.line.select</field>
229 <field name="model">account.analytic.line</field>
230 <field name="arch" type="xml">
231 <search string="Search Analytic Lines">
232 <field name="name" string="Description"/>
233 <field name="date"/>
234 <separator/>
235 <filter string="My Entries" domain="[('user_id','=',uid)]"/>
236 <field name="account_id" filter_domain="[('account_id','child_of',self)]"/>
237 <field name="user_id"/>
238 <group string="Group By..." expand="0">
239 <filter string="Analytic Account" context="{'group_by':'account_id'}"/>
240 <separator/>
241 <filter string="User" context="{'group_by':'user_id'}"/>
242 <separator/>
243 <filter string="Tasks Month" context="{'group_by':'date'}" name="group_date" help="Invoice Tasks by Month"/>
244
245 </group>
246 </search>
247 </field>
248 </record>
249 <record id="action_account_analytic_line_form" model="ir.actions.act_window">
250 <field name="name">Analytic Entries</field>
251 <field name="type">ir.actions.act_window</field>
252 <field name="res_model">account.analytic.line</field>
253 <field name="view_type">form</field>
254 <field name="context">{"search_default_user_id":uid}</field>
255 <field name="view_id" ref="view_account_analytic_line_tree"/>
256 </record>
257
258 <!-- Entries by Line -->
259
260 <record id="action_account_tree1" model="ir.actions.act_window">
261 <field name="name">Analytic Items</field>
262 <field name="res_model">account.analytic.line</field>
263 <field name="view_type">form</field>
264 <field name="view_mode">tree,form</field>
265 <field name="domain">[('account_id','child_of',[active_id])]</field>
266 <field name="context">{'account_id':active_id}</field>
267 <field name="search_view_id" ref="view_account_analytic_line_filter"/>
268 </record>
269 <record id="ir_open_account_analytic_account" model="ir.values">
270 <field eval="'tree_but_open'" name="key2"/>
271 <field eval="'account.analytic.account'" name="model"/>
272 <field name="name">Open Account Tree</field>
273 <field eval="'ir.actions.act_window,%d'%action_account_tree1" name="value"/>
274 </record>
275
276 <record id="account_analytic_line_extended_form" model="ir.ui.view">
277 <field name="name">account.analytic.line.extended_form</field>
278 <field name="model">account.analytic.line</field>
279 <field name="arch" type="xml">
280 <form string="Project line" version="7.0">
281 <group>
282 <group>
283 <field name="name"/>
284 <field name="account_id"/>
285 </group>
286 <group>
287 <field name="date" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)"/>
288 <field name="company_id" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)"/>
289 </group>
290 <group string="Amount">
291 <field name="amount"/>
292 </group>
293 <group string="Product Information">
294 <label for="unit_amount"/>
295 <div>
296 <field name="unit_amount" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)" class="oe_inline"/>
297 </div>
298 </group>
299 </group>
300 </form>
301 </field>
302 </record>
303 <record id="action_account_analytic_account_line_extended_form" model="ir.actions.act_window">
304 <field name="name">account.analytic.line.extended</field>
305 <field name="type">ir.actions.act_window</field>
306 <field name="res_model">account.analytic.line</field>
307 <field name="view_type">form</field>
308 <field name="view_id" ref="view_account_analytic_line_form"/>
309 </record>
310
311 #
312 # Analytic Journal
313 #
314
315 <record id="view_account_analytic_journal_tree" model="ir.ui.view">
316 <field name="name">account.analytic.journal.tree</field>
317 <field name="model">account.analytic.journal</field>
318 <field name="arch" type="xml">
319 <tree string="Analytic Journal">
320 <field name="code"/>
321 <field name="name"/>
322 <field name="type"/>
323 </tree>
324 </field>
325 </record>
326
327 <record id="view_analytic_journal_search" model="ir.ui.view">
328 <field name="name">account.analytic.journal.search</field>
329 <field name="model">account.analytic.journal</field>
330 <field name="arch" type="xml">
331 <search string="Analytic Journals">
332 <field name="name" filter_domain="['|', ('name','ilike',self), ('code','ilike',self)]" string="Analytic Journal"/>
333 <field name="type"/>
334 <group expand="0" string="Group By...">
335 <filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'type'}"/>
336 </group>
337 </search>
338 </field>
339 </record>
340
341 <record id="view_account_analytic_journal_form" model="ir.ui.view">
342 <field name="name">account.analytic.journal.form</field>
343 <field name="model">account.analytic.journal</field>
344 <field name="arch" type="xml">
345 <form string="Analytic Journal" version="7.0">
346 <group col="4">
347 <field name="name"/>
348 <field name="code"/>
349 <field name="type"/>
350 <field name="active"/>
351 <field name="company_id" groups="base.group_multi_company"/>
352 </group>
353 </form>
354 </field>
355 </record>
356 <record id="action_account_analytic_journal_form" model="ir.actions.act_window">
357 <field name="name">Analytic Journals</field>
358 <field name="res_model">account.analytic.journal</field>
359 <field name="view_type">form</field>
360 <field name="view_mode">tree,form</field>
361 <field name="search_view_id" ref="view_analytic_journal_search" />
362 </record>
363
364 #
365 # Open journal entries
366 #
367
368 <record id="action_account_analytic_journal_open_form" model="ir.actions.act_window">
369 <field name="name">Analytic Journal Items</field>
370 <field name="res_model">account.analytic.line</field>
371 <field name="view_type">form</field>
372 <field name="view_mode">tree,form</field>
373 </record>
374
375 #
376 # Reporting
377 #
378
379
65 </data>380 </data>
66</openerp>381</openerp>
67382
=== renamed directory 'account/project/wizard' => 'analytic/wizard'
=== modified file 'analytic/wizard/account_analytic_chart.py'
--- account/project/wizard/account_analytic_chart.py 2013-10-27 12:31:04 +0000
+++ analytic/wizard/account_analytic_chart.py 2014-04-29 11:49:43 +0000
@@ -35,7 +35,7 @@
35 result_context = {}35 result_context = {}
36 if context is None:36 if context is None:
37 context = {}37 context = {}
38 result = mod_obj.get_object_reference(cr, uid, 'account', 'action_account_analytic_account_tree2')38 result = mod_obj.get_object_reference(cr, uid, 'analytic', 'action_account_analytic_account_tree2')
39 id = result and result[1] or False39 id = result and result[1] or False
40 result = act_obj.read(cr, uid, [id], context=context)[0]40 result = act_obj.read(cr, uid, [id], context=context)[0]
41 data = self.read(cr, uid, ids, [])[0]41 data = self.read(cr, uid, ids, [])[0]
4242
=== modified file 'analytic/wizard/account_analytic_chart_view.xml'
--- account/project/wizard/account_analytic_chart_view.xml 2014-02-10 05:26:55 +0000
+++ analytic/wizard/account_analytic_chart_view.xml 2014-04-29 11:49:43 +0000
@@ -31,13 +31,5 @@
31 <field name="target">new</field>31 <field name="target">new</field>
32 </record>32 </record>
3333
34 <menuitem
35 name="Chart of Analytic Accounts"
36 parent="account.menu_finance_charts"
37 action="action_account_analytic_chart"
38 id="menu_action_analytic_account_tree2"
39 icon="STOCK_INDENT"
40 groups="analytic.group_analytic_accounting"/>
41
42 </data>34 </data>
43</openerp>35</openerp>
4436
=== modified file 'analytic/wizard/account_analytic_journal_report_view.xml'
--- account/project/wizard/account_analytic_journal_report_view.xml 2012-11-29 22:26:45 +0000
+++ analytic/wizard/account_analytic_journal_report_view.xml 2014-04-29 11:49:43 +0000
@@ -32,20 +32,13 @@
32 </record>32 </record>
3333
34 <record model="ir.values" id="account_analytic_journal_values">34 <record model="ir.values" id="account_analytic_journal_values">
35 <field name="model_id" ref="account.model_account_analytic_journal" />35 <field name="model_id" ref="analytic.model_account_analytic_journal" />
36 <field name="name">Account Analytic Journal</field>36 <field name="name">Account Analytic Journal</field>
37 <field name="key2">client_print_multi</field>37 <field name="key2">client_print_multi</field>
38 <field name="value" eval="'ir.actions.act_window,' + str(ref('action_account_analytic_journal'))" />38 <field name="value" eval="'ir.actions.act_window,' + str(ref('action_account_analytic_journal'))" />
39 <field name="key">action</field>39 <field name="key">action</field>
40 <field name="model">account.analytic.journal</field>40 <field name="model">account.analytic.journal</field>
41 </record>41 </record>
42
43 <menuitem groups="analytic.group_analytic_accounting" id="next_id_40"
44 name="Analytic" parent="account.menu_finance_generic_reporting"
45 sequence="4"/>
46 <menuitem groups="analytic.group_analytic_accounting"
47 action="account.action_account_analytic_journal"
48 id="account_analytic_journal_print" parent="account.next_id_40"/>
4942
50 </data>43 </data>
51</openerp>44</openerp>
5245
=== modified file 'hr_expense/hr_expense.py'
--- hr_expense/hr_expense.py 2014-03-10 14:36:00 +0000
+++ hr_expense/hr_expense.py 2014-04-29 11:49:43 +0000
@@ -141,6 +141,8 @@
141141
142 def expense_confirm(self, cr, uid, ids, context=None):142 def expense_confirm(self, cr, uid, ids, context=None):
143 for expense in self.browse(cr, uid, ids):143 for expense in self.browse(cr, uid, ids):
144 if not expense.line_ids:
145 raise osv.except_osv(_('Error!'),_('You cannot submit an expense that has no expense line to the manager.'))
144 if expense.employee_id and expense.employee_id.parent_id.user_id:146 if expense.employee_id and expense.employee_id.parent_id.user_id:
145 self.message_subscribe_users(cr, uid, [expense.id], user_ids=[expense.employee_id.parent_id.user_id.id])147 self.message_subscribe_users(cr, uid, [expense.id], user_ids=[expense.employee_id.parent_id.user_id.id])
146 return self.write(cr, uid, ids, {'state': 'confirm', 'date_confirm': time.strftime('%Y-%m-%d')}, context=context)148 return self.write(cr, uid, ids, {'state': 'confirm', 'date_confirm': time.strftime('%Y-%m-%d')}, context=context)
147149
=== modified file 'hr_expense/hr_expense_demo.xml'
--- hr_expense/hr_expense_demo.xml 2014-01-09 15:45:50 +0000
+++ hr_expense/hr_expense_demo.xml 2014-04-29 11:49:43 +0000
@@ -45,7 +45,7 @@
45 <record id="expenses_line0" model="hr.expense.line">45 <record id="expenses_line0" model="hr.expense.line">
46 <field name="name">Travel Expenses</field>46 <field name="name">Travel Expenses</field>
47 <field name="date_value" eval="time.strftime('%Y-08-10')"/>47 <field name="date_value" eval="time.strftime('%Y-08-10')"/>
48 <field name="analytic_account" ref="account.analytic_consultancy"/>48 <field name="analytic_account" ref="analytic.analytic_consultancy"/>
49 <field name="expense_id" ref="expenses0"/>49 <field name="expense_id" ref="expenses0"/>
50 <field eval="200.0" name="unit_amount"/>50 <field eval="200.0" name="unit_amount"/>
51 <field name="uom_id" ref="product.product_uom_unit"/>51 <field name="uom_id" ref="product.product_uom_unit"/>
@@ -61,7 +61,7 @@
61 <record id="travel_by_air_sep" model="hr.expense.line">61 <record id="travel_by_air_sep" model="hr.expense.line">
62 <field name="name">Travel by Air</field>62 <field name="name">Travel by Air</field>
63 <field name="date_value" eval="time.strftime('%Y-09-03')"/>63 <field name="date_value" eval="time.strftime('%Y-09-03')"/>
64 <field name="analytic_account" ref="account.analytic_consultancy"/>64 <field name="analytic_account" ref="analytic.analytic_consultancy"/>
65 <field name="product_id" ref="air_ticket"/>65 <field name="product_id" ref="air_ticket"/>
66 <field name="expense_id" ref="sep_expenses"/>66 <field name="expense_id" ref="sep_expenses"/>
67 <field eval="700.0" name="unit_amount"/>67 <field eval="700.0" name="unit_amount"/>
@@ -72,7 +72,7 @@
72 <record id="hotel_bill_sep" model="hr.expense.line">72 <record id="hotel_bill_sep" model="hr.expense.line">
73 <field name="name">Hotel Expenses - Thymbra</field>73 <field name="name">Hotel Expenses - Thymbra</field>
74 <field name="date_value" eval="time.strftime('%Y-09-20')"/>74 <field name="date_value" eval="time.strftime('%Y-09-20')"/>
75 <field name="analytic_account" ref="account.analytic_nebula"/>75 <field name="analytic_account" ref="analytic.analytic_nebula"/>
76 <field name="product_id" ref="hotel_rent"/>76 <field name="product_id" ref="hotel_rent"/>
77 <field name="expense_id" ref="sep_expenses"/>77 <field name="expense_id" ref="sep_expenses"/>
78 <field eval="400.0" name="unit_amount"/>78 <field eval="400.0" name="unit_amount"/>
@@ -83,7 +83,7 @@
83 <record id="car_travel_sep" model="hr.expense.line">83 <record id="car_travel_sep" model="hr.expense.line">
84 <field name="name">Bruxelles - Paris</field>84 <field name="name">Bruxelles - Paris</field>
85 <field name="date_value" eval="time.strftime('%Y-09-15')"/>85 <field name="date_value" eval="time.strftime('%Y-09-15')"/>
86 <field name="analytic_account" ref="account.analytic_nebula"/>86 <field name="analytic_account" ref="analytic.analytic_nebula"/>
87 <field name="product_id" ref="car_travel"/>87 <field name="product_id" ref="car_travel"/>
88 <field name="expense_id" ref="sep_expenses"/>88 <field name="expense_id" ref="sep_expenses"/>
89 <field eval="0.30" name="unit_amount"/>89 <field eval="0.30" name="unit_amount"/>
9090
=== modified file 'hr_expense/hr_expense_view.xml'
--- hr_expense/hr_expense_view.xml 2014-04-11 13:18:42 +0000
+++ hr_expense/hr_expense_view.xml 2014-04-29 11:49:43 +0000
@@ -66,8 +66,8 @@
66 <button name="validate" states="confirm" string="Approve" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>66 <button name="validate" states="confirm" string="Approve" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
67 <button name="refuse" states="confirm,accepted" string="Refuse" type="workflow" groups="base.group_hr_user" />67 <button name="refuse" states="confirm,accepted" string="Refuse" type="workflow" groups="base.group_hr_user" />
68 <button name="draft" states="confirm,cancelled" string="Set to Draft" type="workflow" groups="base.group_hr_user" />68 <button name="draft" states="confirm,cancelled" string="Set to Draft" type="workflow" groups="base.group_hr_user" />
69 <button name="done" states="accepted" string="Generate Accounting Entries" type="workflow" groups="account.group_account_invoice" class="oe_highlight"/>69 <button name="done" states="accepted" string="Generate Accounting Entries" type="workflow" groups="account.group_account_invoice,account.group_account_user" class="oe_highlight"/>
70 <button name="action_view_move" states="done" string="Open Accounting Entries" type="object" groups="account.group_account_invoice"/>70 <button name="action_view_move" states="done" string="Open Accounting Entries" type="object" groups="account.group_account_invoice,account.group_account_user"/>
71 <field name="state" widget="statusbar" statusbar_visible="draft,confirm,accepted,done,paid" statusbar_colors='{"confirm":"blue","cancelled":"red"}'/>71 <field name="state" widget="statusbar" statusbar_visible="draft,confirm,accepted,done,paid" statusbar_colors='{"confirm":"blue","cancelled":"red"}'/>
72 </header>72 </header>
73 <sheet>73 <sheet>
7474
=== modified file 'hr_expense/hr_expense_workflow.xml'
--- hr_expense/hr_expense_workflow.xml 2013-10-27 12:31:04 +0000
+++ hr_expense/hr_expense_workflow.xml 2014-04-29 11:49:43 +0000
@@ -84,7 +84,6 @@
84 <field name="act_from" ref="act_accepted"/>84 <field name="act_from" ref="act_accepted"/>
85 <field name="act_to" ref="act_done"/>85 <field name="act_to" ref="act_done"/>
86 <field name="signal">done</field>86 <field name="signal">done</field>
87 <field name="group_id" ref="base.group_hr_user"/>
88 </record>87 </record>
8988
90 <record id="t10" model="workflow.transition">89 <record id="t10" model="workflow.transition">
9190
=== modified file 'hr_timesheet/hr_timesheet_demo.xml'
--- hr_timesheet/hr_timesheet_demo.xml 2013-10-27 12:31:04 +0000
+++ hr_timesheet/hr_timesheet_demo.xml 2014-04-29 11:49:43 +0000
@@ -12,16 +12,16 @@
12 <field name="product_id" ref="product.product_product_consultant"/>12 <field name="product_id" ref="product.product_product_consultant"/>
13 <field name="journal_id" ref="analytic_journal"/>13 <field name="journal_id" ref="analytic_journal"/>
14 </record>14 </record>
15 <record id="account.analytic_administratif" model="account.analytic.account">15 <record id="analytic.analytic_administratif" model="account.analytic.account">
16 <field name="use_timesheets">True</field>16 <field name="use_timesheets">True</field>
17 </record>17 </record>
18 <record id="account.analytic_partners" model="account.analytic.account">18 <record id="analytic.analytic_partners" model="account.analytic.account">
19 <field name="use_timesheets">True</field>19 <field name="use_timesheets">True</field>
20 </record>20 </record>
21 <record id="account.analytic_consultancy" model="account.analytic.account">21 <record id="analytic.analytic_consultancy" model="account.analytic.account">
22 <field name="use_timesheets">True</field>22 <field name="use_timesheets">True</field>
23 </record>23 </record>
24 <record id="account.analytic_super_product_trainings" model="account.analytic.account">24 <record id="analytic.analytic_super_product_trainings" model="account.analytic.account">
25 <field name="use_timesheets">True</field>25 <field name="use_timesheets">True</field>
26 </record>26 </record>
2727
@@ -32,7 +32,7 @@
32 <field eval="2.00" name="unit_amount"/>32 <field eval="2.00" name="unit_amount"/>
33 <field name="product_id" ref="product.product_product_consultant"/>33 <field name="product_id" ref="product.product_product_consultant"/>
34 <field name="product_uom_id" ref="product.product_uom_hour"/>34 <field name="product_uom_id" ref="product.product_uom_hour"/>
35 <field name="account_id" ref="account.analytic_administratif"></field>35 <field name="account_id" ref="analytic.analytic_administratif"></field>
36 <field eval="-60.00" name="amount"/>36 <field eval="-60.00" name="amount"/>
37 <field name="general_account_id" ref="account.a_expense"/>37 <field name="general_account_id" ref="account.a_expense"/>
38 <field name="journal_id" ref="analytic_journal"/>38 <field name="journal_id" ref="analytic_journal"/>
@@ -45,7 +45,7 @@
45 <field eval="1.00" name="unit_amount"/>45 <field eval="1.00" name="unit_amount"/>
46 <field name="product_id" ref="product.product_product_consultant"/>46 <field name="product_id" ref="product.product_product_consultant"/>
47 <field name="product_uom_id" ref="product.product_uom_hour"/>47 <field name="product_uom_id" ref="product.product_uom_hour"/>
48 <field name="account_id" ref="account.analytic_administratif"></field>48 <field name="account_id" ref="analytic.analytic_administratif"></field>
49 <field eval="-30.00" name="amount"/>49 <field eval="-30.00" name="amount"/>
50 <field name="general_account_id" ref="account.a_expense"/>50 <field name="general_account_id" ref="account.a_expense"/>
51 <field name="journal_id" ref="analytic_journal"/>51 <field name="journal_id" ref="analytic_journal"/>
@@ -58,7 +58,7 @@
58 <field eval="03.00" name="unit_amount"/>58 <field eval="03.00" name="unit_amount"/>
59 <field name="product_id" ref="product.product_product_consultant"/>59 <field name="product_id" ref="product.product_product_consultant"/>
60 <field name="product_uom_id" ref="product.product_uom_hour"/>60 <field name="product_uom_id" ref="product.product_uom_hour"/>
61 <field name="account_id" ref="account.analytic_administratif"></field>61 <field name="account_id" ref="analytic.analytic_administratif"></field>
62 <field eval="-90.00" name="amount"/>62 <field eval="-90.00" name="amount"/>
63 <field name="general_account_id" ref="account.a_expense"/>63 <field name="general_account_id" ref="account.a_expense"/>
64 <field name="journal_id" ref="analytic_journal"/>64 <field name="journal_id" ref="analytic_journal"/>
@@ -71,7 +71,7 @@
71 <field eval="01.00" name="unit_amount"/>71 <field eval="01.00" name="unit_amount"/>
72 <field name="product_id" ref="product.product_product_consultant"/>72 <field name="product_id" ref="product.product_product_consultant"/>
73 <field name="product_uom_id" ref="product.product_uom_hour"/>73 <field name="product_uom_id" ref="product.product_uom_hour"/>
74 <field name="account_id" ref="account.analytic_administratif"></field>74 <field name="account_id" ref="analytic.analytic_administratif"></field>
75 <field eval="-30.00" name="amount"/>75 <field eval="-30.00" name="amount"/>
76 <field name="general_account_id" ref="account.a_expense"/>76 <field name="general_account_id" ref="account.a_expense"/>
77 <field name="journal_id" ref="analytic_journal"/>77 <field name="journal_id" ref="analytic_journal"/>
@@ -84,7 +84,7 @@
84 <field eval="01.00" name="unit_amount"/>84 <field eval="01.00" name="unit_amount"/>
85 <field name="product_id" ref="product.product_product_consultant"/>85 <field name="product_id" ref="product.product_product_consultant"/>
86 <field name="product_uom_id" ref="product.product_uom_hour"/>86 <field name="product_uom_id" ref="product.product_uom_hour"/>
87 <field name="account_id" ref="account.analytic_administratif"></field>87 <field name="account_id" ref="analytic.analytic_administratif"></field>
88 <field eval="-30.00" name="amount"/>88 <field eval="-30.00" name="amount"/>
89 <field name="general_account_id" ref="account.a_expense"/>89 <field name="general_account_id" ref="account.a_expense"/>
90 <field name="journal_id" ref="analytic_journal"/>90 <field name="journal_id" ref="analytic_journal"/>
9191
=== modified file 'hr_timesheet/test/hr_timesheet_demo.yml'
--- hr_timesheet/test/hr_timesheet_demo.yml 2013-10-27 12:31:04 +0000
+++ hr_timesheet/test/hr_timesheet_demo.yml 2014-04-29 11:49:43 +0000
@@ -7,5 +7,5 @@
7 !record {model: hr.analytic.timesheet, id: working_hours_coding, view: False}:7 !record {model: hr.analytic.timesheet, id: working_hours_coding, view: False}:
8 user_id: base.user_demo8 user_id: base.user_demo
9 date: !eval time.strftime('%Y-%m-%d')9 date: !eval time.strftime('%Y-%m-%d')
10 account_id: account.analytic_administratif10 account_id: analytic.analytic_administratif
11 unit_amount: 1.011 unit_amount: 1.0
1212
=== modified file 'hr_timesheet/test/test_hr_timesheet.yml'
--- hr_timesheet/test/test_hr_timesheet.yml 2013-10-27 12:31:04 +0000
+++ hr_timesheet/test/test_hr_timesheet.yml 2014-04-29 11:49:43 +0000
@@ -42,7 +42,7 @@
42 import time42 import time
43 from datetime import datetime, date, timedelta43 from datetime import datetime, date, timedelta
44 uid = ref('base.user_demo')44 uid = ref('base.user_demo')
45 new_id = self.create(cr, uid, {'account_id': ref('account.analytic_nebula'),'analytic_amount': 7.0,45 new_id = self.create(cr, uid, {'account_id': ref('analytic.analytic_nebula'),'analytic_amount': 7.0,
46 'date': (datetime.now()+timedelta(1)).strftime('%Y-%m-%d %H:%M:%S') ,46 'date': (datetime.now()+timedelta(1)).strftime('%Y-%m-%d %H:%M:%S') ,
47 'date_start': time.strftime('%Y-%m-%d %H:%M:%S'), 'info': 'Create Yaml for hr module',47 'date_start': time.strftime('%Y-%m-%d %H:%M:%S'), 'info': 'Create Yaml for hr module',
48 'name': 'Gilles Gravie', 'server_date': time.strftime('%Y-%m-%d %H:%M:%S'), 'state': 'present'})48 'name': 'Gilles Gravie', 'server_date': time.strftime('%Y-%m-%d %H:%M:%S'), 'state': 'present'})
@@ -55,7 +55,7 @@
55 import time55 import time
56 from datetime import datetime, date, timedelta56 from datetime import datetime, date, timedelta
57 uid = ref('base.user_demo')57 uid = ref('base.user_demo')
58 new_id = self.create(cr, uid, {'account_id': ref('account.analytic_spark'), 'analytic_amount': 7.0,58 new_id = self.create(cr, uid, {'account_id': ref('analytic.analytic_spark'), 'analytic_amount': 7.0,
59 'date': (datetime.now()+timedelta(2)).strftime('%Y-%m-%d %H:%M:%S'),59 'date': (datetime.now()+timedelta(2)).strftime('%Y-%m-%d %H:%M:%S'),
60 'date_start': time.strftime('%Y-%m-%d %H:%M:%S'), 'info': 'Create Yaml for hr module',60 'date_start': time.strftime('%Y-%m-%d %H:%M:%S'), 'info': 'Create Yaml for hr module',
61 'name': 'Gilles Gravie', 'server_date': time.strftime('%Y-%m-%d %H:%M:%S'), 'state': 'absent'})61 'name': 'Gilles Gravie', 'server_date': time.strftime('%Y-%m-%d %H:%M:%S'), 'state': 'absent'})
6262
=== modified file 'hr_timesheet_invoice/hr_timesheet_invoice_demo.xml'
--- hr_timesheet_invoice/hr_timesheet_invoice_demo.xml 2012-12-08 13:21:56 +0000
+++ hr_timesheet_invoice/hr_timesheet_invoice_demo.xml 2014-04-29 11:49:43 +0000
@@ -11,13 +11,13 @@
11 <field name="customer_name">Offered developments</field>11 <field name="customer_name">Offered developments</field>
12 <field name="factor">100.0</field>12 <field name="factor">100.0</field>
13 </record>13 </record>
14 <record id="account.analytic_spark" model="account.analytic.account">14 <record id="analytic.analytic_spark" model="account.analytic.account">
15 <field name="to_invoice" ref="timesheet_invoice_factor1"/>15 <field name="to_invoice" ref="timesheet_invoice_factor1"/>
16 </record>16 </record>
17 <record id="account.analytic_nebula" model="account.analytic.account">17 <record id="analytic.analytic_nebula" model="account.analytic.account">
18 <field name="to_invoice" ref="timesheet_invoice_factor1"/>18 <field name="to_invoice" ref="timesheet_invoice_factor1"/>
19 </record>19 </record>
20 <record id="account.analytic_partners_camp_to_camp" model="account.analytic.account">20 <record id="analytic.analytic_partners_camp_to_camp" model="account.analytic.account">
21 <field name="to_invoice" ref="timesheet_invoice_factor1"/>21 <field name="to_invoice" ref="timesheet_invoice_factor1"/>
22 </record>22 </record>
23 </data>23 </data>
2424
=== modified file 'hr_timesheet_invoice/hr_timesheet_invoice_view.xml'
--- hr_timesheet_invoice/hr_timesheet_invoice_view.xml 2014-02-05 16:03:47 +0000
+++ hr_timesheet_invoice/hr_timesheet_invoice_view.xml 2014-04-29 11:49:43 +0000
@@ -80,9 +80,9 @@
80 <record id="view_account_analytic_line_search_inherit" model="ir.ui.view">80 <record id="view_account_analytic_line_search_inherit" model="ir.ui.view">
81 <field name="name">account.analytic.line.search.to_invoice</field>81 <field name="name">account.analytic.line.search.to_invoice</field>
82 <field name="model">account.analytic.line</field>82 <field name="model">account.analytic.line</field>
83 <field name="inherit_id" ref="account.view_account_analytic_line_filter"/>83 <field name="inherit_id" ref="analytic.view_account_analytic_line_filter"/>
84 <field name="arch" type="xml">84 <field name="arch" type="xml">
85 <xpath expr="//filter[@name='others']" position="after">85 <xpath expr="//field[@name='date']" position="after">
86 <separator/>86 <separator/>
87 <filter name="to_invoice" string="To Invoice" context="{'to_invoice': 1}" domain="[('invoice_id','=',False), ('to_invoice','&lt;&gt;',False)]" icon="terp-dolar"/>87 <filter name="to_invoice" string="To Invoice" context="{'to_invoice': 1}" domain="[('invoice_id','=',False), ('to_invoice','&lt;&gt;',False)]" icon="terp-dolar"/>
88 <filter name="invoiced" string="Invoiced" domain="[('invoice_id','!=',False), ('to_invoice','&lt;&gt;',False)]" icon="terp-dolar"/> 88 <filter name="invoiced" string="Invoiced" domain="[('invoice_id','!=',False), ('to_invoice','&lt;&gt;',False)]" icon="terp-dolar"/>
@@ -107,7 +107,7 @@
107 <record id="view_account_analytic_line_tree_inherit" model="ir.ui.view">107 <record id="view_account_analytic_line_tree_inherit" model="ir.ui.view">
108 <field name="name">account.analytic.line.tree.to_invoice</field>108 <field name="name">account.analytic.line.tree.to_invoice</field>
109 <field name="model">account.analytic.line</field>109 <field name="model">account.analytic.line</field>
110 <field name="inherit_id" ref="account.view_account_analytic_line_tree"/>110 <field name="inherit_id" ref="analytic.view_account_analytic_line_tree"/>
111 <field name="arch" type="xml">111 <field name="arch" type="xml">
112 <field name="account_id" position="after">112 <field name="account_id" position="after">
113 <field name="to_invoice"/>113 <field name="to_invoice"/>
@@ -117,7 +117,7 @@
117 <record id="view_account_analytic_line_form_inherit" model="ir.ui.view">117 <record id="view_account_analytic_line_form_inherit" model="ir.ui.view">
118 <field name="name">account.analytic.line.form.to_invoice</field>118 <field name="name">account.analytic.line.form.to_invoice</field>
119 <field name="model">account.analytic.line</field>119 <field name="model">account.analytic.line</field>
120 <field name="inherit_id" ref="account.view_account_analytic_line_form"/>120 <field name="inherit_id" ref="analytic.view_account_analytic_line_form"/>
121 <field name="arch" type="xml">121 <field name="arch" type="xml">
122 <field name="amount" position="before">122 <field name="amount" position="before">
123 <field name="to_invoice"/>123 <field name="to_invoice"/>
124124
=== modified file 'hr_timesheet_invoice/report/hr_timesheet_invoice_report.py'
--- hr_timesheet_invoice/report/hr_timesheet_invoice_report.py 2013-10-27 12:31:04 +0000
+++ hr_timesheet_invoice/report/hr_timesheet_invoice_report.py 2014-04-29 11:49:43 +0000
@@ -35,7 +35,7 @@
35 'cost': fields.float('Cost', readonly=True),35 'cost': fields.float('Cost', readonly=True),
36 'product_id': fields.many2one('product.product', 'Product',readonly=True),36 'product_id': fields.many2one('product.product', 'Product',readonly=True),
37 'account_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True),37 'account_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True),
38 'general_account_id': fields.many2one('account.account', 'General Account', readonly=True),38 'general_account_id': fields.many2one('account.account', 'Financial Account', readonly=True),
39 'invoice_id': fields.many2one('account.invoice', 'Invoiced', readonly=True),39 'invoice_id': fields.many2one('account.invoice', 'Invoiced', readonly=True),
40 'month': fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),40 'month': fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
41 ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),41 ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),
4242
=== modified file 'hr_timesheet_invoice/test/test_hr_timesheet_invoice.yml'
--- hr_timesheet_invoice/test/test_hr_timesheet_invoice.yml 2013-10-27 12:31:04 +0000
+++ hr_timesheet_invoice/test/test_hr_timesheet_invoice.yml 2014-04-29 11:49:43 +0000
@@ -4,7 +4,7 @@
4 I create an account analytic line.4 I create an account analytic line.
5-5-
6 !record {model: account.analytic.line, id: account_analytic_line_developyamlforhrmodule0 }:6 !record {model: account.analytic.line, id: account_analytic_line_developyamlforhrmodule0 }:
7 account_id: account.analytic_agrolait7 account_id: analytic.analytic_agrolait
8 amount: -1.08 amount: -1.0
9 general_account_id: account.a_expense9 general_account_id: account.a_expense
10 journal_id: hr_timesheet.analytic_journal10 journal_id: hr_timesheet.analytic_journal
@@ -16,20 +16,20 @@
16-16-
17 Assign partner name and price list in analytic account.17 Assign partner name and price list in analytic account.
18-18-
19 !record {model: account.analytic.account, id: account.analytic_agrolait}:19 !record {model: account.analytic.account, id: analytic.analytic_agrolait}:
20 partner_id: base.res_partner_220 partner_id: base.res_partner_2
21 pricelist_id: product.list021 pricelist_id: product.list0
22-22-
23 I open this account and make the state as pending.23 I open this account and make the state as pending.
24-24-
25 !python {model: account.analytic.account}: |25 !python {model: account.analytic.account}: |
26 self.set_open(cr, uid, [ref('account.analytic_agrolait')], None)26 self.set_open(cr, uid, [ref('analytic.analytic_agrolait')], None)
27 self.set_pending(cr, uid, [ref('account.analytic_agrolait')], None)27 self.set_pending(cr, uid, [ref('analytic.analytic_agrolait')], None)
28-28-
29 I assign account on analytic account line.29 I assign account on analytic account line.
30-30-
31 !python {model: hr.analytic.timesheet}: |31 !python {model: hr.analytic.timesheet}: |
32 self.on_change_account_id(cr, uid, [ref('account_analytic_line_developyamlforhrmodule0')], ref('account.analytic_agrolait'))32 self.on_change_account_id(cr, uid, [ref('account_analytic_line_developyamlforhrmodule0')], ref('analytic.analytic_agrolait'))
3333
34-34-
35 I create a Tax Codes35 I create a Tax Codes
3636
=== modified file 'hr_timesheet_invoice/test/test_hr_timesheet_invoice_no_prod_tax.yml'
--- hr_timesheet_invoice/test/test_hr_timesheet_invoice_no_prod_tax.yml 2013-10-27 12:31:04 +0000
+++ hr_timesheet_invoice/test/test_hr_timesheet_invoice_no_prod_tax.yml 2014-04-29 11:49:43 +0000
@@ -4,7 +4,7 @@
4 I create an account analytic line.4 I create an account analytic line.
5-5-
6 !record {model: account.analytic.line, id: account_analytic_line_developyamlforhrmodule1 }:6 !record {model: account.analytic.line, id: account_analytic_line_developyamlforhrmodule1 }:
7 account_id: account.analytic_agrolait7 account_id: analytic.analytic_agrolait
8 amount: -1.08 amount: -1.0
9 general_account_id: account.a_expense9 general_account_id: account.a_expense
10 journal_id: hr_timesheet.analytic_journal10 journal_id: hr_timesheet.analytic_journal
@@ -16,20 +16,20 @@
16-16-
17 Assign partner name and price list in analytic account.17 Assign partner name and price list in analytic account.
18-18-
19 !record {model: account.analytic.account, id: account.analytic_agrolait}:19 !record {model: account.analytic.account, id: analytic.analytic_agrolait}:
20 partner_id: base.res_partner_220 partner_id: base.res_partner_2
21 pricelist_id: product.list021 pricelist_id: product.list0
22-22-
23 I open this account and make the state as pending.23 I open this account and make the state as pending.
24-24-
25 !python {model: account.analytic.account}: |25 !python {model: account.analytic.account}: |
26 self.set_open(cr, uid, [ref('account.analytic_agrolait')], None)26 self.set_open(cr, uid, [ref('analytic.analytic_agrolait')], None)
27 self.set_pending(cr, uid, [ref('account.analytic_agrolait')], None)27 self.set_pending(cr, uid, [ref('analytic.analytic_agrolait')], None)
28-28-
29 I assign account on analytic account line.29 I assign account on analytic account line.
30-30-
31 !python {model: hr.analytic.timesheet}: |31 !python {model: hr.analytic.timesheet}: |
32 self.on_change_account_id(cr, uid, [ref('account_analytic_line_developyamlforhrmodule1')], ref('account.analytic_agrolait'))32 self.on_change_account_id(cr, uid, [ref('account_analytic_line_developyamlforhrmodule1')], ref('analytic.analytic_agrolait'))
33-33-
34 I create a Tax Code34 I create a Tax Code
35-35-
3636
=== modified file 'hr_timesheet_sheet/report/hr_timesheet_report.py'
--- hr_timesheet_sheet/report/hr_timesheet_report.py 2014-01-27 13:03:51 +0000
+++ hr_timesheet_sheet/report/hr_timesheet_report.py 2014-04-29 11:49:43 +0000
@@ -33,7 +33,7 @@
33 'name': fields.char('Description', size=64,readonly=True),33 'name': fields.char('Description', size=64,readonly=True),
34 'product_id' : fields.many2one('product.product', 'Product',readonly=True),34 'product_id' : fields.many2one('product.product', 'Product',readonly=True),
35 'journal_id' : fields.many2one('account.analytic.journal', 'Journal',readonly=True),35 'journal_id' : fields.many2one('account.analytic.journal', 'Journal',readonly=True),
36 'general_account_id' : fields.many2one('account.account', 'General Account', readonly=True),36 'general_account_id' : fields.many2one('account.account', 'Financial Account', readonly=True),
37 'user_id': fields.many2one('res.users', 'User',readonly=True),37 'user_id': fields.many2one('res.users', 'User',readonly=True),
38 'account_id': fields.many2one('account.analytic.account', 'Analytic Account',readonly=True),38 'account_id': fields.many2one('account.analytic.account', 'Analytic Account',readonly=True),
39 'company_id': fields.many2one('res.company', 'Company',readonly=True),39 'company_id': fields.many2one('res.company', 'Company',readonly=True),
4040
=== modified file 'hr_timesheet_sheet/report/hr_timesheet_report_view.xml'
--- hr_timesheet_sheet/report/hr_timesheet_report_view.xml 2014-01-30 13:17:37 +0000
+++ hr_timesheet_sheet/report/hr_timesheet_report_view.xml 2014-04-29 11:49:43 +0000
@@ -32,7 +32,7 @@
32 <filter string="User" name="group_user_id" icon="terp-personal" context="{'group_by':'user_id'}"/>32 <filter string="User" name="group_user_id" icon="terp-personal" context="{'group_by':'user_id'}"/>
33 <filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>33 <filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>
34 <filter string="Analytic Account" icon="terp-folder-green" context="{'group_by':'account_id'}" groups="analytic.group_analytic_accounting"/>34 <filter string="Analytic Account" icon="terp-folder-green" context="{'group_by':'account_id'}" groups="analytic.group_analytic_accounting"/>
35 <filter string="General Account" icon="terp-folder-orange" context="{'group_by':'general_account_id'}"/>35 <filter string="Financial Account" icon="terp-folder-orange" context="{'group_by':'general_account_id'}"/>
36 <filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>36 <filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
37 <filter string="Date (day)" context="{'group_by':'date:day'}" help="Group by day of date"/>37 <filter string="Date (day)" context="{'group_by':'date:day'}" help="Group by day of date"/>
38 <filter string="Date (month)" context="{'group_by':'date:month'}" help="Group by month of date"/>38 <filter string="Date (month)" context="{'group_by':'date:month'}" help="Group by month of date"/>
3939
=== modified file 'hr_timesheet_sheet/report/timesheet_report.py'
--- hr_timesheet_sheet/report/timesheet_report.py 2013-11-27 15:32:57 +0000
+++ hr_timesheet_sheet/report/timesheet_report.py 2014-04-29 11:49:43 +0000
@@ -35,7 +35,7 @@
35 'date': fields.date('Date', readonly=True),35 'date': fields.date('Date', readonly=True),
36 'name': fields.char('Description', size=64,readonly=True),36 'name': fields.char('Description', size=64,readonly=True),
37 'product_id' : fields.many2one('product.product', 'Product'),37 'product_id' : fields.many2one('product.product', 'Product'),
38 'general_account_id' : fields.many2one('account.account', 'General Account', readonly=True),38 'general_account_id' : fields.many2one('account.account', 'Financial Account', readonly=True),
39 'user_id': fields.many2one('res.users', 'User',readonly=True),39 'user_id': fields.many2one('res.users', 'User',readonly=True),
40 'to_invoice': fields.many2one('hr_timesheet_invoice.factor', 'Type of Invoicing',readonly=True),40 'to_invoice': fields.many2one('hr_timesheet_invoice.factor', 'Type of Invoicing',readonly=True),
41 'account_id': fields.many2one('account.analytic.account', 'Analytic Account',readonly=True),41 'account_id': fields.many2one('account.analytic.account', 'Analytic Account',readonly=True),
4242
=== modified file 'hr_timesheet_sheet/report/timesheet_report_view.xml'
--- hr_timesheet_sheet/report/timesheet_report_view.xml 2014-01-30 13:20:07 +0000
+++ hr_timesheet_sheet/report/timesheet_report_view.xml 2014-04-29 11:49:43 +0000
@@ -41,7 +41,7 @@
41 <filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>41 <filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>
42 <filter string="Type of Invoicing" icon="terp-stock_symbol-selection" context="{'group_by':'to_invoice'}"/>42 <filter string="Type of Invoicing" icon="terp-stock_symbol-selection" context="{'group_by':'to_invoice'}"/>
43 <filter string="Analytic Account" icon="terp-folder-green" context="{'group_by':'account_id'}"/>43 <filter string="Analytic Account" icon="terp-folder-green" context="{'group_by':'account_id'}"/>
44 <filter string="General Account" icon="terp-folder-orange" context="{'group_by':'general_account_id'}"/>44 <filter string="Financial Account" icon="terp-folder-orange" context="{'group_by':'general_account_id'}"/>
45 <filter string="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>45 <filter string="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
46 <filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>46 <filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
47 <filter string="Day" icon="terp-go-today" context="{'group_by':'day'}" help="Group by day of date"/>47 <filter string="Day" icon="terp-go-today" context="{'group_by':'day'}" help="Group by day of date"/>
4848
=== modified file 'hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml'
--- hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml 2013-10-27 12:31:04 +0000
+++ hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml 2014-04-29 11:49:43 +0000
@@ -45,7 +45,7 @@
45-45-
46 !record {model: hr_timesheet_sheet.sheet, id: hr_timesheet_sheet_sheet_deddk0}:46 !record {model: hr_timesheet_sheet.sheet, id: hr_timesheet_sheet_sheet_deddk0}:
47 timesheet_ids:47 timesheet_ids:
48 - account_id: account.analytic_agrolait48 - account_id: analytic.analytic_agrolait
49 date: !eval time.strftime('%Y-%m-%d')49 date: !eval time.strftime('%Y-%m-%d')
50 name: 'Develop yaml for hr module'50 name: 'Develop yaml for hr module'
51 user_id: base.user_demo51 user_id: base.user_demo
@@ -74,7 +74,7 @@
74-74-
75 !record {model: hr_timesheet_sheet.sheet, id: hr_timesheet_sheet_sheet_deddk0}:75 !record {model: hr_timesheet_sheet.sheet, id: hr_timesheet_sheet_sheet_deddk0}:
76 timesheet_ids:76 timesheet_ids:
77 - account_id: account.analytic_agrolait77 - account_id: analytic.analytic_agrolait
78 date: !eval time.strftime('%Y-%m-%d')78 date: !eval time.strftime('%Y-%m-%d')
79 name: 'Develop yaml for hr module'79 name: 'Develop yaml for hr module'
80 unit_amount: 2.0080 unit_amount: 2.00
8181
=== modified file 'multi_company/multi_company_demo.xml'
--- multi_company/multi_company_demo.xml 2014-01-09 15:26:21 +0000
+++ multi_company/multi_company_demo.xml 2014-04-29 11:49:43 +0000
@@ -144,7 +144,7 @@
144 <field name="sequence_id" ref="account.sequence_sale_journal"/>144 <field name="sequence_id" ref="account.sequence_sale_journal"/>
145 <field name="default_credit_account_id" ref="account.a_sale"/>145 <field name="default_credit_account_id" ref="account.a_sale"/>
146 <field name="default_debit_account_id" ref="account.a_sale"/>146 <field name="default_debit_account_id" ref="account.a_sale"/>
147 <field name="analytic_journal_id" ref="account.cose_journal_sale"/>147 <field name="analytic_journal_id" ref="analytic.cose_journal_sale"/>
148 <field name="user_id" ref="base.user_root"/>148 <field name="user_id" ref="base.user_root"/>
149 <field name="company_id" ref="res_company_oerp_in"/>149 <field name="company_id" ref="res_company_oerp_in"/>
150 </record>150 </record>
@@ -156,7 +156,7 @@
156 <field name="sequence_id" ref="account.sequence_refund_sales_journal"/>156 <field name="sequence_id" ref="account.sequence_refund_sales_journal"/>
157 <field name="default_credit_account_id" ref="account.a_sale"/>157 <field name="default_credit_account_id" ref="account.a_sale"/>
158 <field name="default_debit_account_id" ref="account.a_sale"/>158 <field name="default_debit_account_id" ref="account.a_sale"/>
159 <field name="analytic_journal_id" ref="account.cose_journal_sale"/>159 <field name="analytic_journal_id" ref="analytic.cose_journal_sale"/>
160 <field name="user_id" ref="base.user_root"/>160 <field name="user_id" ref="base.user_root"/>
161 <field name="company_id" ref="res_company_oerp_in"/>161 <field name="company_id" ref="res_company_oerp_in"/>
162 </record>162 </record>
@@ -192,7 +192,7 @@
192 <field name="sequence_id" ref="account.sequence_bank_journal"/>192 <field name="sequence_id" ref="account.sequence_bank_journal"/>
193 <field name="default_debit_account_id" ref="account.cash"/>193 <field name="default_debit_account_id" ref="account.cash"/>
194 <field name="default_credit_account_id" ref="account.cash"/>194 <field name="default_credit_account_id" ref="account.cash"/>
195 <field name="analytic_journal_id" ref="account.sit"/>195 <field name="analytic_journal_id" ref="analytic.sit"/>
196 <field name="user_id" ref="base.user_root"/>196 <field name="user_id" ref="base.user_root"/>
197 <field name="company_id" ref="res_company_oerp_in"/>197 <field name="company_id" ref="res_company_oerp_in"/>
198 </record>198 </record>
@@ -204,7 +204,7 @@
204 <field name="sequence_id" ref="account.sequence_check_journal"/>204 <field name="sequence_id" ref="account.sequence_check_journal"/>
205 <field name="default_debit_account_id" ref="account.cash"/>205 <field name="default_debit_account_id" ref="account.cash"/>
206 <field name="default_credit_account_id" ref="account.cash"/>206 <field name="default_credit_account_id" ref="account.cash"/>
207 <field name="analytic_journal_id" ref="account.sit"/>207 <field name="analytic_journal_id" ref="analytic.sit"/>
208 <field name="user_id" ref="base.user_root"/>208 <field name="user_id" ref="base.user_root"/>
209 <field name="company_id" ref="res_company_oerp_in"/>209 <field name="company_id" ref="res_company_oerp_in"/>
210 </record>210 </record>
@@ -216,7 +216,7 @@
216 <field name="sequence_id" ref="account.sequence_cash_journal"/>216 <field name="sequence_id" ref="account.sequence_cash_journal"/>
217 <field name="default_debit_account_id" ref="account.cash"/>217 <field name="default_debit_account_id" ref="account.cash"/>
218 <field name="default_credit_account_id" ref="account.cash"/>218 <field name="default_credit_account_id" ref="account.cash"/>
219 <field name="analytic_journal_id" ref="account.sit"/>219 <field name="analytic_journal_id" ref="analytic.sit"/>
220 <field name="user_id" ref="base.user_root"/>220 <field name="user_id" ref="base.user_root"/>
221 <field name="company_id" ref="res_company_oerp_in"/>221 <field name="company_id" ref="res_company_oerp_in"/>
222 </record>222 </record>
@@ -229,7 +229,7 @@
229 <field name="sequence_id" ref="account.sequence_sale_journal"/>229 <field name="sequence_id" ref="account.sequence_sale_journal"/>
230 <field name="default_credit_account_id" ref="account.a_sale"/>230 <field name="default_credit_account_id" ref="account.a_sale"/>
231 <field name="default_debit_account_id" ref="account.a_sale"/>231 <field name="default_debit_account_id" ref="account.a_sale"/>
232 <field name="analytic_journal_id" ref="account.cose_journal_sale"/>232 <field name="analytic_journal_id" ref="analytic.cose_journal_sale"/>
233 <field name="user_id" ref="base.user_root"/>233 <field name="user_id" ref="base.user_root"/>
234 <field name="company_id" ref="res_company_oerp_us"/>234 <field name="company_id" ref="res_company_oerp_us"/>
235 </record>235 </record>
@@ -241,7 +241,7 @@
241 <field name="sequence_id" ref="account.sequence_refund_sales_journal"/>241 <field name="sequence_id" ref="account.sequence_refund_sales_journal"/>
242 <field name="default_credit_account_id" ref="account.a_sale"/>242 <field name="default_credit_account_id" ref="account.a_sale"/>
243 <field name="default_debit_account_id" ref="account.a_sale"/>243 <field name="default_debit_account_id" ref="account.a_sale"/>
244 <field name="analytic_journal_id" ref="account.cose_journal_sale"/>244 <field name="analytic_journal_id" ref="analytic.cose_journal_sale"/>
245 <field name="user_id" ref="base.user_root"/>245 <field name="user_id" ref="base.user_root"/>
246 <field name="company_id" ref="res_company_oerp_us"/>246 <field name="company_id" ref="res_company_oerp_us"/>
247 </record>247 </record>
@@ -277,7 +277,7 @@
277 <field name="sequence_id" ref="account.sequence_bank_journal"/>277 <field name="sequence_id" ref="account.sequence_bank_journal"/>
278 <field name="default_debit_account_id" ref="account.cash"/>278 <field name="default_debit_account_id" ref="account.cash"/>
279 <field name="default_credit_account_id" ref="account.cash"/>279 <field name="default_credit_account_id" ref="account.cash"/>
280 <field name="analytic_journal_id" ref="account.sit"/>280 <field name="analytic_journal_id" ref="analytic.sit"/>
281 <field name="user_id" ref="base.user_root"/>281 <field name="user_id" ref="base.user_root"/>
282 <field name="company_id" ref="res_company_oerp_us"/>282 <field name="company_id" ref="res_company_oerp_us"/>
283 </record>283 </record>
@@ -289,7 +289,7 @@
289 <field name="sequence_id" ref="account.sequence_check_journal"/>289 <field name="sequence_id" ref="account.sequence_check_journal"/>
290 <field name="default_debit_account_id" ref="account.cash"/>290 <field name="default_debit_account_id" ref="account.cash"/>
291 <field name="default_credit_account_id" ref="account.cash"/>291 <field name="default_credit_account_id" ref="account.cash"/>
292 <field name="analytic_journal_id" ref="account.sit"/>292 <field name="analytic_journal_id" ref="analytic.sit"/>
293 <field name="user_id" ref="base.user_root"/>293 <field name="user_id" ref="base.user_root"/>
294 <field name="company_id" ref="res_company_oerp_us"/>294 <field name="company_id" ref="res_company_oerp_us"/>
295 </record>295 </record>
@@ -301,7 +301,7 @@
301 <field name="sequence_id" ref="account.sequence_cash_journal"/>301 <field name="sequence_id" ref="account.sequence_cash_journal"/>
302 <field name="default_debit_account_id" ref="account.cash"/>302 <field name="default_debit_account_id" ref="account.cash"/>
303 <field name="default_credit_account_id" ref="account.cash"/>303 <field name="default_credit_account_id" ref="account.cash"/>
304 <field name="analytic_journal_id" ref="account.sit"/>304 <field name="analytic_journal_id" ref="analytic.sit"/>
305 <field name="user_id" ref="base.user_root"/>305 <field name="user_id" ref="base.user_root"/>
306 <field name="company_id" ref="res_company_oerp_us"/>306 <field name="company_id" ref="res_company_oerp_us"/>
307 </record>307 </record>
@@ -315,7 +315,7 @@
315 <field name="sequence_id" ref="account.sequence_sale_journal"/>315 <field name="sequence_id" ref="account.sequence_sale_journal"/>
316 <field name="default_credit_account_id" ref="account.a_sale"/>316 <field name="default_credit_account_id" ref="account.a_sale"/>
317 <field name="default_debit_account_id" ref="account.a_sale"/>317 <field name="default_debit_account_id" ref="account.a_sale"/>
318 <field name="analytic_journal_id" ref="account.cose_journal_sale"/>318 <field name="analytic_journal_id" ref="analytic.cose_journal_sale"/>
319 <field name="user_id" ref="base.user_root"/>319 <field name="user_id" ref="base.user_root"/>
320 <field name="company_id" ref="res_company_oerp_be"/>320 <field name="company_id" ref="res_company_oerp_be"/>
321 </record>321 </record>
@@ -327,7 +327,7 @@
327 <field name="sequence_id" ref="account.sequence_refund_sales_journal"/>327 <field name="sequence_id" ref="account.sequence_refund_sales_journal"/>
328 <field name="default_credit_account_id" ref="account.a_sale"/>328 <field name="default_credit_account_id" ref="account.a_sale"/>
329 <field name="default_debit_account_id" ref="account.a_sale"/>329 <field name="default_debit_account_id" ref="account.a_sale"/>
330 <field name="analytic_journal_id" ref="account.cose_journal_sale"/>330 <field name="analytic_journal_id" ref="analytic.cose_journal_sale"/>
331 <field name="user_id" ref="base.user_root"/>331 <field name="user_id" ref="base.user_root"/>
332 <field name="company_id" ref="res_company_oerp_be"/>332 <field name="company_id" ref="res_company_oerp_be"/>
333 </record>333 </record>
@@ -363,7 +363,7 @@
363 <field name="sequence_id" ref="account.sequence_bank_journal"/>363 <field name="sequence_id" ref="account.sequence_bank_journal"/>
364 <field name="default_debit_account_id" ref="account.cash"/>364 <field name="default_debit_account_id" ref="account.cash"/>
365 <field name="default_credit_account_id" ref="account.cash"/>365 <field name="default_credit_account_id" ref="account.cash"/>
366 <field name="analytic_journal_id" ref="account.sit"/>366 <field name="analytic_journal_id" ref="analytic.sit"/>
367 <field name="user_id" ref="base.user_root"/>367 <field name="user_id" ref="base.user_root"/>
368 <field name="company_id" ref="res_company_oerp_be"/>368 <field name="company_id" ref="res_company_oerp_be"/>
369 </record>369 </record>
@@ -375,7 +375,7 @@
375 <field name="sequence_id" ref="account.sequence_check_journal"/>375 <field name="sequence_id" ref="account.sequence_check_journal"/>
376 <field name="default_debit_account_id" ref="account.cash"/>376 <field name="default_debit_account_id" ref="account.cash"/>
377 <field name="default_credit_account_id" ref="account.cash"/>377 <field name="default_credit_account_id" ref="account.cash"/>
378 <field name="analytic_journal_id" ref="account.sit"/>378 <field name="analytic_journal_id" ref="analytic.sit"/>
379 <field name="user_id" ref="base.user_root"/>379 <field name="user_id" ref="base.user_root"/>
380 <field name="company_id" ref="res_company_oerp_be"/>380 <field name="company_id" ref="res_company_oerp_be"/>
381 </record>381 </record>
@@ -387,7 +387,7 @@
387 <field name="sequence_id" ref="account.sequence_cash_journal"/>387 <field name="sequence_id" ref="account.sequence_cash_journal"/>
388 <field name="default_debit_account_id" ref="account.cash"/>388 <field name="default_debit_account_id" ref="account.cash"/>
389 <field name="default_credit_account_id" ref="account.cash"/>389 <field name="default_credit_account_id" ref="account.cash"/>
390 <field name="analytic_journal_id" ref="account.sit"/>390 <field name="analytic_journal_id" ref="analytic.sit"/>
391 <field name="user_id" ref="base.user_root"/>391 <field name="user_id" ref="base.user_root"/>
392 <field name="company_id" ref="res_company_oerp_be"/>392 <field name="company_id" ref="res_company_oerp_be"/>
393 </record>393 </record>
394394
=== modified file 'project/project.py'
--- project/project.py 2014-04-07 16:33:18 +0000
+++ project/project.py 2014-04-29 11:49:43 +0000
@@ -166,6 +166,7 @@
166 def unlink(self, cr, uid, ids, context=None):166 def unlink(self, cr, uid, ids, context=None):
167 alias_ids = []167 alias_ids = []
168 mail_alias = self.pool.get('mail.alias')168 mail_alias = self.pool.get('mail.alias')
169 analytic_account_obj = self.pool.get('account.analytic.account')
169 for proj in self.browse(cr, uid, ids, context=context):170 for proj in self.browse(cr, uid, ids, context=context):
170 if proj.tasks:171 if proj.tasks:
171 raise osv.except_osv(_('Invalid Action!'),172 raise osv.except_osv(_('Invalid Action!'),
@@ -174,6 +175,9 @@
174 alias_ids.append(proj.alias_id.id)175 alias_ids.append(proj.alias_id.id)
175 res = super(project, self).unlink(cr, uid, ids, context=context)176 res = super(project, self).unlink(cr, uid, ids, context=context)
176 mail_alias.unlink(cr, uid, alias_ids, context=context)177 mail_alias.unlink(cr, uid, alias_ids, context=context)
178 analytic_account = proj.analytic_account_id
179 if not analytic_account.line_ids:
180 analytic_account_obj.unlink(cr, uid, [analytic_account.id], context=context)
177 return res181 return res
178182
179 def _get_attached_docs(self, cr, uid, ids, field_name, arg, context):183 def _get_attached_docs(self, cr, uid, ids, field_name, arg, context):
@@ -1257,9 +1261,13 @@
12571261
1258 def unlink(self, cr, uid, ids, *args, **kwargs):1262 def unlink(self, cr, uid, ids, *args, **kwargs):
1259 project_obj = self.pool.get('project.project')1263 project_obj = self.pool.get('project.project')
1260 analytic_ids = project_obj.search(cr, uid, [('analytic_account_id','in',ids)])1264 proj_ids = project_obj.search(cr, uid, [('analytic_account_id','in',ids)])
1261 if analytic_ids:1265 if proj_ids:
1262 raise osv.except_osv(_('Warning!'), _('Please delete the project linked with this account first.'))1266 project = project_obj.browse(cr, uid, proj_ids, context=None)[0]
1267 if not project.task_ids:
1268 project_obj.unlink(cr, uid, proj_ids, context=None)
1269 else:
1270 raise osv.except_osv(_('Warning!'), _('Please delete the project linked with this account first.'))
1263 return super(account_analytic_account, self).unlink(cr, uid, ids, *args, **kwargs)1271 return super(account_analytic_account, self).unlink(cr, uid, ids, *args, **kwargs)
12641272
1265 def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=100):1273 def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=100):
12661274
=== modified file 'project_issue/project_issue.py'
--- project_issue/project_issue.py 2014-04-07 16:33:18 +0000
+++ project_issue/project_issue.py 2014-04-29 11:49:43 +0000
@@ -543,6 +543,16 @@
543 res = super(account_analytic_account, self)._trigger_project_creation(cr, uid, vals, context=context)543 res = super(account_analytic_account, self)._trigger_project_creation(cr, uid, vals, context=context)
544 return res or (vals.get('use_issues') and not 'project_creation_in_progress' in context)544 return res or (vals.get('use_issues') and not 'project_creation_in_progress' in context)
545545
546def unlink(self, cr, uid, ids, *args, **kwargs):
547 project_obj = self.pool.get('project.project')
548 proj_ids = project_obj.search(cr, uid, [('analytic_account_id','in',ids)])
549 if proj_ids:
550 project = project_obj.browse(cr, uid, proj_ids, context=None)[0]
551 if not project.task_ids and not project.issue_ids:
552 project_obj.unlink(cr, uid, proj_ids, context=None)
553 else:
554 raise osv.except_osv(_('Warning!'), _('Please delete the project linked with this account first.'))
555 return super(account_analytic_account, self).unlink(cr, uid, ids, *args, **kwargs)
546556
547class project_project(osv.Model):557class project_project(osv.Model):
548 _inherit = 'project.project'558 _inherit = 'project.project'
549559
=== 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 2014-04-29 11:49:43 +0000
@@ -48,7 +48,7 @@
48 <record id="view_account_analytic_line_search_account_inherit" model="ir.ui.view">48 <record id="view_account_analytic_line_search_account_inherit" model="ir.ui.view">
49 <field name="name">account.analytic.line.search.account_id</field>49 <field name="name">account.analytic.line.search.account_id</field>
50 <field name="model">account.analytic.line</field>50 <field name="model">account.analytic.line</field>
51 <field name="inherit_id" ref="account.view_account_analytic_line_filter"/>51 <field name="inherit_id" ref="analytic.view_account_analytic_line_filter"/>
52 <field name="arch" type="xml">52 <field name="arch" type="xml">
53 <field name="account_id" position="replace">53 <field name="account_id" position="replace">
54 <field name="account_id" string="Analytic account/project"/>54 <field name="account_id" string="Analytic account/project"/>
@@ -58,7 +58,7 @@
58 <record id="view_account_analytic_line_form_inherit_account_id" model="ir.ui.view">58 <record id="view_account_analytic_line_form_inherit_account_id" model="ir.ui.view">
59 <field name="name">account.analytic.line.form.account_id</field>59 <field name="name">account.analytic.line.form.account_id</field>
60 <field name="model">account.analytic.line</field>60 <field name="model">account.analytic.line</field>
61 <field name="inherit_id" ref="account.view_account_analytic_line_form"/>61 <field name="inherit_id" ref="analytic.view_account_analytic_line_form"/>
62 <field name="arch" type="xml">62 <field name="arch" type="xml">
63 <field name="account_id" position="replace">63 <field name="account_id" position="replace">
64 <field name="account_id" string="Analytic Account/Project" on_change="on_change_account_id(account_id)"/>64 <field name="account_id" string="Analytic Account/Project" on_change="on_change_account_id(account_id)"/>
@@ -68,7 +68,7 @@
68 <record id="view_account_analytic_line_tree_inherit_account_id" model="ir.ui.view">68 <record id="view_account_analytic_line_tree_inherit_account_id" model="ir.ui.view">
69 <field name="name">account.analytic.line.tree.account_id</field>69 <field name="name">account.analytic.line.tree.account_id</field>
70 <field name="model">account.analytic.line</field>70 <field name="model">account.analytic.line</field>
71 <field name="inherit_id" ref="account.view_account_analytic_line_tree"/>71 <field name="inherit_id" ref="analytic.view_account_analytic_line_tree"/>
72 <field name="arch" type="xml">72 <field name="arch" type="xml">
73 <field name="account_id" position="replace">73 <field name="account_id" position="replace">
74 <field name="account_id" string="Analytic account/project" on_change="on_change_account_id(account_id)"/>74 <field name="account_id" string="Analytic account/project" on_change="on_change_account_id(account_id)"/>

Subscribers

People subscribed via source and target branches

to all changes: