[FIX] account_invoice: due date is reset to current date when we have no payment...
authorAmit Dodiya <ado@tinyerp.com>
Mon, 3 Jun 2013 10:35:57 +0000 (16:05 +0530)
committerAmit Dodiya <ado@tinyerp.com>
Mon, 3 Jun 2013 10:35:57 +0000 (16:05 +0530)
bzr revid: ado@tinyerp.com-20130603103557-n2t8w068vvgcsie4

1  2 
addons/account/account_invoice.py

@@@ -557,17 -557,27 +557,22 @@@ class account_invoice(osv.osv)
  
      def onchange_payment_term_date_invoice(self, cr, uid, ids, payment_term_id, date_invoice):
          res = {}
+         if isinstance(ids, int):
+             ids = [ids]
          if not date_invoice:
              date_invoice = time.strftime('%Y-%m-%d')
-         if not payment_term_id:
-             return {'value':{'date_due': date_invoice}} #To make sure the invoice has a due date when no payment term
+         for invoice_record in self.browse(cr, uid, ids):
 -            if not payment_term_id:
 -                if invoice_record.date_due:
 -                    return {'value':{'date_due': invoice_record.date_due}} #To make sure the invoice due date should contain due date which is entered by user when there is no payment term defined
 -                else:
 -                    return {'value':{'date_due': date_invoice}} #To make sure that the invoice due date contain current date when there is no payment term and no due date defined
 -            else:
 -                if not invoice_record.date_due:
 -                    return {'value':{'date_due': invoice_record.date_due}} #To make sure the invoice due date should contain due date which is entered by user when there is no payment term defined
 -                else:
 -                    pterm_list = self.pool.get('account.payment.term').compute(cr, uid, payment_term_id, value=1, date_ref=date_invoice)
 -                    if pterm_list:
 -                        pterm_list = [line[0] for line in pterm_list]
 -                        pterm_list.sort()
 -                        res = {'value':{'date_due': pterm_list[-1]}}
 -                    else:
 -                         raise osv.except_osv(_('Insufficient Data!'), _('The payment term of supplier does not have a payment term line.'))
++            if not payment_term_id and invoice_record.date_due:
++                return {'value':{'date_due': invoice_record.date_due}} #To make sure the invoice due date should contain due date which is entered by user when there is no payment term defined
++            if not payment_term_id and not invoice_record.date_due:
++                return {'value':{'date_due': date_invoice}} #To make sure that the invoice due date contain current date when there is no payment term and no due date defined
 +        pterm_list = self.pool.get('account.payment.term').compute(cr, uid, payment_term_id, value=1, date_ref=date_invoice)
 +        if pterm_list:
 +            pterm_list = [line[0] for line in pterm_list]
 +            pterm_list.sort()
 +            res = {'value':{'date_due': pterm_list[-1]}}
 +        else:
 +             raise osv.except_osv(_('Insufficient Data!'), _('The payment term of supplier does not have a payment term line.'))
          return res
  
      def onchange_invoice_line(self, cr, uid, ids, lines):