##判断删除情况,不允许删除
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. 说说对npm的开发模式和生产模式的理解

    nodejs这些年的发展非常快,相信没有哪个前端不知道的了,npm也成为了前端开发中经常用到了的一个命令.那么npm不是只用一个 "npm install xxx"命令就够了吗?实 ...

  2. Java基础笔记(1) 语言 JAVA的历史 Java的搭建环境

    本文除了搭建是重点,其他的都当阅读小说一样去看就好了,不想看可以直接抓住重点,我会改变颜色勾出重点! 英语是人与人交流沟通的重要方式之一.JAVA:是人与计算机沟通交流重要方式之一.我们除了用java ...

  3. 自定义适用于手机和平板电脑的 Dynamics 365(一):主页

    当用户首次打开适用于手机和平板电脑的 Dynamics 365 时,他们将看到默认为“销售仪表板”的主页. 您可以创建新仪表板或 Web 应用程序中编辑现有仪表板,然后为移动设备启用它们,用户可以选择 ...

  4. java持有对象【2】ArrayList容器续解

    此为JDK API1.6.0对ArrayList的解释. ArrayList 使用java泛型创建类很复杂,但是应用预定义的泛型很简单.例如,要想定义用来保存Apple对象的ArrayList,可以声 ...

  5. Android热修复之 - 收集崩溃信息上传服务器

    1.概述 大致的流程就是在用户崩溃的时候,我们获取崩溃信息.应用当前的信息和手机信息,然后把它保存到手机内存卡,再找我就直接找出来看看.后来衍生到上线后某些奇葩机型会有部分问题,所以不得不上传到服务器 ...

  6. c#中partial 作用

    申明一下:我也是在百度上找的答案,然后合起来的,这样感觉好理解一点!partial是局部类型的意思就是说有这个关键字的类.结构或接口可以写成几个部分比如: public partial class P ...

  7. CSS未知宽高元素水平垂直居中

    方法一 :table.cell-table 思路:显示设置父元素为:table,子元素为:cell-table,这样就可以使用vertical-align: center,实现水平居中优点:父元素(p ...

  8. MySQL索引设计不可忽视的知识点

    本文主要讨论MySQL索引的部分知识.将会从MySQL索引基础.索引优化实战和数据库索引背后的数据结构三部分相关内容,下面一一展开. 一.MySQL——索引基础 首先,我们将从索引基础开始介绍一下什么 ...

  9. 【爬坑】Python 3.6 在 Socket 编程时出现类型错误 TypeError: a bytes-like object is required, not 'str'

    1. 问题描述 Python 3.6 在 Socket 编程时出现错误如下 Traceback (most recent call last): File "F:/share/IdeaPro ...

  10. MySQL基础之 视图

    视图 视图就是从一个表或多个表导出来的一张虚拟的表.通过这个窗口可以看到系统专门提供的数据,方便用户操作的同时增加了安全性. 视图的特点: 1.视图的列可以来自于不同的表. 2.视图是由实际存在的表创 ...