1 | {% extends 'base.template.html' %} |
---|
2 | {% load productivo_filtros %} |
---|
3 | {% load i18n %} |
---|
4 | {% load static from staticfiles %} |
---|
5 | {% block content_header_title %}{% trans 'CONSULTAR DATOS' %}{% endblock %} |
---|
6 | {% block content_header_roadmap %} |
---|
7 | <li><a href="{% url 'productivo-consultar-datos' %}">{% trans 'Producción - Consultar Datos' %}</a></li> |
---|
8 | <li class="active">{% block active_link %}{% trans 'Unidad Económica' %}{% endblock %}</li> |
---|
9 | {% endblock %} |
---|
10 | {% block content %} |
---|
11 | <div class="panel panel-produccion"> |
---|
12 | <div class="panel-heading"> |
---|
13 | <h2 class="panel-title">{% trans 'Productivo' %} - {% trans 'Unidad Económica' %}</h2> |
---|
14 | </div> |
---|
15 | <div class="panel-body"> |
---|
16 | <form action="" class="form form-horizontal" method="post" autocomplete="off" id="form-consulta"> |
---|
17 | {% csrf_token %} |
---|
18 | <div class="row"> |
---|
19 | <div class="col-md-12"> |
---|
20 | <div class="form-group {% if form.anho.errors %}has-error{% endif %}"> |
---|
21 | <label class="col-md-1 control-label" for="{{ form.anho.auto_id }}"> |
---|
22 | {{ form.anho.label }} |
---|
23 | </label> |
---|
24 | <div class="col-md-10"> |
---|
25 | <div class="form-inline"> |
---|
26 | {{ form.anho }} |
---|
27 | {% include 'base.form.errors.html' with form_errors=form.anho.errors col_title_error='col-sm-2' col_msg_error='col-sm-10' %} |
---|
28 | </div> |
---|
29 | </div> |
---|
30 | </div> |
---|
31 | </div> |
---|
32 | </div> |
---|
33 | <hr> |
---|
34 | <h4>{% trans 'Realice la búsqueda por una de las tres categorías' %}</h4> |
---|
35 | <div class="row"> |
---|
36 | <div class="col-md-4"> |
---|
37 | <div class="form-group {% if form.nombre.errors %}has-error{% endif %}"> |
---|
38 | <label class="col-md-4 control-label" for="{{ form.nombre.auto_id }}"> |
---|
39 | {{ form.nombre.label }} |
---|
40 | </label> |
---|
41 | <div class="col-md-8"> |
---|
42 | <div class="form-inline"> |
---|
43 | {{ form.nombre }} |
---|
44 | {% include 'base.form.errors.html' with form_errors=form.nombre.errors col_title_error='col-sm-2' col_msg_error='col-sm-10' %} |
---|
45 | </div> |
---|
46 | </div> |
---|
47 | </div> |
---|
48 | </div> |
---|
49 | <div class="col-md-4"> |
---|
50 | <div class="form-group {% if form.rif.errors %}has-error{% endif %}"> |
---|
51 | <label class="col-md-4 control-label" for="{{ form.rif.auto_id }}"> |
---|
52 | {{ form.rif.label }} |
---|
53 | </label> |
---|
54 | <div class="col-md-8"> |
---|
55 | <div class="form-inline"> |
---|
56 | {{ form.rif }} |
---|
57 | {% include 'base.form.errors.html' with form_errors=form.rif.errors col_title_error='col-sm-2' col_msg_error='col-sm-10' %} |
---|
58 | </div> |
---|
59 | </div> |
---|
60 | </div> |
---|
61 | </div> |
---|
62 | <div class="col-md-4"> |
---|
63 | <div class="form-group {% if form.estado.errors %}has-error{% endif %}"> |
---|
64 | <label class="col-md-4 control-label" for="{{ form.estado.auto_id }}"> |
---|
65 | {{ form.estado.label }} |
---|
66 | </label> |
---|
67 | <div class="col-md-8"> |
---|
68 | <div class="form-inline"> |
---|
69 | {{ form.estado }} |
---|
70 | {% include 'base.form.errors.html' with form_errors=form.estado.errors col_title_error='col-sm-2' col_msg_error='col-sm-10' %} |
---|
71 | </div> |
---|
72 | </div> |
---|
73 | </div> |
---|
74 | </div> |
---|
75 | </div> |
---|
76 | <div class="row"> |
---|
77 | <div class="col-md-6 col-xs-6 text-center"> |
---|
78 | <button type="button" class="btn btn-warning" id="buscar">{% trans 'Buscar' %}</button> |
---|
79 | </div> |
---|
80 | <div class="col-md-6 col-sx-6 text-center"> |
---|
81 | <button type="reset" class="btn btn-warning">{% trans 'Limpiar' %}</button> |
---|
82 | </div> |
---|
83 | </div> |
---|
84 | </form> |
---|
85 | {% include 'productivo.ue.datos.consultados.html' %} |
---|
86 | {% include 'productivo.ue.filtros.consulta.html' %} |
---|
87 | {% include 'productivo.ue.resultado.filtros.html' %} |
---|
88 | </div> |
---|
89 | </div> |
---|
90 | {% endblock %} |
---|
91 | |
---|
92 | {% block extra_footer %} |
---|
93 | <script> |
---|
94 | show_hide_elements([], [$("#datos-consultados"), $('#filtros-consulta'), $('#resultado-filtros')]); |
---|
95 | |
---|
96 | $(document).ready(function(){ |
---|
97 | /** |
---|
98 | * Evento que permite buscar datos de las Unidades Económicas de acuerdo a los datos de consulta indicados |
---|
99 | * por el usuario |
---|
100 | */ |
---|
101 | $("#buscar").on('click', function(){ |
---|
102 | $.ajax({ |
---|
103 | type: 'POST', |
---|
104 | url: "{% url 'get_unidad_economica' %}", |
---|
105 | data: { |
---|
106 | anho: $("#{{ form.anho.auto_id }}").val(), |
---|
107 | rif: $("#{{ form.rif.auto_id }}").val(), |
---|
108 | nombre: $("#{{ form.nombre.auto_id }}").val(), |
---|
109 | estado: $("#{{ form.estado.auto_id }}").val(), |
---|
110 | csrfmiddlewaretoken: '{{ csrf_token }}' |
---|
111 | }, |
---|
112 | dataType: 'JSON', |
---|
113 | success: function(data) { |
---|
114 | if (data.result) { |
---|
115 | var dataSet = []; |
---|
116 | $.each(data.unidades_economicas, function(index, datos) { |
---|
117 | dataSet.push([ |
---|
118 | '<input type="checkbox" class="ue_consulted" value="'+datos.pk+'">', |
---|
119 | datos.nombre_ue, datos.rif, datos.razon_social, '' |
---|
120 | ]); |
---|
121 | }); |
---|
122 | |
---|
123 | $("#result-consult").DataTable({ |
---|
124 | "destroy": true, |
---|
125 | "data": dataSet |
---|
126 | }); |
---|
127 | show_hide_elements([$("#datos-consultados")], []); |
---|
128 | |
---|
129 | } |
---|
130 | else { |
---|
131 | bootbox.alert(data.message); |
---|
132 | } |
---|
133 | }, |
---|
134 | error: function(jqxhr, textStatus, error) { |
---|
135 | var err = textStatus + ", " + error + ", " + jqxhr.responseJSON; |
---|
136 | console.log( err ); |
---|
137 | } |
---|
138 | }).fail(function(jqxhr, textStatus, error) { |
---|
139 | console.log(textStatus + ", " + error + ", " + jqxhr.responseJSON); |
---|
140 | }); |
---|
141 | }); |
---|
142 | |
---|
143 | /** Evento que muestra los datos a seleccionar para filtrar la información de consulta */ |
---|
144 | $("#btn-next-filtros").on('click', function() { |
---|
145 | var is_checked_ue = false; |
---|
146 | $(".ue_consulted").each(function() { |
---|
147 | if ($(this).is(':checked')) { |
---|
148 | is_checked_ue = true; |
---|
149 | } |
---|
150 | }); |
---|
151 | if (!is_checked_ue) { |
---|
152 | bootbox.alert('Debe seleccionar al menos una Unidad Económica para obtener información'); |
---|
153 | return false; |
---|
154 | } |
---|
155 | show_hide_elements([$('#filtros-consulta')], [ |
---|
156 | $("#form-consulta .row"), $("#datos-consultados"),$('#resultado-filtros') |
---|
157 | ]); |
---|
158 | }); |
---|
159 | |
---|
160 | /** Evento que muestra el resultado según los filtros de consulta indicados por el usuario */ |
---|
161 | $("#btn-next-filtros-results").on('click', function() { |
---|
162 | var is_checked_filters = false; |
---|
163 | $(".filtros").each(function() { |
---|
164 | if ($(this).is(':checked')) { |
---|
165 | is_checked_filters = true; |
---|
166 | } |
---|
167 | }); |
---|
168 | if (!is_checked_filters) { |
---|
169 | bootbox.alert('Debe seleccionar al menos un filtro de consulta para obtener información'); |
---|
170 | return false; |
---|
171 | } |
---|
172 | show_hide_elements([$('#resultado-filtros')], [ |
---|
173 | $("#form-consulta .row"), $("#datos-consultados"), $('#filtros-consulta') |
---|
174 | ]); |
---|
175 | }); |
---|
176 | |
---|
177 | /** Evento que permite iniciar un nuevo procedimiento de consulta de datos */ |
---|
178 | $("#btn-new-consult").on('click', function() { |
---|
179 | $(location).attr('href', '{% url 'consultar_unidad_economica' %}'); |
---|
180 | }); |
---|
181 | |
---|
182 | /** Evento que permite seleccionar o deseleccionar todas las Unidades Económicas a consultar */ |
---|
183 | $("#check_all").on('click', function() { |
---|
184 | var check_all = $(this); |
---|
185 | $(".ue_consulted").each(function() { |
---|
186 | $(this).prop('checked', check_all.is(':checked')); |
---|
187 | }); |
---|
188 | }); |
---|
189 | |
---|
190 | /** Valida el número máximo de filtros a seleccionar para la categoría de búsqueda de Unidad Económica */ |
---|
191 | validar_max_filtros($("#opciones-unidad_economica input[type=checkbox]")); |
---|
192 | /** Valida el número máximo de filtros a seleccionar para la categoría de búsqueda de Subunidad Económica */ |
---|
193 | validar_max_filtros($("#opciones-sub_unidad_economica input[type=checkbox]")); |
---|
194 | /** Valida el número máximo de filtros a seleccionar para la categoría de búsqueda del proceso productivo */ |
---|
195 | validar_max_filtros($("#opciones-proceso_productivo input[type=checkbox]")); |
---|
196 | /** Valida el número máximo de filtros a seleccionar para la categoría de búsqueda dela actividad económica */ |
---|
197 | validar_max_filtros($("#opciones-actividad_economica input[type=checkbox]")); |
---|
198 | |
---|
199 | }); |
---|
200 | |
---|
201 | |
---|
202 | /** |
---|
203 | * Función que permite validar el número máximo de filtros a seleccionar para la consulta de información |
---|
204 | * @param element object Elemento del DOM que va a ser evaluado para considerar el número máximo de elementos |
---|
205 | * a seleccionar |
---|
206 | * @param max integer Número máximo de elementos permitidos, por defecto el valor es de 6 |
---|
207 | * @return Devuelve falso cuando el número máximo de elementos ha sido seleccionado |
---|
208 | */ |
---|
209 | function validar_max_filtros(element, max) { |
---|
210 | max = (typeof (max) !== 'undefined')?max:6; |
---|
211 | |
---|
212 | /** Evento que evalúa si ya se alcanzo el límite máximo permitido para la selección de filtros */ |
---|
213 | element.on('click', function() { |
---|
214 | var count_opt = 0, opt_clicked = $(this); |
---|
215 | element.each(function() { |
---|
216 | if ($(this).is(':checked')) { |
---|
217 | count_opt++; |
---|
218 | } |
---|
219 | if (count_opt > max) { |
---|
220 | bootbox.alert('Solo se permite filtrar un máximo de 6 opciones'); |
---|
221 | opt_clicked.prop('checked', false); |
---|
222 | return false; |
---|
223 | } |
---|
224 | }); |
---|
225 | }); |
---|
226 | } |
---|
227 | |
---|
228 | /** |
---|
229 | * Función que permite mostrar u ocultar elementos del DOM |
---|
230 | * @param to_show array Arreglo de elementos a mostrar |
---|
231 | * @param to_hide array Arreglo de elementos a ocultar |
---|
232 | */ |
---|
233 | function show_hide_elements(to_show, to_hide) { |
---|
234 | /** Evalúa el arreglo de elementos del DOM a mostrar */ |
---|
235 | $.each(to_show, function(index, element) { |
---|
236 | element.show(); |
---|
237 | }); |
---|
238 | /** Evalúa el arreglo de elementos del DOM a ocultar */ |
---|
239 | $.each(to_hide, function(index, element) { |
---|
240 | element.hide(); |
---|
241 | }); |
---|
242 | } |
---|
243 | </script> |
---|
244 | {% endblock %} |
---|