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 id="title-consult">{% 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 | var table_ue; |
---|
98 | /** |
---|
99 | * Evento que permite buscar datos de las Unidades Económicas de acuerdo a los datos de consulta indicados |
---|
100 | * por el usuario |
---|
101 | */ |
---|
102 | $("#buscar").on('click', function(){ |
---|
103 | $.ajax({ |
---|
104 | type: 'POST', |
---|
105 | url: "{% url 'get_unidad_economica' %}", |
---|
106 | data: { |
---|
107 | anho: $("#{{ form.anho.auto_id }}").val(), |
---|
108 | rif: $("#{{ form.rif.auto_id }}").val(), |
---|
109 | nombre: $("#{{ form.nombre.auto_id }}").val(), |
---|
110 | estado: $("#{{ form.estado.auto_id }}").val(), |
---|
111 | csrfmiddlewaretoken: '{{ csrf_token }}' |
---|
112 | }, |
---|
113 | dataType: 'JSON', |
---|
114 | success: function(data) { |
---|
115 | if (data.result) { |
---|
116 | var dataSet = []; |
---|
117 | $.each(data.unidades_economicas, function(index, datos) { |
---|
118 | dataSet.push([ |
---|
119 | '<input type="checkbox" class="ue_consulted" value="'+datos.pk+'">', |
---|
120 | datos.nombre_ue, datos.rif, datos.razon_social, datos.get_estado[1] |
---|
121 | ]); |
---|
122 | }); |
---|
123 | |
---|
124 | var check_all_results = '<input type="checkbox" id="check_all" role="button" ' + |
---|
125 | 'data-toggle="tooltip" onclick="marcar_todos($(this))" ' + |
---|
126 | 'title="{% trans 'Marque para seleccionar todos los registros' %}">'; |
---|
127 | |
---|
128 | table_ue = $("#result-consult").DataTable({ |
---|
129 | "destroy": true, |
---|
130 | "data": dataSet, |
---|
131 | "columns": [ |
---|
132 | {title: check_all_results}, |
---|
133 | {title: '{% trans 'R.I.F.' %}'}, |
---|
134 | {title: '{% trans 'Nombre' %}'}, |
---|
135 | {title: '{% trans 'Razon Social' %}'}, |
---|
136 | {title: '{% trans 'Estado' %}'} |
---|
137 | ] |
---|
138 | }); |
---|
139 | show_hide_elements([$("#datos-consultados")], []); |
---|
140 | } |
---|
141 | else { |
---|
142 | bootbox.alert(data.message); |
---|
143 | } |
---|
144 | }, |
---|
145 | error: function(jqxhr, textStatus, error) { |
---|
146 | var err = textStatus + ", " + error + ", " + jqxhr.responseJSON; |
---|
147 | console.log( err ); |
---|
148 | } |
---|
149 | }).fail(function(jqxhr, textStatus, error) { |
---|
150 | console.log(textStatus + ", " + error + ", " + jqxhr.responseJSON); |
---|
151 | }); |
---|
152 | }); |
---|
153 | |
---|
154 | /** Evento que muestra los datos a seleccionar para filtrar la información de consulta */ |
---|
155 | $("#btn-next-filtros").on('click', function() { |
---|
156 | var is_checked_ue = false; |
---|
157 | $(".ue_consulted").each(function() { |
---|
158 | if ($(this).is(':checked')) { |
---|
159 | is_checked_ue = true; |
---|
160 | var elem = $("#ue_checked_for_consult"); |
---|
161 | var valor = elem.val() + "," + $(this).val(); |
---|
162 | valor = (valor.indexOf(',') === 0)?valor.substring(1):valor; |
---|
163 | elem.val(valor); |
---|
164 | } |
---|
165 | }); |
---|
166 | if (!is_checked_ue) { |
---|
167 | bootbox.alert('Debe seleccionar al menos una Unidad Económica para obtener información'); |
---|
168 | return false; |
---|
169 | } |
---|
170 | show_hide_elements([$('#filtros-consulta')], [ |
---|
171 | $("#form-consulta .row"), $("#datos-consultados"),$('#resultado-filtros'), $('#title-consult') |
---|
172 | ]); |
---|
173 | }); |
---|
174 | |
---|
175 | /** Evento que muestra el resultado según los filtros de consulta indicados por el usuario */ |
---|
176 | $("#btn-next-filtros-results").on('click', function() { |
---|
177 | var is_checked_filters = false; |
---|
178 | $(".filtros").each(function() { |
---|
179 | if ($(this).is(':checked')) { |
---|
180 | is_checked_filters = true; |
---|
181 | } |
---|
182 | }); |
---|
183 | if (!is_checked_filters) { |
---|
184 | bootbox.alert('Debe seleccionar al menos un filtro de consulta para obtener información'); |
---|
185 | return false; |
---|
186 | } |
---|
187 | show_hide_elements([$('#resultado-filtros')], [ |
---|
188 | $("#form-consulta .row"), $("#datos-consultados"), $('#filtros-consulta'), $('#title-consult') |
---|
189 | ]); |
---|
190 | |
---|
191 | var opciones_ue = function() { |
---|
192 | var items_ue = []; |
---|
193 | $('#opciones-unidad_economica input[type=checkbox]').each(function() { |
---|
194 | if ($(this).is(':checked')) { |
---|
195 | items_ue.push($(this).val()); |
---|
196 | } |
---|
197 | }); |
---|
198 | return items_ue; |
---|
199 | }; |
---|
200 | var opciones_pp = function () { |
---|
201 | var items_pp = []; |
---|
202 | $('#opciones-proceso_productivo input[type=checkbox]').each(function() { |
---|
203 | if ($(this).is(':checked')) { |
---|
204 | items_pp.push($(this).val()); |
---|
205 | } |
---|
206 | }); |
---|
207 | return items_pp; |
---|
208 | }; |
---|
209 | |
---|
210 | var opciones_su = function () { |
---|
211 | var items_su = []; |
---|
212 | $('#opciones-sub_unidad_economica input[type=checkbox]').each(function() { |
---|
213 | if ($(this).is(':checked')) { |
---|
214 | items_su.push($(this).val()); |
---|
215 | } |
---|
216 | }); |
---|
217 | return items_su; |
---|
218 | }; |
---|
219 | |
---|
220 | var opciones_ae = function () { |
---|
221 | var items_ae = []; |
---|
222 | $('#opciones-actividad_economica input[type=checkbox]').each(function() { |
---|
223 | if ($(this).is(':checked')) { |
---|
224 | items_ae.push($(this).val()); |
---|
225 | } |
---|
226 | }); |
---|
227 | return items_ae; |
---|
228 | }; |
---|
229 | |
---|
230 | $.ajax({ |
---|
231 | type: 'POST', |
---|
232 | url: "{% url 'get_result_unidad_economica' %}", |
---|
233 | data: { |
---|
234 | items_ue: opciones_ue(), |
---|
235 | items_su: opciones_su(), |
---|
236 | items_pp: opciones_pp(), |
---|
237 | items_ae: opciones_ae(), |
---|
238 | id_list: $("#ue_checked_for_consult").val().split(','), |
---|
239 | csrfmiddlewaretoken: '{{ csrf_token }}' |
---|
240 | }, |
---|
241 | dataType: 'JSON', |
---|
242 | success: function(data) { |
---|
243 | if (data.result) { |
---|
244 | // Datos a mostrar de los filtros de las unidades económicas |
---|
245 | |
---|
246 | // Datos a mostrar de los filtros de las sub unidades |
---|
247 | |
---|
248 | // Datos a mostrar de los filtros del proceso productivo |
---|
249 | |
---|
250 | // Datos a mostrar de los filtros de las actividades económicas |
---|
251 | } |
---|
252 | else { |
---|
253 | //bootbox.alert(data.message); |
---|
254 | } |
---|
255 | }, |
---|
256 | error: function(jqxhr, textStatus, error) { |
---|
257 | var err = textStatus + ", " + error + ", " + jqxhr.responseJSON; |
---|
258 | console.log( err ); |
---|
259 | } |
---|
260 | }).fail(function(jqxhr, textStatus, error) { |
---|
261 | console.log(textStatus + ", " + error + ", " + jqxhr.responseJSON); |
---|
262 | }); |
---|
263 | }); |
---|
264 | |
---|
265 | /** Evento que permite iniciar un nuevo procedimiento de consulta de datos */ |
---|
266 | $("#btn-new-consult").on('click', function() { |
---|
267 | $(location).attr('href', '{% url 'consultar_unidad_economica' %}'); |
---|
268 | }); |
---|
269 | |
---|
270 | /** Evento que permite seleccionar o deseleccionar todas las Unidades Económicas a consultar */ |
---|
271 | $("#check_all").on('click', function(e) { |
---|
272 | e.preventDefault(); |
---|
273 | var check_all = $(this); |
---|
274 | $(".ue_consulted").each(function() { |
---|
275 | $(this).prop('checked', check_all.is(':checked')); |
---|
276 | }); |
---|
277 | }); |
---|
278 | |
---|
279 | |
---|
280 | |
---|
281 | /** Valida el número máximo de filtros a seleccionar para la categoría de búsqueda de Unidad Económica */ |
---|
282 | validar_max_filtros($("#opciones-unidad_economica input[type=checkbox]")); |
---|
283 | /** Valida el número máximo de filtros a seleccionar para la categoría de búsqueda de Subunidad Económica */ |
---|
284 | validar_max_filtros($("#opciones-sub_unidad_economica input[type=checkbox]")); |
---|
285 | /** Valida el número máximo de filtros a seleccionar para la categoría de búsqueda del proceso productivo */ |
---|
286 | validar_max_filtros($("#opciones-proceso_productivo input[type=checkbox]")); |
---|
287 | /** Valida el número máximo de filtros a seleccionar para la categoría de búsqueda dela actividad económica */ |
---|
288 | validar_max_filtros($("#opciones-actividad_economica input[type=checkbox]")); |
---|
289 | |
---|
290 | }); |
---|
291 | |
---|
292 | |
---|
293 | /** |
---|
294 | * Función que permite validar el número máximo de filtros a seleccionar para la consulta de información |
---|
295 | * @param element object Elemento del DOM que va a ser evaluado para considerar el número máximo de elementos |
---|
296 | * a seleccionar |
---|
297 | * @param max integer Número máximo de elementos permitidos, por defecto el valor es de 6 |
---|
298 | * @return Devuelve falso cuando el número máximo de elementos ha sido seleccionado |
---|
299 | */ |
---|
300 | function validar_max_filtros(element, max) { |
---|
301 | max = (typeof (max) !== 'undefined')?max:6; |
---|
302 | |
---|
303 | /** Evento que evalúa si ya se alcanzo el límite máximo permitido para la selección de filtros */ |
---|
304 | element.on('click', function() { |
---|
305 | var count_opt = 0, opt_clicked = $(this); |
---|
306 | element.each(function() { |
---|
307 | if ($(this).is(':checked')) { |
---|
308 | count_opt++; |
---|
309 | } |
---|
310 | if (count_opt > max) { |
---|
311 | bootbox.alert('Solo se permite filtrar un máximo de 6 opciones'); |
---|
312 | opt_clicked.prop('checked', false); |
---|
313 | return false; |
---|
314 | } |
---|
315 | }); |
---|
316 | }); |
---|
317 | } |
---|
318 | |
---|
319 | /** |
---|
320 | * Función que permite mostrar u ocultar elementos del DOM |
---|
321 | * @param to_show array Arreglo de elementos a mostrar |
---|
322 | * @param to_hide array Arreglo de elementos a ocultar |
---|
323 | */ |
---|
324 | function show_hide_elements(to_show, to_hide) { |
---|
325 | /** Evalúa el arreglo de elementos del DOM a mostrar */ |
---|
326 | $.each(to_show, function(index, element) { |
---|
327 | element.show(); |
---|
328 | }); |
---|
329 | /** Evalúa el arreglo de elementos del DOM a ocultar */ |
---|
330 | $.each(to_hide, function(index, element) { |
---|
331 | element.hide(); |
---|
332 | }); |
---|
333 | } |
---|
334 | |
---|
335 | /** |
---|
336 | * Marca todas las opciones mostradas en la tabla de consulta |
---|
337 | * @param element object Objeto del elemento del DOM seleccionado |
---|
338 | */ |
---|
339 | function marcar_todos(element) { |
---|
340 | var check_all = element; |
---|
341 | $(".ue_consulted").each(function() { |
---|
342 | $(this).prop('checked', check_all.is(':checked')); |
---|
343 | }); |
---|
344 | } |
---|
345 | </script> |
---|
346 | {% endblock %} |
---|