{# _chips_prestatii.html — sectiunea de prestatii chips (E4, server-driven via /form-chips). Re-randata de endpoint-ul /form-chips la fiecare add/remove de chip. Inclusa si din _form_editare.html pentru randarea initiala. Starea chip-urilor traieste in input-uri hidden din form (NU in DB mid-edit). Fiecare operatie are un picker propriu cand e nemapata (E4 binding op<->cod). Reveal odometru initial semnalat prin data-has-r-odo="true" si chip-warn pe R-ODO/I-ODO. Context vars (toate cu defaults): prestatii_chips — list of {cod_prestatie, cod_op_service, denumire} nomenclator_rar — list of {cod_prestatie, nume_prestatie} pentru picker has_r_odo — True daca orice chip e R-ODO sau I-ODO (server-computed) form_chips_url — URL pentru HTMX; default '/form-chips' chips_section_id — ID div (default 'chips-section') csrf_token — CSRF (trecut prin hx-include din form parinte) #} {% set _chips_url = form_chips_url or '/form-chips' %} {% set _sec_id = chips_section_id or 'chips-section' %} {% set _chips = prestatii_chips or [] %} {% set _has_ops = _chips | selectattr('cod_op_service') | list | length > 0 %} {# US-009: chips_submission_id e setat din _detaliu_ctx cand chips sunt randate in modalul de detaliu. Lipseste cand _chips_prestatii.html e rerandat via /form-chips (stateless, fara submission). #} {% set _sub_id = chips_submission_id if chips_submission_id is defined else none %}
{# ===== Input-uri hidden pentru starea curenta a chip-urilor ===== TOATE itemele emit 3 hidden inputs (cod poate fi "" pentru unmapped). Paralele index-by-index: cod_prestatie[i], chip_op_service[i], chip_denumire[i]. Filtrate la submit de post_corectie_trimitere (coduri goale = neschimbate). #} {% for chip in _chips %} {% endfor %}
{% if _has_ops %} {# ===== Mod operatii: UN picker PE operatie (E4 binding) ===== #} {% for chip in _chips %} {% if chip.cod_op_service %} {% set _is_warn = chip.cod_prestatie in ('R-ODO', 'I-ODO') %} {% set _nemapat = not chip.cod_prestatie %}
{{ chip.cod_op_service }} {% if chip.denumire and chip.denumire != chip.cod_op_service %} — {{ chip.denumire }} {% endif %} {% if _nemapat %} · lipsa cod {% endif %} {% if chip.cod_prestatie %} {# ===== Operatie mapata: chip cu × ===== #} {{ chip.cod_prestatie }} {# US-009: "salveaza ca regula op->cod" — apare doar cand submission_id e cunoscut (in modalul de detaliu, nu la re-randarea stateless via /form-chips). Reuse EXACT save_mapping + reresolve_account via endpoint dedicat. hx-include="closest form" propaga csrf_token din form-ul parinte. #} {% if _sub_id and chip.cod_op_service and chip.cod_prestatie %} {% endif %} {% else %} {# ===== Operatie nemapata: picker galben cu "alege cod RAR" ===== #} {% endif %}
{% endif %} {% endfor %} {# ===== US-005 (5.16): Chips extra + picker '+ Adauga alta operatie / cod RAR' in mod operatii ===== #} {# Chips extra: cod_op_service gol, cod_prestatie setat — afisate flat cu × (reuse remove_flat). T-7 (5.16): containerul .chips se randeaza DOAR cand exista chips extra — altfel ramanea un chenar gol nefinisat sub randurile de operatie. #} {% set _extra_chips = _chips | rejectattr('cod_op_service') | selectattr('cod_prestatie') | list %} {% if _extra_chips %}
{% for chip in _extra_chips %} {% set _is_warn_extra = chip.cod_prestatie in ('R-ODO', 'I-ODO') %} {{ chip.cod_prestatie }} {% endfor %}
{% endif %} {% if nomenclator_rar %} {% else %} {# T-D1/T-E5 (5.16): empty state in mod operatii cand nomenclatorul lipseste #}
Nomenclator indisponibil — adaugarea de coduri suplimentare nu e posibila.
{% endif %} {% if chips_extra_error %} {# T-C1/T-E4 (5.16): semnal vizibil cand add_extra are select gol sau cod invalid #} {% endif %} {% else %} {# ===== Mod plat: lista de coduri libere (corectie pura, fara op_service) ===== #}
{% for chip in _chips %} {% if chip.cod_prestatie %} {% set _is_warn_flat = chip.cod_prestatie in ('R-ODO', 'I-ODO') %} {{ chip.cod_prestatie }} {% endif %} {% endfor %} {# Picker adaugare cod nou in mod plat #} {% if nomenclator_rar %} {% else %} {# T-D1/T-E5 (5.16): empty state in mod plat cand nomenclatorul lipseste #}
Nomenclator indisponibil — nu se pot adauga coduri RAR momentan.
{% endif %}
{% endif %} {# Hint discret fara chips (debut) #} {% if not _chips %}
Niciun cod RAR inca — alege din picker (sus) sau adauga prin mapare.
{% endif %}