source: seiven/productivo/templates/productivo.unidad.economica.html @ 84aeeb7

Last change on this file since 84aeeb7 was 84aeeb7, checked in by Ing. Roldan D. Vargas G <rvargas@…>, 6 años ago

nuevos servicios de consulta a api de sidepro. Agregadas instrucciones jquery para la consulta de información

  • Propiedad mode establecida a 100644
File size: 16.6 KB
Línea 
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 %}
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.