Public release from ruodoo-project: 19.0 - 2026-11-01 22:52:25 UTC

This commit is contained in:
CI Publish Bot
2026-11-01 22:54:30 +00:00
commit 26250aa580
2492 changed files with 664277 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
import { registry } from "@web/core/registry";
import { stepUtils } from "@web_tour/tour_utils";
/**
* Этап 3: отменить заказ через интерфейс и убедиться, что отмена
* отрабатывает штатно (заказ переходит в состояние «Cancelled»).
* Каскадное удаление счетов комиссий проверяется в Python после тура.
*
* Кнопка «Отмена» в Odoo 19 может находиться в выпадающем меню
* действий строки состояния — используем statusbarButtonsSteps.
*/
registry.category("web_tour.tours").add("ruodoo_commission_cancel_tour", {
url: "/odoo",
steps: () => [
...stepUtils.goToAppSteps("sale.sale_menu_root", "Открыть приложение «Продажи»"),
{
content: "Открыть заказ Tour Customer из списка",
trigger: '.o_list_view td.o_data_cell:contains("Tour Customer")',
run: "click",
},
{
content: "Форма заказа открыта",
trigger: ".o_form_view .o_statusbar_status",
},
// Нажать «Отмена» (может быть в дропдауне действий).
...stepUtils.statusbarButtonsSteps("Cancel", "Нажать «Отмена»"),
// Базовый sale.action_cancel не открывает визард — состояние сразу
// меняется. На случай подтверждающего модального окна закроем его.
{
content: "Подтвердить отмену, если появилось модальное окно",
trigger: "body",
run: function () {
const btn = document.querySelector(
".modal-dialog footer button.btn-primary"
);
if (btn) {
btn.click();
}
},
},
{
content: "Заказ отменён",
trigger: ".o_statusbar_status .o_arrow_button_current:contains(Cancelled)",
},
],
});

View File

@@ -0,0 +1,98 @@
import { registry } from "@web/core/registry";
import { stepUtils } from "@web_tour/tour_utils";
import saleUtils from "@sale/js/tours/tour_utils";
/**
* Этап 1: создание заказа, выбор клиента, заполнение строки,
* выбор двух комиссий в колонке «Комиссии», сохранение, подтверждение,
* затем начисление комиссии (кнопка «Начислить комиссию»).
*
* Данные (клиент «Tour Customer», товар «Tour Product», комиссии
* «Tour Commission 10» и «Tour Commission 5») создаёт Python-тест.
* Тур ничего не делает через ORM — только UI.
*/
registry.category("web_tour.tours").add("ruodoo_commission_order_tour", {
url: "/odoo",
steps: () => [
...stepUtils.goToAppSteps("sale.sale_menu_root", "Открыть приложение «Продажи»"),
...saleUtils.createNewSalesOrder(),
...saleUtils.selectCustomer("Tour Customer"),
// --- Строка заказа: товар ---
...saleUtils.addProduct("Tour Product"),
// Количество = 10
{
content: "Указать количество",
trigger: ".o_selected_row div[name=product_uom_qty] input",
run: "edit 10",
},
// --- Комиссии строки: выбрать две ---
{
content: "Открыть поле «Комиссии» в строке",
trigger: ".o_selected_row .o_field_many2many_tags[name=commission_ids] input",
run: "click",
},
{
content: "Ввести первую комиссию",
trigger: ".o_selected_row .o_field_many2many_tags[name=commission_ids] input",
run: "edit Tour Commission 10",
},
{
content: "Выбрать комиссию 10%",
trigger: 'ul.ui-autocomplete a:contains("Tour Commission 10")',
run: "click",
},
{
content: "Убедиться, что тег комиссии 10% добавлен",
trigger: '.o_selected_row .o_field_many2many_tags[name=commission_ids] .o_tag:contains("Tour Commission 10")',
},
{
content: "Ввести вторую комиссию",
trigger: ".o_selected_row .o_field_many2many_tags[name=commission_ids] input",
run: "edit Tour Commission 5",
},
{
content: "Выбрать комиссию 5%",
trigger: 'ul.ui-autocomplete a:contains("Tour Commission 5")',
run: "click",
},
{
content: "Убедиться, что тег комиссии 5% добавлен",
trigger: '.o_selected_row .o_field_many2many_tags[name=commission_ids] .o_tag:contains("Tour Commission 5")',
},
// --- Сохранить заказ ---
...stepUtils.saveForm(),
// Проверить, что «ИТОГО КОМИССИЙ» отобразилось (поле видно группе)
{
content: "Итог комиссий присутствует на форме",
trigger: ".o_field_widget[name=amount_commission]",
},
// --- Подтвердить заказ ---
{
content: "Подтвердить заказ",
trigger: "button[name=action_confirm]",
run: "click",
},
{
content: "Заказ перешёл в состояние «Заказ продаж»",
trigger: ".o_statusbar_status .o_arrow_button_current:contains(Sales Order)",
},
// --- Начислить комиссию ---
{
content: "Нажать «Начислить комиссию»",
trigger: "button[name=action_accrue_commission]",
run: "click",
},
// После начисления открывается список/форма счетов комиссий.
{
content: "Открылись счета комиссий (вендор-биллы)",
trigger: ".o_list_view .o_data_row, .o_form_view .o_breadcrumb",
},
],
});

View File

@@ -0,0 +1,43 @@
import { registry } from "@web/core/registry";
import { stepUtils } from "@web_tour/tour_utils";
/**
* Этап 2: открыть заказ и проверить смарт-кнопку «Комиссии»:
* она нажимается и выводит связанные счета поставщика.
*
* Заказ уже подтверждён и по нему начислены комиссии (этап 1).
*/
registry.category("web_tour.tours").add("ruodoo_commission_smart_button_tour", {
url: "/odoo",
steps: () => [
...stepUtils.goToAppSteps("sale.sale_menu_root", "Открыть приложение «Продажи»"),
{
content: "Открыть заказ Tour Customer из списка",
trigger: '.o_list_view td.o_data_cell:contains("Tour Customer")',
run: "click",
},
{
content: "Форма заказа открыта",
trigger: ".o_form_view .o_statusbar_status",
},
// Смарт-кнопка «Комиссии» видна и содержит счётчик > 0
{
content: "Смарт-кнопка «Комиссии» присутствует",
trigger: "button[name=action_view_commission_bills]",
},
{
content: "Нажать смарт-кнопку «Комиссии»",
trigger: "button[name=action_view_commission_bills]",
run: "click",
},
// Открывается список счетов поставщика по этому заказу.
{
content: "Открылся список счетов комиссий",
trigger: ".o_list_view .o_data_row",
},
{
content: "Это счета поставщика (тип «Bill»)",
trigger: ".o_breadcrumb",
},
],
});