Thursday, May 30, 2024
34 changes · master
New functionality added to Odoo
This update makes it easier to create products from barcode lookup data in Point of Sale and stock barcode workflows. It enriches new products with more available details such as images, dimensions, volume, and attributes, while limiting creation to administrators and adding API key authentication checks.
Original PR description
*: product_barcodelookup, stock_barcode_barcodelookup pos_product_barcodelookup: - Added a barcode_scanner widget inside create product form view. stock_barcode_barcodelookup: - Added a create product button inside toaster. product_barcodelookup: - Set multi-images if available. - Set volume (based on the 3 dimensions). - When creating the product based on the barcode, created all attribute values for which the attribute is defined. - Removed module stock_barcode_account_barcodelookup. - For attributes of type color, only created if color is valid - Added a functionality to check authentication of the api key. Only user with administration rights can create the product both in pos_product_barcodelookup and stock_barcode_barcodelookup. task: 3911024 Related: https://github.com/odoo/odoo/pull/166796 Upgrade: https://github.com/odoo/upgrade/pull/6087
Adds a new Colombian eInvoicing module that lets companies send invoices, credit notes, and debit notes directly to DIAN instead of using the paid Carvajal intermediary. This reduces external service dependency and cost while supporting both testing and production DIAN flows.
Original PR description
Community: https://github.com/odoo/odoo/pull/156094 -- Context -- In Colombia, it's mandatory to send every invoice, credit note, debit note to the authorities. It's currently possible using…
Community: https://github.com/odoo/odoo/pull/156094 -- Context -- In Colombia, it's mandatory to send every invoice, credit note, debit note to the authorities. It's currently possible using "Carvajal", an intermediate that defines a custom format of xml and translates it into UBL to send it to the DIAN (the National Tax and Customs Directorate). Unfortunately, Carvajal is very expensive (at the user's expense) and maintenance is complex since we depends on Carjaval's documentation rather than the DIAN's documentation. In addition, testing is complex as they blocked IPs from France and Belgium, and they also switch off their servers at night (!). We can do without Carvajal, by communicating directly with DIAN's webservices which uses standard UBL... and it's free ! This is what is done in this PR. In addition, `l10n_co_dian` dos not require `account_edi`, as it relies on the Send & Print wizard. -- How to use ? -- To use DIAN's service, a user needs to request a public and private key to the DIAN (used to authenticate the xml sent). There are 2 modes: * The habilitation mode endpoint: https://vpfe-hab.dian.gov.co/WcfDianCustomerServices.svc?wsdl 1. used to test the flow (using "SendBillSync") 2. used to be authorized to switch to the production mode (using "SendTestSetAsync") * The production mode: used to send real invoices (using "SendBillSync") endpoint: https://vpfe.dian.gov.co/WcfDianCustomerServices.svc?wsdl The testing class `TestDianFlows` contains several examples of typical flows. -- To be done later -- We cannot remove Carvajal to soon as customers have contracts with them. The plan is to keep Carvajal until 18.0. So in 18.0, we will merge `l10n_co_dian` with `l10n_co_edi`, such that only `l10n_co_edi` remains (containing the DIAN implementation). task-3141517
Adds United Kingdom payroll support so businesses can generate payslips from employee contracts and produce yearly P60 substitutes. It also supports statutory payments, student loan repayments, pension contributions, benefits in kind, and employee National Insurance letters.
Enhancements to existing features
Barcode users now hear a confirmation sound when a scan is successful, in addition to the existing screen flash. This makes it easier for warehouse and manufacturing staff to confirm scans immediately, especially in fast-paced environments.
Original PR description
Before this PR =============== When a barcode was scanned successfully, the screen flashed to indicate the successful scan, but there was no sound. This lack of auditory feedback could sometimes make it difficult for users to be sure the scan was successful. After this PR =============== Along with the flashing screen, a sound now plays when a barcode scan is successful. This provides clear and immediate feedback to users, ensuring they are aware that the scan was successful. TaskId: 3685476
Resolved issues and error corrections
A Romanian SAF-T automated test was adjusted so it no longer relies on an optional Intrastat feature. This helps keep test results reliable when that optional module is not installed, without changing business functionality.
Original PR description
One of the tests was testing an `account_intrastat` related field, but the module's not a hard dependency, so we're discarding it. Related PR: odoo/enterprise#59363 runbot-66310
Miscellaneous changes
This PR aims to convert QUnit tests which rely on mail/test_utils to hoot. Part of task-3818666 Related Community PR: https://github.com/odoo/odoo/pull/167176 Forward-Port-Of: odoo/enterprise#63430
Original PR description
This PR aims to convert QUnit tests which rely on mail/test_utils to hoot. Part of task-3818666 Related Community PR: https://github.com/odoo/odoo/pull/167176 Forward-Port-Of: odoo/enterprise#63430
When VAT units are created or updated, matching horizontal groups are now created automatically. These groups are enabled on relevant tax reports, making VAT-unit reporting more consistent while removing a debug-only menu entry that business users did not need.
Original PR description
This Pr will do multiple things: - Remove the Horizontal Groups menu items from the debug mode. - Create the horizontal group that corresponds to each VAT UNIT each time a VAT Unit is created/modified. - Activate the horizontal groups on the generic Tax Report, the EC Sales List, and the Tax reports whose company belongs to the country of the VAT Unit. task: 3918305
Shift templates can now define editable start and end hours plus a duration in days, making planned schedules more flexible. When templates are assigned, Odoo uses the resource or company calendar to calculate working dates and allocated hours more accurately.
Original PR description
This commit updates the method for calculating planned dates using shift template values. It introduces the ability to modify the start and end hours, as well as the duration in days, for which a shift template is scheduled. The allocated hours is then determined using either the user's or the company's calendar. When assigning a shift template to a resource, the planned dates are calculated according to the resource's calendar. The start and end hours from the template are retained, along with the original start date. The end date is generated based on the duration in days specified in the template. The planned dates are arranged over a timeframe that ensures the total working days match the specified days duration. taskid:3624669
Australian payroll now has more detailed payroll input and attachment categories, including clearer treatment for payment type, superannuation, and PAYG withholding. This helps payroll calculations and reporting align more consistently with Australian payroll requirements.
Original PR description
This commit revamps the input types and attachments for the l10n_au_hr_payroll module. The input types have selection fields for payment type, superanuation and paygw treatment. There are new input types added. Salary Rules have been updated to use the new input type fields. Task# 3769675
The pull request updates automated tests to match recent changes in Odoo's default internal transfer settings. This helps keep stock barcode and quality control checks reliable after related platform changes, with no direct impact on day-to-day users.
Original PR description
Following the changes wit hthe default internal picking types in the comminity side odoo/odoo#165778, adapt some tests to match the changes.
Project budgets are now calculated using analytic accounts instead of budget positions, simplifying how budget lines are configured and tracked. The update also adds committed amount tracking from purchase orders and introduces a new budget report view for clearer budget monitoring.
Original PR description
Before this commit: The Budget was counted using budget position and analytical account After this commit: Removed Budget position from the budget line. Model renamed `crossovered.budget` to `budget.analytic` and `crossovered.budget.line` to `budget.line` Removed/Renamed some fields of these models. Now the budget will be counted using a combination of analytical accounts only. Also created a new field in a budget line called committed amount which will be calculated from the analytical distribution of the purchase order line A new budget report view is created. task - 3623445
The MPS creation wizard no longer automatically picks the first bill of materials when a product is selected. This helps prevent large numbers of component records from being added unintentionally, giving users more control over planning setup.
Original PR description
The creation wizard computes the bom from the selected product by selecting the first bom available. The issue is that the MPS will add the components of the bom to the records. If a bom has 100+ components, that's a lot of records. We want the user to make that a conscious decision instead of an automated behavior.
Customers are now alerted when they already have an upcoming appointment before booking another one. This helps prevent accidental duplicate bookings while still allowing users to view the existing appointment or continue with a new booking if needed.
Original PR description
Add an "extra" step to tell the user that he already had an upcoming appointment. The idea is to be sure that the user knows that he already booked an appointment before booking another one. The upcoming appointment info is based on the info stored in the localStorage when an appointment is taken and landing on the validation page and the sale confirmation if website_appointment_sale is installed. In case it's not the public user, we don't use the list of access_token from the local storage and just check the appointments based on the appointment_booker_id. There are 2 buttons, the first one allows to reach the upcoming appointment details and the other to display the calendar to book another appointment. Clicking on the button "Add another" add a value in the local storage to ignore and don't show the upcoming block info for a day. We also add the upcoming events info of the appointment booker in the mail template. task-3773579
The Documents spreadsheet app now includes more engaging demo spreadsheets to replace examples lost when templates were removed. This gives sales teams and evaluators better sample dashboards and commission sheets to explore during demonstrations.
Original PR description
After the removal of the templates, we lost the opportunity to use them as demonstration spreadsheets. This revision adds 2 spreadsheets as demo data, with their content being more interesting than the current "Res Partner Spreadsheet". task-3908278
Australian payroll now calculates tax withholding on unused leave at termination using the employee's normal scheduled gross earnings, instead of a potentially reduced final payslip amount. This helps produce more accurate termination payments, especially when employment ends partway through a pay period, and allows manual adjustment of the gross unused leave amount when needed.
Original PR description
The amount withheld from the unused leaves payment at the time of termination depends on the normal gross earnings of an employee during their schedule pay period. This commit implements withholding variations for unused leaves. Also adds the option to assign the gross unused leaves manually. Issue: The salary rules use the gross salary computed on a regular payslip. This raises the issues when the employee is terminated in the middle of a pay period and the gross salary for the payslip changes. task# 3821959
The Sign onboarding tour now advances automatically when a user places the signature item into the document. This removes an extra click, making the first-time signing setup flow clearer and faster.
Original PR description
Before this commit, users needed to click on the signature field to move to the next step. After this commit, If a user drags the signature item and drops it into the iframe document, it will move to the next step without the need for clicking. task-3925591
The event form now shows helpful placeholder text for the Twitter Wall field. This makes it easier for users to understand what the field is for when configuring event social media display options.
Original PR description
This PR adds a placeholder to `twitter_wall_id` in order to familiarize the user about the purpose of that field. Task-[3777482](https://www.odoo.com/web#id=3777482&menu_id=4722&cids=2&action=333&active_id=965&model=project.task&view_type=form)
Preparation display orders now show the employee name when the POS HR module is installed, instead of falling back to the user name. This helps staff and managers identify who handled an order more accurately on the preparation display.
Original PR description
Before on each preprartion display order the user name was displayed instead of the employee name even when pos_hr module was installed. This commit adds the employee name to the preparation display order and when the pos_hr module is installed it will display the employee name instead of the user name. taskId: 3956671
This fixes an error that could occur when opening a storable product after searching products by warehouse in Inventory. The report context now handles the warehouse correctly, preventing a traceback and allowing users to view product details normally.
Original PR description
Steps to reproduce: - Navigate to Product Variants list view in the Inventory module - Search for a warehouse e.g. "My Company" in the list view - Click on any storable product e.g. DESK0005 This gives a traceback because the 'warehouse_id' in the context may be the name and not the id. Linked to: - https://github.com/odoo/odoo/pull/167283
Removing the VAT numbers grouping from the Dutch ICP report opw-3944815 Forward-Port-Of: odoo/enterprise#63357 Forward-Port-Of: odoo/enterprise#63186
Original PR description
Removing the VAT numbers grouping from the Dutch ICP report opw-3944815 Forward-Port-Of: odoo/enterprise#63357 Forward-Port-Of: odoo/enterprise#63186
German grammar is tricky Forward-Port-Of: odoo/enterprise#63334 Forward-Port-Of: odoo/enterprise#63317
Original PR description
German grammar is tricky Forward-Port-Of: odoo/enterprise#63334 Forward-Port-Of: odoo/enterprise#63317
## Issue: - When an invoice is related to a subscription the customer can't see it on portal due to access error (403:Forbidden) ## Steps To Reproduce: - Create a subscription and confirm it. - Run the schedule action: `Sale Subscription: generate recurring invoices and payments` - As customer, click on the button to see the invoice from the mail - Customer will land on a 403 error page ## Solution: - the access error is due to the `access_token` not being passed to `_get_extra_payme
Original PR description
## Issue: - When an invoice is related to a subscription the customer can't see it on portal due to access error (403:Forbidden) ## Steps To Reproduce: - Create a subscription and confirm it. - Run the schedule action: `Sale Subscription: generate recurring invoices and payments` - As customer, click on the button to see the invoice from the mail - Customer will land on a 403 error page ## Solution: - the access error is due to the `access_token` not being passed to `_get_extra_payment_form_values` - adding `invoice_access_token` to this method kwargs fixes the problem. - To minimize impact on other components, we resolved a naming conflict in the overload of `_get_extra_payment_form_values` by renaming invoice_id to `subscription_invoice_id` and `access_token` to `invoice_access_token`. This approach ensures the fix remains close to the bug's origin. opw-3862251 Forward-Port-Of: odoo/enterprise#61211
Cohort views were patched to allow inserting them as an embed in a Knowledge article, but `web_cohort` was not a dependency of `knowledge`. It was an issue if the `web_cohort` (which is auto_install: True) module was manually uninstalled, because it would result in a missing dependency (warning in the browser console) preventing the insertion of any external view in Knowledge. The same issue was present for Gantt views (`web_gantt`). Using an odoo runtime import, we can evaluate if
Original PR description
Cohort views were patched to allow inserting them as an embed in a Knowledge article, but `web_cohort` was not a dependency of `knowledge`. It was an issue if the `web_cohort` (which is auto_install: True) module was manually uninstalled, because it would result in a missing dependency (warning in the browser console) preventing the insertion of any external view in Knowledge. The same issue was present for Gantt views (`web_gantt`). Using an odoo runtime import, we can evaluate if the module was loaded and apply the patch at that point. If the module was not loaded, the patch is not applied. Dependencies were added in [1] to allow HOOT test to work, but this commit will remove the need for that while still allowing those views to be inserted in Knowledge. [1]: https://github.com/odoo/enterprise/commit/f1326b20c819763026424d7d92a3d5489db60bc0 task-3918938 Forward-Port-Of: odoo/enterprise#63304 Forward-Port-Of: odoo/enterprise#62181
Forward-Port-Of: odoo/enterprise#62612
Original PR description
Forward-Port-Of: odoo/enterprise#62612
Use the same condition for the modal and button to ensure both are always rendered at the same time and the button cannot be rendered if the modal is not. Forward-Port-Of: odoo/enterprise#63253
Original PR description
Use the same condition for the modal and button to ensure both are always rendered at the same time and the button cannot be rendered if the modal is not. Forward-Port-Of: odoo/enterprise#63253
Before this commit, deleting a list and updating its domain concurrently would lead to a crash. This was due to the fact that the transformation of `UPDATE_ODOO_LIST_DOMAIN` was missing. This commit adds the missing transformation. This commit also fix a test that checked the number of pivots instead of the number of lists. Task: 3908657 Forward-Port-Of: odoo/enterprise#63442 Forward-Port-Of: odoo/enterprise#63246
Original PR description
Before this commit, deleting a list and updating its domain concurrently would lead to a crash. This was due to the fact that the transformation of `UPDATE_ODOO_LIST_DOMAIN` was missing. This commit adds the missing transformation. This commit also fix a test that checked the number of pivots instead of the number of lists. Task: 3908657 Forward-Port-Of: odoo/enterprise#63442 Forward-Port-Of: odoo/enterprise#63246
Before this commit, when selecting a tax unit on the filter with some companies of the tax unit not selected, an initial reload occurred, but the options of the tax unit were not saved. This meant we had to click the filter twice to apply it. task-3954014 Forward-Port-Of: odoo/enterprise#63342
Original PR description
Before this commit, when selecting a tax unit on the filter with some companies of the tax unit not selected, an initial reload occurred, but the options of the tax unit were not saved. This meant we had to click the filter twice to apply it. task-3954014 Forward-Port-Of: odoo/enterprise#63342
There was a typo in the error message "You have to attach at **lease** one document.", where _lease_ should be _least_. This commit fixes that. We also export the latest version of the .pot file. Forward-Port-Of: odoo/enterprise#63369 Forward-Port-Of: odoo/enterprise#63051
Original PR description
There was a typo in the error message "You have to attach at **lease** one document.", where _lease_ should be _least_. This commit fixes that. We also export the latest version of the .pot file. Forward-Port-Of: odoo/enterprise#63369 Forward-Port-Of: odoo/enterprise#63051
**Current behavior:** Creating a manufacturing order for a product which is tracked via lots can cause a trace back when trying to register the lot number in the shop floor as part of the registering production flow. **Expected behavior:** No trace back. **Steps to reproduce:** 1. Create a product which is tracked with lots and a component 2. Create an MO to manufacture the lot-tracked product and confirm it 3. Open the shop floor, click on the MO line for the product to add the l
Original PR description
**Current behavior:** Creating a manufacturing order for a product which is tracked via lots can cause a trace back when trying to register the lot number in the shop floor as part of the registering production flow. **Expected behavior:** No trace back. **Steps to reproduce:** 1. Create a product which is tracked with lots and a component 2. Create an MO to manufacture the lot-tracked product and confirm it 3. Open the shop floor, click on the MO line for the product to add the lot number and check it off -> trace back **Cause of the issue:** The context prop is a 'stringified' object instead of the owl-enforced 'object' type. `MrpRegisterProductionDialog` extends `MrpQualityCheckConfirmationDialog`, where we can see context is not stringified. **Fix:** Don't stringify the context upon creation of the confirmation dialog object. opw-3876368 Forward-Port-Of: odoo/enterprise#63309 Forward-Port-Of: odoo/enterprise#62842
The aim of this commit is checking that the function `collect_global_info_data` properly checks if one of the user's companies is the one on the journal and not necessarily the one from the current company (`self.env.company`). In the mean time, we're now returning an empty string instead of a False for the balance_amount's value in the returned dict because we have a props validation on this field. no task id Forward-Port-Of: odoo/enterprise#63365
Original PR description
The aim of this commit is checking that the function `collect_global_info_data` properly checks if one of the user's companies is the one on the journal and not necessarily the one from the current company (`self.env.company`). In the mean time, we're now returning an empty string instead of a False for the balance_amount's value in the returned dict because we have a props validation on this field. no task id Forward-Port-Of: odoo/enterprise#63365
Issue: ====== Creating a MO with barcode uses the wrong quantity for the components. Steps to reproduce the issue: ============================= - Install mrp , barcode - Activate unit of measure - Create a product and assigna barcode number to it - Create a BoM for that product with a component `comp` - The `comp` product have `g` as unit of measure - Assign the unit of measure in the BoM for the `comp` as `kg` - Go to barcode -> operations -> manufacturing - Create a new order -
Original PR description
Issue: ====== Creating a MO with barcode uses the wrong quantity for the components. Steps to reproduce the issue: ============================= - Install mrp , barcode - Activate unit of measure - Create a product and assigna barcode number to it - Create a BoM for that product with a component `comp` - The `comp` product have `g` as unit of measure - Assign the unit of measure in the BoM for the `comp` as `kg` - Go to barcode -> operations -> manufacturing - Create a new order - Enter barcode manually of the product that you set up early - Click on +1 button - You can see the quantity is wrong as and not counting the difference of UoM Solution: ========= We need to fetch the uom data of the move to compare it to the one of the product and update the quantity accordingly. opw-3776896 Forward-Port-Of: odoo/enterprise#63178 Forward-Port-Of: odoo/enterprise#59131
Create an Invoice for an EC customer hading a section line and a tax on the product line Confirm the invoice Add Withholding move Go to Accounting>Reporting>Tax report Generate ATS Warning will be shown "Invoice lines should have exactly one VAT tax." ATS file will download anyway opw-3896076 Forward-Port-Of: odoo/enterprise#63363
Original PR description
Create an Invoice for an EC customer hading a section line and a tax on the product line Confirm the invoice Add Withholding move Go to Accounting>Reporting>Tax report Generate ATS Warning will be shown "Invoice lines should have exactly one VAT tax." ATS file will download anyway opw-3896076 Forward-Port-Of: odoo/enterprise#63363
See the related community PR for the fix and more info. community PR: https://github.com/odoo/odoo/pull/167014 Forward-Port-Of: odoo/enterprise#63339
Original PR description
See the related community PR for the fix and more info. community PR: https://github.com/odoo/odoo/pull/167014 Forward-Port-Of: odoo/enterprise#63339
When `test_discuss_full` and at least `web_enterprise` are installed, `test_discuss_full_enterprise` must be installed for the tests in `test_discuss_full` to pass. runbot-65732 Forward-Port-Of: odoo/enterprise#63366
Original PR description
When `test_discuss_full` and at least `web_enterprise` are installed, `test_discuss_full_enterprise` must be installed for the tests in `test_discuss_full` to pass. runbot-65732 Forward-Port-Of: odoo/enterprise#63366