@@ -41,7 +41,7 @@ def _compute_vat_discriminated(self):
4141
4242 @api .depends ('company_id' )
4343 def _compute_sale_checkbook (self ):
44- for rec in self :
44+ for rec in self . filtered ( lambda x : not x . sale_checkbook_id ) :
4545 if self .env .user .has_group ('l10n_ar_sale.use_sale_checkbook' ) and rec .company_id :
4646 rec .sale_checkbook_id = rec ._get_sale_checkbook ()
4747 else :
@@ -57,16 +57,43 @@ def _get_sale_checkbook(self):
5757
5858 @api .model_create_multi
5959 def create (self , vals ):
60+ """"
61+ En caso de la creacion de una OV totalmente nueva consumimos el numero de la secuencia
62+ """
6063 for val in vals :
6164 if self .env .user .has_group ('l10n_ar_sale.use_sale_checkbook' ) and \
62- val .get ('name' , _ ('New' )) == _ ('New' ) and \
63- val .get ('sale_checkbook_id' ):
64- sale_checkbook = self .env ['sale.checkbook' ].browse (
65- val .get ('sale_checkbook_id' ))
66- val ['name' ] = sale_checkbook .sequence_id and \
67- sale_checkbook .sequence_id ._next () or _ ('New' )
65+ val .get ('sale_checkbook_id' ):
66+ sale_checkbook = self .env ['sale.checkbook' ].browse (val .get ('sale_checkbook_id' ))
67+ if val .get ('name' , _ ('New' )) == _ ('New' ):
68+ val ['name' ] = sale_checkbook .sequence_id ._next ()
69+ else :
70+ number_next = sale_checkbook .sequence_id .number_next_actual
71+ val ['name' ] = sale_checkbook .sequence_id .get_next_char (number_next )
6872 return super (SaleOrder , self ).create (vals )
6973
74+ def write (self , vals ):
75+ """A sale checkbook could have a different order sequence, so we could
76+ need to change it accordingly"""
77+ if self .env .user .has_group ('l10n_ar_sale.use_sale_checkbook' ) and vals .get ('sale_checkbook_id' ):
78+ sale_checkbook = self .env ['sale.checkbook' ].browse (vals ['sale_checkbook_id' ])
79+ if sale_checkbook .sequence_id :
80+ for record in self :
81+ if record .sale_checkbook_id != sale_checkbook and record .state in {"draft" , "sent" }:
82+ if not record .name or record .name == _ ('Nuevo' ):
83+ record .name = sale_checkbook .sequence_id ._next ()
84+ else :
85+ number_next = sale_checkbook .sequence_id .number_next_actual
86+ vals ['name' ] = sale_checkbook .sequence_id .get_next_char (number_next )
87+ return super (SaleOrder , record ).write (vals )
88+ return super ().write (vals )
89+
90+ def copy (self , default = None ):
91+ """Necesitamos que cuando duplicamos la OV mantenga el sale_checkbook_id"""
92+ default = dict (default or {})
93+ if self .sale_checkbook_id :
94+ default ['sale_checkbook_id' ] = self .sale_checkbook_id .id
95+ return super ().copy (default )
96+
7097 def _compute_tax_totals (self ):
7198 """ Mandamos en contexto el invoice_date para calculo de impuesto con partner aliquot
7299 ver módulo l10n_ar_account_withholding. """
0 commit comments