[FIX] account_analytic_analysis: recurring invoices, prepare_invoice method actually prepare the invoice, without creating it. _recurring_create_invoice return value is the list of created invoices ids

bzr revid: dle@openerp.com-20140505130226-ylcycmzmj0hm35w6
This commit is contained in:
Denis Ledoux 2014-05-05 15:02:26 +02:00
parent 5e406734ab
commit 41e6840169
1 changed files with 12 additions and 13 deletions

View File

@ -655,7 +655,6 @@ class account_analytic_account(osv.osv):
def _prepare_invoice(self, cr, uid, contract, context=None):
context = context or {}
inv_obj = self.pool.get('account.invoice')
journal_obj = self.pool.get('account.journal')
fpos_obj = self.pool.get('account.fiscal.position')
@ -679,20 +678,19 @@ class account_analytic_account(osv.osv):
currency_id = contract.company_id.currency_id.id
inv_data = {
'reference': contract.code or False,
'account_id': contract.partner_id.property_account_receivable.id,
'type': 'out_invoice',
'partner_id': contract.partner_id.id,
'currency_id': currency_id,
'journal_id': len(journal_ids) and journal_ids[0] or False,
'date_invoice': contract.recurring_next_date,
'origin': contract.name,
'origin': contract.code,
'fiscal_position': fpos and fpos.id,
'payment_term': partner_payment_term,
'company_id': contract.company_id.id or False,
}
invoice_id = inv_obj.create(cr, uid, inv_data, context=context)
invoice_line_vals = []
for line in contract.recurring_invoice_line_ids:
res = line.product_id
@ -704,7 +702,7 @@ class account_analytic_account(osv.osv):
taxes = res.taxes_id or False
tax_id = fpos_obj.map_tax(cr, uid, fpos, taxes)
invoice_line_vals = {
invoice_line_vals.append({
'name': line.name,
'account_id': account_id,
'account_analytic_id': contract.id,
@ -712,13 +710,13 @@ class account_analytic_account(osv.osv):
'quantity': line.quantity,
'uos_id': line.uom_id.id or False,
'product_id': line.product_id.id or False,
'invoice_id' : invoice_id,
# 'invoice_id' : invoice_id,
'invoice_line_tax_id': [(6, 0, tax_id)],
}
self.pool.get('account.invoice.line').create(cr, uid, invoice_line_vals, context=context)
})
inv_obj.button_compute(cr, uid, [invoice_id], context=context)
return invoice_id
inv_data['invoice_line'] = [(0, 0, line_vals) for line_vals in invoice_line_vals]
return inv_data
def recurring_create_invoice(self, cr, uid, ids, context=None):
return self._recurring_create_invoice(cr, uid, ids, context=context)
@ -728,6 +726,7 @@ class account_analytic_account(osv.osv):
def _recurring_create_invoice(self, cr, uid, ids, automatic=False, context=None):
context = context or {}
invoice_ids = []
current_date = time.strftime('%Y-%m-%d')
if ids:
contract_ids = ids
@ -735,8 +734,8 @@ class account_analytic_account(osv.osv):
contract_ids = self.search(cr, uid, [('recurring_next_date','<=', current_date), ('state','=', 'open'), ('recurring_invoices','=', True), ('type', '=', 'contract')])
for contract in self.browse(cr, uid, contract_ids, context=context):
try:
invoice_id = self._prepare_invoice(cr, uid, contract, context=context)
invoice_values = self._prepare_invoice(cr, uid, contract, context=context)
invoice_ids.append(self.pool['account.invoice'].create(cr, uid, invoice_values, context=context))
next_date = datetime.datetime.strptime(contract.recurring_next_date or current_date, "%Y-%m-%d")
interval = contract.recurring_interval
if contract.recurring_rule_type == 'daily':
@ -754,7 +753,7 @@ class account_analytic_account(osv.osv):
_logger.error(traceback.format_exc())
else:
raise
return True
return invoice_ids
class account_analytic_account_summary_user(osv.osv):
_name = "account_analytic_analysis.summary.user"