def Alta(self, dni, total, fecha):
     try:
         if not dni is None and not fecha is None:
             c = UICliente()
             existecli = c.BuscarCliente(dni)
             if existecli:
                 sol = Solicitud(dniCliente=dni,
                                 precio_total=total,
                                 fecha_solicitud=fecha)
                 db.session.add(sol)
                 db.session.commit()
                 return sol
             else:
                 return 'cliente inexistente'
     except TypeError as ex:
         return 'Error de servicio'
def EliminarCliente(id):
    try:
        id = id  #request.args['dni']
        c = UICliente()
        rta = c.Baja(id)

        if rta == 'ok':
            response = jsonify({'msj': rta})
        else:
            response = jsonify({'msj': rta})
        response.headers.add('Access-Control-Allow-Origin', '*')
        return response

    except Exception as e:
        response = jsonify({'msj': 'Error de servicio'})
        response.headers.add('Access-Control-Allow-Origin', '*')
        return response
def addCliente():
    try:
        dni = request.json['dni']
        nombre = request.json['nombre']
        apellido = request.json['apellido']
        tel = request.json['tel']
        email = request.json['email']
        direccion = request.json['direccion']
        c = UICliente()
        rta = c.Alta(dni, nombre, apellido, tel, email, direccion)
        if rta == 'ok':
            response = jsonify({"msj": rta})
        else:
            response = jsonify({"msj": rta})
        response.headers.add('Access-Control-Allow-Origin', '*')
        return response

    except Exception as e:
        response = jsonify({'msj': 'Error de servicio'})
        response.headers.add('Access-Control-Allow-Origin', '*')
        return response
def ObtenerClientes():
    try:
        c = UICliente()
        listaClientes = c.ObtenerClientes()
        response = jsonify({
            "cliente": [{
                "dni": x.dni,
                "nombre": x.nombre,
                "apellido": x.apellido,
                "tel": x.tel,
                "email": x.email,
                "direccion": x.direccion
            } for x in listaClientes],
            'msj':
            ''
        })
        response.headers.add('Access-Control-Allow-Origin', '*')
        return response

    except Exception as e:
        response = jsonify({'msj': 'Error de servicio'})
        response.headers.add('Access-Control-Allow-Origin', '*')
        return response
def ObtenerCliente():
    try:
        dni = request.args['dni']
        c = UICliente()
        obj = c.BuscarProveedor(dni)
        if not obj.dni is None:
            response = jsonify({
                'dni': obj.dni,
                'nombre': obj.nombre,
                'apellido': obj.apellido,
                'telefono': obj.tel,
                'email': obj.email,
                'direccion': obj.direccion
            })
        else:
            response = jsonify({'msj': obj})
            response.headers.add('Access-Control-Allow-Origin', '*')
            return response

    except Exception as e:
        response = jsonify({'msj': 'Error de servicio'})
        response.headers.add('Access-Control-Allow-Origin', '*')
        return response
    def alta(self, nroSolicitud, formaPago, cuenta, nomTarjeta, nro_tarjeta,
             cant_cuotas, tipo):
        try:
            p = Factura.query.filter_by(nroSolicitud=nroSolicitud).first()
            facturacion = []
            if p is None:
                facturacion = []
                fact = Factura()
                fact.forma_pago = formaPago
                solic = Solicitud()
                solicDet = SolicitudDetalle()
                solic = Solicitud.query.filter_by(
                    nroSolicitud=nroSolicitud).first()
                if solic is None:
                    return None
                dSol = UISolicitudDetalle()
                lstSolicDet = dSol.getListDetalleSolicitud(nroSolicitud)

                if lstSolicDet is None:
                    return None
                uiCliente = UICliente()
                cliente = uiCliente.BuscarCliente(solic.dniCliente)
                if cliente is None:
                    return None

                total = 0
                lstProductos = []
                count = 0
                for value in lstSolicDet:
                    detalle = tuple()
                    #idProd = value.idProd
                    cantProd = int(value[3])

                    #Actualizo el stock de los productos a comprar
                    prod = Producto.query.filter_by(
                        idProd=value.idProd).first()
                    prod.cant_stock = (prod.cant_stock - cantProd)
                    db.session.commit()

                    totalProducto = (cantProd * prod.precio_uni)
                    total = total + totalProducto
                    detalle = (cantProd, prod.descripcion, prod.idProd,
                               prod.precio_uni, totalProducto)
                    lstProductos.insert(count, detalle)
                    count = count + 1

                    #asigno datos de la factura
                fact.tipo = tipo
                fact.total = total

                if formaPago == 'cuotas':
                    fact.cant_cuotas = cant_cuotas
                    fact.nom_tarjeta = nomTarjeta
                    fact.num_tarjeta = nro_tarjeta
                    fact.cuenta = cuenta

                # Ingreso la factura
                db.session.add(fact)
                db.session.commit()

                facturacion.insert(0, fact)
                facturacion.insert(1, cliente)
                facturacion.insert(2, lstProductos)

                #retorno los datos para emitir la factura
                return facturacion
            else:
                f = Factura.query.filter_by(nroSolicitud=nroSolicitud)
                solic = Solicitud()
                solicDet = SolicitudDetalle()
                solic = Solicitud.query.filter_by(
                    nroSolicitud=nroSolicitud).first()
                if solic is None:
                    return None
                dSol = UISolicitudDetalle()
                lstSolicDet = dSol.getListDetalleSolicitud(nroSolicitud)

                if lstSolicDet is None:
                    return None
                uiCliente = UICliente()
                cliente = uiCliente.BuscarCliente(solic.dniCliente)
                if cliente is None:
                    return None

                total = 0
                lstProductos = []
                count = 0
                for value in lstSolicDet:
                    detalle = tuple()
                    #idProd = value.idProd
                    cantProd = int(value[3])

                    #Actualizo el stock de los productos a comprar
                    prod = Producto.query.filter_by(
                        idProd=value.idProd).first()
                    prod.cant_stock = (prod.cant_stock - cantProd)
                    db.session.commit()

                    totalProducto = (cantProd * prod.precio_uni)
                    total = total + totalProducto
                    detalle = (cantProd, prod.descripcion, prod.idProd,
                               prod.precio_uni, totalProducto)
                    lstProductos.insert(count, detalle)
                    count = count + 1

                facturacion.insert(0, f)
                facturacion.insert(1, cliente)
                facturacion.insert(2, lstProductos)
                return facturacion

        except ValueError as e:
            print(e.args)
            return 'Hubo un error al agregar el producto'