- Timestamp:
- Oct 27, 2015, 12:50:16 PM (9 years ago)
- Branches:
- master
- Children:
- 61dfe29
- Parents:
- 2cbc62f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
apps/simulacion/matrizip/views.py
r2e0c3e2 r6c20a0f 21 21 22 22 from django.template.context import RequestContext 23 from django.http import HttpResponse 23 24 from django.shortcuts import render_to_response 24 25 from django.conf import settings 26 from django.utils.translation import ugettext_lazy as _ 27 from django.db.models import Sum 28 from django.db.models.loading import get_model 25 29 from apps.comun.functions import render_cadena 26 30 from apps.comun.models import CodigoAran 31 from apps.comun.constantes import MSG_NOT_AJAX 27 32 from apps.simulacion.models import ConvertirActividadACIIU, ConvertirCodigoArancelario 28 33 from apps.simulacion.sigesic.models import UnidadEconomica, Producto 29 from apps.simulacion.matrizip.models import ProduccionMIP 34 from apps.simulacion.matrizip.models import ProduccionMIP, UtilizacionMIP, ActividadesImportacion, \ 35 Productos as ProductosMIP 30 36 import os 37 import json 38 31 39 32 40 def graficar_matriz(request): … … 92 100 "username":request.user, "existe":existe,"rif":rif,'ahora':ahora, 'matriz':True, 'prod':pr 93 101 }, context_instance=RequestContext(request)) 102 103 104 def datos_produccion(request): 105 try: 106 if not request.is_ajax(): 107 return HttpResponse(json.dumps({'resultado': False, 'error': MSG_NOT_AJAX})) 108 109 id_prod = request.GET.get('id_prod', None) 110 rif = request.GET.get('rif', None) 111 112 if not id_prod or not rif: 113 return HttpResponse(json.dumps({ 114 'resultado': False, 'error': _(u"No existe datos de producción en la matriz insumo / producto.") 115 })) 116 117 datos = { 118 'produccion': [], 119 'utilizacion': [], 120 'importacion': [] 121 } 122 123 ue = UnidadEconomica.objects.using('sigesic').get(rif=rif) 124 ae_ciiu = ue.actividadciiu_set.get(activo=True, principal=True) 125 actividad = {'codigo': ae_ciiu.ciiu_id, 'descripcion': ae_ciiu.ciiu.descripcion} 126 pr = Producto.objects.using('sigesic').get(pk=id_prod) 127 cod_aran = CodigoAran.objects.get(pk=pr.codigo_aran_id) 128 ca = ConvertirCodigoArancelario.objects.get(codigo=cod_aran) 129 130 produccion_total, utilizacion_total, importacion_total = 0, 0, 0 131 132 if ca: 133 cod_pr = ca.codigo_producto 134 for prdlen in range(1,3): 135 if cod_pr.__len__() <= prdlen: 136 cod_pr = "0%s" % cod_pr 137 138 139 actividades = lambda x, y: [ 140 p_mip.codigo_actividad_id 141 for p_mip in get_model('matrizip', y).objects.using('matrizip_1997').filter(codigo_producto=x) 142 ] 143 productos = lambda x, y: [ 144 p.codigo_producto_id 145 for p in get_model('matrizip', y).objects.using('matrizip_1997').filter(codigo_actividad__in=x).distinct('codigo_producto') 146 ] 147 produccion_total = ProduccionMIP.objects.using('matrizip_1997').filter(codigo_producto__in=productos(actividades(cod_pr,'ProduccionMIP'),'ProduccionMIP')).aggregate(total_produccion=Sum('prod_mill_bs')) 148 for prdmip in ProduccionMIP.objects.using('matrizip_1997').filter(codigo_producto__in=productos(actividades(cod_pr,'ProduccionMIP'),'ProduccionMIP')).distinct('codigo_producto'): 149 for p in ProduccionMIP.objects.using('matrizip_1997').filter(codigo_producto=prdmip.codigo_producto_id).values('codigo_producto').annotate(total_produccion=Sum('prod_mill_bs')): 150 datos['produccion'].append( 151 { 152 'total_produccion': str(p['total_produccion']), 153 'codigo_producto': str(p['codigo_producto']), 154 'descripcion': ProductosMIP.objects.using('matrizip_1997').get(codigo_producto=p['codigo_producto']).descripcion, 155 'porcentaje': str(round((p['total_produccion'] * 100) / produccion_total['total_produccion'], 2)) 156 } 157 ) 158 159 utilizacion_total = UtilizacionMIP.objects.using('matrizip_1997').filter(codigo_producto__in=productos(actividades(cod_pr,'UtilizacionMIP'),'UtilizacionMIP')).aggregate(total_utilizacion=Sum('util_mill_bs')) 160 for utlmip in UtilizacionMIP.objects.using('matrizip_1997').filter(codigo_producto__in=productos(actividades(cod_pr,'UtilizacionMIP'),'UtilizacionMIP')).distinct('codigo_producto'): 161 for u in UtilizacionMIP.objects.using('matrizip_1997').filter(codigo_producto=utlmip.codigo_producto_id).values('codigo_producto').annotate(total_utilizacion=Sum('util_mill_bs')): 162 datos['utilizacion'].append( 163 { 164 'total_utilizacion': str(u['total_utilizacion']), 165 'codigo_producto': str(u['codigo_producto']), 166 'descripcion': ProductosMIP.objects.using('matrizip_1997').get(codigo_producto=u['codigo_producto']).descripcion, 167 'porcentaje': str(round((u['total_utilizacion'] * 100) / utilizacion_total['total_utilizacion'], 2)) 168 } 169 ) 170 171 importacion_total = ActividadesImportacion.objects.using('matrizip_1997').filter(codigo_producto__in=productos(actividades(cod_pr,'ActividadesImportacion'),'ActividadesImportacion')).aggregate(total_importacion=Sum('monto_mill_bs')) 172 for imp in ActividadesImportacion.objects.using('matrizip_1997').filter(codigo_producto__in=productos(actividades(cod_pr,'ActividadesImportacion'),'ActividadesImportacion')).distinct('codigo_producto'): 173 for i in ActividadesImportacion.objects.using('matrizip_1997').filter(codigo_producto=imp.codigo_producto_id).values('codigo_producto').annotate(total_importacion=Sum('monto_mill_bs')): 174 datos['importacion'].append( 175 { 176 'total_importacion': str(i['total_importacion']), 177 'codigo_producto': str(i['codigo_producto']), 178 'descripcion': ProductosMIP.objects.using('matrizip_1997').get(codigo_producto=i['codigo_producto']).descripcion, 179 'porcentaje': str(round((i['total_importacion'] * 100) / importacion_total['total_importacion'], 2)) 180 } 181 ) 182 183 184 185 return HttpResponse(json.dumps({ 186 'resultado': True, 'ae_ciiu': actividad, 'produccion': datos['produccion'], 187 'produccion_total': str(produccion_total['total_produccion']), 188 'utilizacion': datos['utilizacion'], 'utilizacion_total': str(utilizacion_total['total_utilizacion']), 189 'importacion': datos['importacion'], 'importacion_total': str(importacion_total['total_importacion']) 190 })) 191 192 except Exception, e: 193 print e 194 #logger.error(_(u"Error al procesar la solicitud de simulación. Detalles: %s") % e) 195 return HttpResponse(json.dumps({'resultado': False, 'error': e}))
Note: See TracChangeset
for help on using the changeset viewer.