##判断删除情况,不允许删除
def unlink(self,cr,uid,ids,context=None):
raise osv.except_osv(u'警告!',u'单据不允许删除');
def write(self,cr,uid,ids,context=None):
raise osv.except_osv(u'警告!',u'单据不允许修改');
 
 
 # 重写删除方法
def unlink(self,cr,uid,ids,context=None):
# 首先获取这张单子的状态,read
sale_origins=self.read(cr,uid,ids,['state'],context=context)
unlink_ids=[]
for s in sale_origins:
# 如果这张单子状态为草稿和取消d 单子是可以删除的确定的单子是 不可以删除的
if s['state'] in ['draft','cancel']:
# 将要删除的单子的id放入放到删除容器里面取
unlink_ids.append(s['id'])
else:
# 如果是确定的单子就可以弹出一个不可以删除对话提示框
raise osv.except_osv((u'警告'),(u'以缺然订单不可以删除'))
# 返回这个结果的值到前台
return osv.osv.unlink(self,cr,uid,unlink_ids,context=context)

# 重写删除方法,删除合同单,连结算单一起删除,可用sql语句,ids表示这个单子的id
def unlink(self, cr, uid, ids, context=None): # sigining_contract查出状态信息
sigining_contract = self.read(cr, uid, ids, ['state'], context=context)
sigining_contract_obj=self.browse(cr,uid,ids,context)
name=sigining_contract_obj.contract_origin
# 根据合同号删除结算单号
sql="DELETE from settle_account where contract_origin='%s'"%(str(name))
cr.execute(sql)
unlink_ids = []
for s in sigining_contract:
if s['state'] in ['draft','cancel']:
unlink_ids.append(s['id'])
else:
raise osv.except_osv((u'警告!'), (u'已确认订单不可删除')) return osv.osv.unlink(self, cr, uid, unlink_ids, context=context) 创建方法:
 # 新加的地方
def create(self, cr, uid, vals, context=None):
context = context or {} partner_id = vals.get('display_name')
ht_type = vals.get('contract_type') # 根据公司来生成不同的编号,不同类别从1开始
if partner_id and ht_type:
vals['contract_origin'] = self.get_ht_sequence(cr,uid,partner_id,ht_type) else:
raise osv.except_osv(u'请先选择公司或类别!') new_id=super(sigining_contract, self).create(cr, uid, vals, context)
return new_id
保存后是编辑是write方法:
def write(self, cr, uid, ids, vals, context=None):
ddate=vals.get('date_planned')
if ddate:
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})
return super(sale_origin_line, self).write(cr, uid,ids, vals, context=context)
 

函数 求几个数的和#改动地方 小计增加金额 求和:
def _get_sumzaccount(self, cr, uid, ids, field_name, arg, context=None): res={}
for order in self.browse(cr, uid, ids, context=context):
Q=0.0
qq=order.zadd_money
qq1=order.zadd_money2
qq2=order.zadd_money3
qq3=order.zadd_money4
Q=qq+qq1+qq2+qq3 res[order.id]=Q return res

###整张外部订单取消,对应取消未发货的内部销售订单
# def action_cancel_sale_order(self,cr,uid,ids,context=None):
# assert len(ids)==1
# sale_origin_obj=self.browse(cr,uid,ids,context)
# sale_origin_obj.state='cancel'
# #单据明细也需要取消
# for line in sale_origin_obj.line_id:
# line.state='cancel'
# #查询出销售订单的源单据是本外部订单的所有单据
# origin_obj=self.pool.get('sale.order')
# sale_orders=origin_obj.search(cr,uid,[('sale_origin_id','=',ids[0])])
# #####取消
# origin_obj.action_cancel(cr, uid, sale_orders)
# self.message_post(cr, uid, ids, body=u"已取消订单", context=context)
# return True
												

删除方法odoo的更多相关文章

  1. Windows服务的手动添加和删除方法

    Windows服务的手动添加和删除方法 服务,是指执行指定系统功能的程序.例程或进程,以便支持其他程序,尤其是低层(接近硬件)程序.其实,服务就是一种特殊的应用程序,它从服务启动开始就一直处于运行状态 ...

  2. ecshop后台"云提醒未激活 点击激活" 补丁删除方法

    ecshop后台"云提醒未激活 点击激活" 补丁删除方法 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2015-01-15   ecshop后台提 ...

  3. 一个封装较好的删除方法(Delete)

    前台的引用 @Html.ActionLink(“删除字样”,“后台的删除方法”,new{绑定id},new{@style="样式"});方法,如何要独立使用的话,一般还要使用到相应 ...

  4. java集合类遍历删除方法测试以及使用场景记录

    package test0; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java. ...

  5. StringBuilder的三种删除方法比较

    分别用一千万次循环来比较StringBuilder的三种删除方法所用时间 未避免偶然性,再循环一百次来比较总时间 --主类 public class StringBuilderRemove { pub ...

  6. SQL Server存储过程的删除方法

    SQL Server存储过程的删除方法使我们经常会用到的,下面就为您介绍扩展存储过程的删除方法,如果您对SQL Server存储过程方面感兴趣的话,不妨一看. --清除SQL Server所有的危险扩 ...

  7. Removable Storage Devices文件夹删除方法

    Windows10的桌面上出现了名为“Removable Storage Devices”的文件夹删除方法 比较莫名奇妙,突然桌面上出现了名为“Removable Storage Devices”的文 ...

  8. ASP.NET MVC4 新手入门教程之九 ---9.查询详情和删除方法

    在本教程的这一部分,您会检查自动生成的Details和Delete方法. 检查详细信息和删除方法 打开Movie控制器并检查的Details的方法. public ActionResult Detai ...

  9. pandas DataFrame行或列的删除方法

    pandas DataFrame的增删查改总结系列文章: pandas DaFrame的创建方法 pandas DataFrame的查询方法 pandas DataFrame行或列的删除方法 pand ...

随机推荐

  1. Java基础笔记(3) 进制与进制转换

    ---恢复内容开始--- 进制 在一般生活中,我们一直在应用的十进制,就是逢十进一,而今天我们要接触的是,计算机编程常用的进制!首先我们要知道,计算机内部运算采用的是二进制,也就是逢二进制! 1.什么 ...

  2. css inline元素和inline-block元素之间缝隙产生原因和解决办法

    行内元素产生水平空隙的原因及解决方案 这篇文章讲的很好,但是提供的解决方案没有这篇好实现 去除inline-block元素间间距的N种方法

  3. sass在vue注意的地方

    当用@import导入vue页面的时候,在sass/scss文件里面的url,路径开始就是导入的vue位置. 当前目录结构 App.vue 我在App.vue导入了public.scss,那在publ ...

  4. json 平面转树状 child [zhuan]

    <script> /** * json格式转树状结构 * @param {json} json数据 * @param {String} id的字符串 * @param {String} 父 ...

  5. JavaScript Data.parse()转化时间戳安卓和ISO不兼容

    Data.parse()获取时间戳,在Android是没有问题的,但是在ISO就不行了,原因在于转化成时间戳的时间格式不一样. Android的格式是如“2017-12-12 12:12:12”,IS ...

  6. JNI使用方法

    JNI可以让我们在java代码中调用本地库的功能. 下面记录一下JNI简单的使用方法 创建java端接口 public class JNIIterface { // 导入最终生成的dll文件 stat ...

  7. Expo大作战(十三)--expo如何自定义状态了statusBar以及expo中如何处理脱机缓存加载 offline support

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  8. Java高并发编程(四)

    一.Executor执行器 1.Executor接口,java线程池框架中的顶层接口,提供一个execute方法来执行任务 import java.util.concurrent.Executor; ...

  9. Qt简介 及与MFC、GDK+的比较

    Qt C++图形用户界面应用程序开发框架. Qt的由来和发展 1.QT由来 Haavard Nord 和Eirik Chambe-Eng于1991年开始开发"Qt",1994年3月 ...

  10. 使用Amanda ZRM备份远程MySQL数据库

    本文写道最后的时候,我才发现ZRM for MySQL的一个致命问题,就我目前的理解和测试来看,它恢复数据的时候是采取覆盖的方式,举个例子,假定某台数据库服务器上有两个数据库test1,test2,你 ...