@@ -41,7 +41,7 @@ def _compute_vat_discriminated(self):
41
41
42
42
@api .depends ('company_id' )
43
43
def _compute_sale_checkbook (self ):
44
- for rec in self :
44
+ for rec in self . filtered ( lambda x : not x . sale_checkbook_id ) :
45
45
if self .env .user .has_group ('l10n_ar_sale.use_sale_checkbook' ) and rec .company_id :
46
46
rec .sale_checkbook_id = rec ._get_sale_checkbook ()
47
47
else :
@@ -57,16 +57,43 @@ def _get_sale_checkbook(self):
57
57
58
58
@api .model_create_multi
59
59
def create (self , vals ):
60
+ """"
61
+ En caso de la creacion de una OV totalmente nueva consumimos el numero de la secuencia
62
+ """
60
63
for val in vals :
61
64
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 )
68
72
return super (SaleOrder , self ).create (vals )
69
73
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
+
70
97
def _compute_tax_totals (self ):
71
98
""" Mandamos en contexto el invoice_date para calculo de impuesto con partner aliquot
72
99
ver módulo l10n_ar_account_withholding. """
0 commit comments