При попытке перенести приложение / модуль в odoo 13 я получаю KeyError: 'tax_line_ids' - PullRequest
0 голосов
/ 18 апреля 2020

При попытке перенести модуль с odoo 11 на 13 я получаю ошибку KeyError: 'tax_line_ids'. Пожалуйста, помогите мне решить эту проблему. Это бразильский модуль для заготовок, который я поместил «->» в строки, где в коде обнаружены tax_line_ids. Кто-нибудь, помогите мне, пожалуйста. Я не могу легко найти этот модуль, потому что он бразильский. Компания, которая сделала это в odoo 11, теперь работает с другой компанией, которая взимает плату за заготовки, поэтому они прекратили обновление

Odoo Server Error

Traceback (most recent call last):
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\http.py", line 624, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\http.py", line 310, in _handle_exception
    raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\tools\pycompat.py", line 14, in reraise
    raise value
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\http.py", line 669, in dispatch
    result = self._call_function(**self.params)
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\http.py", line 350, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\service\model.py", line 94, in wrapper
    return f(dbname, *args, **kwargs)
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\http.py", line 339, in checked_call
    result = self.endpoint(*a, **kw)
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\http.py", line 915, in __call__
    return self.method(*args, **kw)
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\http.py", line 515, in response_wrap
    response = f(*args, **kw)
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\addons\web\controllers\main.py", line 1326, in call_button
    action = self._call_kw(model, method, args, kwargs)
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\addons\web\controllers\main.py", line 1314, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\api.py", line 387, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\api.py", line 374, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "<decorator-gen-60>", line 2, in button_immediate_install
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\addons\base\models\ir_module.py", line 72, in check_and_log
    return method(self, *args, **kwargs)
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\addons\base\models\ir_module.py", line 463, in button_immediate_install
    return self._button_immediate_function(type(self).button_install)
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\addons\base\models\ir_module.py", line 573, in _button_immediate_function
    modules.registry.Registry.new(self._cr.dbname, update_module=True)
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\modules\registry.py", line 86, in new
    odoo.modules.load_modules(registry._db, force_demo, status, update_module)
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\modules\loading.py", line 423, in load_modules
    loaded_modules, update_module, models_to_check)
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\modules\loading.py", line 315, in load_marked_modules
    perform_checks=perform_checks, models_to_check=models_to_check
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\modules\loading.py", line 201, in load_module_graph
    registry.setup_models(cr)
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\modules\registry.py", line 266, in setup_models
    dependencies[field] = set(field.resolve_depends(model))
  File "C:\Users\Eliane\Documents\Odoo\server\odoo\fields.py", line 695, in resolve_depends
    field = field_model._fields[fname]
-> KeyError: 'tax_line_ids'

файла 1

 class AccountInvoice(models.Model):
    _inherit = 'account.move'

    @api.depends('invoice_line_ids.price_subtotal',
                 'invoice_line_ids.price_total',
     ->          'tax_line_ids.amount',
                 'currency_id', 'company_id')

в файле 1 до сих пор

    @api.model
def tax_line_move_line_get(self):
    res = super(AccountInvoice, self).tax_line_move_line_get()

    done_taxes = []
->  for tax_line in sorted(self.tax_line_ids, key=lambda x: -x.sequence):
        if tax_line.amount and tax_line.tax_id.deduced_account_id:
            tax = tax_line.tax_id
            done_taxes.append(tax.id)
            res.append({
                'invoice_tax_line_id': tax_line.id,
                'tax_line_id': tax_line.tax_id.id,
                'type': 'tax',
                'name': tax_line.name,
                'price_unit': tax_line.amount * -1,
                'quantity': 1,
                'price': tax_line.amount * -1,
                'account_id': tax_line.tax_id.deduced_account_id.id,
                'account_analytic_id': tax_line.account_analytic_id.id,
                'invoice_id': self.id,
                'tax_ids': [(6, 0, done_taxes)]
                if tax_line.tax_id.include_base_amount else []
            })
    return res

другой xml файл

      ->    <field name="tax_line_ids" position="after">
            <group name="documentos_relacionados" string="Documentos Relacionados">
                <field colspan="4" nolabel="1" name="fiscal_document_related_ids">
                    <tree>
                        <field name="document_type"/>
                        <field name="access_key"/>
                        <field name="serie"/>
                        <field name="internal_number"/>
                    </tree>

1 Ответ

1 голос
/ 20 апреля 2020

Поле tax_line_ids больше не доступно.

Если вы проверите коммит , вы увидите, что o.tax_line_ids был заменен на o.line_ids.filtered(lambda line: line.tax_line_id).

  • Попробуйте заменить o.tax_line_ids на o.line_ids.filtered(lambda line: line.tax_line_id) в ваших методах.
  • Заменить tax_line_ids.amount на line_ids.tax_line_id.amount в depends декораторе.
  • Используйте другое поле в определении XML.
...