Conjunto de cambios 369ef90 en seiven para economico


Ignorar:
Fecha y hora:
09/08/2017 11:19:00 (hace 7 años)
Autor:
Luis Barrios <nikeven@…>
Branches:
master
Children:
396acb9
Parents:
8af6001
Mensaje:

Estabilizado Modulo de Precios - carga y descarga de archivos

Fichero:
1 editado

Leyenda

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

    r8af6001 r369ef90  
    2424from base.constant import (
    2525    DOMINIO, PERIODICIDAD, TRIMESTRES, MESES, ECONOMICO_SUB_AREA, CONVERT_MES, EMAIL_SUBJECT_LOAD_DATA,EMAIL_SUBJECT_CM_RESULT,
    26     TIPO_BALANZA_COMERCIAL, DOMINIO_BALANZA_COMERCIAL, BALANZA_DATOS, INVERSION_CARTERA, SECTOR_DEUDA
     26    TIPO_BALANZA_COMERCIAL, DOMINIO_BALANZA_COMERCIAL, BALANZA_DATOS, INVERSION_CARTERA, SECTOR_DEUDA,CONVERT_DOMINIO
    2727)
    2828from base.functions import enviar_correo, check_val_data
     
    6363    fecha = models.DateField(null=True, verbose_name=_("Fecha"))
    6464
    65     class Meta:
    66         unique_together = ("anho", "mes")
    67 
    6865    def gestion_init(self, *args, **kwargs):
    6966        """!
     
    7168
    7269        @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve)
     70        @author Ing. Luis Barrios (lbarrios at cenditel.gob.ve)
    7371        @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
    7472        @date 05-12-2016
     73        @date 09-08-2017
    7574        @param self <b>{object}</b> Objeto que instancia la clase
    7675        @param args <b>{tupla}</b> Tupla con argumentos opcionales
     
    165164                ## Agrega la columna correspondiente a las ciudades
    166165                fields[0].insert(2, {'tag': '', 'cabecera': True})
    167                 fields[1].insert(2, {'tag': dominio, 'cabecera': True})
     166                fields[1].insert(2, {'tag': dominio, 'cabecera': True, 'row':2})
    168167
    169168                lst=['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre']
    170                 lst1=['Caracas','Maracay','Ciudad Guayana','Barcelona -Pto la Cruz','Valencia','Barquisimeto','Maracaibo','Mérida','Maturín','San Cristóbal','Resto Nacional']
     169                lst1=['Caracas','Maracay','Ciudad Guayana','Barcelona - Pto la Cruz','Valencia','Barquisimeto','Maracaibo','Mérida','Maturín','San Cristóbal','Resto Nacional']
    171170
    172171                x = int (kwargs['fecha__month__lte']) - int (kwargs['fecha__month__gte']) + 1 +  12 * (int(kwargs['fecha__year__lte']) - int(kwargs['fecha__year__gte']))
     
    187186                            for q in range(0,11):
    188187                                if lst1[q] == 'Caracas':
    189                                     fields.append([ {'tag': str(_(str(aux1))),'combine_row':11 ,'cabecera': True}, {'tag': str(_(str(a))), 'combine_row1':11,'cabecera': True},{'tag': str(_(str(lst1[q]))),'cabecera': True}])
     188                                    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}])
    190189                                else:
    191190                                    fields.append([{'tag':''},{'tag':''},{'tag': str(_(str(lst1[q]))),'cabecera': True}])
     
    198197
    199198        @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve)
     199        @author Ing. Luis Barrios (lbarrios at cenditel.gob.ve)
    200200        @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
    201201        @date 05-12-2016
     202        @date 09-08-2017
    202203        @param self <b>{object}</b> Objeto que instancia la clase
    203204        @param file <b>{string}</b> Ruta y nombre del archivo a gestionar
     
    208209        """
    209210        load_file = pyexcel.get_book(bookdict=kwargs['file_content'])[0]
    210         anho_base, i, col_ini, errors, result, message = '', 0, 2, '', True, ''
     211        anho_base, i, col_ini, errors, result, message = self.anho_base, 0, 2, '', True, ''
    211212        load_data_msg = str(_("Datos Cargados"))
    212213
    213         if 'dominio' in kwargs:
    214             if (kwargs['dominio'] == 'C' and load_file.row[1][2] == 'INPC') or (kwargs['dominio'] == 'N' and load_file.row[1][2] != 'INPC'):
    215                 result = False
    216         if 'anho_base' in kwargs and kwargs['anho_base'] != load_file.row[2][0]:
    217             result = False
    218         if not result:
    219             return {'result': False, 'message': str(_("El documento a cargar no es válido o no corresponde a los parámetros seleccionados"))}
     214        self.anho_base=AnhoBase.objects.get(id=kwargs['anho_base'])
    220215
    221216        for row in load_file.row[2:]:
    222217            try:
    223                 ## Asigna el año base del registro
    224                 anho_b = anho_base = row[0] if i == 0 else anho_base
    225 
    226218                ## Asigna el año de la fila que se esta procesando
    227                 anho = row[0]
     219                if row[0]!= '':
     220                    anho = row[0]
    228221
    229222                ## Asigna el número de mes
    230                 mes = [CONVERT_MES[m] for m in CONVERT_MES if m.find(row[1]) >= 0][0]
     223                if row[1]!= '':
     224                    mes = CONVERT_MES[row[1]]
     225               
     226                ## Condición que indica si el registro corresponde al año base
     227                base = True if i == 0 else False
    231228
    232229                ## Asigna la ciudad si el dominio no es nacional
    233                 ciudad = row[2] if 'dominio' in kwargs and kwargs['dominio'] == 'C' else None
    234 
     230                ciudad = CONVERT_DOMINIO[row[2]] if 'dominio' in kwargs and kwargs['dominio'] == 'C' else None
     231               
    235232                ## Asigna el INPC total para el año base
    236233                inpc = row[3] if ciudad else row[2]
    237234
    238                 ## Condición que indica si el registro corresponde al año base
    239                 base = True if i == 0 else False
    240 
    241235                ## Registro de año y mes para los filtros
    242236                fecha = datetime(int(anho), int(mes), 1)
    243 
    244                 ## Condiciones para filtrar la información a cargar según las especificaciones del usuario
    245                 if 'anho_base' in kwargs and kwargs['anho_base'] != load_file.row[2][0]:
    246                     continue
    247                 if 'fecha__month__gte' in kwargs and 'fecha__month__lte' in kwargs and kwargs[
    248                     'fecha__month__lte'] < mes < kwargs['fecha__month__gte']:
    249                     continue
    250                 elif 'fecha__month__gte' in kwargs and mes < kwargs['fecha__month__gte']:
    251                     continue
    252                 elif 'fecha__month__lte' in kwargs and mes > kwargs['fecha__month__lte']:
    253                     continue
    254                 if 'fecha__year__gte' in kwargs and 'fecha__year__lte' in kwargs and kwargs[
    255                     'fecha__year__lte'] < anho < kwargs['fecha__year__gte']:
    256                     continue
    257                 elif 'fecha__year__gte' in kwargs and anho < kwargs['fecha__year__gte']:
    258                     continue
    259                 elif 'fecha__year__lte' in kwargs and anho > kwargs['fecha__year__lte']:
    260                     continue
    261237
    262238                ## Gestión para los datos básicos de precios
    263239                real_p, created = Precios.objects.update_or_create(
    264240                    anho=anho, mes=mes, ciudad=ciudad, fecha=fecha,
    265                     defaults={ 'anho_base': anho_b, 'inpc': inpc }
     241                    defaults={ 'anho_base': self.anho_base, 'inpc': inpc }
    266242                )
    267 
    268243
    269244                ## Gestión de datos para el Índice por Grupos
     
    394369    )
    395370
    396     retaurant_hotel = models.DecimalField(
     371    restaurant_hotel = models.DecimalField(
    397372        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("(12) Restaurant y Hotel")
    398373    )
Nota: Vea TracChangeset para ayuda en el uso del visor de conjuntos de cambios.