Skip to content
Snippets Groups Projects
Commit ddca80eb authored by roen-odoo's avatar roen-odoo
Browse files

[FIX] product_margin: product margin use partial/reversed payment


Current behavior:
Partial and reversed payment were not taken into account for the
product margin calculation.

Steps to reproduce:
1. Create a product with an common avco setup.
2. Go to purchase 1 unit at 10 dollars.
3. Upon confirming the invoice your cost is updated in the product margin
   report.
4. Create a partial payment on the bill. This creates issues as the
   product margin report is looking for paid or open not partially
   paid so it won't show up in the cost calculation.
5. Once the bill is fully paid then it shows up in the cost section
   of the product margin report again as its payment status moves to
   Paid.
6. Create a sales order for the unit at 100 dollars.
7. Invoice for the full amount then cancel it by creating a full credit
   note to put the original invoice in reversed status. This will have
   only the credit note show up in the turnover calculation as it is in
   paid status while the original invoice doesn't have a paid or open
   status so it isn't taken into account.

opw-2887240

closes odoo/odoo#100022

Signed-off-by: default avatarQuentin De Paoli <qdp@odoo.com>
parent 52d5515d
No related branches found
No related tags found
No related merge requests found
......@@ -105,13 +105,13 @@ class ProductProduct(models.Model):
payment_states = ()
if invoice_state == 'paid':
states = ('posted',)
payment_states = ('in_payment', 'paid',)
payment_states = ('in_payment', 'paid', 'reversed')
elif invoice_state == 'open_paid':
states = ('posted',)
payment_states = ('not_paid', 'in_payment', 'paid')
payment_states = ('not_paid', 'in_payment', 'paid', 'reversed', 'partial')
elif invoice_state == 'draft_open_paid':
states = ('posted', 'draft')
payment_states = ('not_paid', 'in_payment', 'paid')
payment_states = ('not_paid', 'in_payment', 'paid', 'reversed', 'partial')
if "force_company" in self.env.context:
company_id = self.env.context['force_company']
else:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment