这里是销售订单记录条数
固定格式(self, cr, uid, ids, field_name, arg, context=None):
def _sales_count(self, cr, uid, ids, field_name, arg, context=None):
    res = dict.fromkeys(ids, 0)
    try:
        sale_order_obj=self.pool.get(‘sale.order‘)  获取该表 sale.order
        sale_ids=sale_order_obj.search(cr,uid,[(‘sale_origin_id‘,‘=‘,ids[0])]) 找到满足条件的数据
        res[ids[0]]=len(sale_ids)
    except:
        print u"err!"
    finally:
        return res
create是 新建 点击保存后操作的一系列动作
def create(self,cr,uid,vals,context=None):
    if context is None:
        context ={}
    if vals.get(‘name‘,‘/‘)==‘/‘:
        vals[‘name‘]=self.pool.get(‘ir.sequence‘).get(cr,uid,‘sale.origin‘) or ‘/‘
    ctx=dict(context or {},mail_create_nolog=True)
     #如果存在这个字段 则不处理 反之 删除本元素
    flagline=vals
    linenum=len(vals.get(‘line_id‘))
    new_line_id=[]
    # for 循环遍历出所有的数据,再将满足条件数据放到一个新的数组里,重新赋值给输出变量,linenum固定长度
    for i in  range(linenum):
       if ‘choice‘  in vals.get(‘line_id‘)[i][2] and vals.get(‘line_id‘)[i][2][‘choice‘] is True:
           new_line_id.append(vals.get(‘line_id‘)[i])
    vals[‘line_id‘]=new_line_id
    new_id=super(sale_origin,self).create(cr,uid,vals,context=ctx)
 增加关注者  这里依赖于od-oa模块
    res_model=self._name
    obj=self.pool.get(‘od.oa.add.user‘)
    obj.add_follower_ids(cr,uid,res_model,new_id)
    return new_id
而这里则是编辑后保存所执行的动作
######修改外部交期后 同时修改销售订单的交期
def write(self, cr, uid, ids, vals, context=None):
    choice1=vals.get(‘choice‘)
    ddate=vals.get(‘date_planned‘)
    price=vals.get(‘price‘)
    # if choice1 == False:
    #     print ‘11‘
    #     self.unlink(cr,uid,ids,context=context)
    # else:
    if ddate or price or choice1 :
        obj=self.pool(‘sale.order.line‘)
        sale_order_line_id=obj.search(cr,uid,[(‘sale_origin_line_id‘,‘=‘,ids[0])])
        obj.write(cr,uid,sale_order_line_id,{‘finish_date‘:ddate,‘price_unit‘:price})
        # print ids
    return super(sale_origin_line, self).write(cr, uid,ids, vals, context=context)
原文:http://www.cnblogs.com/1314520xh/p/6906228.html