Skip to Content
Pending: 0 Building: 0 Running: 0 Failed: 26
Created Date Type Name Commit Description State Age Up Time Life Time Action
merged [FIX] point_of_sale, pos_loyalty: make opening-control and next order coupon tours robust on slow runners [FIX] pos_loyalty: make the next order coupon tours robust on slow runners PosLoyaltyTour11.1 reloads the page right after the receipt "done" synchronization while it can still be in flight: the reloaded page replays the order, which stays in the cache without new_coupon_info, and the Paid filter never reads it again ("Next order coupon is missing"). The last step also read the paid order once, while the navbar spinner it waited on is cleared by whichever concurrent request ends first, so the order could still be missing from the model (TypeError reading 'new_coupon_info'). PosLoyaltyTour6 has the same reload after payment. Runbot build 225871 (subbuild 427841) failed on the first attempt; build 225816 (subbuild 427570) failed attempts 1 and 2. Wait for the synchronization to end before every reload, and make the last step wait until the paid order carries the coupon information instead of reading it once. Reproduced on core with latency injected in sync_from_ui, notify_synchronisation and read_pos_orders: the tours failed before the fix and pass after it. Signed-off-by: David Tran <david.tran@tvtmarine.com> Failed
merged [FIX] website, test_website: merge upstream 19.0 and make website tours robust on slow runners [FIX] test_website: make test_replace_media tour robust on slow runners After an image is replaced by another image, the step "ensure image size is displayed" was satisfied by the old Image options container, which stays mounted until the builder re-targets the new media. The next "Replace" click then acted on the detached element ("Invalid selection. Node is not part of the editable: None") and the Icon container never appeared. Runbot signature: "[18/36] Tour test_replace_media -> Step ensure icon block is displayed". The tour now marks the container of the media being replaced and waits for an Image container without that mark. That is the container of the new media, a new component since containers are keyed per element. Verified by injecting latency on /html_editor/get_image_info (+1 s): the tour passes 3/3 with the fix and fails at the same step with the same warning when the fix is reverted. Signed-off-by: David Tran <david.tran@tvtmarine.com> Failed
merged [FIX] web: increase test_unit_desktop suite timeout [FIX] web: increase test_unit_desktop suite timeout In 19.0 the desktop unit suite runs the Hoot tests of all installed addons in one browser session (about 17,900 tests). Under runbot load the run can exceed the 3600 s overall browser_js timeout even though no test fails or hangs: 7 of 13 web-slice builds between 2026-10-13 and 2026-10-20 were cut at 95-99.8% of the suite, with 0 test failures. Raise the limit to 5400 s, the value upstream uses for a full run from 19.1 onward. Splitting the suite per sub-build as 19.1 does needs odoo.tests.CrossModule, which does not exist in 19.0. This follows upstream commit a7017b504c5c, which raised the same timeout from 3000 to 3600 for the same reason. Killed Not started
merged Merged from upstream 19 261018 01 [FIX] account_edi_ubl_cii: prevent deferred tests crash on Community test_invoice_deferred_dates_with_delivery_date, test_invoice_deferred_dates_on_some_lines and test_invoice_deferred_dates_on_some_lines_with_delivery_date create invoice lines with deferred_start_date/deferred_end_date, but only the Enterprise addon account_accountant defines them. Without it installed, they crashed with "Invalid field" on every Community build instead of being skipped. Guard each with ensure_installed("account_accountant"), the same idiom already used by test_invoice_deferred_dates. Signed-off-by: David Tran <david.tran@tvtmarine.com> (cherry picked from commit 5e828c61ed0f222af0f195d46fb2b34e53888bc0) Failed
merged Merged from upstream 19 261018 01 Merge remote-tracking branch 'upstream/19.0' into merged-from-upstream-19-261018-01 Failed
closed Merged from upstream 19 261017 01 Merge remote-tracking branch 'upstream/19.0' into merged-from-upstream-19-261017-01 Failed
closed Merged from upstream 19 261011 01 Failed
closed Merged from upstream 19 261011 01 Merge remote-tracking branch 'upstream/19.0' into 19.0 Failed
closed [FIX] calendar, html_builder, mail: let languages render weekdays, the sun shape and the rotting days Failed
merged [I18N] 19.0: fix remaining Vietnamese translation defects of core modules [I18N] *: fix remaining Vietnamese translation defects Follow-up to Viindoo/odoo#1302: the Vietnamese defects the 19.0 sync pass still found in core, fixed so each concept reads one way. - Email Button Color = "Màu nút Email" (the Viindoo branding wording), and the other mail labels that kept the English word order. - Weekdays: long names in word form ("Thứ Hai" ... "Chủ nhật"), short names as the calendar abbreviations "T2" ... "CN" (lunch had a mix of both). Opening Hours snippet = "Giờ mở cửa". - Dashboard = "Bảng tổng quan" everywhere, replacing "Báo cáo tổng quan", "Bảng điều khiển" and "Trang tổng quan". "Bảng điều khiển" stays for the control panel. - Minimum = "Tối thiểu", the pair of Maximum = "Tối đa". - Loyalty: typo in "Điểm phiếu giảm giá", word-for-word reward labels, the "CT KH" abbreviation, and eWallet = "Ví trả trước" in every label. - pos_loyalty: a coupon that is "not yet valid" is "chưa có hiệu lực", not "không hợp lệ". - CRM won/lost = "Thắng"/"Thua" everywhere. The "Won" currency unit (KRW/KPW) is no longer translated as "Đạt". - Rotting (records stuck in a stage) = "Tồn đọng", now translated in mail, crm, hr_recruitment and project. - Accounting: Inbound Payment Methods = "Phương thức thu tiền" (pair of "Phương thức chi tiền"), Json Activity Data, Add a subsection. - HR: the Officer access role = "Người phụ trách" in every app; Work Entries = "Công" in the module names. - Offline/online presence = "Ngoại tuyến"/"Trực tuyến" in web, mail, POS, payment, website and the employee status popovers. Failed
merged [I18N] 19.0: fix Vietnamese translations and terminology of core modules [I18N] *: fix Vietnamese translations and terminology Bring the Vietnamese catalogs of the 19.0 core modules to the corrected terminology of 18.0 (Viindoo/odoo#1299), so a Vietnamese user sees one term per concept on 19.0 too. The wording follows the same owner-approved glossary (accounting per Circular 99/2025 and 133/2016, inventory, manufacturing, sales/purchase, HR, platform). - Entries whose msgid and translation are unchanged since 18.0 take the corrected 18.0 translation, including the strings #1299 translated for the first time (l10n_vn_edi_viettel and others). Strings that moved to another module in 19.0 follow them. - Entries 19.0 retranslated, and strings new in 19.0, were reviewed in context: the approved terms are applied (e.g. Journal Item = "Phát sinh kế toán", Credit Note = "Hóa đơn điều chỉnh giảm", Fiscal Position = "Chế độ thuế", Sales/Purchase Order = "Đơn bán"/"Đơn mua", Transfer = "Phiếu kho", Work Center = "Trung tâm sản xuất", Analytic Account = "Tài khoản quản trị", Settings = "Thiết lập") while genuine 19.0 improvements are kept. - Records shared between modules (model names, re-declared fields) carry the same translation in every module, so the result no longer depends on module load order. - One wording per label for the mail and activity fields every document model inherits (e.g. Action Needed = "Cần xử lý", Is Follower = "Đang theo dõi"), across all modules. - Inventory valuation options use the names accountants know: Periodic = "Kiểm kê định kỳ", Perpetual = "Kê khai thường xuyên". Account closing = "Khóa sổ". Restaurant courses = "Lượt món". Validation Error = "Dữ liệu không hợp lệ". Vehicle = "Phương tiện" (the app stays "Đội xe"). - Old-style tone marks everywhere (hóa, hủy, khóa). - Definite defects found on the way: broken spacing in mail templates, "Second" read as seconds in calendar recurrences, typos such as "kiểm tử", the garbled overdue line in the activity status help. - l10n_vn_edi_viettel: catalog follows the renamed invoice type 5 label. Only msgstr content changes, apart from the renamed type 5 msgid; msgids, references and layout are the exporter's and stay as they are. Killed Not started
merged Merged from upstream 19 261007 01 [FIX] test_base_automation: wait for trigger menu content in tours The tours test_form_view_mail_triggers and test_form_view_model_id asserted the trigger select menu content synchronously, while the trigger selection field rebuilds its groups asynchronously after a model change. The expected groups and items are now checked by waiting triggers. The checkMenu helper comes from upstream odoo commit fcd0005f73e8, with an exact-count step added so an extra group or item still fails. Signed-off-by: David Tran <david.tran@tvtmarine.com> Killed Not started
merged [I18N] 19.0: fix Vietnamese translations and terminology of core modules Killed
merged Merged from upstream 19 261007 01 Merge remote-tracking branch 'upstream/19.0' into 19.0 Failed
merged Merged from upstream 19 261007 01 Merge remote-tracking branch 'upstream/19.0' into 19.0 Failed
merged Merged from upstream 19 261007 01 Merge remote-tracking branch 'upstream/19.0' into 19.0 Failed
closed Merged from upstream 19 261006 01 Merge remote-tracking branch 'upstream/19.0' into 19.0 Failed
merged Merged from upstream 19 261002 01 Merge remote-tracking branch 'upstream/19.0' into 19.0 Killed
merged Merged from upstream 19 260925 01 Merge remote-tracking branch 'upstream/19.0' into 19.0 Killed
open [FIX] pos_loyalty, sale_loyalty: backport two upstream loyalty fixes [FIX] sale_loyalty: allow invoicing-only users to open sale orders Steps to reproduce: 1. Create a user in the Invoicing group (account.group_account_invoice) only, without any Sales group. 2. As that user, open any sale order form (draft or confirmed with loyalty history). Issue: The form never opens; the client raises "You are not allowed to access 'Loyalty Coupon' (loyalty.card) records". This blocks a user who already has read/write access to sale.order in core, via the access_sale_order_invoicing_payments rule in sale's own security CSV, from doing their job. Cause: Two non-sudo reads in the sale.order extension hit loyalty models that are restricted to the Sales groups: the gift card stat button count queries loyalty.card directly, and the loyalty summary looks up the coupon point name via coupon_point_ids.coupon_id without the sudo already used one line above for loyalty.history. Fix: Gate the gift card count query behind a has_access('read') check, so a user without access simply sees a zero count (the stat button stays hidden), matching the has_access guard sale.order already uses in _create_invoices(). Read the coupon point name through sudo(), consistent with the loyalty.history read beside it, since the loyalty summary is meant to be visible to anyone who can already read the order. Signed-off-by: David Tran <david.tran@tvtmarine.com> (cherry picked from commit 84536036b471ced708a149c40c7f01dbf9a2d2fc) Failed
open [FIX] pos_loyalty, sale_loyalty: backport two upstream loyalty fixes [FIX] sale_loyalty: allow invoicing-only users to open sale orders Steps to reproduce: 1. Create a user in the Invoicing group (account.group_account_invoice) only, without any Sales group. 2. As that user, open any sale order form (draft or confirmed with loyalty history). Issue: The form never opens; the client raises "You are not allowed to access 'Loyalty Coupon' (loyalty.card) records". This blocks a user who already has read/write access to sale.order in core, via the access_sale_order_invoicing_payments rule in sale's own security CSV, from doing their job. Cause: Two non-sudo reads in the sale.order extension hit loyalty models that are restricted to the Sales groups: the gift card stat button count queries loyalty.card directly, and the loyalty summary looks up the coupon point name via coupon_point_ids.coupon_id without the sudo already used one line above for loyalty.history. Fix: Gate the gift card count query behind a has_access('read') check, so a user without access simply sees a zero count (the stat button stays hidden), matching the has_access guard sale.order already uses in _create_invoices(). Read the coupon point name through sudo(), consistent with the loyalty.history read beside it, since the loyalty summary is meant to be visible to anyone who can already read the order. Signed-off-by: David Tran <david.tran@tvtmarine.com> (cherry picked from commit d5acfaf89b7beffa9ff6c3289432ee0507e55683) Killed Not finished
merged Merged from upstream 19 260919 01 Merge remote-tracking branch 'upstream/19.0' into 19.0 Killed
merged Merged from upstream 19 260915 01 [FIX] account_edi_ubl_cii: prevent deferred test crash on Community test_invoice_deferred_dates sets invoice.line fields deferred_start_date/deferred_end_date on the new line's create-vals, but only the Enterprise addon account_accountant defines them. Without it installed, the test crashed on every Community build instead of being skipped. Guard it with ensure_installed("account_accountant"), the same idiom already used four times elsewhere in this file, since the fields belong to the Enterprise deferred-revenue feature and are absent here by design. Signed-off-by: David Tran <david.tran@tvtmarine.com> Killed
merged Merged from upstream 19 260915 01 Merge remote-tracking branch 'upstream/19.0' into 19.0 Failed
merged [FIX] tests, project: forward-port the runbot browser-test fixes to 19.0 [FIX] project: wait for quick-create to enable before editing The "Second task" step in project_update_tour ran right after the prior quick-create ("New task") was validated, while KanbanRecordQuickCreate was still in its post-validate disabled window (o_disabled, pointer-events: none) held until web_save -> web_read -> onchange -> model.load resolve. Under network/CI latency the tour's click, aimed at that inert input, resolved to the ancestor `.o_kanban_group` instead (pointer-events: none excludes the input from hit-testing), and the following edit step then failed with "target should be editable". This reproduced 3/3 on retry within a single Viindoo runbot build but was intermittent across separate builds, consistent with a latency-dependent race, and reproduced locally on demand by injecting 150ms of CDP network latency. Guard the step's trigger to wait until the quick-create leaves o_disabled before interacting. The earlier "New task" edit step is left unchanged: it runs right after opening a fresh quick-create, not inside any post-validate disabled window. Verified on this fix: one 0ms-latency run and two 150ms-latency runs, two tours succeeded and none failed in each run. Without the guard the same 150ms latency fails the tour at this step. Live users are unaffected: focus stays in the quick-create input during the save. Forward-port to 19.0: applied unchanged. KanbanRecordQuickCreate on 19.0 keeps the same disabled window between the previous record's save and model.load, so the guard addresses the same race. Re-verified on 19.0 (fresh project database, no demo data, same Chrome build): both tours of test_01_project_tour succeeded, 0 failed of 1 test. X-original-commit: ffcd4ae4ee8b3ce5bef087f5f049c96f62f37e87 Signed-off-by: David Tran <david.tran@tvtmarine.com> Killed
closed Merged from upstream 19 260910 01 Failed
closed Merged from upstream 19 260910 01 Failed
closed Merged from upstream 19 260910 01 Failed
closed Merged from upstream 19 260910 01 Merge remote-tracking branch 'upstream/19.0' into 19.0 Failed