{% extends "base.html" %} {% set perfis_tributarios = perfis_tributarios|default([]) %} {% set perfis_tributarios_lookup = perfis_tributarios_lookup|default({}) %} {% set perfis_sugeridos_por_item = perfis_sugeridos_por_item|default({}) %} {% set analise_cfop_perfis = analise_cfop_perfis|default([]) %} {% set sugestao_xml_por_item = sugestao_xml_por_item|default({}) %} {% block title %}Revisar Importação - NF-e {{ nota.numero_nota }} - Cape System{% endblock %} {% block content %}

Revisar Importação de Nota Fiscal

Voltar
Fluxo sugerido do ERP: conferir a nota, tratar itens, validar custos e então seguir para finalização.
Revise os Dados Importados

A nota fiscal foi importada com sucesso. Revise vínculo de produto, conversão de embalagem, custo rateado, valor de venda e configurações fiscais antes de finalizar. Após a revisão, clique em "Salvar Alterações" para aplicar os ajustes e depois vá para a tela de detalhes para finalizar a entrada.

{% if pendencias %}
Pendências antes de finalizar
    {% for pendencia in pendencias %}
  • {{ pendencia }}
  • {% endfor %}
{% endif %}
{{ status_geral.titulo }}

{{ status_geral.descricao }}

{{ status_geral.codigo|replace('_', ' ')|title }}
{% if indicadores_revisao.itens_com_memoria %}
Memória operacional ativa

O ERP encontrou histórico reaproveitável para {{ indicadores_revisao.itens_com_memoria }} item(ns) desta entrada.

Histórico aplicado ao seu favor {% if indicadores_revisao.itens_memoria_alta_confianca %} {% endif %}
{% endif %}
Pré-preenchimento assistido aplicado

Itens vinculados
{{ indicadores_revisao.itens_vinculados }}
/ {{ indicadores_revisao.total_itens }}
Itens com pendências
{{ indicadores_revisao.itens_com_pendencias }}
Conversão pendente
{{ indicadores_revisao.itens_com_conversao }}
Custo total previsto
R$ {{ "%.2f"|format(indicadores_revisao.custo_total_nota) }}
Dados da Nota Fiscal
Número/Série:
{{ nota.numero_nota }}/{{ nota.serie }}
Chave de Acesso:
{{ nota.chave_acesso[:22] }}...
Fornecedor:
{{ nota.get_fornecedor_nome() }}
Valor Total:
R$ {{ "%.2f"|format(nota.valor_total) }}
{% if fatura_xml or duplicatas_xml %}
Fatura e Duplicatas do XML
{% if fatura_xml %}
Fatura:
{{ fatura_xml.numero or '-' }}
Valor Original:
R$ {{ "%.2f"|format(fatura_xml.valor_original or 0) }}
Desconto:
R$ {{ "%.2f"|format(fatura_xml.valor_desconto or 0) }}
Valor Líquido:
R$ {{ "%.2f"|format(fatura_xml.valor_liquido or 0) }}
{% endif %} {% if duplicatas_xml %}
{% for dup in duplicatas_xml %} {% endfor %}
Duplicata Vencimento Valor
{{ dup.numero or '-' }} {{ dup.vencimento or '-' }} R$ {{ "%.2f"|format(dup.valor or 0) }}
{% endif %}
{% endif %}
Etapa 2 — Tratamento dos Itens

Aqui você faz o trabalho pesado do ERP: vincula produto, ajusta unidade, embalagem, fiscal e preço de venda.

Produtos Importados ({{ nota.itens|length }})
Tratamento em lote
Selecione itens e aplique regras comuns em massa. Bom para ganhar velocidade sem perder o controle.
0 selecionado(s)
Sugestão automática do ERP
Use um item já revisado como referência para replicar o tratamento.
Use o CFOP de compra da nota para separar os itens que ainda estão sem perfil de saída.
O perfil tributário define a tributação de saída do produto.
{% for item in nota.itens %} {% set info_xml = itens_xml.get(loop.index0, {}) %} {% set sugestoes = sugestoes_por_item.get(item.id, []) %} {% set custo_item = custos_por_item.get(item.id) %} {% set pendencias_item = pendencias_por_item.get(item.id, []) %} {% set status_item = status_por_item.get(item.id, {}) %} {% set memorias_item = memoria_por_item.get(item.id, []) %} {% set perfis_item = perfis_sugeridos_por_item.get(item.id, []) %} {% set sugestao_xml_item = sugestao_xml_por_item.get(item.id, {}) %} {% set memoria_item = memorias_item[0] if memorias_item else None %} {% set memoria_confianca = (memoria_item.confianca if memoria_item else 0) %} {% set custo_base_markup = (custo_item.custo_unitario_estoque if custo_item and custo_item.custo_unitario_estoque else item.valor_unitario) %} {% set valor_venda_inicial = item.produto.valor_venda if item.produto and item.produto.valor_venda and item.produto.valor_venda > 0 else ((memoria_item.campos_sugeridos.valor_venda if memoria_item and memoria_item.campos_sugeridos.valor_venda else 0) or (custo_base_markup * 1.3)) %} {% set embalagem_inicial = item.produto.embalagem_id if item.produto and item.produto.embalagem_id else ((memoria_item.campos_sugeridos.embalagem_id if memoria_item else None) or sugestao_xml_item.embalagem_id) %} {% set unidades_embalagem_inicial = item.produto.unidades_por_embalagem if item.produto and item.produto.unidades_por_embalagem and item.produto.unidades_por_embalagem > 1 else ((memoria_item.campos_sugeridos.unidades_por_embalagem if memoria_item and memoria_item.campos_sugeridos.unidades_por_embalagem else 0) or (sugestao_xml_item.fator if sugestao_xml_item and sugestao_xml_item.fator and sugestao_xml_item.fator > 1 else 1)) %} {% endfor %}
Código XML / EAN Descrição / Vinculação Qtd Vlr Compra Vlr Venda / Markup Embalagem / Conversão NCM CEST CFOP CST ICMS
Cód. XML: {{ item.codigo_produto or '-' }} {% if info_xml.codigo_barras_xml and info_xml.codigo_barras_xml != 'SEM GTIN' %}
GTIN XML: {{ info_xml.codigo_barras_xml }} {% elif item.produto and item.produto.codigo_barras %}
EAN: {{ item.produto.codigo_barras }} {% endif %} {% if item.produto and item.produto.codigo_produto %}
Cód. ERP: {{ item.produto.codigo_produto }} {% endif %}
{{ item.descricao[:50] }} {% if item.produto %}
Vinculado: {{ item.produto.nome }} {% if item.produto.codigo_barras %}(EAN: {{ item.produto.codigo_barras }}){% endif %} {% else %}
Novo produto será criado {% endif %}
{% if status_item.icone %} {% endif %}{{ status_item.titulo or 'Sem status' }} {% if pendencias_item %} {{ pendencias_item|length }} pendência(s) {% endif %} {% if custo_item and custo_item.fator_conversao and custo_item.fator_conversao > 1 %} Conversão x{{ custo_item.fator_conversao|formatar_decimal_br(4) }} {% endif %} {% if sugestao_xml_item and sugestao_xml_item.fator and sugestao_xml_item.fator > 1 and sugestao_xml_item.origem == 'xml_tributavel' %} Auto XML x{{ sugestao_xml_item.fator|formatar_decimal_br(4) }} {% elif sugestao_xml_item and sugestao_xml_item.fator and sugestao_xml_item.fator > 1 and sugestao_xml_item.origem == 'descricao_embalagem' %} Auto descrição x{{ sugestao_xml_item.fator|formatar_decimal_br(4) }} {% endif %} {% if item.produto and item.produto.perfil_tributario_id %} Perfil: {{ perfis_tributarios_lookup.get(item.produto.perfil_tributario_id, 'Configurado') }} {% elif perfis_item %} Sugestão CFOP: {{ perfis_item[0].display }} {% endif %} Pré-preenchido pela memória
{% if item.produto %} ✓ Revise o vínculo, embalagem e fiscal antes de finalizar {% else %} ⚠ Selecione um produto ou deixe criar novo {% endif %}
{% if memoria_item %}
Sugestão aprendida
{{ memoria_item.explicacao }} {% if memoria_item.ocorrencias %} • {{ memoria_item.ocorrencias }} ocorrência(s) {% endif %} • confiança {{ "%.0f"|format((memoria_item.confianca or 0) * 100) }}%
{% if memoria_confianca >= 0.85 %}Alta confiança{% elif memoria_confianca >= 0.70 %}Conferir{% else %}Sugestão auxiliar{% endif %} {% if memoria_item.campos_sugeridos.cfop %}CFOP {{ memoria_item.campos_sugeridos.cfop }}{% endif %} {% if memoria_item.campos_sugeridos.cst_icms %}CST {{ memoria_item.campos_sugeridos.cst_icms }}{% endif %} {% if memoria_item.campos_sugeridos.embalagem_id %}Embalagem sugerida{% endif %} {% if memoria_item.campos_sugeridos.unidades_por_embalagem and memoria_item.campos_sugeridos.unidades_por_embalagem > 1 %}Conv. x{{ memoria_item.campos_sugeridos.unidades_por_embalagem|formatar_decimal_br(4) }}{% endif %} {% if memoria_item.campos_sugeridos.markup %}Markup {{ "%.2f"|format(memoria_item.campos_sugeridos.markup) }}%{% endif %}
{% endif %}
XML: {{ info_xml.ucom_xml or item.unidade or '-' }}{% if info_xml.utrib_xml and info_xml.utrib_xml != info_xml.ucom_xml %} / Trib: {{ info_xml.utrib_xml }}{% endif %}
CFOP XML: {{ info_xml.cfop_xml or item.cfop or '-' }}
{% if item.produto %}
Cadastro: {{ item.produto.unidade_comercial or '-' }}
{% endif %} {% if item.produto and item.produto.embalagem %}
Embalagem ERP: {{ item.produto.embalagem.sigla }}{% if item.produto.unidades_por_embalagem and item.produto.unidades_por_embalagem > 1 %} x{{ item.produto.unidades_por_embalagem|int }}{% endif %}
{% endif %} {% if custo_item %}
Custo estoque: R$ {{ custo_item.custo_unitario_estoque|formatar_decimal_br(4) }}
{% endif %}
{{ item.quantidade }} {% if custo_item and custo_item.fator_conversao and custo_item.fator_conversao > 1 %}
Estoque: {{ custo_item.quantidade_estoque|formatar_decimal_br(4) }} {% endif %}
R$ {{ "%.2f"|format(item.valor_unitario) }}
Total: R$ {{ "%.2f"|format(item.valor_total) }} {% if custo_item %}
Unit. estoque: R$ {{ custo_item.custo_unitario_estoque|formatar_decimal_br(4) }} {% endif %}
{% if item.produto %}
R$
Markup %
Markup sobre custo unitário de estoque rateado.
Margem: {% set margem = ((valor_venda_inicial - custo_base_markup) / custo_base_markup * 100) if valor_venda_inicial and custo_base_markup else 0 %} {{ "%.1f"|format(margem) }}%
{% else %} N/A {% endif %}
{% if item.produto %}
1 {{ info_xml.ucom_xml or item.unidade or 'UN' }} =
Quantas unidades internas existem em cada embalagem do XML. Após salvar, os custos são recalculados com esse fator.{% if sugestao_xml_item and sugestao_xml_item.fator and sugestao_xml_item.fator > 1 and sugestao_xml_item.origem == 'xml_tributavel' %} Sugestão automática do XML: {{ sugestao_xml_item.quantidade_documento|formatar_decimal_br(4) }} {{ sugestao_xml_item.unidade_documento or '-' }} = {{ sugestao_xml_item.quantidade_tributavel|formatar_decimal_br(4) }} {{ sugestao_xml_item.unidade_tributavel or '-' }}.{% elif sugestao_xml_item and sugestao_xml_item.fator and sugestao_xml_item.fator > 1 and sugestao_xml_item.origem == 'descricao_embalagem' %} Sugestão automática pela descrição do item/XML: fator x{{ sugestao_xml_item.fator|formatar_decimal_br(4) }}.{% endif %} {% else %} Vincule o item primeiro {% endif %}
{% if item.produto %} {% else %} {{ item.ncm or '-' }} {% endif %} {% if item.produto %} {% else %} {{ info_xml.cest_xml or '-' }} {% endif %} {% if item.produto %} {% else %} {{ item.cfop or '-' }} {% endif %} {% if item.produto %} {% else %} {{ item.produto.cst_icms or '-' }} {% endif %}
{% if pendencias_item %}
{{ status_item.titulo or 'Pendências do item' }}: {% if status_item.descricao %}
{{ status_item.descricao }}
{% endif %}
    {% for pendencia in pendencias_item %}
  • {{ pendencia.mensagem }}
  • {% endfor %}
{% endif %}
{% if perfis_item %} CFOP {{ info_xml.cfop_xml or item.cfop or '-' }} sugere: {{ perfis_item|map(attribute='display')|join(', ') }} {% else %} Associe aqui o perfil que governará a tributação de saída deste produto. {% endif %}
ICMS: {{ info_xml.csosn_xml or info_xml.cst_icms_xml or '-' }} | PIS: {{ info_xml.cst_pis_xml or '-' }} | COFINS: {{ info_xml.cst_cofins_xml or '-' }}{% if info_xml.cest_xml %} | CEST: {{ info_xml.cest_xml }}{% endif %}{% if info_xml.ucom_xml %} | UN XML: {{ info_xml.ucom_xml }}{% endif %}
{% if resumo_custos and resumo_custos.itens %}
Etapa 3 — Prévia de Custo e Conversão da Entrada
{% for custo in resumo_custos.itens %} {% set pendencias_item_custo = pendencias_por_item.get(custo.item_id, []) %} {% endfor %}
Item Qtd XML Qtd Estoque Custo XML Custo Estoque Custo Total Situação
{{ custo.descricao }} {% if custo.fator_conversao and custo.fator_conversao > 1 %}
{{ custo.quantidade_documento|formatar_decimal_br(4) }} {{ custo.unidade_documento or '-' }} → {{ custo.quantidade_estoque|formatar_decimal_br(4) }} {{ custo.unidade_estoque or '-' }} {% endif %}
{{ custo.quantidade_documento|formatar_decimal_br(4) }} {{ custo.quantidade_estoque|formatar_decimal_br(4) }} R$ {{ custo.custo_unitario_documento|formatar_decimal_br(4) }} R$ {{ custo.custo_unitario_estoque|formatar_decimal_br(4) }} R$ {{ "%.2f"|format(custo.custo_total_item) }} {% if pendencias_item_custo %} {{ pendencias_item_custo|length }} pend. {% else %} Pronto {% endif %}
{% endif %}
O que validar nesta etapa
  • Custo ERP: confira o custo unitário de estoque já com rateios
  • Venda: use markup sobre o custo real, não só sobre o valor do XML
  • Conversão: se a quantidade de estoque estiver diferente da quantidade do XML, confirme o fator
  • Margem: deixe uma margem saudável antes de prosseguir para o fechamento
Etapa 4 — Fechamento da Revisão
Status da Nota

{{ status_geral.titulo }}

{{ status_geral.descricao }}

Checklist ERP
  • Itens vinculados: {{ indicadores_revisao.itens_vinculados }}/{{ indicadores_revisao.total_itens }}
  • Itens com pendência: {{ indicadores_revisao.itens_com_pendencias }}
  • Conversões pendentes: {{ indicadores_revisao.itens_com_conversao }}
  • Custo total previsto: R$ {{ "%.2f"|format(indicadores_revisao.custo_total_nota) }}
Dicas de Revisão:
  • Valor de Venda: Ajuste o preço que será praticado na revenda deste produto
  • Markup: Digite o percentual e o sistema recalcula o valor de venda sugerido com base no custo unitário de estoque
  • Código XML: É o código do fornecedor na NF-e; o produto novo passa a seguir a sequência interna do ERP
  • Financeiro: As duplicatas destacadas na NF-e já aparecem acima para conferência antes de gerar o contas a pagar
  • Embalagem: Compare unidade do XML com a unidade/embalagem do cadastro para evitar conversão errada
  • Bloqueio ERP: se houver pendências críticas, o sistema não deixará finalizar a entrada
Cancelar
{% if status_geral.pronto_para_finalizar %} Ir para Finalização {% else %} Ver Detalhes da Entrada {% endif %}
{% endblock %}