bemade-addons/bemade_quotation_alternative/wizard/sale_order_alternative.py
2023-08-03 10:49:14 -04:00

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)