From e71d136d6ff0fae13d558457ed9334e98e2ab786 Mon Sep 17 00:00:00 2001 From: Goffin Simon Date: Wed, 13 Jul 2016 13:29:30 +0200 Subject: [PATCH] [FIX] sale: making an advance payment in percent When making an advance payment in percent, the function onchange_advance_payment_method set the Down Payment Product to False. Then each time an advanced payment in percent was made, a new down payment product was created and set in sale.config.setting in the field deposit_product_id_setting. Now the function onchange_advance_payment_method let the Down Payment Product even if the payment method is in percent. opw:683167 --- .../sale/wizard/sale_make_invoice_advance.py | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/addons/sale/wizard/sale_make_invoice_advance.py b/addons/sale/wizard/sale_make_invoice_advance.py index 0320aeac0a4..1497fb692d3 100644 --- a/addons/sale/wizard/sale_make_invoice_advance.py +++ b/addons/sale/wizard/sale_make_invoice_advance.py @@ -23,6 +23,19 @@ class SaleAdvancePaymentInv(models.TransientModel): return 'all' return 'delivered' + @api.model + def _default_product_id(self): + product_id = self.env['ir.values'].get_default('sale.config.settings', 'deposit_product_id_setting') + return self.env['product.product'].browse(product_id) + + @api.model + def _default_deposit_account_id(self): + return self._default_product_id().property_account_income_id + + @api.model + def _default_deposit_taxes_id(self): + return self._default_product_id().taxes_id + advance_payment_method = fields.Selection([ ('delivered', 'Invoiceable lines'), ('all', 'Invoiceable lines (deduct down payments)'), @@ -30,17 +43,17 @@ class SaleAdvancePaymentInv(models.TransientModel): ('fixed', 'Down payment (fixed amount)') ], string='What do you want to invoice?', default=_get_advance_payment_method, required=True) product_id = fields.Many2one('product.product', string='Down Payment Product', domain=[('type', '=', 'service')],\ - default=lambda self: self.env['ir.values'].get_default('sale.config.settings', 'deposit_product_id_setting')) + default=_default_product_id) count = fields.Integer(default=_count, string='# of Orders') amount = fields.Float('Down Payment Amount', digits=dp.get_precision('Account'), help="The amount to be invoiced in advance, taxes excluded.") deposit_account_id = fields.Many2one("account.account", string="Income Account", domain=[('deprecated', '=', False)],\ - help="Account used for deposits") - deposit_taxes_id = fields.Many2many("account.tax", string="Customer Taxes", help="Taxes used for deposits") + help="Account used for deposits", default=_default_deposit_account_id) + deposit_taxes_id = fields.Many2many("account.tax", string="Customer Taxes", help="Taxes used for deposits", default=_default_deposit_taxes_id) @api.onchange('advance_payment_method') def onchange_advance_payment_method(self): if self.advance_payment_method == 'percentage': - return {'value': {'amount':0, 'product_id':False}} + return {'value': {'amount': 0}} return {} @api.multi