{% extends "front/_common/_base.html.twig" %}
{% block linkcanonical %}
<link rel="canonical" href="{{ absolute_url(path('claim')) }}">
{% endblock %}
{% block cssadicional %}{% endblock %}
{% block classbody %}{% endblock %}
{% block content %}
<div class="wanchoSecondary b22Libro">
<ul class="b21MigaCustom b10LeftMigaPan">
<li><a href="{{ path('home') }}">Home</a></li> /
<li class="active"><a href="{{ path('claim') }}">Libro de reclamo</a></li>
</ul>
{{ form_start(form, {'attr': {'enctype': 'multipart/form-data'}}) }}
{% include 'front/templates/form_utm_fields.html.twig' %}
{{ form_widget(form.establishment) }}
{{ form_widget(form.good) }}
{{ form_widget(form.type) }}
{{ form_widget(form.authorization) }}
{% if forms.claimTitle %}
<h4 class="titleStandard b22LibroTitle">{{ forms.claimTitle }}</h4>
{% endif %}
{% if forms.claimText %}
<div class="b21WrapText">{{ forms.claimText|nl2br }}</div>
{% endif %}
<div class="b21WrapInput b21WrapInputDato">
<div class="b21WrapCol">
<div class="b21WrapColDate">
<span>Fecha:</span>
<span>{{ "now"|date('d/m/Y') }}</span>
</div>
</div>
<div class="b21WrapCol b21WrapColCorrelative">
<span>Nº {{ entity.code }}</span>
</div>
</div>
{% if forms.claimEstablishmentsText %}
<div class="b21WrapTextP">{{ forms.claimEstablishmentsText|nl2br }}</div>
{% endif %}
<div class="b21WrapInput">
<div class="b21Select">
<select class="form-contact-select" id="form-establecimiento">
<option value="" disabled selected></option>
{% for item in forms.claimEstablishmentsItems %}
<option data-ruc="{{ item.ruc }}" value="{{ item.title }}">{{ item.title }}</option>
{% endfor %}
</select>
<span class="form-label">Establecimiento</span>
<i class="icon-iconos-10"></i>
</div>
<div class="b21Input b21InputNoLabel">
<input class="form-contact" type="text" value="" id="form-ruc">
</div>
</div>
{% if forms.claimEstablishmentsNote %}
<div class="b21WrapTextP">{{ forms.claimEstablishmentsNote|nl2br }}</div>
{% endif %}
<div class="b21WrapRow">
{% if forms.claimP1Title %}
<h4 class="titleStandard">1. {{ forms.claimP1Title }}</h4>
{% endif %}
<div class="b21WrapInput">
<div class="b21Input">
{{ form_widget(form.name, {'attr': {'data-expresion': 'text', 'class': 'validKeypress g-text form-contact validate[required,custom[onlyLetterSp]]'}}) }}
<span class="form-label">Nombres*</span>
</div>
<div class="b21Input">
{{ form_widget(form.lastname, {'attr': {'data-expresion': 'text', 'class': 'validKeypress g-text form-contact validate[required,custom[onlyLetterSp]]'}}) }}
<span class="form-label">Apellidos*</span>
</div>
</div>
<div class="b21WrapInput">
<div class="b21Input">
{{ form_widget(form.phone, {'attr': {'data-expresion': 'number', 'class': 'validKeypress g-number form-contact validate[required,custom[onlyNumberSp]]'}}) }}
<span class="form-label">Teléfono*</span>
</div>
<div class="b21Input">
{{ form_widget(form.email, {'attr': {'class': 'form-contact validate[required,custom[email]]'}}) }}
<span class="form-label">Correo*</span>
</div>
</div>
<div class="b21WrapInput">
<div class="b21Select">
{{ form_widget(form.documentType) }}
<select class="form-contact-select validate[required]" id="form_claim_document_type">
<option value="" disabled selected></option>
<option value="DNI">DNI</option>
<option value="CE">CE</option>
<option value="Pasaporte">Pasaporte</option>
</select>
<span class="form-label">Tipo de documento*</span>
<i class="icon-iconos-10"></i>
</div>
<div class="b21Input">
{{ form_widget(form.documentNumber, {'attr': {'data-expresion': 'text', 'class': 'form-contact validate[required]'}}) }}
<span class="form-label">N° de documento*</span>
</div>
</div>
<div class="b21WrapInput">
<div class="b21Select">
{{ form_widget(form.department) }}
<select class="form-contact-select validate[required]" id="form_field_department">
<option value="" disabled selected></option>
{% for item in departmentsArray %}
<option value="{{ item.title }}" data-option="{{ item.slug }}">{{ item.title }}</option>
{% endfor %}
</select>
<span class="form-label">Departamento*</span>
<i class="icon-iconos-10"></i>
</div>
<div class="b21Select">
{{ form_widget(form.province, {'attr': {'class': 'form-contact-select validate[required]'}}) }}
<select class="form-contact-select validate[required]" id="form_field_province" disabled>
<option value="" selected="selected"></option>
</select>
<span class="form-label">Provincia*</span>
<i class="icon-iconos-10"></i>
</div>
</div>
<div class="b21WrapInput">
<div class="b21Select">
{{ form_widget(form.district, {'attr': {'class': 'form-contact-select validate[required]'}}) }}
<select class="form-contact-select validate[required]" id="form_field_district" disabled>
<option value="" selected="selected"></option>
</select>
<span class="form-label">Distrito*</span>
<i class="icon-iconos-10"></i>
</div>
<div class="b21Input">
{{ form_widget(form.address, {'attr': {'class': 'form-contact validate[required]'}}) }}
<span class="form-label">Dirección*</span>
</div>
</div>
<div class="b21WrapMenorEdad">
<div class="b21WrapCheckbox b21WrapCheckboxP">
{{ form_widget(form.younger, {'attr': {'id': 'b21CheckboxMenorEdad', 'class': 'form-input checkbox checkMenor'}}) }}
<label for="form_claim_younger">Menor de edad</label>
</div>
<div class="b21WrapInput">
<div class="b21InputBox">
<div class="b21Input">
{{ form_widget(form.tutorName, {'attr': {'data-expresion': 'text', 'class': 'validKeypress g-text g-text-edad form-contact'}}) }}
<span class="form-label">Nombres del tutor*</span>
</div>
<span class="form-label-text">*Esto aplica si el reclamante es menor de edad</span>
</div>
<div class="b21InputBox">
<div class="b21Input">
{{ form_widget(form.tutorLastName, {'attr': {'data-expresion': 'text', 'class': 'validKeypress g-text g-text-edad form-contact'}}) }}
<span class="form-label">Apellidos*</span>
</div>
<span class="form-label-text">*Esto aplica si el reclamante es menor de edad</span>
</div>
</div>
<div class="b21WrapInput">
<div class="b21Input">
{{ form_widget(form.tutorEmail, {'attr': {'data-expresion': 'number', 'class': 'validKeypress g-number g-number-edad form-contact'}}) }}
<span class="form-label">Teléfono*</span>
</div>
<div class="b21Input">
{{ form_widget(form.tutorPhone, {'attr': {'class': 'form-contact g-email-edad'}}) }}
<span class="form-label">E-mail*</span>
</div>
</div>
<div class="b21WrapInput">
<div class="b21Select">
{{ form_widget(form.tutorDocumentType) }}
<select class="form-contact-select g-validate-edad" id="form_claim_tutor_document_type">
<option value="" disabled selected></option>
<option value="DNI">DNI</option>
<option value="CE">CE</option>
<option value="Pasaporte">Pasaporte</option>
</select>
<span class="form-label">Tipo de documento*</span>
<i class="icon-iconos-10"></i>
</div>
<div class="b21Input">
{{ form_widget(form.tutorDocumentNumber, {'attr': {'class': 'form-contact g-validate-edad'}}) }}
<span class="form-label">N° de documento*</span>
</div>
</div>
</div>
</div>
<div class="b21WrapRow">
{% if forms.claimP2Title %}
<h4 class="titleStandard">2. {{ forms.claimP2Title }}</h4>
{% endif %}
<div class="b21WrapRadio">
{% for item in forms.claimGoods %}
<div class="b21WrapRadioCol">
<input type="radio" class="form_good" id="radio-good_{{ loop.index }}" name="tipo_reclamo" value="{{ item.title }}" />
<label for="radio-good_{{ loop.index }}">{{ item.title }}</label>
</div>
{% endfor %}
</div>
<div class="b21Textarea">
{{ form_widget(form.description, {'attr': {'cols': '40', 'rows': '10', 'class': 'form-contact validate[required]'}}) }}
<span class="form-label">Descripción*</span>
</div>
<div class="b21Input">
{{ form_widget(form.amount, {'attr': {'class': 'form-contact validate[required]'}}) }}
<span class="form-label">Valor del Producto/servicio*</span>
</div>
</div>
<div class="b21WrapRow">
{% if forms.claimP3Title %}
<h4 class="titleStandard">3. {{ forms.claimP3Title }}</h4>
{% endif %}
<div class="b21WrapRadio">
{% for item in forms.claimTypes %}
<div class="b21WrapRadioCol">
<input type="radio" class="form_type" id="radio-type_{{ loop.index }}" name="tipo_consumidor" value="{{ item.title }}" />
<label for="radio-type_{{ loop.index }}">{{ item.title }}</label>
<span>**</span>
</div>
{% endfor %}
</div>
<div class="b21WrapTextP">
{% for item in forms.claimTypes %}
<p>*{{ item.title }}: {{ item.description|nl2br }}</p>
{% endfor %}
</div>
<div class="b21Textarea">
{{ form_widget(form.detail, {'attr': {'cols': '40', 'rows': '10', 'class': 'form-contact validate[required]'}}) }}
<span class="form-label">Detalle*</span>
</div>
<div class="b21Textarea">
{{ form_widget(form.demand, {'attr': {'cols': '40', 'rows': '10', 'class': 'form-contact validate[required]'}}) }}
<span class="form-label">Pedido*</span>
</div>
<div class="b21File">
<div class="b21FileBox">
<i class="icon-copy"></i>
<span class="b21FileText">Adjuntar archivo</span>
<label for="archivo_libro" class="b21FileTextFormat">Adjuntar archivo (PDF, PPTX, WORD o imágenes JPG, PNG)</label>
<input size="40" id="archivo_libro" accept=".pdf,.pptx,.word,.jpg,.png" type="file" name="form_file">
</div>
</div>
</div>
<div class="b21WrapRow">
{% if forms.claimP4Title %}
<h4 class="titleStandard">4. {{ forms.claimP4Title }}</h4>
{% endif %}
<div class="b21WrapTextP">
{% set f = entity.answerDate %}
{% set answer_date = f|day ~ ', ' ~ f|date('d') ~ ' de ' ~ f|month|capitalize ~ ' del ' ~ f|date('Y') %}
{{ forms.claimDescription|replace({'%fecha_respuesta%': answer_date})|raw }}
</div>
</div>
<div class="b21WrapRow">
{% if forms.claimP5Title %}
<h4 class="titleStandard">5. {{ forms.claimP5Title }}</h4>
{% endif %}
<div class="b21WrapRadio">
<div class="b21WrapRadioCol">
<input type="radio" class="form_authorization" id="radio_authorization_yes" name="authorization_option" value="Sí" />
<label for="radio_authorization_yes">Sí</label>
<span>**</span>
</div>
<div class="b21WrapRadioCol">
<input type="radio" class="form_authorization" id="radio_authorization_no" name="authorization_option" value="No" />
<label for="radio_authorization_no">No</label>
<span>**</span>
</div>
</div>
<div class="b21Paragraph">
(*) Campos obligatorios.
</div>
{% if forms.claimNotes|length > 0 %}
<div class="b21WrapTextP">
{% for item in forms.claimNotes %}
<p>* {{ item.text|nl2br }}</p>
{% endfor %}
</div>
{% endif %}
</div>
<div class="b21WrapCheckbox">
<input type="checkbox" id="b21Checkbox" name="">
<label for="b21Checkbox">He leído y acepto los <b><a href="{{ path('terms_and_conditions') }}" target="_blank">Términos y condiciones</a></b> y <b><a href="{{ path('privacy_policies') }}" target="_blank">Políticas de Privacidad</a></b> de UD Trucks</label>
</div>
<button class="buttonStandard gray b21Btn" id="BtnLibro">Enviar</button>
{% if info.showCaptcha %}
<input type="hidden" name="recaptcha_token" id="recaptchaToken">
{% endif %}
{{ form_end(form) }}
</div>
{% endblock %}
{% block jsfinal %}
{% if info.showCaptcha %}
<script src="https://www.google.com/recaptcha/api.js?render={{ info.captchaSite }}"></script>
<script>
grecaptcha.ready(function() {
grecaptcha.execute('{{ info.captchaSite }}', {action: 'submit'}).then(function(token) {
document.getElementById('recaptchaToken').value = token;
});
});
</script>
{% endif %}
<script type="text/javascript">
jQuery(function ($) {
$("form").validationEngine('attach', {
promptPosition: "topLeft",
autoHidePrompt: true,
autoPositionUpdate: false,
autoHideDelay: 2000,
binded: false,
scroll: false,
validateNonVisibleFields: true
})
$('#form-establecimiento').on('change', function () {
const value = $(this).val();
const ruc = $(this).find('option:selected').data('ruc');
const form_ruc = $('#form-ruc');
$('#form_claim_establishment').val(value);
form_ruc.val('');
if (ruc) {
form_ruc.val('RUC: ' + ruc);
}
});
$('#BtnLibro').on('click', function (event) {
event.preventDefault();
const item = $(this);
const form = item.closest('form');
const valid = form.validationEngine('validate');
if (valid) {
item.prop('disabled', true).text('Enviando...');
form.submit();
} else {
item.prop('disabled', false).text('Enviar');
}
});
$('.form_authorization').on('click', function () {
$('#form_claim_authorization').val($('.form_authorization:checked').val());
})
$('.form_good').on('click', function () {
$('#form_claim_good').val($('.form_good:checked').val());
})
$('.form_type').on('click', function () {
$('#form_claim_type').val($('.form_type:checked').val());
})
const documentTypeField = $('#form_claim_documentType');
const documentNumberField = $('#form_claim_documentNumber');
const tutorDocumentTypeField = $('#form_claim_tutorDocumentType');
const tutorDocumentNumberField = $('#form_claim_tutorDocumentNumber');
$('#form_claim_document_type').on('change', function () {
updateDocument($(this), documentTypeField, documentNumberField);
})
$('#form_claim_tutor_document_type').on('change', function () {
updateDocument($(this), tutorDocumentTypeField, tutorDocumentNumberField);
})
function updateDocument($this, type, number) {
const value = $this.val();
if (!value) {
type.val(null);
number.val(null);
number.prop('disabled', true);
return;
}
number.focus();
number.prop('disabled', false);
type.val(value);
}
const departmentField = $('#form_claim_department');
const provinceField = $('#form_claim_province');
const districtField = $('#form_claim_district');
const departmentSelect = $('#form_field_department');
const provinceSelect = $('#form_field_province');
const districtSelect = $('#form_field_district');
departmentSelect.on('change', function () {
const department = $(this).find('option:selected').data('option');
const value = $(this).val();
departmentField.val(null);
provinceField.val(null);
districtField.val(null);
if (department) {
departmentField.val(value);
loadProvinces();
}
})
provinceSelect.on('change', function () {
const province = $(this).find('option:selected').data('option');
const value = $(this).val();
provinceField.val(null);
districtField.val(null);
if (province) {
provinceField.val(value);
loadDistricts();
}
})
districtSelect.on('change', function () {
const district = $(this).find('option:selected').data('option');
const value = $(this).val();
districtField.val(null);
if (district) {
districtField.val(value);
}
})
function loadProvinces() {
const department = departmentSelect.find('option:selected').data('option');
if (!department) {
return false;
}
$.ajax({
url: '{{ path('get_provinces_by_department') }}',
type: 'post',
data: {department: department},
beforeSend: function () {
departmentSelect.prop('disabled', true);
provinceSelect.prop('disabled', true).html(createPlaceholder()).siblings('label').removeClass('fijar');
districtSelect.prop('disabled', true).html(createPlaceholder()).siblings('label').removeClass('fijar');
provinceField.val(null);
},
success: function (data) {
provinceSelect.prop('disabled', false).html(createOptions(data));
},
complete: function () {
departmentSelect.prop('disabled', false);
}
})
}
function loadDistricts() {
const province = provinceSelect.find('option:selected').data('option');
if (!province) {
return false;
}
$.ajax({
url: '{{ path('get_districts_by_province') }}',
type: 'post',
data: {province: province},
beforeSend: function () {
departmentSelect.prop('disabled', true);
provinceSelect.prop('disabled', true);
districtSelect.prop('disabled', true).html(createPlaceholder()).siblings('label').removeClass('fijar');
},
success: function (data) {
districtSelect.prop('disabled', false).html(createOptions(data));
},
complete: function () {
departmentSelect.prop('disabled', false);
provinceSelect.prop('disabled', false);
}
})
}
function createPlaceholder() {
return '<option value="" selected="selected"></option>';
}
function createOptions(data) {
let options = createPlaceholder();
$.each(data, function (i, v) {
options += createOption(v);
});
return options
}
function createOption(item) {
return '<option value="' + item['title'] + '" data-option="' + item['slug'] + '">' + item['title'] + '</option>';
}
})
</script>
{% endblock %}