-
-
Notifications
You must be signed in to change notification settings - Fork 284
[16.0][IMP] l10n_br_fiscal_dfe, l10n_br_nfe: refatoração da distribuição DF-e #4383
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
base: 16.0
Are you sure you want to change the base?
Conversation
|
Hi @rvalyi, @renatonlima, @marcelsavegnago, @mileo, |
Resumo técnico das mudanças (oca/16.0 → esta PR)55 arquivos alterados nos módulos
|
| Modelo | O que mudou |
|---|---|
res.company |
Absorveu toda a lógica que antes estava no dfe_monitor. Métodos de distribuição (distDFeInt), consulta específica (consChNFe), download de documento, processamento de XML, criação de registros, e cron. Campos: last_nsu, max_nsu, dfe_last_query, dfe_last_status, dfe_last_status_code, dfe_certificate_id. |
dfe_monitor |
Removido. Toda lógica migrada para res.company. |
dfe_document |
Novo (substituiu dfe_access_key). Agrupa registros DFe pela chave de acesso. Campos computed: emitter, document_amount, document_state, cfop_ids, manifestation_status, color_status, is_own_document. Ações: download XML, DANFE, importar, manifestar. |
document.py |
Removido (modelo antigo). |
dfe |
Refatorado: campos reorganizados, cfop_ids agora é computed stored (extrai CFOPs do XML do attachment automaticamente), campo schema_type adicionado, campo imported_document_id para rastrear importação. |
dfe_distribution_log |
Novo. Registra cada consulta à SEFAZ com timestamp, NSUs (inicial/final/máximo), contagem de documentos e status de resposta. |
nfe_md_event |
Novo. Proxy que herda l10n_br_nfe.md_event para uso interno do módulo. |
Distribuição e processamento
_dfe_process_distribution(): Deduplicação inteligente — por NSU quando válido, poraccess_key + schema_typequando NSU é zero (caso doconsChNFeem homologação).format_nsu(): Corrigido paraNone, string vazia, e valores não-numéricos (antesstr(None)virava"00000000000None").ACCESS_KEY_EXTRACTORS: Dict que extrai chave de acesso de cada tipo de schema (procNFe,resNFe,resEvento,procEventoNFe).- CFOPs: Extraídos automaticamente do XML
procNFevia campo computed stored no modelodfe. Exibidos como tags nas views de documento.
Views e UX
| Componente | Descrição |
|---|---|
| Banner KPI | Cards acima da tree: última consulta, NSU (atual/máximo + badge sync), total de documentos, pendentes de importação. Botões "Search All" e "Specific Search". |
| Tree Documents | Badge de tipo (NF-e Completa / Resumo / Evento), CFOPs como tags, manifestação como badge, botões de ação. Filtro padrão "Third-party" (esconde documentos próprios). |
| Form Documents | create="false", campos readonly, botões de ação no header. |
| Form DFe | create="false". |
| Search | Filtros "Third-party" (padrão) e "Own Documents". |
| Specific Search Wizard | Novo. Permite buscar DF-e por chave de acesso (consChNFe). |
| Distribution Log | Novo. Tree view com log de todas as consultas à SEFAZ. |
| Company Settings | Aba DF-e com campos de configuração (certificado, NSUs, status). |
Dados e segurança
- Cron atualizado: agora chama
res.company._cron_dfe_search_documents(). - Server actions para botões do banner (
action_server_search_all_dfe,action_server_specific_search_dfe). - Regras de acesso para novos modelos (
dfe_document,dfe_distribution_log).
l10n_br_nfe — Módulo NF-e
| O que mudou | Detalhes |
|---|---|
MDE → nfe_md_event |
Modelo mde renomeado para nfe_md_event (l10n_br_nfe.md_event). Views, wizards e menus atualizados. |
| Manifestação | Wizard nfe_md_event_wizard para manifestação do destinatário (confirmação, ciência, desconhecimento, não realizada). |
| DFe removido | Modelos dfe e dfe_access_key do l10n_br_nfe removidos — lógica consolidada no l10n_br_fiscal_dfe. |
| Testes | test_nfe_dfe movido para l10n_br_fiscal_dfe. test_nfe_recipient_manifestation_event atualizado para novos nomes. |
Testes
| Teste | Cobertura |
|---|---|
test_search_dfe_success |
Distribuição com mock SOAP, criação de registros, extração de CFOPs. |
test_search_dfe_error_conditions |
Erro HTTP 500 da SEFAZ. |
test_search_specific_zero_nsu |
consChNFe com NSU zero, dedup por access_key. |
test_zero_nsu_different_documents |
Dois documentos com NSU zero mas schemas diferentes, ambos criados. |
test_cron_search_documents |
Execução do cron. |
test_utils |
format_nsu com None, vazio, não-numérico, zero, normal. |
test_nfe_dfe (4 testes) |
Download XML, download múltiplo, DANFE, distribuição via l10n_br_nfe. |
test_nfe_recipient_manifestation_event |
Manifestação do destinatário. |
Commits
780387fb CristianoMafraJunior - [IMP] l10n_br_fiscal_dfe: DFe implementation
0482aefc CristianoMafraJunior - [REF] l10n_br_nfe: DFe implementation
d7f586cf Raphaël Valyi - [IMP] l10n_br_fiscal_dfe: SOAP with nfelib
70241798 CristianoMafraJunior - [IMP] l10n_br_fiscal_dfe, l10n_br_nfe: update docs and tests
fc663e79 Antônio Neto - [IMP] l10n_br_fiscal_dfe, l10n_br_nfe: consolidate DFe models
99187e05 Felipe Motter - [IMP] l10n_br_fiscal_dfe: migrate DFe monitor to res.company
2a36726e Felipe Motter - [IMP] l10n_br_fiscal_dfe: add tests for DFe distribution
caf3a988 Felipe Motter - [IMP] l10n_br_nfe: move DFe test and update tests
4bd81f1c Felipe Motter - [FIX] l10n_br_fiscal_dfe: use anchor tags for banner buttons
17805816 Felipe Motter - [IMP] l10n_br_fiscal_dfe: compute CFOPs from XML attachment
28439911 Felipe Motter - [IMP] l10n_br_fiscal_dfe: add own document filter and type badge
rvalyi
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Valeu pelo trabalho @felipemotter .
Comentei sobre o test-requirements.txt. Vc tb poderia emendar para não dar commits nos arquivos index.html e README.rst nos varios modulos? Isso parece ser devido a versões diferentes de algumas libs mas não é legal ficar dando commits nesses arquivos ainda em PRS extensos como esse pois acaba ferrando o signal/noise do PR.
test-requirements.txt
Outdated
| odoo-test-helper # Needed by spec_driven_model | ||
| pyopenssl==22.1.0 | ||
| nfelib[soap] @ git+https://github.com/akretion/nfelib@soap-nfe-wip | ||
| brazil-fiscal-client @ git+https://github.com/akretion/brazil-fiscal-client@wrapped-response2 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@felipemotter vc poderia remover o commit desse arquivo? Essas duas branches foram mescladas (pelo menos a parte sobre a DFe a respeito da nfelib e isso a erro no CI no momento...
|
estou ajeitando os commits ainda. tem monte de coisa errada |
Rename dfe_access_key to dfe_document, restructure views, add specific search wizard, fix certificate in SOAP client.
Rename MDE to nfe_md_event, update views and wizards, remove dfe and dfe_access_key models consolidated into l10n_br_fiscal_dfe.
4fecd43 to
cf75d36
Compare
Move distribution logic from standalone dfe.monitor model into res.company, add banner with KPI cards (documents today, NSU, last query, pending import), improve company DF-e tab layout, add own/third-party document filter, compute CFOPs from XML, block manual record creation and remove orphaned files from initial implementation.
Update DFe and MDE tests for the refactored distribution module. Remove orphaned files superseded during refactoring (dfe_access_key, nfe_recipient_manifestation_event model/views/wizards).
1856c2d to
8c15864
Compare
|
Acho que ta ok, vou esperar rolar os testes, @rvalyi @antoniospneto dão um geral ai tambem por favor. PS: Vou colocar prints das views na descrição da PR |
Resumo
Esta PR é uma versão atualizada e consolidada da #4224, com diversas melhorias e correções realizadas desde então. O trabalho envolveu contribuições de múltiplos desenvolvedores ao longo do tempo.
Principais mudanças
Migração do DFe Monitor para
res.company: Toda a lógica de distribuição de DF-e foi migrada do modelodfe_monitorparares.company, simplificando a arquitetura e eliminando um modelo intermediário desnecessário.Consolidação de modelos: Renomeação de
dfe_access_keyparadfe_document, reestruturação de views e menus, e refatoração do modelo MDE paranfe_recipient_manifestation_eventno módulol10n_br_nfe.Uso do cliente SOAP via nfelib: Substituição da implementação SOAP manual pelo cliente da nfelib, simplificando o código e melhorando a manutenibilidade.
Tratamento de NSU zero (
consChNFe): Correção doformat_nsupara valoresNone, vazios e não-numéricos. Implementação de estratégia de deduplicação dupla: por NSU quando válido, poraccess_key + schema_typequando NSU é zero (caso doconsChNFeem homologação).Extração de CFOPs: CFOPs são agora extraídos do XML da NF-e completa (
procNFe) e exibidos nas views de documentos, facilitando a identificação do tipo de operação.Banner KPI na tree de documentos: Adicionado banner com informações da empresa (última consulta, NSU, total de documentos, pendentes de importação) e botões de ação (Pesquisar Todos, Pesquisa Específica) diretamente na tela principal.
Log de distribuição: Novo modelo
dfe.distribution.logpara registrar cada consulta à SEFAZ com status, NSUs e contagem de documentos.Bloqueio de criação manual: Adicionado
create="false"nos form views dos modelosdfe.documentedfepara evitar criação manual de registros.Wizard de pesquisa específica: Wizard para buscar DF-e por chave de acesso (
consChNFe).Testes
Fotos das views:





Testes
format_nsucom casos edge (None, vazio, não-numérico, zero)l10n_br_nfeparal10n_br_fiscal_dfeDependências
Autores