我是Odoo用户(不是开发人员(。 我有一个自定义模块,有 2 个错误,我试图了解如何修复错误,但我找不到解决方案。我认为感兴趣的代码是在模型文件中。 模块,通过在自定义字段中扫描条形码,按顺序添加产品行,包括产品、描述、数量、单价,但缺少税费。如果同一产品条形码被扫描的时间更长,则在同一产品线中增加数量。 第一个错误问题是不加税,我有一个没有税的产品线。我已经看到了内部代码,并且没有任何调用税收的命令。 第二个错误问题是保持价格。该模块允许通过自定义字段条形码扫描手动添加和更新价格,并且在代码内部有用于保留最后价格值更新的命令。如果没有这个,如果再次扫描产品,请回到odoo价格。问题是当我出去当前订单时,持有价格值没有解锁,所以如果我创建新订单或更新现有订单,使用自定义模块应用价格值保留在以前的订单中,而不是odoo产品价格。
------------第一个代码部分:
# added the price history map
priceHistory = {}
class SaleOrder(models.Model):
"""Inherit Sale Order."""
_inherit = "sale.order"
barcode = fields.Char(string='Barcode', size=50)
def _add_product(self, product, qty, price):
"""Add line or update qty and price based on barcode."""
corresponding_line = self.order_line.filtered(lambda r: r.product_id.id == product.id)
if corresponding_line:
corresponding_line[0].product_uom_qty += float(qty)
corresponding_line[0].price_unit = float(price) or product.list_price
else:
self.order_line += self.order_line.new({
'product_id': product.id,
'product_uom_qty': qty,
'name': product.name,
'product_uom': product.uom_id.id,
'price_unit': float(price) or product.list_price,
})
return True
在这里,我尝试添加:
'tax_id' : account.tax
线以下
'price_unit': float(price) or product.list_price,
但不是工作。
------------ 最后一个代码部分
if product_id:
# get the history price
if price_position == -1:
#if priceHistory.has_key(product_id.id):
if product_id.id in priceHistory.keys():
price = priceHistory[product_id.id]
self._add_product(product_id, qty, price)
self.barcode = barcode = None
#save the product price
priceHistory[product_id.id] = price
return
在这里,如果我删除:
#save the product price
priceHistory[product_id.id] = price
我可以解决保留价格值问题,但我创建了一个新问题: 如果模块添加具有新价格匹配的产品,然后再次添加相同的产品,而价格不匹配,则在同一产品线中,它的数量增加,但之前的价格值被odoo价格取代。因此,我需要在添加产品期间保持我的自定义模块手动更新的最后产品价格(当前模块的方式(,但是当我发出当前订单时,价格历史记录必须擦除。 任何人都可以给出解决此问题的任何建议吗? 谢谢
我忘记了,在我发布的代码之后的原始文件中,还有这个代码部分:
'''
class SaleOrderLine(models.Model):
"""Inherit Sale Order Line."""
_inherit = "sale.order.line"
barcode = fields.Char(string='Barcode')
'''
也许可以影响某些事情?
要添加税费使用:
'tax_id' : [(4, account.tax.id)]
要获取当前订单中的价格历史记录,请将order.id
添加为priceHistory
键。
priceHistory = {'order_id1': {'product_id1': ..., 'product_id2': ...}, ...}
看看product_price_history
表,该表跟踪了product.template
标准价格的变化。