{# ── Macro moeda BR ── #}
{% macro br(val) %}R$ {{ '%.2f'|format(val|float) | replace('.', ',') }}{% endmacro %}
{# ── Variáveis de apoio ── #}
{% set _desconto_perc = ((desconto_valor / subtotal_venda * 100) if subtotal_venda > 0 and desconto_valor > 0 else 0) %}
{% set _acrescimo_perc = ((acrescimo_valor / subtotal_venda * 100) if subtotal_venda > 0 and acrescimo_valor > 0 else 0) %}
{% set _nome_empresa = (empresa.nome_fantasia or empresa.nome or empresa.razao_social or 'CAPESYSTEM') if empresa else 'CAPESYSTEM' %}
{% set _razao = (empresa.razao_social or empresa.nome or '') if empresa else '' %}
{% set _eh_fiscal = (venda.chave_documento and venda.chave_documento | length == 44) %}
{# ══════════════════════════════════════════════════════
LOGO
══════════════════════════════════════════════════════ #}
{% if empresa and empresa.logo %}
{% if empresa.logo.startswith('data:') %}
{% else %}
{% endif %}
{% endif %}
{# ══════════════════════════════════════════════════════
CABEÇALHO DA EMPRESA
══════════════════════════════════════════════════════ #}
{{ _nome_empresa.upper() }}
{% if _eh_fiscal %}
{# Venda fiscal: mostra razão social, endereço, CNPJ, fone #}
{% if _razao and _razao.upper() != _nome_empresa.upper() %}
{{ _razao }}
{% endif %}
{% if empresa %}
{% set _end = (empresa.logradouro or '') %}
{% set _num = (empresa.numero or '') %}
{% set _bairro = (empresa.bairro or '') %}
{% set _cidade = (empresa.municipio or '') %}
{% set _uf = (empresa.uf or '') %}
{% set _cep_raw = (empresa.cep or '')|replace('.','') | replace('-','') | replace(' ','') %}
{% if _end %}
{% set _cli_nome = venda.get_cliente_nome() if venda.get_cliente_nome else 'Consumidor Final' %}
{% if _cli_nome and _cli_nome not in ('Consumidor Final', 'CONSUMIDOR', '', 'Cliente não informado', 'Cliente nao informado') %}
CLIENTE:
{{ _cli_nome }}
{% if venda.pessoa and venda.pessoa.cpf %}
{% set _cpf = venda.pessoa.cpf | replace('.','') | replace('-','') | replace('/','') %}
{% if _cpf|length == 11 %}
{% set ns = namespace(total_desc=0.0, total_acr=0.0, total_cobrado=0.0) %}
{% for pg in pagamentos %}
{% set _forma = pg.get('forma_nome') or pg.get('forma') or 'Pagamento' %}
{% set _valor = (pg.get('valor') or 0) | float %}
{% set _receb = (pg.get('valor_recebido') or pg.get('valor') or 0) | float %}
{% set _troco = (pg.get('troco') or 0) | float %}
{% set _desc_v = (pg.get('valor_desconto') or pg.get('desconto_valor') or 0) | float %}
{% set _desc_p = (pg.get('desconto_percentual') or 0) | float %}
{% set _acr_v = (pg.get('valor_acrescimo') or pg.get('acrescimo_valor') or 0) | float %}
{% set _acr_p = (pg.get('acrescimo_percentual') or 0) | float %}
{% set _bandei = pg.get('bandeira') or '' %}
{% set _parc = (pg.get('parcelas_qtd') or pg.get('numero_parcelas') or 1) | int %}
{% set _tipo = pg.get('tipo') or '' %}
{% set _eh_cred = (_tipo|lower == 'credito') or ('credito' in (_forma|lower)) or (_bandei != '') or (_parc > 1) %}
{% set _cobrado_raw = (pg.get('valor_pago') or 0) | float %}
{% set _cobrado = _cobrado_raw if _cobrado_raw > 0 else (_valor - _desc_v + _acr_v) %}
{% set ns.total_desc = ns.total_desc + _desc_v %}
{% set ns.total_acr = ns.total_acr + _acr_v %}
{% set ns.total_cobrado = ns.total_cobrado + _cobrado %}