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 ...
随机推荐
- Java String 和JSON转换
Java项目中经常会使用到JSON格式和String格式的数据,所以二者之间的转换也是一个重要的步骤. Sting类型的数据.如: 转化为JSONObject的步骤如下: 1).把字符串转成 JSON ...
- 自定义data-*
HTML5的自定义属性data-*详细介绍和JS操作实例 < div id="user" data-id="123456" data-name=" ...
- JavaScript中何时使用===,何时使用==
建议尽量都使用===,原因如下: 一致性:使用==对一致性没有任何好处,那么为什么不避免使用呢. 简单和性能:一般来说,===是最简单的操作符,因为它不用进行类型转换.JavaScript引擎的性能参 ...
- kafka-hadoop-consumer
写了一个工具,从kafka传输数据到hdfs,采用的api,可以消费指定的kafka topic 或者为了简便可以消费所有的topic中各个partition的数据. 地址:https://githu ...
- php添加购物车
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- python 日志打印之logging使用介绍
python 日志打印之logging使用介绍 by:授客QQ:1033553122 测试环境: Python版本:Python 2.7 简单的将日志打印到屏幕 import logging lo ...
- Java J2EE读取配置文件
package com; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.naming.InitialCon ...
- 存储过程使用 in 添加多个参数的情况处理方式【转】
原文连接:http://www.jb51.net/article/41472.htm -->情景 ① 通过刚才的SQL递归方式,我们已经可以将一个组织机构和其全部下级单位查询出来:假设每个组织机 ...
- 客户端连接caching-sha2-password问题
ALTER USER 'root'@'localhost' IDENTIFIED BY '123' PASSWORD EXPIRE NEVER;ALTER USER 'root'@'localhost ...
- linux信息收集篇之sosreport
sosreport是一个类型于supportconfig 的工具,sosreport是python编写的一个工具,适用于centos(和redhat一样,包名为sos).ubuntu(其下包名为sos ...