Skip to content

Commit 41e6840

Browse files
committed
[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: [email protected]
1 parent 5e40673 commit 41e6840

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

addons/account_analytic_analysis/account_analytic_analysis.py

+12-13
Original file line numberDiff line numberDiff line change
@@ -655,7 +655,6 @@ def hr_to_invoice_timesheets(self, cr, uid, ids, context=None):
655655
def _prepare_invoice(self, cr, uid, contract, context=None):
656656
context = context or {}
657657

658-
inv_obj = self.pool.get('account.invoice')
659658
journal_obj = self.pool.get('account.journal')
660659
fpos_obj = self.pool.get('account.fiscal.position')
661660

@@ -679,20 +678,19 @@ def _prepare_invoice(self, cr, uid, contract, context=None):
679678
currency_id = contract.company_id.currency_id.id
680679

681680
inv_data = {
682-
'reference': contract.code or False,
683681
'account_id': contract.partner_id.property_account_receivable.id,
684682
'type': 'out_invoice',
685683
'partner_id': contract.partner_id.id,
686684
'currency_id': currency_id,
687685
'journal_id': len(journal_ids) and journal_ids[0] or False,
688686
'date_invoice': contract.recurring_next_date,
689-
'origin': contract.name,
687+
'origin': contract.code,
690688
'fiscal_position': fpos and fpos.id,
691689
'payment_term': partner_payment_term,
692690
'company_id': contract.company_id.id or False,
693691
}
694-
invoice_id = inv_obj.create(cr, uid, inv_data, context=context)
695692

693+
invoice_line_vals = []
696694
for line in contract.recurring_invoice_line_ids:
697695

698696
res = line.product_id
@@ -704,21 +702,21 @@ def _prepare_invoice(self, cr, uid, contract, context=None):
704702
taxes = res.taxes_id or False
705703
tax_id = fpos_obj.map_tax(cr, uid, fpos, taxes)
706704

707-
invoice_line_vals = {
705+
invoice_line_vals.append({
708706
'name': line.name,
709707
'account_id': account_id,
710708
'account_analytic_id': contract.id,
711709
'price_unit': line.price_unit or 0.0,
712710
'quantity': line.quantity,
713711
'uos_id': line.uom_id.id or False,
714712
'product_id': line.product_id.id or False,
715-
'invoice_id' : invoice_id,
713+
# 'invoice_id' : invoice_id,
716714
'invoice_line_tax_id': [(6, 0, tax_id)],
717-
}
718-
self.pool.get('account.invoice.line').create(cr, uid, invoice_line_vals, context=context)
715+
})
719716

720-
inv_obj.button_compute(cr, uid, [invoice_id], context=context)
721-
return invoice_id
717+
inv_data['invoice_line'] = [(0, 0, line_vals) for line_vals in invoice_line_vals]
718+
719+
return inv_data
722720

723721
def recurring_create_invoice(self, cr, uid, ids, context=None):
724722
return self._recurring_create_invoice(cr, uid, ids, context=context)
@@ -728,15 +726,16 @@ def _cron_recurring_create_invoice(self, cr, uid, context=None):
728726

729727
def _recurring_create_invoice(self, cr, uid, ids, automatic=False, context=None):
730728
context = context or {}
729+
invoice_ids = []
731730
current_date = time.strftime('%Y-%m-%d')
732731
if ids:
733732
contract_ids = ids
734733
else:
735734
contract_ids = self.search(cr, uid, [('recurring_next_date','<=', current_date), ('state','=', 'open'), ('recurring_invoices','=', True), ('type', '=', 'contract')])
736735
for contract in self.browse(cr, uid, contract_ids, context=context):
737736
try:
738-
invoice_id = self._prepare_invoice(cr, uid, contract, context=context)
739-
737+
invoice_values = self._prepare_invoice(cr, uid, contract, context=context)
738+
invoice_ids.append(self.pool['account.invoice'].create(cr, uid, invoice_values, context=context))
740739
next_date = datetime.datetime.strptime(contract.recurring_next_date or current_date, "%Y-%m-%d")
741740
interval = contract.recurring_interval
742741
if contract.recurring_rule_type == 'daily':
@@ -754,7 +753,7 @@ def _recurring_create_invoice(self, cr, uid, ids, automatic=False, context=None)
754753
_logger.error(traceback.format_exc())
755754
else:
756755
raise
757-
return True
756+
return invoice_ids
758757

759758
class account_analytic_account_summary_user(osv.osv):
760759
_name = "account_analytic_analysis.summary.user"

0 commit comments

Comments
 (0)