Skip to content

Commit 372029b

Browse files
committed
[FIX] l10n_ar_sale_order: Fix para que se setee correctamente la secuencia de la orden de venta
1 parent e8e2fdb commit 372029b

File tree

1 file changed

+34
-7
lines changed

1 file changed

+34
-7
lines changed

l10n_ar_sale/models/sale_order.py

+34-7
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)