diff --git a/addons/account/account.py b/addons/account/account.py index 01cc9575357..1817d50901e 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -1163,8 +1163,20 @@ class account_move(osv.osv): # TODO: Check if period is closed ! # def create(self, cr, uid, vals, context={}): - if 'line_id' in vals: - if 'journal_id' in vals: + if 'line_id' in vals and context.get('copy'): + for l in vals['line_id']: + if not l[0]: + l[2].update({ + 'reconcile_id':False, + 'reconcil_partial_id':False, + 'analytic_lines':False, + 'invoice':False, + 'ref':False, + 'balance':False, + 'account_tax_id':False, + }) + + if 'journal_id' in vals and vals.get('journal_id', False): for l in vals['line_id']: if not l[0]: l[2]['journal_id'] = vals['journal_id'] @@ -1190,11 +1202,14 @@ class account_move(osv.osv): result = super(account_move, self).create(cr, uid, vals, context) return result - def copy(self, cr, uid, id, default=None, context=None): - if default is None: - default = {} - default = default.copy() - default.update({'state':'draft', 'name':'/',}) + def copy(self, cr, uid, id, default={}, context={}): + default.update({ + 'state':'draft', + 'name':'/', + }) + context.update({ + 'copy':True + }) return super(account_move, self).copy(cr, uid, id, default, context) def unlink(self, cr, uid, ids, context={}, check=True): diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index 76989d2f02c..d60d01bd824 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -20,7 +20,6 @@ ############################################################################## import time from datetime import datetime - import netsvc from osv import fields, osv from tools.translate import _ @@ -454,6 +453,7 @@ class account_move_line(osv.osv): context=context) dt = period.date_start return dt + def _get_currency(self, cr, uid, context={}): if not context.get('journal_id', False): return False @@ -1110,10 +1110,10 @@ class account_move_line(osv.osv): #if not 'currency_id' in vals: # vals['currency_id'] = account.company_id.currency_id.id - + result = super(osv.osv, self).create(cr, uid, vals, context) # CREATE Taxes - if vals.get('account_tax_id',False): + if vals.get('account_tax_id', False): tax_id = tax_obj.browse(cr, uid, vals['account_tax_id']) total = vals['debit'] - vals['credit'] if journal.refund_journal: @@ -1186,7 +1186,7 @@ class account_move_line(osv.osv): if check and ((not context.get('no_store_function')) or journal.entry_posted): tmp = self.pool.get('account.move').validate(cr, uid, [vals['move_id']], context) if journal.entry_posted and tmp: - self.pool.get('account.move').button_validate(cr,uid, [vals['move_id']],context) + rs = self.pool.get('account.move').button_validate(cr,uid, [vals['move_id']],context) return result account_move_line() diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index c6f1e04666f..573fa104b7b 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -1105,7 +1105,7 @@ - +