我目前正在 CentOS 6.4 机器上部署 OpenERP 7。我正在虚拟化整个系统,以便在出现问题时备份整个系统。
一切似乎都很好,我改变了我的模型,我的观点,但是已经两天了,我一直在努力解决一个看似不可能的问题。
我的部署是针对书厂的,所以需要定制产品(页数、装订类型等...)
在新产品视图中,我需要一些可以汇总到字段 x_colorpages 和 x_bwpages 的内容来填充第三个字段:x_totalpages。容易吧?
我有基于 product.poduct 对象的 XML、product.normal.form 视图
当我更改“x_paginecolori”或“xpagineBN”中的值时,它应该会自动触发 onchange 函数。
所以我进入产品模块代码并编写了我的 cal_change_event
在位于的python文件product.py中:/usr/lib/python2.6/site-packages/openerp-7.0_20130524_231019-py2.6.egg/openerp/addons/account/product.py
def cal_change_event(self, cr, uid, ids, x_PagineColori, x_PagineBN):
res = {}
sum = 0
if not x_PagineColori:
return {}
else if not x_PagineBN:
return {}
else:
sum = x_PagineColori + x_PagineBN
res={'x_pagine':sum }
return {'value':res}
无论我做什么,onchange 事件都会触发一个警告弹出窗口:
文件“/usr/lib/python2.6/site-packages/openerp-7.0_20130524_231019-py2.6.egg/openerp/osv/osv.py”,第 185 行,在 execute_cr 返回 getattr(object, method)(cr, uid, *args, **kw) AttributeError: 'product.product' 对象没有属性 'cal_change_event'
在我看来,该功能没有看到,我应该把它放在哪里?如果我将 Product.Product 放在 product.py 内部的类中,它怎么能没有这个属性?
我对整个 CENTOS 安装进行了 grep,以搜索 openerp 的多个实例,或者查看我是否遗漏了有关 product.py 的内容
似乎 product.py 不是正确的文件,即使我删除了其他 On_change 函数,也没有什么不好的事情发生。但是目录必须是正确的,因为错误日志在调试弹出窗口中给了我相同的位置。
我应该从头开始构建一个自定义模块来完成这项工作吗?是否禁止以某种方式修改标准产品模块?
在此先感谢您的任何见解,我的大脑默认了这一点。
这是我的 XML:
<?xml version="1.0"?>
<form string="Product" version="7.0">
<sheet>
<div>
<label for="x_partner2" string="Cliente Referente del prodotto"/>
<field name="x_partner2" />
</div>
<field name="image_medium" widget="image" class="oe_avatar oe_left"/>
<div class="oe_title">
<div class="oe_edit_only">
<label for="name" string="Product Name"/>
</div>
<h1>
<field name="name"/>
</h1>
<label for="categ_id" class="oe_edit_only"/>
<h2><field name="categ_id"/></h2>
<div name="options" groups="base.group_user">
<field name="sale_ok"/>
<label for="sale_ok"/>
</div>
</div>
<div class="oe_right oe_button_box" name="buttons">
</div>
<notebook>
<page string="Information">
<group>
<group>
<field name="type"/>
<field name="uom_id" on_change="onchange_uom(uom_id,uom_po_id)" groups="product.group_uom"/>
<field name="list_price"/>
</group>
<group>
<field name="default_code"/>
<label for="ean13"/>
<div name="ean">
<field name="ean13" placeholder="e.g. 5901234123457"/>
</div>
</group>
<group>
<field groups="product.group_product_variant" name="variants"/>
<field name="price_margin" groups="product.group_product_variant"/>
<field name="price_extra" groups="product.group_product_variant"/>
</group>
</group>
<field name="description" placeholder="describe the product characteristics..."/>
</page>
<page string="Dati del volume Universal Book">
<group>
<group>
<field name="x_DataCreazione" />
<field name="x_DataUltimaModifica" />
<field name="x_Autore" />
<field name="x_Larghezza"/>
<field name="x_Altezza" />
<field name="x_Dorso"/>
<field name="x_Rilegatura" />
<field name="x_volumiformati" />
</group>
</group>
<group>
<field name="x_PagineColori" on_change="cal_change_event(x_PagineColori,x_PagineBN)" />
<field name="x_PagineBN" on_change="cal_change_event(x_PagineColori,x_PagineBN)" />
<field name="x_pagine" />
</group>
<group>
<field name="x_prezzo" />
</group>
</page>
<page string="Copertina">
<group>
<group>
<field name="x_TipoCartaCopertina"/>
<field name="x_TipoStampaCopertina"/>
<field name="x_TipoFFR"/>
<field name="x_PlastificazioneCopertina" />
<field name="x_NumeroCopertinePerPagina" />
</group>
<group>
<field name="x_TipoCartaSovracopertina"/>
<field name="x_TipoStampaScopertina"/>
<field name="x_TipoFFRSovracopertina"/>
<field name="x_PlastificazioneSovracopertina"/>
</group>
</group>
<label for="x_aletta" string="Libro con alette?"/>
<field name="x_aletta" />
<label for="x_Note" string="Note"/>
<field name="x_Note" />
</page>
<page string="Margini">
<group>
<field name="x_pagriferimento"/>
<field name="x_MargineDestro"/>
<field name="x_MargineDestro"/>
<field name="x_MargineInferiore" />
<field name="x_MargSinistro" />
<field name="x_MargineSuperiore"/>
<field name="x_RiferimentoLIFRE" />
<field name="x_MergineSuperioreLIFRE" />
<field name="x_MargineInferioreLIFRE" />
</group>
</page>
<page string="Procurements" groups="base.group_user">
<group name="procurement">
<group name="general">
<field name="cost_method" groups="product.group_costing_method"/>
<field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}"/>
</group>
<group name="procurement_uom" groups="product.group_uom" string="Purchase">
<field name="uom_po_id"/>
</group>
</group>
<separator string="Description for Suppliers"/>
<field name="description_purchase" placeholder="This note will be displayed on requests for quotation..."/>
</page>
<page string="Inventory" groups="base.group_user">
<group name="inventory">
<group name="status" string="Status">
<field name="state"/>
<field name="product_manager"/>
</group>
<group name="Weights" groups="product.group_stock_packaging" string="Weights">
<field digits="(14, 3)" name="volume" attrs="{'readonly':[('type','=','service')]}"/>
<field name="weight" attrs="{'readonly':[('type','=','service')]}"/>
<field name="weight_net" attrs="{'readonly':[('type','=','service')]}"/>
</group>
</group>
</page>
<page string="Sales" attrs="{'invisible':[('sale_ok','=',False)]}">
<group name="sale">
<group string="Sale Conditions">
<label for="warranty"/>
<div>
<field name="warranty" class="oe_inline"/> months
</div>
</group>
<group groups="product.group_uos" string="Unit of Measure">
<field name="uos_id"/>
<field name="uos_coeff"/>
<field name="mes_type"/>
</group>
</group>
<field name="packaging" groups="product.group_stock_packaging">
<form string="Packaging" version="7.0">
<group col="4">
<field name="ean"/>
<field name="sequence" invisible="1"/>
<newline/>
<field name="qty"/>
<field name="ul"/>
<field name="weight_ul"/>
<separator colspan="4" string="Palletization"/>
<field name="ul_qty"/>
<field name="rows"/>
<field name="weight"/>
<separator colspan="4" string="Pallet Dimension"/>
<field name="height"/>
<field name="width"/>
<field name="length"/>
</group>
<separator colspan="4" string="Description"/>
<field name="name"/>
</form>
</field>
<separator string="Description for Quotations"/>
<field name="description_sale" placeholder="note to be displayed on quotations..."/>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</form>