templates/ordine_veloce/ordine_veloce.html.twig line 1

  1. {% extends 'base.html.twig' %}
  2. {% trans_default_domain 'ordine_veloce' %}
  3. {% block head %}
  4.     <script type="text/javascript" src="https://unpkg.com/@zxing/library@latest"></script>
  5.     <script type="text/javascript" src="{{ asset('js/lettore_barcode.js') }}"></script>
  6. {% endblock %}
  7. {% block body %}
  8.     {{ traduzione.CaricaTraduzioniDaFamiglia("ordine_veloce", app.request.locale, false) }}
  9.     <h2 class="page-header">{{ traduzione.OttieniElementoDizionario("ordine_veloce_title", "ordine_veloce").valoreUscita }}</h2>
  10.     <div class="modal fade" tabindex="-1" role="dialog" id="aggiungi_da_excel_modal">
  11.         <div class="modal-dialog panel-warning" role="document">
  12.             <div class="modal-content panel-warning">
  13.                 <div class="modal-header">
  14.                     <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  15.                     <h4 class="modal-title" id="modalTitle">{{ traduzione.OttieniElementoDizionario("ordine_veloce_excel_modal_title", "ordine_veloce").valoreUscita }}</h4>
  16.                 </div>
  17.                 <div id="modalImportazioneCarrelloBody" class="modal-body panel-warning">
  18.                     <div id="baseModalImportazioneCarrelloBody">
  19.                         <div class="loading" id="loadingExcel">Loading&#8230;</div>
  20.                         <p>{{ traduzione.OttieniElementoDizionario("ordine_veloce_excel_modal_testo", "ordine_veloce").valoreUscita }}</p>
  21.                         <textarea id="listaCodiciImportazioneCarrelloTextArea" class="form-control" cols="5" rows="10"></textarea>
  22.                         <p><b>{{ traduzione.OttieniElementoDizionario("ordine_veloce_excel_modal_testo_di_fondo", "ordine_veloce").valoreUscita }}</b></p>
  23.                     </div>
  24.                     <div id="esitoModalImportazioneCarrelloBody"></div>
  25.                     <span id="erroreImportazioneCarrello" style="color: red; font-weight: bold"></span>
  26.                 </div>
  27.                 <div class="modal-footer">
  28.                     <button type="button" id="importaCarrelloBtn" class="btn btn-success">{{ traduzione.OttieniElementoDizionario("ordine_veloce_excel_modal_esegui_btn", "ordine_veloce").valoreUscita }}</button>
  29.                     <button type="button" id="chiudiImportaCarrelloBtn" class="btn btn-danger" data-dismiss="modal">{{ traduzione.OttieniElementoDizionario("ordine_veloce_excel_modal_chiudi_btn", "ordine_veloce").valoreUscita }}</button>
  30.                 </div>
  31.             </div><!-- /.modal-content -->
  32.         </div><!-- /.modal-dialog -->
  33.     </div><!-- /.modal -->
  34.     <div class="modal fade" tabindex="-1" role="dialog" id="myModalShop">
  35.         <div class="modal-dialog panel-warning" role="document">
  36.             <div class="modal-content panel-warning">
  37.                 <div class="modal-header">
  38.                     <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  39.                     <h4 class="modal-title" id="modalTitle">{{ traduzione.OttieniElementoDizionario("ordine_veloce_msg_attenzione", "ordine_veloce").valoreUscita }}</h4>
  40.                 </div>
  41.                 <div id="modalBodyAttenzione" class="modal-body panel-warning">
  42.                     <p></p>
  43.                 </div>
  44.                 <div class="modal-footer">
  45.                     <button type="button" class="btn btn-danger" data-dismiss="modal">{{ traduzione.OttieniElementoDizionario("ordine_veloce_btn_chiudi", "ordine_veloce").valoreUscita }}</button>
  46.                 </div>
  47.             </div><!-- /.modal-content -->
  48.         </div><!-- /.modal-dialog -->
  49.     </div><!-- /.modal -->
  50.     <div style="width: 50%;" class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
  51.         <div class="panel panel-success">
  52.             <div class="panel-heading" role="tab" id="headingOne">
  53.                 <h4 class="panel-title">
  54.                     <a role="button" class="collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
  55.                         <span class="glyphicon glyphicon-question-sign" aria-hidden="true"></span>{{ traduzione.OttieniElementoDizionario("ordine_veloce_aiuto_title", "ordine_veloce").valoreUscita }}
  56.                     </a>
  57.                 </h4>
  58.             </div>
  59.             <div id="collapseOne" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne">
  60.                 <div class="panel-body">
  61.                     {{ traduzione.OttieniElementoDizionario("ordine_veloce_aiuto_testo", "ordine_veloce").valoreUscita }}
  62.                 </div>
  63.             </div>
  64.         </div>
  65.     </div>
  66.     <div class="panel panel-default">
  67.         <div class="panel-body">
  68.             <div class="form-inline">
  69.                 <div class="form-group">
  70.                     <div class="input-group">
  71.                         <div class="input-group-addon">{{ traduzione.OttieniElementoDizionario("ordine_veloce_inserimento_codice_parte", "ordine_veloce").valoreUscita }}</div>
  72.                         <input type="text" class="form-control attiva-press" id="ordineVeloceCodiceParteTxt" autofocus="autofocus" placeholder="{{ traduzione.OttieniElementoDizionario("ordine_veloce_inserimento_codice_parte_placeholder", "ordine_veloce").valoreUscita }}">
  73.                     </div>
  74.                 </div>
  75.                 <div class="form-group">
  76.                     <div class="input-group">
  77.                         <div class="input-group-addon">{{ traduzione.OttieniElementoDizionario("ordine_veloce_inserimento_qta", "ordine_veloce").valoreUscita }}</div>
  78.                         <input type="number" class="form-control attiva-press" id="ordineVeloceQtaTxt" placeholder="{{ traduzione.OttieniElementoDizionario("ordine_veloce_inserimento_qta_placeholder", "ordine_veloce").valoreUscita }}">
  79.                     </div>
  80.                 </div>
  81.                 <div class="form-group">
  82.                     <div class="input-group">
  83.                         <button class="btn btn-success ordineVeloceAggiungiBtn">{{ traduzione.OttieniElementoDizionario("ordine_veloce_bottone_aggiungi", "ordine_veloce").valoreUscita }}</button>
  84.                     </div>
  85.                 </div>
  86.                 <div class="form-group" style="margin-left: 100px;">
  87.                     <div class="input-group">
  88.                         <div class="input-group-addon">{{ traduzione.OttieniElementoDizionario("ordine_veloce_inserimento_marca_opzionale", "ordine_veloce").valoreUscita }}</div>
  89.                         <input type="text" class="form-control attiva-press" id="ordineVeloceMarcaTxt" placeholder="{{ traduzione.OttieniElementoDizionario("ordine_veloce_inserimento_marca_opzionale_placeholder", "ordine_veloce").valoreUscita }}">
  90.                     </div>
  91.                 </div>
  92.                 <div class="form-group" style="float: right; margin-right: 20px;">
  93.                     <div class="input-group">
  94.                         <button type="button" onclick="AvviaLettoreBarcode();" class="btn btn-default">
  95.                             <span class="glyphicon glyphicon-barcode" aria-hidden="true"></span>  {{ traduzione.OttieniElementoDizionario("ordine_veloce_aggiungi_da_barcode", "ordine_veloce").valoreUscita }}
  96.                         </button>
  97.                         <button style="margin-left: 20px;" id="importa_da_excel_btn" class="btn btn-large btn-success">{{ traduzione.OttieniElementoDizionario("ordine_veloce_aggiungi_da_excel_btn", "ordine_veloce").valoreUscita }}</button>
  98.                     </div>
  99.                 </div>
  100.             </div>
  101.         </div>
  102.     </div>
  103.     <div class="col-md-12 col-xs-12" id="lettoreBarcodeDiv" style="display: none;">
  104.         <div class="col-md-3 col-xs-12">
  105.             <a class="btn btn-success" id="startButton">Start</a>
  106.             <a class="btn btn-danger" id="resetButton">Stop</a>
  107.             <div>
  108.                 <video id="video" width="250" height="200" style="border: 1px solid gray"></video>
  109.             </div>
  110.             <div id="sourceSelectPanel" style="display:none">
  111.                 <label for="sourceSelect">{{ traduzione.OttieniElementoDizionario("ordine_veloce_barcode_sorgente_video", "ordine_veloce").valoreUscita }}</label>
  112.                 <select id="sourceSelect" style="max-width:400px">
  113.                 </select>
  114.             </div>
  115.         </div>
  116.         <div class="col-md-3 col-xs-12" style="display: flex; flex-direction: row; align-content: stretch; align-items: center;">
  117.             <p id="datiSparata"></p>
  118.         </div>
  119.     </div>
  120.     <b style="color: red;">{{ traduzione.OttieniElementoDizionario("ordine_veloce_frase_di_attenzione", "ordine_veloce").valoreUscita }}</b>
  121.     <br>
  122.     <table class="table table-responsive table-striped lista-articoli-table">
  123.         <thead>
  124.         <tr>
  125.             <th>{{ traduzione.OttieniElementoDizionario("ordine_veloce_tab_tp", "ordine_veloce").valoreUscita }}</th>
  126.             <th>{{ traduzione.OttieniElementoDizionario("ordine_veloce_tab_codice", "ordine_veloce").valoreUscita }}</th>
  127.             <th>{{ traduzione.OttieniElementoDizionario("ordine_veloce_tab_descrizione", "ordine_veloce").valoreUscita }}</th>
  128.             <th>{{ traduzione.OttieniElementoDizionario("ordine_veloce_tab_marca", "ordine_veloce").valoreUscita }}</th>
  129.             <th>{{ traduzione.OttieniElementoDizionario("ordine_veloce_tab_qta", "ordine_veloce").valoreUscita }}</th>
  130.             <th>{{ traduzione.OttieniElementoDizionario("ordine_veloce_tab_nettocad", "ordine_veloce").valoreUscita }}</th>
  131.             <th>{{ traduzione.OttieniElementoDizionario("ordine_veloce_tab_listino", "ordine_veloce").valoreUscita }}</th>
  132.             <th>{{ traduzione.OttieniElementoDizionario("ordine_veloce_tab_disponibile", "ordine_veloce").valoreUscita }}</th>
  133.             <th>{{ traduzione.OttieniElementoDizionario("ordine_veloce_tab_inarrivo", "ordine_veloce").valoreUscita }}</th>
  134.         </tr>
  135.         </thead>
  136.         <tbody class="body-tabella-articoli">
  137.         </tbody>
  138.     </table>
  139.     <button class="btn btn-lg btn-primary aggiungi-tutto-carrello" style="float: left;">{{ traduzione.OttieniElementoDizionario("ordine_veloce_bottone_aggiungi_al_carrello", "ordine_veloce").valoreUscita }}</button>
  140. {% endblock %}
  141. {% block javascript %}
  142.     <script type="text/javascript">
  143.         $(document).ready(function () {
  144.             $("#myModalShop").modal({
  145.                 show: false
  146.             });
  147.             $("#aggiungi_da_excel_modal").modal({
  148.                 show: false
  149.             });
  150.             $('#importa_da_excel_btn').on("click", function () {
  151.                 $("#aggiungi_da_excel_modal").modal("toggle");
  152.             });
  153.             $(".lista-articoli-table").on("click", "a", function () {
  154.                 $(this).closest("tr").remove();
  155.             });
  156.             $(".attiva-press").keypress(function (e) {
  157.                 var keycode = event.keyCode || event.which;
  158.                 if (keycode == '13') {
  159.                     $(".ordineVeloceAggiungiBtn").click();
  160.                 }
  161.             });
  162.             $("#importaCarrelloBtn").on("click", function () {
  163.                 if($("#listaCodiciImportazioneCarrelloTextArea").val() != ''){
  164.                     $("#loadingExcel").css("display", "block");
  165.                     $.ajax({
  166.                         type: "POST",
  167.                         dataType: 'html',
  168.                         data: {
  169.                             "lista_da_importare": $("#listaCodiciImportazioneCarrelloTextArea").val()
  170.                         },
  171.                         url: Routing.generate('carrello_aggiungi_da_excel'),
  172.                         async: true
  173.                     })
  174.                     .done(function (response) {
  175.                         $("#loadingExcel").css("display", "none");
  176.                         try {
  177.                             let ritorno = JSON.parse(response);
  178.                             if (ritorno["errori"].length > 0) {
  179.                                 $('#modalBodyAttenzione').html(ritorno["errori"]);
  180.                             } else {
  181.                                 $('#modalBodyAttenzione').html('{{ traduzione.OttieniElementoDizionario("ordine_veloce_excel_modal_importazione_completata", "ordine_veloce").valoreUscita }}');
  182.                             }
  183.                         }catch{
  184.                             $('#modalBodyAttenzione').html("ERROR!");
  185.                         }
  186.                         $('#myModalShop').modal({
  187.                             show: false
  188.                         });
  189.                         $("#myModalShop").modal('show');
  190.                     })
  191.                     .fail(function (jqXHR, textStatus, errorThrown) {
  192.                         alert('Error : ' + errorThrown);
  193.                         $("#loadingMaster").css("display", "none");
  194.                     });
  195.                 }else{
  196.                     $('#modalBodyAttenzione').html("{{ traduzione.OttieniElementoDizionario("ordine_veloce_excel_modal_errore_inserisci_almeno_una_riga", "ordine_veloce").valoreUscita }}");
  197.                     $('#myModalShop').modal({
  198.                         show: false
  199.                     });
  200.                     $("#myModalShop").modal('show');
  201.                 }
  202.             });
  203.             $(".aggiungi-tutto-carrello").on("click", function () {
  204.                 var listaCodici = [];
  205.                 $(".body-tabella-articoli tr").each(function () {
  206.                     var idmappa = $(this).data('idmappa');
  207.                     var qta = $(this).find("td:nth-child(5)").text();
  208.                     listaCodici.push({
  209.                         'idMappaArticoli': idmappa,
  210.                         'idVariante': '',
  211.                         'idListaTipologiePreimpostate': '',
  212.                         'qta': qta
  213.                     });
  214.                 });
  215.                 if (listaCodici.length > 0) {
  216.                     $("#erroreImportazioneCarrello").html("");
  217.                     $("#importaCarrelloBtn").hide();
  218.                     $("#loadingMaster").css("display", "block");
  219.                     $.ajax({
  220.                         type: "POST",
  221.                         dataType: 'html',
  222.                         data: {
  223.                             "lista": listaCodici
  224.                         },
  225.                         url: Routing.generate('carrello_aggiungi'),
  226.                         async: true
  227.                     })
  228.                         .done(function (response) {
  229.                             $("#loadingMaster").css("display", "none");
  230.                             $("#baseModalImportazioneCarrelloBody").hide();
  231.                             CountArticoliCarrello();
  232.                             $(".body-tabella-articoli").html("");
  233.                             toastMessage("{{ traduzione.OttieniElementoDizionario("ordine_veloce_articoli_aggiunti_carrello", "ordine_veloce").valoreUscita }}");
  234.                         })
  235.                         .fail(function (jqXHR, textStatus, errorThrown) {
  236.                             alert('Error : ' + errorThrown);
  237.                             $("#loadingMaster").css("display", "none");
  238.                         });
  239.                 }else{
  240.                     $("#modalBodyAttenzione").html("<p>{{ traduzione.OttieniElementoDizionario("ordine_veloce_messaggio_testo", "ordine_veloce").valoreUscita }}</p>");
  241.                     $('#myModalShop').modal({
  242.                         show: false
  243.                     });
  244.                     $("#myModalShop").modal('show');
  245.                 }
  246.             });
  247.             $(".ordineVeloceAggiungiBtn").on("click", function () {
  248.                 var codiceParte = $("#ordineVeloceCodiceParteTxt").val();
  249.                 var marca = $("#ordineVeloceMarcaTxt").val();
  250.                 var qta = $("#ordineVeloceQtaTxt").val();
  251.                 if (codiceParte && codiceParte != "" && qta && qta != "")
  252.                 {
  253.                     $("#loadingMaster").css("display", "block");
  254.                     $.ajax({
  255.                         type: "POST",
  256.                         dataType: 'json',
  257.                         url: Routing.generate('ordine_veloce_cerca_mappa'),
  258.                         data: {
  259.                             "data": {
  260.                                 'codice' : codiceParte,
  261.                                 'marca' : marca
  262.                             }
  263.                         },
  264.                         async: true //you won't need that if nothing in your following code is dependend of the result
  265.                     })
  266.                         .done(function (response) {
  267.                             $("#loadingMaster").css("display", "none");
  268.                             if (response['descrizione']) {
  269.                                 var backgroundStyle = "";
  270.                                 if (Number(response['disponibile'].replace(",", ".")) < Number(qta)) {
  271.                                     if (Number(response['in_arrivo'].replace(",", ".")) > qta) {
  272.                                         backgroundStyle = " style='background-color: yellow;'";
  273.                                         parseFloat(qta).toFixed(response['numero_decimali']);
  274.                                         $("#modalBodyAttenzione").html("<p>{{ traduzione.OttieniElementoDizionario("ordine_veloce_messaggio_testo_non_disponibile_in_arrivo", "ordine_veloce").valoreUscita }}</p>");
  275.                                         $('#myModalShop').modal({
  276.                                             show: false
  277.                                         });
  278.                                         $("#myModalShop").modal('show');
  279.                                     }
  280.                                     else {
  281.                                         backgroundStyle = " style='background-color: red;'";
  282.                                         $("#modalBodyAttenzione").html("<p>{{ traduzione.OttieniElementoDizionario("ordine_veloce_messaggio_testo_non_disponibile", "ordine_veloce").valoreUscita }}</p>");
  283.                                         $('#myModalShop').modal({
  284.                                             show: false
  285.                                         });
  286.                                         $("#myModalShop").modal('show');
  287.                                     }
  288.                                 }
  289.                                 var tabRow = "<tr" + backgroundStyle + " data-idmappa='" + response['id_mappa'] + "'><td>" + response['tipo_parte'] + "</td><td id='codice'>" + codiceParte + "</td><td>" + response['descrizione'] + "</td><td id='marca'>" + response['marca'] + "</td><td id='qta'>" + parseFloat(qta).toFixed(response['numero_decimali']) + "</td><td>€ " + response['prezzo_netto']
  290.                                     + "</td><td>€ " + response['prezzo_listino'] + "</td><td>" + response['disponibile'] + "</td><td>" + response['in_arrivo'] + "</td><td><a class='btn btn-danger elimina-elemento' title='{{ traduzione.OttieniElementoDizionario("ordine_veloce_elimina_btn_title", "ordine_veloce").valoreUscita }}'><span class='glyphicon glyphicon-trash'></span></a></td></tr>";
  291.                                 $(".body-tabella-articoli").append(tabRow);
  292.                                 $("#codiceParteTxt").focus();
  293.                                 if(avviato){
  294.                                     pulisciTutto();
  295.                                     document.getElementById('startButton').click();
  296.                                 }
  297.                             }else{
  298.                                 $("#modalBodyAttenzione").html("<p>{{ traduzione.OttieniElementoDizionario("ordine_veloce_messaggio_testo_articolo_non_trovato", "ordine_veloce").valoreUscita }}</p>");
  299.                                 $('#myModalShop').modal({
  300.                                     show: false
  301.                                 });
  302.                                 $("#myModalShop").modal('show');
  303.                             }
  304.                         })
  305.                         .fail(function (jqXHR, textStatus, errorThrown) {
  306.                             alert('Error : ' + errorThrown);
  307.                             $("#loadingMaster").css("display", "none");
  308.                         });
  309.                 }
  310.                 else{
  311.                     $("#modalBodyAttenzione").html("<p>{{ traduzione.OttieniElementoDizionario("ordine_veloce_messaggio_testo_compila_dati", "ordine_veloce").valoreUscita }}</p>");
  312.                     $('#myModalShop').modal({
  313.                         show: false
  314.                     });
  315.                     $("#myModalShop").modal('show');
  316.                 }
  317.             });
  318.         });
  319.     </script>
  320. {% endblock %}