Skip to Content
Menu
This question has been flagged
3 Replies
1469 Views

Is it possible to have the projects a NUMBER ID so we can see this number directly. I think this is possible with code, but with the standard, what will be the best method to use?


THANKS!


😃

Avatar
Discard
Best Answer

Hi,

One workaround could be, if you have Studio, you can add the existing field named "ID" to your list view and also to your form view. This is the database ID generated by Odoo when new project is created.




Avatar
Discard
Author Best Answer

Thanks. But I understand this is a solution with code. But with the standard is not possible, is it?

Avatar
Discard
Best Answer

Hi,

You can use the code like :

from odoo import models, fields, api
import uuid

class Project(models.Model):
    _name = 'project.project'
    _description = 'Project'

    name = fields.Char(string='Name', required=True)
description = fields.Text(string='Description')
numerical_id = fields.Integer(string='Numerical ID', readonly=True)

    @api.model
    def create(self, vals):
        vals['numerical_id'] = self.generate_numerical_id()
        return super(Project, self).create(vals)

    def generate_numerical_id(self):
        # Generate a UUID and convert it to a numerical ID
        uuid_str = str(uuid.uuid4())
        # Convert the UUID to an integer
        numerical_id = int(uuid_str.replace("-", "")[:16], 16)
        return numerical_idif we need to do with UI , can add it through a button or any cases

like :

<!-- XML view definition -->

<record id="view_project_form_inherit" model="ir.ui.view">

<field name="name">project.project.form.inherit</field>

<field name="model">project.project</field>

    <field name="inherit_id" ref="project.view_task_form"/>

    <field name="arch" type="xml">

        <!-- Add a button to trigger numerical ID generation -->

        <footer>

            <button name="generate_numerical_id" string="Generate Numerical ID" type="object" class="btn-primary"/>

        </footer>

    </field>

</record>


# Python code in your custom module

from odoo import models, fields, api

import uuid


class Project(models.Model):

    _inherit = 'project.project'


numerical_id = fields.Integer(string='Numerical ID', readonly=True)


    @api.multi

    def generate_numerical_id(self):

        for project in self:

            uuid_str = str(uuid.uuid4())

            numerical_id = int(uuid_str.replace("-", "")[:16], 16)

            project.write({'numerical_id': numerical_id})



This way, users can click the button in the UI to generate a numeric ID for the project. Adjust it according to your specific requirements and the UI design of your Odoo instance


Hope it helps

Avatar
Discard