Odoo8网站将产品页面的输入值转移到购物车页面

时间:2018-03-13 13:52:31

标签: javascript python xml odoo

我正在使用odoov8中的项目。我需要在产品页面上添加字段,然后创建一个包含此字段的订单。

更具体地说,我在产品页面上添加了“开始日期”字段,我可以在其上选择日期,但是当我点击"加入购物车"我去购物车页面,产品没有我选择的日期。  我需要数量字段具有的类似功能。 这是我用于在产品页面上显示日期字段的代码

<template id="product_quantity" inherit_id="website_sale.product">
            <xpath expr="//a[@id='add_to_cart']" position="after">
                <p>
                    <group colspan="2" col="2">
                        <label for="date">Rent Start Date
                            <input type="date" string="Rent Start Date"  class="form-control" name="start_date" id="start_date"  data-oe-model="ir.ui.view" data-oe-field="arch"  />

                        </label>
                    </group>
                </p>
            </xpath>
    </template>

以下是它的外观: Date field on product page 此外,我对使用当前日期初始化此字段的方式感兴趣。

感谢任何帮助。谢谢 !

1 个答案:

答案 0 :(得分:1)

您需要扩展模型sale.order并添加一个新字段,在您的情况下可以调用它start_date,但请确保sale.order上不存在该字段。

你可以see an example of how to define such a field in the original Odoo v8 repo here。然后,您可以为该字段see for example here设置默认值。

如果我没记错,Add to cart按钮会在路径'/shop/cart/cart_update'触发控制器,因此您必须extend the method cart_update并根据需要更新销售订单。

我建议你扩展方法,进行super调用as it is for example done here(这只是一个例子,如果你从未这样做过,当然你需要调整它)并保存回报变量中的超值,例如res = super(...)

super更改销售订单后(您需要以某种方式获取),要么检查销售订单是否已在res.qcontext中提供(自parent returns a redirect以来可能不会),或者您通过request.website.sale_get_order() which can be seen here获取它。

更新销售订单后,您最终return res

这些方面应该做的事情:

@http.route()
def cart_update(self, product_id, add_qty=1, set_qty=0, **kw):
    res = super(WebsiteSale, self).cart_update(product_id,
                                               add_qty, set_qty, **kw)
    order = request.website.sale_get_order()
    # update your order now 
    # ... 

    # finally return 
    return res