{% extends "base.html" %} {# ATUALIZADO 2026-01-16 - Código automático e campos fiscais visíveis #} {% block title %}{{ 'Novo Produto' if not produto else 'Editar Produto' }} - CapeSystem{% endblock %} {% block extra_css %} {% endblock %} {% block content %}

{{ 'Novo Produto' if not produto else 'Editar: ' + produto.nome }}

Pendências obrigatórias do cadastro
    Mesmo NCM encontrado em outro produto
    Informações Básicas
    {% if produto and produto.id %} {% endif %} {% if produto and produto.id %} ID interno: {{ produto.id }} Código imutável após o cadastro {% elif not produto %} Código gerado ao salvar {% endif %}
    {% if not produto.codigo_barras %} Sem código {% endif %}
    Usada na etiqueta e no ranking por cota
    PNG/JPG/WebP • recorte central automático + redimensionamento para 640x640
    Prévia da imagem do produto
    Preços e Custos
    dias antes
    Alertar quando o lote estiver a X dias do vencimento
    {% if produto and produto.id %} {% endif %}
    Estoque

    Aqui ficam os saldos, a embalagem consolidada e o resumo multiloja.

    {% if empresa_atual_nome %} Empresa ativa: {{ empresa_atual_nome }} {% endif %}
    Proteção de rotina: o saldo do produto está em modo somente leitura no cadastro. Entradas, saídas, ajustes, histórico e auditoria ficam centralizados em Estoque > Controle de Estoque.
    UN
    Somente leitura no cadastro do produto.
    -
    UN
    {% if produto %}
    Estoque por Empresa (Multiloja)
    Auditoria disponível no menu Estoque
    UN
    {% if estoque_empresas_detalhes %}
    {% for item in estoque_empresas_detalhes %} {% endfor %}
    Empresa Quantidade
    {{ item.empresa_nome }} {% if empresa_id_atual and item.empresa_id == empresa_id_atual %} Ativa {% endif %} {{ '%.3f'|format(item.quantidade or 0) }}
    {% endif %} {% if estoque_sem_detalhe_multiloja %}
    Esta empresa ainda não possui detalhamento em produto_estoque para este produto. O sistema não reaproveita o saldo legado compartilhado no modo multiloja para evitar exibir quantidade incorreta.
    {% elif estoque_origem_legado %}
    Saldos exibidos com base no estoque legado do produto (sem estrutura completa em produto_estoque).
    {% endif %}
    {% endif %}
    Tabelas de Preço

    Área dedicada para configurar preços fixos e regras automáticas sem empurrar o cadastro para baixo.

    Gerenciar Tabelas

    Configure o preço deste produto apenas nas tabelas da empresa padrão do sistema.

    {% if empresa_tabelas_preco_id %}
    Empresa usada para estas tabelas: {{ empresa_tabelas_preco_nome or ('Empresa ' ~ empresa_tabelas_preco_id) }}
    Empresa padrão do sistema
    {% endif %} {% if tabelas_preco %}
    {% for tabela in tabelas_preco %} {% set is_calculado = tabela.tipo_calculo in ['percentual_aumento', 'percentual_desconto'] %} {% set row_class = 'table-light' %} {% if tabela.tipo_calculo == 'percentual_desconto' %} {% set row_class = 'table-success' %} {% elif tabela.tipo_calculo == 'percentual_aumento' %} {% set row_class = 'table-danger' %} {% elif tabela.tipo_calculo == 'fixo' %} {% set row_class = 'table-primary' %} {% endif %} {% set preco_calculado = tabela.get_preco_produto(produto.id, produto.valor_venda) if produto else None %} {% endfor %}
    Tabela Cálculo Preço (R$) Preço Mínimo Ativo
    {{ tabela.nome }}
    {{ tabela.codigo }}
    Empresa padrão
    {% if is_calculado %} {% if tabela.tipo_calculo == 'percentual_desconto' %} Desconto {{ tabela.percentual_ajuste }}% {% else %} Acréscimo {{ tabela.percentual_ajuste }}% {% endif %}
    {% if tabela.tabela_base %} Base: {{ tabela.tabela_base.nome }} {% else %} Base: preço base do produto {% endif %}
    Automático {% else %} Preço Fixo
    Editado manualmente neste produto {% endif %}
    {% if is_calculado %}
    Valor calculado automaticamente {% else %} {% endif %}
    {% if is_calculado %} {% else %} {% endif %} {% if is_calculado %} {% else %} {% endif %}
    Preço Fixo: valor digitado manualmente no produto. Desconto: reduz automaticamente o preço com base em outra tabela. Acréscimo: aumenta automaticamente o preço com base em outra tabela.
    {% else %}
    Nenhuma tabela de preço cadastrada. Criar primeira tabela
    {% endif %}
    Perfil Tributário - Configure uma vez, reutilize sempre!
    Escolha um perfil pronto para preencher automaticamente os campos fiscais. Gerenciar perfis
    Selecione um perfil para ver o resumo
    Classificação Fiscal (Individual do Produto)
    8 dígitos
    7 dígitos
    Do CFOP
    {{ produto.unidade_comercial or 'UN' if produto else 'UN' }}
    Definida automaticamente pela embalagem
    💰 ICMS
    🏭 IPI
    🔴 FCP
    💰 PIS/COFINS
    Consulte seu contador para preencher as informações tributárias.
    Reforma Tributária (NT 2025.002) - Novos tributos IBS, CBS e IS que substituirão ICMS, ISS, PIS e COFINS a partir de 2026. Configurar Alíquotas
    CST IBS/CBS
    ICMS da empresa continua separado: Simples usa CSOSN e regime normal usa CST. Aqui é somente RTC / IBS-CBS.
    Alíquotas Específicas do Produto
    Deixe em branco para usar as alíquotas padrão do ano fiscal. Preencha apenas se este produto tiver alíquota diferenciada.
    IBS = Estados + Municípios
    CBS = União (substitui PIS/COFINS)
    Imposto Seletivo (IS)
    O IS incide sobre produtos nocivos à saúde e meio ambiente: bebidas alcoólicas, tabaco, bebidas açucaradas, veículos, embarcações, aeronaves e bens minerais.
    Regimes Especiais
    Código de benefício fiscal específico do LC 214/2025
    REFORMA TRIBUTÁRIA - PREVISÃO E VALIDAÇÃO DESDE 01/01/2026
    Prévia do perfil selecionado:
    • IBS UF: 0,00%
    • IBS Mun: 0,00%
    • CBS: 0,00%
    • Total RTC 2026: 0,00%
    Valores exibidos conforme o perfil tributário selecionado nesta tela.
    Referência interna para 2033:
    • IBS: 17,7% (UF+Mun)
    • CBS: 8,8%
    • Total: 26,5%
    Referência padrão interna, sujeita à configuração da empresa e à legislação aplicável.
    Cronograma de referência:
    • PIS/COFINS: 2027
    • ICMS: 2033
    • ISS: 2033
    Resumo visual para conferência; use a configuração fiscal da empresa como fonte operacional.
    Validação fiscal desde 01/01/2026: os campos e grupos de IBS/CBS/IS passaram a ser validados no XML. A geração e o cálculo efetivo dependem da configuração da empresa, do produto e/ou do perfil tributário selecionado.
    Pesos e Dimensões
    Vinculações
    {% if is_multi_empresa() %}
    Opcional - vincule o produto a uma empresa específica
    {% else %} {% endif %}
    {% if produto and produto.tipo_produto == 'variacao_filho' and produto.produto_pai %} Variação de: {{ produto.produto_pai.nome }} {% endif %}
    Variações do Produto
    Nova Variação
    {% if produto and produto.tipo_produto == 'variacao_pai' %}
    Produto Pai: Este produto não pode ser vendido diretamente. Use as variações abaixo para controlar estoque e vender.
    {% if produto.variacoes %}
    {% for variacao in produto.variacoes %} {% endfor %}
    Variação SKU Código Barras Preço Estoque Status Ações
    {{ variacao.nome }} {% set attrs = variacao.get_atributos_variacao() %} {% if attrs %}
    {% for k, v in attrs.items() %} {{ k }}: {{ v }} {% endfor %} {% endif %}
    {{ variacao.codigo_produto or '-' }} {{ variacao.codigo_barras or '-' }} R$ {{ '%.2f'|format(variacao.valor_venda or 0) }} {% if variacao.estoque_atual and variacao.estoque_atual > 0 %} {{ variacao.estoque_atual }} {% else %} 0 {% endif %} {% if variacao.ativo %} Ativo {% else %} Inativo {% endif %}
    {% else %}

    Nenhuma variação cadastrada

    Clique em "Nova Variação" para criar
    {% endif %} {% else %}

    Salve o produto primeiro para adicionar variações.

    {% endif %}
    Itens do {{ 'Kit' if produto and produto.tipo_produto == 'kit' else 'Combo' }}

    Ao vender este {{ 'kit' if produto and produto.tipo_produto == 'kit' else 'combo' }}, o estoque dos itens abaixo será automaticamente baixado.

    {% if produto and produto.combo_itens %} {% for item in produto.combo_itens %} {% endfor %} {% endif %}
    Produto Quantidade Estoque Atual Ações
    {{ item.produto.estoque_atual|default(0, true)|round(2) }}
    {% if not produto %}
    Salve o produto primeiro para adicionar itens ao combo.
    {% endif %}
    Configurações
    {% if contas_estoque or contas_cmv or contas_receita %}
    Configuração Contábil (Opcional - herda do grupo se vazio)
    {% set grupo_info = produto.grupo if produto and produto.grupo else None %} {% if grupo_info and (grupo_info.conta_estoque_id or grupo_info.conta_cmv_id or grupo_info.conta_receita_id) %}
    Herdando do grupo "{{ grupo_info.nome }}": {% if grupo_info.conta_estoque and grupo_info.conta_estoque_id %} Estoque: {{ grupo_info.conta_estoque.codigo }} {% endif %} {% if grupo_info.conta_cmv and grupo_info.conta_cmv_id %} | CMV: {{ grupo_info.conta_cmv.codigo }} {% endif %} {% if grupo_info.conta_receita and grupo_info.conta_receita_id %} | Receita: {{ grupo_info.conta_receita.codigo }} {% endif %}
    {% endif %}
    Ativo: onde o estoque é registrado
    Custo da Mercadoria Vendida
    Receita de venda
    CMV Automático: Ao confirmar uma venda, o sistema gera automaticamente o lançamento contábil de CMV (D: CMV / C: Estoque) baseado no custo médio do produto.
    {% endif %}
    Embalagens de Venda

    Configure múltiplas embalagens para venda (ex: Unidade, Caixa c/6, Fardo c/12). Cada embalagem pode ter seu próprio preço e código de barras.

    {% if produto and produto.embalagens %} {% for pe in produto.embalagens %}
    x
    R$
    {% endfor %} {% endif %}
    {% if not produto or not produto.embalagens %}

    Nenhuma embalagem configurada

    Clique em "Adicionar Embalagem" para configurar
    {% endif %}
    Promoções (apenas para produtos)
    Quantidade que o cliente paga
    Quantidade que o cliente leva
    Deixe vazio = sem limite
    Quantidade mínima
    % ou R$ conforme tipo
    Deixe vazio = sem limite
    {% if MODULO_FOOD_HABILITADO %}
    {% set guarnicoes_cfg = produto.get_guarnicoes_config_food() if produto else {'produto_ids': [], 'opcoes_legadas': [], 'maximo': 0} %} {% set guarnicoes_ids_selecionadas = guarnicoes_cfg.get('produto_ids', []) %} {% set guarnicoes_legadas = guarnicoes_cfg.get('opcoes_legadas', []) %} {% set guarnicoes_limite = guarnicoes_cfg.get('maximo') or (guarnicoes_ids_selecionadas|length if guarnicoes_ids_selecionadas else guarnicoes_legadas|length) %}
    Configurações Food (Bar/Restaurante)
    Parâmetros para PDV Food
    Exibe este produto no cardápio do Food
    Envia para impressora da produção
    minutos
    Tempo estimado de preparo
    Para onde o pedido é enviado (Cozinha, Bar, Churrasqueira...)
    opções
    Quantas guarnições o garçom pode marcar nesse item.
    {% if guarnicoes_food_disponiveis %} {% for item in guarnicoes_food_disponiveis %} {% endfor %} {% else %}
    Nenhuma guarnição Food cadastrada ainda. Cadastre produtos com o tipo Guarnição Food para vinculá-los aqui.
    {% endif %}
    Na operação, o Food só exibe guarnições ativas e com saldo disponível em estoque.
    {% if guarnicoes_legadas %}
    Cadastro legado preservado: estas opções antigas continuam guardadas até a migração completa para guarnições por produto.
    {% for nome in guarnicoes_legadas %} {{ nome }} {% endfor %}
    {% endif %}
    Dica: Configure os setores de produção em Food → Configurar Mesas. Produtos com "Imprime na Cozinha" ativo serão impressos automaticamente ao serem adicionados à comanda.
    {% endif %}
    {% if produto %} Duplicar {% endif %}
    Cancelar
    {% endblock %}