楼主采用的是deb安装吧,发现不了是因为你投放oecn的目标不对
18684036
-
Oecn_base_fonts在可安装模块里不能找到 -
关于订单取消后,计划运行仍然计算物料的问题效果图如下:[attachimg=1]
-
关于订单取消后,计划运行仍然计算物料的问题今天在测试生产时,订单因输入不合格,所以取消了一下,发现了以下情况
操作:录入订单-----》确认订单
然后我想取消掉它,于是我去出货单中删除掉出货单
回到订单中点击 取消订单
发现在 需求异常中 订单的状态 仍是已确认
此时我再建一个订单,进行MRP计算,则MRP就会计算错误,会计算出两个订单的物料 ,含我刚才取消的订单的物料
鉴于该种情况,我向总监大神请教了是否是我这边的问题
经确认非本人的问题
于是我就将sale.py中的cancel_order函数修改了一下,修改如下: -
OPENERP demo 测试数据分析及源码分析这个,非常不错,我现在也在看这个的代码
-
如何点击一个按钮,更改某个字段的值今天在做采购单中,想加入一个功能,就是 采购员在递交 采购申请单给 领导签时,领导会想了解一下,这款材料,以往买是多少价钱
于是我便将采购单进行更改,
1.在notes下面加入了一个按钮
为了效果更好看些,我模仿了Total (update)的做法,即编辑可见,其他状态不可见
2。按钮事件中,直接返回一个测试数据,如:最近三次报表分别为:80.00 98.67
代码如下:
return
{values:{'notes':'最近三次报表分别为:80.00 98.67'}}
发现该写法不起效果
假如是在onchange下,该种写法是可以正常执行的
于是请教了上海-Joshua 大神
经大神指导,OE不能直接返回一个value值,需要Write进数据库
故改成
def buyprice_scrap(self, cr, uid, ids, context=None):
vals={}
vals['notes']='最近三次报表分别为:80.00 98.67'
return super(purchase_order, self).write(cr, uid, ids,vals, context=context)
测试成功 -
生产订单添加物料目标库位改为生产实在不行,就添加一个按钮,点击批量更改 从表的物料库位,
我之前也想过设置生成的采购单对准 进料区 库位
但发现测试了N次后,做法是行不通的,
生成的时候就对准 库位,
仓库计算MRP时是判断stock库位,导致不停的生成新的采购单 -
CentOS6.4下源代码安装以及nginx配置写得灰常不错,攒一个
-
如何控制many2one多对一的字段下拉框显示自己所想要的数据问题我其实是想用context传值的,但水平有限,于是我在模块用使用了全局变量
惭愧啊 -
如何控制many2one多对一的字段下拉框显示自己所想要的数据问题具体代码如下
def fields_get(self,cr,uid,fields=None,context=None):
res=super(bom_supplierinfo,self).fields_get(cr,uid,fields,context)
global conset_product_id
global supplier_bom_ids
if 'name' in res:
res['name']['domain']=[('id','in',supplier_bom_ids)]
return res
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
self.fields_get(cr,uid,'name',context=context)
res = super(bom_supplierinfo,self).fields_view_get(cr, uid, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
if view_type!='form':
return res
if context is None:
context = {}
fields=res.get('fields',{})
if fields:
if fields.get('name'):
results=self.pool.get('res.partner').read(cr,uid,supplier_bom_ids,['name'],context)
print 'show the Name value'
for r in results:
print r['id']
#res['name']=results
self.fields_get(cr,uid,'name',context=context)
res['name']=results
#res['fields']=self.fields_get(cr,uid,'name',context=context)
return res -
如何控制many2one多对一的字段下拉框显示自己所想要的数据问题最终答案测试出来了,
1:fields_view_get 中判断相应的view_type=你想要控制的view,比如tree or form
判断fields中是否含有你想要控制的字段,如我上面所说的name字段
调用 fields_get 函数,更改该字段的domain值
注:被控制下拉的字段,在xml中的视图中,不能含有 widget="selection" 否则不生效
我测试是这样的,具体是什么原因不知道,实在很抱歉
我用的是该方法,并测试成功
2:最简单的就是many2one加上related (jeff 提示,我有做过,方法可行)
3:用selection类型 再用method 填充 (jeff 提示,我没有测试过)
在此,再次感谢jeff ,步科,ccods,海飞众人的帮助 -
如何控制many2one多对一的字段下拉框显示自己所想要的数据问题问题点:
在实际的开发过程中,有碰到这样的一个问题
customer and supplier and user 都是在res.partner表中
产品也有一个product.supplierinfo 表用来装载该产品的供应商
而我定义了一个字段
'name' : fields.many2one('res.partner', 'supplier', domain=[('supplier','=',True)],
ondelete='cascade',required=True, help="Supplier of this product"),
想显示 product.supplierinfo 中的供应商
解决办法:
1.我想通过domain来完成,于是使用了 domain=[('supplier','in',func)]
但是测试时一直没通过
经jeff 与步科,ccods,海飞等众多大神们,佛祖们指导,最终得出的解决办法是,该写法不符合规范,
正确写法应该为:domain=my_domain()
然后再定义一个函数
def my_domain()
return "[('id','in',["+','.join(map(str,ids))+"])]" #假如ids=[1,2,3]
该函数的作用是返回一个字符串
则回到原字段定义中为:
'name' : fields.many2one('res.partner', 'supplier', domain=[color=limegreen]"[('supplier','in',[1,2,3])]"[/color],
ondelete='cascade',required=True, help="Supplier of this product"),
对此我进行了domain="[]" 与 domain=[] 测试
发现只有 domain=[] 才起作用,对此疑问我向jeff咨询中得出答案:该两种都是一样的效果,
海飞兄说,官方写法为:domain=[] ,
同时我自己测试了,并找了ccods与东莞-老马 进行帮忙测试这个“”问题,结果是,ccods的两种写法效果一样,东莞-老马的跟我的一样,只有domain=[****] 才起作用
对此疑问只能归为版本问题,进行保留处理
2:因为my_domain()返回的是字符串,所以导致了虽然字段的domain=“可变值” 但却起不到作用
对此我又进行进一步的测试
海飞兄提示说:domain实际是一个list,所以不应该用字符串,应该用数组
我也有跟踪仔细观察过,domain=[('supplier','in',[1,2,3])]
在此,进行一下数组及元组的解析,
数组=[]
元组=()
于是我猜测,domian=[元组1,元组2,元组3] 这种写法
于是我将my_domain()函数改成:
def my_domain():
ids=[1,2,3,4] #为方便测试我直接给它设置了一个固定数组
reval=[]
reval=['id','in']
reval.append(supplier_bom_ids)
stuple=tuple(reval)
returlist=[]
returlist.append(stuple)
#reval="domain=[('id','in',["+','.join(map(str,ids))+"])]"
#reval="[('id','in',["+','.join(map(str,ids))+"])]"
print conset_product_id
print "以下是reval的值"
print returlist
return returlist
则返回的是一个带元组的数组,此时,测试成功,该my_domain()返回的结果 起作用了,
于是我想将ids转成一个可变值,但此时就不成功了
我再进行跟踪观察,发现_columns在初使化时就已经运行了,此时context或者全局参数根据还没能产生
所以使用domain=my_domain() 方法宣告失败
方法2:
fields_view_get –> fields_get –> read
该方法我测试过,但因为能力有限,这些函数的原理我也没搞得怎么明白,不敢发表评论,
fields_view_get 在模块show之前,会进行加载
fields_get 可以更改_columns里的值,但是即使更改后,也不见起作用,所以我估计在运行fields_get时,该many2one已经加载完数据了
最终结果:问题还是没解决得,实在辜负了群里众位大神们的帮助 -
Name 'method' is not defined 的错误提示检查结果是的,如果定义一个方法即可,只是我用不上,所以就删除掉了
-
学习OE 如何定义视图的类型除开这个方法,我还是依然认为 def view_header_get() 这个函数可以 根据用户的uid 来指向 某个view_id
虽然我还没做得出来,但我相信这个方法肯定行 -
MRP_BOM 的主从定义测试结果,合计14天,失败
-
如何实现下拉列表onchange的时候对另一个控件清零设为只读不错不错
-
Name 'method' is not defined 的错误提示检查结果本来是想在文档中,图文并貌的,结果没弄得出来,对不起jeff,对不起总监的期望啊,还有上海-Joshua(470534800) 0:01:13 的指导
-
MRP_BOM 的主从定义我现在还在研究这个,还没跑得顺,昨天晚上多亏jeff解答了Name 方法错误的问题,现在继续仿Mrp做一个模块,主从表放同一个表中,希望能尽快解决
-
Name 'method' is not defined 的错误提示检查结果问题点这里[attachimg=1]
-
Name 'method' is not defined 的错误提示检查结果今天在测试向导时,发现保存时总是出问题
于是为了测试向导的字段没有问题,于是我用该向导的字段及view来创建一个新模块
在测试保存时都正常,但回到tree视图时,就提示如下:
[attachimg=2]
OpenERP Client error
Uncaught Error: QWeb2 - template['ListView.rows']: Runtime Error: Error: QWeb2 - template['ListView.row']: Runtime Error: Error: NameError: name 'method' is not defined<br / [检测到链接无效,已移除] br />
解决流程(个人尝试方法,仅供参考,避免别人走相同的路线):
1.由于该错误是数据库表存在数据才会出错,于是我认为是数据不完整导致,我将数据库中的字段缺省的全部手工填写上
[img2][attachimg=2][/img2]
检查字段是否定义错误,如图
[attach=3][attachimg=3]
再检查数据库表
[attach=3][attachimg=3]
结果:失败
2:经与大神讨论,认为OE 7版本中,有几个版本是存在这个错误,于是我将本机的2013-03-30号的版本删除,替换成2013-05-11版
结果:失败
3:Ccdos提议:可能是字段中必须有 Name 字段
结果:失败
4:海飞大神提议:追加_rec_name="字段"
结果:失败
5:后经Jeff大神检查
流程:
5.1:先检查search_view 视图是否有问题
5.2:检查tree_view视图,发现在视图中多了一个Color方法
结果:成功
在此,十分感谢群里各位大神们的帮助与支持,谢谢
[attach=3][attachimg=3] -
Openerp 中的 readonly我觉得最大的可能性就是 readonly字段,OE不写入vals中,而在onchange中,又不能控制vals,所以导致了这个字段无法保存