1. # 输入客户带出它默认的发运方式和包装方式
  2. def on_change_partner_id_return(self,cr,uid,ids,partner_id,context=None):
  3. result={}
  4. if partner_id:# 如果存在
  5. #找到满足条件的值
  6. obj=self.pool.get('res.partner').browse(cr,uid,partner_id,context=context)
  7. #取出数据显示在前端
  8. fyfs=obj.send_type
  9. zxbzfs=obj.packing_type
  10. print fyfs
  11. print zxbzfs
  12. # 返回结果
  13. result['send_invoice_type']=fyfs
  14. result['packing_type']=zxbzfs
  15. return {'value':result}
  16.  
  17. 这是在sale_origin表中
  18. 判断年月算法:

#判断开始日期和结束日期

  1. def get_prompt_end_date(self, cr, uid, ids,state_date,end_date, context=None):
  2.  
  3. if state_date>=end_date:
  4. raise osv.except_osv(u'提示',u'结束日期不能小于开始日期!')
  5. return
  6. #创建时修改上次的结束日期
  7. def create(self, cr, uid, vals, context=None):
  8. if context is None:
  9. context ={}
  10. if vals.get('state_date')>vals.get('end_date'):
  11. raise osv.except_osv(u'提示',u'结束日期不能小于开始日期!')
  12. se osv.except_osv(u'提示',u'开始日期不能小于上次开始日期!')
  13. obj1=self.search(cr, uid, [('lproduct_id','=',vals.get('lproduct_id')),('partner_id','=',vals.get('partner_id'))],order='id desc', limit=1)
  14. if obj1:
  15. sdate=vals.get('state_date')
  16. date_state=self.browse(cr, uid,obj1,context=None)
  17. if sdate<date_state.state_date:
  18. raise osv.except_osv(u'提示',u'开始日期不能小于上次开始日期!')
  19. yy=int(sdate[0:4])
  20. mm=int(sdate[5:7])
  21. dd=int(sdate[8:10])
  22. if (yy%400==0) or ( yy%100 !=0 and yy%4==0):
  23. print '闰年'
  24. if dd==1:
  25. if mm==2 or mm==4 or mm==6 or mm==8 or mm==9 or mm==11:
  26. mm=mm-1
  27. dd=31
  28. elif mm==5 or mm==7 or mm==10 or mm==12:
  29. mm=mm-1
  30. dd=30
  31. elif mm==3:
  32. mm=mm-1
  33. dd=29
  34. else:
  35. dd=31
  36. mm=12
  37. yy=yy-1
  38. else:
  39. dd=dd-1
  40. else:
  41. print '平年'
  42. if dd==1:
  43. if mm==2 or mm==4 or mm==6 or mm==8 or mm==9 or mm==11:
  44. dd=31
  45. mm=mm-1
  46. elif mm==5 or mm==7 or mm==10 or mm==12:
  47. mm=mm-1
  48. dd=30
  49. elif mm==3:
  50. mm=mm-1
  51. dd=28
  52. else:
  53. dd=31
  54. mm=12
  55. yy=yy-1
  56. else:
  57. dd=dd-1
  58. sdd=str(dd)
  59. smm=str(mm)
  60. if dd<10:
  61. sdd='0'+str(dd)
  62. if mm<10:
  63. smm='0'+str(mm)
  64. ndate=str(yy)+'-'+smm+'-'+sdd
  65. # print ndate
  66. self.write(cr, uid, obj1, {'end_date': ndate}, context=context)
  67. # ndate = sdate + datetime.timedelta(-1)
  68. new_id=super(sale_price_list_line,self).create(cr,uid,vals,context=context)
  69. return new_id
  70. _columns = {
  71. 'price_id':fields.many2one('sale.price.list',u'产品售价号',required=True,),
  72. 'lproduct_id':fields.many2one('product.product',u'产品'),
  73. 'partner_id':fields.many2one('res.partner',u'客户',required=True),
  74. 'puom':fields.many2one('product.uom',u'单位'),
  75. 'state_date':fields.date(u'开始日期'),
  76. 'end_date':fields.date(u'结束日期'),
  77. 'price_unit':fields.float(u'单价',required=True),
  78. 'price_tax':fields.float(u'含税单价'),
  79. }
  80. _defaults = {
  81. # 'state_date':'1999-01-01',
  82. 'end_date':'2999-01-01',
  83. }

odoo学习之带出信息的更多相关文章

  1. QT如何编译出带调试信息的qtwebkit库

    因为在编译QT的时候默认是不编译成带调试信息的qtwebkit库的,不论如何设置参数都是没有用的.后面在一博客中查找到相关信息   1.编译带debug 信息的webkit 库 注释或者删除qt-ev ...

  2. css案例学习之通过relative与absolute实现带说明信息的菜单

    效果如下 代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  3. odoo之带出历史订单产品

    这是在sale_origin中下由两张单子{sale_origin_line和history_order} class history_order(osv.osv): _name="hist ...

  4. (私人收藏)[开发必备]最全Java离线快速查找手册(可查询可学习,带实例)

    (私人收藏)[开发必备]最全Java离线快速查找手册(可查询可学习,带实例) https://pan.baidu.com/s/1L54VuFwCdKVnQGVc8vD1TQnwmj java手册 Ja ...

  5. layer弹出信息框API

    首先向大家推荐layer,在这里也非常感谢贤心的贡献,非常不错的信息框及弹出层解决方案,为一些项目的前端开发提高了很大的效率,希望layer 越办越好! 下面是API,呵呵,官方抄袭过来的,为了自己看 ...

  6. alv行可编辑时带出描述

    ALV显示可以编辑的状态下可以带出描述信息等,比如维护表程序输入公司代码时需要带出公司代码的描述,这时就需要通过下面事件来触发 定义一个类: CLASS lcl_event_receiver DEFI ...

  7. MVC扩展控制器, 把部分视图转换成字符串(带验证信息), 并以json传递给前端视图

    当我们使用jQuery异步提交表单数据的时候,需要把部分视图转换成字符串(带验证信息),以json的形式传递给前端视图.   使用jQuery异步加载部分视图,返回内容追加到页面某个div:   jQ ...

  8. (私人收藏)[开发必备]HTML5最全快速查找离线手册(可查询可学习,带实例)

    [开发必备]HTML5最全快速查找离线手册(可查询可学习,带实例) HTML5最全快速查找离线手册:https://pan.baidu.com/s/19seE8TJQSx4IsWgXtKQS0Aj9y ...

  9. DoModal时带出次级窗口闪现

    最近在做MFC 界面开发. 在一个CDialog窗口DoModal模态显示时, 会将次级窗口带出闪现(比如将一个窗口active, 然后点击我现在程序需要弹框的按钮,弹出弹出正常,但原来active的 ...

随机推荐

  1. 【代码笔记】Web-ionic-index创建侧边栏

    一,创建侧边栏. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  2. JavaScript日期排序

    //日期排序 function sortDownDate(a, b) { return Date.parse(a.received) - Date.parse(b.received); } funct ...

  3. [SQLSERVER] 转移数据库MDF或LDF文件位置的方法,以及重新启动出现无权限的问题

    0. 查看数据库文件名和物理文件名 SELECT name, physical_name AS current_file_location FROM sys.master_files 1. 运行命令 ...

  4. 基于Bootstrap表单验证

    基于Bootstrap表单验证 GitHub地址:https://github.com/chentangchun/FormValidate 使用方式: 1.CSS样式 .valierror { bor ...

  5. C#语言————拼接、插入、替换、删除四种方法

    StringBuilder sb = new StringBuilder("hello"); sb.Append("world");//拼接 sb.Insert ...

  6. 在 Android 手机上运行 Python 程序

  7. IntelliJ idea 如何打开左边项目展开栏

    vie->Tool Windows->Project Alt+1 转自:https://blog.csdn.net/bug_moving/article/details/53284434

  8. chrony时间服务器

    chrony有着比ntp服务器更好的优势来同步服务,在集群架构中,采用此种服务来同步时间也是最好的方式. 在集群环境中,一般都是一个服务器,然后上百个客户端来同步服务端的时间,接下来我们看看如何配置. ...

  9. node学习笔记_04 express相册

    学习node用express框架做了一个相册展示及上传功能: 1.没有连接服务器,这里全部是操作文件夹 2.安装上传文件的依赖formidable,npm install --save formida ...

  10. centos7下安装docker(13.1docker存储--data volume)

    我们现在知道docker 有两种存储方式:storage driver和data volume stroage driver这种存储方式主要是存储那些无状态的数据,是镜像层和容器层组成的,而data ...