fix: explicitly search for Membership Silver program and clean up README formatting
This commit is contained in:
parent
94e5866008
commit
3a156a188e
29
README.md
29
README.md
@ -4,29 +4,18 @@ This custom Odoo module enhances the POS Loyalty interface and partner creation
|
|||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
1. **Strict Customer Selection Filter:**
|
* **Strict Customer Selection Filter:** Limits customer loading and search lists in the POS UI strictly to real individuals who hold an active membership or loyalty card (`is_loyalty_member = True`). Automatically excludes cashier accounts, user accounts, and company partners from being selected as customers.
|
||||||
- Limits customer loading and search lists in the POS UI strictly to real individuals who hold an active membership or loyalty card (`is_loyalty_member = True`).
|
|
||||||
- Automatically excludes cashier accounts, user accounts, and company partners from being selected as customers.
|
|
||||||
|
|
||||||
2. **Simplified Customer Creation Wizard:**
|
* **Simplified Customer Creation Wizard:** Overrides the POS Customer Edit/Creation screen to show only essential details: Name, Phone, Email, Address (Street, Zip, City, State, Country), and Birthday.
|
||||||
- Overrides the POS Customer Edit/Creation screen to show only essential details:
|
|
||||||
* Name
|
|
||||||
* Phone
|
|
||||||
* Email
|
|
||||||
* Address (Street, Zip, City, State, Country)
|
|
||||||
* Birthday
|
|
||||||
|
|
||||||
3. **Automatic Lowest Level Membership Assignment:**
|
* **Automatic Lowest Level Membership Assignment:** Automatically provisions new partners with a loyalty card for the lowest membership tier (`Membership Silver`) immediately upon registration.
|
||||||
- Automatically provisions new partners with a loyalty card for the lowest membership tier (`Membership Silver`) immediately upon registration.
|
|
||||||
|
|
||||||
4. **Robust Multi-Company Loyalty Processing:**
|
* **Robust Multi-Company Loyalty Processing:** Solves a core Odoo 19 multi-company operational bug where cashiers in branch companies encounter "Access Errors" when validating orders for customers whose loyalty cards belong to the parent company. Bypasses company-specific record rules during POS loyalty audit logging using standard and safe `sudo` environment execution.
|
||||||
- Solves a core Odoo 19 multi-company operational bug where cashiers in branch companies encounter "Access Errors" when validating orders for customers whose loyalty cards belong to the parent company.
|
|
||||||
- Bypasses company-specific record rules during POS loyalty audit logging using standard and safe `sudo` environment execution.
|
|
||||||
|
|
||||||
5. **Loyalty Reward and Point Access Control:**
|
* **Loyalty Reward and Point Access Control:** Restricts loyalty program reward eligibility, point balance displays, and program applicability in the POS UI strictly to customers who have a persisted, active card in the database for that specific program. Prevents unauthorized claim/access to zero-point rewards (e.g., 100% discount rewards in executive/exclusive programs) by non-enrolled members.
|
||||||
- Restricts loyalty program reward eligibility, point balance displays, and program applicability in the POS UI strictly to customers who have a persisted, active card in the database for that specific program.
|
|
||||||
- Prevents unauthorized claim/access to zero-point rewards (e.g., 100% discount rewards in executive/exclusive programs) by non-enrolled members.
|
|
||||||
|
|
||||||
## Technical Details
|
## Technical Details
|
||||||
- **JS OWL Patching:** Overrides POS frontend partner management and order processing (`PosOrder`) safely using clean, standard owl-level class overrides to filter program eligibility, claimable rewards, and loyalty point lists based on card status.
|
|
||||||
- **Python Inheritance:** Customizes backend models (`res.partner`, `pos.order`) to clean loading domains and securely provision cross-company data.
|
* **JS OWL Patching:** Overrides POS frontend partner management and order processing (`PosOrder`) safely using clean, standard owl-level class overrides to filter program eligibility, claimable rewards, and loyalty point lists based on card status.
|
||||||
|
|
||||||
|
* **Python Inheritance:** Customizes backend models (`res.partner`, `pos.order`) to clean loading domains and securely provision cross-company data.
|
||||||
|
|||||||
@ -63,10 +63,15 @@ class ResPartner(models.Model):
|
|||||||
|
|
||||||
# Find the lowest membership program level (Membership Silver)
|
# Find the lowest membership program level (Membership Silver)
|
||||||
lowest_program = self.env['loyalty.program'].sudo().search(
|
lowest_program = self.env['loyalty.program'].sudo().search(
|
||||||
[('multi_level_membership', '=', True)],
|
[('multi_level_membership', '=', True), ('name', '=ilike', 'Membership Silver')],
|
||||||
order='minimum_spend asc',
|
|
||||||
limit=1
|
limit=1
|
||||||
)
|
)
|
||||||
|
if not lowest_program:
|
||||||
|
lowest_program = self.env['loyalty.program'].sudo().search(
|
||||||
|
[('multi_level_membership', '=', True)],
|
||||||
|
order='minimum_spend asc',
|
||||||
|
limit=1
|
||||||
|
)
|
||||||
if lowest_program:
|
if lowest_program:
|
||||||
existing_card = self.env['loyalty.card'].sudo().search([
|
existing_card = self.env['loyalty.card'].sudo().search([
|
||||||
('partner_id', '=', partner.id),
|
('partner_id', '=', partner.id),
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user