Files
Yamen Ahmad 3e83d8d7d5 feat: add complete EnCoach backend — Odoo 19 + all addons
Includes:
- Odoo 19 framework (odoo/)
- 27 custom EnCoach addons (new_project/custom_addons/)
  - encoach_core, encoach_api, encoach_lms_api, encoach_adaptive_api
  - encoach_exam, encoach_taxonomy, encoach_adaptive, encoach_assignment
  - encoach_ai, encoach_ai_grading, encoach_ai_generation, encoach_ai_media
  - encoach_courseware, encoach_communication, encoach_subscription
  - encoach_notification, encoach_approval, encoach_branding
  - encoach_classroom, encoach_registration, encoach_stats
  - encoach_faq, encoach_ticket, encoach_training, encoach_resources
  - encoach_adaptive_ai, encoach_sis
- 21 OpenEduCat Enterprise modules (new_project/enterprise-19/)
- 14 OpenEduCat Community modules (new_project/openeducat_erp-19.0/)
- Configuration: odoo.conf, requirements.txt, scripts
- 200+ REST API endpoints with JWT authentication
- SRS and test documentation

Made-with: Cursor
2026-04-01 17:10:04 +04:00

34 lines
1.2 KiB
Python

from odoo.addons.point_of_sale.tests.common import CommonPosTest
from odoo.fields import Command
class CommonPosLoyaltyTest(CommonPosTest):
@classmethod
def setUpClass(self):
super().setUpClass()
self.loyalty_create_programs(self)
self.loyalty_create_rewards(self)
def loyalty_create_programs(self):
self.four_20_dollars_one_free_program = self.env['loyalty.program'].create({
'name': 'Buy 4 20 dollars Take 1 20 dollars',
'program_type': 'loyalty',
'trigger': 'auto',
'applies_on': 'both',
'rule_ids': [Command.create({
'product_ids': self.twenty_dollars_no_tax.product_variant_id.ids,
'reward_point_mode': 'unit',
'minimum_qty': 1,
})],
})
def loyalty_create_rewards(self):
self.twenty_dollars_reward = self.env['loyalty.reward'].create({
'program_id': self.four_20_dollars_one_free_program.id,
'reward_type': 'product',
'reward_product_id': self.twenty_dollars_no_tax.product_variant_id.id,
'reward_product_qty': 1,
'required_points': 4,
})