def facturar(request): if request.method == 'POST': productos = request.POST.getlist("productos") if len(productos) == 0: return HttpResponseRedirect('/productos/vender') factura = Factura() factura.save() for id_producto in productos: cantidad = request.POST['cantidad['+id_producto+']'] producto = Producto.objects.get(id = id_producto) if producto.cantidad and producto.cantidad >= cantidad: producto.cantidad = producto.cantidad - cantidad producto.save() renglon = RenglonFactura() renglon.producto = producto renglon.factura = factura renglon.costo = producto.costo renglon.precio = float(str(request.POST['costo['+id_producto+']']).replace(",",".")) renglon.cantidad = request.POST['cantidad['+id_producto+']'] renglon.save() return HttpResponseRedirect('/productos/vender') return HttpResponseRedirect('/productos/vender')
def checkout(id): if not request.is_json: return jsonify({"msg": "Missing JSON in request"}), 400 ItemCompradoId = request.json.get('ItemProductoCompradoId', None) CantidaProductoComprado = request.json.get('CantidaProductoComprado', None) precioProductoSeleccionado = request.json.get('precioProductoSeleccionado', None) usuario_id = request.json.get('usuario_id', None) totalFactura = request.json.get('totalFactura', None) totalProductosComprados = request.json.get('totalProductosComprados', None) usuarioActual = request.json.get('usuarioActual', None) emailTiendaSeleccionada = request.json.get('emailTiendaSeleccionada', None) email = Usuario.query.filter_by(id=usuario_id).first().email productos = Productos.query.filter(Productos.id.in_(ItemCompradoId)).all() usua = Factura() usua.usuario_factura_id = usuario_id usua.total = totalFactura db.session.add(usua) db.session.commit() factura_id = Factura.query.order_by(Factura.id.desc()).first().id print(factura_id) i = 0 for prod in productos: usua = Detallefactura() usua.productos_comprados = int(CantidaProductoComprado[i]) usua.factura_id = factura_id usua.producto_id = int(ItemCompradoId[i]) usua.precio = int(precioProductoSeleccionado[i]) db.session.add(usua) db.session.commit() i = i + 1 i = 0 for prod in productos: prod.stock = int(prod.stock) - int(CantidaProductoComprado[i]) i = i + 1 db.session.commit() html = render_template('email-compraProductos.html', users=totalProductosComprados) send_mail("Compra", "*****@*****.**", email, html) html = render_template('email-ProductosComprados.html', usuarioactual=usuarioActual, users=totalProductosComprados) send_mail("Productos comprados", "*****@*****.**", emailTiendaSeleccionada, html) datosProductos = Productos.query.filter_by(tienda_id=id).all() datosProductos = list( map(lambda datosProductos: datosProductos.serialize(), datosProductos)) return jsonify(datosProductos), 200
def crear_factura(request, pedido, number): local = request.session['local'] total = total_pedido_tipo(pedido, 'D') numero = number if Factura.objects.filter(pedido = pedido).count > 0: pass factura = Factura(local = local, pedido = pedido, total = total, numero = numero) factura.save() for detalle in pedido.pedidodetalle_set.all(): if detalle.plato.tipo.recibo == 'D': plato = detalle.plato cantidad = detalle.cantidad unitario = detalle.plato.precioplato_set.get(anio = current_year()).precio subtotal = cantidad * unitario fd = FacturaDetalle(pertenece_a_factura = factura, plato = plato, cantidad = cantidad, unitario = unitario, subtotal = subtotal) fd.save()
def checkout(): if not request.is_json: return jsonify({"msg": "Missing JSON in request"}), 400 ItemCompradoId = request.json.get('ItemProductoCompradoId', None) CantidaProductoComprado = request.json.get('CantidaProductoComprado', None) precioProductoSeleccionado = request.json.get('precioProductoSeleccionado', None) usuario_id = request.json.get('usuario_id', None) totalFactura = request.json.get('totalFactura', None) usuarioActual = request.json.get('usuarioActual', None) email = User.query.filter_by(id=usuario_id).first().email usuario = User.query.filter_by(id=usuario_id).first() usua = Factura() usua.total = totalFactura usua.comprador = usuario db.session.add(usua) db.session.commit() #factura_id =Factura.query.filter_by(id = usuario_id).first() factura_id = Factura.query.order_by(Factura.id.desc()).first() productos = Productos.query.filter(Productos.id.in_(ItemCompradoId)).all() i = 0 for prod in productos: usua = Detallefactura() usua.productos_comprados = prod usua.productos_facturados = factura_id usua.cantidad_producto_comprado = int(CantidaProductoComprado[i]) db.session.add(usua) db.session.commit() i = i + 1 listaDetalleFactura = Detallefactura.query.filter_by( facturaf_id=factura_id.id).all() listaDetalleFactura = list( map(lambda listaDetalleFactura: listaDetalleFactura.serialize(), listaDetalleFactura)) html = render_template('email-compraProductos.html', users=listaDetalleFactura) send_mail("Compra", "*****@*****.**", email, html) html = render_template('email-ProductosComprados.html', usuarioactual=usuarioActual, users=listaDetalleFactura) send_mail("Productos comprados", "*****@*****.**", "*****@*****.**", html) return jsonify({ 'msg': 'Producto encargados exitamente en breve recibira un email con el detalle' }), 200
def factura_add(cls, request): try: token = jwt.decode(request.token, 'secret') #CHECA EL TOKEN user = Usuarios.get_by_id( token['user_id'] ) #obtiene el usuario para poder acceder a los metodos declarados en models.py en la seccion de myfactura = Factura() if myfactura.factura_m( request, user.empresa_key ) == 0: #llama a la funcion declarada en models.py en la seccion de USUARIOS codigo = 1 else: codigo = -3 #la funcion josue_m puede actualizar e insertar #depende de la ENTRADA de este endpoint method message = CodeMessage(code=codigo, message='Factura registrada con exito') except jwt.DecodeError: message = CodeMessage(code=-2, message='Invalid token') except jwt.ExpiredSignatureError: message = CodeMessage(code=-1, message='Token expired') return message
def factura_update(cls, request): try: token = jwt.decode(request.token, 'secret') #CHECA EL TOKEN user = Usuarios.get_by_id( token['user_id'] ) #obtiene el usuario para poder acceder a los metodos declarados en models.py en la seccion de USUARIOS empresakey = ndb.Key(urlsafe=user.empresa_key.urlsafe() ) #convierte el string dado a entityKey myfactura = Factura() if myfactura.factura_m( request, empresakey ) == 0: #llama a la funcion declarada en models.py en la seccion de USUARIOS codigo = 1 else: codigo = -3 #la funcion josue_m puede actualizar e insertar #depende de la ENTRADA de este endpoint method message = CodeMessage( code=1, message='Sus cambios han sido guardados exitosamente') except jwt.DecodeError: message = CodeMessage(code=-2, message='Invalid token') except jwt.ExpiredSignatureError: message = CodeMessage(code=-1, message='Token expired') return message
def factura_list(cls, request): try: token = jwt.decode(request.tokenint, 'secret') #CHECA EL TOKEN user = Usuarios.get_by_id( token['user_id']) #obtiene usuario dado el token lista = [] #crea lista para guardar contenido de la BD lstMessage = FacturaList(code=1) #CREA el mensaje de salida lstBd = Factura.query().fetch() #obtiene de la base de datos for i in lstBd: #recorre la base de datos #inserta a la lista creada con los elementos que se necesiten de la base de datos #i.empresa_key.urlsafe() obtiene el entityKey lista.append( FacturaUpdate( token='', entityKey=i.entityKey, #empresa_key=i.empresa_key.urlsafe(), tipoDePersona=i.tipoDePersona, nombre=i.nombre, idTicket=i.idTicket, rfc=i.rfc, pais=i.pais, estado=i.estado, municipio=i.municipio, colonia=i.colonia, cp=i.cp, calle=i.calle, numExt=i.numExt, numInt=i.numInt, email=i.email, numFolio=i.numFolio, fecha=i.fecha)) lstMessage.data = lista #ASIGNA a la salida la lista message = lstMessage except jwt.DecodeError: message = FacturaList(code=-1, data=[]) except jwt.ExpiredSignatureError: message = FacturaList(code=-2, data=[]) return message