Sale Product Identification Numbers

sale_product_identification
REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/18.0/sale_product_identification
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Binhex
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Binhex
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Edilio Escalona Almira
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/partner-contact:
    - partner_identification
odoo/odoo:
    - 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
    - contacts
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Sometimes, when selling a product, it is necessary to require documentation (authorization, ID, etc.) from the customer to justify the sale.
Examples:
Sale of a corrosive product: A document authorizing its handling is required. To control this process, we configure a Corrosive category in the product listing.

Sale of alcohol: In this case, sales to minors are not permitted. To control this process, we configure a Minor category in the product listing.

This module allows you to control these processes through identifications in the product listing.

Please note that this functionality depends on the partner_identification module. For detailed setup and configuration,
please refer to that addon's documentation.

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
confirm_identification_view Confirm identifications confirm.identification form New
product_template_only_form_view product.template.form.view.sale.product.identification product.template xpath Inherits product.product_template_only_form_view
Models touched (5)

New fields (2)
  • message Text
  • order_ids Many2many → sale.order
    string='Orders' args: 'sale.order'
Public methods (1)
  • confirm_identification(self)

New fields (2)
  • product_tmpl_category_ids One2many → product.template.id_category
    args: 'product.template.id_category', 'product_tmpl_id'
  • required_identification Boolean
    default=False
Public methods (0)

No public methods.

New fields (4)
  • category_id Many2one → res.partner.id_category
    args: 'res.partner.id_category'
  • is_mandatory Boolean
    default=True help='Defines whether identification is mandatory.'
  • message Text
    help='Allows you to define a description of why this identification is being added.\nExample: Asking the customer for identification'
  • product_tmpl_id Many2one → product.template
    args: 'product.template'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • message_error_identifications(self, product_tmpl_ids, diff_identification_ids, required=False)
    @api.model
    Define a message identifications by product :param product_tmpl_ids: Products that have at least one identification category defined. :param diff_identification_ids: Required or optional identifications. :param required: Defines whether what is being validated is required or not. :return: A message with the identification categories per product.
  • validate_identification(self, **params)
    @api.model
    Allows you to obtain the difference between 2 recordset IDs :param params: A dictionary of values where at least the value 'compare_identification_ids' and 'partner_id' must be present to validate the identifications :return: A set of records with the difference between submitted identifications and those of the partner

New fields (0)

No new fields.

Public methods (1)
  • action_confirm(self)
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/sale-workflow
PULL REQUEST
PULL REQUEST[19.0][MIG] sale_product_identification: Migration to 19.0 (#4402)