def addProducto(): if request.method == 'POST': global user correo = user[0][0] idProducto = request.form['idProducto'] nombreProducto = request.form['nombreProducto'] cantidad = request.form['cantidad'] precio = request.form['precio'] categoria = request.form['categoria'] f = request.files['imagen'] filename = idProducto + correo.replace(".", "").replace("@", "") #check f.save(os.path.join(app.config["UPLOAD_IMAGE_FOLDER"], filename)) conn = getConn() crs = conn.cursor() sql = """INSERT INTO producto (idProducto,nombreProducto,cantidad,precio,categoria,correoproductor) VALUES (:idProducto,:nombreProducto,:cantidad,:precio,:categoria, :correoproductor)""" crs.execute(sql, [ idProducto, nombreProducto, cantidad, precio, str(categoria), correo ]) conn.commit() conn.close() flash('Producto agregado satisfactoriamente') return redirect(url_for('productos'))
def getBoletas(): conn = getConn() crs = conn.cursor() crs.execute( "SELECT nroboleta, rutcliente, to_char(fecha,'dd/mm/yyyy'), totalneto, idtipopago FROM ventas" ) result = crs.fetchall() boletas = {} for boleta in result: if result[0][4] == 101: tipoPago = "Efectivo" else: tipoPago = "Transferencia" crs.execute( "SELECT idproducto, cantidad FROM detalleventa where nroboleta=:nroboleta", nroboleta=boleta[0]) detalles = crs.fetchall() details = [] for detalle in detalles: dict = {"idProducto": detalle[0], "cantidad": detalle[1]} detail = dict details.append(detail) dict = { "idBoleta": boleta[0], "rutCliente": boleta[1], "fecha": boleta[2], "totalNeto": boleta[3], "tipoPago": tipoPago, "detalleVenta": details } string = 'boleta ' + str(boleta[0]) boletas[string] = dict return jsonify({'results': boletas})
def agregarCarrito(id, cant): global user #actual if len(user) > 0 and user[0][9] == "c": cantidad = cant idproducto = id correo = user[0][0] print(cantidad, idproducto, correo) conn = getConn() crs = conn.cursor() sql = """INSERT INTO carrito (cantidad, idproducto, correo) VALUES (:cantidad,:idproducto,:correo)""" crs.execute(sql, [cantidad, idproducto, correo]) conn.commit() sql = """select p.nombreproducto, c.cantidad, p.categoria, (p.precio*c.cantidad),p.idproducto, p.correoproductor from carrito c join producto p on (p.idproducto = c.idproducto) where correo = :correo""" crs.execute(sql, [correo]) data = crs.fetchall() totalCarrito = 0 for producto in data: totalCarrito += producto[3] conn.close() return redirect(url_for('carrito')) else: flash('Para agregar al carrito debe iniciar sesión como cliente') return redirect(url_for('iniciosesion'))
def perfilUsuarioEditado(): if request.method == 'POST': username = request.form['username'] rutusuario = request.form['rutusuario'] telefono1 = request.form['telefono1'] telefono2 = request.form['telefono2'] domicilio = request.form['domicilio'] global user correo = user[0][0] conn = getConn() crs = conn.cursor() sql = """update usuario set username=:username, rutusuario=:rutusuario, telefono1=:telefono1, telefono2=:telefono2, domicilio=:domicilio where correo=:correo""" crs.execute( sql, [username, rutusuario, telefono1, telefono2, domicilio, correo]) conn.commit() sql = """select correo, password, nvl(username,' '), nombre, apellido, nvl(rutusuario,' '), nvl(telefono1,' '), nvl(telefono2,' '), nvl(domicilio,' ') from usuario where correo=:correo""" crs.execute(sql, [correo]) user = crs.fetchall() return render_template('/perfil-usuario.html', user=user) if request.method == 'GET': if len(user) == 0: return render_template('/inicio-sesion.html') else: return render_template('/perfil-usuario.html', user=user)
def editarProducto(idproducto): conn = getConn() crs = conn.cursor() sql = """select idproducto, nombreproducto, cantidad, precio, categoria from producto where idproducto=:idproducto""" crs.execute(sql, [idproducto]) producto = crs.fetchall() return render_template('editar-producto.html', producto=producto)
def getNotasCredito(): conn = getConn() crs = conn.cursor() crs.execute( "SELECT nronc, rutcliente, to_char(fecha,'dd/mm/yyyy'), totalneto, nroboleta FROM reversos order by nronc" ) result = crs.fetchall() notasCredito = {} for nc in result: crs.execute( "SELECT idproducto, cantidad, motivo FROM detallereverso where nronc=:nronc", nronc=nc[0]) detalles = crs.fetchall() details = [] for detalle in detalles: dict = { "idProducto": detalle[0], "cantidad": detalle[1], "motivo": detalle[2] } detail = dict details.append(detail) dict = { "nroNotaCredito": nc[0], "rutCliente": nc[1], "fecha": nc[2], "totalNeto": nc[3], "nroBoleta": nc[4], "detalleNotaCredito": details } string = 'notaCredito ' + str(nc[0]) notasCredito[string] = dict return jsonify({"results": notasCredito})
def getOrdenesCompra(): conn = getConn() crs = conn.cursor() crs.execute( "SELECT nrooc, rutproveedor, to_char(fecha,'dd/mm/yyyy'), totalneto, codtrabajador FROM ordenescompra order by nrooc" ) result = crs.fetchall() ordenesCompra = {} for oc in result: crs.execute( "SELECT idproducto, cantidad FROM detalleoc where nrooc=:nrooc", nrooc=oc[0]) detalles = crs.fetchall() details = [] for detalle in detalles: dict = {"idProducto": detalle[0], "cantidad": detalle[1]} detail = dict details.append(detail) dict = { "nroOrdenCompra": oc[0], "rutProveedor": oc[1], "fecha": oc[2], "totalNeto": oc[3], "codTrabajador": oc[4], "detalleOrdenCompra": details } string = 'ordenCompra ' + str(oc[0]) ordenesCompra[string] = dict return jsonify({"results": ordenesCompra})
def addCompra(): conn = getConn() crs = conn.cursor() nroOperacion = request.json['nroOperacion'] nroFactura = request.json['nroFactura'] rutProveedor = request.json['rutProveedor'] fecha = request.json['fecha'] totalNeto = request.json['totalNeto'] codTrabajador = request.json['codTrabajador'] nroOrdenCompra = request.json['nroOrdenCompra'] idDepartamento = request.json['idDepartamento'] detalleCompra = request.json['detalleCompra'] sql = """INSERT INTO compras (nrooperacion,nrofactura,rutproveedor,fecha,totalneto,codtrabajador,nrooc,iddepartamento) VALUES (compra_seq.nextval,:nrofactura,:rutproveedor,TO_DATE(:fecha,'YYYY-MM-DD'),:totalNeto,:codtrabajador,:nrooc,:iddepartamento)""" crs.execute(sql, [ nroFactura, rutProveedor, fecha, totalNeto, codTrabajador, nroOrdenCompra, idDepartamento ]) print(idDepartamento) for detalle in detalleCompra: sql = """INSERT INTO detallecompra (idProducto,cantidad,nrooperacion) VALUES (:idProducto,:cantidad,compra_seq.currval)""" crs.execute(sql, [detalle['idProducto'], detalle['cantidad']]) conn.commit() conn.close() return jsonify({"message": "Compra registrada correctamente"})
def perfilProductorEditado(): if request.method == 'POST': username = request.form['username'] nombreempresa = request.form['nombreempresa'] categoriaempresa = request.form['categoriaempresa'] rutempresa = request.form['rutempresa'] razonsocial = request.form['razonsocial'] telefono1 = request.form['telefono1'] telefono2 = request.form['telefono2'] direccion = request.form['direccion'] global user correo = user[0][0] conn = getConn() crs = conn.cursor() sql = """update productor set username=:username, nombreempresa=:nombreempresa, rutempresa=:rutempresa, razonsocial=:razonsocial, telefono1=:telefono1, telefono2=:telefono2, direccion=:direccion, categoria=:categoria where correo=:correo""" crs.execute(sql, [ username, nombreempresa, rutempresa, razonsocial, telefono1, telefono2, direccion, categoriaempresa, correo ]) conn.commit() sql = """select correo, pass, nvl(username,' '), nombre, apellido, nombreempresa, razonsocial, nvl(rutempresa,' '), nvl(telefono1,' '), tipologin, nvl(telefono2,' '), nvl(direccion,' '), nvl(categoria,' ') from productor where correo=:correo""" crs.execute(sql, [correo]) user = crs.fetchall() print(user[0][12]) return render_template('/perfil-productor.html', user=user) if request.method == 'GET': if len(user) == 0: return render_template('/inicio-sesion.html') else: return render_template('/perfil-productor.html', user=user)
def home(): conn = getConn() crs = conn.cursor() sql = "SELECT * FROM producto where eliminado = 0" crs.execute(sql) data = crs.fetchall() print(data) return render_template('/index.html', productos=data)
def vistaproducto(): if request.method == 'POST': nombrebusqueda = request.form['busqueda'] conn = getConn() crs = conn.cursor() sql = """select * from producto where lower(nombreproducto) like lower('%'||:nombre||'%')""" crs.execute(sql, [nombrebusqueda]) data = crs.fetchall() return render_template('/vista-producto.html', productos=data)
def getIdNotaCredito(): conn = getConn() crs = conn.cursor() crs.execute( "SELECT last_number FROM user_sequences where sequence_name='NOTACREDITO_SEQ'" ) result = crs.fetchall() idNotaCredito = result[0][0] conn.close() return jsonify({'idNotaCredito': idNotaCredito})
def getIdCompra(): conn = getConn() crs = conn.cursor() crs.execute( "SELECT last_number FROM user_sequences where sequence_name='COMPRA_SEQ'" ) result = crs.fetchall() idCompra = result[0][0] conn.close() return jsonify({'idOperacionCompra': idCompra})
def productoresDisponibles(): conn = getConn() crs = conn.cursor() sql = """ SELECT * FROM productor where estado = 1 """ crs.execute(sql) data = crs.fetchall() print(data) return render_template('productores-disponibles.html', productores=data)
def getIdBoleta(): conn = getConn() crs = conn.cursor() crs.execute( "SELECT last_number FROM user_sequences where sequence_name='BOLETA_SEQ'" ) result = crs.fetchall() idBoleta = result[0][0] conn.close() return jsonify({'idBoleta': idBoleta})
def getBalancesVentasMensuales(): conn = getConn() crs = conn.cursor() crs.execute( """select to_char(fecha,'mm/yyyy'), sum(totalneto), sum(d.cantidad) from ventas v join detalleventa d on v.nroboleta=d.nroboleta group by to_char(fecha,'mm/yyyy') """) result = crs.fetchall() return jsonify({'results': result})
def productos(): conn = getConn() crs = conn.cursor() global user correo = user[0][0] sql = "SELECT * FROM producto where correoproductor = :correo and eliminado=0" crs.execute(sql, [correo]) data = crs.fetchall() usuario = correo.replace(".", "").replace("@", "") # imagenes = send_from_directory(app.config["UPLOAD_IMAGE_FOLDER"],filename) return render_template('/productos.html', productos=data, usuario=usuario)
def carrito(): conn = getConn() crs = conn.cursor() sql = """select p.nombreproducto, c.cantidad, p.categoria, (p.precio*c.cantidad), p.idproducto, p.correoproductor from carrito c join producto p on (p.idproducto = c.idproducto) where correo = :correo""" crs.execute(sql, [user[0][0]]) data = crs.fetchall() totalCarrito = 0 for producto in data: totalCarrito += producto[3] conn.close() return render_template('carrito.html', productos=data, totalCarrito=totalCarrito)
def quitarProductoCarrito(idproducto): idproducto = idproducto global user if len(user) == 0: return render_template('/inicio-sesion.html') else: correo = user[0][0] conn = getConn() crs = conn.cursor() sql = """delete from carrito where correo = :correo and idproducto = :idproducto""" crs.execute(sql, [correo, idproducto]) conn.commit() return redirect(url_for('carrito'))
def addCliente(): if request.method == 'POST': nombre = request.form['nombre'] apellidos = request.form['apellidos'] email = request.form['email'] contrasena = request.form['contrasena'] conn = getConn() crs = conn.cursor() sql = """INSERT INTO usuario (correo,password,nombre,apellido) VALUES (:correo,:password,:nombre,:apellido)""" crs.execute(sql, [email, contrasena, nombre, apellidos]) conn.commit() conn.close() return redirect(url_for('iniciosesion'))
def actualizarEstado(): global user correo = user[0][0] if user[0][13] == 1: estado = 0 else: estado = 1 conn = getConn() crs = conn.cursor() sql = """update productor set estado=:estado where correo=:correo""" crs.execute(sql, [estado, user[0][0]]) conn.commit() sql = """select correo, pass, nvl(username,' '), nombre, apellido, nombreempresa, razonsocial, nvl(rutempresa,' '), nvl(telefono1,' '), tipologin, nvl(telefono2,' '), nvl(direccion,' '), nvl(categoria,' '), estado from productor where correo=:correo""" crs.execute(sql, [correo]) user = crs.fetchall() return redirect(url_for('perfilUsuario'))
def balanceGeneral(): if 'username' in session: conn = getConn() crs = conn.cursor() crs.execute( "SELECT c.descripcion, c.tipocuenta, sum(d.debe), sum(d.haber) from cuentas c join detalleasiento d on c.idcuenta=d.idcuenta group by c.descripcion,c.tipocuenta" ) results = crs.fetchall() cuentas = [] for result in results: res = list(result) if result[2] > result[3]: deudor = result[2] - result[3] acreedor = 0 elif result[2] < result[3]: deudor = 0 acreedor = result[3] - result[2] else: deudor = 0 acreedor = 0 res.append(deudor) res.append(acreedor) if result[1] == 'Activo' or result[1] == 'Pasivo': res.append(deudor) res.append(acreedor) res.append(0) res.append(0) else: res.append(0) res.append(0) res.append(deudor) res.append(acreedor) cuentas.append(res) totales = [] for i in range((len(res) - 2)): total = 0 for cuenta in cuentas: total += cuenta[i + 2] totales.append(total) conn.close() return render_template('balance-general.html', cuentas=cuentas, totales=totales) else: flash("Debes iniciar sesion para acceder") return redirect(url_for('login'))
def productoEliminado(idproducto): idproducto = idproducto global user if len(user) == 0: return render_template('/inicio-sesion.html') else: correo = user[0][0] conn = getConn() crs = conn.cursor() sql = """update producto set eliminado=1 where idproducto=:idproducto""" crs.execute(sql, [idproducto]) conn.commit() sql = """SELECT * FROM producto where correoproductor = :correo and eliminado=0""" crs.execute(sql, [correo]) productos = crs.fetchall() usuario = correo.replace(".", "").replace("@", "") flash('Producto eliminado satisfactoriamente') return redirect(url_for('productos'))
def perfilUsuario(): if request.method == 'POST': correo = request.form['correo'] passw = request.form['password'] conn = getConn() crs = conn.cursor() sql = """select correo, password, nvl(username,' '), nombre, apellido, nvl(rutusuario,' '), nvl(telefono1,' '), nvl(telefono2,' '), nvl(domicilio,' '), tipologin from usuario where correo=:correo""" crs.execute(sql, [correo]) global user user = crs.fetchall() print(user) if correo == "" or passw == "": user = [] return render_template('/inicio-sesion.html') else: if len(user) > 0: if correo == user[0][0] and passw == user[0][1]: return render_template('/perfil-usuario.html', user=user) else: user = [] return render_template('/inicio-sesion.html') else: sql = """select correo, pass, nvl(username,' '), nombre, apellido, nombreempresa, razonsocial, nvl(rutempresa,' '), nvl(telefono1,' '), tipologin, nvl(telefono2,' '), nvl(direccion,' '), nvl(categoria,' '), estado from productor where correo=:correo""" crs.execute(sql, [correo]) user = crs.fetchall() if len(user) > 0: if correo == user[0][0] and passw == user[0][1]: return render_template('/perfil-productor.html', user=user) else: user = [] return render_template('/inicio-sesion.html') else: user = [] return render_template('/inicio-sesion.html') if request.method == 'GET': if len(user) == 0: return render_template('/inicio-sesion.html') else: if user[0][9] == "c": return render_template('/perfil-usuario.html', user=user) else: return render_template('/perfil-productor.html', user=user)
def addOrdenCompra(): conn = getConn() crs = conn.cursor() nroOc = request.json['nroOrdenCompra'] rutProveedor = request.json['rutProveedor'] fecha = request.json['fecha'] totalNeto = request.json['totalNeto'] codTrabajador = request.json['codTrabajador'] detalleOrden = request.json['detalleOrden'] sql = """INSERT INTO ordenescompra (nrooc,rutproveedor,fecha,totalneto,codtrabajador) VALUES (ordencompra_seq.nextval,:rutproveedor,TO_DATE(:fecha,'YYYY-MM-DD'),:totalNeto,:codtrabajador)""" crs.execute(sql, [rutProveedor, fecha, totalNeto, codTrabajador]) for detalle in detalleOrden: sql = """INSERT INTO detalleoc (idProducto,cantidad,nroOc) VALUES (:idProducto,:cantidad,ordencompra_seq.currval)""" crs.execute(sql, [detalle['idProducto'], detalle['cantidad']]) conn.commit() conn.close() return jsonify({"message": "Orden de compra registrada correctamente"})
def addProductor(): if request.method == 'POST': nombre = request.form['nombre'] apellidos = request.form['apellidos'] nombreEmpresa = request.form['nombreEmpresa'] razonSocial = request.form['razonSocial'] direccion = request.form['direccion'] email = request.form['email'] contrasena = request.form['contrasena'] conn = getConn() crs = conn.cursor() sql = """INSERT INTO productor (correo,pass,nombre,apellido,nombreempresa,razonsocial,direccion) VALUES (:correo,:password,:nombre,:apellido,:nombreempresa,:razonsocial,:direccion)""" crs.execute(sql, [ email, contrasena, nombre, apellidos, nombreEmpresa, razonSocial, direccion ]) conn.commit() conn.close() return render_template('/inicio-sesion.html')
def addBoleta(): conn = getConn() crs = conn.cursor() # nuevaVenta = Venta(request.json['boleta'],request.json['rutCliente'],request.json['fecha'],request.json['totalNeto'],"",request.json['tipoPago']) nroBoleta = request.json['boleta'] rutcliente = request.json['rutCliente'] fecha = request.json['fecha'] totalneto = request.json['totalNeto'] idtipopago = request.json['tipoPago'] #probar idtipo pago con 101 y 201 detalleBoleta = request.json['detalleBoleta'] sql = """INSERT INTO ventas (nroboleta,rutcliente,fecha,totalneto,idtipopago) VALUES (boleta_seq.nextval,:rutcliente,TO_DATE(:fecha,'YYYY-MM-DD'),:totalneto,:idtipopago)""" crs.execute(sql, [rutcliente, fecha, totalneto, idtipopago]) for detalle in detalleBoleta: sql = """INSERT INTO detalleventa (idProducto,cantidad,nroboleta) VALUES (:idProducto,:cantidad,BOLETA_SEQ.currval)""" crs.execute(sql, [detalle['idProducto'], detalle['cantidad']]) conn.commit() conn.close() return jsonify({"message": "Boleta registrada correctamente"})
def balanceGastos(): global conex if 'username' in session: conn = getConn() crs = conn.cursor() crs.execute( """SELECT nrooperacion, nrofactura, rutproveedor, to_char(fecha,'dd/mm/yyyy'), totalneto, codtrabajador, nrooc, documento, iddepartamento FROM compras ORDER BY fecha desc, 1 desc""" ) results = crs.fetchall() gastos = [] conex = "" for result in results: crs.execute( "SELECT idproducto, cantidad FROM detallecompra where nrooperacion=:nrooperacion", nrooperacion=result[0]) detalles = crs.fetchall() res = list(result) if len(detalles) > 0: details = [] for detalle in detalles: detail = list(detalle) if conex == "": r = get_detalle_producto(detalle[0]) jerr = {'detail': 'Not found.'} if r != jerr and conex == "": r2 = json.dumps(r) js_dict = json.loads(r2) detail.append(js_dict["NOM_PROD"]) detail.append(js_dict["MARCA"]) detail.append(js_dict["MODELO"]) detail.append(js_dict["DESCRIPCION"]) details.append(detail) res.append(details) gastos.append(res) conn.close() return render_template('balance-gastos.html', gastos=gastos) else: flash("Debes iniciar sesion para acceder") return redirect(url_for('login'))
def balanceReversos(): global conex if 'username' in session: conn = getConn() crs = conn.cursor() crs.execute( "SELECT nronc, rutcliente, to_char(fecha,'dd/mm/yyyy'), totalneto, nroboleta FROM reversos ORDER BY fecha desc, 1 desc" ) results = crs.fetchall() reversos = [] conex = "" for result in results: crs.execute( "SELECT idproducto, cantidad, motivo FROM detallereverso where nronc=:nronc", nronc=result[0]) detalles = crs.fetchall() res = list(result) if len(detalles) > 0: details = [] for detalle in detalles: detail = list(detalle) if conex == "": r = get_detalle_producto(detalle[0]) jerr = {'detail': 'Not found.'} if r != jerr and conex == "": r2 = json.dumps(r) js_dict = json.loads(r2) detail.append(js_dict["NOM_PROD"]) detail.append(js_dict["MARCA"]) detail.append(js_dict["MODELO"]) detail.append(js_dict["DESCRIPCION"]) details.append(detail) res.append(details) reversos.append(res) conn.close() return render_template('balance-reversos.html', reversos=reversos) else: flash("Debes iniciar sesion para acceder") return redirect(url_for('login'))
def libroDiario(): if 'username' in session: conn = getConn() crs = conn.cursor() crs.execute( """SELECT l.nroasiento, to_char(l.fecha,'dd/mm/yyyy'), l.glosa, t.descripcion, nvl(l.nrooperacion,0), nvl(l.nronc,0), nvl(l.nroboleta,0) FROM librodiario l join tipooperacion t on l.idtipooperacion=t.idtipooperacion order by 1""" ) results = crs.fetchall() asientos = [] for result in results: crs.execute( "SELECT d.debe, d.haber, c.descripcion FROM detalleasiento d join cuentas c on d.idcuenta=c.idcuenta where d.nroasiento=:nroasiento", nroasiento=result[0]) detalles = crs.fetchall() res = list(result) res.append(detalles) asientos.append(res) conn.close() return render_template('libro-diario.html', asientos=asientos) else: flash("Debes iniciar sesion para acceder") return redirect(url_for('login'))