odoo开发历史订单需求整体思路
第一步:找到客户对应页面,并找到他所下过的销售订单,用数据库语句查出所有数据,并去除重复数据,显示在前端,
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文件
<!--<page string="历史订单">-->
<!--<field name="history_order_line">-->
<!--<header>-->
<!--<button name="action_confirm_all_sale_order" string="确认" type="object" />-->
<!--</header>-->
<!--<tree>-->
<!--<field name="hproduct_id" />-->
<!--<field name="hmaterial"/>-->
<!--<field name="hspec"/>-->
<!--<field name="hprice" />-->
<!--<field name="hproduct_uom"/>-->
<!--<field name="hpacking_type1"/>-->
<!--<field name="choice"/>-->
<!--</tree>-->
<!--</field>-->
<!--</page>--> 第三步:
另一种做法,就是直接加到明细表中:可选可删除 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
当我们不能直接遍历,删除数据,我们可以换一个思路.就是
将数据保存到数组,直接把结果保存下来,不会时可以将数据打印出来,然后进行下一步操作 这就是整体思路
odoo开发历史订单需求整体思路的更多相关文章
- odoo之带出历史订单产品
这是在sale_origin中下由两张单子{sale_origin_line和history_order} class history_order(osv.osv): _name="hist ...
- 《Odoo开发指南》精选分享—第1章-开始使用Odoo开发(1)
引言 在进入Odoo开发之前,我们需要建立我们的开发环境,并学习它的基本管理任务. 在本章中,我们将学习如何设置工作环境,在这里我们将构建我们的Odoo应用程序.我们将学习如何设置Debian或Ubu ...
- Django学习笔记(18)——BBS+Blog项目开发(2)主体思路及流程
这篇博客主要完成一个BBS+Blog项目,那么主要是模仿博客园的博客思路,使用Django框架进行练习. 准备:项目需求分析 在做一个项目的时候,我们首先做的就是谈清楚项目需求,功能需求,然后才开始写 ...
- Nginx网络架构实战学习笔记(五):大访问量优化整体思路、ab压力测试及nginx性能统计模块、nginx单机1w并发优化
文章目录 大访问量优化整体思路 ab压力测试及nginx性能统计模块 ab压力测试及nginx性能统计模块 ab压力测试 nginx性能统计模块 nginx单机1w并发优化 整装待发: socket ...
- HTTP 协议的历史演变和设计思路
HTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本 HTTP/2 更是让它成为技术热点. 本文介绍 HTTP 协议的历史演变和设计思路. 一.HTTP/0.9 HTTP 是基于 TCP ...
- 【Xamarin挖墙脚系列:Xamarin开发环境配置需求】
原文:[Xamarin挖墙脚系列:Xamarin开发环境配置需求] 前言 因为操作的全是大块头,加大你们的内存,CPU网上飙.... 卤煮的机器配置 最近的版本部署包,百度云离线下载:版本:Xama ...
- 从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路
本文原作者阮一峰,作者博客:ruanyifeng.com. 1.引言 HTTP 协议是最重要的互联网基础协议之一,它从最初的仅为浏览网页的目的进化到现在,已经是短连接通信的事实工业标准,最新版本 HT ...
- [转帖]从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路
从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路 http://www.52im.net/thread-1709-1-2.html 本文原作者阮一峰,作者博客:r ...
- HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2 历史演变和设计思路(详)*
HTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本 HTTP/2 更是让它成为技术热点. 本文介绍 HTTP 协议的历史演变和设计思路. 一.HTTP/0.9 HTTP 是基于 TCP ...
随机推荐
- xxl-job 实现高可用
xxl-job-Admin是一个服务调度中心,管理所有的任务的触发. 1.如果xxl-job-Admin平台如果宕机了,该如何处理? 需要搭建集群. 2.xxl-job-Admin 如何搭建集群? 使 ...
- Nginx基本的安全优化
为了防止nginx出现软件漏洞,我们要对nginx软件服务加强一些安全性,下面就介绍一下基本的安全优化 1.隐藏nginx版本号: 想要隐藏,首先我们要了解所使用软件的版本号,我们可以在Linux中查 ...
- MariaDB Centos7 下安装MariaDB
Centos7 下安装MariaDB by:授客 QQ:1033553122 1.下载安装文件 rpm包为例,对于标准服务器安装,至少需要下载client,shared,serve文件(安装时如果少了 ...
- SQLServer 事物与索引
SqlServer 事物与索引 分享by:授客 QQ:1033553122 详情点击百度网盘分享链接: SqlServer 事物与索引.ppt
- Expo大作战(十八)--expo如何发布成独立应用程序,打包成apk或者ipa,发布到对应应用商店
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- vs2017安装cuda9.0编译默认示例失败解决方法
https://devtalk.nvidia.com/default/topic/1027209/cuda-setup-and-installation/cuda-9-0-does-not-work- ...
- python 实现线程安全的单例模式
单例模式是一种常见的设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 比如,服务器的配置信息写在一个文件中online. ...
- JAVA将list转化为xml文件
pojo类: public class TreeNode { private int id; private String nodeId; private String parentId; priva ...
- MySQL 8.0.2: Introducing Window Functions
July 18, 2017MySQL, SQLDag Wanvik MySQL 8.0.2 introduces SQL window functions, or analytic functions ...
- 转:Web 开发中很实用的10个效果【附源码下载】
原文地址:http://www.cnblogs.com/lhb25/p/10-useful-web-effect.html 在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多 ...