Product - Print Categories

product_print_category
REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/18.0/product_print_category
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYProduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), GRAP, La Louve, Coop IT Easy SC
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), GRAP, La Louve, Coop IT Easy SC
COMMITTERS
COMMITTERSDavid Beal, Weblate, OCA-git-bot, oca-ci, Heliconia Solutions
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:12
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_management
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module is designed to extend product printing features. It allows
user to create new print categories of products depending of the data
that are on the labels of the products variants.

When a field has changed, the product will be set as 'To print'
automatically.

This module requires to install custom modules to have pricetags
templates, or alternatively to create pricetag reports templates by UI.

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
qweb_template_demo_1 qweb_template_demo_1 ir.ui.view qweb New
qweb_template_demo_2 qweb_template_demo_2 ir.ui.view qweb New
report_pricetag report_pricetag ir.ui.view qweb New
view_product_print_category_form_2 product.print.category form New
view_product_print_category_rule_tree product.print.category.rule list New
view_product_print_category_tree product.print.category list New
view_product_print_wizard_form product.print.wizard form New
view_product_product_form product.product xpath Inherits product.product_normal_form_view
view_product_template_only_form product.template xpath Inherits product.product_template_only_form_view
Models touched (8)

New fields (9)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> index=True string='Company'
  • field_ids Many2many → ir.model.fields
    column1='category_id' column2='field_id' comodel_name='ir.model.fields' domain="['|', ('model', '=', 'product.product'), ('model', '=', 'product.product')]" string='Fields related to printing'
  • name Char
    required=True translate=True
  • product_ids One2many → product.product
    comodel_name='product.product' inverse_name='print_category_id'
  • product_qty Integer
    compute='_compute_product_qty' string='Products'
  • product_to_print_ids One2many → product.product
    comodel_name='product.product' compute='_compute_to_print'
  • product_to_print_qty Integer
    compute='_compute_to_print' string='Products To Print'
  • qweb_view_id Many2one → ir.ui.view
    comodel_name='ir.ui.view' domain="[('type', '=', 'qweb')]" required=True string='Qweb View'
Public methods (2)
  • action_view_product_product(self)
  • get_xml_id_view(self)

New fields (0)

No new fields.

Public methods (1)
  • write(self, vals)

New fields (4)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> help='Restrict the access of this rule to the given company' index=True string='Company'
  • main_category_id Many2one → product.category
    comodel_name='product.category' help='This rule will be applied only to products that belong to the given category, or to its children.' string='Main Category'
  • print_category_id Many2one → product.print.category
    comodel_name='product.print.category'
  • sequence Integer
    required=True string='Priority'
Public methods (1)
  • get_print_category_rule(self, product)
    @api.model

New fields (1)
  • line_ids One2many → product.print.wizard.line
    comodel_name='product.print.wizard.line' default=<expr> inverse_name='wizard_id' string='Lines'
Public methods (1)
  • print_report(self)

New fields (4)
  • print_category_id Many2one → product.print.category
    comodel_name='product.print.category' readonly=False related='product_id.print_category_id' string='Print Category'
  • product_id Many2one → product.product
    comodel_name='product.product' required=True string='Product'
  • quantity Integer
    default=1 required=True
  • wizard_id Many2one → product.print.wizard
    comodel_name='product.print.wizard'
Public methods (0)

No public methods.

New fields (2)
  • print_category_id Many2one → product.print.category
    comodel_name='product.print.category' string='Print Category'
  • to_print Boolean
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • onchange_print_category_id(self)
    @api.onchange('print_category_id')

New fields (2)
  • print_category_id Many2one → product.print.category
    comodel_name='product.print.category' compute='_compute_print_category_id' inverse='_inverse_print_category_id' string='Print Category'
  • to_print Boolean
    compute='_compute_to_print' inverse='_inverse_to_print'
Public methods (1)
  • onchange_print_category_id(self)
    @api.onchange('print_category_id')

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/17.0/product_print_category
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYProduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), GRAP, La Louve, Coop IT Easy SC
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), GRAP, La Louve, Coop IT Easy SC
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, bosd, mario
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_management
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module is designed to extend product printing features. It allows
user to create new print categories of products depending of the data
that are on the labels of the products variants.

When a field has changed, the product will be set as 'To print'
automatically.

This module requires to install custom modules to have pricetags
templates, or alternatively to create pricetag reports templates by UI.

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
qweb_template_demo_1 qweb_template_demo_1 ir.ui.view qweb New
qweb_template_demo_2 qweb_template_demo_2 ir.ui.view qweb New
report_pricetag report_pricetag ir.ui.view qweb New
view_product_print_category_form_2 product.print.category form New
view_product_print_category_rule_tree product.print.category.rule tree New
view_product_print_category_tree product.print.category tree New
view_product_print_wizard_form product.print.wizard form New
view_product_product_form product.product xpath Inherits product.product_normal_form_view
view_product_template_only_form product.template xpath Inherits product.product_template_only_form_view
Models touched (8)

New fields (9)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> index=True string='Company'
  • field_ids Many2many → ir.model.fields
    column1='category_id' column2='field_id' comodel_name='ir.model.fields' domain="['|', ('model', '=', 'product.product'), ('model', '=', 'product.product')]" string='Fields related to printing'
  • name Char
    required=True translate=True
  • product_ids One2many → product.product
    comodel_name='product.product' inverse_name='print_category_id'
  • product_qty Integer
    compute='_compute_product_qty' string='Products'
  • product_to_print_ids One2many → product.product
    comodel_name='product.product' compute='_compute_to_print'
  • product_to_print_qty Integer
    compute='_compute_to_print' string='Products To Print'
  • qweb_view_id Many2one → ir.ui.view
    comodel_name='ir.ui.view' domain="[('type', '=', 'qweb')]" required=True string='Qweb View'
Public methods (2)
  • action_view_product_product(self)
  • get_xml_id_view(self)

New fields (0)

No new fields.

Public methods (1)
  • write(self, vals)

New fields (4)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> help='Restrict the access of this rule to the given company' index=True string='Company'
  • main_category_id Many2one → product.category
    comodel_name='product.category' help='This rule will be applied only to products that belong to the given category, or to its children.' string='Main Category'
  • print_category_id Many2one → product.print.category
    comodel_name='product.print.category'
  • sequence Integer
    required=True string='Priority'
Public methods (1)
  • get_print_category_rule(self, product)
    @api.model

New fields (1)
  • line_ids One2many → product.print.wizard.line
    comodel_name='product.print.wizard.line' default=<expr> inverse_name='wizard_id' string='Lines'
Public methods (1)
  • print_report(self)

New fields (4)
  • print_category_id Many2one → product.print.category
    comodel_name='product.print.category' readonly=False related='product_id.print_category_id' string='Print Category'
  • product_id Many2one → product.product
    comodel_name='product.product' required=True string='Product'
  • quantity Integer
    default=1 required=True
  • wizard_id Many2one → product.print.wizard
    comodel_name='product.print.wizard'
Public methods (0)

No public methods.

New fields (2)
  • print_category_id Many2one → product.print.category
    comodel_name='product.print.category' string='Print Category'
  • to_print Boolean
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • onchange_print_category_id(self)
    @api.onchange('print_category_id')

New fields (2)
  • print_category_id Many2one → product.print.category
    comodel_name='product.print.category' compute='_compute_print_category_id' inverse='_inverse_print_category_id' string='Print Category'
  • to_print Boolean
    compute='_compute_to_print' inverse='_inverse_to_print'
Public methods (1)
  • onchange_print_category_id(self)
    @api.onchange('print_category_id')

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/16.0/product_print_category
VERSION
VERSION 1.0.8
CATEGORY
CATEGORYProduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), GRAP, La Louve, Coop IT Easy SC
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), GRAP, La Louve, Coop IT Easy SC
COMMITTERS
COMMITTERSSylvain LE GAL, Weblate, OCA-git-bot, oca-ci, Olivier Nibart, Simon Hick
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_management
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
qweb_template_demo_1 qweb_template_demo_1 ir.ui.view qweb New
qweb_template_demo_2 qweb_template_demo_2 ir.ui.view qweb New
report_pricetag report_pricetag ir.ui.view qweb New
view_product_print_category_form_2 product.print.category form New
view_product_print_category_rule_tree product.print.category.rule tree New
view_product_print_category_tree product.print.category tree New
view_product_print_wizard_form product.print.wizard form New
view_product_product_form product.product xpath Inherits product.product_normal_form_view
view_product_template_only_form product.template xpath Inherits product.product_template_only_form_view
Models touched (8)

New fields (9)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' index=True string='Company'
  • field_ids Many2many → ir.model.fields
    column1='category_id' column2='field_id' comodel_name='ir.model.fields' domain="['|', ('model', '=', 'product.product'), ('model', '=', 'product.product')]" string='Fields related to printing'
  • name Char
    required=True translate=True
  • product_ids One2many → product.product
    comodel_name='product.product' inverse_name='print_category_id'
  • product_qty Integer
    compute='_compute_product_qty' string='Products'
  • product_to_print_ids One2many → product.product
    comodel_name='product.product' compute='_compute_to_print'
  • product_to_print_qty Integer
    compute='_compute_to_print' string='Products To Print'
  • qweb_view_id Many2one → ir.ui.view
    comodel_name='ir.ui.view' domain="[('type', '=', 'qweb')]" required=True string='Qweb View'
Public methods (2)
  • action_view_product_product(self)
  • get_xml_id_view(self)

New fields (0)

No new fields.

Public methods (1)
  • write(self, vals)

New fields (4)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> help='Restrict the access of this rule to the given company' index=True string='Company'
  • main_category_id Many2one → product.category
    comodel_name='product.category' help='This rule will be applied only to products that belong to the given category, or to its children.' string='Main Category'
  • print_category_id Many2one → product.print.category
    comodel_name='product.print.category'
  • sequence Integer
    required=True string='Priority'
Public methods (1)
  • get_print_category_rule(self, product)
    @api.model

New fields (1)
  • line_ids One2many → product.print.wizard.line
    comodel_name='product.print.wizard.line' default=<expr> inverse_name='wizard_id' string='Lines'
Public methods (1)
  • print_report(self)

New fields (4)
  • print_category_id Many2one → product.print.category
    comodel_name='product.print.category' readonly=False related='product_id.print_category_id' string='Print Category'
  • product_id Many2one → product.product
    comodel_name='product.product' required=True string='Product'
  • quantity Integer
    default=1 required=True
  • wizard_id Many2one → product.print.wizard
    comodel_name='product.print.wizard'
Public methods (0)

No public methods.

New fields (2)
  • print_category_id Many2one → product.print.category
    comodel_name='product.print.category' string='Print Category'
  • to_print Boolean
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • onchange_print_category_id(self)
    @api.onchange('print_category_id')

New fields (2)
  • print_category_id Many2one → product.print.category
    comodel_name='product.print.category' compute='_compute_print_category_id' inverse='_inverse_print_category_id' string='Print Category'
  • to_print Boolean
    compute='_compute_to_print' inverse='_inverse_to_print'
Public methods (1)
  • onchange_print_category_id(self)
    @api.onchange('print_category_id')

New fields (0)

No new fields.

Public methods (0)

No public methods.