templates/front/quotation/trucks.html.twig line 1

Open in your IDE?
  1. {% extends "front/_common/_base.html.twig" %}
  2. {% block linkcanonical %}
  3.     <link rel="canonical" href="{{ absolute_url(path('quotation_trucks')) }}">
  4. {% endblock %}
  5. {% block cssadicional %}
  6. {% if info.captchaShow and info.captchaSite and info.captchaSecret %}
  7. <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback" async defer></script>
  8. <script type="text/javascript">
  9.   var onloadCallback = function() {
  10.     var element = document.getElementById('g-recaptcha-response');
  11.     element.classList.add('validate[required]');
  12.   };
  13. </script>
  14. {% endif %}
  15. {% endblock %}
  16. {% block classbody %}{% endblock %}
  17. {% block content %}
  18.     <section class="quote_banner">
  19.         <div class="quote_banner_content ww_center">
  20.             <h1 class="quote_banner_title">{{ sd.title }}</h1>
  21.         </div>
  22.     </section>
  23.     <section class="quote_form">
  24.         <div class="quote_form_content ww_center">
  25.             {% if sd.text %}
  26.                 <div class="quote_form_description">
  27.                     <p>{{ sd.text|nl2br }}</p>
  28.                 </div>
  29.             {% endif %}
  30.             <div class="quote_form_fields">
  31.                 {{ form_start(form, {'attr': {'id': 'form_camiones'}}) }}
  32.                     {% include 'front/templates/form_utm_fields.html.twig' %}
  33.                     {{ form_widget(form.typePerson) }}
  34.                     {{ form_widget(form.documentType) }}
  35.                     {{ form_widget(form.documentNumber) }}
  36.                     {{ form_widget(form.model) }}
  37.                     {{ form_widget(form.crmModel) }}
  38.                     {{ form_widget(form.tonnage) }}
  39.                     <div class="field_radios">
  40.                         <div class="field_radio">
  41.                             <input type="radio" name="form_type" value="Empresa" id="form_quotation_trucks_legal_person" checked>
  42.                             <label for="form_quotation_trucks_legal_person" class="field_radio_label">
  43.                                 <span class="field_radio_icon"></span>
  44.                                 <span class="field_radio_text">Soy empresa</span>
  45.                             </label>
  46.                         </div>
  47.                         <div class="field_radio">
  48.                             <input type="radio" name="form_type" value="Persona natural" id="form_quotation_trucks_natural_person">
  49.                             <label for="form_quotation_trucks_natural_person" class="field_radio_label">
  50.                                 <span class="field_radio_icon"></span>
  51.                                 <span class="field_radio_text">Soy Persona Natural</span>
  52.                             </label>
  53.                         </div>
  54.                     </div>
  55.                     <div class="field_block">
  56.                         <div class="field_item_column quote_field_company">
  57.                             <div class="field_box">
  58.                                 <input type="text" class="validate[required] soloNumber inputEffect form_quotation_trucks_document_number" id="form_document_number_legal_person">
  59.                                 <label for="form_document_number_legal_person" class="field_text">RUC*</label>
  60.                             </div>
  61.                             <div class="field_box">
  62.                                 {{ form_widget(form.company, {'attr': {'class': 'validate[required] inputEffect'}}) }}
  63.                                 <label for="form_quotation_trucks_company" class="field_text">Empresa*</label>
  64.                             </div>
  65.                         </div>
  66.                         <div class="field_item_column quote_field_person" style="display:none;">
  67.                             <div class="field_box">
  68.                                 <select id="form_quotation_trucks_document_types" class="inputEffect">
  69.                                     <option value="" disabled selected></option>
  70.                                     {% for item in forms.documentTypes %}
  71.                                         <option value="{{ item.title }}">{{ item.title }}</option>
  72.                                     {% endfor %}
  73.                                 </select>
  74.                                 <label for="form_quotation_trucks_document_types" class="field_text">Tipo de documento* <span class="icon-arrow_drop_down"></span></label>
  75.                             </div>
  76.                             <div class="field_box">
  77.                                 <input type="text" class="inputEffect form_quotation_trucks_document_number soloNumber" id="form_quotation_trucks_document_number_natural_person">
  78.                                 <label for="form_quotation_trucks_document_number_natural_person" class="field_text">Número de documento</label>
  79.                             </div>
  80.                         </div>
  81.                         <div class="field_item_column">
  82.                             <div class="field_box">
  83.                                 {{ form_widget(form.name, {'attr': {'class': 'validate[required] inputEffect'}}) }}
  84.                                 <label for="form_quotation_trucks_name" class="field_text">Nombres*</label>
  85.                             </div>
  86.                             <div class="field_box">
  87.                                 {{ form_widget(form.lastname, {'attr': {'class': 'validate[required] inputEffect'}}) }}
  88.                                 <label for="form_quotation_trucks_lastname" class="field_text">Apellidos*</label>
  89.                             </div>
  90.                         </div>
  91.                         <div class="field_item_column">
  92.                             <div class="field_box">
  93.                                 {{ form_widget(form.phone, {'attr': {'class': 'soloNumber inputEffect validate[required, custom[phone]]'}}) }}
  94.                                 <label for="form_quotation_trucks_phone" class="field_text">Teléfono*</label>
  95.                             </div>
  96.                             <div class="field_box">
  97.                                 {{ form_widget(form.email, {'attr': {'class': 'inputEffect validate[required, custom[email]]'}}) }}
  98.                                 <label for="form_quotation_trucks_email" class="field_text">Correo electrónico*</label>
  99.                             </div>
  100.                         </div>
  101.                         <div class="field_item_column">
  102.                             <div class="field_box">
  103.                                 {{ form_widget(form.department, {'attr': {'class': 'inputEffect validate[required]'}}) }}
  104.                                 <label for="form_quotation_trucks_department" class="field_text">Departamento</label>
  105.                             </div>
  106.                         </div>
  107.                         <div class="field_item_column">
  108.                             <div class="field_box">
  109.                                 <select class="inputEffect validate[required]" id="form_quotation_trucks_tonnages">
  110.                                     <option value="" disabled selected></option>
  111.                                 </select>
  112.                                 <label for="form_quotation_trucks_tonnages" class="field_text">Carga útil<span class="icon-arrow_drop_down"></span></label>
  113.                             </div>
  114.                             <div class="field_box">
  115.                                 <select class="inputEffect" id="form_quotation_trucks_models">
  116.                                     <option value="" disabled selected></option>
  117.                                 </select>
  118.                                 <label for="form_quotation_trucks_models" class="field_text">Modelo<span class="icon-arrow_drop_down"></span></label>
  119.                             </div>
  120.                         </div>
  121.                     </div>
  122.                     <div class="field_required">
  123.                         <p>* Campos obligatorios</p>
  124.                     </div>
  125.                     <div class="field_check_center">
  126.                         <div class="field_check">
  127.                             <input type="checkbox" id="b2ccamiones_checkbox" class="validate[required]" name="">
  128.                             <label for="b2ccamiones_checkbox" class="field_check_text">
  129.                                 <span class="field_check_icon"></span>
  130.                                 <p>Acepto las <a href="{{ path('data_protection_policies') }}" target="_blank">Políticas de Protección de Datos</a></p>
  131.                             </label>
  132.                         </div>
  133.                     </div>
  134.                     {% if info.captchaShow and info.captchaSite and info.captchaSecret %}
  135.                     <div style="padding-top:20px;">
  136.                         <div class="g-recaptcha" data-sitekey="{{ info.captchaSite }}"></div>
  137.                     </div>
  138.                     {% endif %}
  139.                     <div class="field_button">
  140.                         <button class="btn btn_blue btnFormCamiones" id="btnFormCamiones">Enviar</button>
  141.                     </div>
  142.                 {{ form_end(form) }}
  143.             </div>
  144.         </div>
  145.     </section>
  146. {% endblock %}
  147. {% block jsfinal %}
  148.     <script src="{{ asset('static/js/validationform/jquery.validationEngine-es.js') }}"></script>
  149.     <script src="{{ asset('static/js/validationform/staff.validationEngine.js') }}"></script>
  150.     <script type="text/javascript">
  151.         $(function () {
  152.             const quoteFields = $(".field_box input, .field_box select, .field_box textarea");
  153.             $(quoteFields).focusin(function() {
  154.                 $(this).addClass('border');
  155.             });
  156.             $(quoteFields).focusout(function() {
  157.                 if ($(this).val() === "") {
  158.                     $(this).removeClass('border');
  159.                 };
  160.             });
  161.             $(quoteFields).each(function() {
  162.                 if ($(this).val() != "") {
  163.                     $(this).addClass('border');
  164.                 }
  165.             });
  166.             $('.soloNumber').keypress(validateNumber);
  167.             function validateNumber(event) {
  168.                 const key = window.event ? event.keyCode : event.which;
  169.                 if (event.keyCode === 8 || event.keyCode === 46) {
  170.                     return true;
  171.                 } else return !(key < 48 || key > 57);
  172.             }
  173.             $('#form_quotation_trucks_natural_person').on('change', function () {
  174.                 $('.quote_field_company').hide();
  175.                 $('.quote_field_person').show();
  176.             });
  177.             $('#form_quotation_trucks_legal_person').on('change', function () {
  178.                 $('.quote_field_person').hide();
  179.                 $('.quote_field_company').show();
  180.             });
  181.             $('#form_quotation_trucks_legal_person').on('change', function () {
  182.                 $('#form_quotation_trucks_typePerson').val($(this).val());
  183.                 $('#form_quotation_trucks_document_types').val('');
  184.                 $('#form_quotation_trucks_document_number_natural_person').val('');
  185.                 $('#form_quotation_trucks_document_number_legal_person').val('');
  186.                 $('#form_quotation_trucks_documentType').val('RUC');
  187.                 $('#form_quotation_trucks_documentNumber').val('');
  188.                 $('#form_quotation_trucks_company').val('');
  189.             })
  190.             $('#form_quotation_trucks_natural_person').on('change', function () {
  191.                 $('#form_quotation_trucks_typePerson').val($(this).val());
  192.                 $('#form_quotation_trucks_document_types').val('');
  193.                 $('#form_quotation_trucks_document_number_natural_person').val('');
  194.                 $('#form_quotation_trucks_document_number_legal_person').val('');
  195.                 $('#form_quotation_trucks_documentType').val('');
  196.                 $('#form_quotation_trucks_documentNumber').val('');
  197.             })
  198.             $('#form_quotation_trucks_legal_person').trigger('change');
  199.             $('.form_quotation_trucks_document_number').on('keyup', function () {
  200.                 $('#form_quotation_trucks_documentNumber').val($(this).val());
  201.             })
  202.             $('#form_quotation_trucks_document_types').on('change', function () {
  203.                 $('#form_quotation_trucks_documentType').val($(this).val());
  204.             })
  205.             $('#form_quotation_trucks_models').on('change', function () {
  206.                 $('#form_quotation_trucks_model').val($(this).find('option:selected').data('value'));
  207.                 $('#form_quotation_trucks_crmModel').val($(this).find('option:selected').data('crm-model'));
  208.             })
  209.             $('#form_quotation_trucks_tonnages').on('change', function () {
  210.                 $('#form_quotation_trucks_tonnage').val($(this).find('option:selected').data('value'));
  211.             })
  212.             $('#form_quotation_trucks_tonnages').on('change', function () {
  213.                 updateModels();
  214.             })
  215.             const form_quotation_trucks = $('#form_camiones');
  216.             const form_quotation_trucks_button = $('#btnFormCamiones');
  217.             form_quotation_trucks.validationEngine('attach', {
  218.                 promptPosition: "topLeft",
  219.                 autoHidePrompt: true,
  220.                 autoHideDelay: 3000,
  221.                 binded: false,
  222.                 scroll: false
  223.             });
  224.             form_quotation_trucks_button.on('click', function (event) {
  225.                 event.preventDefault();
  226.                 const valid = form_quotation_trucks.validationEngine('validate');
  227.                 $(this).attr('disabled', true);
  228.                 if (valid) {
  229.                     form_quotation_trucks.submit();
  230.                 } else {
  231.                     $(this).attr('disabled', false);
  232.                 }
  233.             });
  234.             $.ajax({
  235.                 url: '{{ path('quotation_tonnages') }}',
  236.                 type: 'post',
  237.                 beforeSend: function () {
  238.                     $('#form_quotation_trucks_tonnages').html('').prop('disabled', true);
  239.                     $('#form_quotation_trucks_models').html('').prop('disabled', true);
  240.                 },
  241.                 success: function (data) {
  242.                     $('#form_quotation_trucks_tonnages').html(createSelectTonnage(data));
  243.                 },
  244.                 complete: function () {
  245.                     $('#form_quotation_trucks_tonnages').prop('disabled', false);
  246.                 }
  247.             })
  248.             function updateModels() {
  249.                 const tonnage = $('#form_quotation_trucks_tonnages').val();
  250.                 if (!tonnage) {
  251.                     return;
  252.                 }
  253.                 $.ajax({
  254.                     url: '{{ path('quotation_models_by_tonnage') }}',
  255.                     type: 'post',
  256.                     data: {tonnage: tonnage},
  257.                     beforeSend: function () {
  258.                         $('#form_quotation_trucks_tonnages').prop('disabled', true);
  259.                         $('#form_quotation_trucks_models').html('').prop('disabled', true);
  260.                     },
  261.                     success: function (data) {
  262.                         $('#form_quotation_trucks_models').html(createSelectModel(data));
  263.                     },
  264.                     complete: function () {
  265.                         $('#form_quotation_trucks_tonnages').prop('disabled', false);
  266.                         $('#form_quotation_trucks_models').prop('disabled', false);
  267.                     }
  268.                 })
  269.             }
  270.             function createSelectPlaceholder() {
  271.                 return '<option value="" disabled selected></option>';
  272.             }
  273.             function createSelectOptionTonnage(option) {
  274.                 const value = option['slug'];
  275.                 const text = option['title'];
  276.                 return '<option value="' + value + '" data-value="' + text + '">' + text + '</option>';
  277.             }
  278.             function createSelectOptionModel(option) {
  279.                 const value = option['slug'];
  280.                 const text = option['title'];
  281.                 const crmModel = option['crm_model'];
  282.                 return '<option value="' + value + '" data-value="' + text + '" data-crm-model="' + crmModel + '">' + text + '</option>';
  283.             }
  284.             function createSelectTonnage(data) {
  285.                 let options = createSelectPlaceholder();
  286.                 $.each(data, function (i, v) {
  287.                     options += createSelectOptionTonnage(v);
  288.                 });
  289.                 return options
  290.             }
  291.             function createSelectModel(data) {
  292.                 let options = createSelectPlaceholder();
  293.                 $.each(data, function (i, v) {
  294.                     options += createSelectOptionModel(v);
  295.                 });
  296.                 return options
  297.             }
  298.         });
  299.     </script>
  300. {% endblock %}