def pagar_carrito(): if request.method == "POST": provincia = request.form["provincia"] distrito = request.form["distrito"] direccion = request.form["direccion"] dir_envio = provincia + " / " + distrito + " / " + direccion comprobante = request.form["comprobante"] paytoken = request.form["paytoken"] payamount = request.form["payamount"] status = "Pagado" ## Capturamos la fecha now1 = dt.now() fecha = now1.strftime('%Y-%m-%d %H:%M:%S') carritoNew = Pedido(codigo_usuario=int(session['user_id']), estado=status, tipo_comprobante=comprobante, hashCulqi=paytoken, direccion_envio=dir_envio, pago=payamount, fecha_emision=fecha) crearCarrito = carritoNew.agregarPedido() if crearCarrito: session.pop('product_list', None) session.pop('precio_total', None) msg = "Se ha registrado tu compra" return render_template('carts/view.html', msg=msg) else: error = 'Hubo un error al procesar la compra' return render_template('carts/view.html', error=error) return render_template('carts/list.html')
def add_pedido(): ubicacion = request.get_json()["ubicacion"] cliente_id = request.get_json()["cliente_id"] producto_id = request.get_json()["producto_id"] Pedido.create(ubicacion=ubicacion, cliente_id=cliente_id, producto_id=producto_id) return jsonify(request.get_json())
def clear_pedidos(self): self.lista.rm_all_widgets() self.pedido = Pedido() self.btnPedido.disabled = True self.btnAtras.disabled = False self.total = 0 self.des = "Pedido {0: >10} articulos".format(0) self.dbCliente = None
def pedido_domicilio(self, db): self.dbCliente = db self.lista.rm_all_widgets() self.pedido = Pedido() self.btnPedido.disabled = True self.btnAtras.disabled = False self.total = 0 self.des = "Pedido {0: >10} articulos".format(0) self.linea_nueva()
def findPedidos(nroFrom): clientes = Cliente.all() app.logger.debug(jsonify(clientes)) idCliente = 0 for objCliente in clientes: app.logger.debug(objCliente.telefono) if (nroFrom[9:] == objCliente.telefono): idCliente = objCliente.id break app.logger.debug(idCliente) pedidos = Pedido.all() idsPedidos = '' for objPedidos in pedidos: if (objPedidos.cliente_id == idCliente): app.logger.debug(objPedidos.id) idsPedidos += str(objPedidos.id) + ' ' break respuesta = '' if idsPedidos == '': respuesta = 'No hay pedidos para tu número de telefono' else: respuesta = 'Escribe el número de pedido para ver el detalle: ' + idsPedidos respuesta += ' en este formato *mipedido <id_pedido>*' #pedidos = .where('votes', '>', 100).update(status=2) resp = MessagingResponse() msg = resp.message() msg.body(respuesta) return str(resp)
def makePedidoByRequest(request): listadoMacetas = [] for i in range(int(request.form["cantModelos"])): codigo = request.form["codigoNew" + str(i)] cantSolicitada = int(request.form["cantSolicitada" + str(i)]) maceta = Maceta(codigo, cantSolicitada) listadoMacetas.append(maceta) return Pedido(listadoMacetas, "")
def show_estado(nroFrom): resp = MessagingResponse() msg = resp.message() app.logger.debug(nroFrom[9:100]) clnt = Cliente.where('número_telefonico', nroFrom[9:100]).first() usr_nombre = clnt.nombre usr_id = clnt.id app.logger.debug(usr_id) ped = Pedido.where('cliente_id', usr_id).first() usr_fec_entrg = ped.fecha_entrega msg.body('Hola ' + usr_nombre + ', tienes un pedido con entrega para el día ' + str(usr_fec_entrg) + '\nEscriba menu para volver a ver las opciones.') return str(resp)
def pedidos_create(): if request.method == 'GET': clientes = cliente_repository.get() produtos = produto_repository.get() return render_template("pedido/create.html", clientes=clientes, produtos=produtos) else: req = request.get_json() item = req['item'] pedido = Pedido(req['idCliente'], item) pedido_repository.save(pedido) return jsonify({'status': 'success'})
def get_prodcutoid(pedido_id): ped = Pedido.find(int(pedido_id)) id = ped.id clnt_id = ped.cliente_id fct_id = ped.factura_id fch_desp = ped.fecha_despacho fch_ent = ped.fecha_entrega est = ped.estado dict_pedido = { 'id': id, 'cliente_id': clnt_id, 'factura_id': fct_id, 'fecha_despacho': fch_desp, 'fecha_entrega': fch_ent, 'estado': est } return dict_pedido
def pedido_all(): pedidos = Pedido.all() for ped in pedidos: id_p = ped.id clnt_id = ped.cliente_id fct_id = ped.factura_id fch_desp = ped.fecha_despacho fch_ent = ped.fecha_entrega est = ped.estado dict_pedido = { 'id': id_p, 'cliente_id': clnt_id, 'factura_id': fct_id, 'fecha_despacho': fch_desp, 'fecha_entrega': fch_ent, 'estado': est } return dict_pedido
def detallePedido(body): pedido = body.replace('mipedido', '') pedido = pedido.strip() app.logger.debug(pedido) mipedido = Pedido.find(int(pedido)) app.logger.debug(jsonify(mipedido)) resp = MessagingResponse() account_sid = 'AC363bb259d783c872befae66bf491241b' auth_token = '6c3079f9596e32a456df388e1c296ef8' client = Client(account_sid, auth_token) message = client.messages \ .create( from_='whatsapp:+14155238886', body='Twilio HQ', persistent_action=[f'{mipedido.ubicacion}'], to='whatsapp:+51964291427' ) msg = resp.message() msg.body("Procesando") return str(resp)
def detallePedido(body): pedido = body.replace('mipedido', '') pedido = pedido.strip() app.logger.debug(pedido) mipedido = Pedido.find(int(pedido)) app.logger.debug(jsonify(mipedido)) resp = MessagingResponse() account_sid = 'AC271b9a9321567c3e87123e5aff9d9905' auth_token = '47b972c4d6af82abd72219e35ce1359d' client = Client(account_sid, auth_token) message = client.messages \ .create( from_='whatsapp:+12018842920', body='Twilio HQ', persistent_action=[f'{mipedido.ubicacion}'], to='whatsapp:+51947532419' ) msg = resp.message() msg.body("Procesando") return str(resp)
class PedidoController(BoxLayout): tpv = ObjectProperty(None, allownone=True) pedido = ObjectProperty(None, allownone=True) total = NumericProperty(0.0) des = StringProperty("Pedido {0: >10} articulos".format(0)) def __init__(self, **kargs): super(PedidoController, self).__init__(**kargs) self.clase = None self.puntero = 0 self.pilaDeStados = [] self.linea_editable = None self.tipo_cobro = "Efectivo" self.dbCliente = None self.promocion = None self.modal = Sugerencias(onExit=self.exit_sug) self.efectivo = Efectivo(onExit=self.salir_efectivo) def on_pedido(self, key, value): self.pedido.bind(total=self.show_total) def show_total(self, key, value): self.total = self.pedido.total self.des = "Pedido {0: >10} articulos".format(self.pedido.getNumArt()) def pedido_domicilio(self, db): self.dbCliente = db self.lista.rm_all_widgets() self.pedido = Pedido() self.btnPedido.disabled = True self.btnAtras.disabled = False self.total = 0 self.des = "Pedido {0: >10} articulos".format(0) self.linea_nueva() def onPress(self, botones): for i in range(len(botones)): btn = botones[i] tipo = btn.tag.get('tipo') if tipo == 'cobros': self.pedido.modo_pago = btn.tag.get("text") if self.pedido.modo_pago == "Efectivo": self.mostrar_efectivo() else: self.pedido.cambio = 0.00 self.pedido.efectivo = 0.00 self.tpv.imprimirTicket(self.pedido.guardar_pedido()) self.tpv.mostrar_inicio() elif tipo == 'llevar': self.show_botonera('../db/privado/num_avisador.json') self.pedido.para_llevar = btn.tag.get('text') if self.pedido.para_llevar == "Para recoger": self.pedido.para_llevar = "Para llevar" self.pedido.num_avisador = "Para recoger" self.pedido.modo_pago = "Efectivo" self.pedido.cambio = 0.00 self.pedido.efectivo = 0.00 self.pedido.guardar_pedido() self.tpv.mostrar_inicio() elif tipo == 'num': self.show_botonera('../db/privado/cobrar.json') self.pedido.num_avisador = btn.tag.get("text") elif tipo == 'clase': self.clase = btn.tag if "promocion" in self.clase: self.promocion = self.clase["promocion"] self.puntero = 0 name = self.clase.get('productos') db = "../db/productos/%s.json" % name self.show_botonera(db) self.linea_editable = None self.pilaDeStados = [] self.pilaDeStados.append({'db': db, 'punt': 0, 'pass': 1}) self.btnAtras.disabled = False else: if "precio" in self.clase: btn.tag[ "precio"] = btn.tag["precio"] * self.clase["precio"] db = self.pedido.add_modificador(btn.tag) if not self.linea_editable: self.add_linea() self.refresh_linea() num = len(self.clase.get('preguntas')) if self.clase else 0 ps = len(botones) - 1 if db != None: self.show_botonera(db) elif db == None and self.puntero < num and i == ps: db = None igDb = False while self.puntero < num: name = self.clase.get('preguntas')[self.puntero] db = "../db/preguntas/%s.json" % name self.puntero += 1 if 'ignore' in btn.tag: if db not in btn.tag.get('ignore'): igDb = False break else: igDb = True db = None else: break if not igDb: self.show_botonera(db) else: self.puntero += 1 if not db and self.puntero >= num and i == ps: self.linea_nueva() if i == ps: self.pilaDeStados.append({ 'db': db, 'punt': self.puntero, 'pass': len(botones) }) def mostrar_efectivo(self): self.efectivo.total = str(self.total) self.efectivo.open() def salir_efectivo(self, cancelar=True): self.efectivo.dismiss() if cancelar: self.show_botonera('../db/privado/cobrar.json') else: self.pedido.efectivo = self.efectivo.efectivo.replace("€", "") self.pedido.cambio = self.efectivo.cambio.replace("€", "") self.tpv.imprimirTicket(self.pedido.guardar_pedido()) self.tpv.abrir_cajon() self.tpv.mostrar_inicio() self.tpv.mostrar_men_cobro("Cambio " + self.efectivo.cambio) def exit_sug(self, key, w, txt, ln): if txt != "": if "sug" not in ln.obj: ln.obj["sug"] = [] ln.obj["sug"].append(txt) db = JsonStore("../db/sugerencias.json") sug = self.modal.sug db.put(ln.obj.get("text").lower(), db=sug) self.rf_parcial(w, ln) self.modal.dismiss() def sugerencia(self, w, linea): try: name = linea.obj.get('text').lower() db = JsonStore("../db/sugerencias.json") if not db.exists(name): db.put(name, db=[]) self.modal.sug = db[name].get("db") self.modal.des = "{0} {1:.2f}".format(linea.getTexto(), linea.getTotal()) self.modal.clear_text() self.modal.tag = linea self.modal.content = w self.modal.open() except: self.modal.content = None def atras(self): num = len(self.pilaDeStados) if num == 1: self.linea_nueva() if num == 2: self.pilaDeStados.pop() pr = self.pilaDeStados[-1] self.show_botonera(pr['db']) self.puntero = pr['punt'] self.pedido.rm_estado() if self.linea_editable: self.lista.rm_linea(self.linea_editable) self.linea_editable = None if num > 2: sc = self.pilaDeStados.pop() pr = self.pilaDeStados[-1] self.show_botonera(pr['db']) self.puntero = pr['punt'] if sc['pass'] > 1: for i in range(int(sc['pass'])): self.pedido.rm_estado() else: self.pedido.rm_estado() self.refresh_linea() def linea_nueva(self): db = "../db/clases.json" self.show_botonera(db) self.clase = None self.promocion = None self.linea_editable = None if len(self.pedido.lineas_pedido) > 0: self.btnPedido.disabled = False self.btnAtras.disabled = True self.pedido.finaliza_linea() self.pilaDeStados = [] def add_linea(self): self.btnPedido.disabled = True self.btnAtras.disabled = False if self.pedido.linea: self.linea_editable = LineaWidget(tag=self.pedido.linea, borrar=self.borrar, sumar=self.sumar, sugerencia=self.sugerencia) if self.promocion is not None: self.linea_editable.mostar_btnpromo() self.linea_editable.aplicar = self.aplicar_promo self.linea_editable.promocion = self.promocion else: self.linea_editable.mostar_btnpromo(False) self.lista.add_linea(self.linea_editable) def aplicar_promo(self, btn): self.rf_parcial(btn, btn.tag) def refresh_linea(self): if self.pedido and self.pedido.linea: self.linea_editable.texto = self.pedido.linea.getTexto() self.linea_editable.total = self.pedido.linea.getTotal() if len(self.pedido.lineas_pedido) == 0: self.btnPedido.disabled = True def rf_parcial(self, w, ln): w.texto = ln.getTexto() w.total = ln.getTotal() if self.pedido: self.pedido.actualizar_total() def sumar(self, w, tag): self.pedido.sumar(tag) self.rf_parcial(w, tag) def borrar(self, widget, tag): if self.pedido.borrar(tag): self.linea_nueva() self.pedido.borrar(tag) self.lista.rm_linea(widget) self.refresh_linea() else: self.rf_parcial(widget, tag) def show_botonera(self, db): self.storage = JsonStore(db) if self.storage.exists('db'): if self.storage.exists('selectable'): self.botonera.selectable = True else: self.botonera.selectable = False lista = self.storage['db'].get('lista') num = len(lista) if num <= 4: self.botonera.cols = 1 elif num > 4 and num <= 12: self.botonera.cols = 3 else: self.botonera.cols = 4 title = 'None' if self.clase != None: title = str(self.clase['text']) self.botonera.title = title self.botonera.buttons = [] self.botonera.buttons = self.storage['db'].get('lista') def nuevo_pedido(self, clase): self.onPress([Wrap(clase)]) self.clear_pedidos() def clear_pedidos(self): self.lista.rm_all_widgets() self.pedido = Pedido() self.btnPedido.disabled = True self.btnAtras.disabled = False self.total = 0 self.des = "Pedido {0: >10} articulos".format(0) self.dbCliente = None def aparcar_pedido(self): if self.dbCliente == None: self.pedido.aparcar_pedido() self.tpv.mostrar_inicio() def recuperar_pedido(self, db): self.clear_pedidos() self.pedido.cargar_pedido(db) lineas = db.get("db")['lineas'] for linea in lineas: self.pedido.add_linea(linea) self.add_linea() self.refresh_linea() self.linea_nueva() def hacer_pedido(self): if not self.dbCliente and self.total > 0: self.btnPedido.disabled = True self.btnAtras.disabled = True self.show_botonera('../db/privado/llevar.json') else: if self.dbCliente: self.pedido.para_llevar = "Domicilio" self.pedido.dbCliente = self.dbCliente self.pedido.num_avisador = "Domicilio" self.pedido.modo_pago = "Efectivo" self.tpv.imprimirTicket(self.pedido.guardar_pedido()) self.tpv.mostrar_inicio() else: self.show_botonera("../db/privado/num_avisador.json") self.pedido.modo_pago = "Efectivo"
def delete_pedido(pedido_id): pedido = Pedido.find_or_fail(pedido_id) pedido.destroy(pedido_id) return jsonify(pedido)
def update_pedido(pedido_id): pedido = Pedido.find_or_fail(pedido_id) pedido.update(**request.get_json()) return jsonify(pedido)
def get_pedido(pedido_id): pedido = Pedido.find(pedido_id) return jsonify(pedido)
def create_pedido(): ped = Pedido.create(**request.get_json()) return jsonify(ped)
def get_allpedidos(): pedido = Pedido.all() return jsonify(pedido)
def delete_pedido(pedido_id): ped = Pedido.find_or_fail(pedido_id) ped.delete() return app.response_class('No Content', 204)
from werkzeug.utils import secure_filename ## Importación fechas from datetime import datetime as dt ## Importacion Culqi import culqipy app = Flask(__name__) ## DEFINIMOS RUTA DONDE SE SUBIRAN LOS ARCHIVOS app.config['UPLOAD_FOLDER'] = "./static" ## Instancia DE CLASES ClassUsuario = Usuario() ClassProveedor = Proveedor() ClassCategoria = Categoria() ClassProducto = Producto() ClassPedido = Pedido() # Ruta de inicio de página @app.route('/') def home(): categorias = ClassCategoria.obtenerCategorias() return render_template('home.html', categoriasB=categorias) #Registro de usuario @app.route('/registro', methods=["get", "post"]) def registration(): if request.method == "POST": #Capturamos las variables del formulario nombres = request.form["name"]
def registrarPedido(): carritoid = None precio_prod = 0 userid = session["user_id"] useremail = session["user_email"] carrito_list = Ccarrito.listar_carrito(id_user=userid) user = Cusuario.obtener_usuario(correo_electronico = useremail) if carrito_list: carritoid = carrito_list[0] precio_prod = int(carrito_list[2]) ## Capturamos la fecha now1 = dt.now() fecha = now1.strftime('%Y-%m-%d %H:%M:%S') if request.method == "POST": ## DATOS DE TARJETA metodo = request.form["metodo"] tarjeta = request.form["tarjeta"] expiracion = request.form["expiracion"] cvv = request.form["cvv"] estado = "pagado" if metodo=="tarjeta" and not(tarjeta and expiracion and cvv): message = 'Verifica los datos de tu tarjeta' return render_template('users/registerPedido.html', message=message) if metodo=="efectivo": estado = "pago pendiente" tarjeta = 0 ##DATOS DE ENVIO provincia = request.form["provincia"] distrito = request.form["distrito"] direccion = request.form["direccion"] dir_envio = provincia+" / "+distrito+" / "+direccion if not(provincia and distrito and direccion): message = 'Verifica tus datos de envío' return render_template('users/registerPedido.html', message=message) ## DATOS DE COMPROBANTE comprobante = request.form["comprobante"] ruc = 0 if request.form["ruc"]: ruc = int(request.form["ruc"]) repartidor = "Motorizado 1" tarifa = 10 if (distrito!="Lima") and (provincia!="Lima"): tarifa = 15 totalp = int(tarifa + precio_prod) Pedid = Pedido( estado=estado, repartidor=repartidor, tipo_comprobante=comprobante, metodo_pago=metodo, direccion_envio=dir_envio, area_reparto=distrito, tarifa_envio=totalp, fecha_emision=fecha, fecha_entrega=fecha ) result = Pedid.generar(id_user=userid, id_cart=carritoid) liniodir = "Calle Las Begonias 345 - San Isidro" linioruc = "10101957387" datos_list =[ estado, ## Estado de la compra comprobante, ## Tipo de comprobante user.primer_nombre, ## Primer nombre del cliente user.primer_apellido, ## Primer apellido user.segundo_apellido, ## Segundo apellido dir_envio, ## Direccion de envio de compras ruc, ## RUC del cliente(si lo hubiera) carrito_list[3], ## Cantidad de productos comprados carrito_list[2], ## Monto del carrito tarifa, ## Tarifa de envío fecha, ## Fecha que se realizó la compra liniodir, ## Direccion de Linio linioruc ## RUC de Linio ] if result: Ccarrito.cambiar_estado_carrito(id_user= carritoid) message = 'Se ha completado tu compra' return render_template('users/comprobante.html', message=message, datos_list=datos_list) else: error = 'No se ha podido pocesar tu compra' return render_template('users/registerPedido.html', product = carrito_list, error=error) return render_template('users/registerPedido.html', product = carrito_list)
from models.pedido import Pedido from database import Database __author__ = 'Tadeu Faustino' Database.initialize() pedido = Pedido(nome="Tadeu", email="*****@*****.**", telefone="23466954", pedido="Lagosta", date="12/12/12", id="001") pedido.save_to_mongo()
from models.comercio import Comercio from models.pedido import Pedido from models.carrito import Carrito from models.categoria import Categoria from datetime import datetime as dt app = Flask(__name__) #Importacion de Clases #Es necesario la importacion declarandolo de esta manera para #omitir las variables 'self' en las funciones dentro de la clase Cusuario = Usuario() Cproducto = Producto() Ccomercio = Comercio() Cpedido = Pedido() Ccarrito = Carrito() Ccategoria = Categoria() #Primera ruta a ejecutarse en la pagina @app.route('/') def home(): categoriaList = Ccategoria.listar() return render_template('home.html', categoriaList = categoriaList) ### RUTAS DEL FOOTER @app.route('/ayuda') def ayuda(): return render_template('info/ayuda.html')