odoo学习之带出信息

# 输入客户带出它默认的发运方式和包装方式
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
        print fyfs
        print zxbzfs
        # 返回结果
result['send_invoice_type']=fyfs
        result['packing_type']=zxbzfs
        return {'value':result}


这是在sale_origin表中

判断年月算法:

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

def get_prompt_end_date(self, cr, uid, ids,state_date,end_date, context=None):

if state_date>=end_date:
            raise osv.except_osv(u'提示',u'结束日期不能小于开始日期!')
        return
#创建时修改上次的结束日期
def create(self, cr, uid, vals, context=None):
        if context is None:
            context ={}
        if vals.get('state_date')>vals.get('end_date'):
            raise osv.except_osv(u'提示',u'结束日期不能小于开始日期!')
       se osv.except_osv(u'提示',u'开始日期不能小于上次开始日期!')
obj1=self.search(cr, uid, [('lproduct_id','=',vals.get('lproduct_id')),('partner_id','=',vals.get('partner_id'))],order='id desc', limit=1)
        if obj1:
            sdate=vals.get('state_date')
            date_state=self.browse(cr, uid,obj1,context=None)
            if sdate<date_state.state_date:
                raise osv.except_osv(u'提示',u'开始日期不能小于上次开始日期!')
            yy=int(sdate[0:4])
            mm=int(sdate[5:7])
            dd=int(sdate[8:10])
            if (yy%400==0) or ( yy%100 !=0 and yy%4==0):
                print '闰年'
if dd==1:
                    if  mm==2 or  mm==4 or mm==6 or mm==8 or mm==9 or mm==11:
                        mm=mm-1
dd=31
elif mm==5 or mm==7 or  mm==10 or mm==12:
                        mm=mm-1
dd=30
elif mm==3:
                        mm=mm-1
dd=29
else:
                        dd=31
mm=12
yy=yy-1
else:
                    dd=dd-1
else:
                print '平年'
if dd==1:
                    if  mm==2 or  mm==4 or mm==6 or mm==8  or mm==9 or mm==11:
                        dd=31
mm=mm-1
elif mm==5 or mm==7 or  mm==10 or mm==12:
                        mm=mm-1
dd=30
elif mm==3:
                        mm=mm-1
dd=28
else:
                        dd=31
mm=12
yy=yy-1
else:
                    dd=dd-1
sdd=str(dd)
            smm=str(mm)
            if dd<10:
                sdd='0'+str(dd)
            if mm<10:
                smm='0'+str(mm)
            ndate=str(yy)+'-'+smm+'-'+sdd
            # print ndate
self.write(cr, uid, obj1, {'end_date': ndate}, context=context)
        # ndate = sdate + datetime.timedelta(-1)
new_id=super(sale_price_list_line,self).create(cr,uid,vals,context=context)
        return new_id
    _columns = {
        'price_id':fields.many2one('sale.price.list',u'产品售价号',required=True,),
        'lproduct_id':fields.many2one('product.product',u'产品'),
        'partner_id':fields.many2one('res.partner',u'客户',required=True),
        'puom':fields.many2one('product.uom',u'单位'),
        'state_date':fields.date(u'开始日期'),
        'end_date':fields.date(u'结束日期'),
        'price_unit':fields.float(u'单价',required=True),
        'price_tax':fields.float(u'含税单价'),
    }
    _defaults = {
        # 'state_date':'1999-01-01',
'end_date':'2999-01-01',
    }

原文地址:https://www.cnblogs.com/1314520xh/p/6843172.html