*commited patch of c2c to bugfix multi currencies glitch on wizard_pay_invoice. It now takes in consideration the date and is improved thanks to a comment and a better
name for writtes-off. bzr revid: qdp@tinyerp.com-20080825154101-vxnkipmf3nlooxto
This commit is contained in:
parent
2b7c1416ad
commit
7c78a74aea
|
@ -423,7 +423,7 @@ class account_journal(osv.osv):
|
|||
'user_id': fields.many2one('res.users', 'User', help="The responsible user of this journal"),
|
||||
'groups_id': fields.many2many('res.groups', 'account_journal_group_rel', 'journal_id', 'group_id', 'Groups'),
|
||||
'currency': fields.many2one('res.currency', 'Currency', help='The currency used to enter statement'),
|
||||
'entry_posted': fields.boolean('Skip \'Draft\' State of Created Entries', help='Check this box if you don\'t want that new account moves pass through the draft state'),
|
||||
'entry_posted': fields.boolean('Skip \'Draft\' State for Created Entries', help='Check this box if you don\'t want that new account moves pass through the \'draft\' state and goes direclty to the \'posted state\' without any manual validation.'),
|
||||
}
|
||||
_defaults = {
|
||||
'active': lambda *a: 1,
|
||||
|
|
|
@ -404,7 +404,11 @@ class account_move_line(osv.osv):
|
|||
account_id = line['account_id']['id']
|
||||
partner_id = (line['partner_id'] and line['partner_id']['id']) or False
|
||||
writeoff = debit - credit
|
||||
date = time.strftime('%Y-%m-%d')
|
||||
# Ifdate_p in context => take this date
|
||||
if context.has_key('date_p') and context['date_p']:
|
||||
date=context['date_p']
|
||||
else:
|
||||
date = time.strftime('%Y-%m-%d')
|
||||
|
||||
cr.execute('SELECT account_id, reconcile_id \
|
||||
FROM account_move_line \
|
||||
|
@ -435,9 +439,15 @@ class account_move_line(osv.osv):
|
|||
self_credit = 0.0
|
||||
self_debit = -writeoff
|
||||
|
||||
# If comment exist in context, take it
|
||||
if context['comment']:
|
||||
libelle=context['comment']
|
||||
else:
|
||||
libelle='Write-Off'
|
||||
|
||||
writeoff_lines = [
|
||||
(0, 0, {
|
||||
'name':'Write-Off',
|
||||
'name':libelle,
|
||||
'debit':self_debit,
|
||||
'credit':self_credit,
|
||||
'account_id':account_id,
|
||||
|
@ -447,7 +457,7 @@ class account_move_line(osv.osv):
|
|||
'amount_currency': account.currency_id.id and -currency or 0.0
|
||||
}),
|
||||
(0, 0, {
|
||||
'name':'Write-Off',
|
||||
'name':libelle,
|
||||
'debit':debit,
|
||||
'credit':credit,
|
||||
'account_id':writeoff_acc_id,
|
||||
|
|
|
@ -685,20 +685,30 @@ class account_invoice(osv.osv):
|
|||
invoice = self.browse(cr, uid, ids[0])
|
||||
src_account_id = invoice.account_id.id
|
||||
journal = self.pool.get('account.journal').browse(cr, uid, pay_journal_id)
|
||||
if not name:
|
||||
if journal.sequence_id:
|
||||
name = self.pool.get('ir.sequence').get_id(cr, uid, journal.sequence_id.id)
|
||||
else:
|
||||
raise osv.except_osv(_('No piece number !'), _('Can not create an automatic sequence for this piece !\n\nPut a sequence in the journal definition for automatic numbering or create a sequence manually for this piece.'))
|
||||
if journal.sequence_id:
|
||||
name = self.pool.get('ir.sequence').get_id(cr, uid, journal.sequence_id.id)
|
||||
else:
|
||||
raise osv.except_osv(_('No piece number !'), _('Can not create an automatic sequence for this piece !\n\nPut a sequence in the journal definition for automatic numbering or create a sequence manually for this piece.'))
|
||||
# Take the seq as name for move
|
||||
if journal.sequence_id:
|
||||
seq = self.pool.get('ir.sequence').get_id(cr, uid, journal.sequence_id.id)
|
||||
else:
|
||||
raise osv.except_osv('No piece number !', 'Can not create an automatic sequence for this piece !\n\nPut a sequence in the journal definition for automatic numbering or create a sequence manually for this piece.')
|
||||
types = {'out_invoice': -1, 'in_invoice': 1, 'out_refund': 1, 'in_refund': -1}
|
||||
direction = types[invoice.type]
|
||||
#take the choosen date
|
||||
if context.has_key('date_p') and context['date_p']:
|
||||
date=context['date_p']
|
||||
else:
|
||||
date=time.strftime('%Y-%m-%d')
|
||||
l1 = {
|
||||
'name': name,
|
||||
'debit': direction * pay_amount>0 and direction * pay_amount,
|
||||
'credit': direction * pay_amount<0 and - direction * pay_amount,
|
||||
'account_id': src_account_id,
|
||||
'partner_id': invoice.partner_id.id,
|
||||
'date': time.strftime('%Y-%m-%d'),
|
||||
'date': date,
|
||||
'ref':invoice.number,
|
||||
}
|
||||
l2 = {
|
||||
'name':name,
|
||||
|
@ -706,11 +716,12 @@ class account_invoice(osv.osv):
|
|||
'credit': direction * pay_amount>0 and direction * pay_amount,
|
||||
'account_id': pay_account_id,
|
||||
'partner_id': invoice.partner_id.id,
|
||||
'date': time.strftime('%Y-%m-%d'),
|
||||
'date': date,
|
||||
'ref':invoice.number,
|
||||
}
|
||||
|
||||
lines = [(0, 0, l1), (0, 0, l2)]
|
||||
move = {'name': name, 'line_id': lines, 'journal_id': pay_journal_id, 'period_id': period_id}
|
||||
move = {'name': seq, 'line_id': lines, 'journal_id': pay_journal_id, 'period_id': period_id}
|
||||
move_id = self.pool.get('account.move').create(cr, uid, move)
|
||||
|
||||
line_ids = []
|
||||
|
|
|
@ -68,6 +68,13 @@ def _pay_and_reconcile(self, cr, uid, data, context):
|
|||
ctx = {'date':data['form']['date']}
|
||||
amount = cur_obj.compute(cr, uid, journal.currency.id, invoice.company_id.currency_id.id, amount, context=ctx)
|
||||
|
||||
|
||||
# Take the choosen date
|
||||
if form.has_key('comment'):
|
||||
context={'date_p':form['date'],'comment':form['comment']}
|
||||
else:
|
||||
context={'date_p':form['date'],'comment':False}
|
||||
|
||||
acc_id = journal.default_credit_account_id and journal.default_credit_account_id.id
|
||||
if not acc_id:
|
||||
raise wizard.except_wizard(_('Error !'), _('Your journal must have a default credit and debit account.'))
|
||||
|
@ -80,7 +87,7 @@ def _wo_check(self, cr, uid, data, context):
|
|||
pool = pooler.get_pool(cr.dbname)
|
||||
invoice = pool.get('account.invoice').browse(cr, uid, data['id'], context)
|
||||
journal = pool.get('account.journal').browse(cr, uid, data['form']['journal_id'], context)
|
||||
if invoice.company_id.currency_id.id<>journal.currency.id:
|
||||
if invoice.company_id.currency_id.id<>journal.currency.id or journal.currency.id <> invoice.currency_id.id:
|
||||
return 'addendum'
|
||||
if pool.get('res.currency').is_zero(cr, uid, invoice.currency_id,
|
||||
(data['form']['amount'] - invoice.amount_total)):
|
||||
|
@ -92,11 +99,13 @@ _transaction_add_form = '''<?xml version="1.0"?>
|
|||
<separator string="Write-Off Move" colspan="4"/>
|
||||
<field name="writeoff_acc_id"/>
|
||||
<field name="writeoff_journal_id"/>
|
||||
<field name="comment"/>
|
||||
</form>'''
|
||||
|
||||
_transaction_add_fields = {
|
||||
'writeoff_acc_id': {'string':'Write-Off account', 'type':'many2one', 'relation':'account.account', 'required':True},
|
||||
'writeoff_journal_id': {'string': 'Write-Off journal', 'type': 'many2one', 'relation':'account.journal', 'required':True},
|
||||
'comment': {'string': 'Entry Name', 'type':'char', 'size': 64, 'required':True},
|
||||
}
|
||||
|
||||
def _get_value_addendum(self, cr, uid, data, context={}):
|
||||
|
|
Loading…
Reference in New Issue