templates/base.html.twig line 1

  1. {% trans_default_domain "top_bar" %}
    
    <!DOCTYPE html>
    <html lang="{{ app.request.getLocale() }}">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta name="author" content="Fogazzi Mirko" />
        <meta name="copyright" content="Fogazzi Mirko" />
    
        {{ include('seo_metatag.html.twig') }}
    
        {{ impostazioni.ritornaImpostazioneDaNome("HeaderGeneraleTuttePagine")|raw }}
        {{ traduzione.CaricaTraduzioniDaFamiglie(["agenti_dialog_principale", "dialog_ricerca_cliente", "agenti_crea_offerta_da_carrello_dialog"], app.request.locale) }}
    
        {{ include('ZZ_front_end/stili_base.html.twig') }}
    
        <title>{% block title %}{{ impostazioni.ritornaImpostazioneDaNome("TitleGenerico")|raw }}{% endblock %}</title>
    
        <link rel="stylesheet" href="{{ asset('css/sm-core-css.css') }}">
        <link rel="stylesheet" href="{{ asset('css/simple-sidebar.css') }}">
        <!-- Bootstrap core CSS -->
        <link href="{{ asset('css/bootstrap.min.css') }}" rel="stylesheet">
        <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css" rel="stylesheet">
        <link href="{{ asset('css/dropdown-css-style.css') }}" rel="stylesheet">
    
        {#  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css">  #}
    
        <link href="{{ asset('java_lib/jquery-ui-1.12.0/jquery-ui.min.css') }}" rel="stylesheet">
    
        {% if is_granted('ROLE_ADMIN') or app.user or is_granted('ROLE_AGENTE') or is_granted('ROLE_COMMERCIALE') or is_granted("ROLE_FORNITORE") %}
            {#<link href="https://unpkg.com/tabulator-tables@4.2.7/dist/css/tabulator.min.css" rel="stylesheet">#}
            <link href="https://unpkg.com/tabulator-tables@5.2.3/dist/css/tabulator.min.css" rel="stylesheet">
            <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.css" integrity="sha256-aa0xaJgmK/X74WM224KMQeNQC2xYKwlAt08oZqjeF0E=" crossorigin="anonymous" />
        {% endif %}
    
        <!-- FONT AWSOME -->
    
        <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
    
        <!-- SLICK CAROUSEL -->
        <link rel="stylesheet" type="text/css" href="{{ asset('java_lib/slick-1.8.1/slick/slick.css') }}"/>
        <link rel="stylesheet" type="text/css" href="{{ asset('java_lib/slick-1.8.1/slick/slick-theme.css') }}"/>
        <!-- TINY SLIDER -->
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tiny-slider/2.9.2/tiny-slider.css">
    
        <!-- CORE NAV -->
        <link rel="stylesheet" type="text/css" href="{{ asset('java_lib/custom_mf_sidebar/mf_sidebar.css') }}" />
    
        <style type="text/css">
            #modalZoomImg * {box-sizing: border-box;}
    
            div#modalDettaglioCliente.modal.fade.in{
                visibility: visible;
            }
    
            div#modalDettaglioCliente.modal.fade{
                display: block;
                visibility: hidden;
            }
    
            .tb-numeri-tranne-1 td:not(:first-child), .tb-numeri-tranne-1 th:not(:first-child){
                text-align: right;
            }
    
            .tb-numeri-tranne-2 td:not(:first-child):not(:nth-child(2)), .tb-numeri-tranne-1 th:not(:first-child):not(:nth-child(2)){
                text-align: right;
            }
    
            .bottone-risorse-articoli{
                position: absolute;
                border: solid 1px green;
                border-radius: 10px;
                padding: 5px;
                float: right;
                width: 40px;
                z-index: 99;
                cursor: pointer;
                background: white;
                top: 0px;
                right: 0px;
                height: 40px;
            }
    
            .bottone-risorse-articoli img{
                height: 100%;
                width: 100%;
                /* Permalink - use to edit and share this gradient: https://colorzilla.com/gradient-editor/#ffffff+0,ffffff+100&1+0,0+100;White+to+Transparent */
                background: transparent;
            }
    
            .img-zoom-container {
                position: relative;
            }
    
            .centra-flex-tutto{
                display: flex;
                flex-direction: row;
                align-content: center;
                align-items: center;
                justify-content: center;
            }
    
            .img-zoom-lens {
                position: absolute;
                border: 1px solid #d4d4d4;
                /*set the size of the lens:*/
                width: 250px;
                height: 250px;
            }
    
            .img-zoom-result {
                border: 1px solid #d4d4d4;
                /*set the size of the result div:*/
                width: 300px;
                height: 300px;
            }
    
            {% if impostazioni.ritornaImpostazioneDaNome('NascondiFrecceSuGiuInInputNumber') == '1' %}
            /* Chrome, Safari, Edge, Opera */
            input::-webkit-outer-spin-button,
            input::-webkit-inner-spin-button {
                -webkit-appearance: none;
                margin: 0;
            }
    
            /* Firefox */
            input[type=number] {
                -moz-appearance: textfield;
            }
            {% endif %}
            /* The snackbar - position it at the bottom and in the middle of the screen */
            #snackbar {
                visibility: hidden; /* Hidden by default. Visible on click */
                min-width: 350px; /* Set a default minimum width */
                margin-left: -125px; /* Divide value of min-width by 2 */
                background-color: #333; /* Black background color */
                color: #fff; /* White text color */
                text-align: center; /* Centered text */
                border-radius: 2px; /* Rounded borders */
                padding: 16px; /* Padding */
                position: fixed; /* Sit on top of the screen */
                z-index: 1; /* Add a z-index if needed */
                left: 50%; /* Center the snackbar */
                bottom: 80px; /* 30px from the bottom */
                font-size: 15pt;
            }
    
            .attiva-tiny-slider{
                display: none;
            }
            .attiva-slick{
                display: none;
            }
    
            #bodyTabellaRicercaCliente tr:hover{
                background-color: yellow;
                cursor: pointer;
            }
    
            .cercaCliente:hover{
                cursor: pointer;
            }
    
            .modal { overflow: auto !important; }
    
            /* Show the snackbar when clicking on a button (class added with JavaScript) */
            #snackbar.show {
                visibility: visible; /* Show the snackbar */
    
                /* Add animation: Take 0.5 seconds to fade in and out the snackbar.
                However, delay the fade out process for 2.5 seconds */
                -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
                animation: fadein 0.5s, fadeout 0.5s 2.5s;
            }
    
            /* Animations to fade the snackbar in and out */
            @-webkit-keyframes fadein {
                from {bottom: 0; opacity: 0;}
                to {bottom: 80px; opacity: 1;}
            }
    
            @keyframes fadein {
                from {bottom: 0; opacity: 0;}
                to {bottom: 80px; opacity: 1;}
            }
    
            @-webkit-keyframes fadeout {
                from {bottom: 80px; opacity: 1;}
                to {bottom: 0; opacity: 0;}
            }
    
            @keyframes fadeout {
                from {bottom: 80px; opacity: 1;}
                to {bottom: 0; opacity: 0;}
            }
        </style>
    
        {% block head %}{% endblock %}
        {% block stylesheet %}{% endblock %}
    
        {% block altri_nav %}{% endblock %}
    
        <!-- jQuery Core -->
        <script type="text/javascript" src="{{ asset('java_lib/jquery-2.2.4.min.js') }}"></script>
        <script type="text/javascript" src="{{ asset('java_lib/jquery-ui-1.12.0/jquery-ui.min.js') }}"></script>
        <script type="text/javascript" src="{{ asset('java_lib/bootstrap.min.js') }}"></script>
        {#  <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.bundle.min.js"></script> #}
    
    </head>
    
    <body>
    <div id="snackbar"></div>
    <div class="loading" id="loadingMaster">Loading&#8230;</div>
    
    {% if app.request.get("_route") == 'admin_pagine_e_componenti_editor' %}
        {% set mostraTopBar = 0 %}
    {% endif %}
    
    {% if (mostraTopBar is defined and mostraTopBar == 1) or mostraTopBar is not defined %}
        {{ include('ZZ_front_end/top_bar/top_bar.html.twig') }}
    {% endif %}
    
    {% if app.request.get("_route") == 'home_shop' %}
        <div class="modal fade" role="dialog" tabindex="-1" style="z-index: 999999;" id="modal-cerca-filtro-avanzato-dialog">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                        <h4 class="modal-title">{{ traduzione.OttieniElementoDizionario("top_bar_filtro_avanzato_title", "top_bar").valoreUscita }}</h4>
                    </div>
                    <div class="modal-body">
                        <form id="form-filtro-avanzato">
                            <div class="form-group">
                                <label for="filtro-avanzato-codice">{{ traduzione.OttieniElementoDizionario("top_bar_filtro_avanzato_codice_label", "top_bar").valoreUscita }}</label>
                                <input type="text" class="form-control" name="articolo.codice" id="filtro-avanzato-codice">
                            </div>
                            <div class="form-group">
                                <label for="filtro-avanzato-nome">{{ traduzione.OttieniElementoDizionario("top_bar_filtro_avanzato_descrizione_label", "top_bar").valoreUscita }}</label>
                                <input type="text" class="form-control" name="articolo.nome" id="filtro-avanzato-nome">
                            </div>
                            <div class="form-group">
                                <label for="filtro-avanzato-marca">{{ traduzione.OttieniElementoDizionario("top_bar_filtro_avanzato_marca_label", "top_bar").valoreUscita }}</label>
                                <input type="text" class="form-control" name="mappa.marca" id="filtro-avanzato-marca">
                            </div>
                            <div class="checkbox">
                                <label>
                                    <input type="checkbox" name="filtro-avanzato-solo-disponibile"> {{ traduzione.OttieniElementoDizionario("top_bar_filtro_avanzato_mostra_solo_disponibili", "top_bar").valoreUscita }}
                                </label>
                            </div>
                            <div class="checkbox">
                                <label>
                                    <input type="checkbox" name="filtro-avanzato-cerca-solo-in-categorie-selezionate"> {{ traduzione.OttieniElementoDizionario("top_bar_filtro_avanzato_cerca_solo_in_albero_categorie_corrente", "top_bar").valoreUscita }}
                                </label>
                            </div>
                        </form>
                    </div>
                    <div class="modal-footer">
                        <button type="button" onclick="ResetRicerca();" class="btn btn-danger" data-dismiss="modal">{{ traduzione.OttieniElementoDizionario("top_bar_filtro_avanzato_reset_btn", "top_bar").valoreUscita }}</button>
                        <button type="button" onclick="$('#form-filtro-avanzato').submit();" class="btn btn-primary" data-dismiss="modal">{{ traduzione.OttieniElementoDizionario("top_bar_filtro_avanzato_applica_btn", "top_bar").valoreUscita }}</button>
                    </div>
                </div><!-- /.modal-content -->
            </div><!-- /.modal-dialog -->
        </div><!-- /.modal -->
    {% endif %}
    
    <div class="modal fade" tabindex="-1" role="dialog" id="modalZoomImg" style="z-index: 9999;">
        <div class="modal-dialog panel-warning" role="document"  style="width: 80%;">
            <div class="modal-content panel-warning">
                <div class="modal-body" style="overflow-y: auto;">
                    <div class="col-md-12 nascondiStampa">
                        <div class="img-zoom-container">
                            <div class="col-md-6 col-xs-12">
                                <img id="zoomImgImg" src="" style="max-height: 90vh; width: auto;">
                            </div>
                            <div class="col-md-6 col-xs-12" style="max-height: 90vh;">
                                <div id="zoomImgResult" class="img-zoom-result" style="width: 100%; height: 90vh;"></div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-danger" data-dismiss="modal">Chiudi</button>
                </div>
            </div><!-- /.modal-content -->
        </div><!-- /.modal-dialog -->
    </div><!-- /.modal -->
    
    <div class="modal fade" tabindex="-1" role="dialog" id="risorseCatArtDialog" style="z-index: 99999;">
        <div class="modal-dialog panel-warning" role="document"  style="width: 80%;">
            <div class="modal-content panel-warning">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title">Risorse</h4>
                </div>
                <div class="modal-body" id="risorseCatArtDialog-body" style="overflow-y: auto;">
    
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-danger" data-dismiss="modal">Chiudi</button>
                </div>
            </div><!-- /.modal-content -->
        </div><!-- /.modal-dialog -->
    </div><!-- /.modal -->
    
    {% if not is_granted('ROLE_ADMIN') or is_granted('ROLE_AGENTE') or is_granted('ROLE_COMMERCIALE') %}
    <div class="modal fade" tabindex="-1" role="dialog" id="modalDettaglioClienteLoggato">
        <div class="modal-dialog panel-warning" role="document"  style="width: 80%;">
            <div class="modal-content panel-warning">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title" id="modalTitleDettaglioClienteLoggato">
                        <button class="btn btn-danger" style="margin-right: 10px;" data-dismiss="modal" aria-label="Close">{{ traduzione.OttieniElementoDizionario("agenti_dialog_principale_indietro_btn", "agenti_dialog_principale").valoreUscita }}</button>
                        {{ traduzione.OttieniElementoDizionario("agenti_dialog_principale_dettaglio_cliente", "agenti_dialog_principale").valoreUscita }} <span id="modalDettaglioClienteLoggato-title2" style="color:red;"></span>
                    </h4>
                </div>
                <div class="modal-body" id="modalDettaglioClienteLoggato-body" style="overflow-y: auto;">
                </div>
            </div>
        </div>
    </div>
    {% endif %}
    
    
    {% if is_granted('ROLE_ADMIN') or is_granted('ROLE_AGENTE') or is_granted('ROLE_COMMERCIALE') %}
    
    <div class="modal fade" tabindex="-1" role="dialog" id="modalDettaglioCliente">
        <div class="modal-dialog panel-warning" role="document"  style="width: 80%;">
            <div class="modal-content panel-warning">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title" id="modalTitleDettaglioCliente">
                        <button class="btn btn-danger" style="margin-right: 10px;" data-dismiss="modal" aria-label="Close">{{ traduzione.OttieniElementoDizionario("agenti_dialog_principale_indietro_btn", "agenti_dialog_principale").valoreUscita }}</button>
                        {{ traduzione.OttieniElementoDizionario("agenti_dialog_principale_dettaglio_cliente", "agenti_dialog_principale").valoreUscita }} <span id="modalDettaglioCliente-title2" style="color:red;"></span>
                        <button href="" style="float:right; margin-right: 20px;" id="modalDettaglioClienteCreaOffertaDaCarrelloBtn" data-toggle="modal" data-target="#modalCreaOffertaDaCarrello" class="btn btn-sm btn-primary">{{ traduzione.OttieniElementoDizionario("agenti_dialog_principale_crea_offerta_da_carrello_btn", "agenti_dialog_principale").valoreUscita }}</button>
                        <button href="" style="float: right; margin-right: 20px;" id="modalDettaglioClienteSpostaCarrelloBtn" class="btn btn-sm btn-warning">{{ traduzione.OttieniElementoDizionario("agenti_dialog_principale_sposta_carrello_btn", "agenti_dialog_principale").valoreUscita }}</button>
                        {% set attivaTipoOrdine = impostazioni.ritornaImpostazioneDaNome("AbilitaTipoOrdine") %}
                        <div class="form-inline" style="float:right; margin-right:20px;{% if attivaTipoOrdine != '1' %}display:none;{% endif %}">
                            <div class="form-group">
                                <label for="tipo-ordine-input">{{ traduzione.OttieniElementoDizionario("agenti_dialog_principale_tipo_ordine", "agenti_dialog_principale").valoreUscita }}</label>
                                <select id="tipo-ordine-input" class="form-control" style="width:auto;">
                                    {% if attivaTipoOrdine == '1' %}
                                        {% for tipoOrdine in servizi.RitornaTipiOrdine() %}
                                            <option {% if loop.first %} selected="selected"{% endif %} value="{{ tipoOrdine.id|default("") }}">{{ tipoOrdine.testoVisualizzato|default("") }}</option>
                                        {% endfor %}
                                    {% endif %}
                                    {% if servizi.RitornaTipiOrdine()|length <= 0 or attivaTipoOrdine == '0' %}
                                        <option value=""></option>
                                    {% endif %}
                                </select>
                            </div>
                        </div>
                    </h4>
                </div>
                <div class="modal-body" style="overflow-y: auto;">
                    <div class="col-md-12 nascondiStampa">
                        <div class="form-inline center">
                            <div class="input-group" style="width: 100%;">
                                <span style="font-weight: bold;width: 10%;min-width: 200px;" class="input-group-addon cercaCliente" id="basic-addon1">{{ traduzione.OttieniElementoDizionario("agenti_dialog_principale_seleziona_cliente", "agenti_dialog_principale").valoreUscita }}</span>
                                <input type="text" style="width: 10%;min-width: 150px;" class="form-control cercaCliente" id="codiceClienteTxt" readonly placeholder="{{ traduzione.OttieniElementoDizionario("agenti_dialog_principale_cliente_codice", "agenti_dialog_principale").valoreUscita }}">
                                <input type="text" style="width: 60%;" class="form-control cercaCliente" id="ragioneSocialeText" readonly placeholder="{{ traduzione.OttieniElementoDizionario("agenti_dialog_principale_cliente_ragione_sociale", "agenti_dialog_principale").valoreUscita }}">
                                <button class="btn btn-small btn-danger pulisci-selezione-cliente" style="margin-left: 10px;" onclick="PulisciSelezioneCliente();"><i class="fa fa-trash" aria-hidden="true"></i></button>
                                <button class="btn btn-default" data-valore="{% if servizi.RitornaAltriDatiUtente() and servizi.RitornaAltriDatiUtente().nascondiPrezzi %}1{% else %}0{% endif %}" id="nascondiPrzBtnDettCliente" onclick="VariaStatoBottoneNascondiPrezzi();" style="margin-left: 10px;{% if impostazioni.ritornaImpostazioneDaNome('MostraPulsanteNascondiPrezzi') != '1' %}display:none;{% endif %}">Nascondi prezzi</button>
                            </div>
                        </div>
                        <hr>
                        <div class="moda-dettaglio-cliente-body">
    
                        </div>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-danger" data-dismiss="modal">{{ traduzione.OttieniElementoDizionario("agenti_dialog_principale_chiudi_btn", "agenti_dialog_principale").valoreUscita }}</button>
                </div>
            </div><!-- /.modal-content -->
        </div><!-- /.modal-dialog -->
    </div><!-- /.modal -->
    
    <div class="modal fade" tabindex="-1" role="dialog" id="modalCreaOffertaDaCarrello">
        <div class="modal-dialog panel-warning" role="document">
            <div class="modal-content panel-warning">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title">
                        {{ traduzione.OttieniElementoDizionario("agenti_dialog_principale_crea_offerta_da_carrello_btn", "agenti_dialog_principale").valoreUscita }}
                    </h4>
                </div>
                <div class="modal-body" id="modalCreaOffertaDaCarrelloBody" style="overflow-y: auto;">
                    <form id="creaOffertaDaCarrelloForm" action="{{ path('offerte_crea_da_carrello') }}">
                        <div class="form-group">
                            <label for="modal-crea-offerta-carrello-note">{{ traduzione.OttieniElementoDizionario("agenti_crea_offerta_da_carrello_dialog_note", "agenti_crea_offerta_da_carrello_dialog").valoreUscita }}</label>
                            <textarea class="form-control" id="modal-crea-offerta-carrello-note" name="modal-crea-offerta-carrello-note"></textarea>
                        </div>
                        <div class="form-group">
                            <label for="modal-crea-offerta-carrello-note-aziendali">{{ traduzione.OttieniElementoDizionario("agenti_crea_offerta_da_carrello_dialog_note_aziendali", "agenti_crea_offerta_da_carrello_dialog").valoreUscita }}</label>
                            <textarea class="form-control" id="modal-crea-offerta-carrello-note" name="modal-crea-offerta-carrello-note-aziendali"></textarea>
                        </div>
                        <div class="form-group">
                            <label for="modal-crea-offerta-carrello-riferimento-offerta">{{ traduzione.OttieniElementoDizionario("agenti_crea_offerta_da_carrello_dialog_note_riferimento_offerta", "agenti_crea_offerta_da_carrello_dialog").valoreUscita }}</label>
                            <input type="text" class="form-control" id="modal-crea-offerta-carrello-riferimento-offerta" name="modal-crea-offerta-carrello-riferimento-offerta">
                        </div>
                        <div class="checkbox">
                            <label>
                                <input type="checkbox" id="modal-crea-offerta-carrello-invia-mail" name="modal-crea-offerta-carrello-invia-mail" checked="checked">{{ traduzione.OttieniElementoDizionario("agenti_crea_offerta_da_carrello_dialog_invia_offerta_mail_checkbox", "agenti_crea_offerta_da_carrello_dialog").valoreUscita }}
                            </label>
                        </div>
                    </form>
                </div>
                <div class="modal-footer">
                    <button href="" style="float:right; margin-right: 20px;" id="modalCreaOfferteDaCarrello_creaBtn" class="btn btn-sm btn-success">{{ traduzione.OttieniElementoDizionario("agenti_dialog_principale_crea_offerta_da_carrello_btn", "agenti_dialog_principale").valoreUscita }}</button>
                </div>
            </div><!-- /.modal-content -->
        </div><!-- /.modal-dialog -->
    </div><!-- /.modal -->
    
    {% endif %}
    
    <div class="modal fade" tabindex="-1" role="dialog" id="modalRichiestaPrezzo">
        <div class="modal-dialog panel-warning" role="document"  style="width: 80%;">
            <div class="modal-content panel-warning">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title">
                        {{ traduzione.CaricaTraduzioniDaFamiglia("richiesta_prezzo", app.request.locale, false) }}
                        {{ traduzione.OttieniElementoDizionario("richiesta_prezzo_title", "richiesta_prezzo").valoreUscita }}
                    </h4>
                </div>
                <div class="modal-body" id="modalRichiestaPrezzoBody" style="overflow-y: auto;">
    
                </div>
            </div><!-- /.modal-content -->
        </div><!-- /.modal-dialog -->
    </div><!-- /.modal -->
    
    <div class="modal fade" tabindex="-1" role="dialog" id="modalMagazziniSecondari">
        <div class="modal-dialog panel-warning" role="document"  style="width: 80%;">
            <div class="modal-content panel-warning">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title">
                        {{ traduzione.CaricaTraduzioniDaFamiglia("modal_magazzini_secondari", app.request.locale, false) }}
                        {{ traduzione.OttieniElementoDizionario("modal_magazzini_secondari_title_main_modal", "modal_magazzini_secondari").valoreUscita }}
                    </h4>
                </div>
                <div class="modal-body" id="modalMagazziniSecondariBody" style="overflow-y: auto;">
    
                </div>
            </div><!-- /.modal-content -->
        </div><!-- /.modal-dialog -->
    </div><!-- /.modal -->
    
    {% if is_granted('ROLE_ADMIN') or is_granted('ROLE_AGENTE') or is_granted('ROLE_COMMERCIALE') %}
    
    <div class="modal fade" tabindex="-1" role="dialog" id="modalCercaCliente">
        <div class="modal-dialog panel-warning" role="document"  style="width: 80%;">
            <div class="modal-content panel-warning">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title" id="modalTitle">{{ traduzione.OttieniElementoDizionario("dialog_ricerca_cliente_title", "dialog_ricerca_cliente").valoreUscita }}</h4>
                </div>
                <div class="modal-body" style="overflow-y: auto;">
                    <div class="col-md-12">
                        <div class="col-md-4">
                            <div class="form-inline center has-success">
                                <div class="input-group" style="width: 100%;">
                                    <span class="input-group-addon" id="basic-addon1"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></span>
                                    <input type="text" class="form-control" id="ricercaClienteTxt" placeholder="{{ traduzione.OttieniElementoDizionario("dialog_ricerca_cliente_inizia_a_scrivere", "dialog_ricerca_cliente").valoreUscita }}">
                                </div>
                            </div>
                        </div>
                        <div class="col-md-4">
                            <div class="form-inline center has-success">
                                <div class="input-group" style="width: 100%;">
                                    <span class="input-group-addon" id="basic-addon1"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></span>
                                    <input type="text" class="form-control" id="ricercaCittaTxt" placeholder="{{ traduzione.OttieniElementoDizionario("dialog_ricerca_cliente_filtro_citta", "dialog_ricerca_cliente").valoreUscita }}">
                                </div>
                            </div>
                        </div>
                        <div class="col-md-4">
                            <div class="form-inline center has-success">
                                <div class="input-group" style="width: 100%;">
                                    <span class="input-group-addon" id="basic-addon1"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></span>
                                    <input type="text" class="form-control" id="ricercaProvinciaTxt" placeholder="{{ traduzione.OttieniElementoDizionario("dialog_ricerca_cliente_filtro_provincia", "dialog_ricerca_cliente").valoreUscita }}">
                                </div>
                            </div>
                        </div>
                    </div>
    
                    <table class="table table-striped table-responsive">
                        <thead>
                        <tr>
                            <th>
                                {{ traduzione.OttieniElementoDizionario("dialog_ricerca_cliente_tab_col1_a", "dialog_ricerca_cliente").valoreUscita }}
                                <br>
                                {{ traduzione.OttieniElementoDizionario("dialog_ricerca_cliente_tab_col1_b", "dialog_ricerca_cliente").valoreUscita }}
                                <br>
                                {{ traduzione.OttieniElementoDizionario("dialog_ricerca_cliente_tab_col1_c", "dialog_ricerca_cliente").valoreUscita }}
                            </th>
                            <th>
                                {{ traduzione.OttieniElementoDizionario("dialog_ricerca_cliente_tab_col2_a", "dialog_ricerca_cliente").valoreUscita }}
                                <br>
                                {{ traduzione.OttieniElementoDizionario("dialog_ricerca_cliente_tab_col2_b", "dialog_ricerca_cliente").valoreUscita }}
                                <br>
                                {{ traduzione.OttieniElementoDizionario("dialog_ricerca_cliente_tab_col2_c", "dialog_ricerca_cliente").valoreUscita }}
                            </th><th>
                                {{ traduzione.OttieniElementoDizionario("dialog_ricerca_cliente_tab_col3_a", "dialog_ricerca_cliente").valoreUscita }}
                                <br>
                                {{ traduzione.OttieniElementoDizionario("dialog_ricerca_cliente_tab_col3_b", "dialog_ricerca_cliente").valoreUscita }}
                                <br>
                                {{ traduzione.OttieniElementoDizionario("dialog_ricerca_cliente_tab_col3_c", "dialog_ricerca_cliente").valoreUscita }}
                            </th>
                        </tr>
                        </thead>
    
                        <tbody id="bodyTabellaRicercaCliente">
    
                        </tbody>
                    </table>
                </div>
                <div class="modal-footer">
                    <button type="button" id="chiudiModalCercaCliente" class="btn btn-danger" data-dismiss="modal">{{ traduzione.OttieniElementoDizionario("dialog_ricerca_cliente_chiudi_btn", "dialog_ricerca_cliente").valoreUscita }}</button>
                </div>
            </div><!-- /.modal-content -->
        </div><!-- /.modal-dialog -->
    </div><!-- /.modal -->
    {% endif %}
    
    <div class="container-fluid contenitore_generale_body" >
        <div class="row master-row-body">
            <div class="col-md-12 master-col-body">
                {% block body %}{% endblock %}
            </div>
        </div>
    </div><!-- /.container -->
    
    <script src="https://www.google.com/recaptcha/api.js?render={{ impostazioni.ritornaImpostazioneDaNome('ReCaptchaSiteKey') }}"></script>
    <script>
        grecaptcha.ready(function() {
            grecaptcha.execute('{{ impostazioni.ritornaImpostazioneDaNome('ReCaptchaSiteKey') }}', {action: 'homepage'}).then(function(token) {
                $('.re-captcha-v3').val = token;
            });
        });
    </script>
    
    <!-- FOSJsRoutingBundle -->
    <script src="{{ asset('bundles/fosjsrouting/js/router.js') }}"></script>
    <script src="{{ path('fos_js_routing_js', { callback: 'fos.Router.setData' }) }}"></script>
    
    <!-- jQuery smartmenus plugin -->
    <script src="{{ asset('java_lib/jquery.smartmenus.min.js') }}"></script>
    <script src="{{ asset('java_lib/jquery.smartmenus.bootstrap.min.js') }}"></script>
    
    <script src="{{ asset('java_lib/jquery.stickytableheaders.min.js') }}" type="text/javascript"></script>
    
    <!-- SLICK CAROUSEL -->
    <script type="text/javascript" src="{{ asset('java_lib/slick-1.8.1/slick/slick.min.js') }}"></script>
    <!-- TINY SLIDER -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/tiny-slider/2.9.2/min/tiny-slider.js"></script>
    
    <!-- CORE NAV -->
    <script type="text/javascript" src="{{ asset('java_lib/custom_mf_sidebar/mf_sidebar.js') }}"></script>
    
    {#  <script type="text/javascript" src="https://unpkg.com/tabulator-tables@4.2.7/dist/js/tabulator.min.js"></script>#}
    <script type="text/javascript" src="https://unpkg.com/tabulator-tables@5.2.3/dist/js/tabulator.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.bundle.min.js" integrity="sha256-xKeoJ50pzbUGkpQxDYHD7o7hxe0LaOGeguUidbq6vis=" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.js" integrity="sha256-Uv9BNBucvCPipKQ2NS9wYpJmi8DTOEfTA/nH2aoJALw=" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/luxon/3.0.1/luxon.min.js" integrity="sha512-6ZJuab/UnRq1muTChgrVxJhSgygmL2GMLVmSJN7pcBEqJ1dWPbqN9CiZ6U3HrcApTIJsLnMgXYBYgtVkJ8fWiw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    
    
    <script type="text/javascript">
    
        {# Variabili utile per la sostituzione del carrello #}
        let idCarrelloAttuale = '';
        let stadioSostituzione = 0; {# Quando lo stadio è 1 allora ho già in memoria i due salti #}
        {# FINE #}
    
        var memorizzazioneAltriDatiUtente = {}
    
        var lens = null;
        var img = null;
    
        {# Codice per zoom immagine #}
        function imageZoom(imgID, resultID) {
            if (lens != null){
                lens.removeEventListener("mousemove", moveLens);
                img.removeEventListener("mousemove", moveLens);
                lens.removeEventListener("touchmove", moveLens);
                img.removeEventListener("touchmove", moveLens);
                lens.remove();
                lens = null;
            }
            var result, cx, cy;
            img = document.getElementById(imgID);
            result = document.getElementById(resultID);
            /* Create lens: */
            lens = document.createElement("DIV");
            lens.setAttribute("class", "img-zoom-lens");
            /* Insert lens: */
            img.parentElement.insertBefore(lens, img);
            /* Calculate the ratio between result DIV and lens: */
            cx = result.offsetWidth / lens.offsetWidth;
            cy = result.offsetHeight / lens.offsetHeight;
            /* Set background properties for the result DIV */
            result.style.backgroundImage = "url('" + img.src + "')";
            result.style.backgroundSize = (img.width * cx) + "px " + (img.height * cy) + "px";
            /* Execute a function when someone moves the cursor over the image, or the lens: */
            lens.addEventListener("mousemove", moveLens);
            img.addEventListener("mousemove", moveLens);
            /* And also for touch screens: */
            lens.addEventListener("touchmove", moveLens);
            img.addEventListener("touchmove", moveLens);
            function moveLens(e) {
                var pos, x, y;
                /* Prevent any other actions that may occur when moving over the image */
                e.preventDefault();
                /* Get the cursor's x and y positions: */
                pos = getCursorPos(e);
                /* Calculate the position of the lens: */
                x = pos.x - (lens.offsetWidth / 2);
                y = pos.y - (lens.offsetHeight / 2);
                /* Prevent the lens from being positioned outside the image: */
                if (x > img.width - lens.offsetWidth) {x = img.width - lens.offsetWidth;}
                if (x < 0) {x = 0;}
                if (y > img.height - lens.offsetHeight) {y = img.height - lens.offsetHeight;}
                if (y < 0) {y = 0;}
                /* Set the position of the lens: */
                lens.style.left = x + "px";
                lens.style.top = y + "px";
                /* Display what the lens "sees": */
                result.style.backgroundPosition = "-" + (x * cx) + "px -" + (y * cy) + "px";
            }
            function getCursorPos(e) {
                var a, x = 0, y = 0;
                e = e || window.event;
                /* Get the x and y positions of the image: */
                a = img.getBoundingClientRect();
                /* Calculate the cursor's x and y coordinates, relative to the image: */
                x = e.pageX - a.left;
                y = e.pageY - a.top;
                /* Consider any page scrolling: */
                x = x - window.pageXOffset;
                y = y - window.pageYOffset;
                return {x : x, y : y};
            }
        }
    
        var randomRgbColor = function() {
            var r = Math.floor(Math.random() * 255);
            var g = Math.floor(Math.random() * 255);
            var b = Math.floor(Math.random() * 255);
            return "rgb(" + r + "," + g + "," + b + ")";
        }
    
        function toastMessage(messaggio, rosso = false) {
            // Get the snackbar DIV
            var x = document.getElementById("snackbar");
            $(x).text(messaggio);
    
            if (rosso){
                $(x).css('background-color', 'red');
                $(x).css('color', 'black');
            }else{
                $(x).css('background-color', 'black');
                $(x).css('color', 'white');
            }
    
            // Add the "show" class to DIV
            x.className = "show";
    
            // After 3 seconds, remove the show class from DIV
            setTimeout(function(){ x.className = x.className.replace("show", ""); }, 3000);
        }
    
        function ApriModalRichiestaPrezzo(idMappa){
            $('#loadingMaster').show();
            $.ajax({
                dataType: 'html',
                url: Routing.generate('richiesta_prezzo_modal', {'idMappa' : (idMappa) }),
                async: true, //you won't need that if nothing in your following code is dependend of the result
                success: function (response) {
                    $('#modalRichiestaPrezzoBody').html(response);
                    $('#modalRichiestaPrezzo').modal('toggle');
                    $('#loadingMaster').hide();
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    $('#loadingMaster').hide();
                    alert("Status: " + textStatus); alert("Error: " + errorThrown);
                }
            });
        }
    
        function ApriModalMagazziniSecondari(idMappa, qta){
            $('#loadingMaster').show();
            $.ajax({
                dataType: 'html',
                url: Routing.generate('magazzini_secondari_modal', {'idMappa' : (idMappa), 'qta' : (qta) }),
                async: true, //you won't need that if nothing in your following code is dependend of the result
                success: function (response) {
                    $('#modalMagazziniSecondariBody').html(response);
                    $('#modalMagazziniSecondari').modal('toggle');
                    $('#loadingMaster').hide();
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    $('#loadingMaster').hide();
                    alert("Status: " + textStatus); alert("Error: " + errorThrown);
                }
            });
        }
    
        function CountArticoliCarrello()
        {
            $.ajax({
                type: "POST",
                dataType: 'html',
                url: Routing.generate('carrello_conta_articoli'),
                async: true //you won't need that if nothing in your following code is dependend of the result
            })
            .done(function (response) {
                let js = JSON.parse(response);
                idCarrelloAttuale = js.idCarrello;
                if(idCarrelloAttuale != ''){
                    $('#modalDettaglioClienteSpostaCarrelloBtn').show();
                }else{
                    $('#modalDettaglioClienteSpostaCarrelloBtn').hide();
                }
                if (js.count == '0')
                    $('#badgeArticoliCarello').html(" ");
                else
                    $('#badgeArticoliCarello').html(js.count);
            })
            DettaglioCarrelloJson();
        }
    
        function DettaglioCarrelloJson()
        {
            $.ajax({
                type: "POST",
                dataType: 'html',
                url: Routing.generate('carrello_dettagli_json'),
                async: true //you won't need that if nothing in your following code is dependend of the result
            })
                .done(function (response) {
                    let js = JSON.parse(response);
                    $("#badgeTotaleImponibileCarrello").html(" - € " + js.imponibile)
                })
        }
        {% if is_granted('ROLE_ADMIN') or is_granted('ROLE_AGENTE') or is_granted('ROLE_COMMERCIALE') %}
    
        function CambioTabRisorseCategorieSelect(altezza=350) {
            let categoriaSelezionata = $('#tab-risorse-categorie-select').find('option:selected').val();
            $.ajax({
                type: "POST",
                dataType: 'json',
                data: {'tab': 'dati_da_categoria', 'categoria': (categoriaSelezionata)},
                async: true,
                url: Routing.generate('agente_dettaglio_carica_tab_anagrafica', {idAnagrafica: $("#id-anagrafica-da-utilizzare").val()}),
                success: function (response) {
                    var tableRisorseAnag = new Tabulator("#tabella-risorse", {
                        height: (altezza + "px"),
                        data:response.data,           //load row data from array
                        layout:"fitDataFill",      //fit columns to width of table
                        responsiveLayout:"collapse",  //hide columns that dont fit on the table
                        columns: response.colonne,
                    });
    
                    tableRisorseAnag.on("rowClick", function(e, row){
                        //e - the click event object
                        //row - row component
                        var valore = row.getCell('idRisorsa').getValue();
                        var url = Routing.generate('agente_recupera_risorsa_anagrafica') + '?idRisorsa=' + valore;
                        var win = window.open(url, '_blank');
                        win.focus();
                    });
    
                    if('sorting' in response){
                        let sort = [];
                        for (const [key, value] of Object.entries(response.sorting)) {
                            //value => {'field' => '', 'direction' => ''}
                            sort.push({'column': value.field, 'dir': value.direction});
                        }
                        if(sort.length > 0){
                            tableRisorseAnag.setSort(sort);
                        }
                    }
                }
            });
        }
    
        {% else %}
    
        function CambioTabRisorseCategorieSelect() {
            let categoriaSelezionata = $('#tab-risorse-categorie-select').find('option:selected').val();
            $.ajax({
                type: "POST",
                dataType: 'json',
                data: {'categoria': (categoriaSelezionata)},
                async: true,
                url: Routing.generate('storico_carica_risorse_anagrafiche'),
                success: function (response) {
                    var tableRisorseAnag = new Tabulator("#tabella-risorse", {
                        height: "350px",
                        data:response.data,           //load row data from array
                        layout:"fitDataFill",      //fit columns to width of table
                        responsiveLayout:"collapse",  //hide columns that dont fit on the table
                        columns: response.colonne,
                    });
    
                    tableRisorseAnag.on("rowClick", function(e, row){
                        //e - the click event object
                        //row - row component
                        var valore = row.getCell('idRisorsa').getValue();
                        var url = Routing.generate('recupera_risorsa_anagrafica') + '?idRisorsa=' + valore;
                        var win = window.open(url, '_blank');
                        win.focus();
                    });
                }
            });
        }
    
        {% endif %}
    
        function ResetRicercaFiltroAvanzato(){
            $("#cerca-filtro-btn").removeAttr("style")
            filtroAvanzato = "";
            document.getElementById('form-filtro-avanzato').reset();
        }
    
        function ResetRicerca(){
            $("#ricercaVeloceTxt").val("");
        }
    
        {% if not (is_granted("ROLE_ADMIN") or is_granted("ROLE_COMMERCIALE") or is_granted("ROLE_AGENTE")) %}
    
        function ApriDettaglioClienteLoggato(){
            $('#loadingMaster').show();
            $.ajax({
                type: "POST",
                dataType: 'html',
                url: Routing.generate('utente_dettaglio_anagrafica'),
                async: true,
                success: function (response) {
                    $('#loadingMaster').hide();
                    $('#modalDettaglioClienteLoggato-body').html(response);
                    $("#modalDettaglioClienteLoggato").modal('toggle');
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    $('#loadingMaster').hide();
                    alert(xhr.status);
                    alert(thrownError);
                }
            });
        }
        {% endif %}
    
        {% if (is_granted("ROLE_ADMIN") or is_granted("ROLE_COMMERCIALE") or is_granted("ROLE_AGENTE")) %}
    
        function ApriDettaglioClienteDialog(){
    
            aggiornaVisualizzaAltriDatiUtente('V', '', function (response) {
                let cookie = response;
                $(".pulisci-selezione-cliente").hide();
                if (cookie != "" && cookie && cookie.length > 0){
                    let json = JSON.parse(cookie);
                    $(".pulisci-selezione-cliente").show();
                    $("#codiceClienteTxt").val(json.codice);
                    $("#ragioneSocialeText").val(json.ragioneSociale);
                    let tipoOrdine = json.hasOwnProperty("tipoOrdine") ? json.tipoOrdine : '';
                    $("#tipo-ordine-input > option").each(function() {
                        if($(this).val() ==tipoOrdine){
                            $(this).attr("selected", "selected");
                        } else {
                            $(this).removeAttr("selected");
                        }
                    });
                    $('#navbar-dettaglio-cliente').text(json.codice + ' - ' + json.ragioneSociale);
                    $('#selezionaVariantiModalCliente').text('Cliente: ' + json.codice + ' - ' + json.ragioneSociale);
    
                    memorizzazioneAltriDatiUtente = json;
    
                    CaricaDettaglioCliente(json.id);
                }
            });
            AggiornaStatoSelezioneCliente();
    
            $("#modalDettaglioCliente").modal('show');
        }
    
        function SpostaCarrello(idAnagraficaDestinazione){
            stadioSostituzione = 0;
            $('#loadingMaster').show();
            $.ajax({
                type: "POST",
                dataType: 'json',
                url: Routing.generate('agente_sposta_carrello', {
                    idCarrelloOrigine: (idCarrelloAttuale),
                    idAnagraficaDestinazione: (idAnagraficaDestinazione)
                }),
                async: true,
                success: function (response) {
                    $('#loadingMaster').hide();
                    let js = JSON.parse(response);
                    if(js.successo == 'SI'){
                        toastMessage(js.messaggio);
                        CountArticoliCarrello();
                    }else{
                        toastMessage(js.messaggio, true);
                    }
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    $('#loadingMaster').hide();
                    alert("Status: " + textStatus); alert("Error: " + errorThrown);
                }
            });
        }
    
        function CaricaTabellaGeneraleClienti(rigaInizio) {
            var str_ric = $("#ricercaClienteTxt").val();
            var citta = $("#ricercaCittaTxt").val();
            var provincia = $("#ricercaProvinciaTxt").val();
            $.ajax({
                type: "POST",
                dataType: 'html',
                data: {
                    "data": {
                        'ricerca': str_ric,
                        'citta' : citta,
                        'provincia' : provincia
                    }
                },
                url: Routing.generate('agente_lista_clienti_ricerca', {
                    rigaInzio: rigaInizio
                }),
                async: true,
                success: function (response) {
                    $('#bodyTabellaRicercaCliente').html(response);
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    alert(xhr.status);
                    alert(thrownError);
                }
            });
        }
    
        function CaricaDettaglioCliente(id) {
            $.ajax({
                type: "POST",
                dataType: 'html',
                url: Routing.generate('agente_dettaglio_anagrafica', {
                    id: (id), soloDati: 1
                }),
                async: true,
                success: function (response) {
                    $('.moda-dettaglio-cliente-body').html(response);
                    $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
                        let tabAperto = e.target; // newly activated tab
                        let identificativo = tabAperto.hash.substring(1);
                        let contenitore = $('#' + identificativo);
                        if(identificativo != 'tab-home') {
                            $(contenitore).html('');
                            $.ajax({
                                type: "POST",
                                dataType: 'html',
                                data: {'tab': (identificativo)},
                                async: true,
                                url: Routing.generate('agente_dettaglio_carica_tab_anagrafica', {idAnagrafica: id}),
                                success: function (response) {
                                    $(contenitore).html(response);
                                },
                                error: function (xhr, ajaxOptions, thrownError) {
                                    alert(xhr.status);
                                    alert(thrownError);
                                }
                            });
                        }
                    });
                }
            });
        }
    
        function VerificaStileBottoneNascondiPrezzi(){
            if ($("#nascondiPrzBtnDettCliente").data("valore") == '0'){
                $("#nascondiPrzBtnDettCliente").css("background-color", "#fff");
            }else{
                $("#nascondiPrzBtnDettCliente").css("background-color", "yellow");
            }
        }
        
        function VariaStatoBottoneNascondiPrezzi(){
            if ($("#nascondiPrzBtnDettCliente").data("valore") == '0'){
                $("#nascondiPrzBtnDettCliente").data("valore", '1')
                VerificaStileBottoneNascondiPrezzi();
            }else{
                $("#nascondiPrzBtnDettCliente").data("valore", '0')
                VerificaStileBottoneNascondiPrezzi();
            }
            let datiCliente = {
                'codice' : memorizzazioneAltriDatiUtente.codice,
                'ragioneSociale': memorizzazioneAltriDatiUtente.ragioneSociale,
                'id' : memorizzazioneAltriDatiUtente.id,
                'tipoOrdine' : $("#tipo-ordine-input").find(":selected").val(),
                'nascondiPrezzi': $("#nascondiPrzBtnDettCliente").data('valore')
            };
            aggiornaVisualizzaAltriDatiUtente('M', JSON.stringify(datiCliente), function (response) {
                memorizzazioneAltriDatiUtente = datiCliente;
            });
        }
    
        function PulisciSelezioneCliente(dati){
            aggiornaVisualizzaAltriDatiUtente('E', '', function (response) {
                if(response.esito == 'OK') {
                    AggiornaStatoSelezioneCliente();
                    $("#codiceClienteTxt").val("");
                    $("#ragioneSocialeText").val("");
                    CountArticoliCarrello();
                    memorizzazioneAltriDatiUtente = {}
                    $('.moda-dettaglio-cliente-body').html("");
                }else{
                    alert('{{ traduzione.OttieniElementoDizionario("dialog_ricerca_cliente_errore_pulisci_cliente", "dialog_ricerca_cliente").valoreUscita }}');
                }
            });
        }
        function AggiornaStatoSelezioneCliente() {
            aggiornaVisualizzaAltriDatiUtente('V', '', function (response) {
                let cck = response;
                if (cck != "" && cck && cck.length > 0) {
                    $(".pulisci-selezione-cliente").show();
                    $(".top-bar-seleziona-cliente").css("background-color", "yellow");
                    memorizzazioneAltriDatiUtente = JSON.parse(cck);
                } else {
                    $(".pulisci-selezione-cliente").hide();
                    $(".top-bar-seleziona-cliente").css("background-color", "transparent");
                    $('#navbar-dettaglio-cliente').text("");
                    $('#selezionaVariantiModalCliente').text('');
                }
            });
        }
        {% endif %}
    
        function aggiornaVisualizzaAltriDatiUtente(operazione, valore, callback = null){
            $.ajax({
                type: "POST",
                dataType: 'json',
                data: {'valore' : (valore)},
                async: true,
                url: Routing.generate({% if is_granted("ROLE_AGENTE") %}'agente_altro_dato'{% else %}'utente_altro_dato'{% endif %}, {
                    operazione: (operazione)
                }),
                success: function (response){
                    memorizzazioneAltriDatiUtente = valore;
                    callback(response);
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    alert(xhr.status);
                    alert(thrownError);
                }
            });
        }
    
        function adattaContenutoABarraSuperiore(){
            $(".contenitore_generale_body").css("padding-top", $(".navbar-fixed-top").height() + "px")
            $(".nav-side-menu").css("padding-top", $(".navbar-fixed-top").height() + "px")
        }
    
        $(document).ready(function () {
    
            $(window).resize(function() {
                adattaContenutoABarraSuperiore();
            });
    
            $(document).on("click", ".attiva-img-zoom", function (event){
                event.stopImmediatePropagation();
                event.stopPropagation();
                $("#zoomImgImg").attr("src", $(this).attr("src"));
                $("#modalZoomImg").modal('show');
            });
    
            $('#modalZoomImg').on("shown.bs.modal", function (){
                imageZoom("zoomImgImg", "zoomImgResult");
            });
    
            $('.attiva-slick')
                .on('init', function(slick) {
                    $('.attiva-slick').fadeIn(3000);
                })
                .slick();
    
            $('.attiva-tiny-slider').each(function (index, item) {
                let arrConfig = $(item).data('configurazione');
                tns(arrConfig);
                $(item).css({ display: "block" });
            });
    
            $('.form-ordinazione-articolo').on("submit", function (e) {
                let disponibilita = $(this).find('input[name="disponibilita"]').val();
                let disponibilitaMagSecondari = $(this).find('input[name="disponibilita-mag-secondari"]').val();
                if(disponibilita && disponibilita <= 0 ) {
                    if(disponibilitaMagSecondari > 0) {
                        e.preventDefault();
                        ApriModalMagazziniSecondari($(this).find('input[name="id-mappa"]').val(), $(this).find('input[name="qta"]').val());
                    }
                }
            });
    
            $('[data-toggle="popover"]').popover();
    
            $("#set_min_width").css("min-width", $(window).width() / 2);
    
            $("#form_news").mouseleave(function () {
                $("#set_min_width").css("display", "none");
            });
    
            $("#set_min_width").mouseenter(function () {
                $("#set_min_width").css("display", "inline-block");
            });
    
            $("#set_min_width").mouseleave(function () {
                $("#set_min_width").css("display", "none");
            });
    
            $('#cerca-btn-top').on('click', function () {
                ResetRicercaFiltroAvanzato();
                RicercaVeloce($("#ricercaVeloceTxt").val());
            });
    
            $("#ricercaVeloceTxt").on("keypress", function(e) {
                if(e.which == 13) {
                    ResetRicercaFiltroAvanzato();
                    RicercaVeloce($("#ricercaVeloceTxt").val());
                }
            });
    
            var errori_validazione = [
                {% if errori_validazione is defined %}
                {% for err in errori_validazione %}
                "{{ err }}",
                {% endfor %}
                {% endif %}
            ];
    
            $.each(errori_validazione, function (item) {
                $("#form_" + errori_validazione[item]).addClass("dato-invalido");
            });
    
            CountArticoliCarrello();
            adattaContenutoABarraSuperiore();
    
            {% if (is_granted("ROLE_ADMIN") or is_granted("ROLE_COMMERCIALE") or is_granted("ROLE_AGENTE")) %}
            $("#ricercaClienteTxt, #ricercaCittaTxt, #ricercaProvinciaTxt").on("change paste keyup", function () {
                CaricaTabellaGeneraleClienti($("#inizioRiga").data('valore'));
            });
    
            $(".cercaCliente").on("focus, click", function () {
                stadioSostituzione = 0;
                $("#modalCercaCliente").modal('show');
            });
    
            $("#tipo-ordine-input").on("change", function (){
                aggiornaVisualizzaAltriDatiUtente('V', '', function (response) {
                    let cookie = response;
                    if (cookie != "" && cookie && cookie.length > 0){
                        let json = JSON.parse(cookie);
    
                        let datiCliente = {
                            'codice' : json.codice,
                            'ragioneSociale': json.ragioneSociale,
                            'id' : json.id,
                            'tipoOrdine' : $("#tipo-ordine-input").find(":selected").val(),
                            'nascondiPrezzi': $("#nascondiPrzBtnDettCliente").data('valore')
                        };
                        {% if (is_granted("ROLE_ADMIN") or is_granted("ROLE_COMMERCIALE") or is_granted("ROLE_AGENTE")) %}
                            VerificaStileBottoneNascondiPrezzi();
                        {% endif %}
    
                        aggiornaVisualizzaAltriDatiUtente('M', JSON.stringify(datiCliente), function (response) {
                            CountArticoliCarrello();
                            location.reload(); //Ricarico la pagina
                        });
                    }
                });
            });
    
            $("#bodyTabellaRicercaCliente").on("click", "tr", function () {
                $("#codiceClienteTxt").val($(this).data("codice"));
                $("#ragioneSocialeText").val($(this).data("ragione-sociale"));
                let datiCliente = {
                    'codice' : $(this).data("codice"),
                    'ragioneSociale': $(this).data("ragione-sociale"),
                    'id' : $(this).data("identificativo"),
                    'tipoOrdine' : $("#tipo-ordine-input").find(":selected").val(),
                    'nascondiPrezzi': $("#nascondiPrzBtnDettCliente").data('valore')
                };
                $('#navbar-dettaglio-cliente').text(datiCliente.codice + ' - ' + datiCliente.ragioneSociale);
                $('#selezionaVariantiModalCliente').text('Cliente: ' + datiCliente.codice + ' - ' + datiCliente.ragioneSociale);
                $("#modalCercaCliente").modal('toggle');
    
                aggiornaVisualizzaAltriDatiUtente('M', JSON.stringify(datiCliente), function (response) {
                    AggiornaStatoSelezioneCliente();
                    CountArticoliCarrello();
                    CaricaDettaglioCliente(datiCliente.id);
                    {% if (is_granted("ROLE_ADMIN") or is_granted("ROLE_COMMERCIALE") or is_granted("ROLE_AGENTE")) %}
                        VerificaStileBottoneNascondiPrezzi();
                    {% endif %}
                });
    
                if(stadioSostituzione == 1){
                    if(confirm('{{ traduzione.OttieniElementoDizionario("dialog_ricerca_cliente_conferma_spostamento_carrello", "dialog_ricerca_cliente").valoreUscita }}')) {
                        SpostaCarrello($(this).data("identificativo"));
                    }
                }
            });
    
            $('#modalDettaglioClienteSpostaCarrelloBtn').on('click', function (event) {
               if(stadioSostituzione == 0){
                   event.preventDefault();
                   event.stopPropagation();
                   stadioSostituzione = 1;
                   $("#modalCercaCliente").modal('show');
               }
            });
    
            $('#modalCreaOfferteDaCarrello_creaBtn').on("click", function (event) {
                if(confirm("{{ traduzione.OttieniElementoDizionario("dialog_ricerca_cliente_conferma_generazione_offerta", "dialog_ricerca_cliente").valoreUscita }}")){
                    $("#creaOffertaDaCarrelloForm").submit();
                }
            });
            aggiornaVisualizzaAltriDatiUtente('V', '', function (response) {
                let cookie = response;
                $(".pulisci-selezione-cliente").hide();
                if (cookie != "" && cookie && cookie.length > 0){
                    let json = JSON.parse(cookie);
                    $(".pulisci-selezione-cliente").show();
                    $("#codiceClienteTxt").val(json.codice);
                    $("#ragioneSocialeText").val(json.ragioneSociale);
                    $("#nascondiPrzBtnDettCliente").data('valore', json.nascondiPrezzi)
                    let tipoOrdine = json.hasOwnProperty("tipoOrdine") ? json.tipoOrdine : '';
                    $("#tipo-ordine-input > option").each(function() {
                        if($(this).val() ==tipoOrdine){
                            $(this).attr("selected", "selected");
                        }else{
                            $(this).removeAttr("selected");
                        }
                    });
                    $('#navbar-dettaglio-cliente').text(json.codice + ' - ' + json.ragioneSociale);
                    $('#selezionaVariantiModalCliente').text('Cliente: ' + json.codice + ' - ' + json.ragioneSociale);
                    memorizzazioneAltriDatiUtente = json;
                    {% if (is_granted("ROLE_ADMIN") or is_granted("ROLE_COMMERCIALE") or is_granted("ROLE_AGENTE")) %}
                        VerificaStileBottoneNascondiPrezzi();
                    {% endif %}
                    CaricaQuadratiAlbero("");
                }
            });
            AggiornaStatoSelezioneCliente();
            {% if (is_granted("ROLE_ADMIN") or is_granted("ROLE_COMMERCIALE") or is_granted("ROLE_AGENTE")) %}
                VerificaStileBottoneNascondiPrezzi();
            {% endif %}
            CaricaTabellaGeneraleClienti(0);
    
            {# Verifico se l'utente ha effettuato il LOGIN #}
            {% elseif is_granted("IS_AUTHENTICATED_REMEMBERED") %}
    
            aggiornaVisualizzaAltriDatiUtente('V', '', function (response) {
                let cookie = response;
                $(".pulisci-selezione-cliente").hide();
                if (cookie != "" && cookie && cookie.length > 0){
                    let json = JSON.parse(cookie);
                    $(".pulisci-selezione-cliente").show();
                    $("#codiceClienteTxt").val(json.codice);
                    $("#ragioneSocialeText").val(json.ragioneSociale);
                    let tipoOrdine = json.hasOwnProperty("tipoOrdine") ? json.tipoOrdine : '';
                    $("#tipo-ordine-input > option").each(function() {
                        if($(this).val() ==tipoOrdine){
                            $(this).attr("selected", "selected");
                        }else{
                            $(this).removeAttr("selected");
                        }
                    });
                    {% if (is_granted("ROLE_ADMIN") or is_granted("ROLE_COMMERCIALE") or is_granted("ROLE_AGENTE")) %}
                        $('#navbar-dettaglio-cliente').text(json.codice + ' - ' + json.ragioneSociale);
                    {% endif %}
                    $('#selezionaVariantiModalCliente').text('Cliente: ' + json.codice + ' - ' + json.ragioneSociale);
                    $("#nascondiPrzBtnDettCliente").data('valore', json.nascondiPrezzi)
                    memorizzazioneAltriDatiUtente = json;
                    {% if (is_granted("ROLE_ADMIN") or is_granted("ROLE_COMMERCIALE") or is_granted("ROLE_AGENTE")) %}
                        VerificaStileBottoneNascondiPrezzi();
                    {% endif %}
                    CaricaQuadratiAlbero("");
                }
            });
    
            $("#tipo-ordine-input").on("change", function (){
                aggiornaVisualizzaAltriDatiUtente('V', '', function (response) {
                        let datiCliente = {
                            'codice' : '',
                            'ragioneSociale': '',
                            'id' : '',
                            'tipoOrdine' : $("#tipo-ordine-input").find(":selected").val(),
                            'nascondiPrezzi': $("#nascondiPrzBtnDettCliente").data('valore')
                        };
                    {% if (is_granted("ROLE_ADMIN") or is_granted("ROLE_COMMERCIALE") or is_granted("ROLE_AGENTE")) %}
                        VerificaStileBottoneNascondiPrezzi();
                    {% endif %}
    
                        aggiornaVisualizzaAltriDatiUtente('M', JSON.stringify(datiCliente), function (response) {
                            CountArticoliCarrello();
                            location.reload(); //Ricarico la pagina
                        });
                });
            });
    
            {% endif %}
    
            {% for flash_message in app.session.flashbag.get('notice')%}
                toastMessage("{{ flash_message }}");
            {% endfor %}
    
            {% for flash_message in app.session.flashbag.get('error')%}
                toastMessage("{{ flash_message }}", true);
            {% endfor %}
        });
    
    </script>
    
    {% block javascript %}{% endblock %}
    
    <div class="pushContent"></div>
    
    </body>
    
    {% if app.request.get("_route") != 'admin_pagine_e_componenti_editor' %}
        {% if impostazioni.ritornaImpostazioneDaNome('MostraFooterSviluppatoDa') == '1' %}
            <footer class="navbar navbar-default navbar-fixed-bottom">
                <div style="margin-top: 15px;" class="container">
                    <span style="vertical-align: middle;"><a href="http://www.fogazzimirko.it">Sviluppato da Fogazzi Mirko © {{ "now"|date("Y") }}{% block footer %}{% endblock %}</a></span>
                </div>
            </footer>
        {% endif %}
    {% endif %}
    
    </html>