I hope I'll be clear enough to explain my problem. In account module we have account.payment.term
and account.payment.term.line
model that are related with one2many relation:
class AccountPaymentTerm(models.Model):
_name = "account.payment.term"
_description = "Payment Term"
line_ids = fields.One2many('account.payment.term.line', 'payment_id', string='Terms', copy=True, default=_default_line_ids)
period = fields.Selection([('month', '1 Month'),], string='Period', required=True, default='month', help="Select here the period between payments")
how_much = fields.Float()
fixed_amount = fields.Float()
class AccountPaymentTermLine(models.Model):
_name = "account.payment.term.line"
_description = "Payment Term Line"
payment_id = fields.Many2one('account.payment.term', string='Payment Terms', required=True, index=True, ondelete='cascade')
I want to create a method in account.payment.term
that creates automatically the payment term lines. This method should determine the number of slices number_of_slices = (self.how_much/self.fixed_amount)
which will be the number of payment term lines. I tried this code for now:
def create(self):
number_of_slices = (self.how_much/self.fixed_amount)
if self.period == 'month':
today = datetime.today()
current_month = fields.Datetime(today.year, today.month, 1)
i = 1
while i <= number_of_slices:
joker = {'value':'fixed',
'value_amount':self.fixed_amount,
'days':30,
'option':'day_after_invoice_date',
'payment_id': self._origin.id}
self.env['account.payment.term.line'].search([('payment_id','=',self.id)]).create(joker)
i = i+1
This method doesn't seem to work. I got this error for now:
raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: account.payment.term(u'name', u'company_id', u'period', u'note', u'how_much', u'active', u'line_ids', u'fixed_amount')