Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

请教数据纪录实时保存的问题



  • 我在修改sales order模块,遇到了一个问题,这个模板下,每此新建订单,会自动生成一个订单号码,此号码是流水号,依次递增,如SO001,SO002等
    我现在在确认订单函数中增加了一段代码,如下:

    <br />if body_text1[0]&#91;&#039;amount_total&#039;]==0.0:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; raise osv.except_osv(_(&#039;错误 !&#039;),<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _(&#039;订单总金额为零,请确认已选择产品或已计算订单总金额&#039;))<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return False<br />
    


    这段代码的意思是,如果订单总金额为零,则不能继续执行,用这段代码控制用户忘记选择产品或者忘记计算总金额。
    现在遇到的问题是,如果用户是忘记选择产品,而直接点击了“订单确认”,那么弹出错误提示后,在重新选择产品时,会提示“订单号已存在”,也就是说刚才的订单已经保存,此时手动修改订单号,可以继续。
    请问这个问题应如何解决呢?
    非常感谢!


  • 管理员

    兄弟你贴出的代码与 “订单号已存在” 错误没有什么关联,问题应该在你的订单号定制部分的代码。



  • 订单确认执行的是工作流 转换

    你这个需求应该在sale_order 的create 中进行

    判断vals的order_line是否是[] 无明细或对其中的记录进行判断来确定


  • 管理员

    @jjx 终于又看到你的身影了,真是久违了
    要寻找大牛的弟兄们,大牛现身了,别再让他跑了 😉



  • 我一般取消  销售单号的 Default . 让销售单号只读. 然后 在create 方法里去给添加订单流水号...



  • [quote author=digitalsatori link=topic=2800.msg9443#msg9443 date=1331214475]
    @jjx 终于又看到你的身影了,真是久违了
    要寻找大牛的弟兄们,大牛现身了,别再让他跑了 😉
    [/quote]

    绝不敢当啊,比在座各位对openerp的理解差远了,现在正在每天看贴子学习呢



  • 谢谢大家,不过还是有问题需要请教。
    我在create中做判断,在新建订单明细的时候就提示错误了,导致无法添加订单明细,代码如下:

    <br />def create(self, cr, uid, vals, context={}):<br />&nbsp; &nbsp; &nbsp; &nbsp; if not &#039;order_line&#039; in vals or not vals&#91;&#039;order_line&#039;]:&nbsp;  <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; raise osv.except_osv(_(&#039;错误 !&#039;),<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _(&#039;订单总金额为零,请确认已选择产品&#039;))<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return False<br />&nbsp; &nbsp; &nbsp; &nbsp; return super(sales_order,self).create(cr, uid, vals, context)<br />
    


    我想这个问题应该是在新建订单明细的时候,就执行了create动作,但是我是希望我点“确认订单”的时候再判断order_line的情况,请问这时我应该如何修改create函数呢?
    暂时有另外一个解决办法,在确认订单时:

    <br />if get_order_line==&#91;]:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; raise osv.except_osv(_(&#039;错误 !&#039;),<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _(&#039;订单总金额为零,请确认已选择产品&#039;))<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return False<br />
    


    我之前是判断amount_total,改成判断order_line就没有问题了。


Log in to reply