59 lines
2.4 KiB
Python
59 lines
2.4 KiB
Python
from odoo import fields, models, api
|
|
import string
|
|
|
|
|
|
class AlternativeQuotation(models.TransientModel):
|
|
_name = 'sale.order.alternative'
|
|
_description = 'Quotation Alternative'
|
|
|
|
name = fields.Char()
|
|
original_sale_order_id = fields.Many2one('sale.order')
|
|
|
|
clone_all_lines = fields.Boolean('Clone all lines', default=True)
|
|
origin = fields.Text('Why this alternative ?')
|
|
internal_note = fields.Text('Internal Note')
|
|
|
|
def action_create_alternative(self):
|
|
name = self.original_sale_order_id.name
|
|
|
|
if name and name[-1] not in string.ascii_letters:
|
|
self.original_sale_order_id.name = name + "A"
|
|
name = self.name + "B"
|
|
else:
|
|
# Assuming 'all_names' is a list of all names
|
|
# Add a domain to filter names starting with 'name' (less the last letter)
|
|
all_names = [record.name for record in self.env['sale.order'].search([('name', 'like', name[:-1] + '%')])]
|
|
if name in all_names:
|
|
# Get the index of the current name in the list
|
|
index = all_names.index(name)
|
|
# If this is not the last name in the list, get the next one
|
|
if index < len(all_names) - 1:
|
|
name = all_names[index + 1]
|
|
else:
|
|
# If this is the last name, just add 'B' to it
|
|
name = name + "B"
|
|
|
|
new_quot = quot.original_sale_order_id.copy({
|
|
'name': quot.name,
|
|
'origin': quot.original_sale_order_id.name,
|
|
'alternative_sale_order_id': quot.original_sale_order_id.id,
|
|
'alternative': True,
|
|
'alternative_origine': quot.origine,
|
|
'alternative_internal_note': quot.internal_note,
|
|
|
|
# # Lines and line based computes
|
|
# order_line = fields.One2many(
|
|
# comodel_name='sale.order.alternative.line',
|
|
# inverse_name='order_id',
|
|
# string="Order Lines",
|
|
# copy=True, auto_join=True)
|
|
#
|
|
# class AlternativeQuotation(models.TransientModel):
|
|
# _name = 'sale.order.alternative.line'
|
|
# # _inherit = 'sale.order.line'
|
|
# _description = 'Quotation Alternative Line'
|
|
#
|
|
# order_id = fields.Many2one(
|
|
# comodel_name='sale.order.alternative',
|
|
# string="Alternative Quotation Reference",
|
|
# required=True, ondelete='cascade', index=True, copy=False)
|