Conjunto e39619b en seiven


Ignorar:
Fecha y hora:
21/08/2017 10:31:14 (hace 7 años)
Autor:
elinares <elinares@…>
Branches:
master
Children:
396acb9
Parents:
f0200a9
Mensaje:

Devolviendo cambios afectados

Fichero:
1 editado

Leyenda

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

    r64cb313 re39619b  
    2727)
    2828from base.functions import enviar_correo, check_val_data
     29from base.models import AnhoBase
    2930
    3031import pyexcel
     
    4344class Precios(models.Model):
    4445    ## Año base del registro
    45     anho_base = models.CharField(max_length=4, null=True)
     46    anho_base = models.ForeignKey(AnhoBase, null=True)
    4647
    4748    ## Año al que pertenece el(los) registro(s)
     
    5960    ## Registro del mes y año
    6061    fecha = models.DateField(null=True, verbose_name=_("Fecha"))
    61 
    62     class Meta:
    63         unique_together = ("anho", "mes")
    6462
    6563    def gestion_init(self, *args, **kwargs):
     
    6866
    6967        @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve)
     68        @author Ing. Luis Barrios (lbarrios at cenditel.gob.ve)
    7069        @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
    7170        @date 05-12-2016
     71        @date 09-08-2017
    7272        @param self <b>{object}</b> Objeto que instancia la clase
    7373        @param args <b>{tupla}</b> Tupla con argumentos opcionales
     
    9090            [
    9191                {'tag': str(_('Año')), 'cabecera': True}, {'tag': str(_('Mes')), 'cabecera': True}, {'tag': str(_('INPC')), 'cabecera': True},
     92               
    9293                {'tag': str(_('(1) Alimentos y Bebidas no Alcoholicas')), 'cabecera': True},
    9394                {'tag': str(_('(2) Bebidas Alcoholicas y Tabaco')), 'cabecera': True},
     
    103104                {'tag': str(_('(12) Restaurant y Hotel')), 'cabecera': True},
    104105                {'tag': str(_('(13) Bienes y Servicios Diversos')), 'cabecera': True},
     106
    105107                {'tag': str(_('Bienes durables')), 'cabecera': True},
    106108                {'tag': str(_('Bienes semidurables')), 'cabecera': True},
    107109                {'tag': str(_('Bienes no durables')), 'cabecera': True},
     110
    108111                {'tag': str(_('Bienes')), 'cabecera': True},
    109112                {'tag': str(_('Agrícolas')), 'cabecera': True},
     
    111114                {'tag': str(_('Agroindustrial')), 'cabecera': True},
    112115                {'tag': str(_('Otros manufacturados')), 'cabecera': True},
     116
    113117                {'tag': str(_('Total Servicios')), 'cabecera': True},
    114118                {'tag': str(_('Servicios Básicos')), 'cabecera': True},
    115119                {'tag': str(_('Otros Servicios')), 'cabecera': True},
     120
    116121                {'tag': str(_('Núcleo Inflacionario (NI)')), 'cabecera': True},
    117122                {'tag': str(_('Alimentos Elaborados')), 'cabecera': True},
     
    119124                {'tag': str(_('Bienes industriales excepto alimentos y textiles')), 'cabecera': True},
    120125                {'tag': str(_('Servicios no administrados')), 'cabecera': True},
     126
    121127                {'tag': str(_('Controlados')), 'cabecera': True},
    122128                {'tag': str(_('No Controlados')), 'cabecera': True}
     
    127133        dominio, data_type = str(_('INPC')), 'N'
    128134
    129         # Condición para filtrar y mostrar la información según la selección del usuario
     135        ## Condición para filtrar y mostrar la información según la selección del usuario
    130136        if 'dominio' in kwargs:
    131137            if kwargs['dominio'] == 'N':
    132138                kwargs['dominio'] = None
    133139                kwargs['ciudad'] = kwargs.pop('dominio')
     140                lst=['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre']
     141                x = int (kwargs['fecha__month__lte']) - int (kwargs['fecha__month__gte']) + 1 +  12 * (int(kwargs['fecha__year__lte']) - int(kwargs['fecha__year__gte']))
     142                for i, val in enumerate(lst):
     143                    if lst[int(kwargs['fecha__month__gte'])-1] in val:
     144                        desired = list( islice( cycle( lst), i, i+x))
     145                        tmp=0
     146                        lolo=int (kwargs['fecha__year__gte'])
     147                        aux=1
     148                        for a in desired:
     149                            aux1=''
     150                            if a == 'Diciembre':
     151                                aux1=lolo+tmp
     152                                tmp=tmp+1
     153                            else:
     154                                aux1=lolo+tmp
     155                            aux=aux+1
     156                            fields.append([ {'tag': str(_(str(aux1))),'cabecera': True}, {'tag': str(_(str(a))),'cabecera': True}])
     157
    134158            else:
    135159                dominio, data_type = str(_('Ciudad')), 'C'
    136160                kwargs['ciudad__in'] = kwargs.pop('dominio')
    137161                kwargs['ciudad__in'] = [d for d in DOMINIO[1:][0]]
    138                 # Agrega la columna correspondiente a las ciudades
     162                ## Agrega la columna correspondiente a las ciudades
    139163                fields[0].insert(2, {'tag': '', 'cabecera': True})
    140                 fields[1].insert(2, {'tag': dominio, 'cabecera': True})
    141 
    142         elif not 'dominio' in kwargs or not kwargs['dominio'] == 'C':
    143             exclude_fields.append('ciudad')
    144 
    145         if 'anho_base' in kwargs:
    146             precios_base = {'anho': kwargs['anho_base']}
    147             if 'ciudad__in' in kwargs:
    148                 precios_base.update({'ciudad__in': kwargs['ciudad__in']})
    149         else:
    150             precios_base = {}
    151 
    152         ## Estrae los registros asociados a descargar en archivo
    153         for p in Precios.objects.filter(Q(**kwargs) | Q(**precios_base)):
    154             mes = str(_("Enero"))
    155             for m in CONVERT_MES:
    156                 if CONVERT_MES[m] == p.mes:
    157                     mes = str(m)
    158 
    159             # Registros de Año y Mes
    160             registros = [{'tag': p.anho}, {'tag': mes}]
    161 
    162             # Registros por ciudad si es solicitado
    163             if data_type == 'C':
    164                 for d in DOMINIO[1:]:
    165                     if d[0] == p.ciudad:
    166                         registros.append({'tag': str(d[1])})
    167 
    168             # Índice Nacional de Precios al Consumidor
    169             registros.append({'tag': str(p.inpc)})
    170 
    171             #Asigna los índices por grupo
    172             grp = p.preciosgrupo_set.get()
    173             for g in grp._meta.get_fields():
    174                 if not g.attname in exclude_fields:
    175                     registros.append({'tag': str(grp.__getattribute__(g.attname))})
    176 
    177             # Asigna los indices por sector de origen
    178             sec = p.preciossector_set.get()
    179             for s in sec._meta.get_fields():
    180                 if not s.attname in exclude_fields:
    181                     registros.append({'tag': str(sec.__getattribute__(s.attname))})
    182 
    183             # Asigna los indices por naturaleza y durabilidad
    184             nat = p.preciosnaturaleza_set.get()
    185             for n in nat._meta.get_fields():
    186                 if not n.attname in exclude_fields:
    187                     registros.append({'tag': str(nat.__getattribute__(n.attname))})
    188 
    189             # Asigna los ínidces por servicio
    190             ser = p.preciosservicios_set.get()
    191             for sv in ser._meta.get_fields():
    192                 if not sv.attname in exclude_fields:
    193                     registros.append({'tag': str(ser.__getattribute__(sv.attname))})
    194 
    195             # Asigna los ínidces por núcleo inflacionario
    196             inf = p.preciosinflacionario_set.get()
    197             for ni in inf._meta.get_fields():
    198                 if not ni.attname in exclude_fields:
    199                     registros.append({'tag': str(inf.__getattribute__(ni.attname))})
    200 
    201 
    202             # Asigna los ínidces por productos controlados y no controlados
    203             prd = p.preciosproductos_set.get()
    204             for pr in prd._meta.get_fields():
    205                 if not pr.attname in exclude_fields:
    206                     registros.append({'tag': str(prd.__getattribute__(pr.attname))})
    207 
    208             # Agrega los datos a la nueva fila del archivo a generar
    209             fields.append(registros)
     164                fields[1].insert(2, {'tag': dominio, 'cabecera': True, 'row':2})
     165
     166                lst=['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre']
     167                lst1=['Caracas','Maracay','Ciudad Guayana','Barcelona - Pto la Cruz','Valencia','Barquisimeto','Maracaibo','Mérida','Maturín','San Cristóbal','Resto Nacional']
     168
     169                x = int (kwargs['fecha__month__lte']) - int (kwargs['fecha__month__gte']) + 1 +  12 * (int(kwargs['fecha__year__lte']) - int(kwargs['fecha__year__gte']))
     170                for i, val in enumerate(lst):
     171                    if lst[int(kwargs['fecha__month__gte'])-1] in val:
     172                        desired = list( islice( cycle( lst), i, i+x))
     173                        tmp=0
     174                        lolo=int (kwargs['fecha__year__gte'])
     175                        aux,aux2=1,0
     176                        for a in desired:
     177                            aux1=''
     178                            if a == 'Diciembre':
     179                                aux1=lolo+tmp
     180                                tmp=tmp+1
     181                            else:
     182                                aux1=lolo+tmp
     183                            aux=aux+1
     184                            for q in range(0,11):
     185                                if lst1[q] == 'Caracas':
     186                                    fields.append([ {'tag': str(_(str(aux1))),'combine_row':11 ,'cabecera': True, 'row':0}, {'tag': str(_(str(a))), 'combine_row':11,'cabecera': True,'row':1},{'tag': str(_(str(lst1[q]))),'cabecera': True}])
     187                                else:
     188                                    fields.append([{'tag':''},{'tag':''},{'tag': str(_(str(lst1[q]))),'cabecera': True}])
    210189
    211190        return {'fields': fields, 'output': 'precios'}
     
    216195
    217196        @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve)
     197        @author Ing. Luis Barrios (lbarrios at cenditel.gob.ve)
    218198        @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
    219199        @date 05-12-2016
     200        @date 09-08-2017
    220201        @param self <b>{object}</b> Objeto que instancia la clase
    221202        @param file <b>{string}</b> Ruta y nombre del archivo a gestionar
     
    226207        """
    227208        load_file = pyexcel.get_book(bookdict=kwargs['file_content'])[0]
    228         anho_base, i, col_ini, errors, result, message = '', 0, 2, '', True, ''
     209        anho_base, i, col_ini, errors, result, message = self.anho_base, 0, 2, '', True, ''
    229210        load_data_msg = str(_("Datos Cargados"))
    230211
    231         if 'dominio' in kwargs:
    232             if (kwargs['dominio'] == 'C' and load_file.row[1][2] == 'INPC') or (kwargs['dominio'] == 'N' and load_file.row[1][2] != 'INPC'):
    233                 result = False
    234         if 'anho_base' in kwargs and kwargs['anho_base'] != load_file.row[2][0]:
    235             result = False
    236         if not result:
    237             return {'result': False, 'message': str(_("El documento a cargar no es válido o no corresponde a los parámetros seleccionados"))}
     212        self.anho_base=AnhoBase.objects.get(id=kwargs['anho_base'])
    238213
    239214        for row in load_file.row[2:]:
    240215            try:
    241                 # Asigna el año base del registro
    242                 anho_b = anho_base = row[0] if i == 0 else anho_base
    243 
    244                 # Asigna el año de la fila que se esta procesando
    245                 anho = row[0]
    246 
    247                 # Asigna el número de mes
    248                 mes = [CONVERT_MES[m] for m in CONVERT_MES if m.find(row[1]) >= 0][0]
    249 
    250                 # Asigna la ciudad si el dominio no es nacional
    251                 ciudad = row[2] if 'dominio' in kwargs and kwargs['dominio'] == 'C' else None
    252 
    253                 # Asigna el INPC total para el año base
     216                ## Asigna el año de la fila que se esta procesando
     217                if row[0]!= '':
     218                    anho = row[0]
     219
     220                ## Asigna el número de mes
     221                if row[1]!= '':
     222                    mes = CONVERT_MES[row[1]]
     223               
     224                ## Condición que indica si el registro corresponde al año base
     225                base = True if i == 0 else False
     226
     227                ## Asigna la ciudad si el dominio no es nacional
     228                ciudad = CONVERT_DOMINIO[row[2]] if 'dominio' in kwargs and kwargs['dominio'] == 'C' else None
     229               
     230                ## Asigna el INPC total para el año base
    254231                inpc = row[3] if ciudad else row[2]
    255232
    256                 # Condición que indica si el registro corresponde al año base
    257                 base = True if i == 0 else False
    258 
    259                 # Registro de año y mes para los filtros
     233                ## Registro de año y mes para los filtros
    260234                fecha = datetime(int(anho), int(mes), 1)
    261235
    262                 # Condiciones para filtrar la información a cargar según las especificaciones del usuario
    263                 if 'anho_base' in kwargs and kwargs['anho_base'] != load_file.row[2][0]:
    264                     continue
    265                 if 'fecha__month__gte' in kwargs and 'fecha__month__lte' in kwargs and kwargs[
    266                     'fecha__month__lte'] < mes < kwargs['fecha__month__gte']:
    267                     continue
    268                 elif 'fecha__month__gte' in kwargs and mes < kwargs['fecha__month__gte']:
    269                     continue
    270                 elif 'fecha__month__lte' in kwargs and mes > kwargs['fecha__month__lte']:
    271                     continue
    272                 if 'fecha__year__gte' in kwargs and 'fecha__year__lte' in kwargs and kwargs[
    273                     'fecha__year__lte'] < anho < kwargs['fecha__year__gte']:
    274                     continue
    275                 elif 'fecha__year__gte' in kwargs and anho < kwargs['fecha__year__gte']:
    276                     continue
    277                 elif 'fecha__year__lte' in kwargs and anho > kwargs['fecha__year__lte']:
    278                     continue
    279 
    280                 # Gestión para los datos básicos de precios
     236                ## Gestión para los datos básicos de precios
    281237                real_p, created = Precios.objects.update_or_create(
    282238                    anho=anho, mes=mes, ciudad=ciudad, fecha=fecha,
    283                     defaults={ 'anho_base': anho_b, 'inpc': inpc }
     239                    defaults={ 'anho_base': self.anho_base, 'inpc': inpc }
    284240                )
    285241
    286 
    287                 # Gestión de datos para el Índice por Grupos
     242                ## Gestión de datos para el Índice por Grupos
    288243                PreciosGrupo.objects.update_or_create(real_precios=real_p, defaults={
    289244                    'base': base,
     
    303258                })
    304259
    305                 # Gestión de datos para el Índice por Sector de Origen
     260                ## Gestión de datos para el Índice por Sector de Origen
    306261                PreciosSector.objects.update_or_create(real_precios=real_p, defaults={
    307262                    'base': base,
     
    311266                })
    312267
    313                 # Gestión de datos para el Índice por Naturaleza y Durabilidad
     268                ## Gestión de datos para el Índice por Naturaleza y Durabilidad
    314269                PreciosNaturaleza.objects.update_or_create(real_precios=real_p, defaults={
    315270                    'base': base,
     
    321276                })
    322277
    323                 # Gestión de datos para el Índice por Servicios
     278                ## Gestión de datos para el Índice por Servicios
    324279                PreciosServicios.objects.update_or_create(real_precios=real_p, defaults={
    325280                    'base': base,
     
    329284                })
    330285
    331                 # Gestion de datos para el Índice por Núcleo Inflacionario
     286                ## Gestion de datos para el Índice por Núcleo Inflacionario
    332287                PreciosInflacionario.objects.update_or_create(real_precios=real_p, defaults={
    333288                    'base': base,
     
    339294                })
    340295
    341                 # Gestión de datos para el Índice de Productos Controlados y No Controlados
     296                ## Gestión de datos para el Índice de Productos Controlados y No Controlados
    342297                PreciosProductos.objects.update_or_create(real_precios=real_p, defaults={
    343298                    'base': base,
     
    412367    )
    413368
    414     retaurant_hotel = models.DecimalField(
     369    restaurant_hotel = models.DecimalField(
    415370        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("(12) Restaurant y Hotel")
    416371    )
     
    565520
    566521    ## Año base del registro
    567     anho_base =  models.CharField(max_length=4, null=True)
     522    anho_base = models.ForeignKey(AnhoBase, null=True)
    568523
    569524    ## Año al que pertenece el(los) registro(s)
    570525    anho = models.CharField(max_length=4, verbose_name=_("Año"))
     526
     527    ## Número del trimestre al que pertenece el registro
     528    trimestre = models.CharField(max_length=1, null=True, blank=True, verbose_name=_('Trimestre'))
    571529
    572530    ## Valor de los registros si son nominales, en caso contrario almacena False
     
    656614                    {'tag': '', 'cabecera': True},
    657615                    {'tag': '', 'cabecera': True},
    658                     {'tag': str(PIBActividad._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 18, 'cabecera': True}
     616                    {'tag': str(PIBActividad._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 17, 'cabecera': True}
    659617                ],
    660618                [
     
    662620                    {'tag': str(PIBActividad._meta.get_field('total_consolidado').verbose_name), 'color': 'indigo', 'text_color': 'white', 'cabecera': True},
    663621                    {'tag': str(PIBActividad._meta.get_field('total_petrolera').verbose_name), 'color': 'green', 'text_color': 'white', 'cabecera': True},
    664                     {'tag': str(PIBActividad._meta.get_field('total_no_petrolera').verbose_name), 'color': 'ocean_blue', 'text_color': 'white', 'combine': 2, 'cabecera': True},
     622                    {'tag': str(PIBActividad._meta.get_field('total_no_petrolera').verbose_name), 'color': 'ocean_blue', 'text_color': 'white', 'cabecera': True},
    665623                    {'tag': str(PIBActividad._meta.get_field('mineria').verbose_name), 'color': 'gray25', 'text_color': 'white', 'cabecera': True},
    666624                    {'tag': str(PIBActividad._meta.get_field('manufactura').verbose_name), 'cabecera': True},
     
    679637                ]
    680638            ]
    681             # Asigna el nombre del archivo a descargar
     639            ## Asigna el nombre del archivo a descargar
    682640            nombre_archivo = 'PIB-Actividad_economica'
    683641
     
    696654                ]
    697655            ]
    698             # Asigna el nombre del archivo a descargar
     656            ## Asigna el nombre del archivo a descargar
    699657            nombre_archivo = 'PIB-Institucional'
    700658
     
    709667        diff_anhos = int(kwargs['anho__lte']) - int(kwargs['anho__gte']) + 1       
    710668        if any('trimestre' in index for index in kwargs):
    711             fields[1].insert(1, {'tag': str(PIBActividad._meta.get_field('trimestre').verbose_name), 'cabecera': True})
    712             # Almacena los datos de año y trimestre inicial provenientes del formulario
     669            fields[1].insert(1, {'tag': str(PIB._meta.get_field('trimestre').verbose_name), 'cabecera': True})
     670            ## Almacena los datos de año y trimestre inicial provenientes del formulario
    713671            anho_ini = int(kwargs['anho__gte'])
    714672            trimestre_ini = int(kwargs['trimestre__gte'])
    715673
    716             # Genera los años y trimestres correspondientes a los parámetros del formulario
     674            ## Genera los años y trimestres correspondientes a los parámetros del formulario
    717675            registros = []
    718676            while True:
    719677                registros = [({'tag': anho_ini})]
    720678                registros.append({'tag': trimestre_ini})
    721                 # Agrega los datos a la nueva fila del archivo a generar
     679                ## Agrega los datos a la nueva fila del archivo a generar
    722680                fields.append(registros)
    723681                if (anho_ini == int(kwargs['anho__lte']) and trimestre_ini == int(kwargs['trimestre__lte'])):
     
    728686                trimestre_ini += 1
    729687        else:
    730             # Almacena los años de los registros a descargar
     688            ## Almacena los años de los registros a descargar
    731689            for i in range(diff_anhos):
    732690                registros = [({'tag': int(kwargs['anho__gte']) + i})]
    733                 # Agrega los datos a la nueva fila del archivo a generar
     691                ## Agrega los datos a la nueva fila del archivo a generar
    734692                fields.append(registros)
    735693        ## Devuelve los datos correspondientes al archivo a descargar y el nombre de ese archivo
     
    754712
    755713        load_file = pyexcel.get_book(bookdict=kwargs['file_content'])[0]
    756         anho_base, i, col_ini, errors, result, message, is_nominal = '', 0, 2, '', False, '', False
     714        anhos_base, anho_b, errors, result, message, is_nominal = [], None, '', False, '', False
    757715        is_demanda, is_produccion, is_actividad, is_sector = False, False, False, False
    758716        load_data_msg = str(_("Datos Cargados"))
     
    794752                'message': str(_("El documento a cargar no es válido o no corresponde a los parámetros seleccionados"))
    795753            }
    796 
    797        
     754 
     755        if not is_nominal:
     756            ## Se crea una lista con los años base del modelo
     757            anhos_base = [int(anhos.anho) for anhos in AnhoBase.objects.all()]
     758            #Se almacena el año base suministrado en el formulario
     759            anho_b = AnhoBase.objects.get(id=kwargs['anho_base'])
     760
    798761        ## En base al archivo cargado, se validan y cargan a la base de datos los valores contenidos en el archivo
    799762        for row in load_file.row[2:]:
    800763            try:
    801                 # Asigna el año base del registro
    802                 anho_b = int(kwargs['anho_base'])
    803 
    804                 # Posición inicial desde la cual se van a comenzar a registrar los datos en los modelos asociados
     764                ## Obtención del año a registrar
    805765                anho = row[0]
    806766
    807                 # Condición que indica si el registro corresponde al año base
    808                 base = True if i == 0 else False
    809 
    810                 # Almacena el valor en caso de tratarse del archivo PIB-Nominal_demanda o False en caso contrario
     767                ## Condición que indica si el registro corresponde al año base
     768                base = True if anho in anhos_base else False
     769
     770                ## Almacena el valor en caso de tratarse del archivo PIB-Nominal_demanda o False en caso contrario
    811771                nominal = row[1] if (is_nominal and is_demanda) else None
    812772
    813                 # Gestión para los datos básicos de pib
    814                 real_pib, created = PIB.objects.update_or_create(anho=anho, anho_base=anho_b, nominal=nominal)
     773                ## Almacena el valor del trimestre en caso de contener esta columna
     774                trimestre = row[1] if (is_actividad or is_sector) else None
     775
     776                ## Gestión para los datos básicos de pib
     777                real_pib, created = PIB.objects.update_or_create(anho=anho, anho_base=anho_b, trimestre=trimestre, nominal=nominal)
    815778
    816779                if is_demanda:
    817                     # Gestión de datos para el Índice por Demanda
     780                    ## Gestión de datos para el Índice por Demanda
    818781                    PIBDemanda.objects.update_or_create(pib=real_pib, defaults={
    819782                        'base': base,
     
    824787                    })
    825788                elif is_produccion:
    826                     # Gestión de datos para el Índice por Producción
     789                    ## Gestión de datos para el Índice por Producción
    827790                    PIBProduccion.objects.update_or_create(pib=real_pib, defaults={
    828791                        'base': base,
     
    832795                    })
    833796                elif is_actividad:
    834                     # Gestión de datos para el ïndice por Actividad Económica
     797                    ## Gestión de datos para el ïndice por Actividad Económica
    835798                    PIBActividad.objects.update_or_create(pib=real_pib, defaults={
    836799                        'base': base,
    837                         'trimestre': check_val_data(row[1]),
    838800                        'total_consolidado': check_val_data(row[2]),
    839801                        'total_petrolera': check_val_data(row[3]),
     
    855817                    })
    856818                elif is_sector:
    857                     # Gestión de datos para el Índice por Sector Institucional
     819                    ## Gestión de datos para el Índice por Sector Institucional
    858820                    PIBInstitucion.objects.update_or_create(pib=real_pib, defaults={
    859821                        'base': base,
    860                         'trimestre': check_val_data(row[1]),
    861822                        'publico': check_val_data(row[2]),
    862823                        'privado': check_val_data(row[3])
     
    865826            except Exception as e:
    866827                errors += "- %s\n" % str(e)
    867             i += 1
    868828
    869829        if errors:
     
    965925    """
    966926
    967     trimestre = models.CharField(max_length=1, null=True, blank=True, verbose_name=_('Trimestre'))
    968 
    969927    total_consolidado = models.DecimalField(
    970928        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("PIB Consolidado")
     
    10641022    @version 1.0.0
    10651023    """
    1066    
    1067     trimestre = models.CharField(max_length=1, null=True, blank=True, verbose_name=_('Trimestre'))
    10681024
    10691025    publico = models.DecimalField(
     
    10881044   
    10891045    ## Año base del registro
    1090     anho_base = models.CharField(max_length=4, null=True)
     1046    anho_base = models.ForeignKey(AnhoBase, null=True)
    10911047
    10921048    ## Año al que pertenece el(los) registro(s)
     
    11701126        anho_base, errors, result, message = '', '', True, ''
    11711127        load_data_msg = str(_("Datos Cargados"))
     1128
     1129        self.anho_base=AnhoBase.objects.get(id=kwargs['anho_base'])
     1130       
    11721131        for row in range(1,len(load_file.row_range())):
    11731132           
    11741133            try:
    1175                 real_demanda , created = DemandaGlobal.objects.update_or_create(anho=load_file[row,0], anho_base=kwargs['anho_base'], trimestre=load_file[row,1], demanda_global= load_file[row,2]+load_file[row,7])
     1134                real_demanda , created = DemandaGlobal.objects.update_or_create(anho=load_file[row,0], anho_base=self.anho_base, trimestre=load_file[row,1], demanda_global= load_file[row,2]+load_file[row,7])
    11761135                ## Se crea  o actualiza el objeto de Demanda Agregada Interna luego de validar el valor en la hoja de calculo
    11771136
     
    11991158
    12001159        ## Envia correo electronico al usuario indicando el estatus de la carga de datos
    1201         enviar_correo(user.email, 'gestion.informacion.load.mail', EMAIL_SUBJECT_CM_RESULT, {
     1160        enviar_correo(user.email, 'gestion.informacion.load.mail', EMAIL_SUBJECT_LOAD_DATA, {
    12021161            'load_data_msg': load_data_msg, 'administrador': administrador, 'admin_email': admin_email,
    12031162            'errors': errors
     
    12551214   
    12561215    ## Año base del registro
    1257     anho_base = models.CharField(max_length=4, null=True)
     1216    anho_base = models.ForeignKey(AnhoBase, null=True)
    12581217
    12591218    ## Año al que pertenece el(los) registro(s)
     
    13731332class AgregadosBase(models.Model):
    13741333    """!
    1375     Clase que contiene los registros comunes de los modelos relacionados con la Sub-área Agregados Monetarios
     1334    Clase que contiene los registros comunes de los modelos relacionados con el Sub-área Agregados Monetarios
    13761335
    13771336    @author Edgar A. Linares (elinares at cenditel.gob.ve)
     
    13811340    """
    13821341
     1342    ## Fecha a la que pertenece el registro
     1343    fecha = models.DateField(null=True, verbose_name=_("Fecha"))
     1344
    13831345    ## Semana a la que pertenece el registro
    1384     semana = models.CharField(max_length=2, verbose_name=_("Semana"))
     1346    semana = models.CharField(null=True, max_length=2, verbose_name=_("Semana"))
    13851347
    13861348    ## Mes al que pertenece el registro
    1387     mes = models.CharField(max_length=2, choices=MESES[1:], verbose_name=_("Mes"))
     1349    mes = models.CharField(null=True, max_length=2, choices=MESES[1:], verbose_name=_("Mes"))
    13881350
    13891351    ## Año al que pertenece el registro
    1390     anho = models.CharField(max_length=4, verbose_name=_("Año"))
     1352    anho = models.CharField(null=True, max_length=4, verbose_name=_("Año"))
    13911353
    13921354    class Meta:
     
    14301392                [
    14311393                    {'tag': '', 'cabecera': True},
    1432                     {'tag': str(ReservasBancarias._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 1,'cabecera': True}
     1394                    {'tag': str(AgregadosReservas._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 1,'cabecera': True}
    14331395                ],
    14341396                [
    1435                     {'tag': str(ReservasBancarias._meta.get_field('fecha').verbose_name), 'cabecera': True},
    1436                     {'tag': str(ReservasBancarias._meta.get_field('reservas_bancarias').verbose_name), 'cabecera': True}
     1397                    {'tag': str(AgregadosBase._meta.get_field('fecha').verbose_name), 'cabecera': True},
     1398                    {'tag': str(AgregadosReservas._meta.get_field('reservas_bancarias').verbose_name), 'cabecera': True}
    14371399                ]
    14381400            ]
     
    14431405                [
    14441406                    {'tag': '', 'cabecera': True},
    1445                     {'tag': str(MonetariaUsos._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 4,'cabecera': True}
     1407                    {'tag': str(AgregadosUsos._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 4,'cabecera': True}
    14461408                ],
    14471409                [
    14481410                    {'tag': str(AgregadosBase._meta.get_field('semana').verbose_name), 'cabecera': True},
    1449                     {'tag': str(MonetariaUsos._meta.get_field('depositos_bcu').verbose_name), 'cabecera': True},
    1450                     {'tag': str(MonetariaUsos._meta.get_field('depositos_rsb').verbose_name), 'cabecera': True},
    1451                     {'tag': str(MonetariaUsos._meta.get_field('depositos_ep').verbose_name), 'cabecera': True},
    1452                     {'tag': str(MonetariaUsos._meta.get_field('monedas_billetes').verbose_name), 'cabecera': True}
     1411                    {'tag': str(AgregadosUsos._meta.get_field('depositos_bcu').verbose_name), 'cabecera': True},
     1412                    {'tag': str(AgregadosUsos._meta.get_field('depositos_rsb').verbose_name), 'cabecera': True},
     1413                    {'tag': str(AgregadosUsos._meta.get_field('depositos_ep').verbose_name), 'cabecera': True},
     1414                    {'tag': str(AgregadosUsos._meta.get_field('monedas_billetes').verbose_name), 'cabecera': True}
    14531415                ]
    14541416            ]
     
    14591421                [
    14601422                    {'tag': '', 'cabecera': True},
    1461                     {'tag': str(MonetariaFuentes._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 6,'cabecera': True}
     1423                    {'tag': str(AgregadosFuentes._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 6,'cabecera': True}
    14621424                ],
    14631425                [
    14641426                    {'tag': str(AgregadosBase._meta.get_field('semana').verbose_name), 'cabecera': True},
    1465                     {'tag': str(MonetariaFuentes._meta.get_field('reservas_internacionales').verbose_name), 'cabecera': True},
    1466                     {'tag': str(MonetariaFuentes._meta.get_field('sector_publico').verbose_name), 'cabecera': True},
    1467                     {'tag': str(MonetariaFuentes._meta.get_field('sector_financiero').verbose_name), 'cabecera': True},
    1468                     {'tag': str(MonetariaFuentes._meta.get_field('credito_bcv').verbose_name), 'cabecera': True},
    1469                     {'tag': str(MonetariaFuentes._meta.get_field('otras_cuentas').verbose_name), 'cabecera': True},
    1470                     {'tag': str(MonetariaFuentes._meta.get_field('capital_pagado_reservas').verbose_name), 'cabecera': True}
     1427                    {'tag': str(AgregadosFuentes._meta.get_field('reservas_internacionales').verbose_name), 'cabecera': True},
     1428                    {'tag': str(AgregadosFuentes._meta.get_field('sector_publico').verbose_name), 'cabecera': True},
     1429                    {'tag': str(AgregadosFuentes._meta.get_field('sector_financiero').verbose_name), 'cabecera': True},
     1430                    {'tag': str(AgregadosFuentes._meta.get_field('credito_bcv').verbose_name), 'cabecera': True},
     1431                    {'tag': str(AgregadosFuentes._meta.get_field('otras_cuentas').verbose_name), 'cabecera': True},
     1432                    {'tag': str(AgregadosFuentes._meta.get_field('capital_pagado_reservas').verbose_name), 'cabecera': True}
    14711433                ]
    14721434            ]
    14731435            nombre_archivo = 'Base_monetaria_fuentes'   
    1474         ## Colocar en el archivo de salida las fechas excepto fines de semana segun la selección del usuario
    1475         if any('fecha' in index for index in kwargs):
    1476             inicio=datetime.strptime(kwargs['fecha__gte'], "%d/%m/%Y")
    1477             fin=datetime.strptime(kwargs['fecha__lte'], "%d/%m/%Y")
     1436        if any('reservas_bancarias' in index for index in kwargs):
     1437            ## Si el dominio es reservas bancarias, se agregan al archivo las fechas por días excepto fines de semana
     1438            inicio = datetime.strptime(kwargs['fecha__gte'], "%d/%m/%Y")
     1439            fin = datetime.strptime(kwargs['fecha__lte'], "%d/%m/%Y")
    14781440            delta = timedelta(days=1)
    14791441            while inicio <= fin:
    14801442                if inicio.weekday() < 5:
    1481                     fields.append([ {'tag': str(_(str(inicio.strftime('%d/%m/%Y'))))}])
    1482                 inicio+= delta       
    1483         ## Devuelve los datos correspondientes al archivo a descargar y el nombre de ese archivo   
     1443                    fields.append([{'tag': str(_(str(inicio.strftime('%d/%m/%Y'))))}])
     1444                inicio += delta
     1445        else:
     1446            ## Para los demás dominios, se agregan al archivo las fechas por semanas dentro de las fechas indicadas
     1447            inicio = datetime.strptime(kwargs['fecha__gte'], "%d/%m/%Y")
     1448            if inicio.weekday() != 4:
     1449                inicio = inicio - timedelta(inicio.weekday()) + timedelta(days=4)
     1450            fin = datetime.strptime(kwargs['fecha__lte'], "%d/%m/%Y")
     1451            if fin.weekday() != 4:
     1452                fin = fin - timedelta(fin.weekday()) + timedelta(days=4)
     1453           
     1454            while inicio <= fin:
     1455                fields.append([{'tag': str(_(str(inicio.strftime("%d/%m/%Y"))))}])
     1456                inicio += timedelta(weeks=1)
     1457        ## Devuelve los datos correspondientes al archivo a descargar y el nombre de ese archivo
    14841458        return {'fields': fields, 'output': nombre_archivo}
    14851459
     
    15011475        load_file = pyexcel.get_book(bookdict=kwargs['file_content'])[0]
    15021476        errors, result, message = '', False, ''
    1503         is_reservas_bancarias, is_liquidez_monetaria, is_monetaria_usos, is_monetaria_fuentes = True, True, True, True
     1477        is_reservas_bancarias, is_liquidez_monetaria, is_monetaria_usos, is_monetaria_fuentes = False, False, False, False
    15041478        load_data_msg = str(_("Datos Cargados"))
    15051479
     
    15201494        if is_liquidez_monetaria and (load_file.row[0][1] == str(AgregadosMonetarios._meta.verbose_name)):
    15211495            result = True
    1522         elif is_reservas_bancarias and (load_file.row[0][1] == str(ReservasBancarias._meta.verbose_name)):
     1496        elif is_reservas_bancarias and (load_file.row[0][1] == str(AgregadosReservas._meta.verbose_name)):
    15231497            result = True
    1524         elif is_monetaria_usos and (load_file.row[0][1] == str(MonetariaUsos._meta.verbose_name)):
     1498        elif is_monetaria_usos and (load_file.row[0][1] == str(AgregadosUsos._meta.verbose_name)):
    15251499            result = True
    1526         elif is_monetaria_fuentes and (load_file.row[0][1] == str(MonetariaFuentes._meta.verbose_name)):
     1500        elif is_monetaria_fuentes and (load_file.row[0][1] == str(AgregadosFuentes._meta.verbose_name)):
    15271501            result = True
    15281502
     
    15411515        for row in load_file.row[2:]:
    15421516            try:
    1543                 # Asigna la semana del registro
    1544                 semana = row[0] if not is_reservas_bancarias else None
    1545 
    1546                 # Asigna el mes del registro
    1547                 mes = 10
    1548 
    1549                 # Asigna el año del registro
    1550                 anho = 100
    1551 
    1552                 # Asigna la fecha del registro
    1553                 fecha = fecha=datetime.strptime(row[0], "%d/%m/%Y")
    1554                 #datetime(int(anho), int(mes), 1) if is_reservas_bancarias else 1000
    1555 
    1556                 # Gestión para los datos básicos de Agregados Monetarios
    1557                 agregados, created = AgregadosBase.objects.update_or_create(semana=semana, mes=mes, anho=anho)
     1517                ## Asigna la fecha del registro
     1518                fecha = datetime.strptime(row[0], "%d/%m/%Y")
     1519
     1520                ## Separa la fecha para obtener mes y año
     1521                f = row[0].split('/')
     1522
     1523                ## Obtiene la semana respecto al año
     1524                semana = fecha.isocalendar()[1]
     1525               
     1526                ## Gestión para los datos básicos de Agregados Monetarios
     1527                agregados, created = AgregadosBase.objects.update_or_create(fecha=fecha, semana=semana, mes=f[1], anho=f[2])
    15581528
    15591529                if is_liquidez_monetaria:
    15601530                    ## Gestión de datos para la categoría Agregados Monetarios
    1561                     AgregadosMonetarios.objects.update_or_create(agregados = agregados, default={
    1562                         'monedas_billetes': chek_val_data(row[1]),
    1563                         'depositos_vista': chek_val_data(row[2]),
    1564                         'depositos_ahorro': chek_val_data(row[3]),
    1565                         'depositos_plazo': chek_val_data(row[4]),
    1566                         'cuasidinero': chek_val_data(row[5]),
    1567                         'cedulas_hipotecarias': chek_val_data(row[6])
     1531                    AgregadosMonetarios.objects.update_or_create(agregados = agregados, defaults={
     1532                        'monedas_billetes': check_val_data(row[1]),
     1533                        'depositos_vista': check_val_data(row[2]),
     1534                        'depositos_ahorro': check_val_data(row[3]),
     1535                        'depositos_plazo': check_val_data(row[4]),
     1536                        'cuasidinero': check_val_data(row[5]),
     1537                        'cedulas_hipotecarias': check_val_data(row[6])
    15681538                    })
    15691539                elif is_reservas_bancarias:
    15701540                    ## Gestión de datos para la categoría Reservas Bancarias
    1571                     ReservasBancarias.objects.update_or_create(agregados = agregados, default={
    1572                         'fecha': fecha,
    1573                         'reservas_bancarias': chek_val_data(row[1])
     1541                    AgregadosReservas.objects.update_or_create(agregados = agregados, defaults={
     1542                        'reservas_bancarias': check_val_data(row[1])
    15741543                    })
    15751544                elif is_monetaria_usos:
    15761545                    ## Gestión de datos para la categoría Base Monetaria Usos
    1577                     MonetariaUsos.objects.update_or_create(agregados = agregados, default={
    1578                         'depositos_bcu': chek_val_data(row[1]),
    1579                         'depositos_rsb': chek_val_data(row[2]),
    1580                         'depositos_ep': chek_val_data(row[3]),
    1581                         'monedas_billetes': chek_val_data(row[4])
     1546                    AgregadosUsos.objects.update_or_create(agregados = agregados, defaults={
     1547                        'depositos_bcu': check_val_data(row[1]),
     1548                        'depositos_rsb': check_val_data(row[2]),
     1549                        'depositos_ep': check_val_data(row[3]),
     1550                        'monedas_billetes': check_val_data(row[4])
    15821551                    })
    15831552                elif is_monetaria_fuentes:
    15841553                    ## Gestión de datos para la categoría Base Monetaria Fuentes
    1585                     MonetariaFuentes.objects.update_or_create(agregados = agregados, default={
    1586                         'reservas_internacionales': chek_val_data(row[1]),
    1587                         'sector_publico': chek_val_data(row[2]),
    1588                         'sector_financiero': chek_val_data(row[3]),
    1589                         'credito_bcv': chek_val_data(row[4]),
    1590                         'otras_cuentas': chek_val_data(row[5]),
    1591                         'capital_pagado_reservas': chek_val_data(row[6])
     1554                    AgregadosFuentes.objects.update_or_create(agregados = agregados, defaults={
     1555                        'reservas_internacionales': check_val_data(row[1]),
     1556                        'sector_publico': check_val_data(row[2]),
     1557                        'sector_financiero': check_val_data(row[3]),
     1558                        'credito_bcv': check_val_data(row[4]),
     1559                        'otras_cuentas': check_val_data(row[5]),
     1560                        'capital_pagado_reservas': check_val_data(row[6])
    15921561                    })
    15931562            except Exception as e:
     
    16541623
    16551624@python_2_unicode_compatible
    1656 class ReservasBancarias(models.Model):
     1625class AgregadosReservas(models.Model):
    16571626    """!
    16581627    Clase que contiene los registros de la categoría reservas bancarias de la sub-área Agregados Monetarios
     
    16631632    @version 1.0.0
    16641633    """
    1665    
    1666     ## Fecha a la que pertenece el registro
    1667     fecha = models.DateField(null=True, verbose_name=_("Fecha"))
    16681634
    16691635    ## Reservas Bancarias
     
    16791645
    16801646@python_2_unicode_compatible
    1681 class MonetariaUsos(models.Model):
     1647class AgregadosUsos(models.Model):
    16821648    """!
    16831649    Clase que contiene los registros de la categoría base monetaria usos de la sub-área Agregados Monetarios
     
    17161682
    17171683@python_2_unicode_compatible
    1718 class MonetariaFuentes(models.Model):
     1684class AgregadosFuentes(models.Model):
    17191685    """!
    17201686    Clase que contiene los registros de la categoría base monetaria fuentes de la sub-área Agregados Monetarios
     
    17781744   
    17791745    ## Semana a la que pertenece el registro
    1780     semana = models.CharField(max_length=2, verbose_name=_("Semana"))
     1746    semana = models.CharField(null=True, max_length=2, verbose_name=_("Semana"))
    17811747
    17821748    ## Mes al que pertenece el registro
    1783     mes = models.CharField(max_length=2, choices=MESES[1:], verbose_name=_("Mes"))
     1749    mes = models.CharField(null=True, max_length=2, choices=MESES[1:], verbose_name=_("Mes"))
    17841750
    17851751    ## Año al que pertenece el registro
    1786     anho = models.CharField(max_length=4, verbose_name=_("Año"))
     1752    anho = models.CharField(null=True, max_length=4, verbose_name=_("Año"))
    17871753
    17881754    class Meta:
     
    18081774                [
    18091775                    {'tag': '', 'cabecera': True},
    1810                     {'tag': str(PrincipalesBancos._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 3, 'cabecera': True}
     1776                    {'tag': str(TasasBancos._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 3, 'cabecera': True}
    18111777                ],
    18121778                [
    18131779                    {'tag': str(TasasInteres._meta.get_field('semana').verbose_name), 'cabecera': True},
    1814                     {'tag': str(PrincipalesBancos._meta.get_field('operaciones_activas').verbose_name), 'cabecera': True},
    1815                     {'tag': str(PrincipalesBancos._meta.get_field('depositos_90_dias').verbose_name), 'cabecera': True},
    1816                     {'tag': str(PrincipalesBancos._meta.get_field('depositos_ahorro').verbose_name), 'cabecera': True}
     1780                    {'tag': str(TasasBancos._meta.get_field('operaciones_activas').verbose_name), 'cabecera': True},
     1781                    {'tag': str(TasasBancos._meta.get_field('depositos_90_dias').verbose_name), 'cabecera': True},
     1782                    {'tag': str(TasasBancos._meta.get_field('depositos_ahorro').verbose_name), 'cabecera': True}
    18171783                ]
    18181784            ]
     
    18241790                [
    18251791                    {'tag': '', 'cabecera': True},
    1826                     {'tag': str(_('Tasas de Bancos Comerciales y Universales')), 'color': 'orange', 'text_color': 'white', 'combine': 4, 'cabecera': True},
     1792                    {'tag': str(TasaActiva._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 4, 'cabecera': True},
    18271793                    {'tag': str(_('Por Actividad Económica')), 'color': 'green', 'text_color': 'white', 'combine': 13, 'cabecera': True},
    18281794                    {'tag': str(_('Condición Jurídica')), 'color': 'ocean_blue', 'text_color': 'white', 'combine': 2, 'cabecera': True}
     
    18751841            ## Asigna el nombre del archivo a descargar
    18761842            nombre_archivo = 'Tasas_pasiva'
    1877         ## Colocar en el archivo de salida las fechas excepto fines de semana segun la selección del usuario
    1878         if any('fecha' in index for index in kwargs):
    1879             inicio=datetime.strptime(kwargs['fecha__gte'], "%d/%m/%Y")
    1880             fin=datetime.strptime(kwargs['fecha__lte'], "%d/%m/%Y")
     1843
     1844        if any('tasa_pb' in index for index in kwargs):
     1845            ## Para el dominio Principales Bancos, se agregan al archivo las fechas por semanas dentro de las fechas indicadas
     1846            inicio = datetime.strptime(kwargs['fecha__gte'], "%d/%m/%Y")
     1847            if inicio.weekday() != 4:
     1848                inicio = inicio - timedelta(inicio.weekday()) + timedelta(days=4)
     1849            fin = datetime.strptime(kwargs['fecha__lte'], "%d/%m/%Y")
     1850            if fin.weekday() != 4:
     1851                fin = fin - timedelta(fin.weekday()) + timedelta(days=4)
     1852           
     1853            while inicio <= fin:
     1854                fields.append([{'tag': str(_(str(inicio.strftime("%d/%m/%Y"))))}])
     1855                inicio += timedelta(weeks=1)
     1856        else:
     1857            ## Para los demás dominios, se agregan al archivo las fechas por días excepto fines de semana
     1858            inicio = datetime.strptime(kwargs['fecha__gte'], "%d/%m/%Y")
     1859            fin = datetime.strptime(kwargs['fecha__lte'], "%d/%m/%Y")
    18811860            delta = timedelta(days=1)
    18821861            while inicio <= fin:
    18831862                if inicio.weekday() < 5:
    1884                     fields.append([ {'tag': str(_(str(inicio.strftime('%d/%m/%Y'))))}])
    1885                 inicio+= delta
     1863                    fields.append([{'tag': str(_(str(inicio.strftime('%d/%m/%Y'))))}])
     1864                inicio += delta
     1865
    18861866        ## Devuelve los datos correspondientes al archivo a descargar y el nombre de ese archivo
    18871867        return {'fields': fields, 'output': nombre_archivo}
     
    19191899
    19201900        ## Valida que el archivo corresponde a lo indicado en los parámetros del formulario
    1921         if is_tasa_pb and (load_file.row[0][1] == str(PrincipalesBancos._meta.verbose_name)):
     1901        if is_tasa_pb and (load_file.row[0][1] == str(TasasBancos._meta.verbose_name)):
    19221902            result = True
    1923         elif is_tasa_activa and (load_file.row[0][1] == str(_('Tasas de Bancos Comerciales y Universales'))):
     1903        elif is_tasa_activa and (load_file.row[0][1] == str(TasaActiva._meta.verbose_name)):
    19241904            result = True
    19251905        elif is_tasa_pasiva and (load_file.row[0][1] == str(TasaPasiva._meta.verbose_name)):
     
    19401920        for row in load_file.row[2:]:
    19411921            try:
    1942                 ## Asigna la semana del registro
    1943                 semana = 1
    1944                 #row[0] if is_tasa_pb else None
    1945 
    1946                 ## Asigna el mes del registro
    1947                 mes = None
    1948 
    1949                 ## Asigna el año del registro
    1950                 anho = None
    1951 
    19521922                ## Asigna la fecha del registro
    19531923                fecha = datetime.strptime(row[0], "%d/%m/%Y")
    19541924
     1925                ## Separa la fecha para obtener mes y año
     1926                f = row[0].split('/')
     1927
     1928                ## Obtiene la semana respecto al año
     1929                semana = fecha.isocalendar()[1]
     1930
    19551931                ## Gestión para los datos básicos de Tasas de Interés
    1956                 tasas, created = TasasInteres.objects.update_or_create(fecha=fecha, semana=semana, mes=mes, anho=anho)
     1932                tasas, created = TasasInteres.objects.update_or_create(fecha=fecha, semana=semana, mes=f[1], anho=f[2])
    19571933
    19581934                if is_tasa_pb:
    19591935                    ## Gestión de datos para la categoría Seis Principales Bancos
    1960                     PrincipalesBancos.objects.update_or_create(tasas=tasas, defaults={
     1936                    TasasBancos.objects.update_or_create(tasas=tasas, defaults={
    19611937                        'operaciones_activas': check_val_data(row[1]),
    19621938                        'depositos_90_dias': check_val_data(row[2]),
     
    19751951                        'servicios': check_val_data(row[8]),
    19761952                        'creditos_hipotecarios': check_val_data(row[9]),
    1977                         'transporte_alimento': check_val_data(row[10]),
     1953                        'transporte_almacenamiento': check_val_data(row[10]),
    19781954                        'turismo': check_val_data(row[11]),
    19791955                        'comunicaciones': check_val_data(row[12]),
     
    20151991
    20161992@python_2_unicode_compatible
    2017 class PrincipalesBancos(models.Model):
     1993class TasasBancos(models.Model):
    20181994    """!
    20191995    Clase que contiene los registros de la categoría Seis Principales Bancos de la sub-área Tasas de Interés
     
    21562132
    21572133    class Meta:
    2158         verbose_name = _('Tasa de Interés Activa')
     2134        verbose_name = _('Tasas de Bancos Comerciales y Universales')
    21592135
    21602136@python_2_unicode_compatible
     
    22182194
    22192195    class Meta:
    2220         verbose_name = _('Tasa de Interés Activa')
     2196        verbose_name = _('Tasa de Interés Pasiva')
    22212197
    22222198#-----------------------------Economía - Externo - Reservas, Tipo de Cambio
     
    24202396   
    24212397    ## Año base del registro
    2422     anho_base = models.CharField(max_length=4, null=True)
     2398    anho_base = models.ForeignKey(AnhoBase, null=True)
    24232399
    24242400    ## Año al que pertenece el(los) registro(s)
     
    25312507        anho_base = kwargs['anho_base'] if 'anho_base' in kwargs else ''
    25322508       
    2533         # Almacena los datos de año y trimestre inicial provenientes del formulario
     2509        ## Almacena los datos de año y trimestre inicial provenientes del formulario
    25342510        anho_ini = int(kwargs['anho__gte'])
    25352511        trimestre_ini = int(kwargs['trimestre__gte'])
    25362512
    2537         # Genera los años y trimestres correspondientes a los parámetros del formulario
     2513        ## Genera los años y trimestres correspondientes a los parámetros del formulario
    25382514        registros = []
    25392515        while True:
     
    26422618                    registros.append({'tag':balanza_datos_is.privado_petroleo})
    26432619                    registros.append({'tag':balanza_datos_is.privado_no_petroleo})
    2644             # Agrega los datos a la nueva fila del archivo a generar
     2620            ## Agrega los datos a la nueva fila del archivo a generar
    26452621            fields.append(registros)
    26462622            if (anho_ini == int(kwargs['anho__lte']) and trimestre_ini == int(kwargs['trimestre__lte'])):
     
    27962772
    27972773
    2798         # Envia correo electronico al usuario indicando el estatus de la carga de datos
     2774        ## Envia correo electronico al usuario indicando el estatus de la carga de datos
    27992775        enviar_correo(user.email, 'gestion.informacion.load.mail', EMAIL_SUBJECT_LOAD_DATA, {
    28002776            'load_data_msg': load_data_msg, 'administrador': administrador, 'admin_email': admin_email,
     
    30593035            fields.append(sub_header)
    30603036       
    3061         # Almacena los datos de año y trimestre inicial provenientes del formulario
     3037        ## Almacena los datos de año y trimestre inicial provenientes del formulario
    30623038        anho_ini = int(kwargs['anho__gte'])
    30633039        trimestre_ini = int(kwargs['trimestre__gte'])
     
    30663042            registros = [({'tag': anho_ini})]
    30673043            registros.append({'tag': trimestre_ini})
    3068             # Agrega los datos a la nueva fila del archivo a generar
     3044            ## Agrega los datos a la nueva fila del archivo a generar
    30693045            if(kwargs['dominio']=='BP'):
    30703046                cuenta_capital_base = CuentaCapitalBalanzaBase.objects.filter(anho=anho_ini,trimestre=trimestre_ini)
     
    33573333
    33583334
    3359         # Envia correo electronico al usuario indicando el estatus de la carga de datos
     3335        ## Envia correo electronico al usuario indicando el estatus de la carga de datos
    33603336        enviar_correo(user.email, 'gestion.informacion.load.mail', EMAIL_SUBJECT_LOAD_DATA, {
    33613337            'load_data_msg': load_data_msg, 'administrador': administrador, 'admin_email': admin_email,
Nota: Vea TracChangeset para ayuda en el uso del visor de conjuntos de cambios.