30 lines
1.4 KiB
Python
30 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
|
|
from odoo.tests import tagged
|
|
from freezegun import freeze_time
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestAccountPartner(AccountTestInvoicingCommon):
|
|
|
|
@freeze_time("2023-05-31")
|
|
def test_days_sales_outstanding(self):
|
|
partner = self.env['res.partner'].create({'name': 'MyCustomer'})
|
|
self.assertEqual(partner.days_sales_outstanding, 0.0)
|
|
move_1 = self.init_invoice("out_invoice", partner, invoice_date="2023-01-01", amounts=[3000], taxes=self.tax_sale_a)
|
|
self.assertEqual(partner.days_sales_outstanding, 0.0)
|
|
move_1.action_post()
|
|
self.env.invalidate_all() #needed to force the update of partner.credit
|
|
self.assertEqual(partner.days_sales_outstanding, 150) #DSO = number of days since move_1
|
|
self.env['account.payment.register'].with_context(active_model='account.move', active_ids=move_1.ids).create({
|
|
'amount': move_1.amount_total,
|
|
'partner_id': partner.id,
|
|
'payment_type': 'inbound',
|
|
'partner_type': 'customer',
|
|
})._create_payments()
|
|
self.env.invalidate_all()
|
|
self.assertEqual(partner.days_sales_outstanding, 0.0)
|
|
self.init_invoice("out_invoice", partner, "2023-05-15", amounts=[1500], taxes=self.tax_sale_a, post=True)
|
|
self.env.invalidate_all()
|
|
self.assertEqual(partner.days_sales_outstanding, 50)
|