Search
Navigate
Branch
Thursday, November 16, 2023
39 changes
25 changes
New functionality added to Odoo
This update adds Starshipit delivery integration for Australian and New Zealand carriers and improves Australian payroll reporting setup. It also cleans up payroll labels and supports PAYG withholding reporting so businesses can better prepare Australian tax reports.
Original PR description
Aggregation of last minute fixes and features for Australian talk Will not be merged in this PR
Enhancements to existing features
Field Service task analysis reports now present time-based measures in an easier-to-read hours-and-minutes format and hide zero values that can clutter reporting. Default pivot and graph views are also better grouped, helping managers spot trends by month and project more quickly.
Original PR description
This PR makes the following improvements: ->Remove 'remaining hours percentage' measure from task analysis. -> change 'total hours' into 'total hours spent' and 'working days to assign' into 'Working…
Resolved issues and error corrections
Argentine electronic invoice users can now mark a reversal credit note as a cancellation directly in the reversal wizard. This lets businesses fully reverse customer-rejected SME credit invoices and continue the required electronic invoicing process without being blocked.
Original PR description
Steps to reproduce: (only in a production environment) - Install l10n_ar_edi - Switch to an Argentinian company (e.g. (AR) Responsanble Inscripto) - Create an invoice in "Electronic Invoice (FE)"…
Steps to reproduce: (only in a production environment) - Install l10n_ar_edi - Switch to an Argentinian company (e.g. (AR) Responsanble Inscripto) - Create an invoice in "Electronic Invoice (FE)" journal: * Customer: [an Argentinian one] (e.g. Belgrano Cargas Y Logistica S (Mipyme)) * Journal: Electronic Invoice (FE) * Document Type: (201) ELECTRONIC CREDIT INVOICE FOR SMBs (FCE) TO * FCE: Is Cancellation? (in "Other Info" tab): [NOT CHECKED] * FCE: Transmission Option (in "Other Info" tab): [anything] * Invoice Lines: Tax 21% and the total amount must be greater than 1000000 - Confirm the invoice - The invoice must be rejected by customer (that's why a production environment is required) - Create a credit note: * Document Type: (203) ELECTRONIC CREDIT NOTE SME SMEs (FCE) A - Click on "Reverse and Create Invoice" It is not possible to send the credit note because its "FCE: Is Cancellation?" property should be checked as the invoice has been rejected, but there is no way to do it. Solution: Add "FCE: Is Cancellation?" option in the reversal wizard. opw-3379792
Miscellaneous changes
In planning dashboard create a new planning Set any start date and an end date after 2 days Check "Save as Template" Save Check the creted template (Configuration>Shift Templates) Issues: Template name will have a greater days count because normal hours are counted as working hours opw-3475656 Forward-Port-Of: odoo/enterprise#50782 Forward-Port-Of: odoo/enterprise#46538
Original PR description
In planning dashboard create a new planning Set any start date and an end date after 2 days Check "Save as Template" Save Check the creted template (Configuration>Shift Templates) Issues: Template name will have a greater days count because normal hours are counted as working hours opw-3475656 Forward-Port-Of: odoo/enterprise#50782 Forward-Port-Of: odoo/enterprise#46538
14 changes
New functionality added to Odoo
Odoo now integrates a website scraper that automatically generates website content by analyzing existing websites. Users can leverage this feature in two ways: by starting a trial from odoo.com with a scrape request, or through the website configurator with a special parameter. This enhancement streamlines website creation by reducing manual content entry.
Original PR description
This commit integrated the website scrapper into Odoo. There are two ways to scrap a website. - The user comes from odoo.com and starts a trial with a scrap request. In this case, there is a todo.action to show a waiting screen. - The user is using the website configurator. There is a "secret" param to be able to scrap a website. See community PR: https://github.com/odoo/odoo/pull/126703 task-3339551
This PR makes the following improvements:
->Remove 'remaining hours percentage' measure from task analysis. -> change 'total hours' into 'total hours spent' and 'working days to assign' into 'Working Days to Assign'.
->In pivot view and graph view of task analysis report, following measure will be appear as hh:mm.
-overtime, total hours, working hours to close, working hours to assign
->Hide the value if it is equal to 0 for the following measures:
-hours spent, overtime, progress, total hours, working hours to assign,
working days to assign, working hours to close, working days to close ->When calculating the average the following measures should exclude records with a value of 0
-progress, working hours to assign, working days to assign,
working hours to close, working days to close.
->Set the by default grouping for the following task analysis report
-for pivot view add the group by 'create date>month' and made changes
following changes in measure :
-count, working hours to assign, working hours to close, total hours
-for graph view add the group by 'create date>month>project'.
task-3514437Helpdesk teams can now access chatbot configuration directly from the live chat settings, making it easier to set up automated support flows. The live chat ticket search command now shows results in smaller batches with a load more option, helping agents browse matching tickets without being overwhelmed.
Original PR description
List of features this PR implements: - add a 'chatbots' menu under the 'configuration > tags' menu item / add a '-> configure chatbots' link that should redirect users to the configuration > chatbots…
List of features this PR implements: - add a 'chatbots' menu under the 'configuration > tags' menu item / add a '-> configure chatbots' link that should redirect users to the configuration > chatbots menu - /search_tickets command: if there are more than 5 results, display a 'load more' button ### Implementation details For the search_tickets command: This command triggers the method _execute_command_helpdesk_search_, it now calls a new method _fetch_ticket_by_keyword_ that return the msg containing links to the tickets corresponding to the query, by default the fetch tickets return only 5 tickets, if there are more than 5 ticket corresponding to the query a link *load more* will be added to the messages. When clicked this link will rpc call _fetch_ticket_by_keyword_ to fetch 5 more tickets this time, the steps can be repeated until all the tickets are fetched. To know if there are more tickets corresponding to the query than returned, we try and fetch one more ticket than the limit (so if we're at 5 we try to fetch 6 tickets), the last ticket will be removed from the list and the load more link will be added to the message The ticket fetching is ordered by 'id desc', fetching first the *6* tickets with the highest id corresponding to the query. The sixth tickets is ditched but it's ID is saved in the button tags so it can be recovered in the frontend to be given back to the backend in case the user clicks on load more. Once clicked the backend will only fetch ticket with ID lower or equal to the last ticket ID. Community PR: https://github.com/odoo/odoo/pull/131702 Task-3186593 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
When a helpdesk ticket is created with people copied on the email, those contacts are now automatically added as followers. This helps copied stakeholders receive updates and stay informed as the ticket progresses.
Original PR description
This commit's purpose is to ensure that when a ticket is created with an email_cc field set, the partners linked to this email will be set as follower of the ticket, in order for them to be able to follow the ticket evolution task-3251657
This update ensures prepaid support service lines remain visible even when an SLA ticket uses more hours than were originally available. This helps teams track over-consumed prepaid support work more accurately and avoids confusion when reviewing ticket billing details.
Original PR description
Before this PR, there was an issue where we couldn't display the SOL for a prepaid product when the remaining hours fell below 0 under an SLA policy. In this PR, we have addressed this problem by correctly setting the SOL for prepaid products even when their remaining hours go below 0 within the context of an SLA policy. task-3504562
Approval requests now only allow selecting request owners who belong to the current company. This helps prevent assigning approvals to the wrong company’s users in multi-company setups.
Original PR description
Request owner field's domain was extended - now only users from current company can be selected. task-3497563
## Description Portal routes `/my/tickets` or `/my/tasks` were reported slow to load with many items. ## Analysis The avatars that are loaded are of too large sizes (encoded in base64) compared to their rendering size. `o_portal_contact_img` limits the dimensions to `2.3em` (roughly `37px` on desktop), so it's useless to load `avatar_1024` for those image sources. This has a significant impact when the user has a slow connection, the server is hosted far away from the user, or the images us
Original PR description
## Description Portal routes `/my/tickets` or `/my/tasks` were reported slow to load with many items. ## Analysis The avatars that are loaded are of too large sizes (encoded in base64) compared to their rendering size. `o_portal_contact_img` limits the dimensions to `2.3em` (roughly `37px` on desktop), so it's useless to load `avatar_1024` for those image sources. This has a significant impact when the user has a slow connection, the server is hosted far away from the user, or the images used are of badly compressed (so each images takes a quite a few MiB). ## Fix Scan for all instances of the usage of `avatar_1024` on an `<img>` with the class `o_portal_contact_img` and reduce it to `avatar_128`. ## Reference opw-3470171 ## Linked PR https://github.com/odoo/odoo/pull/141877 Forward-Port-Of: odoo/enterprise#50678 Forward-Port-Of: odoo/enterprise#50557
product_qty no longer represent done qty after the move is done. Change to use quantity to calculate quantity produced on the Production Analysis report. Forward-Port-Of: odoo/enterprise#50398
Original PR description
product_qty no longer represent done qty after the move is done. Change to use quantity to calculate quantity produced on the Production Analysis report. Forward-Port-Of: odoo/enterprise#50398
https://github.com/odoo/enterprise/pull/34883 started showing the fuel type of the car_id in the form view of hr_contract. However, when selecting new cars, the car_id won't be set. Instead we'll set the new_car_model_id field and the fuel type won't be shown. This commit changes the fuel_type field in hr_contract to be a computed field that will either take the fuel_type from car_id or from new_car_model_id. task-3515936 Forward-Port-Of: odoo/enterprise#47717
Original PR description
https://github.com/odoo/enterprise/pull/34883 started showing the fuel type of the car_id in the form view of hr_contract. However, when selecting new cars, the car_id won't be set. Instead we'll set the new_car_model_id field and the fuel type won't be shown. This commit changes the fuel_type field in hr_contract to be a computed field that will either take the fuel_type from car_id or from new_car_model_id. task-3515936 Forward-Port-Of: odoo/enterprise#47717
Before this commit, when a barcode starting with "O-CMD." is scanned, the barcode handler checks if it knows a command and either calls it if it exists, either displays a notification if not. The issue with the notification is that some modules can use barcodes starting with "O-CMD." (`stock_barcode` with "O-CMD.MAIN-MENU" for example), meaning scanning one of those will display a warning notification even if the action linked to the barcode is correctly called. This commit adds an empty f
Original PR description
Before this commit, when a barcode starting with "O-CMD." is scanned, the barcode handler checks if it knows a command and either calls it if it exists, either displays a notification if not. The issue with the notification is that some modules can use barcodes starting with "O-CMD." (`stock_barcode` with "O-CMD.MAIN-MENU" for example), meaning scanning one of those will display a warning notification even if the action linked to the barcode is correctly called. This commit adds an empty function for each "O-CMD." barcode used by `stock_barcode` to let `barcodeGenericHandlers` know those commands exist and should not trigger a warning. Forward-Port-Of: odoo/enterprise#49898
Steps to reproduce: 1. Enable GS1 Barcode nomenclature 2. Create 2 products, P1 and P2 both tracked by lots. 3. Add barcode for P2 here is the barcode: 05711544001952 4. Create two lots. You MUST create a lot for P1 before lot P2. 5. These two lots must have the same name. I'm using "304" as the name 6. Go to barcode and delivery order 7. Scan this barcode: This is for the location odoo.__DEBUG__.services['web.core'].bus.trigger('barcode_scanned', "WH-STOCK", $(".o_web_client")[0])
Original PR description
Steps to reproduce: 1. Enable GS1 Barcode nomenclature 2. Create 2 products, P1 and P2 both tracked by lots. 3. Add barcode for P2 here is the barcode: 05711544001952 4. Create two lots. You MUST…
Steps to reproduce:
1. Enable GS1 Barcode nomenclature
2. Create 2 products, P1 and P2 both tracked by lots.
3. Add barcode for P2 here is the barcode: 05711544001952
4. Create two lots. You MUST create a lot for P1 before lot P2.
5. These two lots must have the same name. I'm using "304" as the name
6. Go to barcode and delivery order
7. Scan this barcode:
This is for the location
odoo.__DEBUG__.services['web.core'].bus.trigger('barcode_scanned', "WH-STOCK", $(".o_web_client")[0])
This is for the product, expiration date, lot number
odoo.__DEBUG__.services['web.core'].bus.trigger('barcode_scanned', "01057115440019521524071010304", $(".o_web_client")[0])
Bug:
Based on the GS1 Nomenclature, you're scanning the product, expiration, and lot number.
This scan will go through but you will not see the lot number get populated. This is because Odoo is pulling the other lot with the same name. (P1).
Fix:
apply filter (by product id) on the lots
opw-3387326
Forward-Port-Of: odoo/enterprise#50333
Forward-Port-Of: odoo/enterprise#47734Steps: - Install helpdesk - Open helpdesk - Go to my tickets - Create new ticket Issue: - when create new ticket breadcrumb shows "False(#False)" instead of "New". Cause: - Not returning the super method. Fix: - Create new field filtered with name running loop on that field and returning the super method. task-3478920 Forward-Port-Of: odoo/enterprise#46288
Original PR description
Steps: - Install helpdesk - Open helpdesk - Go to my tickets - Create new ticket Issue: - when create new ticket breadcrumb shows "False(#False)" instead of "New". Cause: - Not returning the super method. Fix: - Create new field filtered with name running loop on that field and returning the super method. task-3478920 Forward-Port-Of: odoo/enterprise#46288
Prior to this commit, opening studio mode on the gantt view of the attendance app would lead to a traceback in get_gantt_data() This is due to the fact that start_date is not well assigned because context seems to be lost in studio mode. Forward-Port-Of: odoo/enterprise#50644
Original PR description
Prior to this commit, opening studio mode on the gantt view of the attendance app would lead to a traceback in get_gantt_data() This is due to the fact that start_date is not well assigned because context seems to be lost in studio mode. Forward-Port-Of: odoo/enterprise#50644
When merging the models `knowledge.article` and `knowledge.article.template`, we unintentionally forgot to add a condition in the search domain of the select menu to filter out the templates from the search results. As a result, the select menu currently lists both articles and templates. This commit will simply add the missing condition in the search domain to exclude the templates from the search results. Steps to reproduce the issue: 1. Open the Knowledge editor 2. Type the /article comm
Original PR description
When merging the models `knowledge.article` and `knowledge.article.template`, we unintentionally forgot to add a condition in the search domain of the select menu to filter out the templates from the search results. As a result, the select menu currently lists both articles and templates. This commit will simply add the missing condition in the search domain to exclude the templates from the search results. Steps to reproduce the issue: 1. Open the Knowledge editor 2. Type the /article command 3. Click on the selection menu => The select menu lists the articles and the templates. TO BE: The selection menu should only display the articles and not the templates Reference: https://github.com/odoo/enterprise/pull/48691 task-3593373 Forward-Port-Of: odoo/enterprise#50546
This commit changes the icons of the pivot/list menu items to match the standard pivot/list icons of Odoo. Task: [3559271](https://www.odoo.com/web#id=3559271&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#49191
Original PR description
This commit changes the icons of the pivot/list menu items to match the standard pivot/list icons of Odoo. Task: [3559271](https://www.odoo.com/web#id=3559271&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#49191
Steps to reproduce: - Have a user that have the interviewer rights but not higher ones - Set the user as the referrer of an applicant but not as the interviewer and not as the job position interviewer - As this user go to the recruitment app - You can see the applicant and you can open it Expected behavior: in that situation the user should not be able to see the applicant or access it in any way in the recruitment app. Explanation: The user was able to see the applicant because the
Original PR description
Steps to reproduce: - Have a user that have the interviewer rights but not higher ones - Set the user as the referrer of an applicant but not as the interviewer and not as the job position…
Steps to reproduce: - Have a user that have the interviewer rights but not higher ones - Set the user as the referrer of an applicant but not as the interviewer and not as the job position interviewer - As this user go to the recruitment app - You can see the applicant and you can open it Expected behavior: in that situation the user should not be able to see the applicant or access it in any way in the recruitment app. Explanation: The user was able to see the applicant because the my referral view is based on the hr.applicant model and thus the user has access to the record in both apps. But the problem should be fixed in the recruitment app because the user should still be able to see the applicant in the referral app. after this fix: You'll not be able to see the applicant in the recruitment app if you are not the interviewer of the applicant or the interviewer of the job position if you only have the interviewer rights. You'll also get an access error if you try to access the applicant directly by URL. task-3457405 Forward-Port-Of: odoo/enterprise#50683
This commit includes email address of the sender and the receiver in send_shipping request. opw-3487959 Forward-Port-Of: odoo/enterprise#48689
Original PR description
This commit includes email address of the sender and the receiver in send_shipping request. opw-3487959 Forward-Port-Of: odoo/enterprise#48689
This commit adds the commodity code in the request for international shipping in UPS, so that the commercial invoice has it listed for every commodity. opw-3487614 Forward-Port-Of: odoo/enterprise#50687
Original PR description
This commit adds the commodity code in the request for international shipping in UPS, so that the commercial invoice has it listed for every commodity. opw-3487614 Forward-Port-Of: odoo/enterprise#50687
Steps to reproduce the bug: Steps to reproduce the bug: - Configure Product Category All to use FIFO automated valuation - Create two products that are storable with category All: “P1” and “C1” - Set costs on the products: - “P1”: 40 - “C1”: 25 - On”P1” create a BoM with Product B as the component - Create an MO and scrap the component into negative quantities - Complete the MO and view the Cost Analysis, it works. - Purchase and receive the component product so that the nega
Original PR description
Steps to reproduce the bug:
Steps to reproduce the bug:
- Configure Product Category All to use FIFO automated valuation
- Create two products that are storable with category All: “P1” and “C1”
- Set costs on the products:
- “P1”: 40
- “C1”: 25
- On”P1” create a BoM with Product B as the component
- Create an MO and scrap the component into negative quantities
- Complete the MO and view the Cost Analysis, it works.
- Purchase and receive the component product so that the negative inventory is revalued for the scrap move:
- in the PO -> C1 = 47
- Try to view the Cost Analysis
Problem:
Traceback is triggered:
Error when render the template
ValueError: Expected singleton: stock.valuation.layer(7, 11)
<span t-esc="scrap.stock_valuation_layer_ids.unit_cost"
t-options="{"widget": "monetary", "display_currency": currency}"/>
opw-3574431
Forward-Port-Of: odoo/enterprise#50692
Forward-Port-Of: odoo/enterprise#50534This commit slightly adapts the template data to add a br element after the hr separator, which is necessary to be able to easily click on the embed view toolbar that appears right next to it. In addition, we modify the toolbar styling to make it appear "connected" to its embed view rather than floating a few pixels above it. Forward-Port-Of: odoo/enterprise#50724
Original PR description
This commit slightly adapts the template data to add a br element after the hr separator, which is necessary to be able to easily click on the embed view toolbar that appears right next to it. In addition, we modify the toolbar styling to make it appear "connected" to its embed view rather than floating a few pixels above it. Forward-Port-Of: odoo/enterprise#50724
Related to: https://github.com/odoo/odoo/pull/141001 Forward-Port-Of: odoo/enterprise#50282
Original PR description
Related to: https://github.com/odoo/odoo/pull/141001 Forward-Port-Of: odoo/enterprise#50282
Steps ===== - Install module planning - Go to menu Configuration > Roles - Click on the resource column of a given role - In the opened dropdown, click on a resource Issue ===== A traceback appears when the resource is clicked. Cause ===== The field resource_type is needed for the widget many2many_avatar_resource and is therefore added as a relatedFields. However, for field of type 'selection' the selection's values have to be added in the field info since the change of the rela
Original PR description
Steps ===== - Install module planning - Go to menu Configuration > Roles - Click on the resource column of a given role - In the opened dropdown, click on a resource Issue ===== A traceback appears when the resource is clicked. Cause ===== The field resource_type is needed for the widget many2many_avatar_resource and is therefore added as a relatedFields. However, for field of type 'selection' the selection's values have to be added in the field info since the change of the relational model (see odoo/odoo#114024). Fix === Selection values are added in the field description. Forward-Port-Of: odoo/enterprise#50695
Settings>Accounting>Argentinean Localization Change AFIB Certificate Save Issue: Traceback will raise because we input the file size to the b64decode instead of the content opw-3589877 Forward-Port-Of: odoo/enterprise#50691
Original PR description
Settings>Accounting>Argentinean Localization Change AFIB Certificate Save Issue: Traceback will raise because we input the file size to the b64decode instead of the content opw-3589877 Forward-Port-Of: odoo/enterprise#50691
Enhancements to existing features
This update changes the icons used for pivot and list menu items in the spreadsheet editor to match Odoo's standard icons. The change also consolidates duplicate pivot and list insert menu items, improving the user interface consistency and reducing menu clutter.
Original PR description
This commit changes the icons of the pivot/list menu items to match the standard pivot/list icons of Odoo. Task: [3559271](https://www.odoo.com/web#id=3559271&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form)
Portal pages like tickets and tasks were loading slowly because they were downloading oversized avatar images. This fix reduces the avatar file size from the largest version to a smaller one that still looks perfect on screen, significantly improving page load times especially for users with slower connections.
Original PR description
## Description Portal routes `/my/tickets` or `/my/tasks` were reported slow to load with many items. ## Analysis The avatars that are loaded are of too large sizes (encoded in base64) compared to their rendering size. `o_avatar` limits the dimensions to `1.7145em` (roughly `27px` on desktop), so it's useless to load `avatar_1024` for those image sources. This has a significant impact when the user has a slow connection, the server is hosted far away from the user, or the images used are of badly compressed (so each images takes a quite a few MiB). ## Fix Scan for all instances of the usage of `avatar_1024` on an `<img>` with the class `o_avatar` and reduce it to `avatar_128`. ## Reference opw-3470171 ## Linked PR https://github.com/odoo/odoo/pull/141877 Forward-Port-Of: odoo/enterprise#50557
Resolved issues and error corrections
When creating a new helpdesk ticket, the breadcrumb navigation was incorrectly displaying "False(#False)" instead of "New". This fix corrects the breadcrumb display by properly returning the parent method, ensuring users see the correct navigation label when creating new tickets.
Original PR description
Steps: - Install helpdesk - Open helpdesk - Go to my tickets - Create new ticket Issue: - when create new ticket breadcrumb shows "False(#False)" instead of "New". Cause: - Not returning the super method. Fix: - Create new field filtered with name running loop on that field and returning the super method. task-3478920
This fix corrects how the Production Analysis report calculates the quantity of products produced. The report was using an outdated field that no longer accurately reflects completed quantities after production moves are finalized. The update ensures the report displays the correct production quantities to help you track manufacturing output accurately.
Original PR description
product_qty no longer represent done qty after the move is done. Change to use quantity to calculate quantity produced on the Production Analysis report.
A bug in the Knowledge editor's /article command has been fixed. Previously, when users opened the article selection menu, both articles and templates were displayed together. This update ensures that only articles appear in the selection menu, with templates properly filtered out, providing a cleaner and more intuitive user experience.
Original PR description
When merging the models `knowledge.article` and `knowledge.article.template`, we unintentionally forgot to add a condition in the search domain of the select menu to filter out the templates from the search results. As a result, the select menu currently lists both articles and templates. This commit will simply add the missing condition in the search domain to exclude the templates from the search results. Steps to reproduce the issue: 1. Open the Knowledge editor 2. Type the /article command 3. Click on the selection menu => The select menu lists the articles and the templates. TO BE: The selection menu should only display the articles and not the templates Reference: https://github.com/odoo/enterprise/pull/48691 task-3593373
This fix addresses an issue in the barcode scanning system for manufacturing orders where unpicked items were incorrectly being included during validation. The change adds test coverage to prevent this problem from recurring in the future.
Original PR description
Fixes same issue as odoo/odoo#141210 except for the MO flow in barcode. This commit simply adds a test to prevent this from happening again. COM PR: odoo/odoo#141797
This update fixes a technical issue that prevented users from opening the attendance app's gantt view in studio mode. The problem was caused by missing context information that affected date calculations. With this fix, users can now access and customize the gantt view in studio mode without encountering errors.
Original PR description
Prior to this commit, opening studio mode on the gantt view of the attendance app would lead to a traceback in get_gantt_data() This is due to the fact that start_date is not well assigned because context seems to be lost in studio mode.
This update improves UPS international shipping by automatically including commodity codes in shipping requests. This ensures that commercial invoices generated for international shipments now properly display commodity information for each item, making customs documentation more complete and accurate.
Original PR description
This commit adds the commodity code in the request for international shipping in UPS, so that the commercial invoice has it listed for every commodity. opw-3487614 Forward-Port-Of: odoo/enterprise#50687
This fix resolves a system error that occurred when viewing the Cost Analysis report in manufacturing operations after inventory revaluation. The error happened when multiple valuation records existed for the same scrap component. The fix ensures the Cost Analysis report displays correctly in all inventory scenarios.
Original PR description
Steps to reproduce the bug:
Steps to reproduce the bug:
- Configure Product Category All to use FIFO automated valuation
- Create two products that are storable with category All: “P1” and “C1”
- Set costs on the products:
- “P1”: 40
- “C1”: 25
- On”P1” create a BoM with Product B as the component
- Create an MO and scrap the component into negative quantities
- Complete the MO and view the Cost Analysis, it works.
- Purchase and receive the component product so that the negative inventory is revalued for the scrap move:
- in the PO -> C1 = 47
- Try to view the Cost Analysis
Problem:
Traceback is triggered:
Error when render the template
ValueError: Expected singleton: stock.valuation.layer(7, 11)
<span t-esc="scrap.stock_valuation_layer_ids.unit_cost"
t-options="{"widget": "monetary", "display_currency": currency}"/>
opw-3574431
Forward-Port-Of: odoo/enterprise#50692
Forward-Port-Of: odoo/enterprise#50534This fix resolves a critical error that prevented users from selecting an appointment type when creating new appointments. The issue was caused by incorrect field reference in the system's tracking mechanism. Users can now successfully create and configure appointments without encountering errors.
Original PR description
This issue occurs when a customer creates Appointments and then attempts to select the Appointments type ,at that time error will be generated. step to reproduce: - Install the `appointments` Module.…
This issue occurs when a customer creates Appointments and then attempts to select the Appointments type ,at that time error will be generated.
step to reproduce:
- Install the `appointments` Module.
- click on `Reporting > Appointments` menu.
- open list view.
- create new Appointments(Enter only Meeting Subject) .
- after select Appointments type.
- the error will be generated.
sentry traceback-
```
AttributeError: 'mail.tracking.value' object has no attribute 'field'
File "odoo/http.py", line 2157, in __call__
response = request._serve_db()
File "odoo/http.py", line 1732, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "odoo/service/model.py", line 133, in retrying
result = func()
File "odoo/http.py", line 1759, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 1960, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "addons/website/models/ir_http.py", line 235, in _dispatch
response = super()._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 207, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 722, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "home/odoo/src/enterprise/17.0/knowledge/controllers/article_thread.py", line 47, in mail_thread_messages
return super().mail_thread_messages(thread_model, thread_id, **kwargs)
File "odoo/http.py", line 722, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/mail/controllers/thread.py", line 28, in mail_thread_messages
return {**res, "messages": res["messages"].message_format()}
File "home/odoo/src/enterprise/17.0/whatsapp/models/mail_message.py", line 48, in message_format
vals_list = super().message_format(*args, **kwargs)
File "addons/sms/models/mail_message.py", line 42, in message_format
message_values = super(MailMessage, self).message_format(format_reply=format_reply, msg_vals=msg_vals)
File "addons/rating/models/mail_message.py", line 30, in message_format
message_values = super().message_format(format_reply=format_reply, msg_vals=msg_vals)
File "addons/mail/models/mail_message.py", line 1033, in message_format
vals_list = self._message_format(self._get_message_format_fields(), format_reply=format_reply)
File "addons/im_livechat/models/mail_message.py", line 34, in _message_format
vals_list = super()._message_format(fnames=fnames, format_reply=format_reply)
File "addons/mail/models/mail_message.py", line 929, in _message_format
displayed_tracking_ids = record_sudo._track_filter_for_display(displayed_tracking_ids)
File "home/odoo/src/enterprise/17.0/appointment/models/calendar_event.py", line 204, in _track_filter_for_display
return tracking_values.filtered(lambda t: t.field.name != 'active')
File "odoo/models.py", line 6082, in filtered
return self.browse([rec.id for rec in self if func(rec)])
File "odoo/models.py", line 6082, in <listcomp>
return self.browse([rec.id for rec in self if func(rec)])
File "home/odoo/src/enterprise/17.0/appointment/models/calendar_event.py", line 204, in <lambda>
return tracking_values.filtered(lambda t: t.field.name != 'active')
```
https://github.com/odoo/enterprise/blob/17.0/appointment/models/calendar_event.py#L204
There is no 'field' name of fields accessible in the mail.tracking.value model, but there is `field_id` name fields accessible in that model.
after this commit, While creating an appointment, the customer will be able to select an appointment type.
sentry-4629475865This fix corrects a bug where quality inspection worksheets completed from the manufacturing shop floor were always marked as passing, regardless of actual results. The system now properly validates worksheet checks through the correct quality check wizard, allowing quality steps to accurately fail when inspection criteria are not met.
Original PR description
Before this commit, Quality steps of type worksheet done from the mrp shop floor, always passed. This is because since #44696, worksheets should be accessed through the `action_open_quality_check_wizard` to properly perform the worksheet check.
This update fixes an issue with UPS shipment processing by ensuring that email addresses for both the sender and receiver are included when sending shipments. This improvement helps ensure that UPS has complete contact information for delivery notifications and customer communication.
Original PR description
This commit includes email address of the sender and the receiver in send_shipping request. opw-3487959 Forward-Port-Of: odoo/enterprise#48689
This fix ensures that operation instruction PDFs are now displayed in the shop floor view even when a Quality Control process is attached to the operation. Previously, the system would hide the PDF when QC was present, making it difficult for workers to access important instructions. Now PDFs will always be shown when available, regardless of QC status.
Original PR description
### Steps - Create a product with its bill of materials - Include an operation with a pdf as instruction - Create a MO and confirm. - Go to shop floor and you will see the link to pdf in the operation record. - Go to the BOM and add a QC on the the operation - Create another MO, confirm and go to shop floor ### Issue The pdf doesn't appear. ### Reason In the method which checks if we display the worksheetData ``showWorksheetCheck()``, it returns false when there is a Quality Control present. After discussing with @MGM, it should always return the pdf if it's present. opw-3509503 Forward-Port-Of: odoo/enterprise#49389