[IMP]account_analytic_analysis:

added:
  account_analytic_analysis/test/
  account_analytic_analysis/test/account_analytic_analysis.yml
Improve csv and code

bzr revid: dbr@tinyerp.com-20130301083610-09r8yorjilsjl0p8
This commit is contained in:
DBR (OpenERP) 2013-03-01 14:06:10 +05:30
parent 0d52418425
commit e68263ee27
4 changed files with 75 additions and 9 deletions

View File

@ -45,6 +45,7 @@ Adds menu to show relevant information to each manager.You can also view the rep
'static/src/css/analytic.css'
],
'demo': ['analytic_account_demo.xml'],
'test': ['test/account_analytic_analysis.yml'],
'installable': True,
'auto_install': False,
}

View File

@ -59,11 +59,11 @@ class account_analytic_invoice_line(osv.osv):
return False
_columns = {
'product_id': fields.many2one('product.product','Product'),
'product_id': fields.many2one('product.product','Product', required=True),
'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account'),
'name': fields.char('Description', size=64),
'quantity': fields.float('Quantity'),
'uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True),
'quantity': fields.float('Quantity', required=True),
'uom_id': fields.many2one('product.uom', 'Unit of Measure'),
'price_unit': fields.float('Unit Price'),
'price_subtotal': fields.function(_amount_line, string='Amount', type="float",
digits_compute= dp.get_precision('Account')),
@ -115,8 +115,11 @@ class account_analytic_invoice_line(osv.osv):
if a:
result['account_id'] = a
taxes = res.taxes_id and res.taxes_id or (a and self.pool.get('account.account').browse(cr, uid, a, context=context).tax_ids or False)
result.update({'name':res.partner_ref,'uom_id': uom_id or res.uom_id.id, 'price_unit': res.list_price or res.standard_price,'tax_ids': [x.id for x in taxes]})
taxes = res.taxes_id and res.taxes_id or (a and self.pool.get('account.account').browse(cr, uid, a, context=context).tax_ids or False) or False
tax_ids = False
if taxes:
tax_ids = [x.id for x in taxes]
result.update({'name':res.partner_ref or False,'uom_id': uom_id or res.uom_id.id or False, 'price_unit': res.list_price or res.standard_price or False,'tax_ids': tax_ids})
if res.description:
result['name'] += '\n'+res.description
@ -799,7 +802,7 @@ class account_analytic_account(osv.osv):
obj_contract_line = self.pool.get('account.analytic.invoice.line')
for line in obj_contract_line.browse(cr, uid, contract_line_ids):
invoice_line_vals = {
'name': line.name,
'name': contract.name+line.product_id.name,
'origin': line.analytic_account_id.name,
'account_id': contract.partner_id.property_account_receivable.id or contract.partner_id.property_account_receivable or False,
'account_analytic_id': contract.id,
@ -846,17 +849,15 @@ class account_analytic_account(osv.osv):
invoice_id = inv_obj.create(cr, uid, inv_data, context=context)
self._prepare_invoice_line(cr, uid, contract, contract_line_ids, invoice_id,context=context)
inv_obj.button_compute(cr, uid, [invoice_id])
next_date = datetime.datetime.strptime(contract.next_date, "%Y-%m-%d")
interval = contract.interval
if contract.rrule_type == 'monthly':
new_date = next_date+relativedelta(months=+interval)
if contract.rrule_type == 'daily':
new_date = next_date+relativedelta(days=+interval)
if contract.rrule_type == 'weekly':
new_date = next_date+relativedelta(weeks=+interval)
contract.write({'next_date':new_date}, context=context)
self.write(cr, uid, contract.id, {'next_date':'2013-04-01 00:00:00'}, context=context)
return True
class account_analytic_account_summary_user(osv.osv):

View File

@ -3,3 +3,5 @@ access_account_analytic_analysis_summary_user_sale,account_analytic_analysis.sum
access_account_analytic_analysis_summary_month_sale,account_analytic_analysis.summary.month sale,model_account_analytic_analysis_summary_month,base.group_sale_salesman,1,0,0,0
access_account_analytic_analysis_summary_user,account_analytic_analysis.summary.user,model_account_analytic_analysis_summary_user,account.group_account_manager,1,0,0,0
access_account_analytic_analysis_summary_month,account_analytic_analysis.summary.month,model_account_analytic_analysis_summary_month,account.group_account_manager,1,0,0,0
access_edi_edi,access_edi_edi,edi.model_edi_edi,account.group_account_manager,1,1,1,1
access_account_analytic_invoice_line,account_analytic_invoice_line.user,model_account_analytic_invoice_line,account.group_account_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
3 access_account_analytic_analysis_summary_month_sale account_analytic_analysis.summary.month sale model_account_analytic_analysis_summary_month base.group_sale_salesman 1 0 0 0
4 access_account_analytic_analysis_summary_user account_analytic_analysis.summary.user model_account_analytic_analysis_summary_user account.group_account_manager 1 0 0 0
5 access_account_analytic_analysis_summary_month account_analytic_analysis.summary.month model_account_analytic_analysis_summary_month account.group_account_manager 1 0 0 0
6 access_edi_edi access_edi_edi edi.model_edi_edi account.group_account_manager 1 1 1 1
7 access_account_analytic_invoice_line account_analytic_invoice_line.user model_account_analytic_invoice_line account.group_account_manager 1 1 1 1

View File

@ -0,0 +1,62 @@
-
In order to test Contract Recurrent Invoice I create a new Contract Template
-
!record {model: account.analytic.account, id: account_analytic_account_0}:
name: Loan EMI Agrement
company_id: base.main_company
partner_id: base.main_partner
date_start: !eval time.strftime('%Y-%m-%d')
recurring_invoices : 1
interval : 1
rrule_type : 'monthly'
next_date : !eval time.strftime('%Y-%m-%d')
invoice_line_ids:
- product_id: product.product_product_consultant
quantity: 1.0
price_unit: 75.0
-
Genrate Agrement Contract from of 'Loan EMI Agrement' template.
-
!python {model: account.analytic.account}: |
data = {
'name': 'Agrement of the loan EMI',
'template_id': ref("account_analytic_account_0"),
}
contract_id = self.create(cr, uid, data)
assert contract_id, "contract has not been created correctly"
-
Genrate Invoice of agrement for current month
-
!python {model: account.analytic.account}: |
data = {
'name': 'Agrement of the loan for current month',
'template_id': ref("account_analytic_account_0"),
}
contract_id = self.create(cr, uid, data)
assert contract_id, "contract has not been created correctly"
self._amount_all(cr, uid, [contract_id], '', {}, {})
template = self.browse(cr, uid, ref('account_analytic_account_0'))
res = self.on_change_template(cr, uid, contract_id, template.id, {})
self.write(cr, uid, contract_id, res['value'])
line_obj = self.pool.get('account.analytic.invoice.line')
contract = self.browse(cr, uid, contract_id)
assert template.partner_id.id == contract.partner_id.id or res['value']['partner_id'], "Customer of contract is not match with Contract Template"
assert template.company_id.id == contract.company_id.id, "Company of contract is not match with Contract Template"
assert template.date_start == contract.date_start, "Start Date of contract is not match with Contract Template"
assert template.interval == contract.interval, "Interval of contract is not match with Contract Template"
from dateutil.relativedelta import relativedelta
import datetime
self.cron_create_invoice(cr, uid, False, False, None)
invoice_obj = self.pool.get('account.invoice')
contract_invoice = invoice_obj.search(cr, uid, [('origin','=','Agrement of the loan for current month')])
template_invoice = invoice_obj.search(cr, uid, [('origin','=','Loan EMI Agrement')])
inv = invoice_obj.browse(cr ,uid, contract_invoice)[0]
result = invoice_obj._amount_all(cr, uid, contract_invoice, '', {}, {})
assert inv.state == 'draft', 'Contract created invoice not in draft state.'
assert inv.amount_untaxed == contract.amount_untaxed, "Contract Invoice's Total tax excluded is not same as contract"
assert inv.amount_tax == contract.amount_tax, "Contract Invoice's Taxes is not same as contract"
assert inv.amount_total == contract.amount_total, "Contract Invoice's Total is not same as contract"