|
|
|
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
|
|
|
|
|