diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py index e6c13c71d68..3cb6e528a57 100644 --- a/addons/account/models/account_move.py +++ b/addons/account/models/account_move.py @@ -3633,3 +3633,9 @@ class AccountMove(models.Model): :returns: A list of tuples (priority, method) where method takes an attachment as parameter. """ return [] + + def _is_downpayment(self): + ''' Return true if the invoice is a downpayment. + Down-payments can be created from a sale order. This method is overridden in the sale order module. + ''' + return False diff --git a/addons/account/models/account_move_line.py b/addons/account/models/account_move_line.py index 2f8935d5c27..889b4892301 100644 --- a/addons/account/models/account_move_line.py +++ b/addons/account/models/account_move_line.py @@ -2589,3 +2589,9 @@ class AccountMoveLine(models.Model): def _copy_data_extend_business_fields(self, values): self.ensure_one() + + def _get_downpayment_lines(self): + ''' Return the downpayment move lines associated with the move line. + This method is overridden in the sale order module. + ''' + return self.env['account.move.line'] diff --git a/addons/sale/models/account_move.py b/addons/sale/models/account_move.py index cb3f4ad6b9f..ad38e69cd33 100644 --- a/addons/sale/models/account_move.py +++ b/addons/sale/models/account_move.py @@ -125,3 +125,8 @@ class AccountMove(models.Model): else: result = {'type': 'ir.actions.act_window_close'} return result + + def _is_downpayment(self): + # OVERRIDE + self.ensure_one() + return self.line_ids.sale_line_ids and all(sale_line.is_downpayment for sale_line in self.line_ids.sale_line_ids) or False diff --git a/addons/sale/models/account_move_line.py b/addons/sale/models/account_move_line.py index b36ef138b7c..27f559bbd0a 100644 --- a/addons/sale/models/account_move_line.py +++ b/addons/sale/models/account_move_line.py @@ -203,3 +203,7 @@ class AccountMoveLine(models.Model): if currency_id and currency_id != order.currency_id: price_unit = currency_id._convert(price_unit, order.currency_id, order.company_id, order.date_order or fields.Date.today()) return price_unit + + def _get_downpayment_lines(self): + # OVERRIDE + return self.sale_line_ids.filtered('is_downpayment').invoice_lines.filtered(lambda line: line.move_id._is_downpayment())