44# © 2020 Manuel Regidor <manuel.regidor@sygel.es>
55# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
66
7- from odoo import api , models
7+ from odoo import api , fields , models
88
99
1010class SaleOrder (models .Model ):
1111 _inherit = "sale.order"
1212
13+ quotation_seq_used = fields .Boolean (
14+ string = "Quotation Sequence Used" , default = False , copy = False , readonly = True
15+ )
16+
1317 @api .model_create_multi
1418 def create (self , vals_list ):
1519 for vals in vals_list :
1620 if self .is_using_quotation_number (vals ):
1721 company_id = vals .get ("company_id" , self .env .company .id )
1822 sequence = self .with_company (company_id ).get_quotation_seq ()
19- vals [ "name" ] = sequence or "/"
23+ vals . update ({ "name" : sequence or "/" , "quotation_seq_used" : True })
2024 return super ().create (vals_list )
2125
2226 @api .model
@@ -42,23 +46,23 @@ def copy(self, default=None):
4246 def get_quotation_seq (self ):
4347 return self .env ["ir.sequence" ].next_by_code ("sale.quotation" )
4448
49+ def get_sale_order_seq (self ):
50+ self .ensure_one ()
51+ return self .env ["ir.sequence" ].next_by_code ("sale.order" )
52+
4553 def action_confirm (self ):
4654 sequence = self .env ["ir.sequence" ].search (
4755 [("code" , "=" , "sale.quotation" )], limit = 1
4856 )
4957 for order in self :
50- if sequence and self .name [: len ( sequence . prefix )] != sequence . prefix :
58+ if not self .quotation_seq_used :
5159 continue
5260 if order .state not in ("draft" , "sent" ) or order .company_id .keep_name_so :
5361 continue
5462 if order .origin and order .origin != "" :
5563 quo = order .origin + ", " + order .name
5664 else :
5765 quo = order .name
58- sequence = (
59- self .with_company (order .company_id .id )
60- .env ["ir.sequence" ]
61- .next_by_code ("sale.order" )
62- )
63- order .write ({"origin" : quo , "name" : sequence })
66+ sequence = order .with_company (order .company_id .id ).get_sale_order_seq ()
67+ order .write ({"origin" : quo , "name" : sequence , "quotation_seq_used" : False })
6468 return super ().action_confirm ()
0 commit comments