Branch
Merge remote-tracking branch 'odoo/18.0' into 18.0 Conflicts: addons/account/i18n/ja.po addons/account/i18n/vi.po addons/account_debit_note/i18n/vi.po addons/account_fleet/i18n/vi.po addons/analytic/i18n/vi.po addons/auth_totp/i18n/vi.po addons/barcodes/i18n/vi.po addons/barcodes_gs1_nomenclature/i18n/vi.po addons/base_import/i18n/hr.po addons/base_import/i18n/vi.po addons/board/i18n/vi.po addons/calendar/i18n/vi.po addons/crm/i18n/vi.po addons/crm_livechat/i18n/vi.po addons/event/i18n/ro.po addons/event/i18n/vi.po addons/event_booth/i18n/vi.po addons/fleet/i18n/vi.po addons/gamification/i18n/vi.po addons/google_calendar/i18n/vi.po addons/google_gmail/i18n/vi.po addons/google_recaptcha/i18n/vi.po addons/hr/i18n/vi.po addons/hr_attendance/i18n/vi.po addons/hr_contract/i18n/vi.po addons/hr_expense/i18n/vi.po addons/hr_fleet/i18n/vi.po addons/hr_holidays/i18n/vi.po addons/hr_holidays_attendance/i18n/vi.po addons/hr_recruitment/i18n/vi.po addons/hr_recruitment_survey/i18n/vi.po addons/hr_skills/i18n/vi.po addons/hr_timesheet/i18n/vi.po addons/hr_timesheet_attendance/i18n/vi.po addons/hr_work_entry/i18n/vi.po addons/hr_work_entry_contract/i18n/vi.po addons/hr_work_entry_holidays/i18n/vi.po addons/im_livechat/i18n/vi.po addons/link_tracker/i18n/vi.po addons/lunch/i18n/vi.po addons/mail/i18n/vi.po addons/mail/static/src/core/common/composer.js addons/mail/static/tests/tours/mail_composer_test_tour.js addons/mail_group/i18n/vi.po addons/maintenance/i18n/vi.po addons/mass_mailing/i18n/vi.po addons/mass_mailing_sms/i18n/vi.po addons/mass_mailing_themes/i18n/vi.po addons/microsoft_calendar/i18n/vi.po addons/microsoft_outlook/i18n/vi.po addons/mrp/i18n/vi.po addons/mrp_account/i18n/vi.po addons/mrp_subcontracting/i18n/vi.po addons/mrp_subcontracting_purchase/i18n/vi.po addons/onboarding/i18n/vi.po addons/partner_autocomplete/i18n/vi.po addons/payment_stripe/i18n/vi.po addons/payment_worldline/i18n/pt_BR.po addons/point_of_sale/i18n/vi.po addons/portal/i18n/vi.po addons/pos_adyen/i18n/vi.po addons/pos_discount/i18n/vi.po addons/pos_epson_printer/i18n/vi.po addons/pos_hr/i18n/vi.po addons/pos_loyalty/i18n/vi.po addons/pos_restaurant/i18n/vi.po addons/pos_restaurant_adyen/i18n/vi.po addons/pos_sale/i18n/vi.po addons/pos_six/i18n/vi.po addons/pos_stripe/i18n/vi.po addons/privacy_lookup/i18n/vi.po addons/product/i18n/vi.po addons/project/i18n/vi.po addons/project_timesheet_holidays/i18n/vi.po addons/purchase/i18n/ja.po addons/purchase/i18n/vi.po addons/purchase_mrp/i18n/vi.po addons/purchase_requisition/i18n/vi.po addons/purchase_stock/i18n/vi.po addons/rating/i18n/vi.po addons/repair/i18n/vi.po addons/resource/i18n/vi.po addons/sale/i18n/vi.po addons/sale_crm/i18n/vi.po addons/sale_expense/i18n/vi.po addons/sale_management/i18n/vi.po addons/sale_purchase/i18n/vi.po addons/sale_stock/i18n/vi.po addons/sale_timesheet/i18n/vi.po addons/sales_team/i18n/vi.po addons/sms/i18n/vi.po addons/spreadsheet/i18n/vi.po addons/spreadsheet_dashboard/i18n/vi.po addons/spreadsheet_dashboard_im_livechat/i18n/vi.po addons/spreadsheet_dashboard_pos_hr/i18n/vi.po addons/stock/i18n/vi.po addons/stock_account/i18n/vi.po addons/stock_delivery/i18n/vi.po addons/stock_landed_costs/i18n/vi.po addons/stock_picking_batch/i18n/vi.po addons/stock_sms/i18n/vi.po addons/survey/i18n/vi.po addons/web/i18n/az.po addons/web/i18n/vi.po addons/web/static/src/module_loader.js addons/web_editor/i18n/vi.po addons/website/i18n/ja.po addons/website/i18n/vi.po addons/website_blog/i18n/vi.po addons/website_event/i18n/vi.po addons/website_event_exhibitor/i18n/vi.po addons/website_event_track/i18n/vi.po addons/website_forum/i18n/vi.po addons/website_hr_recruitment/i18n/ru.po addons/website_hr_recruitment/i18n/vi.po addons/website_livechat/i18n/vi.po addons/website_mass_mailing/i18n/vi.po addons/website_sale/i18n/pt.po addons/website_sale/i18n/vi.po addons/website_slides/i18n/vi.po addons/website_slides_forum/i18n/vi.po odoo/addons/base/i18n/vi.po
[PERF] pos_sale: optimize Session Sale Amount compute by pre-fetching opened sessions to avoid heavy subquery execution Problem The original implementation performs a _read_group on report.pos.order with a domain that includes a relational lookup: ('session_id.state', '=', 'opened') On large databases, this condition forces the ORM to generate a SQL query containing nested subqueries like: session_id IN (SELECT id FROM pos_session WHERE state='opened' AND ...) PostgreSQL cannot short-circuit this subquery, even if no sessions are opened, and still scans a large portion of report_pos_order, causing significant performance degradation. Solution Instead of letting _read_group build a heavy subquery, we explicitly search for the opened sessions first: opened_sessions = self.env['pos.session'].search([ ('config_id.crm_team_id', 'in', self.ids), ('state', '=', 'opened'), ]) data = self.env['report.pos.order']._read_group([ ('session_id', 'in', opened_sessions.ids), ], ['config_id'], ['price_total:sum']) This improves performance because: pos.session is a much smaller table and is fast to filter. If there are no opened sessions, _read_group immediately returns empty results without scanning report_pos_order. It eliminates nested SQL IN (SELECT ...), allowing PostgreSQL to use direct index-based filtering. This approach reduces query time dramatically on large datasets.
[FIX] stock: Allow to install demo data outside US company Currently in the `_merge_move_itemgetter` the system call `self.company_id.currency_id.decimal_places`. However the demo data of stock create a database with US currency and some `stock.move` in it. If we have an existing database with EUR for example. The upper call will return a `currency_id.decimal_places` since we have multiple currency. The best solution, would be to split `_action_confirm` to do a loop by company. But it would need a small refactoring and we will do a minimal diff to fix this issue. Using the smallest currency among all the company is not always correct but it's a super edge case and we should probably remove this code since it went to far. Close #230965, #234078 closes odoo/odoo#239273 Signed-off-by: William Henrotin (whe) <whe@odoo.com>