跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

老

老刘

@老刘
关于
帖子
4
主题
1
群组
0
粉丝
0
关注
0

帖子

最新 最佳 有争议的

  • 求助:OE7 点击产品成本构成的时候,出现下面的错误,请问什么原因?
    老 老刘

    中文问题


  • 实现套件类型的物料清单使用以及送货完毕订单送货状态不变bug修复
    老 老刘

    综上所述,我决定找一个简单的解决方式:
    修改:addons/sale_stock/stock.py 下stock_move :为其增加action_done 方法:(PS:为啥不直接修改stock下面的action_done方法,因为如果没有安装sale_stock模块,会造成代码无法运行)。
    先把/sale/stock.py 下单方法整个抄过来:

    然后再下面增加如下代码:
    。。。。。。
            move_ids = []
            moves=[] <----增加
    。。。。
                move_ids.append(move.id)
                moves.append(move)  <----增加

            。。。。。。。。。。。。。。。。。(原代码)
            for id in move_ids:
                wf_service.trg_trigger(uid, 'stock.move', id, cr)
               
            #为分解打包商品后的stock.move检查是否全部为“done”,如果是,那么原来订单时注册的stock.move也改变状态为“done”
            #并且注册触发器           
            for mv in moves:
                sale_line_id=mv.sale_line_id
                other_move_ids = self.search(cr, uid, [('id','!=',mv.id),('state','not in',['done','cancel']),
                                                        ('sale_line_id','=',sale_line_id.id)], context=context)
                phantom_mv =[]
                all_done= True
                for ohid in other_move_ids:
                    ohmv=self.browse(cr, uid, ohid, context)
                    if ohmv.picking_id:
                        all_done= False
                        break
                    phantom_mv.append(ohmv.id);
                if all_done and phantom_mv and len(phantom_mv)>0 :
                    self.write(cr, uid, phantom_mv, {'state': 'done', 'date': time.strftime(DEFAULT_SERVER_DATETIME_FORMAT)}, context=context)
                    for phid in phantom_mv:
                        wf_service.trg_trigger(uid, 'stock.move', phid, cr)               

            #增加完毕
            for pick_id in picking_ids:
                wf_service.trg_write(uid, 'stock.picking', pick_id, cr)

    当然,这个判断不是很科学(最好的办法是拆解套件包时,记录原procurement.order.id或者stock_move.id,通过关系获取),我判断的依据是sale_line_id 下的stock_move的picking_id为空,即作为 phantom(套件)类型的发送单。改变其状态为done,正确激活订单时所注册的Triggers工作流,来完成订单状态的改变。


  • 实现套件类型的物料清单使用以及送货完毕订单送货状态不变bug修复
    老 老刘

    今天晚上看了代码,初步确认:由于确认订单自动生成发货单同时有工作流写入数据库(Triggers为procurement.order / id),但是生产模块修改发货单的产品为其他产品(实际上是增加产品)后(stock_move 发生变化,对应procurement.order 也发送了变化),当发生发货完成是,stock_move的id不是原始id,所以procurement.order也不是订单时注册在工作流中间的id,工作流引擎不能正确重启工作流运行,造成不能自动完成发货状态。


  • 实现套件类型的物料清单使用以及送货完毕订单送货状态不变bug修复
    老 老刘

    商场卖可乐,可以卖百事可乐,也可以卖可口可乐,也可以打包一个百事可乐和可口可乐的套装,但是客户也可以拆开其中的一个单独买单,也可以一起买打包好的单。
    1.首先我们需要定义3个产品:可口可乐、百事可乐、无忧可乐套装。注意:定义无忧可乐套装的时候要定义:供应方法生产
    [img [检测到链接无效,已移除] /img]
    2.定义生产物料清单。注意:物料清单类型 必须选:套件/虚项
    [img [检测到链接无效,已移除] /img]
    3.发生销售
    [img [检测到链接无效,已移除] /img]
    4.查看送货单:
    [img [检测到链接无效,已移除] /img]
    ok,完毕!
    但是有个小问题,当发货完毕,生成发票,登记付款完毕的时候,订单不能自动变为“done”状态,这个问题待哪位大牛解决下。

  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组