Как добавить фильтр в всплывающее окно, сгенерированное JavaScript в Odoo 13Javascript

Форум по Javascript
Ответить
Anonymous
 Как добавить фильтр в всплывающее окно, сгенерированное JavaScript в Odoo 13

Сообщение Anonymous »

Я пытаюсь расширить файл relational_fields.js из веб -модуля в Odoo 13, так что в форме запроса на кавычки, когда я начинаю вводить имя поставщика и параметры автозаполнения с помощью поиска больше ... ссылка , когда я нажимаю на эту ссылку, она добавляет фильтр поставщиков в поиск. Хотя я не могу заставить его работать, если добавлю пользовательский файл JS. < /p>
Есть идеи о том, что я должен сделать? Я загружаюсь через манифест. Я пытался загрузить его, добавив активы в манифест, а также создав представление для активов. < /P>
odoo.define('your_module_name.custom_relational_fields', function (require) {
"use strict";

var relational_fields = require('web.relational_fields');
var FieldMany2One = relational_fields.FieldMany2One;

var CustomFieldMany2One = FieldMany2One.extend({
_manageSearchMore: function (values, search_val, domain, context) {
values = values.slice(0, this.limit);
values.push({
label: _t("Search More..."),
action: function () {
var prom;
if (context.res_partner_search_mode === 'supplier') {
domain = domain.concat([['supplier_rank', '>', 0]]);
}
if (search_val !== '') {
prom = this._rpc({
model: this.field.relation,
method: 'name_search',
kwargs: {
name: search_val,
args: domain,
operator: "ilike",
limit: this.SEARCH_MORE_LIMIT,
context: context,
},
});
}
Promise.resolve(prom).then(function (results) {
var dynamicFilters;
if (results) {
var ids = _.map(results, function (x) {
return x[0];
});
dynamicFilters = [{
description: _.str.sprintf(_t('Quick search: %s'), search_val),
domain: [['id', 'in', ids]],
}];
if (context.res_partner_search_mode === 'supplier') {
dynamicFilters = [{
description: _.str.sprintf(_t('Quick search: %s, Vendors'), search_val),
domain: [['id', 'in', ids], ['supplier_rank', '>', 0]],
}];
}
}
this._searchCreatePopup("search", false, {}, dynamicFilters);
}.bind(this));
}.bind(this),
classname: 'o_m2o_dropdown_option',
});
return values;
},
});

return {
CustomFieldMany2One: CustomFieldMany2One,
};
});
< /code>
Я получил помощь от Copilot для этого, но в данный момент он не кажется таким эффективным. Предыдущий модуль, в рамках каталога Static/SRC/JS.{
"name": "my module name| Purchase enhancement",
"summary": "Apply changes to core Odoo purchasing module to adapt changes to the customer requirement.",
"license": "LGPL-3",
"author": "much. GmbH",
"auto_install": False,
"application": False,
"sequence": 100,
"category": "Purchase",
"version": "13.0.6.26.0",
"depends": ["base", "product", "purchase", "purchase_stock", "web"],
"data": [
"views/purchase_order.xml",
"views/product_views.xml",
"views/res_partner_views.xml",
"views/stock_picking_view.xml",
"views/assets.xml",
"wizard/display_dialog_box.xml",
"data/ir_config_parameter_data.xml",
],
# "assets": {
# "web.assets_backend": [
# "my_module/static/src/js/custom_relational_fields.js",
# ],
# },

}
< /code>
Вот Assets.xml, рекомендованная Co-Pilot: < /p>








Найдите оригинал relational_fields.js at:
https://github.com/odoo/odoo/blob/13.0/ ... /js/fields /relational_fields.js
и обновленная часть кода, которую я нашел, работаю в Relational_fields Файл: < /p>
_manageSearchMore: function (values, search_val, domain, context) {
var self = this;
values = values.slice(0, this.limit);
values.push({
label: _t("Search More..."),
action: function () {
var prom;
/* if context res_parnter_search_mode key is supplier, then domain should*/
/* be updated to include the supplier filter */
if (context.res_partner_search_mode === 'supplier') {
domain = domain.concat([['supplier_rank', '>', 0]]);
}
if (search_val !== '') {
prom = self._rpc({
model: self.field.relation,
method: 'name_search',
kwargs: {
name: search_val,
args: domain,
operator: "ilike",
limit: self.SEARCH_MORE_LIMIT,
context: context,
},
});
}
Promise.resolve(prom).then(function (results) {
var dynamicFilters;
if (results) {
var ids = _.map(results, function (x) {
return x[0];
});
dynamicFilters = [{
description: _.str.sprintf(_t('Quick search: %s'), search_val),
domain: [['id', 'in', ids]],
}];
if (context.res_partner_search_mode === 'supplier') {
dynamicFilters= [{
description: _.str.sprintf(_t('Quick search: %s, Vendors'), search_val),
domain: [['id', 'in', ids], ['supplier_rank', '>', 0]],
}];
}

}
self._searchCreatePopup("search", false, {}, dynamicFilters);
});
},
classname: 'o_m2o_dropdown_option',
});
return values;
},


Подробнее здесь: https://stackoverflow.com/questions/794 ... in-odoo-13
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»