Wednesday, May 28, 2025
3 changes · 17.0
Miscellaneous changes
Problem: Bootstrap grid classes like `row` and `col` are not handled properly when placed inside an `o_text_columns` container. During processing (e.g., for email rendering), rows are expected to be converted to tables — but since `o_text_columns` is not included in the selector query, the transformation is skipped. As a result, when rendering the email, columns are not preserved and fall back to stacked layout. Solution: Update the container selection logic to include `o_text_columns` w
Original PR description
Problem: Bootstrap grid classes like `row` and `col` are not handled properly when placed inside an `o_text_columns` container. During processing (e.g., for email rendering), rows are expected to be…
Problem: Bootstrap grid classes like `row` and `col` are not handled properly when placed inside an `o_text_columns` container. During processing (e.g., for email rendering), rows are expected to be converted to tables — but since `o_text_columns` is not included in the selector query, the transformation is skipped. As a result, when rendering the email, columns are not preserved and fall back to stacked layout. Solution: Update the container selection logic to include `o_text_columns` when querying Bootstrap-based containers that need to be transformed into tables. Steps to reproduce: 1. Go to Email Marketing. 2. Create a new email. 3. Add a Text snippet. 4. Type `/col` and choose "2 Columns". 5. Add text to both columns. 6. Save and send the email. → In the received email, the two columns appear stacked vertically instead of side by side. opw-4675310 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#211109
[FIX] calendar_sms: calendar reminder event matching The Issue SMS reminders are sent to customers for calendar events regardless of whether they are scheduled for 1 hour before or 24 hours before; both reminders are sent. Steps to Reproduce 1. Create two SMS reminders with different timings: one for 1 hour before the event and another for 24 hours before. 2. Create an attendee (since the calendar event administrator will not receive the SMS). Assign the attendee a phone number and an
Original PR description
[FIX] calendar_sms: calendar reminder event matching The Issue SMS reminders are sent to customers for calendar events regardless of whether they are scheduled for 1 hour before or 24 hours before;…
[FIX] calendar_sms: calendar reminder event matching
The Issue
SMS reminders are sent to customers for calendar events regardless of whether they are scheduled for 1 hour before or 24 hours before; both reminders are sent.
Steps to Reproduce
1. Create two SMS reminders with different timings: one for 1 hour before the event and another for 24 hours before.
2. Create an attendee (since the calendar event administrator will not receive the SMS). Assign the attendee a phone number and an email.
3. Configure your SMS account to receive free credits (for local: create a SaaS and use its IAP token and UUID to link the IAP service).
4. Create two calendar events:
- One that starts in 1 hour. (event_1h)
- One that starts in 24 hours. (event_24h)
5. Add both reminders (1-hour and 24-hour reminders that we will call reminder_1h and reminder_24h) to each event and include the attendee you created. Accept the event invitation on behalf of the attendee.
6. Run the scheduled action that triggers event reminders.
Actual Behavior
For both events, both reminders are triggered.
for event_1h, reminder_1h and reminder_24h are sent.
for event_24h, reminder_1h and reminder_24h are sent.
Expected behavior:
For event_1h, reminder_1h is sent.
For event_24h, reminder_24h is sent.
Why Does This Happen?
After the SQL query, the result is a dictionary:
{"reminder_1h": "event_1h", "reminder_24h": "event_24h"}
(In reality, these should be IDs, but they are represented as strings for clarity.)
The code in the calendar_sms module retrieves all events from the dictionary, so we have a list with [event_1h, event_24h].
It also fetches the reminders that are in the keys of the dictionary (reminder_1h, reminder_24h).
Then it iterates through the events and for each event, checks if the reminders we have exist in the event.
If it exists, it sends an SMS.
(e.g., event_24h has both reminder_1h and reminder_24h linked to it, so it will send both reminders even if one states it starts in one hour, whereas it really starts in 24h).
OPW-4473553
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#195782This PR updates the `l10n_pe_withhold_code` field in the `product.template` model for the Peruvian localization (`l10n_pe_edi`) to reflect the latest official SUNAT withholding catalog (as of April 2025). Changes were made directly in the `fields.Selection`, maintaining compatibility with existing data by preserving obsolete values used in previous versions. This update helps ensure consistency with current SUNAT requirements while avoiding potential issues in existing databases. Refere
Original PR description
This PR updates the `l10n_pe_withhold_code` field in the `product.template` model for the Peruvian localization (`l10n_pe_edi`) to reflect the latest official SUNAT withholding catalog (as of April 2025). Changes were made directly in the `fields.Selection`, maintaining compatibility with existing data by preserving obsolete values used in previous versions. This update helps ensure consistency with current SUNAT requirements while avoiding potential issues in existing databases. Reference: [Reglas de Validación actualizado al 21/04/2025 (Nuevo)](https://cpe.sunat.gob.pe/sites/default/files/inline-files/AjustesValidacionesCPEv20250421.xlsx) Forward-Port-Of: odoo/enterprise#85917