Questo e' il pezzo di codice che in account.invoice calcola i valori per la fattura:
@api.one
@api.depends('invoice_line.price_subtotal', 'tax_line.amount')
def _compute_amount(self):
self.amount_untaxed = sum(line.price_subtotal for line in self.invoice_line)
self.amount_tax = sum(line.amount for line in self.tax_line)
self.amount_total = self.amount_untaxed + self.amount_tax
Basterebbe estenderlo per applicare il ribasso (se presente) ... qualcosa del tipo
@api.one
@api.depends('invoice_line.price_subtotal', 'tax_line.amount')
def _compute_amount(self):
self.amount_untaxed = sum(line.price_subtotal for line in self.invoice_line) * self.ribasso if ribasso else sum(line.price_subtotal for line in self.invoice_line)
self.amount_tax = sum(line.amount for line in self.tax_line) if self.ribasso else bla bla
self.amount_total = self.amount_untaxed + self.amount_tax if self.ribasso else bla bla
ovviamente dovrai avere un apposito filed denominato ribasso .. o qualcosa del genere con altri valori ...
diversamente puoi inserire il doppio sconto sulle linee di fattura
o mille altri modi ... difficile non e'
EDIT:
Rileggendo mi rendo conto che probabilmente cosi' e' troppo semplice ... bisogna intervenire sulle singole linee mi sa ... resta il fatto che l'approccio e' piu' o meno lo stesso cambia l'oggetto.