Skip to Content
Menu
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
To pytanie dostało ostrzeżenie
2 Odpowiedzi
2242 Widoki

Hi! 


I'm trying to get a field for the sale order balance. We invoice a reservation in advance, and then before we give the service we ask for the second payment.

For the sake of not paying unnecesary taxes for unpayed invoices, we only invoice when we get the money.


I was trying to get a field with the balance of a sale, this is: 

Ammount_Total of the sale - Payed invoices. 


I tryed creating a new field in the debug. The field in the sale.order I was trying to do was: 


from odoo import models, fields, api


class SaleOrder(models.Model):

    _inherit = 'sale.order'


    balance = fields.Monetary(

        string='Balance',

        compute='_compute_balance',

        store=True,

        readonly=True,

        currency_field='currency_id',

        help="Balance of the sale order."

    )


    @api.depends('amount_total', 'invoice_ids.state', 'invoice_ids.amount_total')

    def _compute_balance(self):

        for order in self:

            paid_amount = sum(inv.amount_total for inv in order.invoice_ids.filtered(lambda inv: inv.state == 'paid'))

            order.balance = order.amount_total - paid_amount



Is there something I'm missing?


Thank you!

Awatar
Odrzuć
Najlepsza odpowiedź

Thank you!

Awatar
Odrzuć
Najlepsza odpowiedź

You need payment status = "paid" not invoice status.

Awatar
Odrzuć
Powiązane posty Odpowiedzi Widoki Czynność
1
maj 25
1067
4
lut 24
12490
sale / delivery Rozwiązane
1
sty 24
1708
0
maj 23
1940
4
kwi 23
42047