- Fecha y hora:
- 21/08/2017 10:31:14 (hace 7 años)
- Branches:
- master
- Children:
- 396acb9
- Parents:
- f0200a9
- Fichero:
-
- 1 editado
Leyenda
- No modificado
- Añadido
- Eliminado
-
economico/models.py
r64cb313 re39619b 27 27 ) 28 28 from base.functions import enviar_correo, check_val_data 29 from base.models import AnhoBase 29 30 30 31 import pyexcel … … 43 44 class Precios(models.Model): 44 45 ## Año base del registro 45 anho_base = models. CharField(max_length=4, null=True)46 anho_base = models.ForeignKey(AnhoBase, null=True) 46 47 47 48 ## Año al que pertenece el(los) registro(s) … … 59 60 ## Registro del mes y año 60 61 fecha = models.DateField(null=True, verbose_name=_("Fecha")) 61 62 class Meta:63 unique_together = ("anho", "mes")64 62 65 63 def gestion_init(self, *args, **kwargs): … … 68 66 69 67 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 68 @author Ing. Luis Barrios (lbarrios at cenditel.gob.ve) 70 69 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 71 70 @date 05-12-2016 71 @date 09-08-2017 72 72 @param self <b>{object}</b> Objeto que instancia la clase 73 73 @param args <b>{tupla}</b> Tupla con argumentos opcionales … … 90 90 [ 91 91 {'tag': str(_('Año')), 'cabecera': True}, {'tag': str(_('Mes')), 'cabecera': True}, {'tag': str(_('INPC')), 'cabecera': True}, 92 92 93 {'tag': str(_('(1) Alimentos y Bebidas no Alcoholicas')), 'cabecera': True}, 93 94 {'tag': str(_('(2) Bebidas Alcoholicas y Tabaco')), 'cabecera': True}, … … 103 104 {'tag': str(_('(12) Restaurant y Hotel')), 'cabecera': True}, 104 105 {'tag': str(_('(13) Bienes y Servicios Diversos')), 'cabecera': True}, 106 105 107 {'tag': str(_('Bienes durables')), 'cabecera': True}, 106 108 {'tag': str(_('Bienes semidurables')), 'cabecera': True}, 107 109 {'tag': str(_('Bienes no durables')), 'cabecera': True}, 110 108 111 {'tag': str(_('Bienes')), 'cabecera': True}, 109 112 {'tag': str(_('Agrícolas')), 'cabecera': True}, … … 111 114 {'tag': str(_('Agroindustrial')), 'cabecera': True}, 112 115 {'tag': str(_('Otros manufacturados')), 'cabecera': True}, 116 113 117 {'tag': str(_('Total Servicios')), 'cabecera': True}, 114 118 {'tag': str(_('Servicios Básicos')), 'cabecera': True}, 115 119 {'tag': str(_('Otros Servicios')), 'cabecera': True}, 120 116 121 {'tag': str(_('Núcleo Inflacionario (NI)')), 'cabecera': True}, 117 122 {'tag': str(_('Alimentos Elaborados')), 'cabecera': True}, … … 119 124 {'tag': str(_('Bienes industriales excepto alimentos y textiles')), 'cabecera': True}, 120 125 {'tag': str(_('Servicios no administrados')), 'cabecera': True}, 126 121 127 {'tag': str(_('Controlados')), 'cabecera': True}, 122 128 {'tag': str(_('No Controlados')), 'cabecera': True} … … 127 133 dominio, data_type = str(_('INPC')), 'N' 128 134 129 # Condición para filtrar y mostrar la información según la selección del usuario135 ## Condición para filtrar y mostrar la información según la selección del usuario 130 136 if 'dominio' in kwargs: 131 137 if kwargs['dominio'] == 'N': 132 138 kwargs['dominio'] = None 133 139 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 134 158 else: 135 159 dominio, data_type = str(_('Ciudad')), 'C' 136 160 kwargs['ciudad__in'] = kwargs.pop('dominio') 137 161 kwargs['ciudad__in'] = [d for d in DOMINIO[1:][0]] 138 # Agrega la columna correspondiente a las ciudades162 ## Agrega la columna correspondiente a las ciudades 139 163 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}]) 210 189 211 190 return {'fields': fields, 'output': 'precios'} … … 216 195 217 196 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 197 @author Ing. Luis Barrios (lbarrios at cenditel.gob.ve) 218 198 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 219 199 @date 05-12-2016 200 @date 09-08-2017 220 201 @param self <b>{object}</b> Objeto que instancia la clase 221 202 @param file <b>{string}</b> Ruta y nombre del archivo a gestionar … … 226 207 """ 227 208 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, '' 229 210 load_data_msg = str(_("Datos Cargados")) 230 211 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']) 238 213 239 214 for row in load_file.row[2:]: 240 215 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 254 231 inpc = row[3] if ciudad else row[2] 255 232 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 260 234 fecha = datetime(int(anho), int(mes), 1) 261 235 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 281 237 real_p, created = Precios.objects.update_or_create( 282 238 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 } 284 240 ) 285 241 286 287 # Gestión de datos para el Índice por Grupos 242 ## Gestión de datos para el Índice por Grupos 288 243 PreciosGrupo.objects.update_or_create(real_precios=real_p, defaults={ 289 244 'base': base, … … 303 258 }) 304 259 305 # Gestión de datos para el Índice por Sector de Origen260 ## Gestión de datos para el Índice por Sector de Origen 306 261 PreciosSector.objects.update_or_create(real_precios=real_p, defaults={ 307 262 'base': base, … … 311 266 }) 312 267 313 # Gestión de datos para el Índice por Naturaleza y Durabilidad268 ## Gestión de datos para el Índice por Naturaleza y Durabilidad 314 269 PreciosNaturaleza.objects.update_or_create(real_precios=real_p, defaults={ 315 270 'base': base, … … 321 276 }) 322 277 323 # Gestión de datos para el Índice por Servicios278 ## Gestión de datos para el Índice por Servicios 324 279 PreciosServicios.objects.update_or_create(real_precios=real_p, defaults={ 325 280 'base': base, … … 329 284 }) 330 285 331 # Gestion de datos para el Índice por Núcleo Inflacionario286 ## Gestion de datos para el Índice por Núcleo Inflacionario 332 287 PreciosInflacionario.objects.update_or_create(real_precios=real_p, defaults={ 333 288 'base': base, … … 339 294 }) 340 295 341 # Gestión de datos para el Índice de Productos Controlados y No Controlados296 ## Gestión de datos para el Índice de Productos Controlados y No Controlados 342 297 PreciosProductos.objects.update_or_create(real_precios=real_p, defaults={ 343 298 'base': base, … … 412 367 ) 413 368 414 re taurant_hotel = models.DecimalField(369 restaurant_hotel = models.DecimalField( 415 370 max_digits=18, decimal_places=2, default=0.0, verbose_name=_("(12) Restaurant y Hotel") 416 371 ) … … 565 520 566 521 ## Año base del registro 567 anho_base = models.CharField(max_length=4, null=True)522 anho_base = models.ForeignKey(AnhoBase, null=True) 568 523 569 524 ## Año al que pertenece el(los) registro(s) 570 525 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')) 571 529 572 530 ## Valor de los registros si son nominales, en caso contrario almacena False … … 656 614 {'tag': '', 'cabecera': True}, 657 615 {'tag': '', 'cabecera': True}, 658 {'tag': str(PIBActividad._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 1 8, 'cabecera': True}616 {'tag': str(PIBActividad._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 17, 'cabecera': True} 659 617 ], 660 618 [ … … 662 620 {'tag': str(PIBActividad._meta.get_field('total_consolidado').verbose_name), 'color': 'indigo', 'text_color': 'white', 'cabecera': True}, 663 621 {'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', 'c ombine': 2, 'cabecera': True},622 {'tag': str(PIBActividad._meta.get_field('total_no_petrolera').verbose_name), 'color': 'ocean_blue', 'text_color': 'white', 'cabecera': True}, 665 623 {'tag': str(PIBActividad._meta.get_field('mineria').verbose_name), 'color': 'gray25', 'text_color': 'white', 'cabecera': True}, 666 624 {'tag': str(PIBActividad._meta.get_field('manufactura').verbose_name), 'cabecera': True}, … … 679 637 ] 680 638 ] 681 # Asigna el nombre del archivo a descargar639 ## Asigna el nombre del archivo a descargar 682 640 nombre_archivo = 'PIB-Actividad_economica' 683 641 … … 696 654 ] 697 655 ] 698 # Asigna el nombre del archivo a descargar656 ## Asigna el nombre del archivo a descargar 699 657 nombre_archivo = 'PIB-Institucional' 700 658 … … 709 667 diff_anhos = int(kwargs['anho__lte']) - int(kwargs['anho__gte']) + 1 710 668 if any('trimestre' in index for index in kwargs): 711 fields[1].insert(1, {'tag': str(PIB Actividad._meta.get_field('trimestre').verbose_name), 'cabecera': True})712 # Almacena los datos de año y trimestre inicial provenientes del formulario669 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 713 671 anho_ini = int(kwargs['anho__gte']) 714 672 trimestre_ini = int(kwargs['trimestre__gte']) 715 673 716 # Genera los años y trimestres correspondientes a los parámetros del formulario674 ## Genera los años y trimestres correspondientes a los parámetros del formulario 717 675 registros = [] 718 676 while True: 719 677 registros = [({'tag': anho_ini})] 720 678 registros.append({'tag': trimestre_ini}) 721 # Agrega los datos a la nueva fila del archivo a generar679 ## Agrega los datos a la nueva fila del archivo a generar 722 680 fields.append(registros) 723 681 if (anho_ini == int(kwargs['anho__lte']) and trimestre_ini == int(kwargs['trimestre__lte'])): … … 728 686 trimestre_ini += 1 729 687 else: 730 # Almacena los años de los registros a descargar688 ## Almacena los años de los registros a descargar 731 689 for i in range(diff_anhos): 732 690 registros = [({'tag': int(kwargs['anho__gte']) + i})] 733 # Agrega los datos a la nueva fila del archivo a generar691 ## Agrega los datos a la nueva fila del archivo a generar 734 692 fields.append(registros) 735 693 ## Devuelve los datos correspondientes al archivo a descargar y el nombre de ese archivo … … 754 712 755 713 load_file = pyexcel.get_book(bookdict=kwargs['file_content'])[0] 756 anho _base, i, col_ini, errors, result, message, is_nominal = '', 0, 2, '', False, '', False714 anhos_base, anho_b, errors, result, message, is_nominal = [], None, '', False, '', False 757 715 is_demanda, is_produccion, is_actividad, is_sector = False, False, False, False 758 716 load_data_msg = str(_("Datos Cargados")) … … 794 752 'message': str(_("El documento a cargar no es válido o no corresponde a los parámetros seleccionados")) 795 753 } 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 798 761 ## En base al archivo cargado, se validan y cargan a la base de datos los valores contenidos en el archivo 799 762 for row in load_file.row[2:]: 800 763 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 805 765 anho = row[0] 806 766 807 # Condición que indica si el registro corresponde al año base808 base = True if i == 0else False809 810 # Almacena el valor en caso de tratarse del archivo PIB-Nominal_demanda o False en caso contrario767 ## 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 811 771 nominal = row[1] if (is_nominal and is_demanda) else None 812 772 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) 815 778 816 779 if is_demanda: 817 # Gestión de datos para el Índice por Demanda780 ## Gestión de datos para el Índice por Demanda 818 781 PIBDemanda.objects.update_or_create(pib=real_pib, defaults={ 819 782 'base': base, … … 824 787 }) 825 788 elif is_produccion: 826 # Gestión de datos para el Índice por Producción789 ## Gestión de datos para el Índice por Producción 827 790 PIBProduccion.objects.update_or_create(pib=real_pib, defaults={ 828 791 'base': base, … … 832 795 }) 833 796 elif is_actividad: 834 # Gestión de datos para el ïndice por Actividad Económica797 ## Gestión de datos para el ïndice por Actividad Económica 835 798 PIBActividad.objects.update_or_create(pib=real_pib, defaults={ 836 799 'base': base, 837 'trimestre': check_val_data(row[1]),838 800 'total_consolidado': check_val_data(row[2]), 839 801 'total_petrolera': check_val_data(row[3]), … … 855 817 }) 856 818 elif is_sector: 857 # Gestión de datos para el Índice por Sector Institucional819 ## Gestión de datos para el Índice por Sector Institucional 858 820 PIBInstitucion.objects.update_or_create(pib=real_pib, defaults={ 859 821 'base': base, 860 'trimestre': check_val_data(row[1]),861 822 'publico': check_val_data(row[2]), 862 823 'privado': check_val_data(row[3]) … … 865 826 except Exception as e: 866 827 errors += "- %s\n" % str(e) 867 i += 1868 828 869 829 if errors: … … 965 925 """ 966 926 967 trimestre = models.CharField(max_length=1, null=True, blank=True, verbose_name=_('Trimestre'))968 969 927 total_consolidado = models.DecimalField( 970 928 max_digits=18, decimal_places=2, default=0.0, verbose_name=_("PIB Consolidado") … … 1064 1022 @version 1.0.0 1065 1023 """ 1066 1067 trimestre = models.CharField(max_length=1, null=True, blank=True, verbose_name=_('Trimestre'))1068 1024 1069 1025 publico = models.DecimalField( … … 1088 1044 1089 1045 ## Año base del registro 1090 anho_base = models. CharField(max_length=4, null=True)1046 anho_base = models.ForeignKey(AnhoBase, null=True) 1091 1047 1092 1048 ## Año al que pertenece el(los) registro(s) … … 1170 1126 anho_base, errors, result, message = '', '', True, '' 1171 1127 load_data_msg = str(_("Datos Cargados")) 1128 1129 self.anho_base=AnhoBase.objects.get(id=kwargs['anho_base']) 1130 1172 1131 for row in range(1,len(load_file.row_range())): 1173 1132 1174 1133 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]) 1176 1135 ## Se crea o actualiza el objeto de Demanda Agregada Interna luego de validar el valor en la hoja de calculo 1177 1136 … … 1199 1158 1200 1159 ## 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, { 1202 1161 'load_data_msg': load_data_msg, 'administrador': administrador, 'admin_email': admin_email, 1203 1162 'errors': errors … … 1255 1214 1256 1215 ## Año base del registro 1257 anho_base = models. CharField(max_length=4, null=True)1216 anho_base = models.ForeignKey(AnhoBase, null=True) 1258 1217 1259 1218 ## Año al que pertenece el(los) registro(s) … … 1373 1332 class AgregadosBase(models.Model): 1374 1333 """! 1375 Clase que contiene los registros comunes de los modelos relacionados con laSub-área Agregados Monetarios1334 Clase que contiene los registros comunes de los modelos relacionados con el Sub-área Agregados Monetarios 1376 1335 1377 1336 @author Edgar A. Linares (elinares at cenditel.gob.ve) … … 1381 1340 """ 1382 1341 1342 ## Fecha a la que pertenece el registro 1343 fecha = models.DateField(null=True, verbose_name=_("Fecha")) 1344 1383 1345 ## 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")) 1385 1347 1386 1348 ## 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")) 1388 1350 1389 1351 ## 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")) 1391 1353 1392 1354 class Meta: … … 1430 1392 [ 1431 1393 {'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} 1433 1395 ], 1434 1396 [ 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} 1437 1399 ] 1438 1400 ] … … 1443 1405 [ 1444 1406 {'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} 1446 1408 ], 1447 1409 [ 1448 1410 {'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} 1453 1415 ] 1454 1416 ] … … 1459 1421 [ 1460 1422 {'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} 1462 1424 ], 1463 1425 [ 1464 1426 {'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} 1471 1433 ] 1472 1434 ] 1473 1435 nombre_archivo = 'Base_monetaria_fuentes' 1474 ## Colocar en el archivo de salida las fechas excepto fines de semana segun la selección del usuario1475 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") 1478 1440 delta = timedelta(days=1) 1479 1441 while inicio <= fin: 1480 1442 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 1484 1458 return {'fields': fields, 'output': nombre_archivo} 1485 1459 … … 1501 1475 load_file = pyexcel.get_book(bookdict=kwargs['file_content'])[0] 1502 1476 errors, result, message = '', False, '' 1503 is_reservas_bancarias, is_liquidez_monetaria, is_monetaria_usos, is_monetaria_fuentes = True, True, True, True1477 is_reservas_bancarias, is_liquidez_monetaria, is_monetaria_usos, is_monetaria_fuentes = False, False, False, False 1504 1478 load_data_msg = str(_("Datos Cargados")) 1505 1479 … … 1520 1494 if is_liquidez_monetaria and (load_file.row[0][1] == str(AgregadosMonetarios._meta.verbose_name)): 1521 1495 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)): 1523 1497 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)): 1525 1499 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)): 1527 1501 result = True 1528 1502 … … 1541 1515 for row in load_file.row[2:]: 1542 1516 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]) 1558 1528 1559 1529 if is_liquidez_monetaria: 1560 1530 ## Gestión de datos para la categoría Agregados Monetarios 1561 AgregadosMonetarios.objects.update_or_create(agregados = agregados, default ={1562 'monedas_billetes': che k_val_data(row[1]),1563 'depositos_vista': che k_val_data(row[2]),1564 'depositos_ahorro': che k_val_data(row[3]),1565 'depositos_plazo': che k_val_data(row[4]),1566 'cuasidinero': che k_val_data(row[5]),1567 'cedulas_hipotecarias': che k_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]) 1568 1538 }) 1569 1539 elif is_reservas_bancarias: 1570 1540 ## 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]) 1574 1543 }) 1575 1544 elif is_monetaria_usos: 1576 1545 ## Gestión de datos para la categoría Base Monetaria Usos 1577 MonetariaUsos.objects.update_or_create(agregados = agregados, default={1578 'depositos_bcu': che k_val_data(row[1]),1579 'depositos_rsb': che k_val_data(row[2]),1580 'depositos_ep': che k_val_data(row[3]),1581 'monedas_billetes': che k_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]) 1582 1551 }) 1583 1552 elif is_monetaria_fuentes: 1584 1553 ## Gestión de datos para la categoría Base Monetaria Fuentes 1585 MonetariaFuentes.objects.update_or_create(agregados = agregados, default={1586 'reservas_internacionales': che k_val_data(row[1]),1587 'sector_publico': che k_val_data(row[2]),1588 'sector_financiero': che k_val_data(row[3]),1589 'credito_bcv': che k_val_data(row[4]),1590 'otras_cuentas': che k_val_data(row[5]),1591 'capital_pagado_reservas': che k_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]) 1592 1561 }) 1593 1562 except Exception as e: … … 1654 1623 1655 1624 @python_2_unicode_compatible 1656 class ReservasBancarias(models.Model):1625 class AgregadosReservas(models.Model): 1657 1626 """! 1658 1627 Clase que contiene los registros de la categoría reservas bancarias de la sub-área Agregados Monetarios … … 1663 1632 @version 1.0.0 1664 1633 """ 1665 1666 ## Fecha a la que pertenece el registro1667 fecha = models.DateField(null=True, verbose_name=_("Fecha"))1668 1634 1669 1635 ## Reservas Bancarias … … 1679 1645 1680 1646 @python_2_unicode_compatible 1681 class MonetariaUsos(models.Model):1647 class AgregadosUsos(models.Model): 1682 1648 """! 1683 1649 Clase que contiene los registros de la categoría base monetaria usos de la sub-área Agregados Monetarios … … 1716 1682 1717 1683 @python_2_unicode_compatible 1718 class MonetariaFuentes(models.Model):1684 class AgregadosFuentes(models.Model): 1719 1685 """! 1720 1686 Clase que contiene los registros de la categoría base monetaria fuentes de la sub-área Agregados Monetarios … … 1778 1744 1779 1745 ## 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")) 1781 1747 1782 1748 ## 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")) 1784 1750 1785 1751 ## 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")) 1787 1753 1788 1754 class Meta: … … 1808 1774 [ 1809 1775 {'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} 1811 1777 ], 1812 1778 [ 1813 1779 {'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} 1817 1783 ] 1818 1784 ] … … 1824 1790 [ 1825 1791 {'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}, 1827 1793 {'tag': str(_('Por Actividad Económica')), 'color': 'green', 'text_color': 'white', 'combine': 13, 'cabecera': True}, 1828 1794 {'tag': str(_('Condición Jurídica')), 'color': 'ocean_blue', 'text_color': 'white', 'combine': 2, 'cabecera': True} … … 1875 1841 ## Asigna el nombre del archivo a descargar 1876 1842 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") 1881 1860 delta = timedelta(days=1) 1882 1861 while inicio <= fin: 1883 1862 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 1886 1866 ## Devuelve los datos correspondientes al archivo a descargar y el nombre de ese archivo 1887 1867 return {'fields': fields, 'output': nombre_archivo} … … 1919 1899 1920 1900 ## 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)): 1922 1902 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)): 1924 1904 result = True 1925 1905 elif is_tasa_pasiva and (load_file.row[0][1] == str(TasaPasiva._meta.verbose_name)): … … 1940 1920 for row in load_file.row[2:]: 1941 1921 try: 1942 ## Asigna la semana del registro1943 semana = 11944 #row[0] if is_tasa_pb else None1945 1946 ## Asigna el mes del registro1947 mes = None1948 1949 ## Asigna el año del registro1950 anho = None1951 1952 1922 ## Asigna la fecha del registro 1953 1923 fecha = datetime.strptime(row[0], "%d/%m/%Y") 1954 1924 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 1955 1931 ## 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]) 1957 1933 1958 1934 if is_tasa_pb: 1959 1935 ## 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={ 1961 1937 'operaciones_activas': check_val_data(row[1]), 1962 1938 'depositos_90_dias': check_val_data(row[2]), … … 1975 1951 'servicios': check_val_data(row[8]), 1976 1952 'creditos_hipotecarios': check_val_data(row[9]), 1977 'transporte_al imento': check_val_data(row[10]),1953 'transporte_almacenamiento': check_val_data(row[10]), 1978 1954 'turismo': check_val_data(row[11]), 1979 1955 'comunicaciones': check_val_data(row[12]), … … 2015 1991 2016 1992 @python_2_unicode_compatible 2017 class PrincipalesBancos(models.Model):1993 class TasasBancos(models.Model): 2018 1994 """! 2019 1995 Clase que contiene los registros de la categoría Seis Principales Bancos de la sub-área Tasas de Interés … … 2156 2132 2157 2133 class Meta: 2158 verbose_name = _('Tasa de Interés Activa')2134 verbose_name = _('Tasas de Bancos Comerciales y Universales') 2159 2135 2160 2136 @python_2_unicode_compatible … … 2218 2194 2219 2195 class Meta: 2220 verbose_name = _('Tasa de Interés Activa')2196 verbose_name = _('Tasa de Interés Pasiva') 2221 2197 2222 2198 #-----------------------------Economía - Externo - Reservas, Tipo de Cambio … … 2420 2396 2421 2397 ## Año base del registro 2422 anho_base = models. CharField(max_length=4, null=True)2398 anho_base = models.ForeignKey(AnhoBase, null=True) 2423 2399 2424 2400 ## Año al que pertenece el(los) registro(s) … … 2531 2507 anho_base = kwargs['anho_base'] if 'anho_base' in kwargs else '' 2532 2508 2533 # Almacena los datos de año y trimestre inicial provenientes del formulario2509 ## Almacena los datos de año y trimestre inicial provenientes del formulario 2534 2510 anho_ini = int(kwargs['anho__gte']) 2535 2511 trimestre_ini = int(kwargs['trimestre__gte']) 2536 2512 2537 # Genera los años y trimestres correspondientes a los parámetros del formulario2513 ## Genera los años y trimestres correspondientes a los parámetros del formulario 2538 2514 registros = [] 2539 2515 while True: … … 2642 2618 registros.append({'tag':balanza_datos_is.privado_petroleo}) 2643 2619 registros.append({'tag':balanza_datos_is.privado_no_petroleo}) 2644 # Agrega los datos a la nueva fila del archivo a generar2620 ## Agrega los datos a la nueva fila del archivo a generar 2645 2621 fields.append(registros) 2646 2622 if (anho_ini == int(kwargs['anho__lte']) and trimestre_ini == int(kwargs['trimestre__lte'])): … … 2796 2772 2797 2773 2798 # Envia correo electronico al usuario indicando el estatus de la carga de datos2774 ## Envia correo electronico al usuario indicando el estatus de la carga de datos 2799 2775 enviar_correo(user.email, 'gestion.informacion.load.mail', EMAIL_SUBJECT_LOAD_DATA, { 2800 2776 'load_data_msg': load_data_msg, 'administrador': administrador, 'admin_email': admin_email, … … 3059 3035 fields.append(sub_header) 3060 3036 3061 # Almacena los datos de año y trimestre inicial provenientes del formulario3037 ## Almacena los datos de año y trimestre inicial provenientes del formulario 3062 3038 anho_ini = int(kwargs['anho__gte']) 3063 3039 trimestre_ini = int(kwargs['trimestre__gte']) … … 3066 3042 registros = [({'tag': anho_ini})] 3067 3043 registros.append({'tag': trimestre_ini}) 3068 # Agrega los datos a la nueva fila del archivo a generar3044 ## Agrega los datos a la nueva fila del archivo a generar 3069 3045 if(kwargs['dominio']=='BP'): 3070 3046 cuenta_capital_base = CuentaCapitalBalanzaBase.objects.filter(anho=anho_ini,trimestre=trimestre_ini) … … 3357 3333 3358 3334 3359 # Envia correo electronico al usuario indicando el estatus de la carga de datos3335 ## Envia correo electronico al usuario indicando el estatus de la carga de datos 3360 3336 enviar_correo(user.email, 'gestion.informacion.load.mail', EMAIL_SUBJECT_LOAD_DATA, { 3361 3337 '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.