{% extends 'role/user/ticket/index.html.twig' %}
{% block title %}Ticket - Lista{% endblock %}
{% block pageTitleH1 %}Ticket - Lista{% endblock %}
{% block pageTitleBreadcrumb %}
<li class="breadcrumb-item"><a href="{{ path ('user_tickets') }}">Ticket</a></li>
<li class="breadcrumb-item"><a href="javascript:void(0)">Lista</a></li>
{% endblock %}
{% block subMenuLeft %}
<li class="nav-item"><a class="nav-link" href="{{ path ('user_index') }}">Scrivania</a></li>
{% endblock %}
{% block subMenuRight %}
{% if app.user.getAccountTypology == 'agency' %}
<li class="nav-item"><a class="nav-link" href="{{ path('user_ticket_download_email') }}">Scarica da email</a></li>
{% if TICKET_DOWNLOAD_FROM_OTHER %}<li class="nav-item"><a class="nav-link" href="{{ path('user_ticket_download_email_other') }}">Scarica da email "Altro"</a></li>{% endif %}
{% endif %}
{% endblock %}
{% block content %}
<section class="m_tb_50p p_lr_30p">
<div class="row">
<div class="col-12">
<h3 class="form_title">Ticket</h3>
<hr class="m_t_none">
</div>
{% if app.user.getAccountTypology == 'agency' %}
{# Agenzia #}
<div class="col-12">
<div class="tabs clearfix">
<ul class="tab-nav clearfix">
<li>
<a id="btn_tab_error" href="#error" class="tab_session" data-filterTab="error">
<span class="font_16 d-block d-lg-none" data-bs-toggle="tooltip" title="Con errori"><i class="icon-warning-sign font_20"></i>{{ errorTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Con errori ({{ errorTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_to_assign" href="#toAssign" class="tab_session" data-filterTab="to_assign">
<span class="font_16 d-block d-lg-none" data-bs-toggle="tooltip" title="Da assegnare"><i class="icon-pencil-alt font_20"></i>{{ toAssignTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Da assegnare ({{ toAssignTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_assigned" href="#assigned" class="tab_session" data-filterTab="assigned">
<span class="font_16 d-block d-lg-none" data-bs-toggle="tooltip" title="Assegnati"><i class="icon-tag font_20"></i>{{ assignedTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Assegnati ({{ assignedTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_taken_charge" href="#takenCharge" class="tab_session" data-filterTab="taken_charge">
<span class="font_16 d-block d-lg-none" data-bs-toggle="tooltip" title="Presi in carico"><i class="icon-cog font_20"></i>{{ takenChargeTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Presi in carico ({{ takenChargeTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_suspension_request" href="#suspensionRequest" class="tab_session" data-filterTab="suspension_request">
<span class="font_16 d-block d-lg-none" data-bs-toggle="tooltip" title="Richiesta sospensione"><i class="icon-clock font_20"></i>{{ suspensionRequestTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Richiesta sospensione ({{ suspensionRequestTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_suspended" href="#suspended" class="tab_session" data-filterTab="suspended">
<span class="font_16 d-block d-lg-none" data-bs-toggle="tooltip" title="Sospesi"><i class="icon-clock font_20"></i>{{ suspendedTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Sospesi ({{ suspendedTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_closed" href="#closed" class="tab_session" data-filterTab="closed">
<span class="font_16 d-block d-lg-none" data-bs-toggle="tooltip" title="Chiusi"><i class="icon-check font_20"></i>{{ closedTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Chiusi ({{ closedTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_closed_on_portal" href="#closedPortal" class="tab_session" data-filterTab="closed_on_portal">
<span class="font_16 d-block d-lg-none" data-bs-toggle="tooltip" title="Chiusi su fornitore"><i class="icon-checkmark font_20"></i>{{ closedPortalTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Chiusi su fornitore ({{ closedPortalTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_canceled" href="#canceled" class="tab_session" data-filterTab="canceled">
<span class="font_16 d-block d-lg-none" data-bs-toggle="tooltip" title="Annullati"><i class="icon-minus-sign font_20"></i>{{ canceledTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Annullati ({{ canceledTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_wrong" href="#wrong" class="tab_session" data-filterTab="wrong">
<span class="font_16 d-block d-lg-none" data-bs-toggle="tooltip" title="Errati"><i class="icon-remove-sign font_20"></i>{{ wrongTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Errati ({{ wrongTickets.getTotalItemCount }})</span>
</a>
</li>
</ul>
<div class="tab-container">
{# Con errori #}
<div class="tab-content clearfix" id="error">
<div class="row">
<div class="col-12">
<a id="button_0_wrong" href="javascript: void()" class="button button-3d button-mini button-grey f_right m_b_10p">Errato</a>
</div>
<div class="col-12 overflow_a">
<table class="table table-bordered table-hover font_12">
<thead>
<tr>
<form method="get" action="{{ path ('user_ticket_list') }}" id="formFilter_0">
<td class="td_action"><a href="{{ path ('remove_filter', {'route':app.request.attributes.get('_route'), 'route_params':app.request.attributes.get('_route_params') }) }}" class="f_right" data-bs-toggle="tooltip" title="Escludi filtro"><img class="icon_red" src="{{ asset (icon_delete) }}"></a></td>
<td><input type="text" class="form-control" inputmode="search" name="number" value="{{ filters.number|default() }}" id="input_number_0" data-bs-toggle="tooltip" title="Puoi effettuare ricerche multiple inserendo valori separati da virgola [Es. 1234,5678,901]"/></td>
<td><input type="text" class="form-control" inputmode="search" name="termid" value="{{ filters.termid|default() }}" id="input_termid_0" data-bs-toggle="tooltip" title="Puoi effettuare ricerche multiple inserendo valori separati da virgola [Es. 1234,5678,901]"/></td>
{% if global_company.actualCompany.tagTicketActive %}<td><input type="text" class="form-control" id="filter_tag_value_0" readonly onClick="filterTags0()" data-bs-toggle="tooltip"/><input type="hidden" id="filter_tag_id_0" name="tag" value="{{ filters.tag|default() }}"/></td>{% endif %}
<td><input type="text" class="form-control" inputmode="search" name="client" value="{{ filters.client|default() }}"/></td>
<td><input type="text" class="form-control" id="filter_operation_value_0" readonly onClick="filterOperations0()" data-bs-toggle="tooltip"/><input type="hidden" id="filter_operation_id_0" name="operation" value="{{ filters.operation|default() }}"/></td>
<td><input type="text" class="form-control" id="filter_supplier_value_0" readonly onClick="filterSuppliers0()" data-bs-toggle="tooltip"/><input type="hidden" id="filter_supplier_id_0" name="supplier" value="{{ filters.supplier|default() }}"/></td>
<td><input type="text" class="form-control" inputmode="search" name="tariff" value="{{ filters.tariff|default() }}"/></td>
<td><input type="text" class="form-control" inputmode="search" name="city" value="{{ filters.city|default() }}"/></td>
<td><input type="text" class="form-control" inputmode="search" name="province" value="{{ filters.province|default() }}"/></td>
<td><input type="text" class="form-control daterange font_12" id="daterange_0" inputmode="search" autocomplete="off" name="datetimeStart" style="height: 38px" date-filter="range"/></td>
<td colspan="2"><button type="submit" class="btn bg_w f_left p_0p" data-bs-toggle="tooltip" title="Filtra"><img class="icon_action icon_green" src="{{ asset (icon_search) }}"></button></td>
<input id="sort_field_0" type="hidden" name="sortField" value="{{ filters.sortField|default() }}"/>
<input id="sort_order_0" type="hidden" name="sortOrder" value="{{ filters.sortOrder|default() }}"/>
</form>
</tr>
<tr class="bg_pr color_w">
<th class="td_action txt_a_c">
<div class="switch" data-bs-toggle="tooltip" title="Seleziona tutti">
<input id="ticket_0_all_checkboxes" class="switch-toggle switch-flat-mini switch-toggle-flat" type="checkbox" onChange="javascript: selectAll(0)">
<label for="ticket_0_all_checkboxes" class="m_b_none"></label>
</div>
</th>
<th class="td_w_120p">N°<button type="button" onClick="setOrderBy0('t.number')" data-orderField="t.number" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_120p">Termid<button type="button" onClick="setOrderBy0('tt.code')" data-orderField="tt.code" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
{% if global_company.actualCompany.tagTicketActive %}<th class="td_w_100p">Tag</th>{% endif %}
<th class="td_w_200p">Cliente<button type="button" onClick="setOrderBy0('c.nickname')" data-orderField="c.nickname" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_150p">Operazione <i style="font-weight:400">(Dettagli)</i><button type="button" onClick="setOrderBy0('o.value')" data-orderField="o.value" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_130p">Fornitore <i style="font-weight:400">(SLOT)</i><button type="button" onClick="setOrderBy0('s.name')" data-orderField="s.name" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_130p">Tariffa<button type="button" onClick="setOrderBy0('ot.value')" data-orderField="ot.value" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_130p">Città<button type="button" onClick="setOrderBy1('t.idCity')" data-orderField="t.idCity" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_70p txt_a_c">Prov<button type="button" onClick="setOrderBy1('t.idProvince')" data-orderField="t.idProvince" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_140p">Data/Ora ricezione<button type="button" onClick="setOrderBy0('t.datetimeStart')" data-orderField="t.datetimeStart" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th>Descrizione errore</th>
<th></th>
</tr>
</thead>
<tbody>
{% if errorTickets|length > 0 %}
{% for ticket in errorTickets %}
<tr>
<td class="td_w_30p">
<div class="switch">
<input id="ticket_checkbox_{{ ticket.id }}" class="switch-toggle switch-flat-mini switch-toggle-flat ticket_0_checkbox" type="checkbox" value="{{ ticket.id }}" onChange="javascript: updateButtons(0)">
<label for="ticket_checkbox_{{ ticket.id }}" class="m_b_none"></label>
</div>
</td>
<td id="ticket_number_{{ ticket.id }}">{{ ticket.number }}</td>
<td id="ticket_termid_{{ ticket.id }}">{{ ticket.termid }}</td>
{% if global_company.actualCompany.tagTicketActive %}<td id="ticket_tags_{{ ticket.id }}">{{ ticket.displayTags('icon')|raw }}</td>{% endif %}
<td id="ticket_client_{{ ticket.id }}">{{ ticket.client }}</td>
<td id="ticket_operation_{{ ticket.id }}">
{% if ticket.operation is not null %}
{{ ticket.operation.value }}
{% if ticket.operation.getKeyValueByValue('Dettagli operazione') and ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('Dettagli operazione')) != null %}
<br><i>({{ ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('Dettagli operazione')) }}
{% if ticket.operation.getKeyValueByValue('Cluster') and ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('Cluster')) != null %}
Cluster {{ ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('Cluster'))}}
{% endif %}
)</i>
{% endif %}
{% else %}
Operazione non riconosciuta
{% endif %}
</td>
<td id="ticket_supplier_{{ ticket.id }}">
{% if ticket.operation is not null %}
{{ ticket.operation.supplier }}{% if ticket.displayJsonValueByColumn('SLOT') != null %}<br><i>({{ ticket.displayJsonValueByColumn('SLOT') }})</i>{% endif %}
{% else %}
Fornitore non riconosciuto
{% endif %}
</td>
<td>{% if ticket.operationTariffAmount != null %}{{ ticket.operationTariffAmount.value|default() }}{% endif %}</td>
<td>{% if ticket.idCity != null %}{{ ticket.idCity|translate_city_only }}{% endif %}</td>
<td class="txt_a_c">{% if ticket.idProvince != null %}{{ ticket.idProvince|translate_province_sign }}{% endif %}</td>
<td>{% if ticket.datetimeStart != null %}{{ ticket.datetimeStart|date('d-m-Y H:i') }}{% else %}---{% endif %}</td>
<td>{{ ticket.systemErrorDetails|raw }}</td>
<td class="td_action"><a href="{{ path ('user_ticket_sheet', {'ticketId':ticket.id}) }}"><img class="icon_pr" data-bs-toggle="tooltip" title="Scheda" src="{{ asset(icon_sheet) }}"></a></td>
</tr>
{% endfor %}
{% else %}
{% include 'components/twig/notice_filter_no_match.html.twig' %}
{% endif %}
</tbody>
</table>
</div>
</div>
</div>
{# To assign #}
<div class="tab-content clearfix" id="toAssign">
{% set tickets = toAssignTickets %}
{% set number = 1 %}
{% set multipleSelection = [true, 1, ['print', 'assign', 'suspend', 'cancel', 'export']] %}
{% set hasEmailTakeCharge = false %}
{% set tabOpenValue = 'to_assign' %}
{% set tab = 'toAssign' %}
{% block ticketsTab %}
<div class="row">
<div class="col-12">
{% if multipleSelection[0] %}
{% if 'assign' in multipleSelection[2] %}<a id="button_{{ multipleSelection[1] }}_assign" href="javascript: void()" class="button button-3d button-mini button-grey f_right m_b_10p">Assegna a tecnico</a>{% endif %}
{% if 'change' in multipleSelection[2] %}<a id="button_{{ multipleSelection[1] }}_change" href="javascript: void()" class="button button-3d button-mini button-grey f_right m_b_10p">Cambia tecnico</a>{% endif %}
{% if 'print' in multipleSelection[2] %}<a id="button_{{ multipleSelection[1] }}_print" href="javascript: void(0)" class="button button-3d button-mini button-grey f_right m_b_10p">Stampa</a>{% endif %}
{% if 'suspend' in multipleSelection[2] %}<a id="button_{{ multipleSelection[1] }}_suspend" href="javascript: void(0)" class="button button-3d button-mini button-grey f_right m_b_10p">Sospendi</a>{% endif %}
{% if 'suspend_end' in multipleSelection[2] %}<a id="button_{{ multipleSelection[1] }}_suspend_end" href="javascript: void(0)" class="button button-3d button-mini button-grey f_right m_b_10p">Sblocca sospensione</a>{% endif %}
{% if 'approve' in multipleSelection[2] %}<a id="button_{{ multipleSelection[1] }}_approve" href="javascript: void(0)" class="button button-3d button-mini button-grey f_right m_b_10p">Approva sospensione</a>{% endif %}
{% if 'cancel' in multipleSelection[2] %}<a id="button_{{ multipleSelection[1] }}_cancel" href="javascript: void(0)" class="button button-3d button-mini button-grey f_right m_b_10p">Annulla</a>{% endif %}
{% if 'closed_portal' in multipleSelection[2] %}<a id="button_{{ multipleSelection[1] }}_closed_portal" href="javascript: void()" class="button button-3d button-mini button-grey f_right m_b_10p">Chiuso su portale</a>{% endif %}
{% if 'wrong' in multipleSelection[2] %}<a id="button_{{ multipleSelection[1] }}_wrong" href="javascript: void()" class="button button-3d button-mini button-grey f_right m_b_10p">Errato</a>{% endif %}
{% if 'delete' in multipleSelection[2] %}<a id="button_{{ multipleSelection[1] }}_delete" href="javascript: void(0)" class="button button-3d button-mini button-grey f_right m_b_10p">Elimina definitivamente</a>{% endif %}
{% if 'urge' in multipleSelection[2] %}<a id="button_{{ multipleSelection[1] }}_urge" href="javascript: void(0)" class="button button-3d button-mini button-grey f_right m_b_10p">Sollecita</a>{% endif %}
{% if 'export' in multipleSelection[2] %}<a id="button_{{ multipleSelection[1] }}_export" href="javascript: void(0)" class="button button-3d button-mini button-grey f_right m_b_10p">Esporta</a>{% endif %}
{% endif %}
{% if hasEmailTakeCharge %}<a href="javascript: sendEmailTakeCharge()" class="button button-3d button-mini button-green f_left m_b_10p">Invia email prendi in carico a tutti</a>{% endif %}
</div>
<div class="col-12 overflow_a">
<table class="table table-bordered table-hover font_12">
<thead>
<tr>
<form method="get" action="{{ path ('user_ticket_list') }}" id="formFilter_{{ multipleSelection[1] }}">
<td class="td_action" {% if multipleSelection[0] %}colspan="2"{% endif %}><a href="{{ path ('remove_filter', {'route':app.request.attributes.get('_route'), 'route_params':app.request.attributes.get('_route_params') }) }}" class="f_right" data-bs-toggle="tooltip" title="Escludi filtro"><img class="icon_red" src="{{ asset (icon_delete) }}"></a></td>
<td><input type="text" class="form-control" id="input_number_{{ multipleSelection[1] }}" inputmode="search" name="number" value="{{ filters.number|default() }}" data-bs-toggle="tooltip" title="Puoi effettuare ricerche multiple inserendo valori separati da virgola [Es. 1234,5678,901]"/></td>
<td><input type="text" class="form-control" id="input_termid_{{ multipleSelection[1] }}" inputmode="search" name="termid" value="{{ filters.termid|default() }}" data-bs-toggle="tooltip" title="Puoi effettuare ricerche multiple inserendo valori separati da virgola [Es. 1234,5678,901]"/></td>
{% if global_company.actualCompany.tagTicketActive %}<td><input type="text" class="form-control" id="filter_tag_value_{{ number }}" readonly onClick="filterTags{{ number }}()" data-bs-toggle="tooltip"/><input type="hidden" id="filter_tag_id_{{ number }}" name="tag" value="{{ filters.tag|default() }}"/></td>{% endif %}
<td><input type="text" class="form-control" inputmode="search" name="client" value="{{ filters.client|default() }}"/></td>
<td><input type="text" class="form-control" id="filter_operation_value_{{ number }}" readonly onClick="filterOperations{{ number }}()" data-bs-toggle="tooltip"/><input type="hidden" id="filter_operation_id_{{ number }}" name="operation" value="{{ filters.operation|default() }}"/></td>
<td><input type="text" class="form-control" id="filter_supplier_value_{{ number }}" readonly onClick="filterSuppliers{{ number }}()" data-bs-toggle="tooltip"/><input type="hidden" id="filter_supplier_id_{{ number }}" name="supplier" value="{{ filters.supplier|default() }}"/></td>
<td><input type="text" class="form-control" inputmode="search" name="tariff" value="{{ filters.tariff|default() }}"/></td>
<td><input type="text" class="form-control" inputmode="search" name="city" value="{{ filters.city|default() }}"/></td>
<td><input type="text" class="form-control" inputmode="search" name="province" value="{{ filters.province|default() }}"/></td>
{% if tab != 'toAssign' %}
<td><input type="text" class="form-control" inputmode="search" name="technician" value="{{ filters.technician|default() }}"/></td>
{% endif %}
<td><input type="text" class="form-control daterange daterange1 font_12" id="daterange_{{ number }}_1" autocomplete="off" inputmode="search" name="datetimeStart" style="height: 38px" date-filter="range"/></td>
{% if tab != 'closed' and tab != 'closedPortal' %}
<td><input type="text" class="form-control daterange daterange2 font_12" id="daterange_{{ number }}_2" autocomplete="off" inputmode="search" name="datetimeExpiration" style="height: 38px" date-filter="range"/></td>
{% else %}
<td><input type="text" class="form-control daterange daterange3 font_12" id="daterange_{{ number }}_3" inputmode="search" autocomplete="off" name="datetimeEnd" style="height: 38px" date-filter="range"/></td>
{% endif %}
<td colspan="4" class="td_action"><button type="submit" class="btn bg_w f_left p_0p" data-bs-toggle="tooltip" title="Filtra"><img class="icon_green" src="{{ asset (icon_search) }}"></button></td>
<input type="hidden" name="filter_tab" value="{{ tabOpenValue }}">
<input id="sort_field_{{ multipleSelection[1] }}" type="hidden" name="sortField" value="{{ filters.sortField|default() }}"/>
<input id="sort_order_{{ multipleSelection[1] }}" type="hidden" name="sortOrder" value="{{ filters.sortOrder|default() }}"/>
</form>
</tr>
<tr class="bg_pr color_w">
{% if multipleSelection[0] %}
<th class="td_action txt_a_c">
<div class="switch" data-bs-toggle="tooltip" title="Seleziona tutti">
<input id="ticket_{{ multipleSelection[1] }}_all_checkboxes" class="switch-toggle switch-flat-mini switch-toggle-flat" type="checkbox" onChange="javascript: selectAll({{ multipleSelection[1] }})">
<label for="ticket_{{ multipleSelection[1] }}_all_checkboxes" class="m_b_none"></label>
</div>
</th>
{% endif %}
<th class="td_w_40p txt_a_c">Stato</th>
<th class="td_w_120p">N°<button type="button" onClick="setOrderBy{{ multipleSelection[1] }}('t.number')" data-orderField="t.number" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_100p">Termid<button type="button" onClick="setOrderBy{{ multipleSelection[1] }}('tt.code')" data-orderField="tt.code" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
{% if global_company.actualCompany.tagTicketActive %}<th class="td_w_100p">Tag</th>{% endif %}
<th class="td_w_150p">Cliente<button type="button" onClick="setOrderBy{{ multipleSelection[1] }}('c.nickname')" data-orderField="c.nickname" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_150p">Operazione <i style="font-weight:400">(Dettagli)</i><button type="button" onClick="setOrderBy{{ multipleSelection[1] }}('o.value')" data-orderField="o.value" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_120p">Fornitore <i style="font-weight:400">(SLOT)</i><button type="button" onClick="setOrderBy{{ multipleSelection[1] }}('s.name')" data-orderField="s.name" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_120p">Tariffa<button type="button" onClick="setOrderBy0('ot.value')" data-orderField="ot.value" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_180p">Città <i style="font-weight:400">(Indirizzo)</i><button type="button" onClick="setOrderBy1('t.idCity')" data-orderField="t.idCity" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
<th class="td_w_70p txt_a_c">Prov<button type="button" onClick="setOrderBy1('t.idProvince')" data-orderField="t.idProvince" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
{% if tab != 'toAssign' %}
<th class="td_w_150p">Tecnico<button type="button" onClick="setOrderBy{{ multipleSelection[1] }}('p.surname')" data-orderField="p.surname" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
{% endif %}
<th class="td_w_130p txt_a_c">Data/Ora ricezione<button type="button" onClick="setOrderBy{{ multipleSelection[1] }}('t.datetimeStart')" data-orderField="t.datetimeStart" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
{% if tab != 'closed' and tab != 'closedPortal' %}
<th class="td_w_130p txt_a_c">Data/Ora scadenza<button type="button" onClick="setOrderBy{{ multipleSelection[1] }}('t.datetimeExpiration')" data-orderField="t.datetimeExpiration" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
{% else %}
<th class="td_w_130p txt_a_c">Data/Ora chiusura<button type="button" onClick="setOrderBy{{ multipleSelection[1] }}('t.datetimeEnd')" data-orderField="t.datetimeEnd" class="f_right filter_arrow"><img width="18" data-bs-toggle="tooltip" title="Ordina in ordine alfabetico"></button></th>
{% endif %}
<th class="td_w_50p txt_a_c">Note</th>
<th></th>
</tr>
</thead>
<tbody>
{% if tickets|length > 0 %}
{% for ticket in tickets %}
<tr>
{% if multipleSelection[0] %}
<td class="td_w_30p">
<div class="switch">
<input id="ticket_checkbox_{{ ticket.id }}" class="switch-toggle switch-flat-mini switch-toggle-flat ticket_{{ multipleSelection[1] }}_checkbox" type="checkbox" value="{{ ticket.id }}" onChange="javascript: updateButtons({{ multipleSelection[1] }})">
<label for="ticket_checkbox_{{ ticket.id }}" class="m_b_none"></label>
</div>
</td>
{% endif %}
<td class="txt_a_c">{{ ticket.displayStatus('icon', settingProcessedActive)|raw }}</td>
<td id="ticket_number_{{ ticket.id }}">{{ ticket.number }}</td>
<td id="ticket_termid_{{ ticket.id }}">{{ ticket.termid }}</td>
{% if global_company.actualCompany.tagTicketActive %}<td id="ticket_tags_{{ ticket.id }}">{{ ticket.displayTags('icon')|raw }}</td>{% endif %}
<td id="ticket_client_{{ ticket.id }}">{{ ticket.client }}</td>
<td id="ticket_operation_{{ ticket.id }}">
{% if ticket.operation is not null %}
{{ ticket.operation.value }}{% if ticket.operation.getKeyValueByValue('Dettagli operazione') and ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('Dettagli operazione')) != null %}<br><i>({{ ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('Dettagli operazione')) }})</i>{% endif %}
{% else %}
Operazione non riconosciuta
{% endif %}
</td>
<td id="ticket_supplier_{{ ticket.id }}">
{% if ticket.supplier is not null %}
{{ ticket.supplier }}
{% if ticket.displayJsonValueByColumn('SLOT') != null %}<br><i>({{ ticket.displayJsonValueByColumn('SLOT') }})</i>{% endif %}
{% else %}
Fornitore non riconosciuto
{% endif %}
</td>
<td>{% if ticket.operationTariffAmount != null %}{{ ticket.operationTariffAmount.value|default() }}{% endif %}</td>
<td>{% if ticket.idCity != null %}{{ ticket.idCity|translate_city_only }}<br><i>({{ ticket.address }})</i>{% endif %}</td>
<td class="txt_a_c">{% if ticket.idProvince != null %}{{ ticket.idProvince|translate_province_sign }}{% endif %}</td>
{% if tab != 'toAssign' %}
<td>{{ ticket.technician }}</td>
{% endif %}
<td class="txt_a_c">{% if ticket.datetimeStart != null %}{{ ticket.datetimeStart|date('d-m-Y H:i') }}{% else %}---{% endif %}</td>
{% if tab != 'closed' and tab != 'closedPortal' %}
<td class="txt_a_c">{% if ticket.datetimeExpiration != null %}{{ ticket.datetimeExpiration|date('d-m-Y H:i') }}{% else %}---{% endif %}</td>
{% else %}
<td class="txt_a_c">{% if ticket.datetimeEnd != null %}{{ ticket.datetimeEnd|date('d-m-Y H:i') }}{% else %}---{% endif %}</td>
{% endif %}
<td class="td_action"><a href="javascript: showNotes({{ ticket.id }})"><img class="icon_pr" data-bs-toggle="tooltip" title="Mostra note" src="{{ asset(icon_notes) }}"></a></td>
<td class="td_action"><a href="{{ path ('user_ticket_sheet', {'ticketId':ticket.id}) }}"><img class="icon_pr" data-bs-toggle="tooltip" title="Scheda" src="{{ asset(icon_sheet) }}"></a></td>
</tr>
<input type="hidden" id="ticket_anomaly_{{ ticket.id }}" value="{{ ticket.displayJsonReportValueByColumn('Anomalia') }}">
<input type="hidden" id="ticket_client_notes_{{ ticket.id }}" value="{% if ticket.client != null %}{{ ticket.client.notes }}{% endif %}">
<input type="hidden" id="ticket_client_time_{{ ticket.id }}" value="{% if ticket.client != null %}Orari apertura: {{ ticket.client.openings }} / Chiusure: {{ ticket.client.closures }}{% endif %}">
{% endfor %}
{% else %}
{% include 'components/twig/notice_filter_no_match.html.twig' %}
{% endif %}
</tbody>
</table>
</div>
<div class="col-12 navigation txt_a_r">
{{ knp_pagination_render(tickets) }}
</div>
</div>
{% endblock %}
</div>
{# Assigned #}
<div class="tab-content clearfix" id="assigned">
{% set tickets = assignedTickets %}
{% set number = 2 %}
{% set multipleSelection = [true, 2, ['print', 'suspend', 'cancel', 'change', 'urge', 'export']] %}
{% set hasEmailTakeCharge = true %}
{% set tabOpenValue = 'assigned' %}
{% set tab = 'assigned' %}
{{ block('ticketsTab') }}
</div>
{# Taken charge #}
<div class="tab-content clearfix" id="takenCharge">
{% set tickets = takenChargeTickets %}
{% set number = 3 %}
{% if settingBackOffice %} {# SE ACCOUNT AGENZIA E BACKOFFICE GESTISCE TICKET #}
{% set multipleSelection = [true, 3, ['print', 'suspend', 'cancel', 'change', 'urge', 'export']] %}
{% else %}
{% set multipleSelection = [true, 3, ['suspend', 'cancel', 'change', 'urge', 'export']] %}
{% endif %}
{% set hasEmailTakeCharge = false %}
{% set tabOpenValue = 'taken_charge' %}
{% set tab = 'takenCharge' %}
{{ block('ticketsTab') }}
</div>
{# Suspension request #}
<div class="tab-content clearfix" id="suspensionRequest">
{% set tickets = suspensionRequestTickets %}
{% set number = 4 %}
{% set multipleSelection = [true, 4, ['cancel', 'approve', 'export']] %}
{% set hasEmailTakeCharge = false %}
{% set tabOpenValue = 'suspension_request' %}
{% set tab = 'suspensionRequest' %}
{{ block('ticketsTab') }}
</div>
{# Suspended #}
<div class="tab-content clearfix" id="suspended">
{% set tickets = suspendedTickets %}
{% set number = 5 %}
{% set multipleSelection = [true, 5, ['print', 'suspend_end', 'cancel', 'export']] %}
{% set hasEmailTakeCharge = false %}
{% set tabOpenValue = 'suspended' %}
{% set tab = 'suspended' %}
{{ block('ticketsTab') }}
</div>
{# Closed #}
<div class="tab-content clearfix" id="closed">
{% set tickets = closedTickets %}
{% set number = 6 %}
{% set multipleSelection = [true, 6, ['closed_portal', 'export']] %}
{% set hasEmailTakeCharge = false %}
{% set tabOpenValue = 'closed' %}
{% set tab = 'closed' %}
{{ block('ticketsTab') }}
</div>
{# Closed on portal #}
<div class="tab-content clearfix" id="closedPortal">
{% set tickets = closedPortalTickets %}
{% set number = 7 %}
{% set multipleSelection = [false, 7, ['export']] %}
{% set hasEmailTakeCharge = false %}
{% set tabOpenValue = 'closed_on_portal' %}
{% set tab = 'closedPortal' %}
{{ block('ticketsTab') }}
</div>
{# Canceled #}
<div class="tab-content clearfix" id="canceled">
{% set tickets = canceledTickets %}
{% set number = 8 %}
{% set multipleSelection = [true, 8, ['wrong', 'export']] %}
{% set hasEmailTakeCharge = false %}
{% set tabOpenValue = 'canceled' %}
{% set tab = 'canceled' %}
{{ block('ticketsTab') }}
</div>
{# Wrong #}
<div class="tab-content clearfix" id="wrong">
{% set tickets = wrongTickets %}
{% set number = 9 %}
{% set multipleSelection = [true, 9, ['delete', 'export']] %}
{% set hasEmailTakeCharge = false %}
{% set tabOpenValue = 'wrong' %}
{% set tab = 'wrong' %}
{{ block('ticketsTab') }}
</div>
</div>
</div>
</div>
{% elseif app.user.getAccountTypology == 'warehouse' %}
{# Magazzino #}
<div class="col-12">
<div class="tabs clearfix">
<ul class="tab-nav clearfix">
<li>
<a id="btn_tab_to_assign" href="#toAssign" class="tab_session" data-filterTab="to_assign">
<span class="font_16 d-block d-lg-none" data-bs-toggle="tooltip" title="Da assegnare"><i class="icon-pencil-alt font_20"></i>{{ toAssignTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Da assegnare ({{ toAssignTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_assigned" href="#assigned" class="tab_session" data-filterTab="assigned">
<span class="font_16 d-block d-lg-none" data-bs-toggle="tooltip" title="Assegnati"><i class="icon-tag font_20"></i>{{ assignedTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Assegnati ({{ assignedTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_taken_charge" href="#takenCharge" class="tab_session" data-filterTab="taken_charge">
<span class="font_16 d-block d-lg-none" data-bs-toggle="tooltip" title="Presi in carico"><i class="icon-cog font_20"></i>{{ takenChargeTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Presi in carico ({{ takenChargeTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_suspension_request" href="#suspensionRequest" class="tab_session" data-filterTab="suspension_request">
<span class="font_16 d-block d-lg-none" data-bs-toggle="tooltip" title="Richiesta sospensione"><i class="icon-clock font_20"></i>{{ suspensionRequestTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Richiesta sospensione ({{ suspensionRequestTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_suspended" href="#suspended" class="tab_session" data-filterTab="suspended">
<span class="font_16 d-block d-lg-none" data-bs-toggle="tooltip" title="Sospesi"><i class="icon-clock font_20"></i>{{ suspendedTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Sospesi ({{ suspendedTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_closed" href="#closed" class="tab_session" data-filterTab="closed">
<span class="font_16 d-block d-lg-none" data-bs-toggle="tooltip" title="Chiusi"><i class="icon-check font_20"></i>{{ closedTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Chiusi ({{ closedTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_closed_on_portal" href="#closedPortal" class="tab_session" data-filterTab="closed_on_portal">
<span class="font_16 d-block d-lg-none" data-bs-toggle="tooltip" title="Chiusi su fornitore"><i class="icon-checkmark font_20"></i>{{ closedPortalTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Chiusi su fornitore ({{ closedPortalTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_canceled" href="#canceled" class="tab_session" data-filterTab="canceled">
<span class="font_16 d-block d-lg-none" data-bs-toggle="tooltip" title="Annullati"><i class="icon-minus-sign font_20"></i>{{ canceledTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Annullati ({{ canceledTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_wrong" href="#wrong" class="tab_session" data-filterTab="wrong">
<span class="font_16 d-block d-lg-none"data-bs-toggle="tooltip" title="Errati"><i class="icon-remove-sign font_20" ></i>{{ wrongTickets.getTotalItemCount }}</span>
<span class="d-none d-lg-block">Errati ({{ wrongTickets.getTotalItemCount }})</span>
</a>
</li>
</ul>
<div class="tab-container">
{# To assign #}
<div class="tab-content clearfix" id="toAssign">
{% set tickets = toAssignTickets %}
{% set number = 1 %}
{% set tabOpenValue = 'to_assign' %}
{% set tab = 'toAssign' %}
{% block ticketsTabW %}
<div class="row">
<div class="col-12 overflow_a">
<table class="table table-bordered table-hover font_12">
<thead>
<tr>
<form method="get" action="{{ path ('user_ticket_list') }}">
<td class="td_action"><a href="{{ path ('remove_filter', {'route':app.request.attributes.get('_route'), 'route_params':app.request.attributes.get('_route_params') }) }}" class="f_right" data-bs-toggle="tooltip" title="Escludi filtro"><img class="icon_red" src="{{ asset (icon_delete) }}"></a></td>
<td><input type="text" class="form-control" inputmode="search" name="number" value="{{ filters.number|default() }}"/></td>
<td><input type="text" class="form-control" inputmode="search" name="termid" value="{{ filters.termid|default() }}"/></td>
{% if global_company.actualCompany.tagTicketActive %}<td><input type="text" class="form-control" id="filter_tag_value_{{ number }}" readonly onClick="filterTags{{ number }}()" data-bs-toggle="tooltip"/><input type="hidden" id="filter_tag_id_{{ number }}" name="tag" value="{{ filters.tag|default() }}"/></td>{% endif %}
<td><input type="text" class="form-control" inputmode="search" name="client" value="{{ filters.client|default() }}"/></td>
<td><input type="text" class="form-control" inputmode="search" name="operation" value="{{ filters.operation|default() }}"/></td>
<td><input type="text" class="form-control" id="filter_supplier_value_{{ number }}" readonly onClick="filterSuppliers{{ number }}()" data-bs-toggle="tooltip"/><input type="hidden" id="filter_supplier_id_{{ number }}" name="supplier" value="{{ filters.supplier|default() }}"/></td>
<td><input type="text" class="form-control" inputmode="search" name="tariff" value="{{ filters.tariff|default() }}"/></td>
<td><input type="text" class="form-control" inputmode="search" name="city" value="{{ filters.city|default() }}"/></td>
<td><input type="text" class="form-control" inputmode="search" name="province" value="{{ filters.province|default() }}"/></td>
{% if tab != 'toAssign' %}
<td><input type="text" class="form-control" inputmode="search" name="technician" value="{{ filters.technician|default() }}"/></td>
{% endif %}
<td><input type="text" class="form-control daterange daterange1 font_12" inputmode="search" autocomplete="off" name="datetimeStart" style="height: 38px" date-filter="range"/></td>
{% if tab != 'closed' and tab != 'closedPortal' %}
<td><input type="text" class="form-control daterange daterange2 font_12" inputmode="search" autocomplete="off" name="datetimeExpiration" style="height: 38px" date-filter="range"/></td>
{% else %}
<td><input type="text" class="form-control daterange daterange3 font_12" inputmode="search" autocomplete="off" name="datetimeEnd" style="height: 38px" date-filter="range"/></td>
{% endif %}
<td class="td_action"><button type="submit" class="btn bg_w f_left p_0p" data-bs-toggle="tooltip" title="Filtra"><img class="icon_green" src="{{ asset (icon_search) }}"></button></td>
<input type="hidden" name="filter_tab" value="{{ tabOpenValue }}">
</form>
</tr>
<tr class="bg_pr color_w">
<th class="td_w_40p txt_a_c">Stato</th>
<th class="td_w_120p">N°</th>
<th class="td_w_120p">Termid</th>
{% if global_company.actualCompany.tagTicketActive %}<th class="td_w_100p">Tag</th>{% endif %}
<th class="td_w_150p">Cliente</th>
<th class="td_w_150p">Operazione</th>
<th class="td_w_150p">Fornitore</th>
<th class="td_w_130p">Tariffa</th>
<th class="td_w_130p">Città</th>
<th class="td_w_70p txt_a_c">Prov</th>
{% if tab != 'toAssign' %}
<th class="td_w_150p">Tecnico</th>
{% endif %}
<th class="td_w_130p txt_a_c">Data/Ora ricezione</th>
{% if tab != 'closed' and tab != 'closedPortal' %}
<th class="td_w_130p txt_a_c">Data/Ora scadenza</th>
{% else %}
<th class="td_w_130p txt_a_c">Data/Ora chiusura</th>
{% endif %}
<th class="td_w_50p txt_a_c">Note</th>
<th></th>
</tr>
</thead>
<tbody>
{% if tickets|length > 0 %}
{% for ticket in tickets %}
<tr>
<td class="txt_a_c">{{ ticket.displayStatus('icon', settingProcessedActive)|raw }}</td>
<td id="ticket_number_{{ ticket.id }}">{{ ticket.number }}</td>
<td id="ticket_termid_{{ ticket.id }}">{{ ticket.termid }}</td>
{% if global_company.actualCompany.tagTicketActive %}<td id="ticket_tags_{{ ticket.id }}">{{ ticket.displayTags('icon')|raw }}</td>{% endif %}
<td id="ticket_client_{{ ticket.id }}">{{ ticket.client }}</td>
<td id="ticket_operation_{{ ticket.id }}">{{ ticket.operation.value }}</td>
<td id="ticket_supplier_{{ ticket.id }}">{{ ticket.supplier }}</td>
<td id="ticket_tariff_{{ ticket.id }}">{{ ticket.operationTariffAmount.value|default() }}</td>
<td>{% if ticket.idCity != null %}{{ ticket.idCity|translate_city_only }}{% endif %}</td>
<td class="txt_a_c">{% if ticket.idProvince != null %}{{ ticket.idProvince|translate_province_sign }}{% endif %}</td>
{% if tab != 'toAssign' %}
<td>{{ ticket.technician }}</td>
{% endif %}
<td class="txt_a_c">{% if ticket.datetimeStart != null %}{{ ticket.datetimeStart|date('d-m-Y H:i') }}{% else %}---{% endif %}</td>
{% if tab != 'closed' and tab != 'closedPortal' %}
<td class="txt_a_c">{% if ticket.datetimeExpiration != null %}{{ ticket.datetimeExpiration|date('d-m-Y H:i') }}{% else %}---{% endif %}</td>
{% else %}
<td class="txt_a_c">{% if ticket.datetimeEnd != null %}{{ ticket.datetimeEnd|date('d-m-Y H:i') }}{% else %}---{% endif %}</td>
{% endif %}
<td class="td_action"><a href="javascript: showNotes({{ ticket.id }})"><img class="icon_pr" data-bs-toggle="tooltip" title="Mostra note" src="{{ asset(icon_notes) }}"></a></td>
<td class="td_action"><a href="{{ path ('user_ticket_sheet', {'ticketId':ticket.id}) }}"><img class="icon_pr" data-bs-toggle="tooltip" title="Scheda" src="{{ asset(icon_sheet) }}"></a></td>
</tr>
<input type="hidden" id="ticket_anomaly_{{ ticket.id }}" value="{{ ticket.displayJsonReportValueByColumn('Anomalia') }}">
<input type="hidden" id="ticket_client_notes_{{ ticket.id }}" value="{% if ticket.client != null %}{{ ticket.client.notes }}{% endif %}">
<input type="hidden" id="ticket_client_time_{{ ticket.id }}" value="{% if ticket.client != null %}Orari apertura: {{ ticket.client.openings }} / Chiusure: {{ ticket.client.closures }}{% endif %}">
{% endfor %}
{% else %}
{% include 'components/twig/notice_filter_no_match.html.twig' with {'colspan':'100%'} %}
{% endif %}
</tbody>
</table>
</div>
<div class="col-12 navigation txt_a_r">
{{ knp_pagination_render(tickets) }}
</div>
</div>
{% endblock %}
</div>
{# Assigned #}
<div class="tab-content clearfix" id="assigned">
{% set tickets = assignedTickets %}
{% set number = 2 %}
{% set hasEmailTakeCharge = true %}
{% set tabOpenValue = 'assigned' %}
{% set tab = 'assigned' %}
{{ block('ticketsTabW') }}
</div>
{# Taken charge #}
<div class="tab-content clearfix" id="takenCharge">
{% set tickets = takenChargeTickets %}
{% set number = 3 %}
{% set hasEmailTakeCharge = false %}
{% set tabOpenValue = 'taken_charge' %}
{% set tab = 'takenCharge' %}
{{ block('ticketsTabW') }}
</div>
{# Suspension request #}
<div class="tab-content clearfix" id="suspensionRequest">
{% set tickets = suspensionRequestTickets %}
{% set number = 4 %}
{% set hasEmailTakeCharge = false %}
{% set tabOpenValue = 'suspension_request' %}
{% set tab = 'suspensionRequest' %}
{{ block('ticketsTabW') }}
</div>
{# Suspended #}
<div class="tab-content clearfix" id="suspended">
{% set tickets = suspendedTickets %}
{% set number = 5 %}
{% set hasEmailTakeCharge = false %}
{% set tabOpenValue = 'suspended' %}
{% set tab = 'suspended' %}
{{ block('ticketsTabW') }}
</div>
{# Closed #}
<div class="tab-content clearfix" id="closed">
{% set tickets = closedTickets %}
{% set number = 6 %}
{% set hasEmailTakeCharge = false %}
{% set tabOpenValue = 'closed' %}
{% set tab = 'closed' %}
{{ block('ticketsTabW') }}
</div>
{# Closed on portal #}
<div class="tab-content clearfix" id="closedPortal">
{% set tickets = closedPortalTickets %}
{% set number = 7 %}
{% set hasEmailTakeCharge = false %}
{% set tabOpenValue = 'closed_on_portal' %}
{% set tab = 'closedPortal' %}
{{ block('ticketsTabW') }}
</div>
{# Canceled #}
<div class="tab-content clearfix" id="canceled">
{% set tickets = canceledTickets %}
{% set number = 8 %}
{% set hasEmailTakeCharge = false %}
{% set tabOpenValue = 'canceled' %}
{% set tab = 'canceled' %}
{{ block('ticketsTabW') }}
</div>
{# Wrong #}
<div class="tab-content clearfix" id="wrong">
{% set tickets = wrongTickets %}
{% set number = 9 %}
{% set hasEmailTakeCharge = false %}
{% set tabOpenValue = 'wrong' %}
{% set tab = 'wrong' %}
{{ block('ticketsTabW') }}
</div>
</div>
</div>
</div>
{% elseif app.user.getAccountTypology == 'technician' %}
{# Tecnici #}
<div class="col-12">
<div class="tabs clearfix">
<ul class="tab-nav clearfix">
<li>
<a id="btn_tab_assigned" href="#assigned" class="tab_session" data-filterTab="assigned">
<span class="d-block d-lg-none"><i class="icon-tag" data-bs-toggle="tooltip" title="Assegnati"></i><span class="font_16">({{ assignedTickets.getTotalItemCount }})</span></span>
<span class="d-none d-lg-block">Assegnati ({{ assignedTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_taken_charge" href="#takenCharge" class="tab_session" data-filterTab="taken_charge">
<span class="d-block d-lg-none"><i class="icon-cog" data-bs-toggle="tooltip" title="Presi in carico"></i><span class="font_16">({{ takenChargeTickets.getTotalItemCount }})</span></span>
<span class="d-none d-lg-block">Presi in carico ({{ takenChargeTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_suspension_request" href="#suspensionRequest" class="tab_session" data-filterTab="suspension_request">
<span class="d-block d-lg-none"><i class="icon-clock" data-bs-toggle="tooltip" title="Richiesta sospensione"></i><span class="font_16">({{ suspensionRequestTickets.getTotalItemCount }})</span></span>
<span class="d-none d-lg-block">Richiesta sospensione ({{ suspensionRequestTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_suspended" href="#suspended" class="tab_session" data-filterTab="suspended">
<span class="d-block d-lg-none"><i class="icon-clock" data-bs-toggle="tooltip" title="Sospesi"></i><span class="font_16">({{ suspendedTickets.getTotalItemCount }})</span></span>
<span class="d-none d-lg-block">Sospesi ({{ suspendedTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_closed" href="#closed" class="tab_session" data-filterTab="closed">
<span class="d-block d-lg-none"><i class="icon-check" data-bs-toggle="tooltip" title="Chiusi"></i><span class="font_16">({{ closedTickets.getTotalItemCount }})</span></span>
<span class="d-none d-lg-block">Chiusi ({{ closedTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_closed_portal" href="#closedPortal" class="tab_session" data-filterTab="closed_portal">
<span class="d-block d-lg-none"><i class="icon-checkmark" data-bs-toggle="tooltip" title="Chiusi su fornitore"></i><span class="font_16">({{ closedPortalTickets.getTotalItemCount }})</span></span>
<span class="d-none d-lg-block">Chiusi su fornitore ({{ closedPortalTickets.getTotalItemCount }})</span>
</a>
</li>
<li>
<a id="btn_tab_canceled" href="#canceled" class="tab_session" data-filterTab="canceled">
<span class="d-block d-lg-none"><i class="icon-remove-sign" data-bs-toggle="tooltip" title="Annullati"></i><span class="font_16">({{ canceledTickets.getTotalItemCount }})</span></span>
<span class="d-none d-lg-block">Annullati ({{ canceledTickets.getTotalItemCount }})</span>
</a>
</li>
</ul>
<div class="tab-container">
{# Assigned #}
<div class="tab-content clearfix" id="assigned">
{% set tickets = assignedTickets %}
{% set multipleSelection = [true, 11, ['print']] %}
{% set hasTakeOnCharge = true %}
{% set tabOpenValue = 'assigned' %}
{% block ticketsTab2 %}
<div class="row">
<div class="col-12">
{% if multipleSelection[0] %}
{% if 'print' in multipleSelection[2] %}<a id="button_{{ multipleSelection[1] }}_print" href="javascript: void(0)" class="button button-3d button-mini button-grey f_right m_b_10p">Stampa</a>{% endif %}
{% if 'suspend_end' in multipleSelection[2] and settingTechUnlockSuspension.value %}<a id="button_{{ multipleSelection[1] }}_suspend_end" href="javascript: void(0)" class="button button-3d button-mini button-grey f_right m_b_10p">Sblocca sospensione</a>{% endif %}
{% endif %}
{% if hasTakeOnCharge %}<a href="javascript: ticketsTakeCharge()" class="button button-3d button-mini button-green f_right m_b_10p">Prendi in carico</a>{% endif %}
</div>
<div class="col-12 overflow_a">
<table class="table table-bordered table-hover">
<thead>
<tr>
<form method="get" action="{{ path ('user_ticket_list') }}">
<td class="td_action"><a href="{{ path ('remove_filter', {'route':app.request.attributes.get('_route'), 'route_params':app.request.attributes.get('_route_params') }) }}" class="f_right" data-bs-toggle="tooltip" title="Escludi filtro"><img class="icon_red" src="{{ asset (icon_delete) }}"></a></td>
<td><input type="text" class="form-control" inputmode="search" name="all" value="{{ filters.all|default() }}"/></td>
<td class="td_action"><button type="submit" class="btn bg_w f_left p_0p" data-bs-toggle="tooltip" title="Filtra"><img class="icon_green" src="{{ asset (icon_search) }}"></button></td>
<input type="hidden" name="filter_tab" value="{{ tabOpenValue }}">
</form>
</tr>
<tr class="bg_pr color_w">
{% if multipleSelection[0] %}
<th>
<div class="switch" data-bs-toggle="tooltip" title="Seleziona tutti">
<input id="ticket_{{ multipleSelection[1] }}_all_checkboxes" class="switch-toggle switch-flat-mini switch-toggle-flat" type="checkbox" onChange="javascript: selectAll({{ multipleSelection[1] }})">
<label for="ticket_{{ multipleSelection[1] }}_all_checkboxes" class="m_b_none"></label>
</div>
</th>
{% endif %}
<th colspan="3"></th>
</tr>
</thead>
<tbody>
{% if tickets|length > 0 %}
{% for ticket in tickets %}
{% set ticketBg = "" %}
{% set ticketTitle = "" %}
{% if tabOpenValue != 'closed' and tabOpenValue != 'canceled' %}
{% if ticket.datetimeExpiration != null %}
{% if "now"|date('YmdHi') > ticket.datetimeExpiration|date('YmdHi') %}
{% set ticketBg = "bg_r_m_h" %}
{% set ticketTitle = "Scaduto" %}
{% elseif "now"|date('YmdHi') > ticket.datetimeExpiration|date_modify("-1 day")|date('YmdHi') %}
{% set ticketBg = "bg_r_m" %}
{% set ticketTitle = "Scade in un giorno" %}
{% elseif "now"|date('YmdHi') > ticket.datetimeExpiration|date_modify("-2 day")|date('YmdHi') %}
{% set ticketBg = "bg_r_l_m" %}
{% set ticketTitle = "Scade in due giorni" %}
{% endif %}
{% endif %}
{% endif %}
<tr class="{{ ticketBg }}" data-bs-toggle="tooltip" title="{{ ticketTitle }}">
{% if multipleSelection[0] %}
<td class="td_action">
<div class="switch">
<input id="ticket_checkbox_{{ ticket.id }}" class="switch-toggle switch-flat-mini switch-toggle-flat ticket_{{ multipleSelection[1] }}_checkbox" type="checkbox" value="{{ ticket.id }}" onChange="javascript: updateButtons({{ multipleSelection[1] }})">
<label for="ticket_checkbox_{{ ticket.id }}" class="m_b_none"></label>
</div>
</td>
{% endif %}
<td colspan="2">
<a href="{{ path ('user_ticket_sheet', {'ticketId':ticket.id}) }}">
<table class="table table_no_padding m_b_none b_none font_12">
<tr><td><b>Stato</b>: {{ ticket.displayStatus('string', settingProcessedActive)|raw }}</td></tr>
<tr><td><b>N°</b>: <span id="ticket_number_{{ ticket.id }}">{{ ticket.number }}</span></td></tr>
<tr><td><b>Termid</b>: <span id="ticket_termid_{{ ticket.id }}">{{ ticket.termid }}</span></td></tr>
{% if global_company.actualCompany.tagTicketActive %}<tr><td><b>Tag</b>: <span id="ticket_tags_{{ ticket.id }}">{{ ticket.displayTags('icon')|raw }}</span></td></tr>{% endif %}
<tr><td><b>Indirizzo</b>: {% include 'components/twig/display_address.html.twig' with {'type':'ticket', 'obj':ticket} %}</td></tr>
<tr><td><b>Cliente</b>: <span id="ticket_client_{{ ticket.id }}">{{ ticket.client }}</span></td></tr>
<tr><td><b>Cliente - Indirizzo</b>: {% if ticket.client != null %}{% include 'components/twig/display_address.html.twig' with {'type':'client', 'obj':ticket.client} %}{% else %}---{% endif %}</td></tr>
<tr><td><b>Operazione</b>: <span id="ticket_operation_{{ ticket.id }}">{{ ticket.operation }} {% if ticket.operation.getKeyValueByValue('Dettagli operazione') and ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('Dettagli operazione')) != null %}<i>({{ ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('Dettagli operazione')) }})</i>{% endif %}</span></td></tr>
<tr><td><b>Fornitore</b>: <span id="ticket_supplier_{{ ticket.id }}">{{ ticket.supplier }} {% if ticket.displayJsonValueByColumn('SLOT') != null %}<i>({{ ticket.displayJsonValueByColumn('SLOT') }})</i>{% endif %}</span></td></tr>
<tr><td><b>Scadenza</b>: {% if ticket.datetimeExpiration != null %}{{ ticket.datetimeExpiration|date('d-m-Y H:i') }}{% else %}---{% endif %}</td></tr>
<tr><td><b>ABI</b>: {% if ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('ABI')) %}{{ ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('ABI')) }}{% else %}---{% endif %}</td></tr>
<tr><td><b>Risorsa</b>: {% if ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('Risorsa')) %}{{ ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('Risorsa')) }}{% else %}---{% endif %}</td></tr>
<tr><td><b>Risorsa upgrade</b>: {% if ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('Risorsa upgrade')) %}{{ ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('Risorsa upgrade')) }}{% else %}---{% endif %}</td></tr>
</table>
</a>
</td>
</tr>
{% endfor %}
{% else %}
{% include 'components/twig/notice_filter_no_match.html.twig' %}
{% endif %}
</tbody>
</table>
</div>
<div class="col-12 navigation txt_a_r">
{{ knp_pagination_render(tickets) }}
</div>
</div>
{% endblock %}
</div>
{# Taken charge #}
<div class="tab-content clearfix" id="takenCharge">
{% set tickets = takenChargeTickets %}
{% set multipleSelection = [true, 12, ['print']] %}
{% set hasTakeOnCharge = false %}
{% set tabOpenValue = 'taken_charge' %}
{{ block('ticketsTab2') }}
</div>
{# Suspension request #}
<div class="tab-content clearfix" id="suspensionRequest">
{% set tickets = suspensionRequestTickets %}
{% set multipleSelection = [false, 13, null] %}
{% set hasTakeOnCharge = false %}
{% set tabOpenValue = 'suspension_request' %}
{{ block('ticketsTab2') }}
</div>
{# Suspended #}
<div class="tab-content clearfix" id="suspended">
{% set tickets = suspendedTickets %}
{% set multipleSelection = [true, 14, ['print', 'suspend_end']] %}
{% set hasTakeOnCharge = false %}
{% set tabOpenValue = 'suspended' %}
{{ block('ticketsTab2') }}
</div>
{# Closed #}
<div class="tab-content clearfix" id="closed">
{% set tickets = closedTickets %}
{% set multipleSelection = [false, 15, null] %}
{% set hasTakeOnCharge = false %}
{% set tabOpenValue = 'closed' %}
{{ block('ticketsTab2') }}
</div>
{# Closed portal #}
<div class="tab-content clearfix" id="closedPortal">
{% set tickets = closedPortalTickets %}
{% set multipleSelection = [false, 16, null] %}
{% set hasTakeOnCharge = false %}
{% set tabOpenValue = 'closed_portal' %}
{{ block('ticketsTab2') }}
</div>
{# Canceled #}
<div class="tab-content clearfix" id="canceled">
{% set tickets = canceledTickets %}
{% set multipleSelection = [false, 17, null] %}
{% set hasTakeOnCharge = false %}
{% set tabOpenValue = 'canceled' %}
{{ block('ticketsTab2') }}
</div>
</div>
</div>
</div>
{% endif %}
</div>
</section>
<div id="multipleModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<form action="{{ path ('user_ticket_multiple_select_action') }}" method="post">
<div class="modal-header"><h3 class="modal-title">Ticket - Selezione multipla</h3></div>
<div class="modal-body">
<div class="row">
<div class="col-12 txt_a_c">
<label class="modal_subtitle">Attenzione!</label><br>
<label class="l_s_none m_b_none f_left">Ticket selezionati:</label>
<table class="table table-sm font_12 b_none txt_a_l" id="tableTickets"></table>
<div id="divSuspendEnd" class="display_n">
<label class="l_s_none m_b_none f_left">Motivazione di sblocco:</label>
<textarea id="textareaCausal" class="form-control min_h_150p" name="causal"></textarea>
</div>
<p class="modal_paragraph">Cliccando sul bottone <a class='button button-3d button-mini button-green' href='javascript:void(0)'>conferma</a> <span id="actionLabel"></span> tutti i ticket sovracitati.</p>
<p class="modal_paragraph">Si è sicuri di voler proseguire?</p>
</div>
</div>
<input type="hidden" id="ticketsIds" name="ids">
<input type="hidden" id="action" name="action">
<input type="hidden" id="multipleTab" name="tab">
</div>
<div class="modal-footer">
<a href="javascript:void(0)" class="button button-3d button-mini button-red f_left" data-bs-dismiss="modal">Annulla</a>
<button type="submit" class="button button-3d button-mini button-green f_right" id="multipleSubmitBtn">Conferma</button>
</div>
</form>
</div>
</div>
</div>
<div id="exportModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<form action="{{ path ('user_ticket_list_export') }}" method="post" id="exportForm">
<div class="modal-header"><h3 class="modal-title">Ticket - Selezione multipla</h3></div>
<div class="modal-body">
<div class="row">
<div class="col-12 txt_a_c">
<label class="modal_subtitle">Attenzione!</label><br>
<label class="l_s_none m_b_none f_left">Ticket selezionati:</label>
<table class="table table-sm font_12 b_none txt_a_l" id="exportTableTickets"></table>
<p class="modal_paragraph">Cliccando sul bottone <a class='button button-3d button-mini button-green' href='javascript:void(0)'>conferma</a> esporterai in CSV tutti i ticket sovracitati.</p>
<p class="modal_paragraph">Si è sicuri di voler proseguire?</p>
</div>
</div>
<input type="hidden" id="exportTicketsIds" name="ids">
</div>
<div class="modal-footer">
<a href="javascript:void(0)" class="button button-3d button-mini button-red f_left" data-bs-dismiss="modal">Annulla</a>
<button type="submit" class="button button-3d button-mini button-green f_right">Conferma</button>
</div>
</form>
</div>
</div>
</div>
<div id="notesModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog modal-md" role="document">
<div class="modal-content">
<div class="modal-header"><h3 class="modal-title">Note ticket: <span class="color_w" id="notes_number"></span></h3></div>
<div class="modal-body">
<div class="row">
<div class="col-12 m_b_20p">
<label class="l_s_none m_b_none">Anomalia:</label>
<p class="font_14 m_b_none" id="notes_anomaly"></p>
</div>
<div class="col-12 m_b_20p">
<label class="l_s_none m_b_none">Orari cliente:</label>
<p class="font_14 m_b_none" id="notes_client_time"></p>
</div>
<div class="col-12">
<label class="l_s_none m_b_none">Note cliente:</label>
<p class="font_14 m_b_none" id="notes_client"></p>
</div>
</div>
</div>
<div class="modal-footer txt_a_c">
<a href="javascript:void(0)" class="button button-3d button-mini button-red" data-bs-dismiss="modal">Esci</a>
</div>
</div>
</div>
</div>
{% if app.user.getAccountTypology == 'agency' %}
<div id="assignTechnicianModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
{{ form_start(formAssignTechnician, {'attr': {'novalidate': 'novalidate'}}) }}
<div class="modal-header"><h3 class="modal-title">Ticket - <span id="tech_span" class="color_w"></span> tecnico</h3></div>
<div class="modal-body">
<div class="row">
<div class="col-12 form-group">
<label class="form_label">Tecnico (N° ticket: in corso / sospesi)*</label>
<div {{ form_errors(formAssignTechnician.technician) }}>
{{ form_widget(formAssignTechnician.technician, {'attr':{'class':'form-control form-select'}}) }}
</div>
</div>
</div>
<input type="hidden" id="technicianTicketsIds" name="ids">
</div>
<div class="modal-footer">
<a href="javascript:void(0)" class="button button-3d button-mini button-red f_left" data-bs-dismiss="modal">Annulla</a>
<button type="submit" class="button button-3d button-mini button-green f_right" id="tech_btn"></button>
</div>
{{ form_end(formAssignTechnician) }}
</div>
</div>
</div>
<div id="emailTakeChargeModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form action="{{ path ('user_ticket_send_email_take_charge') }}" method="post">
<div class="modal-header"><h3 class="modal-title">Ticket - Email di notifica prendi in carico</h3></div>
<div class="modal-body">
<div class="row">
<div class="col-12 txt_a_c">
<label class="modal_subtitle">Attenzione!</label>
<p class="modal_paragraph">Cliccando sul bottone <a class='button button-3d button-mini button-green' href='javascript:void(0)'>conferma</a> invierai a tutti i tecnici che hanno dei ticket assegnati ma non presi in carico la notifica.<br>Si è sicuri di voler proseguire?</p>
</div>
</div>
</div>
<div class="modal-footer">
<a href="javascript:void(0)" class="button button-3d button-mini button-red f_left" data-bs-dismiss="modal">Annulla</a>
<button type="submit" class="button button-3d button-mini button-green f_right">Conferma</button>
</div>
</form>
</div>
</div>
</div>
<div id="suspendTicketsModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
{{ form_start(formSuspension, {'attr': {'novalidate': 'novalidate'}}) }}
<div class="modal-header"><h3 class="modal-title">Ticket - Sospendi massivo</h3></div>
<div class="modal-body">
<input type="hidden" id="suspendTicketsIds" name="ids">
{{ form_widget(formSuspension.date, {'attr':{'class':'display_n'}}) }}
{{ form_widget(formSuspension.timeHour, {'attr':{'class':'display_n'}}) }}
{{ form_widget(formSuspension.timeMinute, {'attr':{'class':'display_n'}}) }}
<div class="row">
<div class="col-12 form-group">
<label class="form_label">Esito*</label>
<div {{ form_errors(formSuspension.outcome) }}>
{{ form_widget(formSuspension.outcome, {'attr':{'class':'form-control form-select', 'onChange':'updateReferentAndMotivation()'}}) }}
</div>
</div>
<div class="col-12 col-md-6 form-group" id="div_referent" style="display: none">
<label class="form_label">Referente*</label>
<div {{ form_errors(formSuspension.referent) }}>
{{ form_widget(formSuspension.referent) }}
</div>
</div>
<div class="col-12 col-md-6 form-group" id="div_phone" style="display: none">
<label class="form_label">Telefono*</label>
<div {{ form_errors(formSuspension.phone) }}>
{{ form_widget(formSuspension.phone) }}
</div>
</div>
<div class="col-12 form-group" id="div_photo" style="display: none">
<label class="form_label">Foto*</label>
<div {{ form_errors(formSuspension.file) }}>
{{ form_widget(formSuspension.photoPath, {'attr': {'class':'display_n'}}) }}
{{ form_widget(formSuspension.file, {'attr': {'class':'display_n'}}) }}
<div class="input-group">
<span class="input-group-btn"><button id="selectFile1" class="button button-3d button-small button-rounded button-pr button_input_group" type="button">Seleziona</button></span>
<input id="filename1" type="text" class="form-control" readonly>
</div>
</div>
</div>
<div class="col-12 form-group">
<label class="form_label" id="label_motivation">Motivazione</label>
<div {{ form_errors(formSuspension.motivation) }}>
{{ form_widget(formSuspension.motivation) }}
</div>
</div>
<div class="col-12 col-md-4 form-group">
<label class="form_label">Sospeso da - Data*</label>
<div {{ form_errors(formSuspension.dateFrom) }}>
{{ form_widget(formSuspension.dateFrom, {'attr':{'class':'form-control'}}) }}
</div>
</div>
<div class="col-6 col-md-4 form-group">
<label class="form_label">Sospeso da - Ora*</label>
<div {{ form_errors(formSuspension.timeFromHour) }}>
{{ form_widget(formSuspension.timeFromHour, {'attr':{'class':'form-control form-select'}}) }}
</div>
</div>
<div class="col-6 col-md-4 form-group">
<label class="form_label">Sospeso da - Minuto*</label>
<div {{ form_errors(formSuspension.timeFromMinute) }}>
{{ form_widget(formSuspension.timeFromMinute, {'attr':{'class':'form-control form-select'}}) }}
</div>
</div>
<div class="col-12 col-md-4 form-group" >
<label class="form_label" id="label_suspension_to_date">Sospeso fino a - Data</label>
<div {{ form_errors(formSuspension.dateTo) }}>
{{ form_widget(formSuspension.dateTo, {'attr':{'class':'form-control'}}) }}
</div>
</div>
<div class="col-6 col-md-4 form-group">
<label class="form_label" id="label_suspension_to_time">Sospeso fino a - Ora</label>
<div {{ form_errors(formSuspension.timeToHour) }}>
{{ form_widget(formSuspension.timeToHour, {'attr':{'class':'form-control form-select'}}) }}
</div>
</div>
<div class="col-6 col-md-4 form-group">
<label class="form_label" id="label_suspension_to_minute">Sospeso fino a - Minuto</label>
<div {{ form_errors(formSuspension.timeToMinute) }}>
{{ form_widget(formSuspension.timeToMinute, {'attr':{'class':'form-control form-select'}}) }}
</div>
</div>
</div>
</div>
<div class="modal-footer">
<a href="javascript:void(0)" class="button button-3d button-mini button-red f_left" data-bs-dismiss="modal">Annulla</a>
<button type="submit" class="button button-3d button-mini button-green f_right">Conferma</button>
</div>
{{ form_end(formSuspension) }}
</div>
</div>
</div>
{% elseif app.user.getAccountTypology == 'technician' %}
<div id="takeChargeModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form action="{{ path ('user_ticket_take_charge') }}" method="post">
<div class="modal-header"><h3 class="modal-title">Ticket - Prendi in carico</h3></div>
<div class="modal-body">
<div class="row">
<div class="col-12 txt_a_c">
<label class="modal_subtitle">Attenzione!</label>
<p class="modal_paragraph">Cliccando sul bottone <a class='button button-3d button-mini button-green' href='javascript:void(0)'>conferma</a> prenderai in carico tutti i ticket che ti sono stati assegnati.<br>Si è sicuri di voler proseguire?</p>
</div>
</div>
</div>
<div class="modal-footer">
<a href="javascript:void(0)" class="button button-3d button-mini button-red f_left" data-bs-dismiss="modal">Annulla</a>
<button type="submit" class="button button-3d button-mini button-green f_right">Conferma</button>
</div>
</form>
</div>
</div>
</div>
{% endif %}
{% if app.user.getAccountTypology == 'agency' or app.user.getAccountTypology == 'warehouse' %}
{% if global_company.actualCompany.tagTicketActive %}
{% include 'components/modals/filter_tag.html.twig' with {'number':0, 'tag':tags} %}
{% include 'components/modals/filter_tag.html.twig' with {'number':1, 'tag':tags} %}
{% include 'components/modals/filter_tag.html.twig' with {'number':2, 'tag':tags} %}
{% include 'components/modals/filter_tag.html.twig' with {'number':3, 'tag':tags} %}
{% include 'components/modals/filter_tag.html.twig' with {'number':4, 'tag':tags} %}
{% include 'components/modals/filter_tag.html.twig' with {'number':5, 'tag':tags} %}
{% include 'components/modals/filter_tag.html.twig' with {'number':6, 'tag':tags} %}
{% include 'components/modals/filter_tag.html.twig' with {'number':7, 'tag':tags} %}
{% include 'components/modals/filter_tag.html.twig' with {'number':8, 'tag':tags} %}
{% include 'components/modals/filter_tag.html.twig' with {'number':9, 'tag':tags} %}
{% endif %}
{% include 'components/modals/filter_supplier.html.twig' with {'number':0, 'suppliers':suppliers} %}
{% include 'components/modals/filter_supplier.html.twig' with {'number':1, 'suppliers':suppliers} %}
{% include 'components/modals/filter_supplier.html.twig' with {'number':2, 'suppliers':suppliers} %}
{% include 'components/modals/filter_supplier.html.twig' with {'number':3, 'suppliers':suppliers} %}
{% include 'components/modals/filter_supplier.html.twig' with {'number':4, 'suppliers':suppliers} %}
{% include 'components/modals/filter_supplier.html.twig' with {'number':5, 'suppliers':suppliers} %}
{% include 'components/modals/filter_supplier.html.twig' with {'number':6, 'suppliers':suppliers} %}
{% include 'components/modals/filter_supplier.html.twig' with {'number':7, 'suppliers':suppliers} %}
{% include 'components/modals/filter_supplier.html.twig' with {'number':8, 'suppliers':suppliers} %}
{% include 'components/modals/filter_supplier.html.twig' with {'number':9, 'suppliers':suppliers} %}
{% include 'components/modals/filter_operation.html.twig' with {'number':0, 'operations':operations} %}
{% include 'components/modals/filter_operation.html.twig' with {'number':1, 'operations':operations} %}
{% include 'components/modals/filter_operation.html.twig' with {'number':2, 'operations':operations} %}
{% include 'components/modals/filter_operation.html.twig' with {'number':3, 'operations':operations} %}
{% include 'components/modals/filter_operation.html.twig' with {'number':4, 'operations':operations} %}
{% include 'components/modals/filter_operation.html.twig' with {'number':5, 'operations':operations} %}
{% include 'components/modals/filter_operation.html.twig' with {'number':6, 'operations':operations} %}
{% include 'components/modals/filter_operation.html.twig' with {'number':7, 'operations':operations} %}
{% include 'components/modals/filter_operation.html.twig' with {'number':8, 'operations':operations} %}
{% include 'components/modals/filter_operation.html.twig' with {'number':9, 'operations':operations} %}
{% endif %}
{% endblock %}
{% block javascripts %}
{{ parent() }}
{% if app.user.getAccountTypology == 'agency' or app.user.getAccountTypology == 'warehouse' %}
{% include 'components/js/sort_js.html.twig' with {'number':0, 'actualSortField':filters.sortField, 'actualSortOrder':filters.sortOrder, 'sort_field':'sort_field_0', 'sort_order':'sort_order_0', 'formName':'formFilter_0', 'arrowClass':'filter_arrow'} %}
{% include 'components/js/sort_js.html.twig' with {'number':1, 'actualSortField':filters.sortField, 'actualSortOrder':filters.sortOrder, 'sort_field':'sort_field_1', 'sort_order':'sort_order_1', 'formName':'formFilter_1', 'arrowClass':'filter_arrow'} %}
{% include 'components/js/sort_js.html.twig' with {'number':2, 'actualSortField':filters.sortField, 'actualSortOrder':filters.sortOrder, 'sort_field':'sort_field_2', 'sort_order':'sort_order_2', 'formName':'formFilter_2', 'arrowClass':'filter_arrow'} %}
{% include 'components/js/sort_js.html.twig' with {'number':3, 'actualSortField':filters.sortField, 'actualSortOrder':filters.sortOrder, 'sort_field':'sort_field_3', 'sort_order':'sort_order_3', 'formName':'formFilter_3', 'arrowClass':'filter_arrow'} %}
{% include 'components/js/sort_js.html.twig' with {'number':4, 'actualSortField':filters.sortField, 'actualSortOrder':filters.sortOrder, 'sort_field':'sort_field_4', 'sort_order':'sort_order_4', 'formName':'formFilter_4', 'arrowClass':'filter_arrow'} %}
{% include 'components/js/sort_js.html.twig' with {'number':5, 'actualSortField':filters.sortField, 'actualSortOrder':filters.sortOrder, 'sort_field':'sort_field_5', 'sort_order':'sort_order_5', 'formName':'formFilter_5', 'arrowClass':'filter_arrow'} %}
{% include 'components/js/sort_js.html.twig' with {'number':6, 'actualSortField':filters.sortField, 'actualSortOrder':filters.sortOrder, 'sort_field':'sort_field_6', 'sort_order':'sort_order_6', 'formName':'formFilter_6', 'arrowClass':'filter_arrow'} %}
{% include 'components/js/sort_js.html.twig' with {'number':7, 'actualSortField':filters.sortField, 'actualSortOrder':filters.sortOrder, 'sort_field':'sort_field_7', 'sort_order':'sort_order_7', 'formName':'formFilter_7', 'arrowClass':'filter_arrow'} %}
{% include 'components/js/sort_js.html.twig' with {'number':8, 'actualSortField':filters.sortField, 'actualSortOrder':filters.sortOrder, 'sort_field':'sort_field_8', 'sort_order':'sort_order_8', 'formName':'formFilter_8', 'arrowClass':'filter_arrow'} %}
{% include 'components/js/sort_js.html.twig' with {'number':9, 'actualSortField':filters.sortField, 'actualSortOrder':filters.sortOrder, 'sort_field':'sort_field_9', 'sort_order':'sort_order_9', 'formName':'formFilter_9', 'arrowClass':'filter_arrow'} %}
{% if global_company.actualCompany.tagTicketActive %}
{% include 'components/js/filter_tag_js.html.twig' with {'number':0, 'tags':tags, 'filterTag':filters.tag} %}
{% include 'components/js/filter_tag_js.html.twig' with {'number':1, 'tags':tags, 'filterTag':filters.tag} %}
{% include 'components/js/filter_tag_js.html.twig' with {'number':2, 'tags':tags, 'filterTag':filters.tag} %}
{% include 'components/js/filter_tag_js.html.twig' with {'number':3, 'tags':tags, 'filterTag':filters.tag} %}
{% include 'components/js/filter_tag_js.html.twig' with {'number':4, 'tags':tags, 'filterTag':filters.tag} %}
{% include 'components/js/filter_tag_js.html.twig' with {'number':5, 'tags':tags, 'filterTag':filters.tag} %}
{% include 'components/js/filter_tag_js.html.twig' with {'number':6, 'tags':tags, 'filterTag':filters.tag} %}
{% include 'components/js/filter_tag_js.html.twig' with {'number':7, 'tags':tags, 'filterTag':filters.tag} %}
{% include 'components/js/filter_tag_js.html.twig' with {'number':8, 'tags':tags, 'filterTag':filters.tag} %}
{% include 'components/js/filter_tag_js.html.twig' with {'number':9, 'tags':tags, 'filterTag':filters.tag} %}
{% endif %}
{% include 'components/js/filter_supplier_js.html.twig' with {'number':0, 'suppliers':suppliers, 'filterSupplier':filters.supplier} %}
{% include 'components/js/filter_supplier_js.html.twig' with {'number':1, 'suppliers':suppliers, 'filterSupplier':filters.supplier} %}
{% include 'components/js/filter_supplier_js.html.twig' with {'number':2, 'suppliers':suppliers, 'filterSupplier':filters.supplier} %}
{% include 'components/js/filter_supplier_js.html.twig' with {'number':3, 'suppliers':suppliers, 'filterSupplier':filters.supplier} %}
{% include 'components/js/filter_supplier_js.html.twig' with {'number':4, 'suppliers':suppliers, 'filterSupplier':filters.supplier} %}
{% include 'components/js/filter_supplier_js.html.twig' with {'number':5, 'suppliers':suppliers, 'filterSupplier':filters.supplier} %}
{% include 'components/js/filter_supplier_js.html.twig' with {'number':6, 'suppliers':suppliers, 'filterSupplier':filters.supplier} %}
{% include 'components/js/filter_supplier_js.html.twig' with {'number':7, 'suppliers':suppliers, 'filterSupplier':filters.supplier} %}
{% include 'components/js/filter_supplier_js.html.twig' with {'number':8, 'suppliers':suppliers, 'filterSupplier':filters.supplier} %}
{% include 'components/js/filter_supplier_js.html.twig' with {'number':9, 'suppliers':suppliers, 'filterSupplier':filters.supplier} %}
{% include 'components/js/filter_operation_group_js.html.twig' with {'number':0, 'operations':operations, 'filterOperation':filters.operation} %}
{% include 'components/js/filter_operation_group_js.html.twig' with {'number':1, 'operations':operations, 'filterOperation':filters.operation} %}
{% include 'components/js/filter_operation_group_js.html.twig' with {'number':2, 'operations':operations, 'filterOperation':filters.operation} %}
{% include 'components/js/filter_operation_group_js.html.twig' with {'number':3, 'operations':operations, 'filterOperation':filters.operation} %}
{% include 'components/js/filter_operation_group_js.html.twig' with {'number':4, 'operations':operations, 'filterOperation':filters.operation} %}
{% include 'components/js/filter_operation_group_js.html.twig' with {'number':5, 'operations':operations, 'filterOperation':filters.operation} %}
{% include 'components/js/filter_operation_group_js.html.twig' with {'number':6, 'operations':operations, 'filterOperation':filters.operation} %}
{% include 'components/js/filter_operation_group_js.html.twig' with {'number':7, 'operations':operations, 'filterOperation':filters.operation} %}
{% include 'components/js/filter_operation_group_js.html.twig' with {'number':8, 'operations':operations, 'filterOperation':filters.operation} %}
{% include 'components/js/filter_operation_group_js.html.twig' with {'number':9, 'operations':operations, 'filterOperation':filters.operation} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_0', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_1_1', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_2_1', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_3_1', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_4_1', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_5_1', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_6_1', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_7_1', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_8_1', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_9_1', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_1_2', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_2_2', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_3_2', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_4_2', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_5_2', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_6_2', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_7_2', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_8_2', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_9_2', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_1_3', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_2_3', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_3_3', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_4_3', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_5_3', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_6_3', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_7_3', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_8_3', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/daterangepicker_js.html.twig' with {'id':'daterange_9_3', 'format':'DD-MM-YYYY HH:mm'} %}
{% include 'components/js/upload_file_js.html.twig' with {'number':'1', 'file':'form_suspension_file', 'path':'form_suspension_photoPath'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_number_0'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_termid_0'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_number_1'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_termid_1'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_number_2'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_termid_2'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_number_3'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_termid_3'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_number_4'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_termid_4'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_number_5'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_termid_5'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_number_6'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_termid_6'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_number_7'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_termid_7'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_number_8'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_termid_8'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_number_9'} %}
{% include 'components/js/paste_multi_value_js.html.twig' with {'id':'input_termid_9'} %}
{% endif %}
<script>
$(document).ready(function(){
{% if app.session.get('tab_operation_group') != null %}
var operationGroupInputs = document.getElementsByClassName('operation_group_input');
for(i=0; i<operationGroupInputs.length; i++){
operationGroupInputs.value = "{{ app.session.get('tab_operation_group') }}";
}
{% do app.session.remove('tab_operation_group') %}
{% do app.session.remove('tab_technician') %}
{% endif %}
{% if app.session.get('ticketsError') != null %}
document.getElementById('ticketsIds').value = "{{ app.session.get('ticketsIds') }}";
document.getElementById('action').value = "{{ app.session.get('ticketsAction') }}";
var ticketsIds = "{{ app.session.get('ticketsIds') }}";
var table = document.getElementById('tableTickets');
table.innerHTML = '<tr><th>Numero</th><th>Cliente</th><th>Operazione</th><th>Fornitore</th></tr>';
for(i=0; i<ticketsIds.length; i++){
var tr = document.createElement('tr');
var td1 = document.createElement('td');
var td2 = document.createElement('td');
var td3 = document.createElement('td');
var td4 = document.createElement('td');
td1.innerHTML = document.getElementById('ticket_number_' + ticketsIds[i]).innerHTML;
td2.innerHTML = document.getElementById('ticket_client_' + ticketsIds[i]).innerHTML;
td3.innerHTML = document.getElementById('ticket_operation_' + ticketsIds[i]).innerHTML;
td4.innerHTML = document.getElementById('ticket_supplier_' + ticketsIds[i]).innerHTML;
tr.appendChild(td1);
tr.appendChild(td2);
tr.appendChild(td3);
tr.appendChild(td4);
table.appendChild(tr);
}
switch("{{ app.session.get('ticketsAction') }}"){
case 'suspend_end':
document.getElementById('actionLabel').innerHTML = 'sbloccherai la sospensione per';
document.getElementById('divSuspendEnd').style.display = 'block';
document.getElementById('textareaCausal').style = 'border-color: #CB0C0F';
document.getElementById('textareaCausal').setAttribute('data-bs-toggle', 'tooltip');
document.getElementById('textareaCausal').setAttribute('data-bs-original-title', 'Inserisci la motivazione per sbloccare la sospensione');
break;
default: break;
}
$('#multipleModal').modal({backdrop: 'static', keyboard: false}).modal("show");
{% do app.session.remove('ticketsError') %}
{% endif %}
{% if app.user.getAccountTypology == 'agency' or app.user.getAccountTypology == 'warehouse' %}
var dateRanges = document.getElementsByClassName('daterange1');
for(i=0; i<dateRanges.length; i++){
{% if filters.datetimeStart != null %}
dateRanges[i].value = "{{ filters.datetimeStart }}";
{% else %}
dateRanges[i].value = null;
{% endif %}
}
var dateRanges2 = document.getElementsByClassName('daterange2');
for(i=0; i<dateRanges2.length; i++){
{% if filters.datetimeExpiration != null %}
dateRanges2[i].value = "{{ filters.datetimeExpiration }}";
{% else %}
dateRanges2[i].value = null;
{% endif %}
}
var dateRanges3 = document.getElementsByClassName('daterange3');
for(i=0; i<dateRanges3.length; i++){
{% if filters.datetimeEnd != null %}
dateRanges3[i].value = "{{ filters.datetimeEnd }}";
{% else %}
dateRanges3[i].value = null;
{% endif %}
}
{% endif %}
});
{% if app.user.getAccountTypology == 'agency' or app.user.getAccountTypology == 'warehouse' %}
function assignTechnician(type, index){
var checkboxes = document.getElementsByClassName('ticket_' + index + '_checkbox');
const array = [];
for(i=0; i<checkboxes.length; i++){
if(checkboxes[i].checked)
array.push(checkboxes[i].value);
}
document.getElementById('technicianTicketsIds').value = array;
switch(type){
case 'assign': document.getElementById('tech_span').innerHTML = 'Assegna'; document.getElementById('tech_btn').innerHTML = 'Assegna'; break;
case 'change': document.getElementById('tech_span').innerHTML = 'Cambia'; document.getElementById('tech_btn').innerHTML = 'Cambia'; break;
default: break;
}
$('#assignTechnicianModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function sendEmailTakeCharge(){
$('#emailTakeChargeModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function suspendTickets(index){
var checkboxes = document.getElementsByClassName('ticket_' + index + '_checkbox');
const array = [];
for(i=0; i<checkboxes.length; i++){
if(checkboxes[i].checked)
array.push(checkboxes[i].value);
}
document.getElementById('suspendTicketsIds').value = array;
$('#suspendTicketsModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
$('#form_suspension_dateFrom').datepicker({ autoclose: true, todayHighlight: true, format: "dd-mm-yyyy", endDate: "today" });
$('#form_suspension_dateTo').datepicker({ autoclose: true, todayHighlight: true, format: "dd-mm-yyyy" });
$(document).ready(function(){
updateReferentAndMotivation();
{% if app.session.get('openSuspensionModal') %}
document.getElementById('suspendTicketsIds').value = "{{ app.session.get('openSuspensionModalIds') }}";
$('#suspendTicketsModal').modal({backdrop: 'static', keyboard: false}).modal("show");
var ids = "{{ app.session.get('openSuspensionModalIds') }}".split(',');
for(i=0; i<ids.length; i++) document.getElementById('ticket_checkbox_' + ids[i]).checked = true;
{% do app.session.remove('openSuspensionModal') %}
{% do app.session.remove('openSuspensionModalIds') %}
{% endif %}
});
function updateReferentAndMotivation(){
var outcomeId = document.getElementById('form_suspension_outcome').value;
document.getElementById('label_suspension_to_date').innerHTML = 'Sospeso fino a - Data';
document.getElementById('label_suspension_to_time').innerHTML = 'Sospeso fino a - Ora';
document.getElementById('div_referent').style.display = 'none';
document.getElementById('label_motivation').innerHTML = 'Motivazione';
document.getElementById('div_phone').style.display = 'none';
document.getElementById('div_photo').style.display = 'none';
if(outcomeId != ""){
$.post('{{ path ("user_ticket_intervention_outcome_update") }}', {outcomeId: outcomeId}, function(response){
if(response.code == 200 && response.success){
if(response.suspensionTo) document.getElementById('label_suspension_to_date').innerHTML = 'Sospeso fino a - Data*';
if(response.suspensionTo) document.getElementById('label_suspension_to_time').innerHTML = 'Sospeso fino a - Ora*';
if(response.referent) document.getElementById('div_referent').style.display = 'block';
if(response.motivation) document.getElementById('label_motivation').innerHTML = 'Motivazione*';
if(response.phone) document.getElementById('div_phone').style.display = 'block';
if(response.photo) document.getElementById('div_photo').style.display = 'block';
}
}, "json");
}
}
{% elseif app.user.getAccountTypology == 'technician' %}
function ticketsTakeCharge(){
$('#takeChargeModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
{% endif %}
function selectAll(index){
var checkboxes = document.getElementsByClassName('ticket_' + index + '_checkbox');
var isSelect = document.getElementById("ticket_" + index + "_all_checkboxes").checked;
for(i=0; i<checkboxes.length; i++)
checkboxes[i].checked = isSelect;
updateButtons(index);
}
function updateButtons(index) {
const inputSelectAll = document.getElementById(`ticket_${index}_all_checkboxes`);
const checkboxes = document.getElementsByClassName(`ticket_${index}_checkbox`);
const GREEN = "button button-3d button-mini button-green f_right m_b_10p";
const GREY = "button button-3d button-mini button-grey f_right m_b_10p";
const getBtn = (suffix) => document.getElementById(`button_${index}_${suffix}`);
// Mappa pulsanti principali
const buttons = {
action: {
0: { btn: getBtn('wrong'), href: () => `javascript: sendAction('wrong', ${index})` },
1: { btn: getBtn('assign'), href: () => `javascript: assignTechnician('assign', ${index})` },
4: { btn: getBtn('cancel'), href: () => `javascript: sendAction('cancel', ${index})` },
6: { btn: getBtn('closed_portal'), href: () => `javascript: sendAction('closed_portal', ${index})` },
8: { btn: getBtn('wrong'), href: () => `javascript: sendAction('wrong', ${index})` },
9: { btn: getBtn('delete'), href: () => `javascript: sendAction('delete', ${index})` },
2: { btn: getBtn('print'), href: () => `javascript: sendAction('print', ${index})` },
3: { btn: getBtn('print'), href: () => `javascript: sendAction('print', ${index})` },
5: { btn: getBtn('print'), href: () => `javascript: sendAction('print', ${index})` },
11:{ btn: getBtn('print'), href: () => `javascript: sendAction('print', ${index})` },
12:{ btn: getBtn('print'), href: () => `javascript: sendAction('print', ${index})` },
14:{ btn: getBtn('print'), href: () => `javascript: sendAction('print', ${index})` }
},
secondary: {
1: { btn: getBtn('cancel'), href: () => `javascript: sendAction('cancel', ${index})` },
2: { btn: getBtn('cancel'), href: () => `javascript: sendAction('cancel', ${index})` },
3: { btn: getBtn('suspend'), href: () => `javascript: suspendTickets(${index})` },
4: { btn: getBtn('approve'), href: () => `javascript: sendAction('approve', ${index})` },
5: { btn: getBtn('suspend_end'), href: () => `javascript: sendAction('suspend_end', ${index})` },
14:{ btn: getBtn('suspend_end'), href: () => `javascript: sendAction('suspend_end', ${index})` }
},
third: {
1: { btn: getBtn('suspend'), href: () => `javascript: suspendTickets(${index})` },
2: { btn: getBtn('suspend'), href: () => `javascript: suspendTickets(${index})` },
3: { btn: getBtn('cancel'), href: () => `javascript: sendAction('cancel', ${index})` },
5: { btn: getBtn('cancel'), href: () => `javascript: sendAction('cancel', ${index})` }
},
extra: {
1: [
{ btn: getBtn('print'), href: () => `javascript: sendAction('print', ${index})` },
{ btn: getBtn('export'), href: () => `javascript: sendAction('export', ${index})` }
],
2: [
{ btn: getBtn('change'), href: () => `javascript: assignTechnician('change', ${index})` },
{ btn: getBtn('urge'), href: () => `javascript: sendAction('urge', ${index})` },
{ btn: getBtn('export'), href: () => `javascript: sendAction('export', ${index})` }
],
3: [
{ btn: getBtn('change'), href: () => `javascript: assignTechnician('change', ${index})` },
{ btn: getBtn('urge'), href: () => `javascript: sendAction('urge', ${index})` },
{ btn: getBtn('export'), href: () => `javascript: sendAction('export', ${index})` }
],
4: [{ btn: getBtn('export'), href: () => `javascript: sendAction('export', ${index})` }],
5: [{ btn: getBtn('export'), href: () => `javascript: sendAction('export', ${index})` }],
6: [{ btn: getBtn('export'), href: () => `javascript: sendAction('export', ${index})` }],
7: [{ btn: getBtn('export'), href: () => `javascript: sendAction('export', ${index})` }],
8: [{ btn: getBtn('export'), href: () => `javascript: sendAction('export', ${index})` }],
9: [{ btn: getBtn('export'), href: () => `javascript: sendAction('export', ${index})` }]
}
};
// Checkbox logic
let selected = [];
let allSelected = true;
for (let i = 0; i < checkboxes.length; i++) {
if (checkboxes[i].checked) {
selected.push(checkboxes[i].value);
} else {
allSelected = false;
}
}
if (!allSelected) {
inputSelectAll.checked = false;
}
const enable = selected.length > 0;
// Utility per attivare/disattivare pulsanti
const toggleButton = (btnObj) => {
if (!btnObj || !btnObj.btn) return;
btnObj.btn.className = enable ? GREEN : GREY;
btnObj.btn.href = enable ? btnObj.href() : 'javascript: void(0)';
};
// Applica stato pulsanti
toggleButton(buttons.action[index]);
toggleButton(buttons.secondary[index]);
toggleButton(buttons.third[index]);
if (buttons.extra[index]) {
buttons.extra[index].forEach(toggleButton);
}
}
function sendAction(action, index){
var checkboxes = document.getElementsByClassName('ticket_' + index + '_checkbox');
const array = [];
for(i=0; i<checkboxes.length; i++){
if(checkboxes[i].checked)
array.push(checkboxes[i].value);
}
{% do app.session.set('printIndex', 0) %}
document.getElementById('ticketsIds').value = array;
document.getElementById('action').value = action;
document.getElementById('divSuspendEnd').style.display = 'none';
var table = document.getElementById('tableTickets');
switch(action){
case 'wrong': var label = 'renderai errati'; break;
case 'print': var label = 'stamperai'; break;
case 'take_charge': var label = 'prenderai in carico'; break;
case 'suspend_end': var label = 'sbloccherai la sospensione per'; document.getElementById('divSuspendEnd').style.display = 'block'; break;
case 'cancel': var label = 'annullerai'; break;
case 'approve': var label = 'approverai le sospensioni di'; break;
case 'delete': var label = 'eliminerai definitivamente'; break;
case 'urge': var label = 'solleciterai il tecnico a completare'; break;
case 'export':
var table = document.getElementById('exportTableTickets');
document.getElementById('exportTicketsIds').value = array;
break;
}
document.getElementById('actionLabel').innerHTML = label;
table.innerHTML = '<tr><th>Numero</th><th>Cliente</th><th>Operazione</th><th>Fornitore</th></tr>';
for(i=0; i<array.length; i++){
var tr = document.createElement('tr');
var td1 = document.createElement('td');
var td2 = document.createElement('td');
var td3 = document.createElement('td');
var td4 = document.createElement('td');
td1.innerHTML = document.getElementById('ticket_number_' + array[i]).innerHTML;
td2.innerHTML = document.getElementById('ticket_client_' + array[i]).innerHTML;
td3.innerHTML = document.getElementById('ticket_operation_' + array[i]).innerHTML;
td4.innerHTML = document.getElementById('ticket_supplier_' + array[i]).innerHTML;
tr.appendChild(td1);
tr.appendChild(td2);
tr.appendChild(td3);
tr.appendChild(td4);
table.appendChild(tr);
}
switch(index){
case 0: document.getElementById('multipleTab').value = 'error'; break;
case 1: document.getElementById('multipleTab').value = 'to_assign'; break;
case 2: document.getElementById('multipleTab').value = 'assigned'; break;
case 3: document.getElementById('multipleTab').value = 'taken_charge'; break;
case 4: document.getElementById('multipleTab').value = 'suspension_request'; break;
case 5: document.getElementById('multipleTab').value = 'suspended'; break;
case 6: document.getElementById('multipleTab').value = 'closed'; break;
case 8: document.getElementById('multipleTab').value = 'canceled'; break;
case 9: document.getElementById('multipleTab').value = 'wrong'; break;
case 11: document.getElementById('multipleTab').value = 'assigned'; break;
case 12: document.getElementById('multipleTab').value = 'taken_charge'; break;
case 14: document.getElementById('multipleTab').value = 'suspended'; break;
default: break;
}
switch(action){
case 'export': $('#exportModal').modal({backdrop: 'static', keyboard: false}).modal("show"); break;
default: $('#multipleModal').modal({backdrop: 'static', keyboard: false}).modal("show"); break;
}
}
function showNotes(id){
document.getElementById('notes_number').innerHTML = document.getElementById('ticket_number_' + id).innerHTML;
document.getElementById('notes_anomaly').innerHTML = document.getElementById('ticket_anomaly_' + id).value;
document.getElementById('notes_client_time').innerHTML = document.getElementById('ticket_client_notes_' + id).value;
document.getElementById('notes_client').innerHTML = document.getElementById('ticket_client_time_' + id).value;
$('#notesModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
document.querySelector('#exportForm').addEventListener('submit', function (e) {
e.preventDefault();
const form = e.target;
const formData = new FormData(form);
fetch(form.action, { method: 'POST', body: formData})
.then(response => {if (!response.ok) throw new Error('Errore export'); return response.blob(); })
.then(blob => {
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'Ticket selezionati.csv';
document.body.appendChild(a);
a.click();
a.remove();
window.URL.revokeObjectURL(url);
$('#exportModal').modal('hide');
triggerPage();
})
.catch(err => {
alert('Errore durante l\'esportazione');
console.error(err);
});
});
</script>
{% endblock %}