{# _preview_rand.html — un singur rand de preview import (US-002, 3.6). Doua moduri: - display (editing falsy): normal + buton "Editeaza" pe coloana de actiuni. - edit (editing truthy): cu un singur ce contine un FORM PROPRIU (NU #confirm-form) cu grila responsiva refolosita din _trimitere_detaliu.html. Swap pe RAND (hx-target pe #preview-row-N, outerHTML), NU pe #import-section (D-3.1). La save, optional OOB pe rezumat + contor "gata de trimis" (include_oob). #} {%- set res = row.resolved -%} {%- set status = row.resolved_status -%} {%- set prestatii = res.get('prestatii') or [] -%} {%- set op = (prestatii[0].get('cod_prestatie') or prestatii[0].get('cod_op_service', '')) if prestatii else '' -%} {% if editing %} {%- set err_map = {} -%} {%- set fix_map = {} -%} {%- for e in row.errors -%}{%- if e is mapping and e.get('field') -%}{%- set _ = err_map.update({e.field: (e.get('message') or e.get('msg'))}) -%}{%- if e.get('fix') -%}{%- set _ = fix_map.update({e.field: e.get('fix')}) -%}{%- endif -%}{%- endif -%}{%- endfor -%}
Editare rand {{ row.row_index + 1 }} {{ status }}
{% if message %} {% endif %} {% macro camp(nume, eticheta, valoare, tip='text') %}
{% if err_map.get(nume) %}
{{ err_map.get(nume) }}
{% endif %} {% if fix_map.get(nume) %} {{ fix_map.get(nume) }} {% endif %}
{% endmacro %}
{{ camp('nr_inmatriculare', 'Numar inmatriculare', res.get('nr_inmatriculare')) }} {{ camp('vin', 'VIN (serie sasiu)', res.get('vin')) }} {{ camp('data_prestatie', 'Data prestatie (YYYY-MM-DD)', res.get('data_prestatie')) }} {{ camp('odometru_final', 'Odometru final', res.get('odometru_final')) }} {{ camp('odometru_initial', 'Odometru initial (daca e cerut)', res.get('odometru_initial')) }}
se salveaza…
{% else %} {%- set disp_fix_map = {} -%} {%- for e in row.errors -%}{%- if e is mapping and e.get('field') and e.get('fix') -%}{%- set _ = disp_fix_map.update({e.field: e.get('fix')}) -%}{%- endif -%}{%- endfor -%} {{ row.row_index + 1 }} {{ res.get('vin') or '' | safe }} {% if disp_fix_map.get('vin') %}{{ disp_fix_map.get('vin') }}{% endif %} {{ res.get('nr_inmatriculare') or '' }} {% if disp_fix_map.get('nr_inmatriculare') %}{{ disp_fix_map.get('nr_inmatriculare') }}{% endif %} {{ res.get('data_prestatie') or '' }} {% if disp_fix_map.get('data_prestatie') %}{{ disp_fix_map.get('data_prestatie') }}{% endif %} {{ res.get('odometru_final') or '' }} {% if disp_fix_map.get('odometru_final') %}{{ disp_fix_map.get('odometru_final') }}{% endif %} {{ op or '' | safe }} {{ status }} {% if status == 'already_sent' and row.get('already_sent_info') %} {% set ai = row.already_sent_info %} deja trimis {{ (ai.get('created_at') or '')[:10] }} {% if ai.get('id_prezentare') %}(#{{ ai.id_prezentare }}){% endif %} {% elif status == 'duplicate_in_file' and row.get('duplicate_with') %} dubla cu randul {% for idx in row.duplicate_with %}{{ idx + 1 }}{% if not loop.last %}, {% endif %}{% endfor %} {% elif row.flags %} {{ row.flags[0] }} {% elif row.errors %} {%- for e in row.errors -%} {%- if e is mapping -%} {{ e.get('message') or e.get('msg') or (e.values() | list | first) }} {%- else -%} {{ e }} {%- endif -%} {%- if not loop.last %}; {% endif -%} {%- endfor -%} {% endif %} {% if status == 'needs_review' %} {% endif %} {% if status not in ('already_sent', 'duplicate_in_file') %} {% endif %} {% if include_oob %} {# OOB: actualizeaza rezumatul si contorul "gata de trimis" dupa save, fara a re-randa sectiunea (D-3.1). #} {% set status_labels = [ ('ok','gata de trimis'), ('needs_review','verifica valori'), ('needs_mapping','fara cod RAR'), ('needs_data','date lipsa'), ('already_sent','deja trimis'), ('duplicate_in_file','dublicat in fisier')] %}
{% for status_key, label in status_labels %} {%- set cnt = summary.get(status_key, 0) -%} {% if cnt > 0 %}{{ cnt }} {{ label }}{% endif %} {% endfor %}
{% endif %} {% endif %}