l10n-brazil
l10n-brazil copied to clipboard
[14.0][BUG] Erros de concorrencia ao transmitir documento fiscais.
Ao transmitir uma NF-e às vezes acontece de falhar, da erro de concorrência no acesso ao banco de dados:
2023-08-11 13:56:01,576 1 ERROR devel odoo.sql_db: bad query: UPDATE "res_partner" SET "write_uid"=61,"write_date"=(now() at time zone 'UTC') WHERE id IN (1, 89085) ERROR: could not serialize access due to concurrent update
2023-08-11 13:56:01,577 1 ERROR devel odoo.sql_db: bad query: UPDATE "res_partner" SET "write_uid"=61,"write_date"=(now() at time zone 'UTC') WHERE id IN (1, 89085) ERROR: could not serialize access due to concurrent update
Mesmo que a gente enfileire o envio das NF-e (transmissão para Sefaz) ainda tem o risco disso acontecer, pois o modelo res_partner
pode estar sendo acessado por outras partes do sistema, pode acontecer com outros modelos também, a ORM desencadeia muitas chamadas ao banco de dados...
Por esse ser um processo bem crítico, perder essas informações dá bastante dor de cabeça para a empresa e para quem está prestando suporte.
Minha sugestão é que para esse processo crítico é deixar de usar qualquer chamada para ORM do Odoo, seja leitura ou gravação, a gente sabe que a ORM facilita bastante o processo, mas ela tende a engorda muito as chamas ao banco de dados, é só ativar os logs que vai ver a imensidão de QUERIES geradas, isso não é legal para um processo crítico como esse.
Fazer com que dentro do método _eletronic_document_send()
seja utilizada apenas queries SQL bem restritas feito a mão.
@mileo @felipezago@ygcarvalh, vocês que estão implementando a NFC-e acho que o problema com isso vai ser ainda maior pra vocês, não ?
O que acham ?
cc @rvalyi @marcelsavegnago @renatonlima @felipemotter