Skip to content

Commit

Permalink
Merge PR #3534 into 17.0
Browse files Browse the repository at this point in the history
Signed-off-by HaraldPanten
  • Loading branch information
OCA-git-bot committed Jan 16, 2025
2 parents 932eb96 + af16f0c commit 9f6aa0f
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 10 deletions.
20 changes: 20 additions & 0 deletions sale_quotation_number/migrations/17.0.1.1.1/post-migration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Copyright 2023 Manuel Regidor <[email protected]> (Sygel)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)

import odoo


def migrate(cr, version):
env = odoo.api.Environment(cr, odoo.SUPERUSER_ID, {})
sequence = env["ir.sequence"].search([("code", "=", "sale.quotation")], limit=1)
orders = (
env["sale.order"]
.search(
[
("state", "in", ["draft", "sent"]),
("company_id.keep_name_so", "=", False),
]
)
.filtered(lambda a: a.name[: len(sequence.prefix)] == sequence.prefix)
)
orders.write({"quotation_seq_used": True})
25 changes: 15 additions & 10 deletions sale_quotation_number/models/sale_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,25 @@
# © 2020 Manuel Regidor <[email protected]>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)

from odoo import api, models
from odoo import api, fields, models


class SaleOrder(models.Model):
_inherit = "sale.order"

quotation_seq_used = fields.Boolean(
string="Quotation Sequence Used", default=False, copy=False, readonly=True
)

@api.model_create_multi
def create(self, vals_list):
for vals in vals_list:
if not vals.get("name"):
if self.is_using_quotation_number(vals):
if self.is_using_quotation_number(vals):
if not vals.get("name"):
company_id = vals.get("company_id", self.env.company.id)
sequence = self.with_company(company_id).get_quotation_seq()
vals["name"] = sequence or "/"
vals["quotation_seq_used"] = True
return super().create(vals_list)

@api.model
Expand All @@ -43,23 +48,23 @@ def copy(self, default=None):
def get_quotation_seq(self):
return self.env["ir.sequence"].next_by_code("sale.quotation")

def get_sale_order_seq(self):
self.ensure_one()
return self.env["ir.sequence"].next_by_code("sale.order")

def action_confirm(self):
sequence = self.env["ir.sequence"].search(
[("code", "=", "sale.quotation")], limit=1
)
for order in self:
if sequence and self.name[: len(sequence.prefix)] != sequence.prefix:
if not self.quotation_seq_used:
continue
if order.state not in ("draft", "sent") or order.company_id.keep_name_so:
continue
if order.origin and order.origin != "":
quo = order.origin + ", " + order.name
else:
quo = order.name
sequence = (
self.with_company(order.company_id.id)
.env["ir.sequence"]
.next_by_code("sale.order")
)
order.write({"origin": quo, "name": sequence})
sequence = order.with_company(order.company_id.id).get_sale_order_seq()
order.write({"origin": quo, "name": sequence, "quotation_seq_used": False})
return super().action_confirm()

0 comments on commit 9f6aa0f

Please sign in to comment.