mirror of
https://github.com/OCA/contract.git
synced 2025-02-13 17:57:24 +02:00
[ADD] - new module Product Contract Variable Quantity
This commit is contained in:
6
product_contract_variable_quantity/models/__init__.py
Normal file
6
product_contract_variable_quantity/models/__init__.py
Normal file
@@ -0,0 +1,6 @@
|
||||
# Copyright 2018 ACSONE SA/NV
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from . import contract_line
|
||||
from . import product_template
|
||||
from . import sale_order_line
|
||||
16
product_contract_variable_quantity/models/contract_line.py
Normal file
16
product_contract_variable_quantity/models/contract_line.py
Normal file
@@ -0,0 +1,16 @@
|
||||
# Copyright 2017 LasLabs Inc.
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class AccountAnalyticInvoiceLine(models.Model):
|
||||
_inherit = 'account.analytic.invoice.line'
|
||||
|
||||
@api.onchange('product_id')
|
||||
def onchange_product(self):
|
||||
super(AccountAnalyticInvoiceLine, self).onchange_product()
|
||||
if self.product_id.is_contract:
|
||||
self.qty_type = self.product_id.qty_type
|
||||
self.qty_formula_id = self.product_id.qty_formula_id
|
||||
@@ -0,0 +1,31 @@
|
||||
# Copyright 2018 ACSONE SA/NV
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class ProductTemplate(models.Model):
|
||||
_inherit = 'product.template'
|
||||
|
||||
qty_type = fields.Selection(
|
||||
selection=[
|
||||
('fixed', 'Fixed quantity'),
|
||||
('variable', 'Variable quantity'),
|
||||
],
|
||||
required=False,
|
||||
default='fixed',
|
||||
string="Qty. type",
|
||||
)
|
||||
qty_formula_id = fields.Many2one(
|
||||
comodel_name="contract.line.qty.formula", string="Qty. formula"
|
||||
)
|
||||
|
||||
@api.onchange('is_contract')
|
||||
def _change_is_contract(self):
|
||||
""" Clear the relation to contract_template_id when downgrading
|
||||
product from contract
|
||||
"""
|
||||
super(ProductTemplate, self)._change_is_contract()
|
||||
if not self.is_contract:
|
||||
self.qty_type = False
|
||||
self.qty_formula_id = False
|
||||
40
product_contract_variable_quantity/models/sale_order_line.py
Normal file
40
product_contract_variable_quantity/models/sale_order_line.py
Normal file
@@ -0,0 +1,40 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright 2017 LasLabs Inc.
|
||||
# Copyright 2017 ACSONE SA/NV.
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class SaleOrderLine(models.Model):
|
||||
_inherit = 'sale.order.line'
|
||||
|
||||
qty_type = fields.Selection(
|
||||
selection=[
|
||||
('fixed', 'Fixed quantity'),
|
||||
('variable', 'Variable quantity'),
|
||||
],
|
||||
required=False,
|
||||
default='fixed',
|
||||
string="Qty. type",
|
||||
)
|
||||
qty_formula_id = fields.Many2one(
|
||||
comodel_name="contract.line.qty.formula", string="Qty. formula"
|
||||
)
|
||||
|
||||
@api.onchange('product_id')
|
||||
def onchange_product(self):
|
||||
super(SaleOrderLine, self).onchange_product()
|
||||
if self.product_id.is_contract:
|
||||
self.qty_type = self.product_id.qty_type
|
||||
self.qty_formula_id = self.product_id.qty_formula_id
|
||||
|
||||
@api.multi
|
||||
def _prepare_contract_line_values(self, contract):
|
||||
values = super(SaleOrderLine, self)._prepare_contract_line_values(
|
||||
contract
|
||||
)
|
||||
values['qty_type'] = self.qty_type
|
||||
values['qty_formula_id'] = self.qty_formula_id.id
|
||||
return values
|
||||
Reference in New Issue
Block a user