Чтобы быстро найти такие вещи, у Оду есть «трюк»: если вы нажмете в правом верхнем углу вашего имени пользователя и «О Odoo», вы можете нажать «Активировать режим разработчика». Теперь, когда вы переходите к просмотру продукта, нажмите «Изменить» и наведите указатель мыши на метку поля, в нем будет отображаться информация о поле.
В этом случае, зависание над «Маршрутами» говорит нам, что это поле «many2many», называемое «route_ids», приносящий объект «product.product» в отношении «stock_location_route».
Обычно соответствующую таблицу базы данных можно назвать чем-то вроде «stock_location_route_product_rel», но в этом случае нам не повезло. Однако Odoo source code (addons/stock/product.py) дает нам определение этого соотношения:
'route_ids': fields.many2many('stock.location.route', 'stock_route_product', 'product_id', 'route_id', 'Routes', domain="[('product_selectable', '=', True)]",
help="Depending on the modules installed, this will allow you to define the route of the product: whether it will be bought, manufactured, MTO/MTS,..."),
Который говорит нам, что имя таблицы «stock_route_product».
Следующий запрос даст вам флажки, установленные на некотором подмножестве продукции,
select pt.name, slr.name
from stock_route_product srp
inner join product_template pt on srp.product_id = pt.id
inner join stock_location_route slr on srp.route_id = slr.id
where pt.name like '%keyword%'
and slr.name in ('Make To Order', 'Buy');
Или для всех продуктов,
select pt.name, slr.name
from stock_route_product srp
inner join product_template pt on srp.product_id = pt.id
inner join stock_location_route slr on srp.route_id = slr.id
where slr.name in ('Make To Order', 'Buy');
На самом деле, после запроса еще более проницательный, здесь вы будут видеть недостающие проверки, отображаемые как NULL,
select pt_id, slr_id, srp.route_id, srp.product_id
from (
select pt.id as pt_id, slr.id as slr_id
from stock_location_route slr, product_template pt
where slr.name in ('Make To Order', 'Buy')
) q
left join stock_route_product srp
on srp.route_id = q.slr_id
and srp.product_id = q.pt_id
Теперь это li (с использованием INSERT или импорта/экспорта):
select pt_id, slr_id
from (
select pt.id as pt_id, slr.id as slr_id
from stock_location_route slr, product_template pt
where slr.name in ('Make To Order', 'Buy')
) q
left join stock_route_product srp
on srp.route_id = q.slr_id
and srp.product_id = q.pt_id
where srp.route_id is null
Спасибо, это очень помогает! Можете ли вы рассказать мне, а затем использовать строку, где pt.name как «% keyword%» и slr.name в («Сделать заказ», «Купить»); если он может быть изменен для всех продуктов? –
Можете ли вы мне помочь с изменением этого запроса для всех продуктов? где pt.name похоже на «% keyword%». –
Предоставленный код был дан как ответ на вопрос о том, как автоматически автоматически установить два флажка (сделать заказ и купить) автоматически для каждого продукта. Вот ссылка http://stackoverflow.com/questions/31611721/odoo-make-to-order-configuration-for-all-products/31628614#31628614. В ответ на вопрос, где сейчас, я не уверен в данный момент. Мне нужна помощь. –