Odoo Help


How to mark invoice as paid when balance is zero but move_lines are partial reconciles ?

Emanuel Cino
on 7/30/14, 8:20 AM 2,242 views

I have the following scenario :

Let say a customer has an invoice of 50$. We register a payment of 100$ (maybe for a future invoice next month) and want to do a partial reconcile with the invoice so that the remaining of 50$ gets in the partner receivable balance (we could do another partial reconcile next month).

When the partial rencocile is done, the balance of the invoice is 0$ but it is not marked as paid because the test_paid() method checks that all move_lines have a reconcile_id set. But in this scenario, the move_lines have a partial_reconcile_id set. The invoice would be marked as paid only when we fully reconcile the credit amount of 100$ (the next month), but I would want that it is immediately marked as paid.

Do you know the reason why the invoice is still in the open state ? I thought of overriding the test_paid method to add a check that if balance is zero and all move_lines have a partial_reconcile_id, then it should go to paid state. But then I wondered why it is not working like that by default ? Would you suggest another way of doing this ?

I think some of changes made has affected it.. In standard, when you make a full payment, against an invoice, then it will be set it to paid... but if you make a partial payment, then it will still be in open state...

on 10/22/14, 3:18 AM

If you are making a payment through receipts/payments make sure you have selected the right invoice...

on 10/22/14, 3:19 AM
Emanuel Cino
On 10/22/14, 2:52 AM

I think the way I suggested is fine.


Zura Tsiklauri

--Zura Tsiklauri--
| 5 2 6
Tbilisi, Georgia
--Zura Tsiklauri--
Zura Tsiklauri
On 10/22/14, 7:21 AM


I beleive you started wrong way initially. When u have an invoice=50$ and a customer pays 100$, this invoice is and should be fully recondiled as its full amount is paid, another 50$ is an advance payment for future invoices, which means that in Customer Payment Document, when u register this 100$ payment, 50$ invoice will be reconciled and u get difference amount=50$. You should choose the option: "Reconcile the payment balance" and choose the account from accounts list: "Advanced Payments Liability"(Or else u call it). What happens is that u will have the liability of 50$ created to the customer in terms of received advance payment. So the journal Entries will be:

Debit: Bank - 100$. Credit: 1. Account Receivable  - 50$ 2. Advance Payment Liability - 50$.

Next time u sell smth to this customer, suppose 60$ so that he has to pay only 10$ more, when u open customer payment document, u will see this 50$ payable in it. U click on reconcile bulean of this 50$ and register the 10$ payment, what happens is: 50$ avance is reconciled and 10$ payment is registered. Journal entries will be as wollows:

Debit: 1. Bank-10$ 2. Advance Payment Liability - 50$. Credit: Account Receivable - 60$.

I think this info might help you.


About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

2 follower(s)


Asked: 7/30/14, 8:20 AM
Seen: 2242 times
Last updated: 3/16/15, 8:10 AM