Add get auth

This commit is contained in:
Oscar Alvarez 2021-01-13 08:16:24 -05:00
parent abf5000baa
commit 654af06c04

54
sale.py
View file

@ -188,7 +188,11 @@ class Sale(metaclass=PoolMeta):
if not invoice_lines:
return
sale = sales[0]
invoice = self._get_invoice_sale()
if self.invoice_type:
invoice.authorization = self._get_authorization(sale)
invoice.invoice_type = self.invoice_type
if getattr(invoice, 'lines', None):
invoice_lines = list(invoice.lines) + invoice_lines
invoice.lines = invoice_lines
@ -197,6 +201,22 @@ class Sale(metaclass=PoolMeta):
Invoice.update_taxes([invoice])
return invoice
def _get_authorization(self, sale):
authorization_id = None
if sale.untaxed_amount_cache > 0:
if sale.invoice_type == 'P' and sale.shop.pos_authorization:
authorization_id = sale.shop.pos_authorization.id
elif sale.invoice_type == 'M' and sale.shop.manual_authorization:
authorization_id = sale.shop.manual_authorization.id
elif sale.invoice_type in ['1', '2', '3'] and sale.shop.electronic_authorization:
authorization_id = sale.shop.electronic_authorization.id
elif sale.shop.debit_note_electronic_authorization and sale.invoice_type == '92':
authorization_id = sale.shop.debit_note_electronic_authorization.id
else:
if sale.shop.credit_note_electronic_authorization and sale.invoice_type in ['91', 'N']:
authorization_id = sale.shop.credit_note_electronic_authorization.id
return authorization_id
@classmethod
def process_pos(cls, sale):
pool = Pool()
@ -224,7 +244,6 @@ class Sale(metaclass=PoolMeta):
})
else:
number = sale.invoice_number
position = sale.position if sale.position else None
if invoice:
if sale.invoice_date:
@ -243,22 +262,23 @@ class Sale(metaclass=PoolMeta):
}
if sale.invoice_type:
authorization_id = None
if sale.untaxed_amount_cache > 0:
if sale.invoice_type == 'P' and sale.shop.pos_authorization:
authorization_id = sale.shop.pos_authorization.id
elif sale.invoice_type == 'M' and sale.shop.manual_authorization:
authorization_id = sale.shop.manual_authorization.id
elif sale.invoice_type in ['1', '2', '3'] and sale.shop.electronic_authorization:
authorization_id = sale.shop.electronic_authorization.id
elif sale.shop.debit_note_electronic_authorization and sale.invoice_type == '92':
authorization_id = sale.shop.debit_note_electronic_authorization.id
else:
if sale.shop.credit_note_electronic_authorization and sale.invoice_type in ['91', 'N']:
authorization_id = sale.shop.credit_note_electronic_authorization.id
to_write['invoice_type'] = sale.invoice_type
to_write['authorization'] = authorization_id
# authorization_id = None
# if sale.untaxed_amount_cache > 0:
# if sale.invoice_type == 'P' and sale.shop.pos_authorization:
# authorization_id = sale.shop.pos_authorization.id
# elif sale.invoice_type == 'M' and sale.shop.manual_authorization:
# authorization_id = sale.shop.manual_authorization.id
# elif sale.invoice_type in ['1', '2', '3'] and sale.shop.electronic_authorization:
# authorization_id = sale.shop.electronic_authorization.id
# elif sale.shop.debit_note_electronic_authorization and sale.invoice_type == '92':
# authorization_id = sale.shop.debit_note_electronic_authorization.id
# else:
# if sale.shop.credit_note_electronic_authorization and sale.invoice_type in ['91', 'N']:
# authorization_id = sale.shop.credit_note_electronic_authorization.id
#
# to_write['invoice_type'] = sale.invoice_type
# to_write['authorization'] = authorization_id
pass
invoice.write([invoice], to_write)
sale.save()