forked from Mapan/odoo17e
75 lines
3.1 KiB
Python
75 lines
3.1 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo.addons.point_of_sale.tests.test_frontend import TestPointOfSaleHttpCommon
|
|
from odoo import fields
|
|
from odoo.tests.common import tagged
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestPoSSubscription(TestPointOfSaleHttpCommon):
|
|
def test_pos_recurring_product_invoicing(self):
|
|
""" Test if qty_invoiced is correctly updated when a recurring product is
|
|
invoiced from the POS and the next_invoice_date is updated. """
|
|
plan_month = self.env['sale.subscription.plan'].create({'name': 'Monthly', 'billing_period_value': 1, 'billing_period_unit': 'month'})
|
|
self.recurring_product_id = self.env['product.product'].create({
|
|
'name': 'Test2',
|
|
'available_in_pos': True,
|
|
'recurring_invoice': True,
|
|
'type': 'product',
|
|
'lst_price': 250,
|
|
'taxes_id': False,
|
|
})
|
|
|
|
self.sale_order_id = self.env['sale.order'].create({
|
|
'partner_id': self.partner_a.id,
|
|
'plan_id': plan_month.id,
|
|
'next_invoice_date': fields.Date.from_string('2021-01-01'),
|
|
})
|
|
|
|
self.order_line_id2 = self.env['sale.order.line'].create({
|
|
'order_id': self.sale_order_id.id,
|
|
'product_id': self.recurring_product_id.id,
|
|
'product_uom_qty': 1,
|
|
'price_unit': 250,
|
|
})
|
|
self.main_pos_config.with_user(self.pos_user).open_ui()
|
|
current_session = self.main_pos_config.current_session_id
|
|
|
|
pos_order = {'data':
|
|
{'amount_paid': 250,
|
|
'amount_return': 0,
|
|
'amount_tax': 0,
|
|
'amount_total': 250,
|
|
'date_order': fields.Datetime.to_string(fields.Datetime.now()),
|
|
'fiscal_position_id': False,
|
|
'to_invoice': True,
|
|
'partner_id': self.partner_a.id,
|
|
'pricelist_id': self.main_pos_config.available_pricelist_ids[0].id,
|
|
'lines': [[0,
|
|
0,
|
|
{'discount': 0,
|
|
'pack_lot_ids': [],
|
|
'price_unit': 250,
|
|
'product_id': self.recurring_product_id.id,
|
|
'price_subtotal': 250,
|
|
'price_subtotal_incl': 250,
|
|
'sale_order_line_id': self.sale_order_id.order_line[0],
|
|
'sale_order_origin_id': self.sale_order_id,
|
|
'qty': 1,
|
|
'tax_ids': []}]],
|
|
'name': 'Order 00044-003-0014',
|
|
'pos_session_id': current_session.id,
|
|
'sequence_number': self.main_pos_config.journal_id.id,
|
|
'statement_ids': [[0,
|
|
0,
|
|
{'amount': 250,
|
|
'name': fields.Datetime.now(),
|
|
'payment_method_id': self.main_pos_config.payment_method_ids[0].id}]],
|
|
'uid': '00044-003-0014',
|
|
'user_id': self.env.uid},
|
|
}
|
|
|
|
self.env['pos.order'].create_from_ui([pos_order])
|
|
self.assertEqual(self.sale_order_id.order_line[0].qty_invoiced, 1)
|
|
self.assertEqual(self.sale_order_id.next_invoice_date, fields.Date.from_string('2021-02-01'))
|