Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[16.0] Erro no l10n_br_account e Sales #3613

Open
rodmad85 opened this issue Feb 5, 2025 · 9 comments
Open

[16.0] Erro no l10n_br_account e Sales #3613

rodmad85 opened this issue Feb 5, 2025 · 9 comments

Comments

@rodmad85
Copy link
Contributor

rodmad85 commented Feb 5, 2025

Branch 16.0

Conforme teste realizado na Issue #3610 . Verifiquei que mesmo desativando a instalação automática do módulo l10n_br_sale e instalando somente o l10n_br_account, ocorre o seguinte erro ao selecionar um imposto na linha do Pedido de Vendas.

Traceback (most recent call last):
File "/opt/odoo/odoo/odoo/http.py", line 1657, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/odoo/odoo/service/model.py", line 133, in retrying
result = func()
^^^^^^
File "/opt/odoo/odoo/odoo/http.py", line 1685, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/odoo/odoo/http.py", line 1889, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
result = endpoint(**request.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/odoo/odoo/http.py", line 734, in route_wrapper
result = endpoint(self, *args, **params_ok)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/odoo/addons/web/controllers/dataset.py", line 42, in call_kw
return self._call_kw(model, method, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/odoo/addons/web/controllers/dataset.py", line 33, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/odoo/odoo/api.py", line 468, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/odoo/odoo/api.py", line 453, in _call_kw_multi
result = method(recs, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/odoo/odoo/models.py", line 6643, in onchange
if name not in done and snapshot0.has_changed(name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/odoo/odoo/models.py", line 6426, in has_changed
return self[name] != record[name]
~~~~~~^^^^^^
File "/opt/odoo/odoo/odoo/models.py", line 5975, in getitem
return self._fields[key].get(self, self.env.registry[self._name])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/odoo/odoo/fields.py", line 1158, in get
self.recompute(record)
File "/opt/odoo/odoo/odoo/fields.py", line 1370, in recompute
apply_except_missing(self.compute_value, recs)
File "/opt/odoo/odoo/odoo/fields.py", line 1343, in apply_except_missing
func(records)
File "/opt/odoo/odoo/odoo/fields.py", line 1392, in compute_value
records._compute_field_value(self)
File "/opt/odoo/odoo/odoo/models.py", line 4259, in _compute_field_value
fields.determine(field.compute, self)
File "/opt/odoo/odoo/odoo/fields.py", line 98, in determine
return needle(*args)
^^^^^^^^^^^^^
File "/opt/odoo/extra-addons/sale-workflow/sale_discount_display_amount/models/sale_order_line.py", line 52, in _compute_amount
res = super(SaleOrderLine, self)._compute_amount()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/odoo/addons/sale/models/sale_order_line.py", line 626, in _compute_amount
tax_results = self.env['account.tax'].with_company(line.company_id)._compute_taxes(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/odoo/addons/account/models/account_tax.py", line 1126, in _compute_taxes
to_update_vals, tax_values_list = self._compute_taxes_for_single_line(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo/extra-addons/l10n-brazil/l10n_br_account/models/account_tax.py", line 235, in _compute_taxes_for_single_line
fiscal_taxes=line.fiscal_tax_ids,
^^^^^^^^^^^^^^^^^^^
AttributeError: 'sale.order.line' object has no attribute 'fiscal_tax_ids'

The above server error caused the following client error:
null

@rodmad85 rodmad85 added the bug label Feb 5, 2025
@antoniospneto
Copy link
Contributor

O erro parece ser desencadeado por causa do módulo sale_discount_display_amount esse módulo depende do sales, então ele não deveria tá instalado na sua implementação.

@antoniospneto antoniospneto changed the title Erro no l10n_br_account e Sales [16.0] Erro no l10n_br_account e Sales Feb 5, 2025
@antoniospneto
Copy link
Contributor

Obs: se você não quer o módulo sales, seria interessante você nem disponibilizar o addons do sale-workflow na sua implementação.

@rodmad85
Copy link
Contributor Author

rodmad85 commented Feb 5, 2025

No caso eu utilizo este módulo sale_discount_display_amount. Eu teria de fazer uma adaptação e enviar um PR?

@antoniospneto
Copy link
Contributor

antoniospneto commented Feb 5, 2025

@rodmad85 mas ai não faz sentido, você não quer o módulo sales instalado mas quer o módulo sale_discount_display_amount que extende a funcionalidade do sales?

@rodmad85
Copy link
Contributor Author

rodmad85 commented Feb 5, 2025

Eu quero utilizar o modulo Sales sem utilizar o l10n_br_sale. Meu setor de vendas não iria preparar diretamente os dados fiscais p emissão da NFE

@antoniospneto
Copy link
Contributor

antoniospneto commented Feb 5, 2025

@rodmad85 ah acho que agora entendi hehe

você precisa fazer um PR aqui: o l10n_br_account altera o comportamento do modelo account_tax, vai ser necessario
fazer algum tipo de validação ali pra esse compute só funcionar quando for uma linha da fatura, não uma linha de pedido:

File "/opt/odoo/extra-addons/l10n-brazil/l10n_br_account/models/account_tax.py", line 235, in _compute_taxes_for_single_line
fiscal_taxes=line.fiscal_tax_ids,

Edit, talvez apenas verificar se a linha tem um fiscal_tax_ids já resolve, e ai por uma nota: que é para permitir o funcionamaneto quando o l10n_br_sales não tá instalado.

@rvalyi
Copy link
Member

rvalyi commented Feb 5, 2025

vc poderia botar um patch na sua instalação tirando o "auto_install": True aqui: https://github.com/OCA/l10n-brazil/blob/16.0/l10n_br_sale/__manifest__.py#L33

Ou vc consegue viver com um patch local ou pode partir para usar essa ferramenta git-aggregator: https://github.com/acsone/git-aggregator

Porem no geral não pareceria legal tirar o auto_install do l10n_br_sale aqui no projeto pois para 99% do pessoal, o ideal vai ser instalar sim o l10n_br_sale neste tipo de situação e sem o auto_install existira o risco da pessoa esquecer do modulo. Na Akretion estamos com algumas ideias para tornar o l10n_br_sale menos invasivo tb e iremos propor uns PRs neste sentido nas proximas semanas. Ai de repente ele nem iria mais te atrapalhar no seu caso de uso.

@rodmad85
Copy link
Contributor Author

rodmad85 commented Feb 5, 2025

Por enquanto não irei utilizar o l10n_br_account então irei esperar estas atualizações, caso eu precise utilizar antes eu crio um PR aqui. Obrigado a todos!

@mbcosta
Copy link
Contributor

mbcosta commented Feb 6, 2025

@rodmad85 recentemente eu fiz um PR no l10n_br_sale para permitir o uso dos casos Sem Operação Fiscal a alteração especifica é d43c2ee

Image

Então se tiver interesse e disponibilidade você pode ver de ajudar na Revisão do PR ou em outros que buscam essa compatibilidade. Para funcionar de acordo com o que você espera será preciso apagar a Operação Fiscal Padrão de Vendas no cadastro da Empresa, com isso o campo apesar de aparecer no Pedido de Vendas deverá estar vazio ao criar novos Pedidos.

Um contexto sobre o assunto, existe um esforço do projeto para que tanto no l10n_br_sale quanto em outros módulos para que casos de uso semelhantes ao seu sejam compatíveis com a localização desde a v14

Isso é importante para o caso de uso Fora do Brasil que é onde em uma mesma base de dados de multi-empresas existe tanto uma empresa do Brasil e outra(s) de outro país, multi-nacionais, sobre o seu caso é importante você avaliar

Image

OBS.: O módulo que você esta testando é o l10n_br_sale sem S, certo? Porque na v18 a Odoo incluiu no repo deles um módulo l10n_br_sales com S então aqui é importante saber se isso não é algo referente a versão enterprise ou algum módulo pago que não faz parte do projeto, porque se for você vai precisar ver o problema em outro repo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants