Python Odoo自定义模块修复税款订单行?
我是一个Odoo用户(不是开发人员)。 我有一个自定义模块,有两个bug,我试图了解如何修复bug,但我没有找到解决方案。我认为代码对模型文件感兴趣。 模块,通过在自定义字段中扫描条形码,按订单添加产品线,包括产品、说明、数量、单价,但缺少税金。如果同一产品条码扫描的时间更长,则会增加同一产品线的数量。 第一个错误的问题是不加税,我有一个产品线没有税。我看过里面的代码,没有任何命令调用Taxes。 第二个问题是持有价格。该模块允许通过自定义字段条码扫描手动添加和更新价格,代码内部有保持上次价格值更新的命令。没有这个,如果产品再次扫描,回到奥多价格。问题是,当我发出当前订单时,保留价格值未解锁,因此,如果我将创建新订单或更新现有订单,使用自定义模块将应用保留在以前订单中的价格值,而不是odoo产品价格 ------------第一部分:Python Odoo自定义模块修复税款订单行?,python,module,odoo,tax,Python,Module,Odoo,Tax,我是一个Odoo用户(不是开发人员)。 我有一个自定义模块,有两个bug,我试图了解如何修复bug,但我没有找到解决方案。我认为代码对模型文件感兴趣。 模块,通过在自定义字段中扫描条形码,按订单添加产品线,包括产品、说明、数量、单价,但缺少税金。如果同一产品条码扫描的时间更长,则会增加同一产品线的数量。 第一个错误的问题是不加税,我有一个产品线没有税。我看过里面的代码,没有任何命令调用Taxes。 第二个问题是持有价格。该模块允许通过自定义字段条码扫描手动添加和更新价格,代码内部有保持上次价格值
# 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
#save the product price
priceHistory[product_id.id] = price
贝洛韦线
'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
这里,如果我删除:
'tax_id' : account.tax
#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\u price\u history
表,该表记录了product.template
标准价格的变化情况。Hi Kenly,感谢您的回复。一、 我试图修复tax bug,但当模块工作时,我出现了以下错误:第33行,在_add_产品'tax_id':[(4,account.tax.id)]中,NameError:name'account'未定义。第33行是:'tax_id':[(4,account.tax.id)]。我能做什么?谢谢我忘了,在我发布的代码之后的原始文件中,还有这个代码部分:''class SaleOrderLine(models.Model):''继承销售订单行。“\u Inherit=“Sale.Order.Line”barcode=fields.Char(string='barcode')''可能会影响某些东西?在同一级别上,当您获得产品id
的值时,您还需要传递帐户id
(应该是行。帐户id
)