I would like to modify the source code of a module to allow the calculation of a "due date invoices", the topic is to calculate it from the last day of a month.
I modified a file already modified and there is an associated view.xml but I don't know how I can modify this view.
I saved the former code in comment.
my account.py :
from openerp.osv import osv, fields
def compute(self, cr, uid, id, value, context=None):
date_ref = datetime.now().strftime('%Y-%m-%d')
if date_ref.month in (1,3,5,7,8,10,12):
date_ref.day = 31
elif date_ref.month in (4,6,9,11):
date_ref.day = 30
elif date_ref.month == 2:
if date_ref.year % 400 == 0:
date_ref.day = 29
else :
date_ref.day = 28
date_ref = str(date_ref.year) + '-' + str(date_ref.month) + '-' + str(date_ref.day)
pt = self.browse(cr, uid, id, context=context)
amount = value
result = []
obj_precision = self.pool.get('decimal.precision')
prec = obj_precision.precision_get(cr, uid, 'Account')
for line in pt.line_ids:
if line.value == 'fixed':
amt = round(line.value_amount, prec)
elif line.value == 'procent':
amt = round(value * line.value_amount, prec)
elif line.value == 'balance':
amt = round(amount, prec)
if amt:
next_date = (datetime.strptime(date_ref, '%Y-%m-%d') + relativedelta(days=line.days))
if line.days2 < 0:
next_first_date = next_date + relativedelta(day=1) #Getting 1st of required month
next_date = next_first_date + relativedelta(days=line.days2)
if line.days2 > 0:
next_date += relativedelta(day=line.days2)
result.append( (next_date.strftime('%Y-%m-%d'), amt) )
amount -= amt
amount = reduce(lambda x,y: x+y[1], result, 0.0)
dist = round(value-amount, prec)
if dist:
result.append( (time.strftime('%Y-%m-%d'), dist) )
return result
#class account_payment_term_line(osv.osv):
# _inherit = 'account.payment.term.line'
# _name = 'account.payment.term.line'
# _columns = {
# 'months': fields.integer('Months', required=True, help="Month, set 0 for the last day of the current month. This adds complete months to the calculation."),
# }
# _defaults = {
# 'months': 0,
# }
#account_payment_term_line()
my monthly_payment_term_view.xml :
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record id="monthly_payment_term_view" model="ir.ui.view">
<field name="name">account.view_payment_term_line_form</field>
<field name="inherit_id" ref="account.view_payment_term_line_form"/>
<field name="model">account.payment.term.line</field>
<field name="arch" type="xml">
<xpath expr="//field[@name='days']" position="before">
<field name="months"/>
</xpath>
</field>
</record>
</data>
</openerp>
Thanks