eLBati ha scritto:
In pratica potrebbe trattarsi di una registrazione realtiva ad un IVA 0% in cui però il 'move_line.tax_amount', ovvero l'importo che va a movimentare il conto imposta, è diverso da 0.
E' possibile?
Ciao,
Ho indagato. Non abbiamo aliquote allo 0% di IVA (abbiamo solo prodotti in acquisto senza iva) ... Qui sto provando a stampare i registri IVA cosi (allegato: registro_IVA.png) e ho modificato momentaneamente il file invoice.py cosi (lo so faccio ridere ma era giusto per capire dove moriva):
base_amount = 0.0
yayo=open('/tmp/abc.txt', 'w+')
for line in move_line.move_id.line_id:
if line.tax_code_id.id == main_tax.base_code_id.id:
base_amount += self._get_line_amount_with_sign(line)
# calcolo % indetraibile
yayo.write('main_tax.amount ' + str(main_tax.amount) + '\n')
actual_tax_amount = base_amount * main_tax.amount
yayo.write('base_amount ' + str(base_amount) + '\n')
yayo.write('actual_tax_amount ' + str(actual_tax_amount) + '\n')
actual_tax_amount = cur_pool.round(
self.cr, self.uid, move.company_id.currency_id,
actual_tax_amount)
non_deductible = 0.0
if abs(actual_tax_amount) != abs(move_line.tax_amount):
non_deductible = 100
yayo.write('ci sono \n')
if move_line.tax_amount:
non_deductible = 100 - abs((
move_line.tax_amount * 100.0) / actual_tax_amount)
yayo.write('sono vivo \n')
non_deductible = cur_pool.round(
self.cr, self.uid, move.company_id.currency_id,
non_deductible)
yayo.write('sono vivo2 \n')
Stampando le variabili mi escono questi valori (ho dovuto stringare il float):
main_tax.amount -0,2000
base_amount 0.0
actual_tax_amount -0.0
ci sono
Quindi di fatto si, c'è l'actual_tax_amount che è a 0.0 perchè è il risultato di una moltiplicazione con base_amount che è 0.0 ... Questo però viene forzato a zero ... e non capisco il perché visto che poi c'è una divisione ...
che da, appunto, l'errore
move_line.tax_amount * 100.0) / actual_tax_amount)
ZeroDivisionError: float division
Direi che apro il bug, oppure è normale e devo approfondire?
EDIT:
In effetti quel base_amount è inizializzato a 0.0 ma c'è questo pezzo che dovrebbe valorizzarlo in modo diverso:
if line.tax_code_id.id == main_tax.base_code_id.id:
base_amount += self._get_line_amount_with_sign(line)
ma non so cosa siano quelle linee