def finalizar_compra(request, pagamento, observacao=""): loja = request.session['loja'].nome_curto cidade = request.session['cidade'] usuario = get_usuario(request) if usuario is None: return HttpResponseRedirect("/") try: carrinho = Carrinho.objects.get(comprador=usuario, loja=Loja.objects.get(nome_curto=loja, endereco__cidade=cidade)) except Carrinho.DoesNotExist: return redireciona_usuario(request) pedido = Pedido(comprador=usuario, loja=request.session['loja'], data_criacao=datetime.datetime.now(), status="ABERTO", total_pago=carrinho.total_pago, pagamento=pagamentos[pagamento], observacao=observacao) pedido.save() for produto_carrinho in carrinho.produtos_carrinho.all(): produto = ProdutosPedido(pedido=pedido, produto=produto_carrinho.produto, quantidade=produto_carrinho.quantidade, valor=produto_carrinho.valor) produto.save() utils.enviar_pedido_loja(pedido, Loja.objects.get(nome_curto=loja, endereco__cidade=cidade)) carrinho.delete() return HttpResponseRedirect("/painel/historico/")
def new(self, request, loja_id): carrinho = Pedido(data_criacao=datetime.datetime.now(), loja = Loja.objects.get(id=loja_id), status = "ABERTO") carrinho.save() request.session[ID_CARRINHO] = carrinho.id print "Criado novo carrinho de id "+ str(carrinho.id) return carrinho
def excluir_pedido(chave): pedido = Pedido.get(chave) if request.method == 'POST': pedido = Pedido.get(chave) pedido.producao.delete() pedido.entrega.delete() pedido.delete() flash('Pedido excluido com sucesso!') return redirect(url_for('listar_pedidos')) return render_template('excluir_pedido.html', pedido=pedido)
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
def editar_pedido(chave): pedido = Pedido.get(chave) form = PedidoForm(request.form, pedido) if request.method == 'PUT' and form.validate(): form.populate_obj(pedido) pedido.producao.put() pedido.entrega.put() pedido.put() flash('Pedido alterado com sucesso!') return redirect(url_for('listar_pedidos')) return render_template('editar_pedido.html', chave=chave, form=form)
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
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')
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)
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)
def listar_pedidos(): pedidos_query = Pedido.all().ancestor(pedido_key()).order('data_entrega') pedidos = pedidos_query.run() return render_template('listar_pedidos.html', pedidos=pedidos)
def detalhar_pedido(chave): pedido = Pedido.get(chave) return render_template('detalhar_pedido.html', pedido=pedido)
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.')
def cria_pedido(request): redirect_url = '/pizzer/' user = request.user if user.groups.all(): grupo = user.groups.all()[0].name if grupo == 'cliente': cliente = user.cliente_set.all()[0] pizzas = Pizza.objects.filter(Q(personalizada=False) | Q(inventor=cliente)) else: redirect_url = '/pizzer/pedidos/' pizzas = Pizza.objects.filter(Q(personalizada=False) | Q(inventor__nome='Personalizadas')) elif user.is_authenticated(): grupo = 'admin' pizzas = Pizza.objects.filter(personalizada=False) else: grupo = u'anônimo' pizzas = Pizza.objects.filter(personalizada=False) bebidas = Bebida.objects.all() if request.method == 'POST': if grupo == 'cliente': form = PedidoFormParaCliente(request.POST) else: form = PedidoForm(request.POST) if form.is_valid(): if grupo != 'cliente': cliente = form.cleaned_data['cliente'] pagamento = form.cleaned_data['pagamento'] observacoes = form.cleaned_data['observacoes'] pedido = Pedido(cliente=cliente, status='A', pagamento=pagamento, observacoes=observacoes) pedido.save() total = 0 vazio = True for pizza in pizzas: quantidade = request.POST.get(pizza.nome + '_qtde') quantidade = int(quantidade) if quantidade != 0: s = StatusItemPedido(pedido=pedido, item_cardapio=pizza, quantidade=quantidade, tipo_de_item=1) s.save() total += s.item_cardapio.preco * s.quantidade vazio = False for bebida in bebidas: quantidade = request.POST.get(bebida.nome + '_qtde') quantidade = int(quantidade) if quantidade != 0: if bebida.quantidade - quantidade < 0: pedido.delete() return render_to_response('erro_estoque.html', {'bebida': bebida}, context_instance=RequestContext(request)) else: s = StatusItemPedido(pedido=pedido, item_cardapio=bebida, quantidade=quantidade, tipo_de_item=2) s.save() bebida.quantidade -= quantidade bebida.save() total += s.item_cardapio.preco * s.quantidade if vazio or (pagamento < total): pedido.delete() return HttpResponseRedirect(redirect_url) else: if grupo == 'cliente': form = PedidoFormParaCliente(initial={'pagamento': '0.00'}) else: form = PedidoForm(initial={'pagamento': '0.00'}) return render_to_response('criacao_pedido.html', {'form': form, 'bebidas': bebidas, 'pizzas': pizzas}, context_instance=RequestContext(request))
def cria_pedido_pda(request): pizzas = Pizza.objects.filter(personalizada=False) bebidas = Bebida.objects.all() if request.method == 'POST': # If the form has been submitted... form = PedidoFormPDA(request.POST) # A form bound to the POST data if form.is_valid(): # All validation rules pass cliente = form.cleaned_data['cliente'] pedido = Pedido(cliente=cliente, status='A', pagamento=0) pedido.save() vazio = True for pizza in pizzas: quantidade = request.POST.get(pizza.nome + '_qtde') quantidade = int(quantidade) if quantidade != 0: s = StatusItemPedido(pedido=pedido, item_cardapio=pizza, quantidade=quantidade, tipo_de_item=1) s.save() pedido.pagamento += s.item_cardapio.preco * s.quantidade pedido.save() vazio = False for bebida in bebidas: quantidade = request.POST.get(bebida.nome + '_qtde') quantidade = int(quantidade) if quantidade != 0: if bebida.quantidade - quantidade < 0: pedido.delete() return render_to_response('pda_erro_estoque.html', {'bebida': bebida}) else: s = StatusItemPedido(pedido=pedido, item_cardapio=bebida, quantidade=quantidade, tipo_de_item=2) s.save() bebida.quantidade -= quantidade bebida.save() pedido.pagamento += s.item_cardapio.preco * s.quantidade pedido.save() if vazio: pedido.delete() return render_to_response('pda_erro_vazio.html', context_instance=RequestContext(request)) return HttpResponseRedirect('/pizzer/') # Redirect after POST else: form = PedidoFormPDA() # An unbound form return render_to_response('pda_criacao_pedido.html', {'form': form, 'bebidas': bebidas, 'pizzas': pizzas}, context_instance=RequestContext(request))