博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
odoo开发历史订单需求整体思路
阅读量:6766 次
发布时间:2019-06-26

本文共 4104 字,大约阅读时间需要 13 分钟。

第一步:找到客户对应页面,并找到他所下过的销售订单,用数据库语句查出所有数据,并去除重复数据,显示在前端,

sql="select DISTINCT t2.product_id as product_id, t6.material as material,t6.cust_spec as cust_spec,t6.list_price as price, t2.product_uom as uom, t3.packing_type1 as pick_type  from  res_partner  t0  LEFT JOIN sale_order t1  on  t0.id=t1.partner_id  LEFT JOIN sale_order_line t2  on t2.order_id=t1.id LEFT JOIN sale_origin_line t3 on   t2.order_id=t3.order_id LEFT JOIN product_uom t4 on t4.id=t2.product_uom  left join product_product t5 on t5.id=t2.product_id left join product_template t6 on t6.id=t5.product_tmpl_id LEFT JOIN customer_requirement t7 on t7.partner_id=t0.id  where  t1.partner_id is not null and  t0.name='%s'"%(khmc) cr.execute(sql) 根据客户名称来查: 第二步:新加一个页签,用来存放历史订单数据,方便人们看到: sale_origin.py文件
'history_order_line':fields.one2many('history.order','hpartner_id', 'history order', copy=True),
# class history_order(osv.osv):     _name="history.order"     _description="history order line " _columns={ 'hpartner_id':fields.many2one('sale.origin', u'客户'), 'hproduct_id':fields.many2one('product.product',u'产品'), 'hmaterial': fields.related('product_id', 'material',relation='product.product', type="char", string=u'品名/材质',readonly=True,), 'hspec': fields.related('product_id', 'cust_spec',relation='product.product', type="char", string=u'规格',readonly=True,), 'hproduct_uom': fields.many2one('product.uom',u'单位'), 'hprice':fields.float(u'单价',digits=(6,3)), 'hcust_order_no':fields.char(u'客户单号'), 'requirement_text':fields.text(string=u"要求"), 'hmemo':fields.char(u'备注'), 'hpacking_type1':fields.selection([(1,u'隔板'),(2,u'泡沫')],string=u'包装方式',), 'choice':fields.boolean(u'请选择'), }
.xml文件
第三步: 另一种做法,就是直接加到明细表中:可选可删除 1,这是选择客户后,带出数据
# 输入客户带出它默认的发运方式和包装方式 def on_change_partner_id_return(self,cr,uid,ids,partner_id,context=None): result={} if partner_id:# 如果存在 #找到满足条件的值 obj=self.pool.get('res.partner').browse(cr,uid,partner_id,context=context) #取出数据显示在前端 fyfs=obj.send_type zxbzfs=obj.packing_type khmc=obj.name # 返回结果 result['send_invoice_type']=fyfs result['packing_type']=zxbzfs print khmc # 根据客户,查询出所有历史订单产品,并去除重复数据. sql="select DISTINCT t2.product_id as product_id, t6.material as material,t6.cust_spec as cust_spec,t6.list_price as price,t2.product_uom as uom, t3.packing_type1 as pick_type from res_partner t0 LEFT JOIN sale_order t1 on t0.id=t1.partner_id LEFT JOIN sale_order_line t2 on t2.order_id=t1.id LEFT JOIN sale_origin_line t3 on t2.order_id=t3.order_id LEFT JOIN product_uom t4 on t4.id=t2.product_uom left join product_product t5 on t5.id=t2.product_id left join product_template t6 on t6.id=t5.product_tmpl_id LEFT JOIN customer_requirement t7 on t7.partner_id=t0.id where t1.partner_id is not null and t0.name='%s'"%(khmc) cr.execute(sql) dict=cr.dictfetchall() order_line_id=[] # 遍历打印出所有订单记录 for i in range(len(dict)): print dict[i] # 将所有记录放入到历史订单表中 order_line_id.append({ 'product_id':dict[i]['product_id'], 'pname':dict[i]['material'], 'spec':dict[i]['cust_spec'], 'product_uom':dict[i]['uom'], 'price':dict[i]['price'], 'packing_type1':dict[i]['pick_type'] }) result['line_id']=order_line_id return { 'value':result}
2,这是可选择,可删除,可新建, 点击 保存按钮 后的数据
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 print vals print flagline 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]: new_line_id.append(vals.get('line_id')[i]) print new_line_id vals['line_id']=new_line_id print vals.get('line_id') new_id=super(sale_origin,self).create(cr,uid,vals,context=ctx) 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
当我们不能直接遍历,删除数据,我们可以换一个思路.就是
将数据保存到数组,直接把结果保存下来,不会时可以将数据打印出来,然后进行下一步操作 这就是整体思路

转载于:https://www.cnblogs.com/1314520xh/p/6883851.html

你可能感兴趣的文章
Sington单例模式(创建型模式)
查看>>
idea导入或者检出项目时发现编辑器左侧无法显示项目目录结构
查看>>
添加相关功能
查看>>
php基础
查看>>
html5+canvs实现flash效果。
查看>>
《JAVA与模式》之简单工厂与工厂方法
查看>>
Entity Framework公共的增删改方法
查看>>
虚拟机搭建hadoop环境
查看>>
面向对象15.3String类-常见功能-获取-2
查看>>
php2
查看>>
动态代理
查看>>
Linux磁盘及文件系统管理
查看>>
最近一些小心得
查看>>
283. Move Zeroes - Easy
查看>>
关于webservice
查看>>
(转)Tomcat 7 访问 Manager 和 Host Manager
查看>>
与图论的邂逅01:树的直径&基环树&单调队列
查看>>
luogu P3901 数列找不同
查看>>
Redis性能点
查看>>
【转】VMware Converter迁移linux系统虚拟机
查看>>