def choices_for_request(self):
     q = self.request.GET.get('q', '')
     empresa = nombre_empresa(self.request)
     choices = Terceros.objects.filter(tipotercero__descripcion="CLIENTES",
                                       empresa=empresa['nombre_empresa'])
     if q:
         choices = choices.filter(denominacion__icontains=q)
     return choices
    def choices_for_request(self):
        q = self.request.GET.get('q', '')
        empresa = nombre_empresa(self.request)

        choices = Lotes.objects.filter(empresa=empresa['nombre_empresa'])
        if q:
            choices = choices.filter(
                Q(producto__denomina__icontains=q)
                | Q(referencia__icontains=q))
        return choices
    def choices_for_request(self):
        q = self.request.GET.get('q', '')
        lote = self.request.GET.get('lotes', None)
        empresa = nombre_empresa(self.request)

        choices = self.choices.filter(empresa=empresa['nombre_empresa'])

        if lote:
            choices = choices.filter(lotes=lote)
        if q:
            choices = choices.filter(denomina__icontains=q)

        return self.order_choices(choices)[0:self.limit_choices]
示例#4
0
 def get_queryset(self):
     id     = self.kwargs['pid']
     modelo = self.kwargs['pmodelo']
     tpid   = self.kwargs['ptpid']
     objeto = nombre_empresa(self.request)
     self.acciones["empresa"] = objeto['nombre_empresa']
     self.acciones ['id']   = id
     objeto    = ContentType.objects.get(model=modelo)
     idmodelo = objeto.id
     if tpid =="0": #Discrimina si tiene que hacer referencia a un tipo de plan de control especifico
         q = { "content_type_id" : idmodelo} #Filtra el reporte a la tabla
     else:
         q = { "content_type_id" : idmodelo, "tpplancontrol_id" : tpid} #Filtra el reporte a la tabla y al tipo de plan de control
     return Informes.objects.filter(**q)
    def choices_for_request(self):
        q = self.request.GET.get('q', '')
        empresa = nombre_empresa(self.request)

        choices = Lotes.objects.filter(empresa=empresa['nombre_empresa'])
        # Obtengo el stock actual
        stock = StockActual.objects.filter(Q(peso__gt=0)
                                           | Q(cant__gt=0)).values_list('id')
        objectStock = choices.in_bulk(stock)
        keys = objectStock.keys()

        # Filtro los lotes si tienen stock
        choices = choices.filter(pk__in=keys)
        if q:
            choices = choices.filter(
                Q(producto__denomina__icontains=q)
                | Q(referencia__icontains=q))
        return choices
示例#6
0
def impresion(request,pid,id):
    # Solo se puede pasar un parametro al reporte , SOLO ID SOLO ID, !CUIDADO!
    # id valor del parametro a pasar al  informe sirve para su generacion
    #pid valor de id de detalles infomre sirve para generar entrada de parametros para el informe
    #Verificar si existen paramaetros a mostrar ......
    nombreEmpresa = nombre_empresa(request)
    empresa = nombreEmpresa['nombre_empresa']
    pempresa = empresa.pk
    try:
        informe = Informes.objects.get(pk=pid)
        print informe.content_type.model
        if not comprobar_autorizacion_reportes(informe.content_type.model,id,pempresa) :
            raise Http404
        numpara = DetalleInformes.objects.filter(informe = pid).count()
    except Informes.DoesNotExist:
        raise Http404
    if numpara == 0:
            if len(informe.nombprocede) != 0:
                from django.db import connection
                sql    =  informe.nombprocede
                cursor = connection.cursor()
                cursor.execute(sql)
                cursor.close()
            camino = informe.url
            return HttpResponse(llamareporte(informe.nombrereport,informe.url,[]), content_type='application/pdf')
    else:
        try:
            informe          = Informes.objects.get(pk=pid)
            parametros       = DetalleInformes.objects.filter(informe = pid, mostrar=True).exclude(nombparametro='pid')
            numpara          = parametros.count()
            formInformes     = ParametrosForms(request.POST or None,pidinfo=pid,idconsulta=id)
        except Informes.DoesNotExist:
            raise Http404
        if numpara ==0: #Solo existe una opcion para un parametro sin ventana de entrada de datos de parametros
            dinforme  = DetalleInformes.objects.filter(informe =pid ,mostrar=False)
            if dinforme.count() == 1:
                cd=[]
                if dinforme[0].query_modelo is not None:
                    if len(dinforme[0].query_modelo) !=0:
                        id = eval( dinforme[0].query_modelo )                                              
                cd.append({ 'nombparametro': dinforme[0].nombparametro, 'valor' : str(id) })
                print cd
                return HttpResponse(llamareporte(informe.nombrereport,informe.url,cd), content_type='application/pdf')

        else:
            #Llama a ventana para introducir parametros.....
            if request.method == 'POST':
                cd=[]
                if formInformes.is_valid():
                    paraform = formInformes.cleaned_data
                    if len(informe.nombprocede) != 0: #Llamada a procedimientos em caso de que exista
                        from django.db import connection
                        var=[]
                        i=0
                        for para in  cd:
                            var.append(str(para['valor']))
                            cursor   = connection.cursor()
                            #ret      = cursor.callproc(str(informe.nombprocede),(var[1],var[0]))
                            ret      = cursor.callproc(str(informe.nombprocede))
                            cursor.close()
                    else:
                        dinforme  = DetalleInformes.objects.filter(informe=pid)
                        for para in dinforme:
                                print "----------- parametros"
                                print paraform
                                print "Valor parametros %s" % paraform[para.nombparametro]
                                print "Nombre parametos %s " % para.nombparametro
                                print para.query_modelo
                                id=0
                                if para.query_modelo is not None and  len(para.query_modelo) !=0:
                                            id = eval( para.query_modelo )
                                            if id is not None:
                                                id= str(id)
                                            else:
                                                id="0"
                                else:
                                    id =paraform[para.nombparametro]

                                cd.append({ 'nombparametro': para.nombparametro, 'valor' : id  })
                                print cd


                    return  HttpResponse(llamareporte(informe.nombrereport,informe.url,cd), content_type='application/pdf')
                else:
                    print formInformes.errors
                #recorremos el post construyendo la cadena de parametros para anexar a la url del informe.



        return render_response( request,"reportes/parametros.html",{'form': formInformes,})
示例#7
0
def ConsultaExistenciasView(request):

    request.breadcrumbs(generarBreadCrumb(request.path_info))
    #template_name = "trazabilidad/detalleslotes.html"
    template_name = "trazabilidad/consulta_existencias.html"
    auxiliar = {"etiqueta": "Existencias/Trazabilidad"}
    busqueda = None
    formulario = None
    stockConsumido = 0
    stockCon = ""
    stockCantidad = 0
    stockCan = ""
    stockPeso = 0
    stockPes = ""
    urlImpresion = None
    form1 = ConsultaExistenciasForm()
    formdetail2 = None
    formdetail1 = None
    if 'limpiar' in request.POST:
        return HttpResponseRedirect('/trazabilidad/existencias')

    if 'FindAll' in request.POST:
        formulario = 'productoExistencias'
        empresa = nombre_empresa(request)['nombre_empresa']
        informe = Informes.objects.get(
            descripcion="CONTROL DE EXISTENCIAS TOTAL")
        urlImpresion = '/reportes/impresion/%s/%s' % (informe.pk, empresa.pk)
        empresa = nombre_empresa(request)['nombre_empresa']
        stockActual = StockActual.objects.filter(empresa_id=empresa.pk)
        for stock in stockActual:
            if stock.peso == None:
                stockCantidad = stockCantidad + stock.cant
                if stockCantidad != 1:
                    stockCan = ("%s unidades") % stockCantidad
                else:
                    stockCan = ("%s unidad") % stockCantidad
            else:
                stockPeso = stockPeso + stock.peso
                stockPes = ("%s Kg.") % stockPeso
        formdetail2 = None
        formdetail1 = None
        return render_to_response(template_name, {
            'form1': form1,
            'formdetail2': formdetail2,
            'formdetail1': formdetail1,
            'auxiliar': auxiliar,
            'busqueda': busqueda,
            'formulario': formulario,
            'stockConsumido': stockCon,
            'stockCantidad': stockCan,
            'stockPeso': stockPes,
            'urlImpresion': urlImpresion,
            'stockActual': stockActual
        },
                                  context_instance=RequestContext(request))

    if request.method == 'POST':
        form1 = ConsultaExistenciasForm(request.POST or None)
        if form1.is_valid():
            lote = form1.cleaned_data['lote']
            if lote:
                busqueda = lote
                informe = Informes.objects.get(
                    descripcion="CONTROL DE TRAZABILIDAD")
                urlImpresion = '/reportes/impresion/%s/%s' % (informe.pk,
                                                              lote.pk)
                formulario = 'lote'
                detalbsal = DetalleAlbaran.objects.filter(
                    lote=lote, albaran__tpdoc__abrv="ALBOUT")
                for det in detalbsal:
                    if det.cantidad == None:
                        stockConsumido = stockConsumido + det.peso
                        stockCon = ("%s Kg.") % stockConsumido
                    else:
                        stockConsumido = stockConsumido + det.cantidad
                        if stockConsumido != 1:
                            stockCon = ("%s unidades") % stockConsumido
                        else:
                            stockCon = ("%s unidad") % stockConsumido

                formdetail2 = LotesDetAlbFormset(
                    initial=detalbsal.values('referencia', 'id'))
                detalbent = DetalleAlbaran.objects.filter(
                    lote=lote, albaran__tpdoc__abrv="ALBIN")
                formdetail1 = LotesDetAlbFormset(
                    initial=detalbent.values('referencia', 'id'))

            producto = form1.cleaned_data['producto']
            if producto:
                formulario = 'producto'
                busqueda = producto
                informe = Informes.objects.get(
                    descripcion="CONTROL DE EXISTENCIAS")
                urlImpresion = '/reportes/impresion/%s/%s' % (informe.pk,
                                                              producto.pk)
                lotes = Lotes.objects.filter(producto=producto)
                formdetail2 = LotesFormset(
                    initial=lotes.values('referencia', 'id'))
                formdetail1 = None
                for lot in lotes:
                    stockActual = StockActual.objects.get(id=lot.id)
                    if stockActual.peso == None:
                        stockCantidad = stockCantidad + stockActual.cant
                        if stockCantidad != 1:
                            stockCan = ("%s unidades") % stockCantidad
                        else:
                            stockCan = ("%s unidad") % stockCantidad
                    else:
                        stockPeso = stockPeso + stockActual.peso
                        stockPes = ("%s Kg.") % stockPeso

    else:
        form1 = ConsultaExistenciasForm()
        formdetail1 = None
        formdetail2 = None

    return render_to_response(template_name, {
        'form1': form1,
        'formdetail2': formdetail2,
        'formdetail1': formdetail1,
        'auxiliar': auxiliar,
        'busqueda': busqueda,
        'formulario': formulario,
        'stockConsumido': stockCon,
        'stockCantidad': stockCan,
        'stockPeso': stockPes,
        'urlImpresion': urlImpresion
    },
                              context_instance=RequestContext(request))