oca-ocb-accounting/odoo-bringout-oca-ocb-account/account/controllers/catalog.py
Ernad Husremovic 768b70e05e 19.0 vanilla
2026-03-09 09:30:07 +01:00

67 lines
2.8 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.http import request, route
from odoo.addons.product.controllers.catalog import ProductCatalogController
class ProductCatalogAccountController(ProductCatalogController):
@route('/product/catalog/get_sections', auth='user', type='jsonrpc', readonly=True)
def product_catalog_get_sections(self, res_model, order_id, child_field, **kwargs):
"""Return the sections which are in given order to be shown in the product catalog.
:param string res_model: The order model.
:param int order_id: The order id.
:param string child_field: The field name of the lines in the order model.
:rtype: list
:return: A list of dictionaries containing section information with following structure:
[
{
'id': int,
'name': string,
'sequence': int,
'line_count': int,
},
]
"""
order = request.env[res_model].browse(order_id)
return order.with_company(order.company_id)._get_sections(child_field, **kwargs)
@route('/product/catalog/create_section', auth='user', type='jsonrpc')
def product_catalog_create_section(
self, res_model, order_id, child_field, name, position, **kwargs,
):
"""Create a new section on the given order.
:param string res_model: The order model.
:param int order_id: The order id.
:param string child_field: The field name of the lines in the order model.
:param string name: The name of the section to create.
:param str position: The position of the section where it should be created, either 'top'
or 'bottom'.
:return: A dictionary with newly created section's 'id' and 'sequence'.
:rtype: dict
"""
order = request.env[res_model].browse(order_id)
return order.with_company(order.company_id)._create_section(
child_field, name, position, **kwargs,
)
@route('/product/catalog/resequence_sections', auth='user', type='jsonrpc')
def product_catalog_resequence_sections(
self, res_model, order_id, sections, child_field, **kwargs,
):
"""Reorder the sections of a given order.
param string res_model: The order model.
:param int order_id: The order id.
:param list sections: A list of section dictionaries with their sequence.
:param string child_field: The field name of the lines in the order model.
:return: A dictionary with new sequences of the sections.
:rtype: dict
"""
order = request.env[res_model].browse(order_id)
return order.with_company(order.company_id)._resequence_sections(
sections, child_field, **kwargs,
)