Thursday, January 21, 2021
37 changes · master
Enhancements to existing features
Website editors can now choose the mailing list for a newsletter popup directly from the options panel instead of opening a separate dialog. Newsletter popups also gain the same display settings as regular popups, such as size, position, and timing, making campaign setup more flexible while preserving existing subscription behavior.
Original PR description
Previously we had only a few options available for newsletter popup in the web editor and had to use a popup in order to change the newsletter. In the first commit, we have changed popup to a select so that we can change newsletter from options panel itself. In the second commit, we made all options from the popup to be available for the newsletter popup. Here the newsletter popup used the exact same structure as the s_popup we only fill the popup content using the public widget. task-2246975
The quiz creation screens now display action buttons and icons correctly on both mobile devices and computers. This makes it easier for website learning content creators to save, cancel, or update quizzes without layout issues.
Original PR description
Before, the buttons to save, cancel or update and the icons weren't displayed correctly. Now, all elements are displayed correctly on mobile or on computer. task-2153990 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
Website editors now see default images in image wall and gallery snippets, making these blocks look complete when first added. The controls to add or remove images are also more prominent, helping users manage gallery content more easily.
Original PR description
Before this commit the image wall and image gallery snippets had no default images (unless overridden by some themes), and the buttons to add or remove images where not easily visible After this commit the image wall and image gallery snippets have default images and the action buttons are their first option line and have highlighted backgrounds colors task-2431420 https://github.com/odoo/design-themes/pull/442 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
Discuss channels now make it easier to invite the right contacts while filtering out people who are already members. Subscription rules are applied more reliably, and channel changes now warn about removing contacts who cannot belong to standard channels.
Original PR description
* Add regular res_partner in the invite modal search for mass_mailing channels * Remove partners and users already member of the channel in the invite search * Restrict invite search result based on authorized res_group member when applicable * ensure Auto Subscribe Groups feature always works ( edit user : group_in) * add a warning about and remove non user member of a channel when changing back from mass_mailing to normal channel task id : 49261
Sales teams can now receive an upsell activity when prepaid service delivery reaches a configured usage threshold. This helps prevent unbilled work and avoids repeatedly notifying salespeople for the same order line.
Original PR description
Purpose ====== When offering services, it is critical to make sure that the time being delivered is billable. Otherwise, the company is loosing money. ## Details Two fields have been created in…
Purpose ====== When offering services, it is critical to make sure that the time being delivered is billable. Otherwise, the company is loosing money. ## Details Two fields have been created in product.template: 1. service_upsell_warning 2. service_upsell_threshold The first one is a boolean, if it is checked then the second one is displayed to add a threshold. This threshold is used to create an upsell activity because the (qty_delivered / qty_ordered) in a SOL of this product is greater than the threshold defined in the product. Moreover, when the following condition for a SOL: (delivered quantity / ordered quantity) >= threshold set in the product is True, then we display an upsell warning for the corresponding SO. The problem is we don't check if the warning has already displayed by a certain SOL. Thus, each time we timesheet for this SOL, we display one more time. To avoid to spam the salesman, we add a new boolean field in sale.order.line, this field will be True if the warning upsell activity is shown thanks to the SOL. A method is added in sale module to create the upsell activity for each SO. This method is used in sale_timesheet module to avoid duplicated code. Finally, an unit test has been added to check the feature. task-2411291
CRM now supports salespeople belonging to one or multiple sales teams, with clearer team membership management and better company safeguards. Automatic lead assignment is moved into core CRM, making lead distribution more configurable, transparent, and fair across teams and team members.
Original PR description
RATIONALE For historic as well as internal reasons many CRM features were added into a module called "website_crm_score". This module was mainly developed to manage Odoo's prospects based on our own…
RATIONALE
For historic as well as internal reasons many CRM features were added into a
module called "website_crm_score". This module was mainly developed to manage
Odoo's prospects based on our own processes and rules. It included
* automatic lead assignment on teams, based on a score (lead scoring) and
team- and salespersons- specific domains;
* support of web pages (page views);
* support of multi sales team membership for salespersons;
This task aims at dismantling this module to make sure those valuable features
can be used by all CRM users
* lead assignment is moved into CRM;
* lead scoring is replaced by PLS and automatic probabilities computation;
* page views is now managed through visitors;
* multi sales team memberships is moved into CRM;
PURPOSE
Ability to have salesmen belonging to several sales team is a core requirement
of CRM. It is therefore moved from website_crm_score to crm along with cleaning
and behavior improvement. Automatic lead assignment is also moved and cleaned.
SPECIFICATIONS: SALES TEAMS MEMBERSHIP
Move sales team membership model from website_crm_score (enterprise) directly
into sales_team. It allows to have the base requirements to correctly handle
mono and multi sales team for salesperson.
Membership is modeled using a decorated many2many relationship. Members of
a sales team are res.users. Subscriptions are crm.team.member linking a team
and an user. It is a rename of team.user model coming from website_crm_score
as well as some other relational fields renaming.
Part of old team.user model is moved directly to sales team, part of it to
crm module (notably assignment limits). Its support will be improved in the
upcoming commits. Assignment related fields will be cleaned and used when
moving assignment directly into CRM.
SPECIFICATIONS: MONO / MULTI TEAMS
Purpose of this commit is to allow to use either mono salesteam mode, either
multi salesteams mode. Basic CRM use mono membership: a salesperson belongs
to a single sales team. It is however possible to choose to work using multiple
memberships. This is configured through a configuration parameter available in
CRM configuration settings.
Mono salesteam behavior
* a given user can be member of a single sales team at a time;
* when moving an user from team to team, its existing memberships are
archived to keep history of what has been done within this team;
* display an alert when creating a new team member that would archive
existing memberships;
* displayed members on team form view are directly res.users records to
avoid displaying unnecessary layer when using a simple CRM;
Multi salesteam behavior
* a given user can be member of several sales team at a time;
* unicity contraint (user_id, crm_team_id) is still enforced;
* displayed members on team form view are crm.team.member records as
advanced configuration can be done directly at that level;
In all cases when adding a new member check for archived membership before
creating it. If an archived version of the member exists it is unlinked in
order to avoid breaking the unicity constraint.
Archived memberships can be managed in its dedicated menu for advanced sales
team use.
SPECIFICATIONS: COMPANY-BASED DOMAINS
Improve support of multi company. Sales team can either be linked to a given
company, either be cross companies (company_id = False). Currently it is easy
to have issues while trying to add users from a companyA to a team belonging
to companyB.
When using mono membership mode
* members are res.users records;
* a domain is added on users to belong either to the team company, either
to all available teams if team has no company;
When using multi membership mode
* members are crm.team.member records;
* a domain is added on user_id field of membership records so that they
belong either to the team company, either to all available teams if team
has no company;
Those domains are implemented using a computed field it is not directly
translatable to a domain. Domain is added directly on field at model level
and include the "avoid shared users" domain leaf.
SPECIFICATIONS: CHECK_COMPANY
``check_company`` attribute is set on team member allowing to automatically
detect badly configured memberships. Check company is activated on user_id
and team_id fields of crm.team.member model to ensure they match.
SPECIFICATIONS: LEAD ASSIGNMENT
Move sales team automatic lead assignment from website_crm_score (enterprise)
directly into sales_team. Some cleaning and renaming is performed while moving
the code as it is old fashioned.
Scoring feature is removed completely from lead assignment. Indeed we consider
PLS is a better feature and provides more accurate results.
Minimal scoring specific field on team is removed. Indeed it can also be
integrated directly into domains linked to a sales team as this is a field
directly available on lead using ``probability``. It allows to reduce fields
of team model and move all logic in the team's domain itself.
Overall behavior as been kept as close as possible from the original one.
Purpose is to avoid too much undesired changes between versions.
In this commit we also add tests for automatic lead assignment.
ASSIGNMENT PROCESS DESCRIPTION
1- LEAD TO TEAM ALLOCATION
Allocate leads to teams given by self. This method sets ``team_id`` field
on lead records that are unassigned (no team and no responsible). No
salesperson is assigned in this process. Its purpose is simply to allocate
leads within teams.
Heuristic of this method is the following:
* first we randomize all teams;
* then for each team
* find unassigned leads, aka leads being
* without team, without user -> not assigned;
* not in a won stage, and not having False/0 (lost) or 100 (won)
probability) -> live leads;
* if set, a delay after creation can be applied (see BUNDLE_HOURS_DELAY)
parameter explanations here below;
* keep only leads matching the team's assignment domain (empty means
everything);
* assign maximum BUNDLE_SIZE leads to the team, then move to the next team.
This is done to ensure every team will have leads enough to fill its
capacity based on its domain;
* when setting a team on leads, leads belonging to the current batch
are also merged. Purpose is to clean database and avoid assigning
duplicates to same or different teams;
* for all teams that still have capacity (aka: a search on unassigned
available leads with team domain still give results), do another
assignment round. Each round teams are randomized so that team order
is not always the same;
Note that leads are assigned in batch meaning a team could receive leads that
could better fit another team. However this heuristics is based on hypothesis
that team domains do not overlap. Indeed if a company has several teams they
will probably target separate market segments: country-based, customer type or
size, ... Having several teams using same assignment domain could lead to less
fairness in assignment process but this should not be the target use case of this
heuristic.
Leads are allocated by batch. This can be configured using a config parameter.
Batch size depends on cron frequency, lead pipeline size and members assignment
maximum. Finding an optimal heuristic for this parameter is not easy as it
depends on internal processes and organization. Higher batch size leads to
better performances when running automatic assignment. It can also give unfair
results if teams domain overlap or if pipeline is not big enough to fill all
teams capacity.
2- LEAD TO MEMBER ASSIGN
Main processing method to assign leads to sales team members. It also converts
them into opportunities. Its main purpose is therefore to distribute team
workload on its members based on their capacity.
Preparation
* prepare lead domain for each member. It is done using a logical AND with
team's domain and member's domain. Member domains further restricts team
domain;
* prepare a set of available leads for each member by searching for leads
matching domain with a sufficient limit to ensure all members will receive
leads;
* prepare a weighted population sample. Population are members that should
receive leads. Initial weight is the number of leads to assign to that
specific member. This is minimum value between
* remaining this month: assignment_max - number of lead already assigned
this month;
* days-based assignment: assignment_max with a ratio based on ``work_days``
* e.g. Michel Poilvache (max: 30 - currently assigned: 15) limit
for 2 work days: min(30-15, 30/15) -> 2 leads assigned
* e.g. Michel Tartopoil (max: 30 - currently assigned: 26) limit
for 10 work days: min(30-26, 30/3) -> 4 leads assigned
Assign process then follows the following heuristic
* take a weighted random choice in population;
* find first available (not yet assigned) lead in its lead set;
* if found:
* convert it into an opportunity and assign member as salesperson;
* lessen member's weight so that other members have an higher
probability of being picked up next;
* if not found: consider this member is out of assignment process,
remove it from population so that it is not picked up anymore;
Assignment is performed one lead at a time for fairness purpose. Indeed members
may have overlapping domains within a given team. To ensure some fairness in
process once a member receives a lead, a new choice is performed with updated
weights. This is not optimal from performance point of view but increases
probability leads are correctly distributed within the team.
SPECIFICATIONS: REMOVE WEBSITE CRM SCORE
Remove website_crm_score module as its core business is not moved. Scoring
itself is not used anymore as it is replaced by automatic lead computation
(PLS) and all other features are moved to core CRM application.
SPECIFICATIONS: IMPROVE ASSIGN PROCESS
Various commits are added to improve assign process. See sub commits for
more details. Global behavior is not changed but details are improved like
* include leads with probability being 100 but still not won
* ensure automatic assignment works out of the box
* continue filling salespersons pipe when they win leads
* improve team opt-out from lead automatic assignment
* limit allocation to teams when running automatic assign
* log manual assign and improve feedback message
* simplify evaluation of assignment domains
LINKS
Task ID-2086889 (main task)
Task ID-2357969 (scoring migration task)
Community PR odoo/odoo#48422
Enterprise PR odoo/enterprise#9499
Upgrade PR odoo/upgrade#996The accounting bill upload tour now stores its needed attachment information directly instead of relying on another model relationship. This is an internal simplification that should make the code easier to maintain without changing the user experience.
Original PR description
account_tour_upload_bill is using an inherits only to use a single m2m field. This will remove the inherits and simply add the field directly into the account_tour_upload_bill model. task id #2339702 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Salespeople can now belong to more than one sales team, and automatic lead assignment has been moved into the core CRM and sales team flow. The older website CRM scoring module is removed in favor of probability-based lead handling, making CRM setup cleaner and more broadly available.
Original PR description
RATIONALE For historic as well as internal reasons many CRM features were added into a module called "website_crm_score". This module was mainly developed to manage Odoo's prospects based on our own…
RATIONALE
For historic as well as internal reasons many CRM features were added into a
module called "website_crm_score". This module was mainly developed to manage
Odoo's prospects based on our own processes and rules. It included
* automatic lead assignment on teams, based on a score (lead scoring) and
team- and salespersons- specific domains;
* support of web pages (page views);
* support of multi sales team membership for salespersons;
This task aims at dismantling this module to make sure those valuable features
can be used by all CRM users
* lead assignment is moved into CRM;
* lead scoring is replaced by PLS and automatic probabilities computation;
* page views is now managed through visitors;
* multi sales team memberships is moved into CRM;
PURPOSE
Ability to have salesmen belonging to several sales team is a core requirement
of CRM. It is therefore moved from website_crm_score to crm along with cleaning
and behavior improvement. Automatic lead assignment is also moved and cleaned.
SPECIFICATIONS: MOVE AND IMPROVE MEMBERSHIP MODEL
Move sales team membership model from website_crm_score (enterprise) directly
into sales_team. It allows to have the base requirements to correctly handle
mono and multi sales team for salesperson.
Membership is modeled using a decorated many2many relationship. Members of
a sales team are res.users. Subscriptions are crm.team.member linking a team
and an user. It is a rename of team.user model coming from website_crm_score
as well as some other relational fields renaming.
Part of old team.user model is moved directly to sales team, part of it to
crm module (notably assignment limits). Its support will be improved in the
upcoming commits. Assignment related fields will be cleaned and used when
moving assignment directly into CRM.
SPECIFICATIONS: MOVE ASSIGNMENT
Move sales team automatic lead assignment from website_crm_score (enterprise)
directly into sales_team. Some cleaning and renaming is performed while moving
the code as it is old fashioned.
Scoring feature is removed completely from lead assignment. Indeed we consider
PLS is a better feature and provides more accurate results.
Minimal scoring specific field on team is removed. Indeed it can also be
integrated directly into domains linked to a sales team as this is a field
directly available on lead using ``probability``. It allows to reduce fields
of team model and move all logic in the team's domain itself.
Overall behavior as been kept as close as possible from the original one.
Purpose is to avoid too much undesired changes between versions.
SPECIFICATIONS: REMOVE WEBSITE CRM SCORE
Scoring module can now be removed as
* scoring itself is not used anymore and is replaced by probability on
lead using PLS;
* rule-based scoring update is considered as not relevant compared to
automated probably update by PLS;
* members management has been moved to CRM and improved allowing to be
in mono- or multi- membership modes;
* automatic assign to teams and salespersons is moved to CRM and improved
allowing more configurable behavior;
* rule-based tagging et lead management (unlink) can be replaced by
automated actions;
LINKS
Task ID-2086889 (main task)
Task ID-2357969 (scoring migration task)
Community PR odoo/odoo#48422
Enterprise PR odoo/enterprise#9499
UPgrade PR odoo/upgrade#996Resolved issues and error corrections
This fix ensures stock valuation records are checked against the correct company when accounting entries are created in batches. It prevents errors or incorrect handling when validating stock values across multiple companies, improving reliability for multi-company operations.
Original PR description
Commit 7fa9ec263876 create accounting entries from stock_account in batch. The test on `self.company_id.anglo_saxon_accounting` is problematic in case of multi recordset. Instead, this commit evaluate the company_id for each record of `self`. 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
Features or functions removed from Odoo
This change cleans up empty placeholder files left behind after the Jabberwock editor rollback. It reduces confusion in the codebase and keeps website and email editor assets aligned with the reverted functionality, with no expected visible impact for users.
Original PR description
*: mass_mailing, website The revert of Jabberwock at [1] was made reverting all the commits that happened during and after the Jabberwock merge. This missed a preparation commit [2] which added empty asset files a few days earlier. This reverts that commit. [1]: https://github.com/odoo/odoo/commit/e5572c317a7775a58675ed73efc89b5c9f6c0c39 [2]: https://github.com/odoo/odoo/commit/55f10ac9a0bb574a893e84c3ee6237e1d439750b
Code cleanup and technical improvements
This update reorganizes the internal structure of Mail and Discuss channel code and related views, separating large components into clearer files. It is intended to make future improvements to groups, channels, and moderation easier to deliver, with no expected change to day-to-day user behavior.
Original PR description
PURPOSE Reorganize and lint mail.channel code. Purpose is to ease future modifications linked to groups and channels in mail / Discuss. SPECIFICATIONS Move mail.channel.partner and mail.moderation…
PURPOSE
Reorganize and lint mail.channel code. Purpose is to ease future modifications
linked to groups and channels in mail / Discuss.
SPECIFICATIONS
Move mail.channel.partner and mail.moderation models into their own file.
This makes some noise in diff but as channel is quite an heavy model let us
do this once for all.
Move mail.channel.partner views in their own file, as for python models.
Also containing
* separate and reorganize fields by main definition;
* separate and reorganize methods by categories, notably CRUD + orm, members
management, moderation, mailing, IM, commands;
* reorganize compute section: compute (by field order), constraints then
onchanges;
Reorganize and lint mail.channel code. Purpose is to ease future modifications
linked to groups and channels in mail / Discuss.
Some tools methods do not necessarily require to be public.
Cleanup a bit mail addon by moving menu definitions in their own file
according to guidelines.
No functional change should be involved in this PR as only some code move
and light renaming has been performed.
LINKS
Prepares Task ID-2070632 (Discuss channel task)
Prepares Task ID-2419762 (SM channel task)
COM PR #64862Miscellaneous changes
Steps: - Go to "Website" > "Go to Website" - Click Edit in the top right corner - Click Options - Select "Add a Google Font" in the Font Family field - Insert an erroneous Google Font link (e.g. https://fonts.google.com/specimen/Robotoj ) - Save & Reload - Click Edit again Bug: The Edit button is not responding anymore Explanation: We try to `@import` the link in multiple files. For example, here: https://github.com/odoo/odoo/blob/70eb39b0cf30c1acf9a7116e109874b60e27aa2c/addons/w
Original PR description
Steps: - Go to "Website" > "Go to Website" - Click Edit in the top right corner - Click Options - Select "Add a Google Font" in the Font Family field - Insert an erroneous Google Font link (e.g.…
This update adjusts how manufacturing work orders show readiness, helping production teams better understand when work can proceed. It reduces confusion in shop floor planning by keeping readiness behavior aligned with the latest manufacturing workflow expectations.
Original PR description
test PR.
This update removes outdated custom activity code from the online courses area because it is no longer needed. This helps keep the feature easier to maintain and reduces the chance of conflicts with current platform behavior, with no expected change for everyday users.
Original PR description
task-2429670
This update cleans up internal logistics-related data fields across inventory, purchasing, and manufacturing so the system avoids unnecessary data writes. It also improves performance for common warehouse operations such as validating stock movements and freeing reservations, which can help larger databases run more smoothly.
Original PR description
- Clean related fields of logistics - Improve scalability of highly used method of logistics (`_action_done` and `_free_reservation`) - Remove unused fields of `stock.move` - Improve the populate tools odoo/enterprise#15685 odoo/upgrade#2074 task-2424248
The Planning app’s main action buttons now appear together on a single line in the Gantt view. This fixes a visual layout issue, making the controls easier to scan and use without changing business logic.
Original PR description
Before this commit, in the Planning app, the main buttons are not displayed on one line. After this commit, all the main buttons of the Planning app displayed on the same line Task-Id: 2428377 PR: #15833
This update makes certain manufacturing work order and quality fields read-only when they should not be edited directly. This helps prevent unnecessary background data updates that can slow performance or create unintended changes.
Original PR description
- Clean related fields of mrp_workorder odoo/odoo#64357 odoo/upgrade#2074 task-2424248
This fixes how the Documents Spreadsheet test files are grouped so they are included in the intended test bundle. It helps keep automated testing organized and reliable, with no expected impact on regular users.
Original PR description
The test files where included in the `web.qunit_suite` assets. They should be in `web.qunit_suite_test `
This update removes outdated activity customizations in the Approvals app that are no longer needed. It helps keep the approval workflow aligned with the current system behavior and reduces the chance of confusing or inconsistent activity displays.
Original PR description
task-2429670
This update fixes an internal automated test so it matches the current system behavior after date formatting began loading language settings. It helps keep payroll and leave-related quality checks reliable without changing day-to-day user workflows.
Original PR description
…idays https://github.com/odoo-dev/odoo/commit/2e54c3f225369486bf25047211a353b4dbf435bf From this commit, format_datetime method called and it fetch the language. Due to that query count of the test case is increases. So in this commit we increase the query count for system. LINKS PR: #15694 Task-Id:2339411
Steps: - Go to "Website" > "Go to Website" - Click Edit in the top right corner - Click Options - Select "Add a Google Font" in the Font Family field - Insert an erroneous Google Font link (e.g. https://fonts.google.com/specimen/Robotoj ) - Save & Reload - Click Edit again Bug: The Edit button is not responding anymore Explanation: We try to `@import` the link in multiple files. For example, here: https://github.com/odoo/odoo/blob/70eb39b0cf30c1acf9a7116e109874b60e27aa2c/addons/website/static/src/scss/website.scss#L10 An erroneous font family results in an error 400 from the Google Fonts server. This prevents parts of the JS to load and makes it impossible to enter the edition mode. `EditPageMenu` handles the behavior when clicking on the Edit button. This menu depends on `website.compiled_assets_wysiwyg` as seen here: https://github.com/odoo/odoo/blob/b02a99bec709b5a6dc4dabb6cb81435dadc24e7e/addons/website/static/src/js/menu/edit.js#L10-L14 Since there is an error generating the file, the Promise fails but the error is not handled: https://github.com/odoo/odoo/blob/70eb39b0cf30c1acf9a7116e109874b60e27aa2c/addons/web/static/src/js/core/ajax.js#L164-L168 This commit prevents CSS loading errors from silently failing. The crash screen will only show up if the user is logged in and has edition rights. This commit also prevents the user from posting the form if the font is not accessible. At the moment, querying an unknown Google font from a script will result in a CORS error. A valid one will pass just fine. In case Google changes the behavior of these queries and allows the 400 to be sent, the fix also checks if the query returned an `ok` status code. opw:2439073 Forward-Port-Of: odoo/odoo#64695
- When trying to timesheet on a task that is linked to a sale order line from a different company than the user's current one. An error is triggered due multi company access rights issue. This is due to two computed fields that are not computed in sudo mode. They make more sense as `computed_sudo` fields as they are only computed stats and are not leaking private data. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr For
Original PR description
- When trying to timesheet on a task that is linked to a sale order line from a different company than the user's current one. An error is triggered due multi company access rights issue. This is due to two computed fields that are not computed in sudo mode. They make more sense as `computed_sudo` fields as they are only computed stats and are not leaking private data. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#64822
Issue - Connect on smartphone (or use chrome debug mode to switch to mobile view) - Install "Ecommerce" module - Add a delivery method D with a price on product P and publish it - Go to shop and add product P to your cart - Go to payment and switch delivery method Total amount above the summary is not updated. Cause Update is done on JS when delivery method is changed. No targeting Total Amount in summary head card (seen only on small device). Solution Add ID
Original PR description
Issue - Connect on smartphone (or use chrome debug mode to switch to mobile view) - Install "Ecommerce" module - Add a delivery method D with a price on product P and publish it - Go to shop and add product P to your cart - Go to payment and switch delivery method Total amount above the summary is not updated. Cause Update is done on JS when delivery method is changed. No targeting Total Amount in summary head card (seen only on small device). Solution Add ID on Total Amount in summary head card element and update it with JS in same time as other fields (taxes, total, ...). opw-2424355 Forward-Port-Of: odoo/odoo#64726 Forward-Port-Of: odoo/odoo#64640
task-2388676 Forward-Port-Of: odoo/odoo#64827 Forward-Port-Of: odoo/odoo#64505
Original PR description
task-2388676 Forward-Port-Of: odoo/odoo#64827 Forward-Port-Of: odoo/odoo#64505
A purchase journal cannot be created without a default expense account A sale journal cannot be created without a default income account opw:2431278 Forward-Port-Of: odoo/odoo#64741
Original PR description
A purchase journal cannot be created without a default expense account A sale journal cannot be created without a default income account opw:2431278 Forward-Port-Of: odoo/odoo#64741
# Purpose Fix labels overlapping on the x axis. Now the labels will be displayed completly by modifying the number of characters per line and the font size. # Specification Adapt the font-size and the maximum number of characters per line with the number of columns. The font-size will be also modified by a ratio depending of the longest word in the labels. task-2382681 Forward-Port-Of: odoo/odoo#61913
Original PR description
# Purpose Fix labels overlapping on the x axis. Now the labels will be displayed completly by modifying the number of characters per line and the font size. # Specification Adapt the font-size and the maximum number of characters per line with the number of columns. The font-size will be also modified by a ratio depending of the longest word in the labels. task-2382681 Forward-Port-Of: odoo/odoo#61913
Configure an email server and create a login account with a space like "foo bar". In odoo configure an Outgoing mail server using that account, there is an error because the username is misconsidered invalid. The errors resides in the IDNA implementation of Odoo, we try to split the username to get a login and a domain in order to encode the domain using the ponycode algorithm. In case the username was not an email adress but just a single name, the single name was mistaken for a domain
Original PR description
Configure an email server and create a login account with a space like "foo bar". In odoo configure an Outgoing mail server using that account, there is an error because the username is misconsidered invalid. The errors resides in the IDNA implementation of Odoo, we try to split the username to get a login and a domain in order to encode the domain using the ponycode algorithm. In case the username was not an email adress but just a single name, the single name was mistaken for a domain. As domain cannot have spaces, an error was thrown. opw-2419024 Forward-Port-Of: odoo/odoo#64864
Task-2444878 Forward-Port-Of: odoo/odoo#64857
Original PR description
Task-2444878 Forward-Port-Of: odoo/odoo#64857
Issue - Create a company X with Columbian COA - Switch company X - Create a new Journal Entry: - Add 2 journal items; both with account as '23651510 Retencion en la fuente por honorarios persona Juridica 11%' - Set same amount on debit for first line, and credit for second line - Post the Entry - Go to 'Accounting -> Reporting -> Certificado de Retención en Fuente' - Unfold the created entry - Click on print preview - Set 'Fecha de Declaración' to 12/31/2020 On the
Original PR description
Issue - Create a company X with Columbian COA - Switch company X - Create a new Journal Entry: - Add 2 journal items; both with account as '23651510 Retencion en la fuente por honorarios persona Juridica 11%' - Set same amount on debit for first line, and credit for second line - Post the Entry - Go to 'Accounting -> Reporting -> Certificado de Retención en Fuente' - Unfold the created entry - Click on print preview - Set 'Fecha de Declaración' to 12/31/2020 On the pdf, the declaration date is to 2021. Cause 'Current year' is based on datetime.now() instead of the fiscal year of the declaration date (declaration_date field in the form). Solution If 'declaration_date' is available, take the fiscall year of this last one, else, fallback on fiscall year of datetime.now(). opw-2428537 Forward-Port-Of: odoo/enterprise#15862 Forward-Port-Of: odoo/enterprise#15805
Steps to reproduce the bug: - Let's consider that module Helpdesk is installed - Let's consider a internal user U without any right in Helpdesk - Logged with U - Go to /my/home Bug: odoo.exceptions.AccessError: ("Sorry, you are not allowed to access documents of type 'Helpdesk Ticket' (helpdesk.ticket). This operation is allowed for the groups:\n\t- Helpdesk/User\n\t- User types/Portal - (Operation: read, User: 6)", None) opw:2440499 Forward-Port-Of: odoo/enterprise#15876 Forw
Original PR description
Steps to reproduce the bug:
- Let's consider that module Helpdesk is installed
- Let's consider a internal user U without any right in Helpdesk
- Logged with U
- Go to /my/home
Bug:
odoo.exceptions.AccessError: ("Sorry, you are not allowed to access
documents of type 'Helpdesk Ticket' (helpdesk.ticket). This operation
is allowed for the groups:\n\t- Helpdesk/User\n\t- User types/Portal
- (Operation: read, User: 6)", None)
opw:2440499
Forward-Port-Of: odoo/enterprise#15876
Forward-Port-Of: odoo/enterprise#15867task-2429670 Forward-Port-Of: odoo/enterprise#15829
Original PR description
task-2429670 Forward-Port-Of: odoo/enterprise#15829
In the Executive Summary report each section has what appears to be a section total line but in each case it shows $0.00. opw-2426208 Forward-Port-Of: odoo/enterprise#15843
Original PR description
In the Executive Summary report each section has what appears to be a section total line but in each case it shows $0.00. opw-2426208 Forward-Port-Of: odoo/enterprise#15843
Since, 06a82a94fc4310dcb9b0570717338891cfaaf33b when an error occurs during the sign process a xml is also created, this was done to allow a better debug and understand of the issue. The issue, is that each time that there was an error a new xml was created. Now, there is only one cfdi document created. opw-2440256 Forward-Port-Of: odoo/enterprise#15854
Original PR description
Since, 06a82a94fc4310dcb9b0570717338891cfaaf33b when an error occurs during the sign process a xml is also created, this was done to allow a better debug and understand of the issue. The issue, is that each time that there was an error a new xml was created. Now, there is only one cfdi document created. opw-2440256 Forward-Port-Of: odoo/enterprise#15854
Before this commit, if finkok (Quadrum) answers with an error along with the signed document, the xml on Odoo will not be signed and only the error is shown. This occurs for example with : Error 307 : 'El CFDI contiene un timbre previo'. Now, if there is an error along the signed document, the error will not show, and the document will be signed on Odoo. opw-2440256 Forward-Port-Of: odoo/enterprise#15858
Original PR description
Before this commit, if finkok (Quadrum) answers with an error along with the signed document, the xml on Odoo will not be signed and only the error is shown. This occurs for example with : Error 307 : 'El CFDI contiene un timbre previo'. Now, if there is an error along the signed document, the error will not show, and the document will be signed on Odoo. opw-2440256 Forward-Port-Of: odoo/enterprise#15858
Legal time offs are taken either by half or full days. So round the decimal part of allocated time offs like this: - X <= 0.25 : 0 - 0.25 < X <= 0.75 : 0.5 - X > 0.75 : 1 Forward-Port-Of: odoo/enterprise#15860 Forward-Port-Of: odoo/enterprise#15831
Original PR description
Legal time offs are taken either by half or full days. So round the decimal part of allocated time offs like this: - X <= 0.25 : 0 - 0.25 < X <= 0.75 : 0.5 - X > 0.75 : 1 Forward-Port-Of: odoo/enterprise#15860 Forward-Port-Of: odoo/enterprise#15831
In the event of periods not containing consolidated data, when the user tried to run a comparison between periods, a crash occured. Now, if a period has no consolidation data, we just return an amount of 0. opw-2373213 Forward-Port-Of: odoo/enterprise#15824
Original PR description
In the event of periods not containing consolidated data, when the user tried to run a comparison between periods, a crash occured. Now, if a period has no consolidation data, we just return an amount of 0. opw-2373213 Forward-Port-Of: odoo/enterprise#15824
Behavior before this commit : - Create a company A with a l10n installed that contains an account.tax.report, and the fiscal country of A set accordingly - Create a company B with another l10n with account.tax.report and fiscal country - Open the tax report of A (the localized one) - Switch company to B => traceback https://github.com/odoo/enterprise/commit/3b50dd0e560965d2238545d992bfb92c7ae6c390 introduced a new module with two additional generic tax reports templates, applying differe
Original PR description
Behavior before this commit : - Create a company A with a l10n installed that contains an account.tax.report, and the fiscal country of A set accordingly - Create a company B with another l10n with account.tax.report and fiscal country - Open the tax report of A (the localized one) - Switch company to B => traceback https://github.com/odoo/enterprise/commit/3b50dd0e560965d2238545d992bfb92c7ae6c390 introduced a new module with two additional generic tax reports templates, applying different forms of "group by" to the original one. In the meantime, it refactored and broke the condition handling multicompany report switching, as the 'tax_report' option key contains 0 instead of None when the original generic report is selected. We handle that by explicitly listing the report identifiers that should be considered as generic reports, and are hence allowed on every company. Forward-Port-Of: odoo/enterprise#15801
Problem ------- Stage in recruitement process can have a reward of 0 point but you still want to see them as done in the recruitement process so referrer can see the complete status of there referree application Right now if a stage reward 0 point, you will never see it as done in the referral dashboard Solution -------- Consider a stage done as long as a hr.referral.point exist for this applicant and this stage even if it's 0 point Forward-Port-Of: odoo/enterprise#15865
Original PR description
Problem ------- Stage in recruitement process can have a reward of 0 point but you still want to see them as done in the recruitement process so referrer can see the complete status of there referree application Right now if a stage reward 0 point, you will never see it as done in the referral dashboard Solution -------- Consider a stage done as long as a hr.referral.point exist for this applicant and this stage even if it's 0 point Forward-Port-Of: odoo/enterprise#15865