computation of maturity date on move_line using the payment term defined on partner

bzr revid: mra@tinyerp.com-20080908063506-kvmhf9o4exr5gsm0
This commit is contained in:
Mustufa Rangwala 2008-09-08 12:05:06 +05:30
parent 49908cfc85
commit 18949ad0e4
2 changed files with 30 additions and 17 deletions

View File

@ -33,6 +33,9 @@ import netsvc
from osv import fields, osv
from tools.translate import _
import mx.DateTime
from mx.DateTime import RelativeDateTime, now, DateTime, localtime
class account_move_line(osv.osv):
_name = "account.move.line"
_description = "Entry lines"
@ -336,20 +339,30 @@ class account_move_line(osv.osv):
#TODO: ONCHANGE_ACCOUNT_ID: set account_tax_id
def onchange_partner_id(self, cr, uid, ids, move_id, partner_id, account_id=None, debit=0, credit=0, journal=False):
if (not partner_id) or account_id:
return {}
part = self.pool.get('res.partner').browse(cr, uid, partner_id)
id1 = part.property_account_payable.id
id2 = part.property_account_receivable.id
def onchange_partner_id(self, cr, uid, ids, move_id, partner_id, account_id=None, debit=0, credit=0, date=False, journal=False):
val = {}
if journal:
jt = self.pool.get('account.journal').browse(cr, uid, journal).type
if jt=='sale':
val['account_id'] = id2
elif jt=='purchase':
val['account_id'] = id1
# Compute Maturity Date in val !
val['date_maturity'] = False
if not partner_id:
return {'value':val}
if not date:
date = now().strftime('%Y-%m-%d')
part = self.pool.get('res.partner').browse(cr, uid, partner_id)
if part.property_payment_term and part.property_payment_term.line_ids:# Compute Maturity Date in val !
line = part.property_payment_term.line_ids[0]
next_date = mx.DateTime.strptime(date, '%Y-%m-%d') + RelativeDateTime(days=line.days)
if line.condition == 'end of month':
next_date += RelativeDateTime(day=-1)
next_date = next_date.strftime('%Y-%m-%d')
val['date_maturity'] = next_date
if not account_id:
id1 = part.property_account_payable.id
id2 = part.property_account_receivable.id
if journal:
jt = self.pool.get('account.journal').browse(cr, uid, journal).type
if jt=='sale':
val['account_id'] = id2
elif jt=='purchase':
val['account_id'] = id1
return {'value':val}
#

View File

@ -672,7 +672,7 @@
<field name="ref" select="2"/>
<field name="invoice" select="2"/>
<field name="account_id" select="1"/>
<field name="partner_id" select="1"/>
<field name="partner_id" select="1" on_change="onchange_partner_id(False,partner_id,account_id,debit,credit,date)"/>
<field name="debit" select="2"/>
<field name="credit" select="2"/>
@ -725,7 +725,7 @@
<field name="journal_id" readonly="False" select="1"/>
<field name="period_id" readonly="False" select="2"/>
<field name="account_id" select="1"/>
<field name="partner_id" select="2"/>
<field name="partner_id" select="2" on_change="onchange_partner_id(False,partner_id,account_id,debit,credit,date)"/>
<newline/>
<field name="debit" select="2"/>
<field name="credit" select="2"/>
@ -807,7 +807,7 @@
<field name="name" select="1"/>
<field name="date"/>
<field name="account_id"/>
<field name="partner_id" on_change="onchange_partner_id(False,partner_id,account_id,debit,credit)"/>
<field name="partner_id" on_change="onchange_partner_id(False,partner_id,account_id,debit,credit,date)"/>
<field name="debit" select="1"/>
<field name="credit" select="1"/>
@ -829,7 +829,7 @@
<tree editable="top" string="Account Entry Line">
<field name="date"/>
<field name="name"/>
<field name="partner_id" on_change="onchange_partner_id(False,partner_id,account_id,debit,credit)"/>
<field name="partner_id" on_change="onchange_partner_id(False,partner_id,account_id,debit,credit,date)"/>
<field name="account_id"/>
<field name="date_maturity"/>
<field name="ref"/>