{% extends 'role/user/index.html.twig' %}
{% block title %}Ticket - Scheda{% endblock %}
{% block pageTitleH1 %}Ticket - Scheda{% endblock %}
{% block pageTitleBreadcrumb %}
<li class="breadcrumb-item"><a href="{{ path ('user_tickets') }}">Ticket</a></li>
<li class="breadcrumb-item"><a href="{{ path ('user_ticket_list') }}">Lista</a></li>
<li class="breadcrumb-item"><a href="javascript:void(0)">Scheda</a></li>
{% endblock %}
{% block subMenuLeft %}
<li class="nav-item"><a class="nav-link" href="{{ path ('user_ticket_list') }}">Lista ticket</a></li>
{% if ticket.client != null and app.user.canRead('anagraphic_client') %}
<li class="nav-item"><a class="nav-link" href="{{ path('user_anagraphic_client_sheet', {'clientId':ticket.client.id}) }}">Scheda cliente</a></li>
{% endif %}
{% endblock %}
{% block subMenuRight %}
{% if app.user.canMakeTicketActions('agency_warehouse', null) %}
{% if ticket.canMakeActionByStatus('to_assign,assigned,taken_charge,suspension_request,suspended,wrong,closed') %}
<li class="nav-item"><a class="nav-link" href="javascript: ticketCancel()">Annulla ticket</a></li>
{% endif %}
{% if ticket.canMakeActionByStatus('wrong') and ticket.canDelete('activities') %}
<li class="nav-item"><a class="nav-link" href="javascript: ticketDelete()">Elimina ticket</a></li>
{% endif %}
{% if ticket.canMakeActionByStatus('assigned,taken_charge,suspension_request,suspended') %}
<li class="nav-item"><a class="nav-link" href="javascript: ticketClose()">Completa ticket</a></li>
{% endif %}
{% if ticket.systemError %}
<li class="nav-item"><a class="nav-link" href="javascript: ticketWrong()">Ticket errato</a></li>
{% endif %}
{% if ticket.canMakeActionByStatus('canceled') %}
<li class="nav-item"><a class="nav-link" href="javascript: ticketRestore()">Ripristina ticket</a></li>
{% endif %}
{% if ticket.canMakeActionByStatus('closed') and not ticket.closedOnPortal %}
<li class="nav-item"><a class="nav-link" href="javascript: ticketClosedPortalConfirm({{ ticket.id }})">Ticket chiuso su portale fornitore</a></li>
{% endif %}
{% if ticket.canMakeActionByStatus('closed_portal') %}
<li class="nav-item"><a class="nav-link" href="javascript: ticketClosedConfirm({{ ticket.id }})">Torna a stato chiuso</a></li>
{% endif %}
{% endif %}
{% if ticket.canMakeActionByStatus('assigned,taken_charge,suspended,canceled,closed,closed_portal') %}
<li class="nav-item"><a class="nav-link" href="{{ path ('user_ticket_report_print_single', {'ticketId':ticket.id}) }}">Stampa verbale</a></li>
{% endif %}
{% endblock %}
{% block content %}
{% set canTicketEditabile = false %}
{% if app.user.canMakeTicketActions('agency_warehouse', null) and ticket.canMakeActionByStatus('to_assign,assigned,taken_charge,suspension_request,suspended,canceled,wrong') %}
{% set canTicketEditabile = true %}
{% endif %}
<section class="container m_tb_40p">
<div class="row">
<div class="col-12 {% if not ticket.systemError %}col-lg-7{% else %}col-lg-6{% endif %}">
<h3 class="form_title">Ticket: {{ ticket.number }}</h3>
<hr class="m_t_none">
<table class="table table-sm responsive_font_size">
<tr>
<th class="td_w_150p">Numero</th>
<td colspan="2">{{ ticket.number }}</td>
</tr>
<tr>
<th>Termid</th>
<td colspan="2">{% if ticket.termid != null %}{{ ticket.termid }}{% else %}---{% endif %}</td>
</tr>
<tr>
<th>Stato {{ ticket.supplier }}</th>
<td colspan="2">{% if ticket.closedOnPortal %}<i class="icon-circle cursor_p color_gr_dark"></i> Intervento chiuso{% else %}<i class="icon-circle cursor_p color_r"></i> Intervento aperto{% endif %}</td>
</tr>
<tr>
<th>Stato EPOSM</th>
<td colspan="2">{{ ticket.displayStatus('string')|raw }}</td>
</tr>
<tr>
<th>Fatturabile</th>
<td {% if not app.user.canMakeTicketActions('agency_warehouse', null) %}colspan="2"{% endif %}>{% if ticket.billable %}Sì{% else %}No{% endif %}</td>
{% if app.user.canMakeTicketActions('agency_warehouse', null) %}
<td class="td_action"><a href="javascript: ticketBillable()" data-bs-toggle="tooltip" title="Cambia fatturabile" class="f_right"><img class="icon_action icon_pr" src="{{ asset(icon_exchange) }}"></a></td>
{% endif %}
</tr>
<tr>
<th>Indirizzo</th>
{% if ticket.canMakeActionByStatus('to_assign,assigned,taken_charge,suspended,closed') %}
<td>{% include 'components/twig/display_address.html.twig' with {'type':'ticket', 'obj':ticket} %}</td>
<td class="td_action"><a href="javascript: ticketAddressEdit()" data-bs-toggle="tooltip" title="Modifica indirizzo" class="f_right"><img class="icon_action icon_amber" src="{{ asset(icon_edit) }}"></a></td>
{% else %}
<td colspan="2">{% include 'components/twig/display_address.html.twig' with {'type':'ticket', 'obj':ticket} %}</td>
{% endif %}
</tr>
<tr>
<th>Cliente</th>
<td colspan="2">{% if ticket.client != null %}<a href="{{ path('user_anagraphic_client_sheet', {'clientId':ticket.client.id}) }}"><u>{{ ticket.client }}</u></a>{% else %}---{% endif %}</td>
</tr>
<tr>
<th>Cliente - Indirizzo</th>
<td colspan="2">{% if ticket.client != null %}{% include 'components/twig/display_address.html.twig' with {'type':'client', 'obj':ticket.client} %}{% else %}---{% endif %}</td>
</tr>
{% if ticket.displayJsonValueByColumn('Prefisso') is not null and ticket.displayJsonValueByColumn('Prefisso') != "" and ticket.displayJsonValueByColumn('Prefisso') != "---" %}
<tr>
<th>Cliente - Prefisso</th>
<td colspan="2">{{ ticket.displayJsonValueByColumn('Prefisso') }}</td>
</tr>
{% endif %}
<tr>
<th>Cliente - Telefoni</th>
<td>{% if ticket.client != null %}{{ ticket.client.displayPhones|raw }}{% else %}---{% endif %}</td>
<td class="td_action"><a href="javascript: clientPhoneCall()" data-bs-toggle="tooltip" title="Chiama" class="f_right"><img class="icon_action icon_green" src="{{ asset(icon_telephone_gr) }}"></a></td>
</tr>
<tr>
<th>Cliente - Orari apertura</th>
<td>{% if ticket.client != null %}{{ ticket.client.openings }}{% else %}---{% endif %}</td>
<td class="td_action"><a href="javascript: clientEdit()" data-bs-toggle="tooltip" title="Modifica dati" class="f_right"><img class="icon_action icon_amber" src="{{ asset(icon_edit) }}"></a></td>
</tr>
<tr>
<th>Cliente - Chiusure</th>
<td>{% if ticket.client != null %}{{ ticket.client.closures }}{% else %}---{% endif %}</td>
<td class="td_action"><a href="javascript: clientEdit()" data-bs-toggle="tooltip" title="Modifica dati" class="f_right"><img class="icon_action icon_amber" src="{{ asset(icon_edit) }}"></a></td>
</tr>
<tr>
<th>Cliente - Note</th>
<td>{% if ticket.client != null %}{{ ticket.client.notes }}{% else %}---{% endif %}</td>
<td class="td_action"><a href="javascript: clientEdit()" data-bs-toggle="tooltip" title="Modifica dati" class="f_right"><img class="icon_action icon_amber" src="{{ asset(icon_edit) }}"></a></td>
</tr>
<tr>
<th>Tecnico</th>
{% if ticket.technician != null %}
<td colspan="2">{{ ticket.technician }}</td>
{% else %}
<td colspan="2">---</td>
{% endif %}
</tr>
<tr>
<th>Operazione</th>
<td {% if not canTicketEditabile %}colspan="2"{% endif %}>{% if ticket.operation != null %}{{ 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 %}{% else %}---{% endif %}</td>
{% if canTicketEditabile %}
<td class="td_action"><a href="javascript: operationEdit()" data-bs-toggle="tooltip" title="Modifica operazione" class="f_right"><img class="icon_action icon_amber" src="{{ asset(icon_edit) }}"></a></td>
{% endif %}
</tr>
{% if ticket.operation.getKeyValueByValue('Dettagli intervento') and ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('Dettagli intervento')) != null %}
<tr>
<th>Dettagli intervento</th>
<td colspan="2">{{ ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('Dettagli intervento')) }}</td>
</tr>
{% endif %}
{% if ticket.operation.getKeyValueByValue('Cluster') and ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('Cluster')) != null %}
<tr>
<th>Cluster</th>
<td colspan="2">{{ ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('Cluster')) }}</td>
</tr>
{% endif %}
<tr>
<th>Fornitore</th>
<td colspan="2">{{ ticket.supplier }}</td>
</tr>
{% if ticket.displayJsonValueByColumn('SLOT') != null %}
<tr>
<th>SLOT</th>
<td colspan="2">{{ ticket.displayJsonValueByColumn('SLOT') }}</td>
</tr>
{% endif %}
<tr>
<th>Ricezione (data/ora)</th>
<td colspan="2">{% if ticket.datetimeStart != null %}{{ ticket.datetimeStart|date('d-m-Y --- H:i') }}{% else %}---{% endif %}</td>
</tr>
<tr>
<th>Scadenza (data/ora)</th>
<td {% if not canTicketEditabile %}colspan="2"{% endif %}>{% if ticket.datetimeExpiration != null %}{{ ticket.datetimeExpiration|date('d-m-Y --- H:i') }}{% else %}---{% endif %}</td>
{% if canTicketEditabile %}
<td class="td_action"><a href="javascript: expirationDatetimeEdit()" data-bs-toggle="tooltip" title="Modifica data scadenza" class="f_right"><img class="icon_action icon_amber" src="{{ asset(icon_edit) }}"></a></td>
{% endif %}
</tr>
{% if ticket.canMakeActionByStatus('closed,closed_portal') %}
<tr>
<th>Chiusura (data/ora)</th>
<td colspan="2">{{ ticket.datetimeEnd|date('d-m-Y --- H:i') }}</td>
</tr>
<tr>
<th>Matricole intervento completato</th>
<td colspan="2">
{% if ticket.getInterventionCompleted is not null %}
<table class="table table-sm b_none">
{% for act in ticket.getInterventionCompleted.activities %}
<tr>
{% if act.producerWithdraw != null or act.supplierWithdraw != null %}<td><b>Ritirato</b> --- Produttore: {{ act.productWithdraw.codeProducer|default('') }} {% if act.supplierWithdraw != null %} Fornitore: {{ act.productWithdraw.codeSupplier }}{% endif %}</td>{% endif %}
{% if act.producerActual != null or act.supplierActual != null %}<td><b>Attuale</b> --- Produttore: {{ act.productActual.codeProducer|default('') }} {% if act.supplierActual != null %} Fornitore: {{ act.productActual.codeSupplier }}{% endif %}</td>{% endif %}
{% if act.producerInstallation != null or act.supplierInstallation != null %}<td><b>Installato</b> --- Produttore: {{ act.productInstallation.codeProducer|default('') }} {% if act.supplierInstallation != null %} Fornitore: {{ act.productInstallation.codeSupplier }}{% endif %}</td>{% endif %}
</tr>
{% endfor %}
</table>
{% else %}
Nessuna attività di chiusura intervento inserita
{% endif %}
</td>
</tr>
{% endif %}
<tr>
<th>Lettera di vettura</th>
<td {% if not canTicketEditabile %}colspan="2"{% endif %}>{{ ticket.waybill|default('---') }}</td>
{% if canTicketEditabile %}
<td class="td_action"><a href="javascript: waybillEdit()" data-bs-toggle="tooltip" title="Modifica lettera di vettura" class="f_right"><img class="icon_action icon_amber" src="{{ asset(icon_edit) }}"></a></td>
{% endif %}
</tr>
{% if ticket.systemError %}
<tr>
<th>Errori registrazione</th>
<td colspan="2">{{ ticket.systemErrorDetails }}</td>
</tr>
{% endif %}
{{ displayJsonReport|raw }}
<tr>
<th>OTP</th>
<td colspan="2">{% if ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('OTP')) %}{{ ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('OTP')) }} {% if ticket.operation.getKeyByValue('OTP').displayMappingExtraValue('display_qr') == 1 %}<a href="javascript:showOtp()" class="button button-3d button-mini button-pr">QR code</a>{% endif %}{% else %}---{% endif %}</td>
</tr>
<tr>
<th>Dati JSON completi</th>
<td colspan="2">
{% if ticket.json != '[{}]' %}
<a href="javascript:jsonData()" class="button button-3d button-mini button-pr">Visualizza</a>
{% else %}
<i class="icon-warning-sign"></i> Ticket importato manualmente, nessun dato ulteriore presente.
{% endif %}
</td>
</tr>
</table>
</div>
<div class="col-12 {% if not ticket.systemError %}col-lg-5{% else %}col-lg-6{% endif %}">
{% if app.user.canMakeTicketActions('agency_warehouse', null) %}
{# AGENZIA #}
<div class="row m_b_30p">
<div class="col-12">
{% if ticket.systemError %}
{# Errori importazione ticket #}
<h3 class="form_title">Errore rilevato</h3>
<hr class="m_t_none">
<p>{{ ticket.systemErrorDetails|raw }}</p>
{% if ticket.systemErrorSlug == 'supplier' %} {# Errore - Fornitore non identificato Meps/Monetica #}
{{ form_start(formErrorSupplier, {'attr': {'novalidate': 'novalidate'}}) }}
<div class="form-group">
<label class="form_label">Scegli il fornitore</label>
<div {{ form_errors(formErrorSupplier.supplier) }}>
{{ form_widget(formErrorSupplier.supplier, {'attr':{'class':'form-control form-select'}}) }}
</div>
</div>
<div class="txt_a_c">
<button type="submit" class="button button-3d button-small button-green">Salva</button>
</div>
{{ form_end(formErrorSupplier) }}
{% elseif ticket.systemErrorSlug == 'operation' %} {# Errore - Operazione non identificata #}
{{ form_start(formErrorOperation, {'attr': {'novalidate': 'novalidate'}}) }}
<div class="form-group">
<label class="form_label">Scegli l'operazione</label>
<div {{ form_errors(formErrorOperation.operation) }}>
{{ form_widget(formErrorOperation.operation, {'attr':{'class':'form-control form-select'}}) }}
</div>
</div>
<div class="txt_a_c">
<button type="submit" class="button button-3d button-small button-green">Salva</button>
</div>
{{ form_end(formErrorOperation) }}
{% elseif ticket.systemErrorSlug == 'client' %} {# Errore - Non presente chiave per identificare cliente #}
<a href="{{ path ('user_ticket_redirect_supplier_operation', {'ticketId':ticket.id}) }}" class="button button-3d button-small button-pr f_left">Vai alla scheda operazione</a>
<a href="{{ path ('user_ticket_sheet_update_data', {'ticketId':ticket.id}) }}" class="button button-3d button-small button-pr f_right">Aggiorna dati</a>
{% elseif ticket.systemErrorSlug == 'province_alias' %} {# Errore - Provincia non trovata #}
{{ form_start(formErrorProvince, {'attr': {'novalidate': 'novalidate'}}) }}
<div class="form-group">
<label class="form_label">Provincia*</label>
<div {{ form_errors(formErrorProvince.idProvince) }}>
{{ form_widget(formErrorProvince.idProvince, {'attr':{'class':'form-control form-select'}}) }}
</div>
</div>
<div class="txt_a_c">
<button type="submit" class="button button-3d button-small button-green">Salva</button>
</div>
{{ form_end(formErrorProvince) }}
{% elseif ticket.systemErrorSlug == 'city_alias' %} {# Errore - Città non trovata #}
<a href="{{ path ('user_ticket_redirect_alias_city', {'ticketId':ticket.id}) }}" class="button button-3d button-small button-pr f_left">Vai ad alias città </a>
<a href="{{ path ('user_ticket_sheet_update_data', {'ticketId':ticket.id}) }}" class="button button-3d button-small button-pr f_right">Aggiorna dati</a>
{% elseif ticket.systemErrorSlug == 'city' %} {# Errore - Provincia non coperta dall'agenzia #}
{{ form_start(formErrorAddress, {'attr': {'novalidate': 'novalidate'}}) }}
<div class="form-group">
<label class="form_label">Indirizzo</label>
<div {{ form_errors(formErrorAddress.address) }}>
{{ form_widget(formErrorAddress.address) }}
</div>
</div>
<div class="row">
<div class="col-12 col-md-8 form-group">
<label class="form_label">Città *</label>
<div {{ form_errors(formErrorAddress.cityId) }}>
{{ form_widget(formErrorAddress.cityName, {'attr':{'onClick':'javascript: cityModal1()', 'readonly':true}}) }}
{{ form_widget(formErrorAddress.cityId, {'attr':{'class':'display_n'}}) }}
</div>
</div>
<div class="col-12 col-md-4 form-group">
<label class="form_label">CAP*</label>
<div {{ form_errors(formErrorAddress.zip) }}>
<select id="form_error_address_select_zips" class="form-control form-select" readonly onChange="javascript: zipSet1()"><option value=""></option></select>
{{ form_widget(formErrorAddress.zip, {'attr':{'class':'display_n'}}) }}
</div>
</div>
</div>
<div class="txt_a_c">
<button type="submit" class="button button-3d button-small button-green">Salva</button>
</div>
{{ form_end(formErrorAddress) }}
{% elseif ticket.systemErrorSlug == 'key_mapping' %} {# Errore - Chiavi mappatura non trovata #}
{{ form_start(formErrorKeyMapping, {'attr': {'novalidate': 'novalidate'}}) }}
<label class="form_label">Chiavi mappatura</label>
<table class="table table-sm b_none" id="collector">
<tr>
<th><label class="form_label m_b_none">Obb</label></th>
<th><label class="form_label m_b_none">Campo ticket</label></th>
<th><label class="form_label m_b_none">Chiave mappatura</label></th>
<th><label class="form_label m_b_none">Extra</label></th>
</tr>
{% for km in formErrorKeyMapping.keyMappings %}
<tr>
<td class="txt_a_c">{% if km.keyRequired.vars.value %}Sì{% else %}No{% endif %}</td>
<td>{{ km.ticketColumn.vars.value }}</td>
<td><div {{ form_errors(km.mappingValue) }}>{{ form_widget(km.mappingValue) }}</div></td>
<td><div {{ form_errors(km.mappingExtra) }}>{{ form_widget(km.mappingExtra) }}</div></td>
</tr>
{{ form_widget(km.keyRequired, {'attr':{'class':'display_n'}}) }}
{{ form_widget(km.ticketColumn, {'attr':{'class':'display_n'}}) }}
{% endfor %}
</table>
<div class="txt_a_c">
<button type="submit" class="button button-3d button-small button-green">Salva</button>
</div>
{{ form_end(formErrorKeyMapping) }}
{% elseif ticket.systemErrorSlug == 'tariff' %} {# Errore - Tariffa operazione di quella provincia/citta/cap non trovata #}
<a href="{{ path ('user_ticket_redirect_supplier_operation', {'ticketId':ticket.id}) }}" class="button button-3d button-small button-pr f_left">Vai alla scheda operazione</a>
<a href="{{ path ('user_ticket_sheet_update_data', {'ticketId':ticket.id}) }}" class="button button-3d button-small button-pr f_right">Aggiorna dati</a>
{% elseif ticket.systemErrorSlug == 'tariff-uav' %} {# Errore - Tariffa UAV fornitore non trovata #}
<a href="{{ path ('user_anagraphic_supplier_sheet', {'supplierId':ticket.supplier.id}) }}" class="button button-3d button-small button-pr f_left">Vai alla scheda fornitore</a>
<a href="{{ path ('user_ticket_sheet_update_data', {'ticketId':ticket.id}) }}" class="button button-3d button-small button-pr f_right">Aggiorna dati</a>
{% endif %}
{% else %}
<div class="row">
<div class="col-12 m_b_20p">
<h3 class="form_title">Tariffa applicata
{% if ticket.canMakeActionByStatus('assigned,taken_charge,closed') %}
<a href="javascript: operationTariffAmountChange()" class="button button-3d button-mini button-amber f_right m_b_none">Modifica tariffa</a>
{% endif %}
</h3>
<hr class="m_t_none">
<table class="table table-sm b_none m_b_none font_14">
<tr>
<th class="td_w_150p">Operazione</th>
<td>{% if ticket.operationTariffAmount != null %}{{ ticket.operationTariffAmount.tariff.operation }}{% endif %}</td>
</tr>
<tr>
<th>Area</th>
<td>{% if ticket.operationTariffAmount != null %}{{ ticket.operationTariffAmount.tariff.idProvince|translate_province }} - {% if ticket.operationTariffAmount.tariff.allZip %}Tutti i CAP{% else %}{{ ticket.operationTariffAmount.tariff.displayFirstThreeZips }}{% endif %}{% endif %}</td>
</tr>
<tr>
<th>Tariffa</th>
<td>{% if ticket.operationTariffAmount != null %}{{ ticket.operationTariffAmount.value }}{% endif %}</td>
</tr>
{% if ticket.technician != null %}
<tr>
<th>Tecnico</th>
<td>{{ ticket.technician }}</td>
</tr>
{% endif %}
</table>
</div>
<div class="col-12">
<h3 class="form_title">Azioni</h4>
<hr class="m_t_none">
{# Azioni in base allo stato #}
{% if ticket.canMakeActionByStatus('to_assign') %}
{# ASSEGNA TECNICO #}
<h4 class="form_title">Assegna tecnico</h4>
{% if technicians|length > 0 %}
<table class="table table-sm table-hover m_b_none responsive_font_size">
<thead>
<tr>
<th>Tecnico</th>
<th class="txt_a_c">Del fornitore</th>
<th class="txt_a_c">In copertura</th>
<th class="txt_a_c">In corso/Sospesi</th>
<th></th>
</tr>
</thead>
<tbody>
{% for t in technicians|sort((a, b) => a[0].profile.surname <=> b[0].profile.surname) %}
<tr>
<td>{{ t[0] }}</td>
<td class="txt_a_c">{% if t[1] %}<i class="icon-circle color_gr" data-bs-toggle="tooltip" title="Sì"></i>{% else %}<i class="icon-circle color_r" data-bs-toggle="tooltip" title="No"></i>{% endif %}</td>
<td class="txt_a_c">{% if t[2] %}<i class="icon-circle color_gr" data-bs-toggle="tooltip" title="Sì"></i>{% else %}<i class="icon-circle color_r" data-bs-toggle="tooltip" title="No"></i>{% endif %}</td>
<td class="txt_a_c">{{ t[0].countTicketsUnderManagement('actual') }} / {{ t[0].countTicketsUnderManagement('suspension') }}</td>
<td class="td_action"><a href="javascript: technicianAssign({{ t[0].id }})"><img class="icon_green" data-bs-toggle="tooltip" title="Assegna" src="{{ asset(icon_read) }}"></a></td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<div class="style-msg alertmsg m_b_none"><div class="sb-msg"><i class="icon-warning-sign"></i><strong>Attenzione:</strong> L'elenco dei tecnici assegnabili è vuoto, verifica che il ticket abbia un CAP di copertura e, in caso negativo, modifica l'indirizzo. Potrebbe essere sufficiente anche cliccare sul pulsante modifica e subito su conferma se è già impostata la città corretta.</div></div>
{% endif %}
{% elseif ticket.canMakeActionByStatus('assigned,taken_charge') %}
{% set interventionId = null %}
{% for int in ticket.interventions %}
{% if int.outcome is null %}
{% set interventionId = int.id %}
{% endif %}
{% endfor %}
<div id="btn_technician_change" class="col-md-4 txt_a_c">
{% if interventionId == null %}
<a href="javascript: technicianChangeShow()"><img src="{{ asset(icon_exchange) }}" class="sheet_img b_c_amber"/></a><br>
{% else %}
<a href="javascript: void(0)" data-bs-toggle="tooltip" title="Impossibile cambiare tecnico con un intervento incompleto!"><img src="{{ asset(icon_exchange) }}" class="sheet_img b_c_grey"/></a><br>
{% endif %}
<label class="l_s_none">Cambia tecnico</label>
</div>
<div class="row" id="row_technician_change" style="display: none">
<div class="col-12">
<h4 class="form_title">Cambia tecnico</h4>
<table class="table table-sm table-hover m_b_none responsive_font_size">
<thead>
<tr>
<th>Tecnico</th>
<th class="txt_a_c">Del fornitore</th>
<th class="txt_a_c">In copertura</th>
<th class="txt_a_c">In corso/Sospesi</th>
<th></th>
</tr>
</thead>
<tbody>
{% for t in technicians|sort((a, b) => a[0].profile.surname <=> b[0].profile.surname) %}
{% if ticket.technician is not null and ticket.technician.id != t[0].id %}
<tr>
<td>{{ t[0] }}</td>
<td class="txt_a_c">{% if t[1] %}<i class="icon-circle color_gr" data-bs-toggle="tooltip" title="Sì"></i>{% else %}<i class="icon-circle color_r" data-bs-toggle="tooltip" title="No"></i>{% endif %}</td>
<td class="txt_a_c">{% if t[2] %}<i class="icon-circle color_gr" data-bs-toggle="tooltip" title="Sì"></i>{% else %}<i class="icon-circle color_r" data-bs-toggle="tooltip" title="No"></i>{% endif %}</td>
<td class="txt_a_c">{{ t[0].countTicketsUnderManagement('actual') }} / {{ t[0].countTicketsUnderManagement('suspension') }}</td>
<td class="td_action"><a href="javascript: technicianAssign({{ t[0].id }})"><img class="icon_green" data-bs-toggle="tooltip" title="Assegna" src="{{ asset(icon_read) }}"></a></td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
</div>
</div>
<input type="hidden" id="row_technician_change_val" value="0">
{% elseif ticket.canMakeActionByStatus('suspension_request') %}
{% if not ticket.getActualSuspension.managed %}
<h4 class="form_title">Richiesta sospensione</h4>
{{ ticket.getActualSuspension.displaySuspensionTable|raw }}
<div class="row m_t_20p txt_a_c">
<div class="col-md-6">
<a href="javascript: ticketSuspensionApprove({{ ticket.getActualSuspension.id }}, 1)"><img src="{{ asset(icon_thumb_up) }}" class="sheet_img b_c_green"/></a><br>
<label class="l_s_none">Approva</label>
</div>
<div class="col-md-6">
<a href="javascript: ticketSuspensionApprove({{ ticket.getActualSuspension.id }}, 0)"><img src="{{ asset(icon_thumb_down) }}" class="sheet_img b_c_red"/></a><br>
<label class="l_s_none">Non approvare</label>
</div>
</div>
{% else %}
<h4 class="form_title">Richiesta sospensione - Non approvata</h4>
<label class="l_s_none m_b_none">Motivazione</label>
<p class="m_b_none">{{ ticket.getActualSuspension.refuseMotivation }}</p>
{% endif %}
{% elseif ticket.canMakeActionByStatus('suspended') %}
{# SOSPESO #}
<h4 class="form_title">Ticket sospeso</h4>
{{ ticket.getActualSuspension.displaySuspensionTable|raw }}
<div class="row m_t_20p">
<div class="col-12 col-md-6 txt_a_c">
<a href="javascript: ticketSuspensionEdit({{ ticket.getActualSuspension.id }})" class="button button-3d button-mini button-amber">Modifica data/ora</a>
</div>
<div class="col-12 col-md-6 txt_a_c">
<a href="javascript: ticketSuspensionUnlock({{ ticket.getActualSuspension.id }})" class="button button-3d button-mini button-green">Sblocca sospensione</a>
</div>
</div>
<input type="hidden" id="suspension_date_from" value="{{ ticket.getActualSuspension.datetimeFrom|date('d-m-Y') }}">
<input type="hidden" id="suspension_time_from_hour" value="{{ ticket.getActualSuspension.datetimeFrom|date('H') }}">
<input type="hidden" id="suspension_time_from_minute" value="{{ ticket.getActualSuspension.datetimeFrom|date('i') }}">
<input type="hidden" id="suspension_date_to" value="{% if ticket.getActualSuspension.datetimeTo != null %}{{ ticket.getActualSuspension.datetimeTo|date('d-m-Y') }}{% endif %}">
<input type="hidden" id="suspension_time_to_hour" value="{% if ticket.getActualSuspension.datetimeTo != null %}{{ ticket.getActualSuspension.datetimeTo|date('H') }}{% endif %}">
<input type="hidden" id="suspension_time_to_minute" value="{% if ticket.getActualSuspension.datetimeTo != null %}{{ ticket.getActualSuspension.datetimeTo|date('i') }}{% endif %}">
{% else %}
<div class="style-msg infomsg m_b_none"><div class="sb-msg"><i class="icon-info-sign"></i><strong>Info:</strong> Nessuna azione disponibile in questa fase</div></div>
{% endif %}
</div>
</div>
{% endif %}
</div>
</div>
{% endif %}
{% if app.user.canMakeTicketActions('technician', settingBackOffice) %}
{# TECNICO INTERNO / TECNICO P. IVA / AGENZIA CON SETTING BACKOFFICE_MANAGE = 1 #}
<h3 class="form_title">Azioni {% if app.user.canMakeTicketActions('only_backoffice', settingBackOffice) %}(Tecnico/Backoffice){% endif %}</h4>
<hr class="m_t_none">
{% if ticket.operationTariffAmount == null %}
{% if app.user.canMakeTicketActions('agency_warehouse', null) %}
<h4 class="form_title">Errore rilevato - Seleziona tariffa</h4>
<div class="style-msg errormsg">
<div class="sb-msg responsive_font_size"><i class="icon-remove"></i><strong>Attenzione!</strong> Prima di poter completare il ticket inserendo gli interventi è necessario selezionare la tariffa da applicare. Inseriscila tramite il bottone "modifica tariffa" in alto nella sezione "tariffa applicata".</div>
</div>
{% else %}
<h4 class="form_title">Errore rilevato</h4>
<div class="style-msg errormsg">
<div class="sb-msg responsive_font_size"><i class="icon-remove"></i><strong>Attenzione!</strong> Impossibile completare il ticket. Riporta l'errore alla sede centrale.</div>
</div>
{% endif %}
{% else %}
{% if ticket.canMakeActionByStatus('assigned') %}
<div class="row txt_a_c">
{% if ticket.getActualSuspension != null and ticket.getActualSuspension.managed and ticket.getActualSuspension.refuseMotivation != null %}
<h4 class="form_title">Richiesta sospensione - Non approvata</h4>
<label class="l_s_none">Motivazione</label>
<p>{{ ticket.getActualSuspension.refuseMotivation }}</p>
{% endif %}
<div class="col-md-4">
<a href="{{ path ('user_ticket_take_charge_single', {'ticketId':ticket.id}) }}"><img src="{{ asset(icon_ticket_completed) }}" class="sheet_img b_c_green"/></a><br>
<label class="l_s_none">Prendi in carico</label>
</div>
</div>
{% elseif ticket.canMakeActionByStatus('taken_charge') %}
{% set interventionId = null %}
{% for int in ticket.interventions %}
{% if int.outcome is null %}
{% set interventionId = int.id %}
{% endif %}
{% endfor %}
{% if interventionId is null %}
<h4 class="form_title">Inserisci intervento</h4>
<div class="row txt_a_c">
<div class="col-4">
<a href="javascript: ticketStatus('completed')"><img src="{{ asset(icon_ticket_completed) }}" class="sheet_img b_c_green"/></a><br>
<label class="l_s_none">Chiudi ticket</label>
</div>
<div class="col-4">
<a href="javascript: ticketStatus('suspended')"><img src="{{ asset(icon_ticket_suspended) }}" class="sheet_img b_c_amber"/></a><br>
<label class="l_s_none">Sospendi ticket</label>
</div>
<div class="col-4">
<a href="javascript: ticketStatus('empty')"><img src="{{ asset(icon_ticket_empty) }}" class="sheet_img b_c_red"/></a><br>
<label class="l_s_none">Inserisci UAV</label>
</div>
</div>
{% else %}
<h4 class="form_title">Intervento incompleto</h4>
<div class="row txt_a_c">
<div class="col-md-4 txt_a_c">
<a href="{{ path ('user_ticket_intervention_edit', {'interventionId':interventionId}) }}"><img src="{{ asset(icon_correction) }}" class="sheet_img b_c_green"/></a><br>
<label class="l_s_none">Riprendi</label>
</div>
<div class="col-md-4 txt_a_c">
<a href="javascript: interventionDelete({{ interventionId }})"><img src="{{ asset(icon_delete) }}" class="sheet_img b_c_red"/></a><br>
<label class="l_s_none">Elimina</label>
</div>
</div>
{% endif %}
{% elseif ticket.canMakeActionByStatus('suspension_request') %}
{% if not ticket.getActualSuspension.managed %}
<h4 class="form_title">Richiesta sospensione - In attesa di approvazione</h4>
{{ ticket.getActualSuspension.displaySuspensionTable|raw }}
{% endif %}
{% elseif ticket.canMakeActionByStatus('suspended') %}
<h4 class="form_title">Ticket sospeso</h4>
{% if ticket.getActualSuspension.unlockCausal != null %}
<label class="l_s_none m_b_none">Causale</label>
<p class="m_b_none">{{ ticket.getActualSuspension.unlockCausal }}</p>
{% endif %}
{{ ticket.getActualSuspension.displaySuspensionTable|raw }}
{% if settingTechUnlockSuspension.value %}
<div class="row m_t_20p">
<div class="col-12 txt_a_c">
<a href="javascript: ticketSuspensionUnlock({{ ticket.getActualSuspension.id }})" class="button button-3d button-mini button-green">Sblocca sospensione</a>
</div>
</div>
{% endif %}
{% else %}
<div class="style-msg infomsg m_b_none"><div class="sb-msg"><i class="icon-info-sign"></i><strong>Info:</strong> Nessuna azione disponibile in questa fase</div></div>
{% endif %}
{% endif %}
{% endif %}
</div>
{# Interventi #}
{% if ticket.interventions|length > 0 %}
<div class="col-12 m_t_20p">
<h3 class="form_title">Interventi{% if not ticket.billable %} <i class="icon-warning-sign font_20 color_r" data-bs-toggle="tooltip" title="Ticket non fatturabile"></i>{% endif %}</h3>
<hr class="m_t_none">
</div>
<div class="col-12 overflow_a">
<table class="table table-sm responsive_font_size">
<thead>
<tr>
<th class="td_w_40p"></th>
<th class="td_w_150p">Data/ora chiusura</th>
<th class="td_w_300p">Esito</th>
<th class="td_w_150p">Tecnico</th>
<th class="td_w_150p">Operatore</th>
<th class="td_w_60p txt_a_c">Fatturabile</th>
<th class="td_w_100p txt_a_c">Mese fatt</th>
<th class="td_w_100p txt_a_c">% fuori SLA</th>
<th colspan="100%"></th>
</tr>
</thead>
<tbody>
{% for intervention in ticket.interventions|sort((a, b) => b.datetime <=> a.datetime) %}
<input type="hidden" id="ticket_sla_{{ intervention.id }}" value="{{ intervention.slaOutboundPercentage }}">
<input type="hidden" id="ticket_date_billing_{{ intervention.id }}" value="{% if intervention.datetimeBilling != null %}{{ intervention.datetimeBilling|date('m-Y') }}{% endif %}">
<input type="hidden" id="intervention_billable_{{ intervention.id }}" value="{{ intervention.billable }}">
<input type="hidden" id="int_motivation_{{ intervention.id }}" value="{{ intervention.motivation }}">
{% if intervention.suspension != null and intervention.suspension.approved and intervention.suspension.unlocked %}
<tr class="bg_lg">
<td></td>
<td>{{ intervention.suspension.datetimeTo|date('d-m-Y H:i') }}</td>
<td colspan="100">Sbloccato - {{ intervention.suspension.unlockCausal }}</td>
</tr>
{% endif %}
<tr
{% if intervention.suspension != null %}
{% if not intervention.suspension.managed %}
class="bg_r_m" data-bs-toggle="tooltip" title="Sospensione non gestita"
{% elseif not intervention.suspension.approved %}
class="bg_r_h" data-bs-toggle="tooltip" title="Sospensione non approvata"
{% endif %}
{% endif %}
{% if intervention.outcomeType.slug == 'completed' and intervention.outcome != null and intervention.activities|length == 0 %}
class="bg_r_h" data-bs-toggle="tooltip" title="Intervento senza attività "
{% endif %}
>
<td><a href="javascript: interventionSheet({{ intervention.id }})"><img src="{{ asset (icon_sheet) }}" class="icon_action icon_pr" data-bs-toggle="tooltip" title="Scheda"></a></td>
<td id="int_date_{{ intervention.id }}">{{ intervention.datetime|date('d-m-Y H:i') }}</td>
<td id="int_outcome_{{ intervention.id }}">{% if intervention.outcome != null %}{{ intervention.outcomeType.value }} - {{ intervention.outcome }}{% else %}Intervento non completato{% endif %}</td>
<td id="int_technician_{{ intervention.id }}">{{ intervention.technician|default('---') }}</td>
<td id="int_operator_{{ intervention.id }}">{{ intervention.operator|default('---') }}</td>
<td id="int_billable_{{ intervention.id }}" class="txt_a_c">{% if intervention.billable %}Sì{% else %}No{% endif %}</td>
<td id="int_datetime_billing_{{ intervention.id }}" class="txt_a_c">{% if intervention.datetimeBilling != null %}{{ intervention.datetimeBilling|date('m-Y') }}{% endif %}</td>
<td id="int_sla_{{ intervention.id }}" class="txt_a_c">{% if intervention.slaOutboundPercentage != null %}{{ intervention.slaOutboundPercentage }} %{% else %}---{% endif %}</td>
{% if app.user.canMakeTicketActions('agency_warehouse', null) %}
{% if ticket.canMakeActionByStatus('closed') %}
<td class="td_w_40p txt_a_c"><a href="javascript: interventionSla({{ intervention.id }})"><img src="{{ asset (icon_percentage) }}" class="icon_action icon_amber" data-bs-toggle="tooltip" title="Cambia % SLA e mese di fatturazione"></a></td>
{% endif %}
<td class="td_w_40p txt_a_c"><a href="javascript: interventionNotBillable({{ intervention.id }})"><img src="{{ asset (icon_exchange) }}" class="icon_action icon_pr" data-bs-toggle="tooltip" title="Cambia fatturabile"></a></td>
{% endif %}
{% if app.user.canMakeTicketActions('technician', settingBackOffice) and ticket.canMakeActionByStatus('taken_charge,suspended,closed') and intervention.outcomeType.slug == "completed" %}
<td class="td_w_40p txt_a_c">
<a href="{{ path ('user_ticket_intervention_edit', {'interventionId':intervention.id}) }}">
{% if intervention.outcome is null %}
<img src="{{ asset (icon_correction) }}" class="icon_action icon_green" data-bs-toggle="tooltip" title="Riprendi">
{% else %}
<img src="{{ asset (icon_edit) }}" class="icon_action icon_amber" data-bs-toggle="tooltip" title="Modifica">
{% endif %}
</a>
</td>
{% endif %}
{% if intervention.outcome is null or (intervention.outcome.type.slug == "completed" and intervention.activities|length == 0) %}
<td class="td_w_40p txt_a_c"><a href="javascript: interventionDelete({{ intervention.id }})"><img src="{{ asset (icon_delete) }}" class="icon_action icon_red" data-bs-toggle="tooltip" title="Elimina"></a></td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
{# PER CREAZIONE SCHEDA #}
{% for intervention in ticket.interventions|sort((a, b) => b.datetime <=> a.datetime) %}
<div id="int_activities_{{ intervention.id }}" class="display_n">
{% if intervention.outcome != null %}
{% if intervention.outcomeType.slug != 'completed' %}
<h4 class="form_title m_b_none">Dettagli esito</h4>
<hr class="m_t_none">
<table class="table table-sm font_12 m_b_none">
{% if intervention.suspension is not null and intervention.suspension.managed %}
<tr>
<th>Sospensione</th>
<td>{% if intervention.suspension.approved %}Approvata{% else %}Non approvata{% endif %}</td>
</tr>
{% if intervention.suspension.approved %}
<tr>
<th>Durata</th>
<td>Dal {{ intervention.suspension.datetimeFrom|date('d-m-Y H:i') }} {% if intervention.suspension.datetimeTo != null %}al {{ intervention.suspension.datetimeTo|date('d-m-Y H:i') }}{% else %}a data da destinarsi{% endif %}</td>
</tr>
{% if intervention.suspension.unlocked %}
<tr>
<th>Causale di sblocco</th>
<td>{{ intervention.suspension.unlockCausal }}</td>
</tr>
{% endif %}
{% else %}
<tr>
<th>Motivo approvazione respinta</th>
<td>{{ intervention.suspension.refuseMotivation }}</td>
</tr>
{% endif %}
{% endif %}
{% if intervention.outcome.referentRequired %}
<tr>
<th class="td_w_150p">Referente</th>
<td>{{ intervention.referent }}</td>
</tr>
{% endif %}
{% if intervention.outcome.phoneRequired %}
<tr>
<th class="td_w_150p">Telefono</th>
<td>{{ intervention.phone }}</td>
</tr>
{% endif %}
{% if intervention.outcome.photoRequired %}
{% set photoPath = 'companies/' ~ company.directoryPath ~ '/tickets/' ~ ticket.directoryPath ~ '/' ~ intervention.photoPath %}
<tr>
<th class="td_w_150p">Foto</th>
<td><img src="{{ asset (photoPath) }}"/></td>
</tr>
{% endif %}
</table>
{% else %}
<h4 class="form_title m_b_none">Attività eseguite</h4>
<hr class="m_t_none">
<table class="table table-sm font_12 m_b_none">
{% for activity in intervention.activities %}
{% if loop.index > 1 %}
<tr><th colspan="2" style="padding: 0px; padding-top: 5px; border-bottom-width: 1px;border-top-width: 1px;"></th></tr>
{% endif %}
<tr>
<th style="border-bottom: 0px">Attività </th>
<td style="border-bottom: 0px">{{ activity.type.value }}</td>
</tr>
<tr>
<th style="border-bottom: 0px">Prodotto</tH>
<td style="border-bottom: 0px">
{% if activity.productWithdraw != null %}Ritiro: {{ activity.productWithdraw.model.name }}<br>{% endif %}
{% if activity.productActual != null %}Attuale: {{ activity.productActual.model.name }}<br>{% endif %}
{% if activity.productInstallation != null %}Installazione: {{ activity.productInstallation.model.name }}{% endif %}
</td>
</tr>
<tr>
<th style="border-bottom: 0px">Matricole</th>
<td style="border-bottom: 0px">
{% if activity.producerWithdraw != null %}Matricola produttore - Ritiro: {% if activity.productWithdraw is null %}{{ activity.producerWithdraw }}{% else %}{% if activity.producerWithdraw != activity.productWithdraw.codeProducer %}<span class="color_r line_t">{{ activity.producerWithdraw }}</span> | {% endif %}<a href="{{ path ('user_product_sheet', {'productId':activity.productWithdraw.id}) }}" class="underline">{{ activity.productWithdraw.codeProducer }}</a>{% endif %}<br>{% endif %}
{% if activity.supplierWithdraw != null %}Matricola fornitore - Ritiro: {% if activity.productWithdraw is null %}{{ activity.supplierWithdraw }}{% else %}{% if activity.supplierWithdraw != activity.productWithdraw.codeSupplier %}<span class="color_r line_t">{{ activity.supplierWithdraw }}</span> | {% endif %}<a href="{{ path ('user_product_sheet', {'productId':activity.productWithdraw.id}) }}" class="underline">{{ activity.productWithdraw.codeSupplier }}</a>{% endif %}<br>{% endif %}
{% if activity.producerActual != null %}Matricola produttore - Attuale: {% if activity.productActual is null %}{{ activity.producerActual }}{% else %}{% if activity.producerActual != activity.productActual.codeProducer %}<span class="color_r line_t">{{ activity.producerActual }}</span> | {% endif %}<a href="{{ path ('user_product_sheet', {'productId':activity.productActual.id}) }}" class="underline">{{ activity.productActual.codeProducer }}</a>{% endif %}<br>{% endif %}
{% if activity.supplierActual != null %}Matricola fornitore - Attuale: {% if activity.productActual is null %}{{ activity.supplierActual }}{% else %}{% if activity.supplierActual != activity.productActual.codeSupplier %}<span class="color_r line_t">{{ activity.supplierActual }}</span> | {% endif %}<a href="{{ path ('user_product_sheet', {'productId':activity.productActual.id}) }}" class="underline">{{ activity.productActual.codeSupplier }}</a>{% endif %}<br>{% endif %}
{% if activity.producerInstallation != null %}Matricola produttore - Installazione: {% if activity.productInstallation is null %}{{ activity.producerInstallation }}{% else %}{% if activity.producerInstallation != activity.productInstallation.codeProducer %}<span class="color_r line_t">{{ activity.producerInstallation }}</span> | {% endif %}<a href="{{ path ('user_product_sheet', {'productId':activity.productInstallation.id}) }}" class="underline">{{ activity.productInstallation.codeProducer }}</a>{% endif %}<br>{% endif %}
{% if activity.supplierInstallation != null %}Matricola fornitore - Installazione: {% if activity.productInstallation is null %}{{ activity.supplierInstallation }}{% else %}{% if activity.supplierInstallation != activity.productInstallation.codeSupplier %}<span class="color_r line_t">{{ activity.supplierInstallation }}</span> | {% endif %}<a href="{{ path ('user_product_sheet', {'productId':activity.productInstallation.id}) }}" class="underline">{{ activity.productInstallation.codeSupplier }}</a>{% endif %}<br>{% endif %}
</td>
</tr>
{% endfor %}
</table>
{% endif %}
{% endif %}
</div>
{% endfor %}
</div>
{% endif %}
{# Extra #}
{% if ticket.interventions|length > 0 %}
<div class="col-12 m_t_20p">
<h3 class="form_title">Extra
{% if app.user.canMakeTicketActions('technician', settingBackOffice) and ticket.canMakeActionByStatus('taken_charge,suspension_request,suspended,closed') %}
<a href="javascript: interventionExtraNew()" class="f_right" data-bs-toggle="tooltip" title="Nuovo"><img class="icon_action icon_green" src="{{ asset (icon_add) }}"></a>
{% endif %}
</h3>
<hr class="m_t_none">
</div>
<div class="col-12 overflow_a">
{% set extraCount = 0 %}
{% for i in ticket.interventions %}
{% for extra in i.extras %}
{% set extraCount = extraCount + 1 %}
{% endfor %}
{% endfor %}
{% if extraCount > 0 %}
<table class="table table-sm responsive_font_size m_b_none">
<thead>
<tr>
<th class="td_w_40p"></th>
<th class="td_w_500p">Intervento</th>
<th class="td_w_100p">Tipo</th>
<th class="td_w_80p txt_a_c">Ore</th>
<th class="td_w_100p txt_a_c">Costo [€]</th>
<th class="td_w_100p txt_a_c">Approvato</th>
{% if app.user.canMakeTicketActions('technician', settingBackOffice) %}
<th class="td_w_40p"></th>
<th class="td_w_40p"></th>
{% endif %}
</tr>
</thead>
<tbody>
{% for i in ticket.interventions|sort((a, b) => b.datetime <=> a.datetime) %}
{% for extra in i.extras %}
{% set imgSource = '' %}
{% if extra.filePath != null %}
{% set imgSource = 'companies/' ~ company.directoryPath ~ '/tickets/' ~ ticket.directoryPath ~ '/' ~ extra.filePath %}
{% endif %}
<input type="hidden" id="intervention_extra_intervention_{{ extra.id }}" value="{{ extra.intervention.id }}">
<input type="hidden" id="intervention_extra_intervention_display_{{ extra.id }}" value="{{ extra.intervention }}">
<input type="hidden" id="intervention_extra_type_{{ extra.id }}" value="{{ extra.type }}">
<input type="hidden" id="intervention_extra_type_display_{{ extra.id }}" value="{{ extra.displayType }}">
<input type="hidden" id="intervention_extra_hours_{{ extra.id }}" value="{{ extra.hours }}">
<input type="hidden" id="intervention_extra_cost_{{ extra.id }}" value="{{ extra.cost }}">
<input type="hidden" id="intervention_extra_filePath_{{ extra.id }}" value="{{ extra.filePath }}">
<input type="hidden" id="intervention_extra_notes_{{ extra.id }}" value="{{ extra.notes }}">
<input type="hidden" id="intervention_extra_imgSource_{{ extra.id }}" value="{{ asset (imgSource) }}">
<input type="hidden" id="intervention_extra_managed_{{ extra.id }}" value="{{ extra.managed }}">
<tr class="{% if not extra.isManaged %}bg_r_m{% else %}{% if not extra.isApproved %}bg_r_h{% endif %}{% endif %}">
<td><a href="javascript: interventionExtraSheet({{ extra.id }})"><img src="{{ asset (icon_sheet) }}" class="icon_action icon_pr" data-bs-toggle="tooltip" title="Scheda"></a></td>
<td>{{ extra.intervention }}</td>
<td>{{ extra.displayType }}</td>
<td class="txt_a_c">{% if extra.hours != null %}{{ extra.hours }} ore{% else %}---{% endif %}</td>
<td class="txt_a_c">{% if extra.cost != null and extra.cost != '0.00' %}{{ extra.cost }} €{% else %}---{% endif %}</td>
<td class="txt_a_c">{% if extra.managed %}{% if extra.approved %}Sì{% else %}No{% endif %}{% else %}In attesa{% endif %}</td>
{% if app.user.canMakeTicketActions('technician', settingBackOffice) %}
{% if app.user.accountTypology == "agency" or extra.managed == false %}
<td class="txt_a_c"><a href="javascript: interventionExtraEdit({{ extra.id }})"><img src="{{ asset (icon_edit) }}" class="icon_action icon_amber" data-bs-toggle="tooltip" title="Modifica"></a></td>
<td class="txt_a_c"><a href="javascript: interventionExtraDelete({{ extra.id }})"><img src="{{ asset (icon_delete) }}" class="icon_action icon_red" data-bs-toggle="tooltip" title="Elimina"></a></td>
{% else %}
<td colspan="2"></td>
{% endif %}
{% endif %}
</tr>
{% endfor %}
{% endfor %}
</tbody>
</table>
{% else %}
{% include 'components/twig/notice_no_values.html.twig' with {'message':'Nessun extra inserito'} %}
{% endif %}
</div>
{% endif %}
{# Reminder #}
<div class="col-12 m_t_20p">
<h3 class="form_title">Promemoria
{% if app.user.canMakeTicketActions('technician', settingBackOffice) and ticket.canMakeActionByStatus('to_assign,assigned,taken_charge,suspension_request,suspended,closed') and ticket.systemError == false %}
<a href="javascript: reminderNew()" class="f_right" data-bs-toggle="tooltip" title="Nuovo"><img class="icon_action icon_green" src="{{ asset (icon_add) }}"></a>
{% endif %}
</h3>
<hr class="m_t_none">
</div>
<div class="col-12 overflow_a">
{% if ticket.reminders|length > 0 %}
<table class="table table-sm responsive_font_size m_b_none">
<thead>
<tr>
<th class="td_w_150p">Data/Ora</th>
{% if app.user.accountTypology != 'technician' %}<th class="td_w_150p">Utente</th>{% endif %}
<th>Dettagli</th>
<th class="td_w_50p"></th>
<th class="td_w_50p"></th>
</tr>
</thead>
<tbody>
{% for r in ticket.reminders|sort((a, b) => a.datetime <=> b.datetime) %}
{% set show = false %}
{% if app.user.accountTypology == 'technician' and app.user.id == r.technician.id %}
{% set show = true %}
{% endif %}
{% if app.user.accountTypology == 'agency' or app.user.accountTypology == 'warehouse' %}
{% set show = true %}
{% endif %}
{% if show %}
<input type="hidden" id="reminder_details_{{ r.id }}" value="{{ r.details }}">
<input type="hidden" id="reminder_date_{{ r.id }}" value="{{ r.datetime|date('d-m-Y') }}">
<input type="hidden" id="reminder_hour_{{ r.id }}" value="{{ r.datetime|date('H') }}">
<input type="hidden" id="reminder_minute_{{ r.id }}" value="{{ r.datetime|date('i') }}">
<tr {% if r.datetime|date('YmdHi') < "now"|date('YmdHi') %}class="bg_r_h"{% endif %}>
<td>{{ r.datetime|date('d-m-Y H:i') }}</td>
{% if app.user.accountTypology != 'technician' %}
<td>{{ r.technician }}</td>
{% endif %}
<td>{{ r.details }}</td>
{% if app.user.canMakeTicketActions('technician', settingBackOffice) and ticket.canMakeActionByStatus('to_assign,assigned,taken_charge,suspension_request,suspended,closed') %}
<td class="td_action"><a href="javascript: reminderEdit({{ r.id }})"><img src="{{ asset (icon_edit) }}" class="icon_amber" data-bs-toggle="tooltip" title="Modifica"></a></td>
<td class="td_action"><a href="javascript: reminderDelete({{ r.id }})"><img src="{{ asset (icon_delete) }}" class="icon_red" data-bs-toggle="tooltip" title="Elimina"></a></td>
{% else %}
<td colspan="2"></td>
{% endif %}
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
{% else %}
{% include 'components/twig/notice_no_values.html.twig' with {'message':'Nessun promemoria inserito'} %}
{% endif %}
</div>
</div>
</section>
{# Dati completi JSON #}
{% if ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('OTP')) %}
<div id="showOtpModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header"><h3 class="modal-title">QR code</h3></div>
<div class="modal-body txt_a_c">
<img src="data:image/png;base64,{{ barcode({code: ticket.displayJsonValueByColumn(ticket.operation.getKeyValueByValue('OTP')), type: 'qrcode', format: 'png', width: 10, height: 10, color: [0, 0, 0]}) }}" />
</div>
<div class="modal-footer txt_a_c">
<a href="javascript:void(0)" class="button button-3d button-mini button-pr" data-bs-dismiss="modal">Esci</a>
</div>
</div>
</div>
</div>
{% endif %}
<div id="jsonDataModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header"><h3 class="modal-title">Dati JSON completo</h3></div>
<div class="modal-body">
{{ ticket.displayTableJson|raw }}
</div>
<div class="modal-footer txt_a_c">
<a href="javascript:void(0)" class="button button-3d button-mini button-pr" data-bs-dismiss="modal">Esci</a>
</div>
</div>
</div>
</div>
<div id="ticketBillableModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form action="{{ path ('user_ticket_billable') }}" method="post">
<div class="modal-header"><h3 class="modal-title">Ticket - Cambia fatturabile</h3></div>
<div class="modal-body">
<input type="hidden" name="ticketId" value="{{ ticket.id }}"/>
<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> dichiarerai il ticket <span id="modal_ticket_billable_text"></span>.<br>Si è sicuri di voler proseguire?</p>
</div>
</div>
</div>
<div class="modal-footer txt_a_c">
<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="interventionSheetModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header"><h3 class="modal-title">Intervento - Scheda</h3></div>
<div class="modal-body">
<div class="row">
<div class="col-12">
<table class="table table-sm font_12 m_b_20p">
<tr>
<th class="td_w_150p">Data/ora</th>
<td id="intervention_sheet_date"></td>
</tr>
<tr>
<th>Esito</th>
<td id="intervention_sheet_outcome"></td>
</tr>
<tr>
<th>Tecnico</th>
<td id="intervention_sheet_technician"></td>
</tr>
<tr>
<th>Operatore</th>
<td id="intervention_sheet_operator"></td>
</tr>
<tr>
<th>Fatturabile</th>
<td id="intervention_sheet_billable"></td>
</tr>
<tr>
<th>Percentuale fuori SLA</th>
<td id="intervention_sheet_sla"></td>
</tr>
<tr>
<th>Mese fatturazione</th>
<td id="intervention_sheet_datetime_billing"></td>
</tr>
<tr>
<th>Motivazione</th>
<td id="intervention_sheet_motivation"></td>
</tr>
</table>
</div>
<div class="col-12" id="intervention_sheet_activities">
</div>
</div>
</div>
<div class="modal-footer txt_a_c">
<a href="javascript:void(0)" class="button button-3d button-mini button-pr" data-bs-dismiss="modal">Chiudi</a>
</div>
</div>
</div>
</div>
<div id="interventionNotBillableModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form action="{{ path ('user_ticket_intervention_not_billable') }}" method="post">
<div class="modal-header"><h3 class="modal-title">Intervento - <span id="modal_billable_title" class="color_w"></span></h3></div>
<div class="modal-body">
<input type="hidden" name=""/>
<input type="hidden" id="notBillableId" name="interventionId"/>
<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> dichiarerai l'intervento come <span id="modal_billable_text"></span>.<br>Si è sicuri di voler proseguire?</p>
</div>
</div>
</div>
<div class="modal-footer txt_a_c">
<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="interventionExtraSheetModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header"><h3 class="modal-title">Extra intervento - Scheda</h3></div>
<div class="modal-body">
<div class="row">
<div class="col-12">
<table class="table table-sm m_b_10p">
<tr>
<th class="td_w_150p">Intervento</th>
<td id="intervention_extra_sheet_intervention"></td>
</tr>
<tr>
<th>Tipologia</th>
<td id="intervention_extra_sheet_type"></td>
</tr>
<tr id="intervention_extra_sheet_hours_tr">
<th>Ore</th>
<td id="intervention_extra_sheet_hours"></td>
</tr>
<tr>
<th>Costo totale [€]</th>
<td id="intervention_extra_sheet_cost"></td>
</tr>
<tr>
<th>Note</th>
<td id="intervention_extra_sheet_notes"></td>
</tr>
</table>
</div>
<div class="col-12 txt_a_c">
<a id="intervention_extra_sheet_a" class="button button-3d button-mini button-pr" target="_blank">Apri allegato</a>
</div>
{% if app.user.canMakeTicketActions('agency_warehouse', null) %}
<div class="col-12 col-md-6 m_t_20p">
<a id="button_approve" class="button button-3d button-mini button-green width_100 txt_a_c">Approva</a>
</div>
<div class="col-12 col-md-6 m_t_20p">
<a id="button_not_approve" class="button button-3d button-mini button-red width_100 txt_a_c">Non approvare</a>
</div>
{% endif %}
</div>
</div>
<div class="modal-footer txt_a_c">
<a href="javascript:void(0)" class="button button-3d button-mini button-pr" data-bs-dismiss="modal">Chiudi</a>
</div>
</div>
</div>
</div>
<div id="reminderNewModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
{{ form_start(formReminderNew, {'attr': {'novalidate': 'novalidate'}}) }}
<div class="modal-header"><h3 class="modal-title">Promemoria - Nuovo</h3></div>
<div class="modal-body">
{{ form_widget(formReminderNew.id) }}
<div class="row">
<div class="col-12 col-md-6 form-group">
<label class="form_label">Data*</label>
<div {{ form_errors(formReminderNew.date) }}>
{{ form_widget(formReminderNew.date, {'attr':{'class':'form-control'}}) }}
</div>
</div>
<div class="col-12 col-md-3 form-group">
<label class="form_label">Ora*</label>
<div {{ form_errors(formReminderNew.hour) }}>
{{ form_widget(formReminderNew.hour) }}
</div>
</div>
<div class="col-12 col-md-3 form-group">
<label class="form_label">Minuto*</label>
<div {{ form_errors(formReminderNew.minute) }}>
{{ form_widget(formReminderNew.minute) }}
</div>
</div>
<div class="col-12 form-group">
<label class="form_label">Dettagli*</label>
<div {{ form_errors(formReminderNew.details) }}>
{{ form_widget(formReminderNew.details) }}
</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(formReminderNew) }}
</div>
</div>
</div>
<div id="reminderEditModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
{{ form_start(formReminderEdit, {'attr': {'novalidate': 'novalidate'}}) }}
<div class="modal-header"><h3 class="modal-title">Promemoria - Modifica</h3></div>
<div class="modal-body">
{{ form_widget(formReminderEdit.id) }}
<div class="row">
<div class="col-12 col-md-6 form-group">
<label class="form_label">Data*</label>
<div {{ form_errors(formReminderEdit.date) }}>
{{ form_widget(formReminderEdit.date, {'attr':{'class':'form-control'}}) }}
</div>
</div>
<div class="col-12 col-md-3 form-group">
<label class="form_label">Ora*</label>
<div {{ form_errors(formReminderEdit.hour) }}>
{{ form_widget(formReminderEdit.hour) }}
</div>
</div>
<div class="col-12 col-md-3 form-group">
<label class="form_label">Minuto*</label>
<div {{ form_errors(formReminderEdit.minute) }}>
{{ form_widget(formReminderEdit.minute) }}
</div>
</div>
<div class="col-12 form-group">
<label class="form_label">Dettagli*</label>
<div {{ form_errors(formReminderEdit.details) }}>
{{ form_widget(formReminderEdit.details) }}
</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(formReminderEdit) }}
</div>
</div>
</div>
{% if app.user.canMakeTicketActions('agency_warehouse', null) %}
{# TICKET - MODIFICA DATA SCADENZA #}
<div id="ticketExpirationDatetimeModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
{{ form_start(formExpirationDatetimeEdit, {'attr': {'novalidate': 'novalidate'}}) }}
<div class="modal-header"><h3 class="modal-title">Modifica data e ora scadenza</h3></div>
<div class="modal-body">
<div class="row">
<div class="col-12 form-group">
<label class="form_label">Data*</label>
<div {{ form_errors(formExpirationDatetimeEdit.date) }}>
{{ form_widget(formExpirationDatetimeEdit.date, {'attr':{'class':'form-control'}}) }}
</div>
</div>
<div class="col-12 col-md-6 form-group">
<label class="form_label">Ora*</label>
<div {{ form_errors(formExpirationDatetimeEdit.timeHour) }}>
{{ form_widget(formExpirationDatetimeEdit.timeHour) }}
</div>
</div>
<div class="col-12 col-md-6 form-group">
<label class="form_label">Minuto*</label>
<div {{ form_errors(formExpirationDatetimeEdit.timeMinute) }}>
{{ form_widget(formExpirationDatetimeEdit.timeMinute) }}
</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(formExpirationDatetimeEdit) }}
</div>
</div>
</div>
{# TICKET - MODIFICA LETTERA DI VETTURA #}
<div id="ticketWaybillModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
{{ form_start(formWaybillEdit, {'attr': {'novalidate': 'novalidate'}}) }}
<div class="modal-header"><h3 class="modal-title">Modifica lettera di vettura</h3></div>
<div class="modal-body">
<div class="row">
<div class="col-12 form-group">
<label class="form_label">Lettera di vettura</label>
<div {{ form_errors(formWaybillEdit.waybill) }}>
{{ form_widget(formWaybillEdit.waybill) }}
</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(formWaybillEdit) }}
</div>
</div>
</div>
{# SOSPENSIONE - MODIFICA #}
<div id="ticketSuspensionEditModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
{{ form_start(formSusEdit, {'attr': {'novalidate': 'novalidate'}}) }}
<div class="modal-header"><h3 class="modal-title">Modifica sospensione</h3></div>
<div class="modal-body">
{{ form_widget(formSusEdit.id) }}
<div class="row">
<div class="col-12 form-group">
<label class="form_label">Sospensione da - Data*</label>
<div {{ form_errors(formSusEdit.dateFrom) }}>
{{ form_widget(formSusEdit.dateFrom, {'attr':{'class':'form-control'}}) }}
</div>
</div>
<div class="col-12 col-md-6 form-group">
<label class="form_label">Sospensione da - Ora*</label>
<div {{ form_errors(formSusEdit.timeFromHour) }}>
{{ form_widget(formSusEdit.timeFromHour) }}
</div>
</div>
<div class="col-12 col-md-6 form-group">
<label class="form_label">Sospensione da - Minuto*</label>
<div {{ form_errors(formSusEdit.timeFromMinute) }}>
{{ form_widget(formSusEdit.timeFromMinute) }}
</div>
</div>
<div class="col-12 form-group">
<label class="form_label">Sospensione a - Data*</label>
<div {{ form_errors(formSusEdit.dateTo) }}>
{{ form_widget(formSusEdit.dateTo, {'attr':{'class':'form-control'}}) }}
</div>
</div>
<div class="col-12 col-md-6 form-group">
<label class="form_label">Sospensione a - Ora*</label>
<div {{ form_errors(formSusEdit.timeToHour) }}>
{{ form_widget(formSusEdit.timeToHour) }}
</div>
</div>
<div class="col-12 col-md-6 form-group">
<label class="form_label">Sospensione a - Ora*</label>
<div {{ form_errors(formSusEdit.timeToMinute) }}>
{{ form_widget(formSusEdit.timeToMinute) }}
</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(formSusEdit) }}
</div>
</div>
</div>
{# INTERVENTO - MODIFICA PERCENTUALE SLA E MESE DI FATTURAZIONE #}
<div id="interventionSlaModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
{{ form_start(formInterventionSla, {'attr': {'novalidate': 'novalidate'}}) }}
<div class="modal-header"><h3 class="modal-title">Modifica % SLA e mese di fatturazione</h3></div>
<div class="modal-body">
{{ form_widget(formInterventionSla.id, {'attr':{'class':'display_n'}}) }}
<div class="row">
<div class="col-12 form-group">
<label class="form_label">Percentuale fuori SLA [%]*</label>
<div {{ form_errors(formInterventionSla.slaOutboundPercentage) }}>
{{ form_widget(formInterventionSla.slaOutboundPercentage) }}
</div>
</div>
<div class="col-12">
<label class="form_label">Mese di fatturazione*</label>
<div {{ form_errors(formInterventionSla.dateBilling) }}>
{{ form_widget(formInterventionSla.dateBilling, {'attr':{'class':'form-control'}}) }}
</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(formInterventionSla) }}
</div>
</div>
</div>
{% endif %}
{% endblock %}
{% block modals %}
{# STATO - CHIUSO #}
{% include 'components/modals/confirm.html.twig' with {'type':'ticketClosed', 'action':'user_ticket_close', 'text':'Riporta a stato chiuso', 'description':'lo stato del ticket verrà impostato a "Completato"'} %}
{% include 'components/modals/confirm.html.twig' with {'type':'ticketClosedPortal', 'action':'user_ticket_closed_on_portal', 'text':'Chiudi su portale fornitore', 'description':'lo stato del ticket verrà impostato a "Completato su portale fornitore"'} %}
{# INDIRIZZO - MODIFICA #}
<div id="ticketAddressEditModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
{{ form_start(formAddressEdit, {'attr': {'novalidate': 'novalidate', 'id':'formAddressEdit'}}) }}
<div class="modal-header"><h3 class="modal-title">Modifica indirizzo</h3></div>
<div class="modal-body">
<div class="row">
<div class="col-12 form-group">
<label class="form_label">Indirizzo</label>
<div {{ form_errors(formAddressEdit.address) }}>
{{ form_widget(formAddressEdit.address) }}
</div>
</div>
<div class="col-12 form-group">
<label class="form_label">Frazione/Località </label>
<div {{ form_errors(formAddressEdit.locality) }}>
{{ form_widget(formAddressEdit.locality) }}
</div>
</div>
<div class="col-12 form-group">
<label class="form_label">Città *</label>
<div {{ form_errors(formAddressEdit.cityId) }}>
{{ form_widget(formAddressEdit.cityName, {'attr':{'onClick':'javascript: cityModal2()', 'readonly':true}}) }}
{{ form_widget(formAddressEdit.cityId, {'attr':{'class':'display_n'}}) }}
</div>
</div>
<div class="col-12 form-group">
<label class="form_label">CAP*</label>
<div {{ form_errors(formAddressEdit.zip) }}>
<select id="form_address_select_zips" class="form-control form-select" readonly onChange="javascript: zipSet2()"><option value=""></option></select>
{{ form_widget(formAddressEdit.zip, {'attr':{'class':'display_n'}}) }}
<input type="text" class="form-control display_n" id="other_zip" name="other_zip"/>
</div>
</div>
</div>
{{ form_widget(formAddressEdit.otherCity, {'attr':{'class':'display_n'}}) }}
{{ form_widget(formAddressEdit.updateClient) }}
</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>
<a href="javascript:ticketAddressEditUpdateClient()" class="button button-3d button-mini button-green f_right">Conferma</a>
</div>
{{ form_end(formAddressEdit) }}
</div>
</div>
</div>
{% include 'components/modals/city.html.twig' with {'number':2, 'cities':cities, 'hasOtherCity':true} %}
{% include 'components/js/city_js.html.twig' with {'number':1, 'modalToClose':'', 'formName':'form_error_address', 'sessionModalOpen':'', 'zipManage':true, 'hasOtherCity':false} %}
<div id="ticketAddressEditUpdateClientModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header"><h3 class="modal-title">Aggiorna indirizzo cliente</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)'>aggiorna</a> aggiornerai l'indirizzo anche al cliente oltre che al ticket.<br>Si è sicuri di voler proseguire?</p>
</div>
</div>
</div>
<div class="modal-footer">
<a href="javascript:ticketAddressEditSend(0)" class="button button-3d button-mini button-amber f_left">Non aggiornare</a>
<a href="javascript:ticketAddressEditSend(1)" class="button button-3d button-mini button-green f_right">Aggiorna</a>
</div>
</div>
</div>
</div>
{% if ticket.client != null %}
{% set editClientModalBody %}
{% set phone1 = '' %}
{% set phone2 = '' %}
{% set phone3 = '' %}
{% for p in ticket.client.phones %}
{% if p.name == 'Telefono 1' %} {% set phone1 = p.number %} {% endif %}
{% if p.name == 'Telefono 2' %} {% set phone2 = p.number %} {% endif %}
{% if p.name == 'Telefono cellulare' %} {% set phone3 = p.number %} {% endif %}
{% endfor %}
<input type="hidden" id="clientEditId" name="clientEditId"/>
<div class="col-12 form-group">
<label class="form_label">Orari apertura</label>
<div {{ form_errors(formClientEdit.openings) }}>
{{ form_widget(formClientEdit.openings, {'attr':{'value':ticket.client.openings}}) }}
</div>
</div>
<div class="col-12 form-group">
<label class="form_label">Chiusure</label>
<div {{ form_errors(formClientEdit.closures) }}>
{{ form_widget(formClientEdit.closures, {'attr':{'value':ticket.client.closures}}) }}
</div>
</div>
{% if formClientEdit.phone1 is defined %}
<div class="col-12 form-group">
<label class="form_label">Telefono 1</label>
<div {{ form_errors(formClientEdit.phone1) }}>
{{ form_widget(formClientEdit.phone1, {'attr':{'value':phone1}}) }}
</div>
</div>
{% endif %}
{% if formClientEdit.phone2 is defined %}
<div class="col-12 form-group">
<label class="form_label">Telefono 2</label>
<div {{ form_errors(formClientEdit.phone2) }}>
{{ form_widget(formClientEdit.phone2, {'attr':{'value':phone2}}) }}
</div>
</div>
{% endif %}
{% if formClientEdit.phone3 is defined %}
<div class="col-12 form-group">
<label class="form_label">Telefono cellulare</label>
<div {{ form_errors(formClientEdit.phone3) }}>
{{ form_widget(formClientEdit.phone3, {'attr':{'value':phone3}}) }}
</div>
</div>
{% endif %}
<div class="col-12 form-group">
<label class="form_label">Note</label>
<div {{ form_errors(formClientEdit.notes) }}>
{{ form_widget(formClientEdit.notes, {'attr':{'style':'min-height:300px!important', 'value':ticket.client.notes}}) }}
</div>
</div>
{% endset %}
{% set editClientScriptBody %}{% endset %}
{% include 'components/modals/edit.html.twig' with {'type':'client', 'form':formClientEdit, 'text':'Dati cliente', 'modalBody':editClientModalBody, 'scriptBody':editClientScriptBody, 'openModal':'openEditModal', 'id':'openEditModalId', 'modalDimension':'modal-md'} %}
<div id="clientPhoneCallModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header"><h3 class="modal-title">Chiama cliente</h3></div>
<div class="modal-body">
<div class="row">
<div class="col-12 txt_a_c">
<label class="form_label font_18">Clicca sul numero che vuoi chiamare:</label>
{% if ticket.client.getPhoneByName('Telefono 1') != '' %}
{% set phone1 = ticket.client.getPhoneByName('Telefono 1') %}
<a href="tel:{{ phone1 }}" class="button button-3d button-small button-green font_20 f_w_400 width_60 txt_a_c">{{ phone1 }}</a><br>
{% endif %}
{% if ticket.client.getPhoneByName('Telefono 2') != '' %}
{% set phone2 = ticket.client.getPhoneByName('Telefono 2') %}
<a href="tel:{{ phone2 }}" class="button button-3d button-small button-green font_20 f_w_400 width_60 txt_a_c">{{ phone2 }}</a><br>
{% endif %}
{% if ticket.client.getPhoneByName('Telefono cellulare') != '' %}
{% set phone3 = ticket.client.getPhoneByName('Telefono cellulare') %}
<a href="tel:{{ phone3 }}" class="button button-3d button-small button-green font_20 f_w_400 width_60 txt_a_c">{{ phone3 }}</a><br>
{% endif %}
{% if ticket.displayJsonValueByColumn('Prefisso') is not null and ticket.displayJsonValueByColumn('Prefisso') != "" and ticket.displayJsonValueByColumn('Prefisso') != "---" %}
{% if ticket.client.getPhoneByName('Telefono 1') != '' %}
{% set number1Prefix = ticket.displayJsonValueByColumn('Prefisso') ~ ticket.client.getPhoneByName('Telefono 1') %}
<a href="tel:{{ number1Prefix }}" class="button button-3d button-small button-green font_20 f_w_400 width_60 txt_a_c">{{ number1Prefix }}</a><br>
{% endif %}
{% endif %}
</div>
</div>
</div>
<div class="modal-footer txt_a_c">
<a href="javascript:void(0)" class="button button-3d button-small button-red" data-bs-dismiss="modal">Chiudi</a>
</div>
</div>
</div>
</div>
{% endif %}
{# SOSPENSIONE - SBLOCCA #}
<div id="ticketSuspensionUnlockModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
{{ form_start(formSusUnlock, {'attr': {'novalidate': 'novalidate'}}) }}
<div class="modal-header"><h3 class="modal-title">Sblocca sospensione</h3></div>
<div class="modal-body">
{{ form_widget(formSusUnlock.id) }}
<div class="row">
<div class="col-12 txt_a_c">
<label class="modal_subtitle">Attenzione!</label>
<p class="modal_paragraph">Inserendo la motivazione di sblocco e cliccando sul bottone <a class='button button-3d button-mini button-green' href='javascript:void(0)'>conferma</a> revocherai la sospensione al ticket.<br>Si è sicuri di voler proseguire?</p>
</div>
<div class="col-12 m_t_30p">
<label class="form_label">Motivazione di sblocco*</label>
<div {{ form_errors(formSusUnlock.unlockCausal) }}>
{{ form_widget(formSusUnlock.unlockCausal, {'attr':{'class':'form-control'}}) }}
</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(formSusUnlock) }}
</div>
</div>
</div>
{% if app.user.canMakeTicketActions('agency_warehouse', null) %} {# AGENZIA #}
{# TICKET - ANNULLA #}
<div id="ticketCancelModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form action="{{ path ('user_ticket_cancel') }}" method="post">
<div class="modal-header"><h3 class="modal-title">Annulla ticket</h3></div>
<div class="modal-body">
<input type="hidden" name="ticketId" value="{{ ticket.id }}"/>
<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-red' href='javascript:void(0)'>conferma</a> annullerai il ticket.<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-green f_left" data-bs-dismiss="modal">Annulla</a>
<button type="submit" class="button button-3d button-mini button-red f_right">Conferma</button>
</div>
</form>
</div>
</div>
</div>
{# TICKET - RIPRISTINA #}
<div id="ticketRestoreModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form action="{{ path ('user_ticket_restore') }}" method="post">
<div class="modal-header"><h3 class="modal-title">Ripristina ticket</h3></div>
<div class="modal-body">
<input type="hidden" name="ticketId" value="{{ ticket.id }}"/>
<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> ripristinerai il ticket.<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>
{# TICKET - CHIUDI #}
<div id="ticketCloseModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form action="{{ path ('user_ticket_close') }}" method="post">
<div class="modal-header"><h3 class="modal-title">Chiudi ticket</h3></div>
<div class="modal-body">
<input type="hidden" name="ticketId" value="{{ ticket.id }}"/>
<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> chiuderai il ticket.<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>
{# TICKET - ERRATO #}
<div id="ticketWrongModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form action="{{ path ('user_ticket_wrong') }}" method="post">
<div class="modal-header"><h3 class="modal-title">Ticket errato</h3></div>
<div class="modal-body">
<input type="hidden" name="ticketId" value="{{ ticket.id }}"/>
<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-red' href='javascript:void(0)'>conferma</a> renderai errato il ticket.<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-green f_left" data-bs-dismiss="modal">Annulla</a>
<button type="submit" class="button button-3d button-mini button-red f_right">Conferma</button>
</div>
</form>
</div>
</div>
</div>
{# TICKET - ELIMINA #}
<div id="ticketDeleteModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
{{ form_start(formDelete, {'attr': {'novalidate': 'novalidate'}}) }}
<div class="modal-header"><h3 class="modal-title">Elimina ticket</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">Inserendo la password e cliccando sul bottone <a class='button button-3d button-mini button-red' href='javascript:void(0)'>conferma</a> eliminerai in maniera definitiva il ticket.<br>Si è sicuri di voler proseguire?</p>
</div>
<div class="col-12 form-group">
<label class="form_label">Password* <a class="icon_info f_none" href="javascript:divHelp('password_for_delete')"><img src="{{ asset(icon_info) }}" /></a></label>
<div {{ form_errors(formDelete.password) }}>
{{ form_widget(formDelete.password, {'attr':{'class':'form-control'}}) }}
</div>
</div>
</div>
</div>
<div class="modal-footer">
<a href="javascript:void(0)" class="button button-3d button-mini button-green f_left" data-bs-dismiss="modal">Annulla</a>
<button type="submit" class="button button-3d button-mini button-red f_right">Conferma</button>
</div>
{{ form_end(formDelete) }}
</div>
</div>
</div>
{# TICKET - MODIFICA OPERAZIONE #}
<div id="ticketOperationEditModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
{{ form_start(formOperationEdit, {'attr': {'novalidate': 'novalidate'}}) }}
<div class="modal-header"><h3 class="modal-title">Modifica operazione</h3></div>
<div class="modal-body">
<div class="row">
<div class="col-12 form-group">
<label class="form_label">Operazione*</label>
<div {{ form_errors(formOperationEdit.operation) }}>
{{ form_widget(formOperationEdit.operation, {'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(formOperationEdit) }}
</div>
</div>
</div>
{# TICKET - MODIFICA TARIFFA OPERAZIONE #}
<div id="ticketOperationTariffAmountModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
{{ form_start(formOperationTariffAmount, {'attr': {'novalidate': 'novalidate'}}) }}
<div class="modal-header"><h3 class="modal-title">Modifica tariffa</h3></div>
<div class="modal-body">
<div class="row">
<div class="col-12 form-group">
<label class="form_label">Tariffa*</label>
<div {{ form_errors(formOperationTariffAmount.operationTariffAmount) }}>
{{ form_widget(formOperationTariffAmount.operationTariffAmount, {'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(formOperationTariffAmount) }}
</div>
</div>
</div>
{# TECNICO - ASSEGNA #}
<div id="technicianAssignModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form action="{{ path ('user_ticket_technician_assign') }}" method="post">
<div class="modal-header"><h3 class="modal-title">Assegna tecnico</h3></div>
<div class="modal-body">
<input type="hidden" id="technicianAssignId" name="technicianId"/>
<input type="hidden" name="ticketId" value="{{ ticket.id }}"/>
<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> assegnerai il ticket a questo tecnico.<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>
{# SOSPENSIONE - APPROVA/NON APPROVARE #}
<div id="ticketSuspensionApproveModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
{{ form_start(formSusApprove, {'attr': {'novalidate': 'novalidate'}}) }}
<div class="modal-header"><h3 class="modal-title"><span id="sus_approve_title" class="color_w"></span> sospensione</h3></div>
<div class="modal-body">
{{ form_widget(formSusApprove.id) }}
{{ form_widget(formSusApprove.isApproved) }}
<div class="row">
<div class="col-12">
<div class="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><span id="sus_approve_text"></span> la sospensione a questo ticket.<br>Si è sicuri di voler proseguire?</p>
</div>
</div>
<div class="col-12 form-group" id="sus_approve_motivation" style="display: none">
<label class="form_label">Motivazione*</label>
<div {{ form_errors(formSusApprove.refuseMotivation) }}>
{{ form_widget(formSusApprove.refuseMotivation, {'attr':{'class':'form-control'}}) }}
</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(formSusApprove) }}
</div>
</div>
</div>
{# ERRORE - CITTA FUORI COPERTURA #}
{% include 'components/modals/city.html.twig' with {'number':1, 'cities':cities, 'hasOtherCity':false} %}
<div id="interventionExtraSendApproveModal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form action="{{ path ('user_ticket_intervention_extra_send_approve') }}" method="post">
<div class="modal-header"><h3 class="modal-title"><span id="intervention_extra_send_approve_title" class="color_w"></span> extra</h3></div>
<div class="modal-body">
<input type="hidden" id="intervention_extra_approve_id" name="interventionExtraId"/>
<input type="hidden" id="intervention_extra_approve_status" name="interventionExtraStatus"/>
<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><span id="intervention_extra_send_approve_text"></span> approverai l'extra del ticket.<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.canMakeTicketActions('technician', settingBackOffice) %}
{# SE TECNICO INTERNO O TECNICO P. IVA O (AGENZIA E SETTING BACKOFFICE_MANAGE = 1) #}
{# AZIONI TICKET #}
<form id="formTicketAction" action="{{ path ('user_ticket_intervention_select') }}" method="post">
<input type="hidden" id="intervention_outcome_type_slug" name="interventionOutcomeTypeSlug">
<input type="hidden" id="intervention_warehouse" name="interventionWarehouseId">
<input type="hidden" name="ticketId" value="{{ ticket.id }}"/>
</form>
{% if ticket.technician is not null %}
<div id="modalTicketSelectWarehouse" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header"><h3 class="modal-title">Seleziona magazzino</h3></div>
<div class="modal-body">
<div class="row">
<div class="col-12">
<label class="form_label">Seleziona magazzino tecnico per l'intervento</label>
<select id="select_warehouse" class="form-control form-select" onChange="updateSelectWarehouseButton()">
<option value="0"></option>
{% for jt in ticket.technician.warehouses %}
{% if jt.permission == 'RW' %}
<option value="{{ jt.warehouse.id }}" {% if jt.main %}selected{% endif %}>{{ jt.warehouse }}</option>
{% endif %}
{% endfor %}
</select>
</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>
<a id="modal_select_warehouse_button" href="javascript:void(0)" class="button button-3d button-mini button-grey f_right">Seleziona</a>
</div>
</div>
</div>
</div>
{% endif %}
{# INTERVENTION EXTRA #}
{% set interventionExtraNewModalBody %}
<div class="row">
<div class="col-12 form-group">
<label class="form_label">Intervento*</label>
<div {{ form_errors(formExtraNew.intervention) }}>
{{ form_widget(formExtraNew.intervention, {'attr':{'class':'form-control form-select'}}) }}
</div>
</div>
<div class="col-12 form-group">
<label class="form_label">Tipo*</label>
<div {{ form_errors(formExtraNew.type) }}>
{{ form_widget(formExtraNew.type, {'attr':{'class':'form-control form-select', 'onChange':'updateExtraVisual("new")'}}) }}
</div>
</div>
<div class="col-12 form-group" id="new_intervention_extra_hours" style="display: none">
<label class="form_label">Ore*</label>
<div {{ form_errors(formExtraNew.hours) }}>
{{ form_widget(formExtraNew.hours) }}
</div>
</div>
<div class="col-12 form-group" id="new_intervention_extra_cost" style="display: none">
<label class="form_label">Costo {% if app.user.accountTypology == 'agency' or app.user.accountTypology == 'warehouse' %}totale [€]* <a id="new_info_hour_cost" class="icon_info f_none"><img src="{{ asset(icon_info) }}" data-bs-toggle="tooltip" title="Moltiplicare il costo fornitore ora extra ({{ ticket.supplier.amountTicketExtraHour|default('0.00') }} €) per il numero di ore"/></a>{% else %}[€]* <a id="new_info_hour_cost" class="display_n"></a>{% endif %}</label>
<div {{ form_errors(formExtraNew.cost) }}>
{{ form_widget(formExtraNew.cost) }}
</div>
</div>
<div class="col-12 form-group" id="new_intervention_extra_file" style="display: none">
<label class="form_label">File*</label>
<div {{ form_errors(formExtraNew.filePath) }}>
{{ form_widget(formExtraNew.filePath, {'attr': {'class':'display_n'}}) }}
{{ form_widget(formExtraNew.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">Note</label>
<div {{ form_errors(formExtraNew.notes) }}>
{{ form_widget(formExtraNew.notes) }}
</div>
</div>
</div>
{% endset %}
{% set interventionExtraNewScriptBody %}
updateExtraVisual("new");
{% endset %}
{% include 'components/modals/new.html.twig' with {'type':'interventionExtra', 'form':formExtraNew, 'text':'Extra intervento', 'modalBody':interventionExtraNewModalBody, 'scriptBody':interventionExtraNewScriptBody, 'openModal':'openModalExtraNew'} %}
{% include 'components/js/upload_file_js.html.twig' with {'number':'1', 'file':'form_intervention_extra_new_file', 'path':'form_intervention_extra_new_filePath'} %}
{% set interventionExtraEditModalBody %}
<input type="hidden" id="interventionExtraEditId" name="extraEditId"/>
<div class="row">
<div class="col-12 form-group">
<label class="form_label">Intervento*</label>
<div {{ form_errors(formExtraEdit.intervention) }}>
{{ form_widget(formExtraEdit.intervention, {'attr':{'class':'form-control form-select'}}) }}
</div>
</div>
<div class="col-12 form-group">
<label class="form_label">Tipo*</label>
<div {{ form_errors(formExtraEdit.type) }}>
{{ form_widget(formExtraEdit.type, {'attr':{'class':'form-control form-select', 'onChange':'updateExtraVisual("edit")'}}) }}
</div>
</div>
<div class="col-12 form-group" id="edit_intervention_extra_hours" style="display: none">
<label class="form_label">Ore*</label>
<div {{ form_errors(formExtraEdit.hours) }}>
{{ form_widget(formExtraEdit.hours) }}
</div>
</div>
<div class="col-12 form-group" id="edit_intervention_extra_cost" style="display: none">
<label class="form_label">Costo {% if app.user.accountTypology == 'agency' or app.user.accountTypology == 'warehouse' %}totale [€]* <a id="edit_info_hour_cost" class="icon_info f_none"><img src="{{ asset(icon_info) }}" data-bs-toggle="tooltip" title="Moltiplicare il costo fornitore ora extra ({{ ticket.supplier.amountTicketExtraHour|default('0.00') }} €) per il numero di ore"/></a>{% else %}[€]* <a id="edit_info_hour_cost" class="display_n"></a>{% endif %}</label>
<div {{ form_errors(formExtraEdit.cost) }}>
{{ form_widget(formExtraEdit.cost) }}
</div>
</div>
<div class="col-12 form-group" id="edit_intervention_extra_file" style="display: none">
<label class="form_label">File</label>
<div {{ form_errors(formExtraEdit.filePath) }}>
{{ form_widget(formExtraEdit.filePath, {'attr': {'class':'display_n'}}) }}
{{ form_widget(formExtraEdit.file, {'attr': {'class':'display_n'}}) }}
<div class="input-group">
<span class="input-group-btn"><button id="selectFile2" class="button button-3d button-small button-rounded button-pr button_input_group" type="button">Seleziona</button></span>
<input id="filename2" type="text" class="form-control" readonly>
</div>
</div>
</div>
<div class="col-12 form-group">
<label class="form_label">Note</label>
<div {{ form_errors(formExtraEdit.notes) }}>
{{ form_widget(formExtraEdit.notes) }}
</div>
</div>
</div>
{% endset %}
{% set interventionExtraEditScriptBody %}
document.getElementById("interventionExtraEditId").value = id;
document.getElementById("form_intervention_extra_edit_intervention").value = document.getElementById("intervention_extra_intervention_" + id).value;
document.getElementById("form_intervention_extra_edit_type").value = document.getElementById("intervention_extra_type_" + id).value;
document.getElementById("form_intervention_extra_edit_hours").value = document.getElementById("intervention_extra_hours_" + id).value;
document.getElementById("form_intervention_extra_edit_cost").value = document.getElementById("intervention_extra_cost_" + id).value;
document.getElementById("form_intervention_extra_edit_notes").value = document.getElementById("intervention_extra_notes_" + id).value;
updateExtraVisual("edit");
{% endset %}
{% include 'components/modals/edit.html.twig' with {'type':'interventionExtra', 'form':formExtraEdit, 'text':'Extra intervento', 'modalBody':interventionExtraEditModalBody, 'scriptBody':interventionExtraEditScriptBody, 'openModal':'openModalExtraEdit', 'id':'openModalExtraEditId'} %}
{% include 'components/js/upload_file_js.html.twig' with {'number':'2', 'file':'form_intervention_extra_edit_file', 'path':'form_intervention_extra_edit_filePath'} %}
{% include 'components/modals/delete.html.twig' with {'type':'interventionExtra', 'action':'user_ticket_intervention_extra_delete' , 'text':'Extra intervento'} %}
{% endif %}
{# INTERVENTO - ELIMINA #}
{% include 'components/modals/delete.html.twig' with {'type':'intervention', 'action':'user_ticket_intervention_delete', 'text':'Intervento'} %}
{# REMINDER - ELIMINA #}
{% include 'components/modals/delete.html.twig' with {'type':'reminder', 'action':'user_ticket_reminder_delete' , 'text':'Promemoria'} %}
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script>
function ticketBillable(){
{% if ticket.billable %}
document.getElementById('modal_ticket_billable_text').innerHTML = "non fatturabile";
{% else %}
document.getElementById('modal_ticket_billable_text').innerHTML = "fatturabile";
{% endif %}
$('#ticketBillableModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function ticketAddressEdit(){
$('#ticketAddressEditModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function ticketAddressEditUpdateClient(){
$('#ticketAddressEditModal').modal("hide");
$('#ticketAddressEditUpdateClientModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function ticketAddressEditSend(val){
document.getElementById('form_address_updateClient').value = val;
triggerLoading();
$('#formAddressEdit').submit();
}
function clientPhoneCall(){
$('#clientPhoneCallModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function ticketSuspensionUnlock(id){
document.getElementById("form_suspension_unlock_id").value = id;
$('#ticketSuspensionUnlockModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
{% if app.user.canMakeTicketActions('agency_warehouse', null) %}
{# AGENZIA #}
$(document).ready(function(){
{% if ticket.otherCity != null %}
document.getElementById('form_address_cityId').value = '';
document.getElementById('form_address_cityName').value = '{{ ticket.otherCity }}';
document.getElementById('other_city_2').value = '{{ ticket.otherCity }}';
document.getElementById('other_zip').value = '{{ ticket.zip }}';
document.getElementById('form_address_select_zips').style.display = 'none';
document.getElementById('other_zip').style.display = 'block';
{% else %}
document.getElementById('form_address_cityId').value = '{{ ticket.idCity }}';
document.getElementById('form_address_cityName').value = '{{ ticket.idCity|translate_city_only }}';
zipUpdateSelect2(true);
{% endif %}
{% if app.session.get('openModalTariff') %}
operationTariffAmountChange();
"{{ app.session.remove('openModalTariff') }}"
{% endif %}
{% if app.session.get('openModalSuspensionApprove') %}
ticketSuspensionApprove("{{ app.session.remove('openModalSuspensionApproveId') }}", "{{ app.session.remove('openModalSuspensionApproveIs') }}");
"{{ app.session.remove('openModalSuspensionApprove') }}"
"{{ app.session.remove('openModalSuspensionApproveId') }}"
"{{ app.session.remove('openModalSuspensionApproveIs') }}"
{% endif %}
{% if app.session.get('openModalSuspensionUnlock') %}
ticketSuspensionUnlock("{{ app.session.get('openModalSuspensionUnlockId') }}");
"{{ app.session.remove('openModalSuspensionUnlock') }}"
"{{ app.session.remove('openModalSuspensionUnlockId') }}"
{% endif %}
{% if app.session.get('openDeleteModal') %}
ticketDelete();
"{{ app.session.remove('openDeleteModal') }}"
{% endif %}
});
$('#form_expiration_edit_date').datepicker({ autoclose: true, todayHighlight: true, format: "dd-mm-yyyy", startDate: "today" });
$('#form_suspension_edit_dateFrom').datepicker({ autoclose: true, todayHighlight: true, format: "dd-mm-yyyy", startDate: "today"});
$('#form_suspension_edit_dateTo').datepicker({ autoclose: true, todayHighlight: true, format: "dd-mm-yyyy", startDate: "today" });
function ticketCancel(){
$('#ticketCancelModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function ticketRestore(){
$('#ticketRestoreModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function ticketClose(){
$('#ticketCloseModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function ticketWrong(){
$('#ticketWrongModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function ticketDelete(){
$('#ticketDeleteModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function operationEdit(){
$('#ticketOperationEditModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function operationTariffAmountChange(){
{% if ticket.operationTariffAmount != null %}
document.getElementById('form_operation_tariff_amount_operationTariffAmount').value = "{{ ticket.operationTariffAmount.id }}";
{% endif %}
$('#ticketOperationTariffAmountModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function technicianAssign(id){
document.getElementById("technicianAssignId").value = id;
$('#technicianAssignModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function technicianChangeShow(){
var btn = document.getElementById('btn_technician_change');
var row = document.getElementById('row_technician_change');
var rowVal = document.getElementById('row_technician_change_val');
btn.style.display = "none";
rowVal.value = 1;
row.style.display = 'block';
}
function expirationDatetimeEdit(){
document.getElementById('form_expiration_edit_date').value = "{{ ticket.datetimeExpiration|date('d-m-Y') }}";
document.getElementById('form_expiration_edit_timeHour').value = "{{ ticket.datetimeExpiration|date('H') }}";
document.getElementById('form_expiration_edit_timeMinute').value = "{{ ticket.datetimeExpiration|date('i') }}";
$('#ticketExpirationDatetimeModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function waybillEdit(){
document.getElementById('form_waybill_edit_waybill').value = "{{ ticket.waybill }}";
$('#ticketWaybillModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function ticketSuspensionApprove(id, action){
document.getElementById("form_suspension_approve_id").value = id;
document.getElementById("form_suspension_approve_isApproved").value = action;
if(action == 1){
document.getElementById('sus_approve_title').innerHTML = 'Approva';
document.getElementById('sus_approve_text').innerHTML = 'approverai';
document.getElementById('sus_approve_motivation').style.display = 'none';
}
else{
document.getElementById('sus_approve_title').innerHTML = 'Non approvare';
document.getElementById('sus_approve_text').innerHTML = 'non approverai';
document.getElementById('sus_approve_motivation').style.display = 'block';
}
$('#ticketSuspensionApproveModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function ticketSuspensionEdit(id){
document.getElementById("form_suspension_edit_id").value = id;
document.getElementById("form_suspension_edit_dateFrom").value = document.getElementById('suspension_date_from').value;
document.getElementById("form_suspension_edit_timeFromHour").value = document.getElementById('suspension_time_from_hour').value;
document.getElementById("form_suspension_edit_timeFromMinute").value = document.getElementById('suspension_time_from_minute').value;
document.getElementById("form_suspension_edit_dateTo").value = document.getElementById('suspension_date_to').value;
document.getElementById("form_suspension_edit_timeToHour").value = document.getElementById('suspension_time_to_hour').value;
document.getElementById("form_suspension_edit_timeToMinute").value = document.getElementById('suspension_time_to_minute').value;
$('#ticketSuspensionEditModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
$('#form_intervention_sla_dateBilling').datepicker({ autoclose: true, minViewMode: 1, format: "mm-yyyy" });
function interventionSla(id){
document.getElementById("form_intervention_sla_id").value = id;
document.getElementById("form_intervention_sla_slaOutboundPercentage").value = document.getElementById('ticket_sla_' + id).value;
document.getElementById("form_intervention_sla_dateBilling").value = document.getElementById('ticket_date_billing_' + id).value;
$('#interventionSlaModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function interventionNotBillable(id){
document.getElementById("notBillableId").value = id;
if(document.getElementById('intervention_billable_' + id).value){
document.getElementById('modal_billable_title').innerHTML = 'Non fatturabile';
document.getElementById('modal_billable_text').innerHTML = 'non fatturabile';
}
else{
document.getElementById('modal_billable_title').innerHTML = 'Da fatturare';
document.getElementById('modal_billable_text').innerHTML = 'da fatturare';
}
$('#interventionNotBillableModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
{% endif %}
{% if app.user.canMakeTicketActions('technician', settingBackOffice) %}
{# TECNICO INTERNO / TECNICO P. IVA --- AZIONI TICKET #}
function ticketStatus(outcomeType){
document.getElementById('intervention_outcome_type_slug').value = outcomeType;
if(outcomeType != 'completed'){
triggerLoading();
$('#formTicketAction').submit();
}
else{
{% if ticket.technician is not null and ticket.technician.warehouses|length == 1 %}
document.getElementById('intervention_warehouse').value = '{{ ticket.technician.warehouses[0].warehouse.id }}';
triggerLoading();
$('#formTicketAction').submit();
{% else %}
updateSelectWarehouseButton();
$('#modalTicketSelectWarehouse').modal({backdrop: 'static', keyboard: false}).modal("show");
{% endif %}
}
}
function updateSelectWarehouseButton(){
var aConfirm = document.getElementById('modal_select_warehouse_button');
if(document.getElementById('select_warehouse').value != '0'){
aConfirm.className = 'button button-3d button-mini button-green f_right';
aConfirm.href = 'javascript: warehouseConfirm()';
}
else{
aConfirm.className = 'button button-3d button-mini button-grey f_right';
aConfirm.href = 'javascript: void(0)';
}
}
function warehouseConfirm(){
document.getElementById('intervention_warehouse').value = document.getElementById('select_warehouse').value;
triggerLoading();
$('#formTicketAction').submit();
}
{% endif %}
function interventionSheet(id){
document.getElementById('intervention_sheet_date').innerHTML = document.getElementById('int_date_' + id).innerHTML;
document.getElementById('intervention_sheet_technician').innerHTML = document.getElementById('int_technician_' + id).innerHTML;
document.getElementById('intervention_sheet_operator').innerHTML = document.getElementById('int_operator_' + id).innerHTML;
document.getElementById('intervention_sheet_outcome').innerHTML = document.getElementById('int_outcome_' + id).innerHTML;
document.getElementById('intervention_sheet_billable').innerHTML = document.getElementById('int_billable_' + id).innerHTML;
document.getElementById('intervention_sheet_sla').innerHTML = document.getElementById('int_sla_' + id).innerHTML;
document.getElementById('intervention_sheet_datetime_billing').innerHTML = document.getElementById('int_datetime_billing_' + id).innerHTML;
document.getElementById('intervention_sheet_motivation').innerHTML = document.getElementById('int_motivation_' + id).value;
document.getElementById('intervention_sheet_activities').innerHTML = document.getElementById('int_activities_' + id).innerHTML;
$('#interventionSheetModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function updateExtraVisual(type){
switch(document.getElementById('form_intervention_extra_' + type + '_type').value){
case 'hours':
document.getElementById(type + '_intervention_extra_hours').style.display = 'block';
document.getElementById(type + '_intervention_extra_cost').style.display = {% if app.user.getAccountTypology == 'agency' %}'block'{% else %}'none'{% endif %};
document.getElementById(type + '_intervention_extra_file').style.display = 'none';
document.getElementById(type + '_info_hour_cost').style.display = 'contents';
break;
case 'cost':
document.getElementById(type + '_intervention_extra_hours').style.display = 'none';
document.getElementById(type + '_intervention_extra_cost').style.display = 'block';
document.getElementById(type + '_intervention_extra_file').style.display = 'block';
document.getElementById(type + '_info_hour_cost').style.display = 'none';
break;
case 'tariff_extra':
document.getElementById(type + '_intervention_extra_hours').style.display = 'none';
document.getElementById(type + '_intervention_extra_cost').style.display = 'block';
document.getElementById(type + '_intervention_extra_file').style.display = 'none';
document.getElementById(type + '_info_hour_cost').style.display = 'none';
break;
case 'tariff_out':
document.getElementById(type + '_intervention_extra_hours').style.display = 'none';
document.getElementById(type + '_intervention_extra_cost').style.display = 'block';
document.getElementById(type + '_intervention_extra_file').style.display = 'none';
document.getElementById(type + '_info_hour_cost').style.display = 'none';
break;
default:
document.getElementById(type + '_intervention_extra_hours').style.display = 'none';
document.getElementById(type + '_intervention_extra_cost').style.display = 'none';
document.getElementById(type + '_intervention_extra_file').style.display = 'none';
document.getElementById(type + '_info_hour_cost').style.display = 'none';
break;
}
}
function interventionExtraSheet(id){
document.getElementById('intervention_extra_sheet_intervention').innerHTML = document.getElementById('intervention_extra_intervention_display_' + id).value;
document.getElementById('intervention_extra_sheet_type').innerHTML = document.getElementById('intervention_extra_type_display_' + id).value;
document.getElementById('intervention_extra_sheet_hours').innerHTML = document.getElementById('intervention_extra_hours_' + id).value;
document.getElementById('intervention_extra_sheet_cost').innerHTML = document.getElementById('intervention_extra_cost_' + id).value;
document.getElementById('intervention_extra_sheet_notes').innerHTML = document.getElementById('intervention_extra_notes_' + id).value;
switch(document.getElementById('intervention_extra_type_' + id).value){
case 'cost':
document.getElementById('intervention_extra_sheet_hours_tr').style.display = 'none';
document.getElementById('intervention_extra_sheet_a').href = document.getElementById('intervention_extra_imgSource_' + id).value;
document.getElementById('intervention_extra_sheet_a').style.display = 'block';
break;
default:
document.getElementById('intervention_extra_sheet_hours_tr').style.display = 'table-row';
document.getElementById('intervention_extra_sheet_a').style.display = 'none';
break;
}
{% if app.user.canMakeTicketActions('agency_warehouse', null) %}
document.getElementById('button_approve').href = "javascript: interventionExtraSendApprove(" + id + ", 'approve')";
document.getElementById('button_not_approve').href = "javascript: interventionExtraSendApprove(" + id + ", 'not_approve')";
{% endif %}
$('#interventionExtraSheetModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function interventionExtraSendApprove(id, status){
document.getElementById('intervention_extra_approve_id').value = id;
document.getElementById('intervention_extra_approve_status').value = status;
if(status == 'approve'){
document.getElementById('intervention_extra_send_approve_title').innerHTML = 'Approva';
document.getElementById('intervention_extra_send_approve_text').innerHTML = '';
}
else{
document.getElementById('intervention_extra_send_approve_title').innerHTML = 'Non approvare';
document.getElementById('intervention_extra_send_approve_text').innerHTML = ' non';
}
$('#interventionExtraSheetModal').modal("hide");
$('#interventionExtraSendApproveModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function showOtp(){
$('#showOtpModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function jsonData(){
$('#jsonDataModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
// REMINDER
$('#form_reminder_new_date').datepicker({ autoclose: true, todayHighlight: true, format: "dd-mm-yyyy", startDate: "today" });
$('#form_reminder_edit_date').datepicker({ autoclose: true, todayHighlight: true, format: "dd-mm-yyyy", startDate: "today" });
$(document).ready(function(){
{% if app.session.get('openModalReminderNew') %}
reminderNew();
{{ app.session.remove('openModalReminderNew') }}
{% endif %}
{% if app.session.get('openModalReminderEdit') %}
reminderEdit("{{ app.session.get('openModalReminderEditId') }}");
{{ app.session.remove('openModalReminderEdit') }}
{{ app.session.remove('openModalReminderEditId') }}
{% endif %}
});
function reminderNew(){
$('#reminderNewModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
function reminderEdit(id){
document.getElementById("form_reminder_edit_id").value = id;
document.getElementById("form_reminder_edit_date").value = document.getElementById("reminder_date_" + id).value;
document.getElementById("form_reminder_edit_hour").value = document.getElementById("reminder_hour_" + id).value;
document.getElementById("form_reminder_edit_minute").value = document.getElementById("reminder_minute_" + id).value;
document.getElementById("form_reminder_edit_details").value = document.getElementById("reminder_details_" + id).value;
$('#reminderEditModal').modal({backdrop: 'static', keyboard: false}).modal("show");
}
</script>
{% include 'components/js/city_js.html.twig' with {'number':2, 'modalToClose':'ticketAddressEditModal', 'formName':'form_address', 'sessionModalOpen':'', 'zipManage':true, 'hasOtherCity':true} %}
{% endblock %}