You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
3.1 KiB

  1. # © 2020 Solvos Consultoría Informática (<http://www.solvos.es>)
  2. # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
  3. from odoo import fields
  4. from odoo.tests.common import TransactionCase
  5. class TestModule(TransactionCase):
  6. def setUp(self):
  7. super(TestModule, self).setUp()
  8. # Get Registry
  9. self.PosOrder = self.env['pos.order']
  10. self.AccountPayment = self.env['account.payment']
  11. # Get Object
  12. self.pos_product = self.env.ref('point_of_sale.whiteboard_pen')
  13. self.pricelist = self.env.ref('product.list0')
  14. self.partner = self.env.ref('base.res_partner_12')
  15. # Create a new pos config and open it
  16. self.pos_config = self.env.ref('point_of_sale.pos_config_main').copy()
  17. self.pos_config.open_session_cb()
  18. def test_return_traceability(self):
  19. order = self._create_order()
  20. order_line = order.lines[0]
  21. self.assertTrue(order.is_returnable)
  22. prepared_line = order._prepare_done_order_line_for_pos(order_line)
  23. self.assertEqual(prepared_line['id'], order_line.id)
  24. self.assertEqual(prepared_line['qty_returnable'], order_line.qty)
  25. res_refund = order.refund()
  26. order_refund = self.PosOrder.browse(res_refund['res_id'])
  27. self.assertFalse(order.is_returnable)
  28. self.assertFalse(order_refund.is_returnable)
  29. prepared_line = order._prepare_done_order_line_for_pos(order_line)
  30. self.assertEqual(prepared_line['qty_returnable'], 0)
  31. self.assertTrue('is_returnable' in
  32. self.PosOrder._prepare_fields_for_pos_list())
  33. def _create_order(self):
  34. order_data = {
  35. 'id': u'0006-001-0010',
  36. 'to_invoice': True,
  37. 'data': {
  38. 'pricelist_id': self.pricelist.id,
  39. 'user_id': 1,
  40. 'name': 'Order 0006-001-0010',
  41. 'partner_id': self.partner.id,
  42. 'amount_paid': 0.9,
  43. 'pos_session_id': self.pos_config.current_session_id.id,
  44. 'lines': [[0, 0, {
  45. 'product_id': self.pos_product.id,
  46. 'price_unit': 0.9,
  47. 'qty': 1,
  48. 'price_subtotal': 0.9,
  49. 'price_subtotal_incl': 0.9,
  50. }]],
  51. 'statement_ids': [[0, 0, {
  52. 'journal_id': self.pos_config.journal_ids[0].id,
  53. 'amount': 0.9,
  54. 'name': fields.Datetime.now(),
  55. 'account_id':
  56. self.env.user.partner_id.property_account_receivable_id.id,
  57. 'statement_id':
  58. self.pos_config.current_session_id.statement_ids[0].id,
  59. }]],
  60. 'creation_date': u'2018-09-27 15:51:03',
  61. 'amount_tax': 0,
  62. 'fiscal_position_id': False,
  63. 'uid': u'00001-001-0001',
  64. 'amount_return': 0,
  65. 'sequence_number': 1,
  66. 'amount_total': 0.9,
  67. }}
  68. result = self.PosOrder.create_from_ui([order_data])
  69. order = self.PosOrder.browse(result[0])
  70. return order