Daily updates from Odoo
Navigate
Branch
Monday, August 12, 2019
35 changes
New functionality added to Odoo
Odoo now supports sending SMS messages in bulk through a new Mass SMS app built alongside mass mailing. Businesses can run SMS marketing campaigns, manage phone opt-outs and blacklists, track delivery outcomes, and use SMS-specific campaign views and reporting.
Original PR description
PURPOSE SMS are a powerful marketing tool. For instance it is perfect to announce a sale or to communicate a coupon code, to welcome a new customer in a fidelity program, ... Purpose of this task is…
PURPOSE
SMS are a powerful marketing tool. For instance it is perfect to announce a
sale or to communicate a coupon code, to welcome a new customer in a fidelity
program, ...
Purpose of this task is to integrate SMS sending in batch in mass mailing. It
will use same mailing objects but sending SMS instead of emails. Some metrics
and flows will have to be slightly updated at the same time.
SPECIFICATIONS
Purpose of this merge is to add Mass SMS application allowing to send SMS
in batch. It is build on mass mailing application but with its own menus,
views and flows.
See sub commits for more details. Here is a summary of main changes
in this merge.
PHONE BLACKLIST
Add a blacklist mechanism for phone numbers used to send SMS like
what already exists for email addresses when sending emails.
Define a new phone.blacklist model, holding a number and the state of the
blacklist (active field), as well as tools methods to access it. Make it
as private as possible, accessing it in sudo once access are granted.
Define a new mail.thread.phone mixin computing the blacklist status of a
record.
BLACKLIST / ERROR IN COMPOSER
Support blacklisted and already-done numbers when sending SMS :
* blacklist support: necessary to avoid sending SMS in batch to people that
asked to stop being spammed;
* already-done support: when performing mailing in batch or doing A/B testing
we may have already-done SMS;
When sending SMS in batch, already update state and error code of SMS that
should not be sent
* blacklisted number: set to canceled, with blacklist error code;
* duplicated number: set to canceled, with duplicated error code;
* invalid number (cannot sanitize): set to error, with either missing number
if void or wrong format if not void;
SPEEDUP BATCH LOGGING
Allow quick message creation by allowing create multi on mail.message.
Also introduce a new helper tool method to log in batch on records.
IMPROVE SMS COMPOSER ONBOARDING AND USE
Clean the use and options of sms composer after FP feedback, notably
* see https://s.nimbusweb.me/share/3167586/ap1xpy95rz29a5cys576 as basis;
* globally, do not display invalid recipients, only valid / invalid count
as well as current selection / active domain counts;
* consider logging a note as default behavior when using the composer;
* simplify code: when doing a mass SMS, send SMS and attach a simple note
to the document;
Limit use of templates to models that are really capable of sending
SMS. Templates are now available on models that inherit from mail.thread
and effectively have fields used in SMS sending.
MASS MAILING PREPARATION
Prepare mass mailing module to addition of mass_mailing_sms.
Mailing model: mailing type
* add a mailing_type selection field;
* mass mailing contains only 'mail';
* synchronize medium accordingly;
* update actions of mass mailing application to add a domain on mailing
type being 'mail';
Mailing contact
* remove is_email_valid field as its purpose is achieved by email_normalized
field coming from address mixin (added by blacklist management);
Mailing contact subscription
* clean a bit fields and views as this should stay a technical model;
Trace model and report: trace type
* add a trace_type selection field;
* mass mailing contains only 'mail';
ADD MASS MAILING SMS
Create a new application called "Mass SMS" that follows the structure of
mass_mailing application.
General guidelines
* use the fa-comment icon for this module;
* add a "Notification type" field to the mailings: email or sms. Set it
invisible and set as domain from context when choosing mass mailing or
mass sms application (menus / action specific);
* adapt the metrics from Mass Mailing to SMS
* sent = received = whether the SMS was sent or not;
* opened => we don't have this information;
* replied => we don't have this information;
* clicks = from link tracker (no change of behavior);
* bounced = SMS that failed to be delivered because the format is wrong;
* exception = any issue when sending SMS;
* keep the Mailing Lists menu, hide email related fields on contact model;
* settings: hide the "Specific Mail Server" feature
Opt-out and blacklist handling
* we do support mailing lists because they could come from different sources
and are a way to communicate with a specific audience (and not just a list
we bought), e.g. subscribe to this list to be kept updated whenever this
product is back in stock, or to receive results of this ...
* if the SMSing is from a list, opt-out removes ourselves from the list;
* if it is from the contact ==> Sent to blacklist;
* allow to attach unsubscription links in sent SMS, redirecting to a new
route in mass mailing SMS allowing quick unsubscribe and/or blacklist
of phone numbers;
Error management
* if the user clicks on Send Now / Schedule / Test and does not have enough
credits, open the "Insufficient credits" modal in a lazy option (aka when
having failed statistics linked to insufficient credits);
* on the mailing, we however display this failure as :
* a message on the mailing kanban view
* a message on the top of the form view + same behavior as the mailing and
"Could not be sent" https://www.screencast.com/t/BExgd1Gc;
LINKS
Task 1997464
PR #34424
Original SMS addition: Task 1922163 (4287481)Adds tracking of products shoppers spend time viewing, then shows those items in a recently viewed products carousel. This helps customers rediscover items and add them to the cart more easily, including after creating an account.
Original PR description
A new module has been created: website_tracking. It's purpose for now is to keep track of products viewed by a user and display them in a snippet. Now when a user browse products in eCommerce, we…
A new module has been created: website_tracking. It's purpose for now is to keep track of products viewed by a user and display them in a snippet. Now when a user browse products in eCommerce, we keep track of the products he looked at for more than 3 sec. If the user is connected it is stored in the DB, else it is stored in session and as a cookie. When a user creates an account, its products viewed are stored in DB from the session/cookie and those are deleted. The recently viewed products are displayed as a snippet but also with the customize options in cart, product and products templates of website_sale. Products that are in cart will not be returned as recently viewed and also on the shop/products page the product displayed will not appear as a recently viewed product. It is possible to add a recently viewed product to the cart directly from the carousel, it will not redirect to the cart. If we are on the cart page, the product is displayed in the cart. task-1984575 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Marketing teams can now add SMS text message activities to automated campaigns alongside email activities. This makes it easier to send promotions, coupon codes, welcome messages, and other short communications through the same campaign workflows, with SMS-specific labels and sending metrics.
Original PR description
PURPOSE SMS are a powerful marketing tool. For instance it is perfect to announce a sale or to communicate a coupon code, to welcome a new customer in a fidelity program, ... Purpose of this task is…
PURPOSE
SMS are a powerful marketing tool. For instance it is perfect to announce a
sale or to communicate a coupon code, to welcome a new customer in a fidelity
program, ...
Purpose of this task is to integrate SMS capabilities in mass mailing. It
will use same mailing objects but sending SMS instead of emails. Some metrics
and flows will have to be slightly updated at the same time.
SPECIFICATIONS
Update marketing automation to mailing changes related to SMS addition,
notably mailing type field and some code / model / view changes.
Integrate SMS activities inside marketing automation :
* See https://drive.google.com/a/odoo.com/file/d/1lJdeoNtYsJtyFMWyrHJUZxAn3NFLZDSQ/view?usp=drivesdk
* add value 'SMS Text Message' to field 'Activity Type' (in second position)
* switch field 'Activity Type' widget to vertical radio
* field 'Template' should display SMS or Mail template depending of the value
of 'Activity Type'
For SMS activities
* in the marketing.campaign formview, the 'workflow card' of an SMS activity
should have the number of texts sent at the bottom (the Clicked and Replied
stats can be removed);
* Rename "EMAIL DETAILS" to "SMS DETAILS"
* Rename "Email" to "SMS Text Message"
* The icon should be switched to fa-comment (https://nimb.ws/j48hp2)
As we have no way to know whether the SMS was received, and since we do not
handle answers, in the 'Add child activity' widget (at the bottom of the card)
the only option available is 'add another activity' (like for server action
activities), see https://drive.google.com/a/odoo.com/file/d/1dkAWsl520Nlg4q8XCmI-eMKbEfsAje6j/view?usp=drivesdk
LINKS
Task 1997464 (mass mailing SMS)
Task 1922198 (marketing automation SMS)
PR #4864
Community PR odoo/odoo#34424Enhancements to existing features
This update makes Odoo eLearning easier to manage and use day to day. Course teams can remove attendees more directly, course durations are calculated more clearly, certifications are easier to enable, and several frontend screens receive usability and readability improvements.
Original PR description
PURPOSE Improve daily use of eLearning by improving backend actions (notably attendees management) and performing a back2basics improvement flow on front-end (duration computation, allow to install surveys directly from frontend for certifications, various design improvements). SPECIFICATIONS See sub commits and tasks for more details. LINKS Task ID 2045620 (PR #35415) allow to remove attendees from backend Task ID 2007294 (PR #35516) better duration computation Task ID 2026846 (PR #34592) onboarding and back 2 basics
The web module’s test tools now support simulating multiple files being dragged and dropped at once. This helps developers better validate file upload workflows, reducing the risk of issues in features that allow users to upload several files together.
Original PR description
This commit adds a function to mock multi-file drops. Task: #2002553
This change reorganizes how Gantt view rules are checked so they are managed in the right area of the system. It also documents a Gantt view option, making future maintenance and configuration clearer for teams working with planning views.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Accounting processes can now recalculate invoice details for several invoices in one operation instead of handling them one by one. This improves efficiency for batch updates and automated workflows that need to refresh invoice lines.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: You can only recompute one invoice at a time (through xml e.g.) Desired behavior after PR is merged: You can recompute multiple at the same time -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Colombian localization now includes a UVT value field on company records. This supports future or related tax calculations that depend on Colombia's official tax value unit, helping companies maintain more accurate local tax settings.
Original PR description
Add the UVT field in the res_company table, which will be used to compute taxes amounts. From task 20051 @qdp-odoo
The partner/contact form is streamlined to make everyday customer and supplier setup easier. Bank account details now show whether an IBAN appears valid, and new partners are treated as companies by default to better match common business workflows.
Original PR description
Description of the issue/feature this PR addresses: Clean form view and add a new widget to check if IBAN account number is correct Current behavior before PR: Desired behavior after PR is merged: The view is cleaned and a widget indicate is the IBAN account number is correct on accounting page of partner. When creating a partner, it's a company by default. id=2025362 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update improves the usability of employee profile pages, making HR-related information easier to access and manage. It also aligns related user profile views across communication, forum, and live chat areas for a more consistent experience.
Original PR description
Description of the issue/feature this PR addresses: Improve the usability of the employee profile in 12.2 Current behavior before PR: Desired behavior after PR is merged: -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The web export wizard is easier to use, with searchable and alphabetized fields, simpler template controls, and clearer tools for managing exported fields. Exports now use XLSX, allowing much larger spreadsheets and better compatibility with modern office tools.
Original PR description
This PR includes various improvements in the export wizard as follow.
- Remove options in the middle ('add', 'remove', etc).
- Add 'handle' widgets and 'bin' icons to edit the list of fields to export.
- Export to XLSX instead of XLS. With XLSX format export rows limit are increased to `1048576`.
- Added search bar to filter fields by keywords.
- All available fields are sorted alphabetically (case sensitive).
- An export mode is now handled with a single checkbox instead of two radios.
- Improve UX/UI for export templates.This update makes purchasing screens and related unit-of-measure and stock views easier to use. It helps purchasing teams work more efficiently by streamlining common interactions and improving the clarity of information shown during purchase operations.
Original PR description
Description of the issue/feature this PR addresses: Improve usability task 2040826 Current behavior before PR: Desired behavior after PR is merged: -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Cash basis accounting now uses the actual payment date rather than the invoice date. This makes tax and accounting records better reflect when money was received or paid, improving reporting accuracy for businesses using cash basis rules.
This update improves the appearance of user preference controls by keeping image action buttons aligned and ensuring profile pictures display as clean circles. It provides a more polished and consistent experience in the web interface, especially when users upload rectangular avatar images.
Original PR description
Task Link: https://www.odoo.com/web#id=2042276&action=327&model=project.task&view_type=form&menu_id=4720 Pad Link: https://pad.odoo.com/p/r.a91623a4f361ee1ad7681b73a0106cd8 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update prevents point-of-sale settings from being changed while related sessions, including rescue sessions, are open. It helps avoid mismatches between sales already entered and the payment, journal, or pricing options available in the POS configuration.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Form pages now keep status indicators and action buttons on one line by automatically moving extra buttons into a More menu when space is limited. This makes forms easier to read and use, especially on smaller screens or crowded records.
Original PR description
This rev. improves the way the content of the <header> tag in form views is rendered, such that the statusbar buttons are always displayed in a single line. The buttons take as much space they need, and the statusbar take the remaining space. It computes how many buttons it can display, and if there is not enough space for all buttons, the remaining ones are automatically put in a 'More' dropdown. Task 1932190 Co-authored-by: Parth Choksi <pch@odoo.com> Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change stops recording changing line numbers in exported code translation files, since those numbers were only informational and not used by the system. It reduces unnecessary translation file differences when source code changes, making translation maintenance easier and reviews cleaner.
Original PR description
The line number was only indicative and was not used by the system. When the translations source were updated, a big part of the diff was only about the line numbers. Ignore the given res_id value and export the line at 0 When reading the po file, the res_id from the file is still read and stored in database but should be ignored
Documents now shows a progress bar for each file being uploaded in the kanban view. This gives users clearer feedback while uploads are in progress, reducing uncertainty when adding documents.
Original PR description
This commit adds progress bars to represent the uploads in documents, each upload in documents has a progress bar in the kanban view. Task: #2002553
This update completes missing payroll demo records for Laurie Poiret, including manager, user, partner, bank account, and accounting journal details. It makes demo payroll scenarios more complete and reliable for testing, training, and demonstrations.
Original PR description
Add a manager for Laurie Poiret Add a user for Laurie Poiret Link a partner to Laurie Poiret Add bank account for the laurie poiret private address Add journal for the payslip computation id=2031854
Payroll contract creation now narrows salary structure type choices based on the relevant company and automatically fills the field when only one option is available. This reduces manual entry and helps prevent selecting an incorrect payroll setup for employees.
Original PR description
When creating contract, the field structure type is empty by default. Domain on hr.contract for structure type depends of company. If there are only one structure type available for this company, set it by default. id=2034498
The Gantt planning view now handles its own validation within the Gantt module, making future maintenance simpler and less risky. It also adds a safer way to choose which form opens from Gantt items, reducing the chance of context-related issues for users.
The HR Referral app now lets administrators restart the onboarding experience when using debug mode, making it easier to review or test the introductory flow. Referral list views were also adjusted so images stay within a consistent height, improving readability and visual consistency.
Original PR description
SPECS 1/ Add a button to restart the onboarding in debug mode 2/ Limit image height to 70px in list views (friends & levels)
Helpdesk teams now have a clearer option for when tracked time should be reinvoiced to customers. Ticket forms are simplified so project and task details only appear when they are needed for customer billing, reducing confusion for support teams.
Demo partner records are updated so contacts that are not companies are clearly identified as individuals. This keeps sample data aligned with the new default behavior where newly created partners are treated as companies unless specified otherwise.
Original PR description
On res_partner, default type for is_company is now True, so in data, when we create a new partner, we must indiquate that it isn't a company. id=2025362
Shipping teams can now choose whether the sender or recipient pays duties and customs fees for dutiable international shipments. This makes DHL, FedEx, and UPS shipping charges more flexible and better aligned with customer agreements or business policies.
Original PR description
Added the possibility to choose who will pay the tax. Task id: 1970027 Add field to DHL
The form status bar layout has been improved so status steps adapt better when space is limited. This helps users read and navigate workflow statuses more comfortably, especially on smaller screens or crowded forms.
Original PR description
This rev. is the counterpart of odoo/odoo#34293
Resolved issues and error corrections
This fix improves how portal message attachments are handled so attached files are properly linked and emails still send even when the message text is empty. It also makes send failures appear immediately with clearer user-facing errors instead of a generic crash page.
Original PR description
Follow up of 61de1c2 - Remove the dangerous **kw from the route in favor of specifying useful args. - Use the existing method to link attachments to message instead of duplicating the logic in an incomplete manner. - Fix an issue where the actual email would not be sent if the message was empty but an attachment was defined. - Ensure the send attempt is done immediately instead of after the cr commit. The goal is to show potential error messages correctly to the user with the crash manager instead of a generic error page. This also increases the send timeout and prevents the error in the first place in most situations.
This fixes an issue where the invoice action from a partner record could show no invoices because the filter was incorrect. Business users can now reliably access the related invoices they expect to see.
Original PR description
The domain could not return any invoice Task 2052468 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix ensures Odoo can still format numbers and amounts when a user's browser language is not installed in the system. It prevents avoidable errors for customers using unsupported language settings and keeps pages or reports working normally.
Original PR description
- Since commit https://github.com/odoo/odoo/commit/f5cd483216af01001f44a41f7d48f042b9f56ff9 the method `_lang_get` doesn't fallback on a language if the asked language isn't found. This causes issues with `formatLang` that uses the language on the context, which is the language set on the client browser (in most cases). Meaning, if 'en_US' is the only installed language and a customer has set his browser to `fr_FR`, when calling `formatLang` this will crash since no language has been found and `format` on `res.lang` requires a singleton. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes incorrect tax calculations when invoices or point-of-sale orders use layered or price-included taxes. Businesses get more accurate tax journal entries and totals, reducing accounting errors in complex tax scenarios.
Original PR description
task: https://www.odoo.com/web#id=39945&action=333&active_id=967&model=project.task&view_type=form&menu_id=4720 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Employees can now reset their own payroll-related expense reports to draft without needing expense approver permissions. This removes an unnecessary blocker while keeping the change limited to the payroll expenses workflow.
Original PR description
The field refund_in_payslip is only writable for hr_expense_team_approver users, using sudo will enable a simple internal user to reset his expense report to draft
The form view now hides the Action dropdown when there are no available buttons to show. This prevents users from seeing an empty menu, making the interface cleaner and less confusing.
Original PR description
Add 'o_invisible_modifier' class to 'o_statusbar_buttons' when there is no visible dropdown item button. Task-ID : 2029847
The accounting reports module now passes the required information when building the trial balance hierarchy view. This prevents an error when users generate the trial balance in hierarchy mode, helping finance teams access the report reliably.
Original PR description
The method _create_hierarchy receives 2 parameters (lines & options), and the second parameter is missing. To get this error try to generate the trial balance on hierarchy view. Fixes https://github.com/odoo/odoo/issues/35428
The mobile hamburger menu now shows user profile pictures in a consistent circular shape, even when the original image is rectangular. This improves the visual polish and consistency of the user preferences area on mobile devices.
Original PR description
Task Link: https://www.odoo.com/web#id=2042276&action=327&model=project.task&view_type=form&menu_id=4720 Pad Link: https://pad.odoo.com/p/r.a91623a4f361ee1ad7681b73a0106cd8
Marketing automation users can now change an activity type while editing without triggering an error. This keeps campaign setup smoother and prevents interruptions caused by missing activity information in edit mode.
Original PR description
**Task:** https://www.odoo.com/web#id=2039048&action=327&model=project.task&view_type=form&menu_id=4720 **Pad:** https://pad.odoo.com/p/r.f4d93435a1d4656e2d34bd781bd1be1e **Description:** The id of the activity wasn't available in the edit mode. hence the traceback.