summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenoit Guillot <benoit.guillot@akretion.com.br>2012-08-29 10:39:33 +0200
committerBenoit Guillot <benoit.guillot@akretion.com.br>2012-08-29 10:39:33 +0200
commit8f1a02e331f3b64d29f2cd9bd600c88d528690d0 (patch)
treec3711780e5629c07084a045a495c1f2eeb526220
parent393b477ffe1576e9c034df04b0c92fb35c2d131b (diff)
[IMP] add method to prepair refund and add context in the method def refund
bzr revid: benoit.guillot@akretion.com.br-20120829083933-vfi198opk85dj91m
-rw-r--r--addons/account/account_invoice.py96
-rw-r--r--addons/account/wizard/account_invoice_refund.py2
2 files changed, 51 insertions, 47 deletions
diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py
index 7bc9ceaaf61..41524e08bdf 100644
--- a/addons/account/account_invoice.py
+++ b/addons/account/account_invoice.py
@@ -1114,7 +1114,7 @@ class account_invoice(osv.osv):
ids = self.search(cr, user, [('name',operator,name)] + args, limit=limit, context=context)
return self.name_get(cr, user, ids, context)
- def _refund_cleanup_lines(self, cr, uid, lines):
+ def _refund_cleanup_lines(self, cr, uid, lines, context=None):
for line in lines:
del line['id']
del line['invoice_id']
@@ -1126,60 +1126,64 @@ class account_invoice(osv.osv):
line['invoice_line_tax_id'] = [(6,0, line.get('invoice_line_tax_id', [])) ]
return map(lambda x: (0,0,x), lines)
- def refund(self, cr, uid, ids, date=None, period_id=None, description=None, journal_id=None):
- invoices = self.read(cr, uid, ids, ['name', 'type', 'number', 'reference', 'comment', 'date_due', 'partner_id', 'partner_contact', 'partner_insite', 'partner_ref', 'payment_term', 'account_id', 'currency_id', 'invoice_line', 'tax_line', 'journal_id', 'company_id'])
+ def prepair_refund(self, cr, uid, refund_id, invoice, date=None, period_id=None, description=None, journal_id=None, context=None):
obj_invoice_line = self.pool.get('account.invoice.line')
obj_invoice_tax = self.pool.get('account.invoice.tax')
obj_journal = self.pool.get('account.journal')
- new_ids = []
- for invoice in invoices:
- del invoice['id']
-
- type_dict = {
- 'out_invoice': 'out_refund', # Customer Invoice
- 'in_invoice': 'in_refund', # Supplier Invoice
- 'out_refund': 'out_invoice', # Customer Refund
- 'in_refund': 'in_invoice', # Supplier Refund
- }
+ del invoice['id']
- invoice_lines = obj_invoice_line.read(cr, uid, invoice['invoice_line'])
- invoice_lines = self._refund_cleanup_lines(cr, uid, invoice_lines)
+ type_dict = {
+ 'out_invoice': 'out_refund', # Customer Invoice
+ 'in_invoice': 'in_refund', # Supplier Invoice
+ 'out_refund': 'out_invoice', # Customer Refund
+ 'in_refund': 'in_invoice', # Supplier Refund
+ }
- tax_lines = obj_invoice_tax.read(cr, uid, invoice['tax_line'])
- tax_lines = filter(lambda l: l['manual'], tax_lines)
- tax_lines = self._refund_cleanup_lines(cr, uid, tax_lines)
- if journal_id:
- refund_journal_ids = [journal_id]
- elif invoice['type'] == 'in_invoice':
- refund_journal_ids = obj_journal.search(cr, uid, [('type','=','purchase_refund')])
- else:
- refund_journal_ids = obj_journal.search(cr, uid, [('type','=','sale_refund')])
+ invoice_lines = obj_invoice_line.read(cr, uid, invoice['invoice_line'], context=context)
+ invoice_lines = self._refund_cleanup_lines(cr, uid, invoice_lines, context=context)
- if not date:
- date = time.strftime('%Y-%m-%d')
+ tax_lines = obj_invoice_tax.read(cr, uid, invoice['tax_line'], context=context)
+ tax_lines = filter(lambda l: l['manual'], tax_lines)
+ tax_lines = self._refund_cleanup_lines(cr, uid, tax_lines, context=context)
+ if journal_id:
+ refund_journal_ids = [journal_id]
+ elif invoice['type'] == 'in_invoice':
+ refund_journal_ids = obj_journal.search(cr, uid, [('type','=','purchase_refund')], context=context)
+ else:
+ refund_journal_ids = obj_journal.search(cr, uid, [('type','=','sale_refund')], context=context)
+
+ if not date:
+ date = time.strftime('%Y-%m-%d')
+ invoice.update({
+ 'type': type_dict[invoice['type']],
+ 'date_invoice': date,
+ 'state': 'draft',
+ 'number': False,
+ 'invoice_line': invoice_lines,
+ 'tax_line': tax_lines,
+ 'journal_id': refund_journal_ids
+ })
+ if period_id:
invoice.update({
- 'type': type_dict[invoice['type']],
- 'date_invoice': date,
- 'state': 'draft',
- 'number': False,
- 'invoice_line': invoice_lines,
- 'tax_line': tax_lines,
- 'journal_id': refund_journal_ids
+ 'period_id': period_id,
})
- if period_id:
- invoice.update({
- 'period_id': period_id,
- })
- if description:
- invoice.update({
- 'name': description,
- })
- # take the id part of the tuple returned for many2one fields
- for field in ('partner_id', 'company_id',
- 'account_id', 'currency_id', 'payment_term', 'journal_id'):
- invoice[field] = invoice[field] and invoice[field][0]
+ if description:
+ invoice.update({
+ 'name': description,
+ })
+ # take the id part of the tuple returned for many2one fields
+ for field in ('partner_id', 'company_id',
+ 'account_id', 'currency_id', 'payment_term', 'journal_id'):
+ invoice[field] = invoice[field] and invoice[field][0]
+ return invoice
+
+ def refund(self, cr, uid, ids, date=None, period_id=None, description=None, journal_id=None, context=None):
+ invoices = self.read(cr, uid, ids, ['name', 'type', 'number', 'reference', 'comment', 'date_due', 'partner_id', 'partner_contact', 'partner_insite', 'partner_ref', 'payment_term', 'account_id', 'currency_id', 'invoice_line', 'tax_line', 'journal_id', 'company_id'], context=context)
+ new_ids = []
+ for invoice in invoices:
+ invoice = self.prepair_refund(cr, uid, invoice['id'], invoice, date=date, period_id=period_id, description=description, journal_id=journal_id, context=context)
# create the new invoice
- new_ids.append(self.create(cr, uid, invoice))
+ new_ids.append(self.create(cr, uid, invoice, context=context))
return new_ids
diff --git a/addons/account/wizard/account_invoice_refund.py b/addons/account/wizard/account_invoice_refund.py
index b7d278b8849..a549f09e00b 100644
--- a/addons/account/wizard/account_invoice_refund.py
+++ b/addons/account/wizard/account_invoice_refund.py
@@ -146,7 +146,7 @@ class account_invoice_refund(osv.osv_memory):
raise osv.except_osv(_('Insufficient Data!'), \
_('No period found on the invoice.'))
- refund_id = inv_obj.refund(cr, uid, [inv.id], date, period, description, journal_id)
+ refund_id = inv_obj.refund(cr, uid, [inv.id], date, period, description, journal_id, context=context)
refund = inv_obj.browse(cr, uid, refund_id[0], context=context)
inv_obj.write(cr, uid, [refund.id], {'date_due': date,
'check_total': inv.check_total})