Hi all, I just started developing Odoo.
My goals are
- Add multiple customer product ID to each product, because many clients of mine purchase the same item from me, but they all give it a different name. 
- Display customer pid in table(column/row) as in each row be like, "Customer Name" | "Customer PID" | "Last update" . 
From my understanding, this is done through adding a One2many field in the model 'product.template', so the form view 'product.product_template_only_form_view' can access this field.
I am able to add the desired format of view in my .xml file(mymodule_product_template.xml), and also add the One2many field named 'customer_pid' in my .py code(product.fields.py).
Image link: https://imgur.com/7ub92lb
But when I click on "Add an item", an error occurred.
Odoo Server Error
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/odoo/http.py", line 640, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/usr/lib/python2.7/dist-packages/odoo/http.py", line 677, in dispatch
    result = self._call_function(**self.params)
  File "/usr/lib/python2.7/dist-packages/odoo/http.py", line 333, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/odoo/service/model.py", line 101, in wrapper
    return f(dbname, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/odoo/http.py", line 326, in checked_call
    result = self.endpoint(*a, **kw)
  File "/usr/lib/python2.7/dist-packages/odoo/http.py", line 935, in __call__
    return self.method(*args, **kw)
  File "/usr/lib/python2.7/dist-packages/odoo/http.py", line 506, in response_wrap
    response = f(*args, **kw)
  File "/usr/lib/python2.7/dist-packages/odoo/addons/web/controllers/main.py", line 885, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/odoo/addons/web/controllers/main.py", line 877, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/odoo/api.py", line 689, in call_kw
    return call_kw_multi(method, model, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/odoo/api.py", line 680, in call_kw_multi
    result = method(recs, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/odoo/models.py", line 5456, in onchange
    record = self.new(values)
  File "/usr/lib/python2.7/dist-packages/odoo/models.py", line 5030, in new
    record._cache.update(record._convert_to_cache(values, update=True))
  File "/usr/lib/python2.7/dist-packages/odoo/models.py", line 4909, in _convert_to_cache
    for name, value in values.iteritems()
  File "/usr/lib/python2.7/dist-packages/odoo/models.py", line 4910, in <dictcomp>
    if name in fields
  File "/usr/lib/python2.7/dist-packages/odoo/fields.py", line 1949, in convert_to_cache
    return process(record.env[self.comodel_name].new(value)._ids)
  File "/usr/lib/python2.7/dist-packages/odoo/models.py", line 5030, in new
    record._cache.update(record._convert_to_cache(values, update=True))
  File "/usr/lib/python2.7/dist-packages/odoo/models.py", line 4909, in _convert_to_cache
    for name, value in values.iteritems()
  File "/usr/lib/python2.7/dist-packages/odoo/models.py", line 4910, in <dictcomp>
    if name in fields
  File "/usr/lib/python2.7/dist-packages/odoo/fields.py", line 1780, in convert_to_cache
    raise ValueError("Wrong value for %s: %r" % (self, value))
ValueError: Wrong value for res.partner.type: u'consu'I can hit "Ok" to by-pass the error but whatever I enter, it will become public user. Seems like the default value will replace what I fill with this record regardlessly.
Here's my xml code
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<record model="ir.ui.view" id="product_description">
<field name="model">product.template</field>
<field name="name">product.template.product.form.mymodule</field>
<field name="inherit_id" ref="product.product_template_only_form_view"></field>
<field name="arch" type="xml"> <!-- Hide Field: Barcode -->
<xpath expr="//field[@name='barcode']" position="replace">
<field name="barcode" invisible="1" modifiers="{'invisible': true}"/>
</xpath>
<!-- Add Feild: Last Update -->
<group name="group_general">
<field name="__last_update" string="Last Update" modifiers="{'readonly': true}"/>
</group>
<!-- Add Customer Product ID table -->
<xpath expr="//group[@name='sale_condition']" position="after">
<separator string="Customer Info" colspan="4"/>
<field name="customer_pid" nolabel="1" modifiers="{}">
<tree>
<field name="name"/>
<field name="pid"/>
<field name="__last_update"/>
</tree>
</field>
</xpath>
<!-- Add Product Description(Specs) & Re-layout -->
<xpath expr="//group[@name='description']" position="replace">
<group name="description">
<separator string="Description for Product" colspan="4"/>
<field name="description" colspan="4" nolabel="1" placeholder="Description of the Prodcut Specification" modifiers="{}"/>
<separator string="Description for Quotations" colspan="4"/>
<field name="description_sale" colspan="4" nolabel="1" placeholder="This note will be displayed on the quotations." modifiers="{}"/>
<separator string="Description for Vendors" colspan="4"/>
<field name="description_purchase" nolabel="1" placeholder="This note will be displayed on requests for quotation." colspan="4" modifiers="{}"/>
<separator string="Description for Pickings" colspan="4"/>
<field name="description_picking" placeholder="Description for Pickings (Rack, Row and Case Information)" nolabel="1" colspan="4" modifiers="{}"/>
</group>
</xpath>
</field>
</record>
</data>
</odoo>
Here's my py code
from odoo import models, fields, api
class ProductTemplateInherited(models.Model):
_inherit = 'product.template'
customer_pid = fields.One2many('product.customerinfo', 'name', string='Customer PID')
class ProductCustomerInfo(models.Model):
_name = 'product.customerinfo'
_description = 'Information about a product customer'
name = fields.Many2one('res.partner', 'Customer', index=True, domain=[('customer', '=', True)], ondelete='restrict', required=True, help='Customer relates to this product')
pid = fields.Char(string='Product ID', required=True)
company_id = fields.Many2one('res.company', string='Company', default=lambda self: self.env.user.company_id.id, index=1)
Any help is much appreciated, thank you.
