[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:
parent
0d52418425
commit
e68263ee27
|
@ -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,
|
||||
}
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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
|
|
|
@ -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"
|
||||
|
Loading…
Reference in New Issue