Conjunto de cambios f591439 en seiven para economico


Ignorar:
Fecha y hora:
06/09/2017 13:31:10 (hace 7 años)
Autor:
Fundación CENDITEL <cenditel@…>
Branches:
master
Children:
3546d14, 0ce0b64
Parents:
ad313bb
Mensaje:

mejorado y terminado modelo de Operaciones Interbancarias

Ubicación:
economico
Ficheros:
3 editados

Leyenda

No modificado
Añadido
Eliminado
  • economico/models.py

    rad313bb rf591439  
    2424from base.constant import (
    2525    DOMINIO, PERIODICIDAD, TRIMESTRES, MESES, ECONOMICO_SUB_AREA, CONVERT_MES, EMAIL_SUBJECT_LOAD_DATA,EMAIL_SUBJECT_CM_RESULT,
    26     TIPO_BALANZA_COMERCIAL, DOMINIO_BALANZA_COMERCIAL, BALANZA_DATOS, INVERSION_CARTERA, SECTOR_DEUDA,CONVERT_DOMINIO
     26    TIPO_BALANZA_COMERCIAL, DOMINIO_BALANZA_COMERCIAL, BALANZA_DATOS, INVERSION_CARTERA, SECTOR_DEUDA,CONVERT_DOMINIO, PLAZO
    2727)
    2828from base.functions import enviar_correo, check_val_data
     
    21992199
    22002200## Modelo de Operaciones Interbancarias
    2201 #Constantes de Operaciones Interbancarias (luego se pasará a base/constant.py)
    2202 PLAZO = (
    2203     ("01", _("Plazo 1 día")),
    2204     ("07", _("Plazo 7 día")),
    2205     ("10", _("Plazo 10 día")),
    2206     ("14", _("Plazo 14 día")),
    2207     ("20", _("Plazo 20 día")),
    2208     ("30", _("Plazo 30 día")),
    2209     ("60", _("Plazo 60 día")),
    2210 )
    2211 
    2212 @python_2_unicode_compatible
    2213 class OperacionInterbancariaPeriodicidad(models.Model):
     2201@python_2_unicode_compatible
     2202class OperacionInterbancaria(models.Model):
    22142203    """!
    2215     Clase que gestiona la periodicidad del sub-área Operaciones Interbancarias
     2204    Clase que gestiona los datos del sub-área Operaciones Interbancarias
    22162205
    22172206    @author William Páez (wpaez at cenditel.gob.ve)
     
    22212210    """
    22222211
    2223     ## Establece la fecha de la Operación Interbancaria. La periodicidad es diaria
     2212    ## Establece la fecha de la Operación Interbancaria (diaria)
    22242213    fecha = models.DateField(null=True, verbose_name=_("Fecha"))
    2225 
    2226 class OperacionInterbancaria(models.Model):
    22272214
    22282215    ## Establece el plazo en días de la Operación Interbancaria
     
    22492236    )
    22502237
    2251     ## Establece la relación con la periodicidad
    2252     oip = models.ForeignKey(OperacionInterbancariaPeriodicidad, verbose_name=_('Periodicidad de la Operación Interbancaria'))
     2238    def gestion_init(self, *args, **kwargs):
     2239        """Método que permite descargar un archivo con los datos a gestionar
     2240        @author William Páez (wpaez at cenditel.gob.ve)
     2241        @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
     2242        @date 04-09-2017
     2243        @param self <b>{object}</b> Objeto que instancia la clase
     2244        @param args <b>{tupla}</b> Tupla con argumentos opcionales
     2245        @param kwargs <b>{dic}</b> Diccionario con filtros opcionales
     2246        @return Devuelve los datos a incluír en el archivo
     2247        """
     2248        #print(kwargs)
     2249
     2250        fields = [
     2251            [
     2252                {'tag': '', 'cabecera': True},
     2253                {'tag': str(_("Plazo 1 día")), 'color': 'orange', 'text_color': 'white', 'combine': 4, 'cabecera': True},
     2254                {'tag': str(_("Plazo 7 días")), 'color': 'orange', 'text_color': 'white', 'combine': 4, 'cabecera': True},
     2255                {'tag': str(_("Plazo 10 días")), 'color': 'orange', 'text_color': 'white', 'combine': 4, 'cabecera': True},
     2256                {'tag': str(_("Plazo 14 días")), 'color': 'orange', 'text_color': 'white', 'combine': 4, 'cabecera': True},
     2257                {'tag': str(_("Plazo 20 días")), 'color': 'orange', 'text_color': 'white', 'combine': 4, 'cabecera': True},
     2258                {'tag': str(_("Plazo 30 días")), 'color': 'orange', 'text_color': 'white', 'combine': 4, 'cabecera': True},
     2259                {'tag': str(_("Plazo 60 días")), 'color': 'orange', 'text_color': 'white', 'combine': 4, 'cabecera': True},
     2260            ],
     2261            [
     2262                {'tag': str(OperacionInterbancaria._meta.get_field('fecha').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2263                ## Plazo 1 día
     2264                {'tag': str(OperacionInterbancaria._meta.get_field('monto_negocioado').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2265                {'tag': str(OperacionInterbancaria._meta.get_field('tasa_minima').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2266                {'tag': str(OperacionInterbancaria._meta.get_field('tasa_maxima').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2267                {'tag': str(OperacionInterbancaria._meta.get_field('promedio').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2268                ## Plazo 7 Días
     2269                {'tag': str(OperacionInterbancaria._meta.get_field('monto_negocioado').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2270                {'tag': str(OperacionInterbancaria._meta.get_field('tasa_minima').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2271                {'tag': str(OperacionInterbancaria._meta.get_field('tasa_maxima').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2272                {'tag': str(OperacionInterbancaria._meta.get_field('promedio').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2273                ## Plazo 10 días
     2274                {'tag': str(OperacionInterbancaria._meta.get_field('monto_negocioado').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2275                {'tag': str(OperacionInterbancaria._meta.get_field('tasa_minima').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2276                {'tag': str(OperacionInterbancaria._meta.get_field('tasa_maxima').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2277                {'tag': str(OperacionInterbancaria._meta.get_field('promedio').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2278                ## Plazo 14 días
     2279                {'tag': str(OperacionInterbancaria._meta.get_field('monto_negocioado').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2280                {'tag': str(OperacionInterbancaria._meta.get_field('tasa_minima').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2281                {'tag': str(OperacionInterbancaria._meta.get_field('tasa_maxima').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2282                {'tag': str(OperacionInterbancaria._meta.get_field('promedio').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2283                ## Plazo 20 días
     2284                {'tag': str(OperacionInterbancaria._meta.get_field('monto_negocioado').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2285                {'tag': str(OperacionInterbancaria._meta.get_field('tasa_minima').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2286                {'tag': str(OperacionInterbancaria._meta.get_field('tasa_maxima').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2287                {'tag': str(OperacionInterbancaria._meta.get_field('promedio').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2288                ## Plazo 30 días
     2289                {'tag': str(OperacionInterbancaria._meta.get_field('monto_negocioado').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2290                {'tag': str(OperacionInterbancaria._meta.get_field('tasa_minima').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2291                {'tag': str(OperacionInterbancaria._meta.get_field('tasa_maxima').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2292                {'tag': str(OperacionInterbancaria._meta.get_field('promedio').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2293                ## Plazo 60 días
     2294                {'tag': str(OperacionInterbancaria._meta.get_field('monto_negocioado').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2295                {'tag': str(OperacionInterbancaria._meta.get_field('tasa_minima').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2296                {'tag': str(OperacionInterbancaria._meta.get_field('tasa_maxima').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2297                {'tag': str(OperacionInterbancaria._meta.get_field('promedio').verbose_name), 'color': 'orange', 'text_color': 'white', 'cabecera': True},
     2298            ]
     2299        ]
     2300
     2301        """
     2302        colocar en el archivo de salida las fechas excepto fines de semana segun la seleccion del usuario
     2303        """
     2304
     2305        inicio=datetime.strptime(kwargs['fecha__gte'], "%d/%m/%Y")
     2306        fin=datetime.strptime(kwargs['fecha__lte'], "%d/%m/%Y")
     2307        delta = timedelta(days=1)
     2308        while inicio <= fin:
     2309            if inicio.weekday() < 5:
     2310                fields.append([ {'tag': str(_(str(inicio.strftime('%d/%m/%Y'))))}])
     2311            inicio+= delta
     2312
     2313        return {'fields': fields, 'output': 'operaciones_interbancarias'}
     2314
     2315    def gestion_process(self, user, *args, **kwargs):
     2316        """!
     2317        Método que permite cargar y gestionar datos
     2318
     2319        @author William Páez (wpaez at cenditel.gob.ve)
     2320        @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
     2321        @date 04-09-2017
     2322        @param self <b>{object}</b> Objeto que instancia la clase
     2323        @param user <b>{object}</b> Objeto que contiene los datos del usuario que realiza la acción
     2324        @param args <b>{tupla}</b> Tupla con argumentos opcionales
     2325        @param kwargs <b>{dic}</b> Diccionario con filtros opcionales
     2326        @return Devuelve el resultado de la acción con su correspondiente mensaje
     2327        """
     2328
     2329        ## En base al archivo cargado, se validan y cargan a la base de datos los valores contenidos en el archivo
     2330        load_file = pyexcel.get_book(bookdict=kwargs['file_content'])[0]
     2331        errors, result, message = '', True, ''
     2332        load_data_msg = str(_("Datos Cargados"))
     2333
     2334        ## Comprueba si el archivo está vacio
     2335        if len(load_file.row_range()) < 2:
     2336            result = False
     2337
     2338        ## Si el archivo no pasa las validaciones, devuelve False y un mensaje indicando el problema
     2339        if not result:
     2340            return {
     2341                'result': False,
     2342                'message': str(_("El documento a cargar no es válido o no corresponde a los parámetros seleccionados"))
     2343            }
     2344
     2345        for row in load_file.row[2:]:
     2346
     2347            try:
     2348               fecha=datetime.strptime(row[0], "%d/%m/%Y")
     2349               ## Plazo 1 día
     2350               operacion_interbancaria, created = OperacionInterbancaria.objects.update_or_create(fecha=fecha, plazo=PLAZO[0][0], defaults={
     2351                    'monto_negocioado': check_val_data(row[1]),
     2352                    'tasa_minima': check_val_data(row[2]),
     2353                    'tasa_maxima': check_val_data(row[3]),
     2354                    'promedio': check_val_data(row[4]),
     2355               })
     2356               ## Plazo 7 días
     2357               operacion_interbancaria, created = OperacionInterbancaria.objects.update_or_create(fecha=fecha, plazo=PLAZO[1][0], defaults={
     2358                    'monto_negocioado': check_val_data(row[5]),
     2359                    'tasa_minima': check_val_data(row[6]),
     2360                    'tasa_maxima': check_val_data(row[7]),
     2361                    'promedio': check_val_data(row[8]),
     2362               })
     2363               ## Plazo 10 días
     2364               operacion_interbancaria, created = OperacionInterbancaria.objects.update_or_create(fecha=fecha, plazo=PLAZO[2][0], defaults={
     2365                    'monto_negocioado': check_val_data(row[9]),
     2366                    'tasa_minima': check_val_data(row[10]),
     2367                    'tasa_maxima': check_val_data(row[11]),
     2368                    'promedio': check_val_data(row[12]),
     2369               })
     2370               ## Plazo 14 días
     2371               operacion_interbancaria, created = OperacionInterbancaria.objects.update_or_create(fecha=fecha, plazo=PLAZO[3][0], defaults={
     2372                    'monto_negocioado': check_val_data(row[13]),
     2373                    'tasa_minima': check_val_data(row[14]),
     2374                    'tasa_maxima': check_val_data(row[15]),
     2375                    'promedio': check_val_data(row[16]),
     2376               })
     2377               ## Plazo 20 días
     2378               operacion_interbancaria, created = OperacionInterbancaria.objects.update_or_create(fecha=fecha, plazo=PLAZO[4][0], defaults={
     2379                    'monto_negocioado': check_val_data(row[17]),
     2380                    'tasa_minima': check_val_data(row[18]),
     2381                    'tasa_maxima': check_val_data(row[19]),
     2382                    'promedio': check_val_data(row[20]),
     2383               })
     2384               ## Plazo 30 días
     2385               operacion_interbancaria, created = OperacionInterbancaria.objects.update_or_create(fecha=fecha, plazo=PLAZO[5][0], defaults={
     2386                    'monto_negocioado': check_val_data(row[21]),
     2387                    'tasa_minima': check_val_data(row[22]),
     2388                    'tasa_maxima': check_val_data(row[23]),
     2389                    'promedio': check_val_data(row[24]),
     2390               })
     2391               ## Plazo 60 días
     2392               operacion_interbancaria, created = OperacionInterbancaria.objects.update_or_create(fecha=fecha, plazo=PLAZO[6][0], defaults={
     2393                    'monto_negocioado': check_val_data(row[25]),
     2394                    'tasa_minima': check_val_data(row[26]),
     2395                    'tasa_maxima': check_val_data(row[27]),
     2396                    'promedio': check_val_data(row[28]),
     2397               })
     2398            except Exception as e:
     2399                errors += "- %s\n" % str(e)
     2400
     2401        if errors:
     2402            message = str(_("Error procesando datos. Verifique su correo para detalles del error"))
     2403            load_data_msg = str(_("Error al procesar datos del area Economía - Monetario - Operaciones Interbancarias"))
     2404
     2405
     2406        ## Envia correo electronico al usuario indicando el estatus de la carga de datos
     2407        enviar_correo(user.email, 'gestion.informacion.load.mail', EMAIL_SUBJECT_LOAD_DATA, {
     2408            'load_data_msg': load_data_msg, 'administrador': administrador, 'admin_email': admin_email,
     2409            'errors': errors
     2410        })
     2411
     2412        return {'result': result, 'message': message}
     2413
    22532414
    22542415#-----------------------------Economía - Externo - Reservas, Tipo de Cambio
  • economico/templates/economico.operaciones.interbancarias.html

    r226ff11 rf591439  
    4141                </div>
    4242            </div>
    43             {% include 'base.down.up.files.html' %}
     43            <div id="upload" class="invisible">
     44                {% include 'base.down.up.files.html' with app='economico' mod='OperacionInterbancaria' %}
     45            </div>
    4446        </div>
    4547    </div>
    4648{% endblock %}
     49{% block extra_footer %}
     50    <script>
     51        var fecha = $(".fecha");
     52        var fecha_ini = $("#{{ form.start_date.auto_id }}");
     53        var fecha_fin = $("#{{ form.end_date.auto_id }}");
     54
     55        function set_filters() {
     56            /**
     57            * @brief Realiza cambios en la vista ocasionados por modificaciones
     58            * en los formularios. Almacena los valores de los parámetros que serán usados
     59            * en el modelo
     60            *
     61            * @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve)
     62            * @author William Páez (wpaez at cenditel.gob.ve)
     63            * @copyright GNU/GPLv2
     64            * @date 04-09-2017
     65            */
     66
     67            var f_ini = fecha_ini.val().split("/");
     68            var f_fin = fecha_fin.val().split("/");
     69            var filters = $("#filters"), json_filter = '';
     70
     71            if (fecha_ini.val()) {
     72                json_filter += "\"fecha__gte\": \"" + fecha_ini.val() + "\",";
     73            }
     74            if (fecha_fin.val()) {
     75                json_filter += "\"fecha__lte\": \"" + fecha_fin.val() + "\",";
     76            }
     77
     78            if (json_filter) {
     79                json_filter = json_filter.slice(0, -1);
     80                filters.val(json_filter);
     81            }
     82
     83            // Se valida mostrar el formulario de descarga
     84                        if (fecha_ini.val()!='' && fecha_fin.val()!='') {
     85                                        $('#upload').removeClass('invisible');
     86            }
     87                        else{
     88                                        $('#upload').addClass('invisible');
     89                        }
     90        }
     91
     92        $(document).ready(function() {
     93            fecha_ini.on('change', function() { set_filters() });
     94            fecha_fin.on('change', function() { set_filters() });
     95            fecha.on('changeDate', function() { set_filters() });
     96        });
     97
     98        fecha.datepicker( {
     99            format: "dd/mm/yyyy"
     100        }).on('changeDate', function (ev) {
     101            $(this).datepicker('hide');
     102        });
     103    </script>
     104{% endblock %}
  • economico/views.py

    r98c5f0b rf591439  
    9494        'form': form, 'url_down': reverse('cm_descargar_archivo'), 'url_up': reverse('cm_cargar_datos')
    9595    })
    96    
     96
    9797@login_required
    9898def oferta_global(request):
     
    146146    form = MonetarioOperacionesInterbancariasForm()
    147147
    148     return render(request, 'economico.operaciones.interbancarias.html', {'form': form})
     148    return render(request, 'economico.operaciones.interbancarias.html', {'form': form, 'url_down': reverse('cm_descargar_archivo'), 'url_up': reverse('cm_cargar_datos')})
    149149
    150150
     
    359359    """
    360360    form = RealDemandaGlobalForm()
    361    
     361
    362362    return render(request, 'economico.consulta.demanda.global.html', {
    363363        'form':form
Nota: Vea TracChangeset para ayuda en el uso del visor de conjuntos de cambios.