odoo18/addons/l10n_fr_pos_cert/tests/test_hash.py

85 lines
2.8 KiB
Python

from odoo.addons.point_of_sale.tests.common import TestPointOfSaleCommon
from odoo.addons.account_edi.tests.common import AccountTestInvoicingCommon
from odoo.tests import tagged
from odoo import fields
@tagged('post_install_l10n', 'post_install', '-at_install')
class TestHash(TestPointOfSaleCommon):
@classmethod
@AccountTestInvoicingCommon.setup_country('fr')
def setUpClass(cls):
super().setUpClass()
def test_hashes_should_be_equal_if_no_alteration(self):
product1 = self.env['product.product'].create({
'name': 'product1',
})
self.pos_config.open_ui()
pos_session = self.pos_config.current_session_id
draft_order = {
'access_token': False,
'amount_paid': 0,
'amount_return': 0,
'amount_tax': 0,
'amount_total': 0,
'date_order': fields.Datetime.to_string(fields.Datetime.now()),
'lines': [],
'name': '/',
'partner_id': False,
'session_id': pos_session.id,
'sequence_number': 2,
'payment_ids': [],
'uuid': '12345-123-1234',
'last_order_preparation_change': '{}',
'user_id': self.env.uid,
'state': 'draft',
}
self.PosOrder.sync_from_ui([draft_order])
self.env.invalidate_all()
paid_order = {
'access_token': False,
'amount_paid': 20,
'amount_return': 5.0,
'amount_tax': 0,
'amount_total': 15.0,
'date_order': fields.Datetime.to_string(fields.Datetime.now()),
'lines': [[0,
0,
{'discount': 0,
'pack_lot_ids': [],
'price_unit': 15.0,
'product_id': product1.id,
'price_subtotal': 15.0,
'price_subtotal_incl': 15.0,
'qty': 1,
'tax_ids': []}]],
'name': 'Order 12345-123-1234',
'partner_id': False,
'session_id': pos_session.id,
'sequence_number': 2,
'payment_ids': [[0,
0,
{'amount': 20.0,
'name': fields.Datetime.now(),
'payment_method_id': self.cash_payment_method.id}]],
'uuid': '12345-123-1234',
'last_order_preparation_change': '{}',
'user_id': self.env.uid,
'state': 'paid',
}
self.PosOrder.sync_from_ui([paid_order])
self.env.invalidate_all()
posted_order = self.env['pos.order'].search([('uuid', '=', '12345-123-1234')])
self.assertEqual(posted_order.state, 'paid')
self.pos_config.current_session_id.action_pos_session_closing_control()
self.assertEqual(posted_order.l10n_fr_hash, posted_order._compute_hash(''))