- Fecha y hora:
- 26/04/2017 11:32:28 (hace 7 años)
- Branches:
- master, carga
- Children:
- 7ec3358
- Parents:
- 8abcf1c
- Ubicación:
- economico
- Ficheros:
-
- 4 editados
Leyenda
- No modificado
- Añadido
- Eliminado
-
economico/forms.py
r8abcf1c rf093433 25 25 26 26 from base.constant import ( 27 <<<<<<< HEAD28 27 DOMINIO_PRECIOS, DOMINIO_PIB, DOMINIO_AGREGADO_MONETARIO, TIPO_PIB, TIPO_DEMANDA_GLOBAL, TIPO_OFERTA_GLOBAL, TRIMESTRES, MESES, 29 DOMINIO_COMERCIAL, DOMINIO_CAMBIO30 =======31 DOMINIO_PRECIOS, DOMINIO_PIB, DOMINIO_AGREGADO_MONETARIO, TIPO_PIB, TIPO_DEMANDA_GLOBAL, TRIMESTRES, MESES,32 28 DOMINIO_COMERCIAL, DOMINIO_CAMBIO, DOMINIO_CUENTA_CAPITAL 33 >>>>>>> 8ec1e940e97a174e635684a32f42258a345e81c734 29 ) 35 30 from base.functions import cargar_anho_base … … 333 328 334 329 @python_2_unicode_compatible 335 class RealPIBForm(TipoForm, AnhoBaseForm, DominioForm, AnhoIniForm, AnhoFinForm): 336 """! 337 Clase que contiene el formulario para la carga de datos de precios 338 339 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 340 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 341 @date 19-09-2016 342 @version 1.0.0 343 """ 344 345 def __init__(self, *args, **kwargs): 346 super(RealPIBForm, self).__init__(*args, **kwargs) 330 class PIBForm(TipoForm, AnhoBaseForm, DominioForm, AnhoIniForm, AnhoFinForm, TrimestreIniForm, TrimestreFinForm): 331 """! 332 Clase que contiene el formulario para la carga de datos de PIB 333 334 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 335 @author Edgar A. Linares (elinares at cenditel.gob.ve) 336 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 337 @date 19-09-2016 338 @date 05-04-2017 339 @version 1.0.0 340 """ 341 342 def __init__(self, *args, **kwargs): 343 super(PIBForm, self).__init__(*args, **kwargs) 347 344 self.fields['dominio'].choices = DOMINIO_PIB 348 345 self.fields['tipo'].choices = TIPO_PIB -
economico/models.py
re1fea74 rf093433 552 552 @python_2_unicode_compatible 553 553 class PIB(models.Model): 554 # Año base del registro 554 """! 555 Clase que contiene los registros comunes de los modelos relacionados con el Producto Interno Bruto 556 557 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 558 @author Edgar A. Linares (elinares at cenditel.gob.ve) 559 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 560 @date 05-12-2016 561 @date 05-04-2017 562 @version 1.0.0 563 """ 564 565 ## Año base del registro 555 566 anho_base = models.CharField(max_length=4, null=True) 556 567 568 ## Año al que pertenece el(los) registro(s) 557 569 anho = models.CharField(max_length=4, verbose_name=_("Año")) 558 570 571 ## Valor de los registros si son nominales, en caso contrario almacena False 559 572 nominal = models.DecimalField( 560 573 max_digits=18, decimal_places=2, default=None, null=True, blank=True, verbose_name=_("PIB Nominal") … … 565 578 566 579 def gestion_init(self, *args, **kwargs): 567 fields = [ 568 [ 569 {'tag': '', 'cabecera': True}, 570 {'tag': str(PIBDemanda._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 4,'cabecera': True}, 571 {'tag': str(PIBProduccion._meta.verbose_name), 'color': 'green', 'text_color': 'white', 'combine': 3, 'cabecera': True}, 572 ], 573 [ 574 {'tag': str(_('Año')), 'cabecera': True} 580 """! 581 Método que permite descargar un archivo con los datos a gestionar en base a los parámetros 582 provenientes del template economico.pib.html 583 584 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 585 @author Edgar A. Linares (elinares at cenditel.gob.ve) 586 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 587 @date 05-12-2016 588 @date 05-04-2017 589 @param self <b>{object}</b> Objeto que instancia la clase 590 @param args <b>{tupla}</b> Tupla con argumentos opcionales 591 @param kwargs <b>{dic}</b> Diccionario con filtros opcionales 592 @return Devuelve los datos a incluír en el archivo correspondiente 593 """ 594 595 """! 596 Sección para la selección de los datos del dominio Enfoque Demanda y Enfoque Oferta 597 tanto del tipo Real como Nominal 598 """ 599 if any('pibdemanda' in index for index in kwargs) or any('pibproduccion' in index for index in kwargs): 600 fields = [ 601 [ 602 {'tag': '', 'cabecera': True} 603 ], 604 [ 605 {'tag': str(_('Año')), 'cabecera': True} 606 ] 575 607 ] 576 ] 577 exclude_fields = ['id', 'anho', 'pib_id', 'base'] 578 is_nominal, is_demanda, is_produccion = True, True, True 579 580 if any('nominal' in index for index in kwargs): 581 if kwargs['nominal__isnull'] == "true": 582 kwargs['nominal__isnull'] = True 608 exclude_fields = ['id', 'anho', 'pib_id', 'base'] 609 610 ## Comprobación del tipo de datos a cargar en el archivo 611 if any('nominal' in index for index in kwargs): 612 is_nominal = True 613 else: 583 614 is_nominal = False 584 else: 585 kwargs['nominal__isnull'] = False 586 587 588 if is_nominal: 589 fields[0].insert(1, {'tag': '', 'cabecera': True}) 590 fields[1].extend([{'tag': str(_("PIB Nominal")), 'cabecera': True}]) 591 592 demanda = [ 593 {'tag': str(PIBDemanda._meta.get_field('gasto_consumo').verbose_name), 'cabecera': True}, 594 {'tag': str(PIBDemanda._meta.get_field('formacion_capital').verbose_name), 'cabecera': True}, 595 {'tag': str(PIBDemanda._meta.get_field('exportacion_bienes').verbose_name), 'cabecera': True}, 596 {'tag': str(PIBDemanda._meta.get_field('importacion_bienes').verbose_name), 'cabecera': True} 597 ] 598 599 produccion = [ 600 {'tag': str(PIBProduccion._meta.get_field('valor_agregado').verbose_name), 'cabecera': True}, 601 {'tag': str(PIBProduccion._meta.get_field('impuesto_producto').verbose_name), 'cabecera': True}, 602 {'tag': str(PIBProduccion._meta.get_field('subvencion_productos').verbose_name), 'cabecera': True} 603 ] 604 605 if any('pibdemanda' in index for index in kwargs): 606 kwargs['pibdemanda__isnull'] = False 607 kwargs['pibproduccion__isnull'] = True 608 fields[1].extend(demanda) 609 is_produccion = False 610 elif any('pibproduccion' in index for index in kwargs): 611 kwargs['pibdemanda__isnull'] = True 612 kwargs['pibproduccion__isnull'] = False 613 fields[1].extend(produccion) 614 is_demanda = False 615 616 ## Cabecera para el archivo del dominio Enfoque Demanda 617 demanda = [ 618 {'tag': str(PIBDemanda._meta.get_field('gasto_consumo').verbose_name), 'cabecera': True}, 619 {'tag': str(PIBDemanda._meta.get_field('formacion_capital').verbose_name), 'cabecera': True}, 620 {'tag': str(PIBDemanda._meta.get_field('exportacion_bienes').verbose_name), 'cabecera': True}, 621 {'tag': str(PIBDemanda._meta.get_field('importacion_bienes').verbose_name), 'cabecera': True} 622 ] 623 624 ## Cabecera para el archivo del dominio Enfoque Oferta 625 produccion = [ 626 {'tag': str(PIBProduccion._meta.get_field('valor_agregado').verbose_name), 'cabecera': True}, 627 {'tag': str(PIBProduccion._meta.get_field('impuesto_producto').verbose_name), 'cabecera': True}, 628 {'tag': str(PIBProduccion._meta.get_field('subvencion_productos').verbose_name), 'cabecera': True} 629 ] 630 """! 631 Se incluyen los registros en el archivo a descargar 632 y el nombre del archivo correspondiente 633 """ 634 if any('pibdemanda' in index for index in kwargs): 635 fields[0].insert(1, {'tag': str(PIBDemanda._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 4,'cabecera': True}) 636 fields[1].extend(demanda) 637 if is_nominal: 638 fields[0].insert(1, {'tag': '', 'cabecera': True}) 639 fields[1].insert(1, {'tag': str(_("PIB Nominal")), 'cabecera': True}) 640 nombre_archivo = 'PIB-Nominal_demanda' 641 else: 642 nombre_archivo = 'PIB-Real_demanda' 643 elif any('pibproduccion' in index for index in kwargs): 644 fields[0].insert(1, {'tag': str(PIBProduccion._meta.verbose_name), 'color': 'green', 'text_color': 'white', 'combine': 3, 'cabecera': True}) 645 fields[1].extend(produccion) 646 if is_nominal: 647 nombre_archivo = 'PIB-Nominal_produccion' 648 else: 649 nombre_archivo = 'PIB-Real_produccion' 650 651 ## Sección para la selección de los datos del dominio Actividad Económica 652 if any('pibactividad' in index for index in kwargs): 653 fields = [ 654 [ 655 {'tag': '', 'cabecera': True}, 656 {'tag': '', 'cabecera': True}, 657 {'tag': str(PIBActividad._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 18, 'cabecera': True} 658 ], 659 [ 660 {'tag': str(_('Año')), 'cabecera': True}, 661 {'tag': str(PIBActividad._meta.get_field('total_consolidado').verbose_name), 'color': 'indigo', 'text_color': 'white', 'cabecera': True}, 662 {'tag': str(PIBActividad._meta.get_field('total_petrolera').verbose_name), 'color': 'green', 'text_color': 'white', 'cabecera': True}, 663 {'tag': str(PIBActividad._meta.get_field('total_no_petrolera').verbose_name), 'color': 'ocean_blue', 'text_color': 'white', 'combine': 2, 'cabecera': True}, 664 {'tag': str(PIBActividad._meta.get_field('mineria').verbose_name), 'color': 'gray25', 'text_color': 'white', 'cabecera': True}, 665 {'tag': str(PIBActividad._meta.get_field('manufactura').verbose_name), 'cabecera': True}, 666 {'tag': str(PIBActividad._meta.get_field('electricidad_agua').verbose_name), 'cabecera': True}, 667 {'tag': str(PIBActividad._meta.get_field('construccion').verbose_name), 'cabecera': True}, 668 {'tag': str(PIBActividad._meta.get_field('comercio_servicios').verbose_name), 'cabecera': True}, 669 {'tag': str(PIBActividad._meta.get_field('transporte_almacenamiento').verbose_name), 'cabecera': True}, 670 {'tag': str(PIBActividad._meta.get_field('comunicaciones').verbose_name), 'cabecera': True}, 671 {'tag': str(PIBActividad._meta.get_field('instituciones_seguros').verbose_name), 'cabecera': True}, 672 {'tag': str(PIBActividad._meta.get_field('servicios_alquiler').verbose_name), 'cabecera': True}, 673 {'tag': str(PIBActividad._meta.get_field('servicios_comunitarios').verbose_name), 'cabecera': True}, 674 {'tag': str(PIBActividad._meta.get_field('produccion_servicios').verbose_name), 'cabecera': True}, 675 {'tag': str(PIBActividad._meta.get_field('resto').verbose_name), 'color': 'red', 'text': 'white', 'cabecera': True}, 676 {'tag': str(PIBActividad._meta.get_field('sifmi').verbose_name), 'cabecera': True}, 677 {'tag': str(PIBActividad._meta.get_field('neto_producto').verbose_name), 'color': 'aqua', 'text_color': 'black', 'cabecera': True} 678 ] 679 ] 680 # Asigna el nombre del archivo a descargar 681 nombre_archivo = 'PIB-Actividad_economica' 682 683 ## Sección para la selección de los datos del dominio Actividad Económica 684 if any('pibsector' in index for index in kwargs): 685 fields = [ 686 [ 687 {'tag': '', 'cabecera': True}, 688 {'tag': '', 'cabecera': True}, 689 {'tag': str(PIBInstitucion._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 2, 'cabecera': True} 690 ], 691 [ 692 {'tag': str(_('Año')), 'cabecera': True}, 693 {'tag': str(PIBInstitucion._meta.get_field('publico').verbose_name), 'color': 'indigo', 'text_color': 'white', 'cabecera': True}, 694 {'tag': str(PIBInstitucion._meta.get_field('privado').verbose_name), 'color': 'green', 'text_color': 'white', 'cabecera': True}, 695 ] 696 ] 697 # Asigna el nombre del archivo a descargar 698 nombre_archivo = 'PIB-Institucional' 699 700 """! 701 Verifica si se deben cargar los registros de trimestre, de ser afirmativo: 702 Carga la cabecera de la columna 703 Carga cada uno de los valores de las columnas año y trimestre en base 704 a los parámetros del formulario 705 En caso contrario 706 Carga cada uno de los valores de la columna año 707 """ 708 diff_anhos = int(kwargs['anho__lte']) - int(kwargs['anho__gte']) + 1 709 if any('trimestre' in index for index in kwargs): 710 fields[1].insert(1, {'tag': str(PIBActividad._meta.get_field('trimestre').verbose_name), 'cabecera': True}) 711 # Almacena los datos de año y trimestre inicial provenientes del formulario 712 anho_ini = int(kwargs['anho__gte']) 713 trimestre_ini = int(kwargs['trimestre__gte']) 714 715 # Genera los años y trimestres correspondientes a los parámetros del formulario 716 registros = [] 717 while True: 718 registros = [({'tag': anho_ini})] 719 registros.append({'tag': trimestre_ini}) 720 # Agrega los datos a la nueva fila del archivo a generar 721 fields.append(registros) 722 if (anho_ini == int(kwargs['anho__lte']) and trimestre_ini == int(kwargs['trimestre__lte'])): 723 break 724 if (trimestre_ini == 4): 725 trimestre_ini = 0 726 anho_ini += 1 727 trimestre_ini += 1 615 728 else: 616 fields[1].extend(demanda) 617 fields[1].extend(produccion) 618 619 if 'anho_base' in kwargs: 620 pib_base = {'anho_base': kwargs['anho_base']} 621 kwargs.pop('anho_base') 622 else: 623 pib_base = {} 624 625 for pib in PIB.objects.filter(Q(**kwargs) | Q(**pib_base)).order_by('anho'): 626 # Registros por año 627 registros = [{'tag': pib.anho}] 628 629 if is_nominal: 630 registros.append({'tag': str(pib.nominal) if pib.nominal else str(0.0)}) 631 632 if is_demanda and pib.pibdemanda_set.all(): 633 # Asigna los índices por demanda 634 dem = pib.pibdemanda_set.get() 635 for d in dem._meta.get_fields(): 636 if not d.attname in exclude_fields: 637 registros.append({'tag': str(dem.__getattribute__(d.attname))}) 638 639 if is_produccion and pib.pibproduccion_set.all(): 640 # Asigna los índices por oferta 641 prod = pib.pibproduccion_set.get() 642 for p in prod._meta.get_fields(): 643 if not p.attname in exclude_fields: 644 registros.append({'tag': str(prod.__getattribute__(p.attname))}) 645 646 # Agrega los datos a la nueva fila del archivo a generar 647 fields.append(registros) 648 649 return {'fields': fields, 'output': 'pib'} 729 # Almacena los años de los registros a descargar 730 for i in range(diff_anhos): 731 registros = [({'tag': int(kwargs['anho__gte']) + i})] 732 # Agrega los datos a la nueva fila del archivo a generar 733 fields.append(registros) 734 ## Devuelve los datos correspondientes al archivo a descargar y el nombre de ese archivo 735 return {'fields': fields, 'output': nombre_archivo} 650 736 651 737 def gestion_process(self, file, user, *args, **kwargs): 738 """! 739 Método que permite cargar y gestionar datos 740 741 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 742 @author Edgar A. Linares (elinares at cenditel.gob.ve) 743 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 744 @date 05-12-2016 745 @date 20-04-2017 746 @param self <b>{object}</b> Objeto que instancia la clase 747 @param file <b>{string}</b> Ruta y nombre del archivo a gestionar 748 @param user <b>{object}</b> Objeto que contiene los datos del usuario que realiza la acción 749 @param args <b>{tupla}</b> Tupla con argumentos opcionales 750 @param kwargs <b>{dic}</b> Diccionario con filtros opcionales 751 @return Devuelve el resultado de la acción con su correspondiente mensaje 752 """ 753 652 754 load_file = pyexcel.get_sheet(file_name=file) 653 anho_base, i, col_ini, errors, result, message, is_nominal = '', 0, 2, '', True, '', False654 is_demanda, is_produccion = True, True755 anho_base, i, col_ini, errors, result, message, is_nominal = '', 0, 2, '', False, '', False 756 is_demanda, is_produccion, is_actividad, is_sector = False, False, False, False 655 757 load_data_msg = str(_("Datos Cargados")) 656 758 759 """! 760 Verifica cuál es el archivo que se está cargando en base a los parámetros provenientes 761 del template economico.pib.html 762 """ 657 763 if any('nominal' in index for index in kwargs): 658 764 is_nominal = True 659 if load_file.row[1][1] != str(_("PIB Nominal")):660 result = False661 662 765 if any('pibdemanda' in index for index in kwargs): 663 is_produccion = False 664 if any('pibproduccion' in index for index in kwargs): 665 is_demanda = False 666 766 is_demanda = True 767 elif any('pibproduccion' in index for index in kwargs): 768 is_produccion = True 769 elif any('pibactividad' in index for index in kwargs): 770 is_actividad = True 771 elif any('pibsector' in index for index in kwargs): 772 is_sector = True 773 774 ## Valida que el archivo corresponde a lo indicado en los parámetros del formulario 775 if is_demanda: 776 if is_nominal and (load_file.row[1][1] == str(_("PIB Nominal"))): 777 result = True 778 elif load_file.row[1][1] == str(PIBDemanda._meta.get_field('gasto_consumo').verbose_name): 779 result = True 780 elif is_produccion: 781 if load_file.row[1][1] == str(PIBProduccion._meta.get_field('valor_agregado').verbose_name): 782 result = True 783 elif is_actividad: 784 if load_file.row[1][2] == str(PIBActividad._meta.get_field('total_consolidado').verbose_name): 785 result = True 786 elif is_sector: 787 if load_file.row[1][2] == str(PIBInstitucion._meta.get_field('publico').verbose_name): 788 result = True 789 ## Si el archivo no pasa las validaciones, devuelve False y un mensaje indicando el problema 667 790 if not result: 668 791 return { … … 671 794 } 672 795 796 797 ## En base al archivo cargado, se validan y cargan a la base de datos los valores contenidos en el archivo 673 798 for row in load_file.row[2:]: 674 799 try: 675 800 # Asigna el año base del registro 676 anho_b = anho_base = row[0] if i == 0 else anho_base801 anho_b = int(kwargs['anho_base']) 677 802 678 803 # Posición inicial desde la cual se van a comenzar a registrar los datos en los modelos asociados … … 682 807 base = True if i == 0 else False 683 808 684 nominal = row[1] if is_nominal else None 809 # Almacena el valor en caso de tratarse del archivo PIB-Nominal_demanda o False en caso contrario 810 nominal = row[1] if (is_nominal and is_demanda) else None 685 811 686 812 # Gestión para los datos básicos de pib 687 813 real_pib, created = PIB.objects.update_or_create(anho=anho, anho_base=anho_b, nominal=nominal) 688 814 689 defaults_demanda = {690 'base': base,691 'gasto_consumo': check_val_data(row[2] if is_nominal else row[1]),692 'formacion_capital': check_val_data(row[3] if is_nominal else row[2]),693 'exportacion_bienes': check_val_data(row[4] if is_nominal else row[3]),694 'importacion_bienes': check_val_data(row[5] if is_nominal else row[4])695 }696 697 815 if is_demanda: 698 816 # Gestión de datos para el Índice por Demanda 699 PIBDemanda.objects.update_or_create(pib=real_pib, defaults=defaults_demanda) 700 else: 817 PIBDemanda.objects.update_or_create(pib=real_pib, defaults={ 818 'base': base, 819 'gasto_consumo': check_val_data(row[2] if is_nominal else row[1]), 820 'formacion_capital': check_val_data(row[3] if is_nominal else row[2]), 821 'exportacion_bienes': check_val_data(row[4] if is_nominal else row[3]), 822 'importacion_bienes': check_val_data(row[5] if is_nominal else row[4]) 823 }) 824 elif is_produccion: 701 825 # Gestión de datos para el Índice por Producción 702 826 PIBProduccion.objects.update_or_create(pib=real_pib, defaults={ 703 827 'base': base, 704 'valor_agregado': check_val_data(row[ 2] if is_nominal else row[1]),705 'impuesto_producto': check_val_data(row[ 3] if is_nominal else row[2]),706 'subvencion_productos': check_val_data(row[ 4] if is_nominal else row[3]),828 'valor_agregado': check_val_data(row[1]), 829 'impuesto_producto': check_val_data(row[2]), 830 'subvencion_productos': check_val_data(row[3]), 707 831 }) 708 continue 709 710 if is_produccion: 711 # Gestión de datos para el Índice por Producción 712 PIBProduccion.objects.update_or_create(pib=real_pib, defaults={ 832 elif is_actividad: 833 # Gestión de datos para el ïndice por Actividad Económica 834 PIBActividad.objects.update_or_create(pib=real_pib, defaults={ 713 835 'base': base, 714 'valor_agregado': check_val_data(row[6] if is_nominal else row[5]), 715 'impuesto_producto': check_val_data(row[7] if is_nominal else row[6]), 716 'subvencion_productos': check_val_data(row[8] if is_nominal else row[7]), 836 'trimestre': check_val_data(row[1]), 837 'total_consolidado': check_val_data(row[2]), 838 'total_petrolera': check_val_data(row[3]), 839 'total_no_petrolera': check_val_data(row[4]), 840 'mineria': check_val_data(row[5]), 841 'manufactura': check_val_data(row[6]), 842 'electricidad_agua': check_val_data(row[7]), 843 'construccion': check_val_data(row[8]), 844 'comercio_servicios': check_val_data(row[9]), 845 'transporte_almacenamiento': check_val_data(row[10]), 846 'comunicaciones': check_val_data(row[11]), 847 'instituciones_seguros': check_val_data(row[12]), 848 'servicios_alquiler': check_val_data(row[13]), 849 'servicios_comunitarios': check_val_data(row[14]), 850 'produccion_servicios': check_val_data(row[15]), 851 'resto': check_val_data(row[16]), 852 'sifmi': check_val_data(row[17]), 853 'neto_producto': check_val_data(row[18]) 717 854 }) 718 else: 719 # Gestión de datos para el Índice por Demanda 720 PIBDemanda.objects.update_or_create(pib=real_pib, defaults=defaults_demanda) 721 continue 855 elif is_sector: 856 # Gestión de datos para el Índice por Sector Institucional 857 PIBInstitucion.objects.update_or_create(pib=real_pib, defaults={ 858 'base': base, 859 'trimestre': check_val_data(row[1]), 860 'publico': check_val_data(row[2]), 861 'privado': check_val_data(row[3]) 862 }) 722 863 723 864 except Exception as e: … … 740 881 @python_2_unicode_compatible 741 882 class PIBDemanda(models.Model): 883 """! 884 Clase que contiene los registros del PIB correspondientes al dominio Enfoque Demanda tanto 885 del tipo Real como Nominal 886 887 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 888 @author Edgar A. Linares (elinares at cenditel.gob.ve) 889 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 890 @date 05-12-2016 891 @date 05-04-2017 892 @version 1.0.0 893 """ 894 742 895 gasto_consumo = models.DecimalField( 743 896 max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Gasto de consumo final") … … 766 919 @python_2_unicode_compatible 767 920 class PIBProduccion(models.Model): 921 """! 922 Clase que contiene los registros del PIB correspondientes al dominio Enfoque Oferta tanto 923 del tipo Real como Nominal 924 925 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 926 @author Edgar A. Linares (elinares at cenditel.gob.ve) 927 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 928 @date 05-12-2016 929 @date 05-04-2017 930 @version 1.0.0 931 """ 932 768 933 valor_agregado = models.DecimalField( 769 934 max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Valor agregado a precios básicos") … … 788 953 @python_2_unicode_compatible 789 954 class PIBActividad(models.Model): 955 """! 956 Clase que contiene los registros del PIB correspondientes al dominio Actividad Económica 957 958 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 959 @author Edgar A. Linares (elinares at cenditel.gob.ve) 960 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 961 @date 05-12-2016 962 @date 05-04-2017 963 @version 1.0.0 964 """ 965 790 966 trimestre = models.CharField(max_length=1, null=True, blank=True, verbose_name=_('Trimestre')) 791 967 … … 875 1051 super(PIBActividad, self).save(*args, **kwargs) 876 1052 1053 @python_2_unicode_compatible 1054 class PIBInstitucion(models.Model): 1055 """! 1056 Clase que contiene los registros del PIB correspondientes al dominio Sector Institucional 1057 1058 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 1059 @author Edgar A. Linares (elinares at cenditel.gob.ve) 1060 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 1061 @date 05-12-2016 1062 @date 05-04-2017 1063 @version 1.0.0 1064 """ 1065 1066 trimestre = models.CharField(max_length=1, null=True, blank=True, verbose_name=_('Trimestre')) 1067 1068 publico = models.DecimalField( 1069 max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Publico") 1070 ) 1071 1072 privado = models.DecimalField( 1073 max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Privado") 1074 ) 1075 1076 base = models.BooleanField(default=False, verbose_name=_("Indicador base")) 1077 1078 pib = models.ForeignKey(PIB, verbose_name=_('Producto Interno Bruto')) 1079 1080 class Meta: 1081 verbose_name = _('PIB sobre las Instituciones') 877 1082 878 1083 #-----------------------------Económico Real - Demanda Global -
economico/templates/economico.pib.html
r8ad3344 rf093433 43 43 </div> 44 44 </div> 45 <div class="row separador-row"> 46 <div class="col-xs-2 col-sm-2 col-md-2 col-lg-2 col-xs-offset-2 col-sm-offset-2 col-md-offset-2 col-lg-offset-2"> 47 <label class="control-label">{% trans 'Período' %}</label> 48 </div> 49 <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1"> 50 <label for="{{ form.periodo_anho_ini.auto_id }}" class="control-label">{{ form.periodo_anho_ini.label }}</label> 51 </div> 52 <div class="col-xs-2 col-sm-2 col-md-2 col-lg-2"> 53 {{ form.periodo_anho_ini }} 54 </div> 55 <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1"> 56 <label for="{{ form.periodo_anho_fin.auto_id }}" class="control-label">{{ form.periodo_anho_fin.label }}</label> 57 </div> 58 <div class="col-xs-2 col-sm-2 col-md-2 col-lg-2"> 59 {{ form.periodo_anho_fin }} 60 </div> 61 </div> 62 {% include 'base.down.up.files.html' with app='economico' mod='PIB' %} 45 <!--Modificado el 05-04-2017 Edgar Linares --> 46 <hr> 47 <div id ="periodos" style='display:none;'> 48 <div class="row separador-row"> 49 <div class="col-xs-2 col-sm-2 col-md-2 col-lg-2 col-xs-offset-4 col-sm-offset-4 col-md-offset-4 col-lg-offset-4"> 50 </div> 51 <div id ="trimestral1" style='display:none;' class="col-xs-2 col-sm-2 col-md-2 col-lg-2"> 52 <label class="control-label">{% trans 'Trimestral' %}</label> 53 </div> 54 <div class="col-xs-2 col-sm-2 col-md-2 col-lg-2"> 55 <label class="control-label">{% trans 'Año' %}</label> 56 </div> 57 </div> 58 <div class="row separador-row"> 59 <div class="col-xs-2 col-sm-2 col-md-2 col-lg-2 col-xs-offset-2 col-sm-offset-2 col-md-offset-2 col-lg-offset-2"> 60 <label class="control-label">{% trans 'Período' %}</label> 61 </div> 62 <div class="col-xs-2 col-sm-2 col-md-2 col-lg-2"> 63 <label class="control-label">{{ form.periodo_trimestre_ini.label }}</label> 64 </div> 65 <div id ="trimestral2" style='display:none;' class="col-xs-2 col-sm-2 col-md-2 col-lg-2">{{ form.periodo_trimestre_ini }}</div> 66 <div class="col-xs-2 col-sm-2 col-md-2 col-lg-2">{{ form.periodo_anho_ini }}</div> 67 </div> 68 <div class="row separador-row"> 69 <div class="col-xs-2 col-sm-2 col-md-2 col-lg-2 col-xs-offset-4 col-sm-offset-4 col-md-offset-4 col-lg-offset-4"> 70 <label class="control-label">{{ form.periodo_trimestre_fin.label }}</label> 71 </div> 72 <div id ="trimestral3" style='display:none;' class="col-xs-2 col-sm-2 col-md-2 col-lg-2">{{ form.periodo_trimestre_fin }}</div> 73 <div class="col-xs-2 col-sm-2 col-md-2 col-lg-2">{{ form.periodo_anho_fin }}</div> 74 </div> 75 </div> 76 <!-- --> 77 <div id="enlaces" style='display:none;'> 78 {% include 'base.down.up.files.html' with app='economico' mod='PIB' %} 79 </div> 63 80 </div> 64 81 </div> 65 82 {% endblock %} 66 83 {% block extra_footer %} 67 <script> 68 var tipo = $("#{{ form.tipo.auto_id }}"), dominio = $("#{{ form.dominio.auto_id }}"), 69 anho_base = $("#{{ form.anho_base.auto_id }}"), anho_ini = $("#{{ form.periodo_anho_ini.auto_id }}"), 70 anho_fin = $("#{{ form.periodo_anho_fin.auto_id }}"); 71 84 <script> 85 var tipo = $("#{{ form.tipo.auto_id }}"); 86 var dominio = $("#{{ form.dominio.auto_id }}"); 87 var anho_base = $("#{{ form.anho_base.auto_id }}"); 88 var anho_ini = $("#{{ form.periodo_anho_ini.auto_id }}"); 89 var anho_fin = $("#{{ form.periodo_anho_fin.auto_id }}"); 90 var trimestre_ini = $("#{{ form.periodo_trimestre_ini.auto_id }}"); 91 var trimestre_fin = $("#{{ form.periodo_trimestre_fin.auto_id }}"); 92 var select_dominio = $('#id_dominio'); 93 var options_dominio = select_dominio.html(); 94 var tipo_ant = ""; 72 95 73 96 function set_filters() { 97 /** 98 * @brief Realiza cambios en la vista ocasionados por modificaciones 99 * en los formularios. Almacena los valores de los parámetros que serán usados 100 * en el modelo 101 * 102 * @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 103 * @author Edgar A. Linares (elinares at cenditel.gob.ve) 104 * @copyright GNU/GPLv2 105 * @date 05-04-2017 106 */ 74 107 var filters = $("#filters"), json_filter = ''; 75 108 76 if (tipo.val()) { 109 if (tipo.val()) { 77 110 if (tipo.val() == 'R') { 78 json_filter += "\"nominal__isnull\": \"true\","; 111 json_filter += "\"real__isnull\": \"false\","; 112 if (tipo_ant != tipo.val()) 113 select_dominio.html(options_dominio); 79 114 } 80 115 else { 81 116 json_filter += "\"nominal__isnull\": \"false\","; 117 if (tipo_ant != tipo.val()){ 118 $("#id_dominio option[value='AE']").remove(); 119 $("#id_dominio option[value='SI']").remove(); 120 } 82 121 } 83 122 } … … 89 128 json_filter += "\"pibproduccion__isnull\": \"false\","; 90 129 } 130 // Modificado el 06-04-2017 por Edgar A. Linares 131 else if (dominio.val() == 'AE') { 132 json_filter += "\"pibactividad__isnull\": \"false\","; 133 } 134 else if (dominio.val() == 'SI') { 135 json_filter += "\"pibsector__isnull\": \"false\","; 136 } 137 } 138 if (tipo.val() == 'R' && (dominio.val() == 'AE' || dominio.val() == 'SI')) { 139 document.getElementById("periodos").style.display = 'block'; 140 document.getElementById("trimestral1").style.display = 'block'; 141 document.getElementById("trimestral2").style.display = 'block'; 142 document.getElementById("trimestral3").style.display = 'block'; 143 } 144 else if (tipo.val() && dominio.val()) { 145 document.getElementById("periodos").style.display = 'block'; 146 document.getElementById("trimestral1").style.display = 'none'; 147 document.getElementById("trimestral2").style.display = 'none'; 148 document.getElementById("trimestral3").style.display = 'none'; 149 } 150 else { 151 document.getElementById("periodos").style.display = 'none'; 152 document.getElementById("trimestral1").style.display = 'none'; 153 document.getElementById("trimestral2").style.display = 'none'; 154 document.getElementById("trimestral3").style.display = 'none'; 155 } 156 if (dominio.val() && anho_ini.val() && anho_fin.val()){ 157 if ( (dominio.val() == 'ED' || dominio.val() == 'EO') && 158 anho_fin.val() >= anho_ini.val() ) { 159 document.getElementById("enlaces").style.display = 'block'; 160 } 161 else if ( (dominio.val() == 'AE' || dominio.val() == 'SI') && 162 (anho_fin.val() >= anho_ini.val()) && 163 trimestre_ini.val() && trimestre_fin.val() ) { 164 if ( (anho_fin.val() == anho_ini.val()) && 165 (trimestre_fin.val() >= trimestre_ini.val()) ) 166 document.getElementById("enlaces").style.display = 'block'; 167 else if (anho_fin.val() > anho_ini.val()) 168 document.getElementById("enlaces").style.display = 'block'; 169 else 170 document.getElementById("enlaces").style.display = 'none'; 171 } 172 else { 173 document.getElementById("enlaces").style.display = 'none'; 174 } 91 175 } 92 176 if (anho_base.val()) { … … 99 183 json_filter += "\"anho__lte\": \"" + anho_fin.val() + "\","; 100 184 } 101 185 if (trimestre_ini.val()) { 186 json_filter += "\"trimestre__gte\": \"" + trimestre_ini.val() + "\","; 187 } 188 if (trimestre_fin.val()) { 189 json_filter += "\"trimestre__lte\": \"" + trimestre_fin.val() + "\","; 190 } 191 tipo_ant = tipo.val(); 102 192 if (json_filter) { 103 193 json_filter = json_filter.slice(0, -1); … … 112 202 anho_ini.on('change', function() { set_filters() }); 113 203 anho_fin.on('change', function() { set_filters() }); 204 trimestre_ini.on('change', function() { set_filters() }); 205 trimestre_fin.on('change', function() { set_filters() }); 114 206 }); 115 207 </script> -
economico/views.py
r8abcf1c rf093433 21 21 22 22 from .forms import ( 23 RealPreciosForm, RealPIBForm, RealDemandaGlobalForm, RealOfertaGlobalForm, MonetarioAgregadosForm, MonetarioOperacionesInterbancariasForm,23 RealPreciosForm, PIBForm, RealDemandaGlobalForm, RealOfertaGlobalForm, MonetarioAgregadosForm, MonetarioOperacionesInterbancariasForm, 24 24 MonetarioTasasInteresForm, MonetarioInstrumentoPoliticaForm, ExternoBalanzaComercialForm, ExternoReservaCambioForm, 25 25 ExternoCuentaCapitalForm, FiscalForm, CapitalForm … … 65 65 66 66 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 67 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 68 @date 19-09-2016 67 @author Edgar A. Linares (elinares at cenditel.gob.ve) 68 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 69 @date 19-09-2016 70 @date 05-04-2017 69 71 @param request <b>{object}</b> Objeto que obtiene la petición 70 72 @return Devuelve el response con el formulario de datos para el registro de PIB 71 73 """ 72 form = RealPIBForm()74 form = PIBForm() 73 75 74 76 return render(request, 'economico.pib.html', {
Nota: Vea TracChangeset
para ayuda en el uso del visor de conjuntos de cambios.