예제 #1
0
def pedidos_post():

    #Obtencion de id dede el token!!!!!
    user_email =  get_jwt_identity()
    user = User.query.filter_by(email = user_email).first()

    if user:
        info_pedidos = Info_Pedidos()
        info_pedidos.id_mesa = request.json.get('id_mesa')
        info_pedidos.id_user = user.id

        db.session.add(info_pedidos)
        db.session.commit()

        pedidos = request.json.get('productos')
        for p in pedidos:
            pedido = Pedido()
            pedido.id_info_pedidos = info_pedidos.id
            pedido.id_item = p['id_producto']
            pedido.cantidad = p['cantidad']
            db.session.add(pedido)
            db.session.commit()

        info_resumen = Info_Pedidos.query.get(info_pedidos.id)
        pedidos = Pedido.query.filter_by(id_info_pedidos = info_resumen.id).all()
        info_total = {}
        info_total["info_pedido"] = info_resumen.serialize()
        info_total["pedidos"] = [pedido.serialize() for pedido in pedidos]
        info_total["total"] = 0 if len(pedidos) == 0 else sum(float(pedido.cantidad) * float(pedido.item.precio)  for pedido in pedidos)
        return jsonify(info_total), 201
    
    return "Usuario no encontrado", 404
예제 #2
0
    def post():
        json_data = request.get_json(force=True)
        if not json_data:
            return {'message': 'No input data provided'}, 400
        json_data['cliente'] = cliente_schema.dump(
            Cliente.query.get(json_data['cliente']['id'])).data

        if not json_data['itens_pedido']:
            return {'status': 'erro', 'message': 'Lista de itens vazia'}, 400

        for item in json_data['itens_pedido']:
            produto = produto_schema.dump(Produto.query.get(item['id'])).data
            if not validate_multiplo(produto['multiplo'], item['quantidade']):
                return {'status': 'erro na quantidade',
                        'message': 'O item \'{}\' precisa ser solicitado em '
                                   'múltiplos de {}'.format(produto['nome'], produto['multiplo'])}
            item['produto'] = produto
            item['rentabilidade'] = get_rentabilidade(produto['preco_unitario'], item['preco_unitario'])
        data, errors = pedido_schema.load(json_data)
        if errors:
            return errors, 422
        pedido = Pedido(cliente_id=data['cliente']['id'])
        db.session.add(pedido)
        db.session.commit()

        for received_item in json_data['itens_pedido']:
            item = ItensPedido(received_item['produto']['id'], received_item['preco_unitario'],
                               received_item['quantidade'], received_item['rentabilidade'], pedido.id)

            db.session.add(item)
            db.session.commit()

        result = pedido_schema.dump(pedido).data

        return {"status": 'success', 'data': result}, 201
예제 #3
0
def pedido():
    pedidoform = PedidoForm()

    if pedidoform.validate_on_submit():
        #salvar o pedido em formato de texto
        loja_atual = Loja.query.filter_by(
            id=current_user.id_loja).first_or_404()
        text = "Loja: %s, pedido de %s, %s unidades" % (
            loja_atual.store_name, pedidoform.product_name, pedidoform.units)
        new_pedido = Pedido(date=datetime.utcnow(), request=text, situation=0)
        db.session.add(new_pedido)
        db.commit()
        flash("Novo pedido registrado")
        return redirect(url_for('index'))
    return render_template('pedido.html', form=pedidoform)
예제 #4
0
def novo_pedido():
    form = PedidoForm(request.form)
    if request.method == 'POST' and form.validate():
        Pedido(parent=pedido_key(),
               cliente=form.cliente.data,
               descricao=form.descricao.data,
               valor=form.valor.data,
               data_entrega=form.data_entrega.data,
               pago=form.pago.data,
               producao=Producao(parent=pedido_key(),
                                 arte_pronta=form.producao.arte_pronta.data,
                                 impresso=form.producao.impresso.data,
                                 montado=form.producao.montado.data).put(),
               entrega=Entrega(
                   parent=pedido_key(),
                   enviado=form.entrega.enviado.data,
                   recebido=form.entrega.recebido.data).put()).put()
        flash('Pedido criado com sucesso!')
        return redirect(url_for('listar_pedidos'))
    return render_template('novo_pedido.html', form=form)
예제 #5
0
def envio_pedido():
    if request.method == 'POST':
        pedido_actual = Pedido(fecha=datetime.datetime.now(),
                               cobrado=False,
                               observacion=request.form['observacion'],
                               dni_mozo=session['dni'],
                               mesa=request.form['mesa'])
        db.session.add(pedido_actual)
        db.session.commit()

        t = 0
        for i in session['items']:
            prod = Producto.query.filter_by(nombre=i).first()
            item_ = Item(num_pedido=pedido_actual.num_pedido,
                         num_producto=prod.num_producto,
                         precio=prod.precio_unitario,
                         estado="Pendiente")
            db.session.add(item_)
            t += item_.precio
        pedido_actual.total = t
        db.session.commit()
        return render_template('envio_pedido.html')
예제 #6
0
파일: app.py 프로젝트: fKStlorz/phyton1
def Registrar_pedido():
    if 'DNI' in session:
        usuario_actual = Usuario.query.filter_by(
            DNI=session.get('DNI')).first()
        if usuario_actual.Tipo == "Cocinero":
            return redirect(url_for('Marcar_items'))
        if request.method == 'POST':
            valores = list(dict(request.form).keys())
            pedido = None
            if 'NumPedido' in valores:
                pedido = Pedido.query.filter_by(
                    NumPedido=request.form['NumPedido']).first()
            if 'Mesa' in valores:
                try:
                    numeromesa = int(request.form['Mesa'])
                except:
                    return render_template('Numero_mesa.html',
                                           error='Solo se aceptan números.')
                else:
                    pedido = Pedido(Fecha=datetime.now(),
                                    Total=0.0,
                                    Cobrado=False,
                                    Observacion='',
                                    DNIMozo=session.get('DNI'),
                                    Mesa=numeromesa)
                    db.session.add(pedido)
                    db.session.commit()
                    return render_template('Registrar_pedido.html',
                                           carta=Producto.query.all(),
                                           Pedido=pedido)
            elif 'Finalizar' in valores:
                items = list(pedido.Item)
                if len(items) == 0:
                    return render_template(
                        'Registrar_pedido.html',
                        carta=Producto.query.all(),
                        Pedido=pedido,
                        error=
                        "No hay items en el pedido, no se puede finalizar aún."
                    )
                else:
                    return render_template('Observaciones.html', Pedido=pedido)
            elif 'FinalizarPedido' in valores:
                pedido.Observacion = request.form['Observaciones']
                db.session.add(pedido)
                db.session.commit()
                return redirect(url_for('Menu_Mozo'))
            else:
                numprod = valores[1]
                prod = Producto.query.filter_by(NumProducto=numprod).first()
                item = Item(NumPedido=pedido.NumPedido,
                            NumProducto=prod.NumProducto,
                            Precio=prod.PrecioUnitario,
                            Estado='Pendiente')
                db.session.add(item)
                db.session.commit()
            return render_template('Registrar_pedido.html',
                                   carta=Producto.query.all(),
                                   Pedido=pedido)
        return render_template('Numero_mesa.html')
    return render_template('Error.html', error='No se inicio sesión.')