Files
contract/contract_sale_generation/models/contract_line.py
Mkxm Awilix 33d2bb52c4 [12.0][FIX] contract: Incorrect product UOM qty dict key for the sale.order.line
The product UOM qty was not correctly set on the Sale Order Line
During the creation of a recurring Order from a Contract, the given quantity on the Contract Line was not correctly set on the created Sale Order Line.
2021-01-27 10:15:39 +01:00

48 lines
1.7 KiB
Python

# Copyright (C) 2020 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, models
class ContractLine(models.Model):
_inherit = 'contract.line'
@api.multi
def _prepare_sale_line(self, order_id=False, sale_values=False):
self.ensure_one()
dates = self._get_period_to_invoice(
self.last_date_invoiced, self.recurring_next_date
)
sale_line_vals = {
'product_id': self.product_id.id,
'product_uom_qty': self._get_quantity_to_invoice(*dates),
'uom_id': self.uom_id.id,
'discount': self.discount,
'contract_line_id': self.id,
'display_type': self.display_type,
}
if order_id:
sale_line_vals['order_id'] = order_id.id
order_line = self.env['sale.order.line'].with_context(
force_company=self.contract_id.company_id.id,
).new(sale_line_vals)
if sale_values and not order_id:
sale = self.env['sale.order'].with_context(
force_company=self.contract_id.company_id.id,
).new(sale_values)
order_line.order_id = sale
# Get other order line values from product onchange
order_line.product_id_change()
sale_line_vals = order_line._convert_to_write(order_line._cache)
# Insert markers
name = self._insert_markers(dates[0], dates[1])
sale_line_vals.update(
{
'sequence': self.sequence,
'name': name,
'analytic_tag_ids': [(6, 0, self.analytic_tag_ids.ids)],
'price_unit': self.price_unit,
}
)
return sale_line_vals