Odoo18-Base/addons/sale_loyalty/tests/test_sale_auto_invoice.py

44 lines
1.4 KiB
Python
Raw Permalink Normal View History

2025-01-06 10:57:38 +07:00
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.fields import Command
from odoo.tests import tagged
from odoo.addons.sale_loyalty.tests.common import TestSaleCouponCommon
@tagged('post_install', '-at_install')
class TestSaleAutoInvoice(TestSaleCouponCommon):
def test_automatic_invoice_on_zero_amount_order(self):
self.env['ir.config_parameter'].sudo().set_param('sale.automatic_invoice', 'True')
# Create a loyalty program with 100% discount
self.env['loyalty.program'].sudo().create({
'name': '100discount',
'program_type': 'promo_code',
'rule_ids': [
Command.create({
'code': "100dis",
'minimum_amount': 0,
})
],
'reward_ids': [
Command.create({
'discount': 100,
}),
],
})
# Add order line to order
self.env["sale.order.line"].create({
'order_id': self.empty_order.id,
'product_id': self.product_A.id,
'product_uom_qty': 1,
'price_unit': 200,
})
# Apply discount
self._apply_promo_code(self.empty_order, '100dis')
self.empty_order._validate_order()
self.assertTrue(
self.empty_order.invoice_ids,
"Invoices should be generated for orders with zero total amount",
)