Conjunto de cambios e50220a en seiven para economico


Ignorar:
Fecha y hora:
04/05/2017 11:29:35 (hace 7 años)
Autor:
rudmanmrrod <rudman22@…>
Branches:
master, carga
Children:
b561813, f93ccdf
Parents:
7ec3358
Mensaje:

Agregado modulo completo de balanza comercial (validaciones, descarga y carga de archivos)

Ubicación:
economico
Ficheros:
4 editados

Leyenda

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

    rf093433 re50220a  
    2626from base.constant import (
    2727    DOMINIO_PRECIOS, DOMINIO_PIB, DOMINIO_AGREGADO_MONETARIO, TIPO_PIB, TIPO_DEMANDA_GLOBAL, TIPO_OFERTA_GLOBAL, TRIMESTRES, MESES,
    28     DOMINIO_COMERCIAL, DOMINIO_CAMBIO, DOMINIO_CUENTA_CAPITAL
     28    DOMINIO_COMERCIAL, DOMINIO_CAMBIO, DOMINIO_CUENTA_CAPITAL, TIPO_BALANZA_COMERCIAL, DOMINIO_BALANZA_COMERCIAL
    2929)
    3030from base.functions import cargar_anho_base
     
    434434
    435435    @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve)
     436    @author Rodrigo Boet (rboet at cenditel.gob.ve)
    436437    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
    437438    @date 19-09-2016
     
    441442    def __init__(self, *args, **kwargs):
    442443        super(ExternoBalanzaComercialForm, self).__init__(*args, **kwargs)
    443         self.fields['tipo'].choices = TIPO_PIB
    444         self.fields['dominio'].choices = DOMINIO_COMERCIAL
     444        self.fields['tipo'].choices = TIPO_BALANZA_COMERCIAL
     445        self.fields['dominio'].choices = DOMINIO_BALANZA_COMERCIAL
     446        self.fields['anho_base'].choices = cargar_anho_base(anho_inicial='1997',anho_final='1997')
     447        self.fields['anho_base'].required = False
     448        ## Se deshabilitan los campos
     449        self.fields['dominio'].widget.attrs.update({'disabled': True})
     450        self.fields['anho_base'].widget.attrs.update({'disabled': True})
     451        self.fields['periodo_trimestre_ini'].widget.attrs.update({'disabled': True})
     452        self.fields['periodo_trimestre_fin'].widget.attrs.update({'disabled': True})
     453        self.fields['periodo_anho_ini'].widget.attrs.update({'disabled': True})
     454        self.fields['periodo_anho_fin'].widget.attrs.update({'disabled': True})
     455        ## Se agregan las funciones javascript
     456        self.fields['tipo'].widget.attrs.update({'onchange': 'edit_dom_bc($(this).val(),"id_dominio");'})
    445457
    446458
  • economico/models.py

    rf093433 re50220a  
    2323
    2424from base.constant import (
    25     DOMINIO, PERIOCIDAD, TRIMESTRES, MESES, ECONOMICO_SUB_AREA, CONVERT_MES, EMAIL_SUBJECT_LOAD_DATA
     25    DOMINIO, PERIOCIDAD, TRIMESTRES, MESES, ECONOMICO_SUB_AREA, CONVERT_MES, EMAIL_SUBJECT_LOAD_DATA,
     26    TIPO_BALANZA_COMERCIAL, DOMINIO_BALANZA_COMERCIAL, BALANZA_DATOS
    2627)
    2728from base.functions import enviar_correo, check_val_data
     
    13701371    class Meta:
    13711372        verbose_name = _('Oferta Externa')
     1373       
     1374       
     1375# ------------ Económico Externo - Balanza Comercial  --------------------
     1376       
     1377@python_2_unicode_compatible
     1378class BalanzaComercialBase(models.Model):
     1379    """!
     1380    Clase que contiene los registros base de la Balanza Comercial
     1381   
     1382    @author Rodrigo Boet (rboet at cenditel.gob.ve)
     1383    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
     1384    @date 02-05-2017
     1385    @version 1.0.0
     1386    """
     1387   
     1388    ## Año base del registro
     1389    anho_base = models.CharField(max_length=4, null=True)
     1390
     1391    ## Año al que pertenece el(los) registro(s)
     1392    anho = models.CharField(max_length=4, verbose_name=_("Año"))
     1393
     1394    ## Trimestre del registro
     1395    trimestre = models.CharField(max_length=2, choices=TRIMESTRES[1:], verbose_name=_("Trimestre"))
     1396   
     1397    ## Tipo del registro
     1398    tipo = models.CharField(max_length=2, choices=TIPO_BALANZA_COMERCIAL[1:])
     1399   
     1400    ## Dominio del registro
     1401    dominio = models.CharField(max_length=2, choices=DOMINIO_BALANZA_COMERCIAL[1:])
     1402   
     1403    def gestion_init(self, *args, **kwargs):
     1404        """!
     1405        Método que permite descargar un archivo con los datos a gestionar
     1406
     1407        @author Rodrigo Boet (rboet at cenditel.gob.ve)
     1408        @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
     1409        @date 02-05-2017
     1410        @param self <b>{object}</b> Objeto que instancia la clase
     1411        @param args <b>{tupla}</b> Tupla con argumentos opcionales
     1412        @param kwargs <b>{dic}</b> Diccionario con filtros opcionales
     1413        @return Devuelve los datos a incluír en el archivo
     1414        """
     1415        nombre_archivo = 'balanza_comercial'
     1416        fields = []
     1417        ## Cabecera para precios corrientes en bs y precios constantes
     1418        if(kwargs['dominio']!='BD' and kwargs['tipo']!='PI'):
     1419            header = [
     1420                {'tag': '', 'cabecera': True},
     1421                {'tag': '', 'cabecera': True},
     1422                {'tag': str(_("Exportaciones de bienes FOB")), 'color': 'ocean_blue', 'text_color': 'white', 'combine': 4, 'cabecera': True},
     1423                {'tag': '', 'color': 'gray25', 'cabecera': True},
     1424                {'tag': str(_("Importaciones de Bienes CIF")), 'color': 'aqua', 'text_color': 'white', 'combine': 4, 'cabecera': True},
     1425                {'tag': '', 'color': 'gray25', 'cabecera': True},
     1426            ]
     1427            sub_header = [
     1428                {'tag': str(_("Trimestre")), 'color': 'white', 'text_color': 'black','cabecera': True},
     1429                {'tag': str(_("Año")), 'color': 'white', 'text_color': 'black', 'cabecera': True},
     1430                {'tag': str(_(BalanzaComercialDatos._meta.get_field('publico_petroleo').verbose_name)), 'color': 'ocean_blue', 'text_color': 'white', 'cabecera': True},
     1431                {'tag': str(_(BalanzaComercialDatos._meta.get_field('publico_no_petroleo').verbose_name)), 'color': 'ocean_blue', 'text_color': 'white', 'cabecera': True},
     1432                {'tag': str(_(BalanzaComercialDatos._meta.get_field('privado_petroleo').verbose_name)), 'color': 'ocean_blue', 'text_color': 'white', 'cabecera': True},
     1433                {'tag': str(_(BalanzaComercialDatos._meta.get_field('privado_no_petroleo').verbose_name)), 'color': 'ocean_blue', 'text_color': 'white', 'cabecera': True},
     1434                {'tag': str(_(BalanzaComercialServicios._meta.get_field('exportacion_servicio').verbose_name)), 'color': 'gray25', 'cabecera': True},
     1435                {'tag': str(_(BalanzaComercialDatos._meta.get_field('publico_petroleo').verbose_name)), 'color': 'aqua', 'text_color': 'white', 'cabecera': True},
     1436                {'tag': str(_(BalanzaComercialDatos._meta.get_field('publico_no_petroleo').verbose_name)), 'color': 'aqua', 'text_color': 'white', 'cabecera': True},
     1437                {'tag': str(_(BalanzaComercialDatos._meta.get_field('privado_petroleo').verbose_name)), 'color': 'aqua', 'text_color': 'white', 'cabecera': True},
     1438                {'tag': str(_(BalanzaComercialDatos._meta.get_field('privado_no_petroleo').verbose_name)), 'color': 'aqua', 'text_color': 'white', 'cabecera': True},
     1439                {'tag': str(_(BalanzaComercialServicios._meta.get_field('importacion_servicio').verbose_name)), 'color': 'gray25', 'cabecera': True},
     1440            ]
     1441        ## Cabecera para el índice de precios implícitos
     1442        elif(kwargs['tipo']=='PI'):
     1443            header = [
     1444                {'tag': '', 'cabecera': True},
     1445                {'tag': '', 'cabecera': True},
     1446                {'tag': str(_("Exportaciones de bienes FOB")), 'color': 'ocean_blue', 'text_color': 'white', 'combine': 7, 'cabecera': True},
     1447                {'tag': '', 'color': 'gray25', 'cabecera': True},
     1448                {'tag': str(_("Importaciones de Bienes CIF")), 'color': 'aqua', 'text_color': 'white', 'combine': 7, 'cabecera': True},
     1449                {'tag': '', 'color': 'gray25', 'cabecera': True},
     1450            ]
     1451            sub_header = [
     1452                {'tag': str(_("Trimestre")), 'color': 'white', 'text_color': 'black','cabecera': True},
     1453                {'tag': str(_("Año")), 'color': 'white', 'text_color': 'black', 'cabecera': True},
     1454                {'tag': str(_(BalanzaComercialPrecioImplicito._meta.get_field('exportacion_bien').verbose_name)), 'color': 'ocean_blue', 'text_color': 'white', 'cabecera': True},
     1455                {'tag': str(_(BalanzaComercialPrecioImplicito._meta.get_field('exportacion_publica').verbose_name)), 'color': 'ocean_blue', 'text_color': 'white', 'cabecera': True},
     1456                {'tag': str(_(BalanzaComercialDatos._meta.get_field('publico_petroleo').verbose_name)), 'color': 'ocean_blue', 'text_color': 'white', 'cabecera': True},
     1457                {'tag': str(_(BalanzaComercialDatos._meta.get_field('publico_no_petroleo').verbose_name)), 'color': 'ocean_blue', 'text_color': 'white', 'cabecera': True},
     1458                {'tag': str(_(BalanzaComercialPrecioImplicito._meta.get_field('exportacion_privada').verbose_name)), 'color': 'ocean_blue', 'text_color': 'white', 'cabecera': True},
     1459                {'tag': str(_(BalanzaComercialDatos._meta.get_field('privado_petroleo').verbose_name)), 'color': 'ocean_blue', 'text_color': 'white', 'cabecera': True},
     1460                {'tag': str(_(BalanzaComercialDatos._meta.get_field('privado_no_petroleo').verbose_name)), 'color': 'ocean_blue', 'text_color': 'white', 'cabecera': True},
     1461                {'tag': str(_(BalanzaComercialServicios._meta.get_field('exportacion_servicio').verbose_name)), 'color': 'gray25', 'cabecera': True},
     1462                {'tag': str(_(BalanzaComercialPrecioImplicito._meta.get_field('importacion_bien').verbose_name)), 'color': 'aqua', 'text_color': 'white', 'cabecera': True},
     1463                {'tag': str(_(BalanzaComercialPrecioImplicito._meta.get_field('importacion_publica').verbose_name)), 'color': 'aqua', 'text_color': 'white', 'cabecera': True},
     1464                {'tag': str(_(BalanzaComercialDatos._meta.get_field('publico_petroleo').verbose_name)), 'color': 'aqua', 'text_color': 'white', 'cabecera': True},
     1465                {'tag': str(_(BalanzaComercialDatos._meta.get_field('publico_no_petroleo').verbose_name)), 'color': 'aqua', 'text_color': 'white', 'cabecera': True},
     1466                {'tag': str(_(BalanzaComercialPrecioImplicito._meta.get_field('importacion_privada').verbose_name)), 'color': 'aqua', 'text_color': 'white', 'cabecera': True},
     1467                {'tag': str(_(BalanzaComercialDatos._meta.get_field('privado_petroleo').verbose_name)), 'color': 'aqua', 'text_color': 'white', 'cabecera': True},
     1468                {'tag': str(_(BalanzaComercialDatos._meta.get_field('privado_no_petroleo').verbose_name)), 'color': 'aqua', 'text_color': 'white', 'cabecera': True},
     1469                {'tag': str(_(BalanzaComercialServicios._meta.get_field('importacion_servicio').verbose_name)), 'color': 'gray25', 'cabecera': True},
     1470            ]
     1471        ## Cabecera para precios corrientes en usd
     1472        else:
     1473            header = [
     1474                {'tag': '', 'color': 'white', 'text_color': 'black','cabecera': True},
     1475                {'tag': '', 'color': 'white', 'text_color': 'black','cabecera': True},
     1476                {'tag': str(_("Exportaciones de bienes FOB")), 'color': 'ocean_blue', 'text_color': 'white', 'combine': 4, 'cabecera': True},
     1477                {'tag': str(_("Exportaciones de Servicios")), 'color': 'orange', 'text_color': 'white', 'combine': 4, 'cabecera': True},
     1478                {'tag': str(_("Importaciones de Bienes CIF")), 'color': 'indigo', 'text_color': 'white', 'combine': 4, 'cabecera': True},
     1479                {'tag': str(_("Fletes y Seguros")), 'color': 'green', 'text_color': 'white', 'combine': 4, 'cabecera': True},
     1480                {'tag': str(_("Importaciones de Servicios")), 'color': 'aqua', 'text_color': 'white', 'combine': 4, 'cabecera': True},
     1481            ]
     1482            sub_header = [
     1483                {'tag': str(_("Trimestre")), 'cabecera': True},
     1484                {'tag': str(_("Año")), 'cabecera': True},
     1485            ]
     1486            colors = ['ocean_blue','orange','indigo','green','aqua']
     1487            for item in colors:
     1488                sub_header.append({'tag': str(_(BalanzaComercialDatos._meta.get_field('publico_petroleo').verbose_name)), 'color': item, 'text_color': 'white', 'cabecera': True})
     1489                sub_header.append({'tag': str(_(BalanzaComercialDatos._meta.get_field('publico_no_petroleo').verbose_name)), 'color': item, 'text_color': 'white', 'cabecera': True})
     1490                sub_header.append({'tag': str(_(BalanzaComercialDatos._meta.get_field('privado_petroleo').verbose_name)), 'color': item, 'text_color': 'white', 'cabecera': True})
     1491                sub_header.append({'tag': str(_(BalanzaComercialDatos._meta.get_field('privado_no_petroleo').verbose_name)), 'color': item, 'text_color': 'white', 'cabecera': True})
     1492        ## Se añade la cabecera
     1493        fields.append(header);
     1494        ## Se añade la subcabecera
     1495        fields.append(sub_header);
     1496       
     1497        ## Se asigna el año base (si existe)
     1498        anho_base = kwargs['anho_base'] if 'anho_base' in kwargs else ''
     1499       
     1500        # Almacena los datos de año y trimestre inicial provenientes del formulario
     1501        anho_ini = int(kwargs['anho__gte'])
     1502        trimestre_ini = int(kwargs['trimestre__gte'])
     1503
     1504        # Genera los años y trimestres correspondientes a los parámetros del formulario
     1505        registros = []
     1506        while True:
     1507            registros = [({'tag': trimestre_ini})]
     1508            registros.append({'tag': anho_ini})
     1509            ## Se intenta búscar el registro base
     1510            balanza_base = BalanzaComercialBase.objects.filter(
     1511                    anho_base=anho_base,
     1512                    anho=anho_ini,
     1513                    trimestre=trimestre_ini,
     1514                    tipo=kwargs['tipo'],
     1515                    dominio=kwargs['dominio']
     1516                )
     1517            ## Si el registro existe se obtiene
     1518            if(balanza_base):
     1519                balanza_base = balanza_base.get()
     1520                ## Si el registro base corresponde a balanza comercial corriente (bs) o constante
     1521                if balanza_base.dominio!='BD' and balanza_base.tipo!='PI':
     1522                    ## Se busca el registro para Exportaciones de bienes FOB
     1523                    balanza_datos_eb = BalanzaComercialDatos.objects.filter(
     1524                        balanza_id=balanza_base.id,
     1525                        tipo="EB"
     1526                    ).get()
     1527                    ## Se busca el registro para Importaciones de Bienes CIF
     1528                    balanza_datos_ib = BalanzaComercialDatos.objects.filter(
     1529                        balanza_id=balanza_base.id,
     1530                        tipo="IB"
     1531                    ).get()
     1532                    ## Se busca el registro de las exportaciones/importaciones de servicios
     1533                    balanza_servicios = BalanzaComercialServicios.objects.filter(balanza_id=balanza_base.id,).get()
     1534                    ## Se añaden los registros a la lista
     1535                    registros.append({'tag':balanza_datos_eb.publico_petroleo})
     1536                    registros.append({'tag':balanza_datos_eb.publico_no_petroleo})
     1537                    registros.append({'tag':balanza_datos_eb.privado_petroleo})
     1538                    registros.append({'tag':balanza_datos_eb.privado_no_petroleo})
     1539                    registros.append({'tag':balanza_servicios.exportacion_servicio})
     1540                    registros.append({'tag':balanza_datos_ib.publico_petroleo})
     1541                    registros.append({'tag':balanza_datos_ib.publico_no_petroleo})
     1542                    registros.append({'tag':balanza_datos_ib.privado_petroleo})
     1543                    registros.append({'tag':balanza_datos_ib.privado_no_petroleo})
     1544                    registros.append({'tag':balanza_servicios.importacion_servicio})
     1545                ## Si el registro corresponde a balanza comercial índice de precios implícitos
     1546                elif(kwargs['tipo']=='PI'):
     1547                    ## Se busca el registro para Exportaciones de bienes FOB
     1548                    balanza_datos_eb = BalanzaComercialDatos.objects.filter(
     1549                        balanza_id=balanza_base.id,
     1550                        tipo="EB"
     1551                    ).get()
     1552                    ## Se busca el registro para Importaciones de Bienes CIF
     1553                    balanza_datos_ib = BalanzaComercialDatos.objects.filter(
     1554                        balanza_id=balanza_base.id,
     1555                        tipo="IB"
     1556                    ).get()
     1557                    ## Se busca el registro de las exportaciones/importaciones de servicios
     1558                    balanza_servicios = BalanzaComercialServicios.objects.filter(balanza_id=balanza_base.id,).get()
     1559                    ## Se buscar el registro para los precios implícitos
     1560                    balanza_implicito = BalanzaComercialPrecioImplicito.objects.filter(balanza = balanza_base.id).get()
     1561                    ## Se añaden los registros a la lista
     1562                    registros.append({'tag':balanza_implicito.exportacion_bien})
     1563                    registros.append({'tag':balanza_implicito.exportacion_publica})
     1564                    registros.append({'tag':balanza_datos_eb.publico_petroleo})
     1565                    registros.append({'tag':balanza_datos_eb.publico_no_petroleo})
     1566                    registros.append({'tag':balanza_implicito.exportacion_privada})
     1567                    registros.append({'tag':balanza_datos_eb.privado_petroleo})
     1568                    registros.append({'tag':balanza_datos_eb.privado_no_petroleo})
     1569                    registros.append({'tag':balanza_servicios.exportacion_servicio})
     1570                    registros.append({'tag':balanza_implicito.importacion_bien})
     1571                    registros.append({'tag':balanza_implicito.importacion_publica})
     1572                    registros.append({'tag':balanza_datos_ib.publico_petroleo})
     1573                    registros.append({'tag':balanza_datos_ib.publico_no_petroleo})
     1574                    registros.append({'tag':balanza_implicito.importacion_privada})
     1575                    registros.append({'tag':balanza_datos_ib.privado_petroleo})
     1576                    registros.append({'tag':balanza_datos_ib.privado_no_petroleo})
     1577                    registros.append({'tag':balanza_servicios.importacion_servicio})
     1578                ## Si el registro corresponde a precios corrientes (usd)
     1579                else:
     1580                    ## Se busca el registro para Exportaciones de bienes FOB
     1581                    balanza_datos_eb = BalanzaComercialDatos.objects.filter(balanza = balanza_base, tipo="EB").get()
     1582                    ## Se busca el registro para Exportaciones de Servicios
     1583                    balanza_datos_es = BalanzaComercialDatos.objects.filter(balanza = balanza_base, tipo="ES").get()
     1584                    ## Se busca el registro para Importaciones de Bienes CIF
     1585                    balanza_datos_ib = BalanzaComercialDatos.objects.filter(balanza = balanza_base, tipo="IB").get()
     1586                    ## Se busca el registro para Fletes y Seguros
     1587                    balanza_datos_fs = BalanzaComercialDatos.objects.filter(balanza = balanza_base, tipo="FS").get()
     1588                    ## Se busca el registro para Importaciones de Servicios
     1589                    balanza_datos_is = BalanzaComercialDatos.objects.filter(balanza = balanza_base, tipo="IS").get()
     1590                    ## Se añaden los registros a la lista
     1591                    registros.append({'tag':balanza_datos_eb.publico_petroleo})
     1592                    registros.append({'tag':balanza_datos_eb.publico_no_petroleo})
     1593                    registros.append({'tag':balanza_datos_eb.privado_petroleo})
     1594                    registros.append({'tag':balanza_datos_eb.privado_no_petroleo})
     1595                    registros.append({'tag':balanza_datos_es.publico_petroleo})
     1596                    registros.append({'tag':balanza_datos_es.publico_no_petroleo})
     1597                    registros.append({'tag':balanza_datos_es.privado_petroleo})
     1598                    registros.append({'tag':balanza_datos_es.privado_no_petroleo})
     1599                    registros.append({'tag':balanza_datos_ib.publico_petroleo})
     1600                    registros.append({'tag':balanza_datos_ib.publico_no_petroleo})
     1601                    registros.append({'tag':balanza_datos_ib.privado_petroleo})
     1602                    registros.append({'tag':balanza_datos_ib.privado_no_petroleo})
     1603                    registros.append({'tag':balanza_datos_fs.publico_petroleo})
     1604                    registros.append({'tag':balanza_datos_fs.publico_no_petroleo})
     1605                    registros.append({'tag':balanza_datos_fs.privado_petroleo})
     1606                    registros.append({'tag':balanza_datos_fs.privado_no_petroleo})
     1607                    registros.append({'tag':balanza_datos_is.publico_petroleo})
     1608                    registros.append({'tag':balanza_datos_is.publico_no_petroleo})
     1609                    registros.append({'tag':balanza_datos_is.privado_petroleo})
     1610                    registros.append({'tag':balanza_datos_is.privado_no_petroleo})
     1611            # Agrega los datos a la nueva fila del archivo a generar
     1612            fields.append(registros)
     1613            if (anho_ini == int(kwargs['anho__lte']) and trimestre_ini == int(kwargs['trimestre__lte'])):
     1614                break
     1615            if (trimestre_ini == 4):
     1616                trimestre_ini = 0
     1617                anho_ini += 1
     1618            trimestre_ini += 1
     1619       
     1620        if(kwargs['tipo']=='PR' and kwargs['dominio']=='BB'):
     1621            nombre_archivo+= '_bolivares_corriente'
     1622        elif(kwargs['tipo']=='PR' and kwargs['dominio']=='BD'):
     1623            nombre_archivo+= '_dolares'
     1624        elif(kwargs['tipo']=='PC'):
     1625            nombre_archivo+= '_bolivares_constante'
     1626        elif(kwargs['tipo']=='PI'):
     1627            nombre_archivo+= '_bolivales_preciosimplicitos'
     1628        ## Devuelve los datos correspondientes al archivo a descargar y el nombre de ese archivo
     1629        return {'fields': fields, 'output': nombre_archivo}
     1630   
     1631    def gestion_process(self, file, user, *args, **kwargs):
     1632        """!
     1633        Método que permite cargar y gestionar datos
     1634
     1635        @author Rodrigo boet (rboet at cenditel.gob.ve)
     1636        @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
     1637        @date 02-05-2017
     1638        @param self <b>{object}</b> Objeto que instancia la clase
     1639        @param file <b>{string}</b> Ruta y nombre del archivo a gestionar
     1640        @param user <b>{object}</b> Objeto que contiene los datos del usuario que realiza la acción
     1641        @param args <b>{tupla}</b> Tupla con argumentos opcionales
     1642        @param kwargs <b>{dic}</b> Diccionario con filtros opcionales
     1643        @return Devuelve el resultado de la acción con su correspondiente mensaje
     1644        """
     1645       
     1646        load_file = pyexcel.get_sheet(file_name=file)
     1647        anho_base, errors, result, message = '', '', True, ''
     1648        load_data_msg = str(_("Datos Cargados"))
     1649
     1650        ## Se asigna un valor al año base
     1651        anho_base = kwargs['anho_base'] if 'anho_base' in kwargs else ''
     1652       
     1653        for row in load_file.row[2:]:
     1654            try:
     1655                ## Se crea el registro base
     1656                balanza_base, created = BalanzaComercialBase.objects.update_or_create(
     1657                    anho_base=anho_base,
     1658                    anho=row[1],
     1659                    trimestre=row[0],
     1660                    tipo=kwargs['tipo'],
     1661                    dominio=kwargs['dominio'])
     1662               
     1663                ## Se crean las balanzas para precios corrientes (bs) y precios constantes
     1664                if(kwargs['dominio']!='BD' and kwargs['tipo']!='PI'):
     1665                    ## Se crea el registro para Exportaciones de bienes FOB
     1666                    BalanzaComercialDatos.objects.update_or_create(balanza = balanza_base, tipo="EB", defaults={
     1667                        'publico_petroleo':check_val_data(row[2]),
     1668                        'publico_no_petroleo':check_val_data(row[3]),
     1669                        'privado_petroleo':check_val_data(row[4]),
     1670                        'privado_no_petroleo':check_val_data(row[5]),
     1671                    })
     1672                   
     1673                    ## Se crea el registro para Importaciones de Bienes CIF
     1674                    BalanzaComercialDatos.objects.update_or_create(balanza = balanza_base, tipo="IB", defaults={
     1675                        'publico_petroleo':check_val_data(row[7]),
     1676                        'publico_no_petroleo':check_val_data(row[8]),
     1677                        'privado_petroleo':check_val_data(row[9]),
     1678                        'privado_no_petroleo':check_val_data(row[10]),
     1679                    })
     1680                   
     1681                    ## Se crea el registro de las exportaciones/importaciones de servicios
     1682                    BalanzaComercialServicios.objects.update_or_create(balanza = balanza_base, defaults={
     1683                        'exportacion_servicio': check_val_data(row[6]),
     1684                        'importacion_servicio': check_val_data(row[11]),
     1685                    })
     1686                ## Se crea la balanza para el índice de precios implícitos
     1687                elif(kwargs['tipo']=='PI'):
     1688                    ## Se crea el registro para los precios implícitos
     1689                    BalanzaComercialPrecioImplicito.objects.update_or_create(balanza = balanza_base, defaults={
     1690                        'importacion_publica':check_val_data(row[11]),
     1691                        'importacion_privada':check_val_data(row[14]),
     1692                        'exportacion_publica':check_val_data(row[3]),
     1693                        'exportacion_privada':check_val_data(row[6]),
     1694                        'importacion_bien':check_val_data(row[10]),
     1695                        'exportacion_bien':check_val_data(row[2]),
     1696                    })
     1697                   
     1698                    ## Se crea el registro para Exportaciones de bienes FOB
     1699                    BalanzaComercialDatos.objects.update_or_create(balanza = balanza_base, tipo="EB", defaults={
     1700                        'publico_petroleo':check_val_data(row[4]),
     1701                        'publico_no_petroleo':check_val_data(row[5]),
     1702                        'privado_petroleo':check_val_data(row[7]),
     1703                        'privado_no_petroleo':check_val_data(row[8]),
     1704                    })
     1705                   
     1706                    ## Se crea el registro para Importaciones de Bienes CIF
     1707                    BalanzaComercialDatos.objects.update_or_create(balanza = balanza_base, tipo="IB", defaults={
     1708                        'publico_petroleo':check_val_data(row[12]),
     1709                        'publico_no_petroleo':check_val_data(row[13]),
     1710                        'privado_petroleo':check_val_data(row[15]),
     1711                        'privado_no_petroleo':check_val_data(row[16]),
     1712                    })
     1713                   
     1714                    ## Se crea el registro de las exportaciones/importaciones de servicios
     1715                    BalanzaComercialServicios.objects.update_or_create(balanza = balanza_base, defaults={
     1716                        'exportacion_servicio': check_val_data(row[9]),
     1717                        'importacion_servicio': check_val_data(row[17]),
     1718                    })
     1719                ## Se crea la balanza para precios corrientes (usd)
     1720                else:
     1721                    ## Se crea el registro para Exportaciones de bienes FOB
     1722                    BalanzaComercialDatos.objects.update_or_create(balanza = balanza_base, tipo="EB", defaults={
     1723                        'publico_petroleo':check_val_data(row[2]),
     1724                        'publico_no_petroleo':check_val_data(row[3]),
     1725                        'privado_petroleo':check_val_data(row[4]),
     1726                        'privado_no_petroleo':check_val_data(row[5]),
     1727                    })
     1728                    ## Se crea el registro para Exportaciones de Servicios
     1729                    BalanzaComercialDatos.objects.update_or_create(balanza = balanza_base, tipo="ES", defaults={
     1730                        'publico_petroleo':check_val_data(row[6]),
     1731                        'publico_no_petroleo':check_val_data(row[7]),
     1732                        'privado_petroleo':check_val_data(row[8]),
     1733                        'privado_no_petroleo':check_val_data(row[9]),
     1734                    })
     1735                    ## Se crea el registro para Importaciones de Bienes CIF
     1736                    BalanzaComercialDatos.objects.update_or_create(balanza = balanza_base, tipo="IB", defaults={
     1737                        'publico_petroleo':check_val_data(row[10]),
     1738                        'publico_no_petroleo':check_val_data(row[11]),
     1739                        'privado_petroleo':check_val_data(row[12]),
     1740                        'privado_no_petroleo':check_val_data(row[13]),
     1741                    })
     1742                    ## Se crea el registro para Fletes y Seguros
     1743                    BalanzaComercialDatos.objects.update_or_create(balanza = balanza_base, tipo="FS", defaults={
     1744                        'publico_petroleo':check_val_data(row[14]),
     1745                        'publico_no_petroleo':check_val_data(row[15]),
     1746                        'privado_petroleo':check_val_data(row[16]),
     1747                        'privado_no_petroleo':check_val_data(row[17]),
     1748                    })
     1749                    ## Se crea el registro para Importaciones de Servicios
     1750                    BalanzaComercialDatos.objects.update_or_create(balanza = balanza_base, tipo="IS", defaults={
     1751                        'publico_petroleo':check_val_data(row[18]),
     1752                        'publico_no_petroleo':check_val_data(row[19]),
     1753                        'privado_petroleo':check_val_data(row[20]),
     1754                        'privado_no_petroleo':check_val_data(row[21]),
     1755                    })
     1756               
     1757            except Exception as e:
     1758                errors += "- %s\n" % str(e)
     1759
     1760        if errors:
     1761            message = str(_("Error procesando datos. Verifique su correo para detalles del error"))
     1762            load_data_msg = str(_("Error al procesar datos del área Económica - Externo"))
     1763
     1764
     1765        # Envia correo electronico al usuario indicando el estatus de la carga de datos
     1766        enviar_correo(user.email, 'gestion.informacion.load.mail', EMAIL_SUBJECT_LOAD_DATA, {
     1767            'load_data_msg': load_data_msg, 'administrador': administrador, 'admin_email': admin_email,
     1768            'errors': errors
     1769        })
     1770       
     1771        return {'result': result, 'message': message}
     1772
     1773@python_2_unicode_compatible
     1774class BalanzaComercialDatos(models.Model):
     1775    """!
     1776    Clase que contiene los registros de datos de la Balanza Comercial
     1777   
     1778    @author Rodrigo Boet (rboet at cenditel.gob.ve)
     1779    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
     1780    @date 02-05-2017
     1781    @version 1.0.0
     1782    """
     1783   
     1784    ## Valor público del petróleo
     1785    publico_petroleo = models.DecimalField(
     1786        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Pública Petrólera")
     1787    )
     1788   
     1789    ## Valor no público del petróleo
     1790    publico_no_petroleo = models.DecimalField(
     1791        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Pública No Petrólera")
     1792    )
     1793   
     1794    ## Valor privado del petróleo
     1795    privado_petroleo = models.DecimalField(
     1796        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Privado Petrólero")
     1797    )
     1798   
     1799    ## Valor no privado del petróleo
     1800    privado_no_petroleo = models.DecimalField(
     1801        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Privado No Petrólero")
     1802    )
     1803   
     1804    ## Tipo de dato de la balanza
     1805    tipo = models.CharField(max_length=2, choices=BALANZA_DATOS)
     1806   
     1807    ## Relación con la balanza base
     1808    balanza = models.ForeignKey(BalanzaComercialBase)
     1809   
     1810@python_2_unicode_compatible
     1811class BalanzaComercialServicios(models.Model):
     1812    """!
     1813    Clase que contiene los registros de datos de la Balanza Comercial
     1814   
     1815    @author Rodrigo Boet (rboet at cenditel.gob.ve)
     1816    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
     1817    @date 02-05-2017
     1818    @version 1.0.0
     1819    """
     1820   
     1821    ## Valor de importacion del servicio
     1822    exportacion_servicio = models.DecimalField(
     1823        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Exportaciones de Servicios")
     1824    )
     1825   
     1826    ## Valor de exportación del servicio
     1827    importacion_servicio = models.DecimalField(
     1828        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Importaciones de Servicios")
     1829    )
     1830   
     1831    ## Relación con la balanza base
     1832    balanza = models.ForeignKey(BalanzaComercialBase)
     1833   
     1834@python_2_unicode_compatible
     1835class BalanzaComercialPrecioImplicito(models.Model):
     1836    """!
     1837    Clase que contiene los registros de datos de Precios Implicitos de la Balanza Comercial
     1838   
     1839    @author Rodrigo Boet (rboet at cenditel.gob.ve)
     1840    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
     1841    @date 03-05-2017
     1842    @version 1.0.0
     1843    """
     1844    ## Valor público de la importación
     1845    importacion_publica = models.DecimalField(
     1846        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Importaciones Públicas")
     1847    )
     1848   
     1849    ## Valor privado de la importación
     1850    importacion_privada = models.DecimalField(
     1851        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Importaciones Privadas")
     1852    )
     1853   
     1854    ## Valor público de la exportación
     1855    exportacion_publica = models.DecimalField(
     1856        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Exportaciones Públicas")
     1857    )
     1858   
     1859    ## Valor privado de la exportación
     1860    exportacion_privada = models.DecimalField(
     1861        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Exportaciones Privadas")
     1862    )
     1863   
     1864    ## Valor de importación de los bienes
     1865    importacion_bien = models.DecimalField(
     1866        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Importaciones de Bienes CIF")
     1867    )
     1868   
     1869    ## Valor de exportación de los bienes
     1870    exportacion_bien = models.DecimalField(
     1871        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Exportaciones de Bienes FOB")
     1872    )
     1873   
     1874    ## Relación con la balanza base
     1875    balanza = models.ForeignKey(BalanzaComercialBase)
  • economico/templates/economico.balanza.comercial.html

    r3957a55 re50220a  
    2424            </div>
    2525            <div class="row separador-row">
    26                 <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1 col-xs-offset-3 col-sm-offset-3 col-md-offset-3 col-lg-offset-3">
     26                <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1 col-xs-offset-2 col-sm-offset-2 col-md-offset-2 col-lg-offset-2">
    2727                    <label for="{{ form.tipo.auto_id }}" class="control-label">
    2828                        {{ form.tipo.label }}
    2929                    </label>
    3030                </div>
    31                 <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1">{{ form.tipo }}</div>
     31                <div class="col-xs-2 col-sm-2 col-md-2 col-lg-2">{{ form.tipo }}</div>
    3232                <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1">
    3333                    <label for="{{ form.dominio.auto_id }}" class="control-label">
     
    3535                    </label>
    3636                </div>
    37                 <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1">{{ form.dominio }}</div>
     37                <div class="col-xs-2 col-sm-2 col-md-2 col-lg-2">{{ form.dominio }}</div>
    3838                <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1">
    3939                    <label for="{{ form.anho_base.auto_id }}" class="control-label">
     
    4343                <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1">{{ form.anho_base }}</div>
    4444            </div>
    45             <div class="row separador-row">
    46                 <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1 col-xs-offset-6 col-sm-offset-6 col-md-offset-6 col-lg-offset-6 text-center">
    47                     <label class="control-label">{% trans 'Trimestral' %}</label>
    48                 </div>
    49                 <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1 text-center">
    50                     <label class="control-label">{% trans 'Año' %}</label>
    51                 </div>
    52             </div>
    53             <div class="row separador-row">
    54                 <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1 col-xs-offset-4 col-sm-offset-4 col-md-offset-4 col-lg-offset-4">
    55                     <label class="control-label">{% trans 'Período' %}</label>
    56                 </div>
    57                 <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1">
    58                     <label for="{{ form.periodo_trimestre_ini.auto_id }}" class="control-label">
    59                         {{ form.periodo_trimestre_ini.label }}
    60                     </label>
    61                 </div>
    62                 <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1">{{ form.periodo_trimestre_ini }}</div>
    63                 <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1">{{ form.periodo_anho_ini }}</div>
    64             </div>
    65             <div class="row separador-row">
    66                 <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1 col-xs-offset-5 col-sm-offset-5 col-md-offset-5 col-lg-offset-5">
    67                     <label for="{{ form.periodo_semana_fin.auto_id }}" class="control-label">
    68                         {{ form.periodo_trimestre_fin.label }}
    69                     </label>
    70                 </div>
    71                 <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1">{{ form.periodo_trimestre_fin }}</div>
    72                 <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1">{{ form.periodo_anho_fin }}</div>
    73             </div>
    74             {% include 'base.down.up.files.html' %}
     45                        <div id="periodo" style="display: none;">
     46                                <div class="row separador-row">
     47                                        <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1 col-xs-offset-6 col-sm-offset-6 col-md-offset-6 col-lg-offset-6 text-center">
     48                                                <label class="control-label">{% trans 'Trimestral' %}</label>
     49                                        </div>
     50                                        <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1 text-center">
     51                                                <label class="control-label">{% trans 'Año' %}</label>
     52                                        </div>
     53                                </div>
     54                                <div class="row separador-row">
     55                                        <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1 col-xs-offset-4 col-sm-offset-4 col-md-offset-4 col-lg-offset-4">
     56                                                <label class="control-label">{% trans 'Período' %}</label>
     57                                        </div>
     58                                        <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1">
     59                                                <label for="{{ form.periodo_trimestre_ini.auto_id }}" class="control-label">
     60                                                        {{ form.periodo_trimestre_ini.label }}
     61                                                </label>
     62                                        </div>
     63                                        <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1">{{ form.periodo_trimestre_ini }}</div>
     64                                        <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1">{{ form.periodo_anho_ini }}</div>
     65                                </div>
     66                                <div class="row separador-row">
     67                                        <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1 col-xs-offset-5 col-sm-offset-5 col-md-offset-5 col-lg-offset-5">
     68                                                <label for="{{ form.periodo_semana_fin.auto_id }}" class="control-label">
     69                                                        {{ form.periodo_trimestre_fin.label }}
     70                                                </label>
     71                                        </div>
     72                                        <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1">{{ form.periodo_trimestre_fin }}</div>
     73                                        <div class="col-xs-1 col-sm-1 col-md-1 col-lg-1">{{ form.periodo_anho_fin }}</div>
     74                                </div>
     75                        </div>
     76                        <div id="upload" style="display: none;">
     77                                {% include 'base.down.up.files.html' with url_down='/gestion-informacion/ajax/descargar_archivo' url_up='/gestion-informacion/ajax/cargar_archivo' app='economico' mod='BalanzaComercialBase' %}
     78                        </div>
    7579        </div>
    7680    </div>
    7781{% endblock %}
     82
     83{% block extra_footer %}
     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 periodo_mes_ini = $("#{{ form.periodo_trimestre_ini.auto_id }}");
     89        var periodo_mes_fin = $("#{{ form.periodo_trimestre_fin.auto_id }}");
     90        var periodo_anho_ini = $("#{{ form.periodo_anho_ini.auto_id }}");
     91        var periodo_anho_fin = $("#{{ form.periodo_anho_fin.auto_id }}");
     92
     93        /**
     94         * Función que configura los filtros de acuerdo a la selección del usuario
     95         */
     96        function set_filters() {
     97            var filters = $("#filters"), json_filter = '';
     98                       
     99                        if (tipo.val()) {
     100                json_filter += "\"tipo\": \"" + tipo.val() + "\",";
     101            }
     102            if (dominio.val()) {
     103                json_filter += "\"dominio\": \"" + dominio.val() + "\",";
     104            }
     105            if (anho_base.val()) {
     106                json_filter += "\"anho_base\": \"" + anho_base.val() + "\",";
     107            }
     108            if (periodo_mes_ini.val()) {
     109                json_filter += "\"trimestre__gte\": \"" + periodo_mes_ini.val() + "\",";
     110            }
     111            if (periodo_mes_fin.val()) {
     112                json_filter += "\"trimestre__lte\": \"" + periodo_mes_fin.val() + "\",";
     113            }
     114            if (periodo_anho_ini.val()) {
     115                json_filter += "\"anho__gte\": \"" + periodo_anho_ini.val() + "\",";
     116            }
     117            if (periodo_anho_fin.val()) {
     118                json_filter += "\"anho__lte\": \"" + periodo_anho_fin.val() + "\",";
     119            }
     120
     121            if (json_filter) {
     122                json_filter = json_filter.slice(0, -1);
     123                filters.val(json_filter);
     124            }
     125                       
     126                        // Validación de los campos ocultos
     127                        var aprobado = false;
     128                        // Se valida mostrar y habilitar los períodos
     129                        if (tipo.val()=='PR' && (dominio.val()=='BB' || dominio.val()=='BD')) {
     130                enable_periodo_bc(true);
     131                                $('#periodo').show();
     132                                aprobado = true;
     133            }
     134                        else if ((tipo.val()=='PC' || tipo.val()=='PI') && anho_base.val()!='') {
     135                enable_periodo_bc(true);
     136                                $('#periodo').show();
     137                                aprobado = true;
     138            }
     139                        else{
     140                                enable_periodo_bc(false);
     141                                $('#periodo').hide();
     142                                aprobado = false;
     143                        }
     144                        // Se valida mostrar el formulario de descarga
     145                        if (periodo_mes_ini.val()!='' && periodo_mes_fin.val()!='' && periodo_anho_ini.val()!=''
     146                                && periodo_anho_fin.val()!='') {
     147                                var anho_trimestre = validar_anho_trimestre();
     148                if (aprobado && anho_trimestre) {
     149                                        $('#upload').show();
     150                                }
     151                                else{
     152                                        $('#upload').hide();
     153                                }
     154            }
     155                       
     156        }
     157
     158        $(document).ready(function() {
     159                        tipo.on('change', function() { set_filters() });
     160            dominio.on('change', function() { set_filters() });
     161            anho_base.on('change', function() { set_filters() });
     162            periodo_mes_ini.on('change', function() { set_filters() });
     163            periodo_mes_fin.on('change', function() { set_filters() });
     164            periodo_anho_ini.on('change', function() { set_filters() });
     165            periodo_anho_fin.on('change', function() { set_filters() });
     166        });
     167    </script>
     168{% endblock %}
  • economico/templates/economico.cuenta.capital.html

    r8ec1e94 re50220a  
    1717                        <p>
    1818                        {% blocktrans %}
    19                             Para cargar los datos asociados a la <b>Balanza Comercial</b> seleccione el dominio.
     19                            Para cargar los datos asociados a la <b>Cuenta Capital</b> seleccione el dominio.
    2020                        {% endblocktrans %}
    2121                    </p>
Nota: Vea TracChangeset para ayuda en el uso del visor de conjuntos de cambios.