簡體   English   中英

Odoo 自定義模塊修復稅收訂單行?

[英]Odoo custom module fix taxes order line?

我是 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

我可以解決價格值保留問題,但我創建了一個新問題:如果模塊添加了一個新價格匹配的產品,然后再次添加相同的產品沒有價格匹配,在同一產品線中,它增加了數量但以前的價格值,被替換為奧多價格。 因此,我需要在添加產品期間保留由我的自定義模塊手動更新的最后產品價格(當前模塊如何操作),但是當我退出當前訂單時必須清除 priceHistory。 任何人都可以提出任何建議來解決這個問題嗎? 非常感謝

我忘記了,在我發布的代碼之后的原始文件中,還有這個代碼部分:

'''
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標准價格的變化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM