{% extends "base.html" %} {% set estado_atual = s.estado %} {% set erro = s.ultimo_erro %} {% block titulo %}{{ s.dados.get('sd', 'SD') }} — exportação{% endblock %} {% block conteudo %}

{{ s.dados.get('sd', '(sem identificador)') }} — {{ s.dados.get('titulo', '') }}

Origem: {{ s.nome_arquivo }} · estado: {{ rotulo }} {% if s.exportada_em %} · exportada em {{ s.exportada_em }}{% endif %}

{% if s.pendencias %}

{{ s.pendencias|length }} pendência(s) impedem a exportação. Corrija abaixo e salve — ou edite o SD.md e envie de novo.

{% else %}

Tudo o que a carga exige está presente e fecha: datas, semanas, linha de OS, status e vocabulário. UST, tarifa e valor são calculados pelo sistema na carga. O JSON sai com a estrutura de sempre.

{% endif %}
{% if s.pendencias %} {% endif %} Salvar SD.md…
{% if s.pendencias %}
{% for grupo in formulario %}

{{ grupo.titulo }}

{% for c in grupo.campos %}
{% for m in c.mensagens %}

PENDENTE {{ m }}

{% endfor %} {% if c.controle == 'mensagem' %}

Este conserto é no SD.md: corrija o arquivo e envie de novo.

{% elif c.controle == 'textarea' %} {% elif c.controle == 'select' %} {% else %} {% endif %}
{% endfor %}
{% endfor %}
{% endif %}

O que o JSON vai conter derivado do SD.md

{% set sd = previa.sd or {} %}
Número{{ sd.numero_sequencial }}
Projeto{{ (sd.projeto or {}).codigo }} {{ (sd.projeto or {}).nome }}
PO responsável{{ (sd.po_responsavel or {}).nome or '—' }}
Status da SD{{ sd.status or '—' }}
Período{{ sd.inicio or '—' }} → {{ sd.fim or '—' }}
Itens{{ (sd.itens_contratuais or [])|join(', ') or '—' }}
Entregáveis{{ (previa.entregaveis or [])|length }}
{% for e in previa.entregaveis or [] %} {% endfor %}
nEntregávelTipoItemLinha OS InícioFimDiasSem.Status
{{ e.n }} {{ e.titulo }} {{ e.tipo_entrega }} {{ e.item }} {{ e.ordem_servico.linha or '—' }}{% if e.n in linhas_da_tabela %} tabela{% endif %} {{ e.data_inicio or '—' }} {{ e.data_prevista_termino or '—' }} {% if e.data_inicio and e.data_prevista_termino %}{{ dias(e.data_inicio, e.data_prevista_termino) }}{% else %}—{% endif %} {{ e.numero_semanas if e.numero_semanas is not none else '—' }} {{ e.status or '—' }}

Semanas = max(1, ⌈dias ÷ 7⌉) sobre as datas, teto de 28 dias. UST, tarifa e valor não saem daqui: o sistema os calcula na carga a partir de datas, item e tipo, com as tabelas vigentes. Linha de OS é o linha_os declarado no SD.md; quem confere se a OS e a linha existem é o sistema de gestão, na carga.

{% if linhas_da_tabela %}

tabela {{ linhas_da_tabela|length }} entregável(is) não declaravam linha_os no SD.md: a linha veio de contrato/linhas-os.yaml (atualizada em {{ s.tabela_atualizada_em or 'data não informada' }}), pelo padrão do item. Salvar SD.md… grava essa linha no arquivo, com a origem em comentário — a SD passa a declará-la e a tabela deixa de importar para ela. Se a OS certa for outra, corrija no SD.md.

{% endif %}
{% endblock %}