Merge PR #497 into 12.0

Signed-off-by dreispt
This commit is contained in:
OCA-git-bot
2020-04-09 18:30:31 +00:00
2 changed files with 40 additions and 24 deletions

View File

@@ -12,6 +12,7 @@
'depends': [
'agreement_legal',
'agreement_sale',
'agreement_serviceprofile'
],
'data': [
'views/agreement.xml',

View File

@@ -17,34 +17,49 @@ class SaleOrder(models.Model):
res = super(SaleOrder, self)._action_confirm()
for order in self:
if order.agreement_template_id:
order.agreement_id = order.agreement_template_id.copy(default={
'name': order.name,
'code': order.name,
'is_template': False,
'sale_id': order.id,
'partner_id': order.partner_id.id,
'analytic_account_id': order.analytic_account_id and
order.analytic_account_id.id or False,
})
order.agreement_id = order.\
agreement_template_id.copy(default={
'name': order.name,
'code': order.name,
'is_template': False,
'sale_id': order.id,
'partner_id': order.partner_id.id,
'analytic_account_id': order.analytic_account_id and
order.analytic_account_id.id or False,
})
for line in order.order_line:
# Create agreement line
self.env['agreement.line'].create({
'product_id': line.product_id.id,
'name': line.name,
'agreement_id': order.agreement_id.id,
'qty': line.product_uom_qty,
'sale_line_id': line.id,
'uom_id': line.product_uom.id
})
# If the product creates service profiles, create one
if line.product_id.product_tmpl_id.is_serviceprofile:
self.env['agreement.serviceprofile'].create({
'name': line.name,
'product_id': line.product_id.product_tmpl_id.id,
'agreement_id': order.agreement_id.id,
})
self.env['agreement.line'].\
create(self._get_agreement_line_vals(line))
# Create SP's based on product_id config
if line.product_id.is_serviceprofile:
self.create_sp_qty(line, order)
return res
def create_sp_qty(self, line, order):
""" Create line.product_uom_qty SP's """
if line.product_id.product_tmpl_id.is_serviceprofile:
for i in range(1, int(line.product_uom_qty)+1):
self.env['agreement.serviceprofile'].\
create(self._get_sp_vals(line, order, i))
def _get_agreement_line_vals(self, line):
return {
'product_id': line.product_id.id,
'name': line.name,
'agreement_id': line.order_id.agreement_id.id,
'qty': line.product_uom_qty,
'sale_line_id': line.id,
'uom_id': line.product_uom.id
}
def _get_sp_vals(self, line, order, i):
return {
'name': line.name + ' ' + str(i),
'product_id': line.product_id.product_tmpl_id.id,
'agreement_id': order.agreement_id.id,
}
def action_confirm(self):
# If sale_timesheet is installed, the _action_confirm()
# may be setting an Analytic Account on the SO.