资讯专栏INFORMATION COLUMN

odoo12-创建报价单显示当前客户购买同一个产品的上一次的价格

sorra / 2209人阅读

最终实现的样子

代码

sale_views.xml(不做解释,可以一起学习探讨)



  

       
       
            view.sale.order.line.inherit.sale.history
            sale.order
            
             
                 
                    
                
                 
                    
                
            
       


sale.model

# -*- coding: utf-8 -*-

from odoo import api, models, fields

class SaleOrderLine(models.Model):
    _inherit = "sale.order.line"

    last_price1 = fields.Float("Last Sale Price 1")

    @api.onchange("product_id")
    def product_id_change(self):
        super(SaleOrderLine, self).product_id_change()
        result = {}
        last_price1 = 0.0

        for record in self:
            line_ids = []
            if record.product_id:
                order_lines = self.env["sale.order.line"].sudo().search([("order_partner_id", "=", record.order_partner_id.id),("product_id", "=", record.product_id.id),("order_id.state","in",("sale","done"))])
                #self.env["sale.order.line"].sudo()    sale.order.line()
                #order_lines sale.order.line(56,)
                if order_lines:
                    for lines in order_lines:
                        line_ids.append(lines.id)
            final_list = sorted(line_ids, key=int, reverse=True)
            # final_list   [56]
            if len(final_list)>=1:
                last_price1 = self.env["sale.order.line"].sudo().browse(final_list[0])
                #self.env["sale.order.line"].sudo().browse()   sale.order.line()

                record.last_price1 = last_price1.price_unit
实现的逻辑(可能不对,一起学习探讨)

报价单必须“确认”后成为“销售订单后”才能实现

判断的是同一个客户购买过同一款产品,满足以下三个条件

- 客户的id是不是在以购买的表中?
- 产品的id的是不是在已购买的表中?
- 订单的状态

代码的一些简单的讲解

 @api.onchange("product_id")
#就是当字段发生改变时,触发绑定的函数
super(SaleOrderLine, self).product_id_change()
#Python2的class继承方法
#python3可以这么写super().product_id_change()
order_lines = self.env["sale.order.line"].sudo().search([("order_partner_id", "=", record.order_partner_id.id),("product_id", "=", record.product_id.id),("order_id.state","in",("sale","done"))])

获取到的是一个model的实例化对象,sudo()获取超级权限
self.env["sale.order.line"].sudo() ----> sale.order.line()

根据对象查找domain
.search([domain])

print(order_lines)  #ale.order.line(56,)

我们要进行正序的排序,因为我们只取最近的一次记录
final_list = sorted(line_ids, key=int, reverse=True) --->[56]

brows是浏览对象及其关联对象。从数据库中读取指定的记录,并生成对象返回。
self.env["sale.order.line"].sudo().browse() ---->sale.order.line()

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45175.html

相关文章

  • 机器学习在SAP Cloud for Customer中应用

    摘要:机器学习在客户管理场景中的应用使用机器学习进行客户管理,我们可以得到客户度全方位的视图。可以看到机器学习给为和这两个产品计算的相关分数是和。关于机器学习在中的更多应用,请参考帮助文档。 关于机器学习这个话题,我相信我这个公众号1500多位关注者里,一定有很多朋友的水平比Jerry高得多。如果您看过我以前两篇文章,您就会发现,我对机器学习仅仅停留在会使用API的层面上。 使用Java程...

    Jeff 评论0 收藏0
  • 2021年阿里云服务器报价:企业级阿里云服务器报价

    摘要:活动仅限产品新用户参与,其中云服务器产品新用户,即在阿里云实名认证后首次购买云服务器或轻量服务器的用户。阿里云服务器报价表,阿里云年阿里云上云采购季活动云服务器配置及价格表阿里云2021年阿里云服务器报价:企业级阿里云服务器一年多少钱?下面去服务器网(yuntue.com)小编来说下企业级阿里云服务器常用配置有哪些以及目前在阿里云活动中的报价。   阿里云企业级云服务器低至0.7折!...

    邱勇 评论0 收藏0
  • 【译文】驱动系统方法:四步设计出好数据产品

    摘要:有人使用谷歌的自驾汽车完全意识不到之所以车辆开行都是上百个如果不是上千种的话的模型和级的数据发挥作用的结果。这是驱动系统方法的目标。建模器的第二个组成部分与保险公司的利润有关条件是客户接受这个价格。 翻译:克迪 欢迎访问网易云社区,了解更多网易技术产品运营经验。 在过去几年中, 我们看到了许多基于预测建模的数据产品。这些产品的范围从天气预报到推荐引擎, 再到比航空公司本身更准确地预测航...

    Null 评论0 收藏0
  • 开发者常用 3 款云服务器宽带产品,没想到最强是它...

    摘要:包年包月带宽方式单独从这个报价来看,阿里的单价是最低的。腾讯发起退费的当天,已使用满整月的,按已使用整月的包月带宽计费价格进行扣除不满整月的,按已使用时长的按小时带宽计费价格进行扣除。大家好,我是小 G。最近公司新上业务,正在做公有云厂商选型。目前市面大厂也就那几家,阿里、腾讯、华为、UCloud 等等,个人还是倾向阿里,毕竟国内公有云第一的实力是有目共睹的,有同事之前也用过腾讯和 UClo...

    Tecode 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<