我正在使用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 此外,我对使用当前日期初始化此字段的方式感兴趣。
感谢任何帮助。谢谢 !
答案 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