Monday, April 7, 2025
26 changes · saas-18.1
Resolved issues and error corrections
This fixes a chat display issue where the “seen by everyone” marker could appear on many messages instead of only the latest relevant message. Users now see a cleaner, less confusing read-status indicator in Discuss conversations.
Original PR description
Before this commit, the message seen indicator was displayed on many messages when it was seen by everyone. Steps to reproduce: - make a DM chat between Mitchell Admin and Marc Demo - send a dozen…
Before this commit, the message seen indicator was displayed on many messages when it was seen by everyone. Steps to reproduce: - make a DM chat between Mitchell Admin and Marc Demo - send a dozen messages by Marc - send a dozen of messages by Mitchell - mark the conversation as seen by both (focus composer and tab) => Mitchell or Marc sees as many seen indicator as there are messages, instead of just once on the last self-authored message. This happens due to a typo on computing the field `lastMessageSeenByAllId`: the `reduce` loop could have been `undefined` as the accumulator value, which leads to `Math.min(undefined)` that becomes `NaN`, which is falsy. As a result, no previous to last self message seen by everyone could be found, and all messages were mistakenly considered as messages to display the seen indicator. This commit fixes the issue by fixing the typo in the reduce, by returning the current accumulator value of the `reduce` function when it's unchanged (self-member). Task-4689924 Before / After <img width="258" alt="Screenshot 2025-04-07 at 14 43 06" src="https://github.com/user-attachments/assets/420d44cf-1b5e-4d0a-aa37-43ca17ffa564" /> <img width="248" alt="Screenshot 2025-04-07 at 14 43 35" src="https://github.com/user-attachments/assets/98684bbb-d92d-4d02-bde4-39eb15dcf9b7" />
This update prevents an error that could occur when preparing Belgian student DmfA payroll declarations. It helps payroll teams complete required student reporting more reliably without interruption.
Miscellaneous changes
Steps to reproduce: - Force _verify_updated_quantity returns warning - Add product to cart - exception shown Explanation: - When _verify_updated_quantity returns warning, it will use WarningNotification in CartNotification only. However CartNotification required currency_id for AddToCartNotification, therefore exception throw. Forward-Port-Of: odoo/odoo#204585
Original PR description
Steps to reproduce: - Force _verify_updated_quantity returns warning - Add product to cart - exception shown Explanation: - When _verify_updated_quantity returns warning, it will use WarningNotification in CartNotification only. However CartNotification required currency_id for AddToCartNotification, therefore exception throw. Forward-Port-Of: odoo/odoo#204585
Steps to reproduce: - Install accounting - Go to Reporting, Invoice Analysis in pivot view - Select Untaxed amount and Average price - Or (Select Product Quantity and Average Price) Issue: If the `average_price` is selected, the `untaxed_amount` becomes empty and not read, and it is the same case for the `product_quantity`. In pivot view, the frontend sends the fields to the backend in this format field_name:agg https://github.com/odoo/odoo/blob/36e6d6ea6792d5e549a7794f111a65fc32decd1c/a
Original PR description
Steps to reproduce: - Install accounting - Go to Reporting, Invoice Analysis in pivot view - Select Untaxed amount and Average price - Or (Select Product Quantity and Average Price) Issue: If the…
Steps to reproduce: - Install accounting - Go to Reporting, Invoice Analysis in pivot view - Select Untaxed amount and Average price - Or (Select Product Quantity and Average Price) Issue: If the `average_price` is selected, the `untaxed_amount` becomes empty and not read, and it is the same case for the `product_quantity`. In pivot view, the frontend sends the fields to the backend in this format field_name:agg https://github.com/odoo/odoo/blob/36e6d6ea6792d5e549a7794f111a65fc32decd1c/addons/web/static/src/views/pivot/pivot_model.js#L1142-L1143 In [d741788](https://github.com/odoo/odoo/commit/d7417883062e14c4a0a58978463f181b3811d19d), read_group is overridden to correctly handle the `average_price`, and uses both the `untaxed_amount` and the `product_quantity` to compute it. If the `untaxed_amount` and `product_quantity` weren’t in the original fields sent from the frontend by the user, they are removed from the result data. But the problem they are named incorrectly in the if conditions, and because of the format sent from the frontend, the if condition will always succeed (because the name in the fields array is not the same as the one checked in the if condition) leading to the removal of both `untaxed_amount` and `product_quantity` from the result whenever selecting the `average_price`. opw-4644004 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 Forward-Port-Of: odoo/odoo#204638
Hello, I am submitting my signed Individual Contributor License Agreement (CLA) to contribute to the Odoo project. This PR adds my CLA file under `doc/cla/individual/`. Thank you! 😊 Forward-Port-Of: odoo/odoo#204868
Original PR description
Hello, I am submitting my signed Individual Contributor License Agreement (CLA) to contribute to the Odoo project. This PR adds my CLA file under `doc/cla/individual/`. Thank you! 😊 Forward-Port-Of: odoo/odoo#204868
Issue: ======== When searching for a partner using a mobile number with spaces (e.g., `+91 123456789`), the expected partner is not displayed. Cause: ======== The code removes spaces from stored phone numbers but does not modify the search input, leading to a mismatch: - Stored: `+91123456789` - Search input: `+91 123456789` Fix: ====== Added a regex to standardize mobile numbers on the frontend by removing `+, -, (), and spaces`. The same transformation is applied during search
Original PR description
Issue: ======== When searching for a partner using a mobile number with spaces (e.g., `+91 123456789`), the expected partner is not displayed. Cause: ======== The code removes spaces from stored phone numbers but does not modify the search input, leading to a mismatch: - Stored: `+91123456789` - Search input: `+91 123456789` Fix: ====== Added a regex to standardize mobile numbers on the frontend by removing `+, -, (), and spaces`. The same transformation is applied during search to ensure correct matches. Task-4675406 Forward-Port-Of: odoo/odoo#203699
Versions -------- - 17.0+ Steps ----- 1. Have a product with a custom attribute; 2. create a sales order with the product; 3. enter a value for the customer product; 4. confirm order & go to delivery; 5. print delivery slip. Issue ----- The product's name is displayed twice. Cause ----- The product's name is used as default description. There is currently logic in place to prevent duplicate printing if there's an exact match. If the product has certain attributes, they will
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Have a product with a custom attribute; 2. create a sales order with the product; 3. enter a value for the customer product; 4. confirm order & go to delivery; 5. print delivery slip. Issue ----- The product's name is displayed twice. Cause ----- The product's name is used as default description. There is currently logic in place to prevent duplicate printing if there's an exact match. If the product has certain attributes, they will get added to the description, making the strings no longer equal. Solution -------- Instead of checking for exact matches, use `startswith` and `removeprefix` to remove the duplicate product name from the description. opw-4637449 Forward-Port-Of: odoo/odoo#201010
Before this commit, it was possible to have a `videoError` caused by (or happening during) the destruction of the video component. This error should not be retained as playing the video is no longer useful when the component is destroyed. Forward-Port-Of: odoo/odoo#204518 Forward-Port-Of: odoo/odoo#204470
Original PR description
Before this commit, it was possible to have a `videoError` caused by (or happening during) the destruction of the video component. This error should not be retained as playing the video is no longer useful when the component is destroyed. Forward-Port-Of: odoo/odoo#204518 Forward-Port-Of: odoo/odoo#204470
Since paypal does not allow empty fields to be sent, its better to add email only if it exists. Some customers find it confusing that paypal integration fails without proper feedback that the issue comes from the empty email in their company form. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204636
Original PR description
Since paypal does not allow empty fields to be sent, its better to add email only if it exists. Some customers find it confusing that paypal integration fails without proper feedback that the issue comes from the empty email in their company form. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204636
### Steps to reproduce: ISSUE 1: - Insert multiple icons (e.g., /image, icon) into a paragraph. - Place the cursor before the first icon. - Press the right arrow key, and notice that the selection jumps to the second paragraph, skipping over the icons. ISSUE 2: - Create three paragraphs. - Insert icons into the second paragraph. - Place the cursor in the first or third paragraph and press the up/down arrow key it skips the second paragraph. - Set up following HTML: ```html <p>
Original PR description
### Steps to reproduce: ISSUE 1: - Insert multiple icons (e.g., /image, icon) into a paragraph. - Place the cursor before the first icon. - Press the right arrow key, and notice that the selection…
### Steps to reproduce: ISSUE 1: - Insert multiple icons (e.g., /image, icon) into a paragraph. - Place the cursor before the first icon. - Press the right arrow key, and notice that the selection jumps to the second paragraph, skipping over the icons. ISSUE 2: - Create three paragraphs. - Insert icons into the second paragraph. - Place the cursor in the first or third paragraph and press the up/down arrow key it skips the second paragraph. - Set up following HTML: ```html <p><br></p> <p><br><span class="fa fa-glass"></span>[]</p> ``` - Press arrow up key. - Cursor will move to the first paragraph. ### Description of the issue/feature this PR addresses: - Pressing arrow key (left or right) caused the cursor to consecutively skip over all icons until a text node was reached. - Pressing up/down arrow keys would skip sibling block containing only icons. - Pressing the up/down arrow keys would skip over icons in the same block if the cursor is on a `<br>`. ### Desired behavior after PR is merged: - Add extra `\uFEFF` before and after icons to prevent them from being skipped. task-3045033 Forward-Port-Of: odoo/odoo#179848
Steps to reproduce the bug: - Create a storable product, that is tracked by serial number - Add to in Hand the product and set the serial number to it - Create a quotation of this product and confirm to be a sale order - Open a pos session, and select quotations and orders from pos - Select the sales order created and settle the order - The order line will be imported without asking if serial number can be linked Issue: The function settleOrder in pos_sale/pos_store.js reads the sales
Original PR description
Steps to reproduce the bug: - Create a storable product, that is tracked by serial number - Add to in Hand the product and set the serial number to it - Create a quotation of this product and confirm…
Steps to reproduce the bug: - Create a storable product, that is tracked by serial number - Add to in Hand the product and set the serial number to it - Create a quotation of this product and confirm to be a sale order - Open a pos session, and select quotations and orders from pos - Select the sales order created and settle the order - The order line will be imported without asking if serial number can be linked Issue: The function settleOrder in pos_sale/pos_store.js reads the sales order using this.data.read, this will read the sales order with the sale order line but without the information of the lot numbers and more info. These informations are returned in a read_converted function on sale.order.line inherited model on pos_sale, and this function is not used to read the sale order lines, hence no information related to the lots and the pop up that asks if the lot number may be linked will not appear anymore. opw-4591887 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 Forward-Port-Of: odoo/odoo#204643 Forward-Port-Of: odoo/odoo#201400
Form and kanban view archs are compiled into owl templates. Those archs are translated server-side, before being sent to the client. They can contain `t-translation` directives (typically ="off" to disable translations). This tells the view processing in python not to translate the subtree. In the js compilers, that attribute is listed among the tolerated attributes for kanban archs, but not for forms. However, the cases are similar, so their should be not differences between the two. More
Original PR description
Form and kanban view archs are compiled into owl templates. Those archs are translated server-side, before being sent to the client. They can contain `t-translation` directives (typically ="off" to…
Form and kanban view archs are compiled into owl templates. Those archs are translated server-side, before being sent to the client. They can contain `t-translation` directives (typically ="off" to disable translations). This tells the view processing in python not to translate the subtree. In the js compilers, that attribute is listed among the tolerated attributes for kanban archs, but not for forms. However, the cases are similar, so their should be not differences between the two. Moreover, since [1], compiled templates are wrapped into a ```xml <t t-translation="off"/> ``` node, s.t. terms aren't translated twice (once in python, and once in js, by owl). Instead of tolerating the `t-translation` directive in form view, this commit ignores it in all view compilers. This directive indeed makes sense, so it is valid to use it in kanban and form archs (then used by the view processing in python). But the view compilers in js must ignore it, so we simply remove it. [1] odoo/odoo#158759 Fixes runbot error-134670 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 Forward-Port-Of: odoo/odoo#204833
Thanks to this fix: https://github.com/odoo/odoo/commit/8ad00b8ee6340dba1e027bb27a8f05489b4253a9 we can revert this one: https://github.com/odoo/odoo/pull/200777/commits/237feaee5fcf1e166bf39e78e8839b191f92c306 The pot file already deleted: https://github.com/odoo/odoo/commit/0361582de7c28bb4847a9c4dbaa712b67f4ca577#diff-4424c1629e21b466bb7af6ab0cb3a674d1bf3e75d93e7e76cf77870dc5bcc853R8693-L9114 opw-4628611 Forward-Port-Of: odoo/odoo#204606
Original PR description
Thanks to this fix: https://github.com/odoo/odoo/commit/8ad00b8ee6340dba1e027bb27a8f05489b4253a9 we can revert this one: https://github.com/odoo/odoo/pull/200777/commits/237feaee5fcf1e166bf39e78e8839b191f92c306 The pot file already deleted: https://github.com/odoo/odoo/commit/0361582de7c28bb4847a9c4dbaa712b67f4ca577#diff-4424c1629e21b466bb7af6ab0cb3a674d1bf3e75d93e7e76cf77870dc5bcc853R8693-L9114 opw-4628611 Forward-Port-Of: odoo/odoo#204606
This reverts commit 54b8a41bb6f61555511714ce7ff476132b97f45d. The feature was never fully implemented Forward-Port-Of: odoo/odoo#204357
Original PR description
This reverts commit 54b8a41bb6f61555511714ce7ff476132b97f45d. The feature was never fully implemented Forward-Port-Of: odoo/odoo#204357
Steps: - install `contacts` and `sale_management` - Open a contact in a form view and add a sub-contact - Don't fill contact name field - Save & Close - Go to Quotations - Select this new contact as Customer (it should have a name like Parent contact, Other Address) - Add any product - Save - Click on `Preview` - Click on `Sign & Pay` - Traceback When there is no signature name, `NameAndSignature` does not set `resetSignature` and `getSignatureImage` on `this.signature`. So after `
Original PR description
Steps: - install `contacts` and `sale_management` - Open a contact in a form view and add a sub-contact - Don't fill contact name field - Save & Close - Go to Quotations - Select this new contact as Customer (it should have a name like Parent contact, Other Address) - Add any product - Save - Click on `Preview` - Click on `Sign & Pay` - Traceback When there is no signature name, `NameAndSignature` does not set `resetSignature` and `getSignatureImage` on `this.signature`. So after `SignatureForm` initialization, `onMounted` raise a traceback, because it calls directly `this.signature.resetSignature`. This commit adds default functions to `resetSignature` and `getSignatureImage` to prevent the crash. In addition to the this fix, I added a fallback to the default name on signature form to `sale_order.partner_id.commercial_partner_id.name` if `sale_order.partner_id.name` is not set. opw-4504223 Forward-Port-Of: odoo/odoo#202774 Forward-Port-Of: odoo/odoo#202318
The self-ordering kiosk does not correctly display translations for product names and other UI elements when switching languages. Some elements remain in English or the database language, even when translations are available. ### Steps to Reproduce 1. Open **Point of Sale** and navigate to **Configuration > Settings**. 2. Select a POS configuration that has **Kiosk/Self-ordering** enabled. 3. Add additional languages to the Kiosk and save the changes. 4. Open a product availab
Original PR description
The self-ordering kiosk does not correctly display translations for product names and other UI elements when switching languages. Some elements remain in English or the database language, even when…
The self-ordering kiosk does not correctly display translations for product names and other UI elements when switching languages. Some elements remain in English or the database language, even when translations are available. ### Steps to Reproduce 1. Open **Point of Sale** and navigate to **Configuration > Settings**. 2. Select a POS configuration that has **Kiosk/Self-ordering** enabled. 3. Add additional languages to the Kiosk and save the changes. 4. Open a product available in the Kiosk POS and add translations for its name. 5. Start a new Kiosk session, switch to the Kiosk window, and change the language. 6. Notice that product names and other UI elements remain in English instead of switching to the selected language. ### Cause - The `/pos-self/data/<config_id>` route was missing `website=True`, preventing it from receiving the correct frontend language setting. - Adding `website=True` fixes this issue, allowing the POS frontend to receive the correct language. ### Secondary Issue - After adding `website=True`, another problem emerged when the **website module** is installed. - In this case, the available languages were taken from the **website settings** instead of the **POS settings**. - This means that if the website only supports English but the POS Kiosk supports both English and French, switching the Kiosk language to French would fail. The system would always revert to English because language validation was still based on website settings rather than POS settings. ### Solution 1. **Fix the original issue** by adding `website=True` to ensure the POS self-ordering system receives the correct language. 2. **Work around the secondary issue** by checking the **Referer** header to determine if the request comes from a POS self-ordering session. 3. **Ensure language validation is based on POS settings**, not website settings, by retrieving available languages from the POS configuration when necessary. This solution follows a similar approach to the fix in **cd69a32503f4dcd11851908e2c983e1d49a1c2a8**, but in this case, the problematic route (`/website/translations`) is not strictly POS-related. Therefore, we must check the referer to extract the correct POS information. opw-4557569 opw-4471819 opw-4436306 Forward-Port-Of: odoo/odoo#204859 Forward-Port-Of: odoo/odoo#201594
Purpose ======= The Indian government updated its UOM code https://einvoice1.gst.gov.in/Others/MasterCodes (select UQC Codes) So In this commit, I have updated `l10n_in_code` in UOM Mili Meter and Square Foot. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204763 Forward-Port-Of: odoo/odoo#204598
Original PR description
Purpose ======= The Indian government updated its UOM code https://einvoice1.gst.gov.in/Others/MasterCodes (select UQC Codes) So In this commit, I have updated `l10n_in_code` in UOM Mili Meter and Square Foot. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204763 Forward-Port-Of: odoo/odoo#204598
_compute_current_session tried to filter `session_ids` to retrieve session states, but in databases with a large number of sessions, this caused excessive memory usage and a potential `MemoryError`. ``` select count(*) from pos_session +---------+ | count | |---------| | 3582911 | +---------+x` ``` opw-4544050 upg-2459515 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#202244
Original PR description
_compute_current_session tried to filter `session_ids` to retrieve session states, but in databases with a large number of sessions, this caused excessive memory usage and a potential `MemoryError`. ``` select count(*) from pos_session +---------+ | count | |---------| | 3582911 | +---------+x` ``` opw-4544050 upg-2459515 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#202244
Before this commit, when a message is edited, the "(edited)" label was put under the text content. This happened because the "(edited)" label is added after the message text content. The text content is html, and usually this is a `<p>` in discuss conversations, automatically added by the html_sanitize on the `mail.message@body` field. This commit fixes the issue by making the `.o-mail-Message-edited` node display the edited label at this place. This node with this classname is appended to
Original PR description
Before this commit, when a message is edited, the "(edited)" label was put under the text content. This happened because the "(edited)" label is added after the message text content. The text content…
Before this commit, when a message is edited, the "(edited)" label was put under the text content. This happened because the "(edited)" label is added after the message text content. The text content is html, and usually this is a `<p>` in discuss conversations, automatically added by the html_sanitize on the `mail.message@body` field. This commit fixes the issue by making the `.o-mail-Message-edited` node display the edited label at this place. This node with this classname is appended to content when a message has been edited. Since message edited in Discuss are making the last paragraph of message text content inline, so that the "(edited)" label is put inline with the message content. Before / After <img width="255" alt="Screenshot 2025-03-31 at 14 36 25" src="https://github.com/user-attachments/assets/15478ee5-5703-4747-b5ae-8cbc5582a5a8" /> <img width="249" alt="Screenshot 2025-03-31 at 14 36 05" src="https://github.com/user-attachments/assets/c1d2cc24-f4bb-443b-bb03-e0f53682170b" /> Forward-Port-Of: odoo/odoo#204148
This fix aims to increase the operation timeout to reduce the risk of timeouts when sending documents. If a timeout occurs when sending a document, Odoo will consider it an error and allow the resend, even though the document will have been successfully accepted by the Carvajal service. opw-4608647 Forward-Port-Of: odoo/enterprise#82715
Original PR description
This fix aims to increase the operation timeout to reduce the risk of timeouts when sending documents. If a timeout occurs when sending a document, Odoo will consider it an error and allow the resend, even though the document will have been successfully accepted by the Carvajal service. opw-4608647 Forward-Port-Of: odoo/enterprise#82715
Before this commit, the `Europe/Brussels` timezone was applied 2 times on the calculation of the end_datetime when the slot is linked to a template and so the end date time of the slot could suddenly be before the start date time, which should not be possible. The timezone is applied 2 times, because the start date time computed already got the right timezone, so it is not needed to apply again the timezone since the timezone is already defined thanks to the start date time used in the co
Original PR description
Before this commit, the `Europe/Brussels` timezone was applied 2 times on the calculation of the end_datetime when the slot is linked to a template and so the end date time of the slot could suddenly be before the start date time, which should not be possible. The timezone is applied 2 times, because the start date time computed already got the right timezone, so it is not needed to apply again the timezone since the timezone is already defined thanks to the start date time used in the computation. This commit makes sure the timezone is applied once during the calculation of the end datetime, to be sure the difference between UTC and the timezone to apply is not applied 2 times on the end date time. runbot-error-162055 Forward-Port-Of: odoo/enterprise#82529
Forwarded test from fix here: d0759e1 Coverage for expected cost fields from mrp report opw-4474710 Forward-Port-Of: odoo/enterprise#82657 Forward-Port-Of: odoo/enterprise#80560
Original PR description
Forwarded test from fix here: d0759e1 Coverage for expected cost fields from mrp report opw-4474710 Forward-Port-Of: odoo/enterprise#82657 Forward-Port-Of: odoo/enterprise#80560
Before, when sending a reminder for the followup via the send and print wizard, the customer statement, or the followup report, were only included if you checked email, but if only print was selected, the report was missing in the PDF. Now, when selecting print, email, or both, you get the report. opw-4570715 Forward-Port-Of: odoo/enterprise#81463
Original PR description
Before, when sending a reminder for the followup via the send and print wizard, the customer statement, or the followup report, were only included if you checked email, but if only print was selected, the report was missing in the PDF. Now, when selecting print, email, or both, you get the report. opw-4570715 Forward-Port-Of: odoo/enterprise#81463
This commit is the counterpart of odoo/odoo#204833 which ignores the `t-translation` attributes in view compilers. As a consequence, this directive should no longer be in the list of accepted directives. Forward-Port-Of: odoo/enterprise#82898
Original PR description
This commit is the counterpart of odoo/odoo#204833 which ignores the `t-translation` attributes in view compilers. As a consequence, this directive should no longer be in the list of accepted directives. Forward-Port-Of: odoo/enterprise#82898
According to the DATEV Format documentation, the VAT needs to be split into two columns instead of one. The first column being the country code (ISO 3166), and the second one being the remaining numbers. task-4600047 runbot : https://runbot.odoo.com/runbot/bundle/16-0-datev-export-roto-352476 Forward-Port-Of: odoo/enterprise#82104 Forward-Port-Of: odoo/enterprise#80843
Original PR description
According to the DATEV Format documentation, the VAT needs to be split into two columns instead of one. The first column being the country code (ISO 3166), and the second one being the remaining numbers. task-4600047 runbot : https://runbot.odoo.com/runbot/bundle/16-0-datev-export-roto-352476 Forward-Port-Of: odoo/enterprise#82104 Forward-Port-Of: odoo/enterprise#80843
Steps to Produce: - Generate offer contract from recruitment. - Sign the contract and submit it. - Open an existing offer and click on the stat button. issue: - stat button opens new contract from view as employee contract is False. Fix: - return applicant's newly created contract to the stat button. task-4610751 Forward-Port-Of: odoo/enterprise#80943
Original PR description
Steps to Produce: - Generate offer contract from recruitment. - Sign the contract and submit it. - Open an existing offer and click on the stat button. issue: - stat button opens new contract from view as employee contract is False. Fix: - return applicant's newly created contract to the stat button. task-4610751 Forward-Port-Of: odoo/enterprise#80943