def get(self): """ metodo get""" categories = self.get_arguments("categories") sizes = self.get_arguments("size") page = int(self.get_argument("page", "1")) items = 0 cellar_id = "" cellar = Cellar() res_cellar = cellar.GetWebCellar() if "success" in res_cellar: cellar_id = res_cellar["success"] product = Product() res = product.filter(categories, sizes, cellar_id, page) res_items = product.getFilterItems(categories, sizes, cellar_id) if "success" in res_items: items = res_items["success"] if "success" in res: self.write( self.render_string("store/ajax_productos.html", data=res["success"], items=items, page=page, canonical_url=self.canonical_url, url_bodega=url_bodega, tag='filtro', money_format=self.money_format)) else: self.write(res["error"])
def moveStock(self, lista, carro, id_bodega, order_id): for l in lista: if len(carro) > 0: cart = Cart() cart.id = l["id"] cart.Remove() kardex = Kardex() producto = Product() response = producto.InitById(l["product_id"]) if "success" in response: kardex.product_sku = producto.sku kardex.cellar_identifier = id_bodega kardex.operation_type = Kardex.OPERATION_MOV_OUT kardex.sell_price = l['price'] kardex.order_id = order_id _s = Size() _s.name = l["size"] res_name = _s.initByName() if "success" in res_name: kardex.size_id = _s.id elif debugMode: print res_name["error"] kardex.date = str( datetime.now( pytz.timezone('Chile/Continental')).isoformat()) kardex.user = "******" kardex.units = l["quantity"] kardex.price = producto.price kardex.Insert() c = Cellar() res_reservation = c.GetReservationCellar() reservation_cellar = shipping_cellar if "success" in res_reservation: reservation_cellar = res_reservation["success"] elif debugMode: print res_reservation["error"] kardex.cellar_identifier = reservation_cellar kardex.operation_type = Kardex.OPERATION_MOV_IN res_kardex = kardex.Insert() if debugMode and "error" in res_kardex: print res_kardex["error"] elif debugMode: print response["error"]
def get(self, tags=""): cellar_id = None cellar = Cellar() res_web = cellar.GetWebCellar() if "success" in res_web: cellar_id = res_web["success"] page = int(self.get_argument("page", "1")) ajax = int(self.get_argument("ajax", 0)) tags = tags.replace("_", " ").lower() tags_arr = tags.split(",") items = 0 tallas = [] tag = Tag() res = tag.GetItemsByTags(cellar_id, tags_arr) if "success" in res: items = int(res["success"]) res = tag.GetProductsByTags(cellar_id, tags_arr, page, 16) tags_visibles = tag.ListVisibleTags(tags_arr) if "success" in tags_visibles: tags = tags_visibles["success"] product = Product() tallas_res = product.getAllSizes() if "success" in tallas_res: tallas = tallas_res["success"] if "success" in res: if ajax == 0: self.render("store/index.html", data=res["success"], items=items, page=page, tags=tags, tags_arr=tags_arr, tag=",".join(tags_arr), tallas=tallas) else: self.render("store/ajax_productos.html", data=res["success"], items=items, tag=",".join(tags_arr), page=page) else: self.render("beauty_error.html", message=res["error"])
def post(self): cellar = Cellar() res_web = cellar.GetWebCellar() cellar_id = None if "success" in res_web: cellar_id = res_web["success"] product = Product() page = int(self.get_argument("page", "1")) ajax = int(self.get_argument("ajax", 0)) lista = product.GetList(cellar_id, page, 16) items = 0 tags = {} tallas = [] response = product.GetItems(cellar_id) if "success" in response: items = response["success"] tag = Tag() tags_visibles = tag.ListVisibleTags() if "success" in tags_visibles: tags = tags_visibles["success"] tallas_res = product.getAllSizes() if "success" in tallas_res: tallas = tallas_res["success"] banners = {} banners["nuevo"] = self.jsonToObject(self.get_argument("nuevo", "")) banners["sale"] = self.jsonToObject(self.get_argument("sale", "")) banners["tienda"] = self.jsonToObject(self.get_argument("tienda", "")) banners["background"] = self.jsonToObject( self.get_argument("background", "")) tag = self.get_argument("tag", "") self.render("preview/index.html", data=lista, items=items, page=page, tags=tags, tags_arr=[tag], tag=tag, tallas=tallas, banners=banners)
def get(self): cellar = Cellar() res_web = cellar.GetWebCellar() cellar_id = None if "success" in res_web: cellar_id = res_web["success"] product = Product() page = int(self.get_argument("page", "1")) ajax = int(self.get_argument("ajax", 0)) lista = product.GetList(cellar_id, page, 16) items = 0 tags = {} tallas = [] response = product.GetItems(cellar_id) if "success" in response: items = response["success"] tag = Tag() tags_visibles = tag.ListVisibleTags() if "success" in tags_visibles: tags = tags_visibles["success"] tallas_res = product.getAllSizes() if "success" in tallas_res: tallas = tallas_res["success"] if ajax == 0: self.render("store/index.html", data=lista, items=items, page=page, tags=tags, tags_arr=None, tag="tienda", tallas=tallas) else: self.render("store/ajax_productos.html", data=lista, items=items, page=page, tags=tags, tags_arr=None, tag="tienda", tallas=tallas)
def post(self): # obtener id de la bodega web id_bodega = cellar_id cellar = Cellar() res_cellar = cellar.GetWebCellar() if "success" in res_cellar: id_bodega = res_cellar["success"] # obtener carro del usuario logueado cart = Cart() cart.user_id = self.current_user["id"] lista = cart.GetCartByUserId() final_name = self.saveVoucher() order = Order() if len(lista) > 0: response_obj = self.saveOrder(lista, order, final_name) # si se guardo el pedido de forma exitosa if "success" in response_obj: self.saveOrderDetail(lista, order) self.notifyEmails(lista, order, self.current_user) cart = Cart() cart.user_id = self.current_user["id"] carro = cart.GetCartByUserId() self.moveStock(lista, carro, id_bodega, order.id) self.render("store/success.html", webpay="no", detalle=lista, order=order) else: self.render("beauty_error.html", message="{}".format(response_obj["error"])) else: self.render("beauty_error.html", message="Carro se encuentra vacío")
def get(self): id_bodega = cellar_id cellar = Cellar() res_cellar = cellar.GetWebCellar() if "success" in res_cellar: id_bodega = res_cellar["success"] sku = self.get_argument("sku","") size = self.get_argument("size","") kardex = Kardex() response_obj = kardex.FindKardex(sku,id_bodega,size) if "success" in response_obj: self.write("{}".format(kardex.balance_units)) else: self.write("error:{}".format(response_obj["error"]))
def moveStock(order_detail, user_id): try: id_bodega = cellar_id id_bodega_reserva = shipping_cellar cellar = Cellar() res_cellar = cellar.GetWebCellar() if "success" in res_cellar: id_bodega = res_cellar["success"] else: ExitoHandler.sendError("obtener id de bodega web {}".format( res_cellar["error"])) res_reservation_cellar = cellar.GetReservationCellar() if "success" in res_reservation_cellar: id_bodega_reserva = res_reservation_cellar["success"] else: ExitoHandler.sendError( "obtener id de bodega reserva {}".format( res_reservation_cellar["error"])) cart = Cart() cart.user_id = user_id carro = cart.GetCartByUserId() if len(carro) > 0: res_remove_cart = cart.RemoveByUserId() if "error" in res_remove_cart: ExitoHandler.sendError("vaciar carro {}".format( res_remove_cart["error"])) for l in order_detail: if not l['moved']: kardex = Kardex() producto = Product() response = producto.InitById(l["product_id"]) if "success" in response: kardex.product_sku = producto.sku kardex.cellar_identifier = id_bodega kardex.operation_type = Kardex.OPERATION_MOV_OUT _s = Size() _s.name = l["size"] res_name = _s.initByName() if "success" in res_name: kardex.size_id = _s.id else: ExitoHandler.sendError( "obtener size_id para product_id {}, {}". format(l["product_id"], res_name["error"])) kardex.date = datetime.now( pytz.timezone('Chile/Continental')).isoformat() kardex.user = "******" kardex.units = l["quantity"] res_kardex = kardex.Insert() if "error" in res_kardex: ExitoHandler.sendError( "sacar de bodega web product_id {}, {}".format( l["product_id"], res_kardex["error"])) else: kardex.cellar_identifier = id_bodega_reserva kardex.operation_type = Kardex.OPERATION_MOV_IN res_kardex = kardex.Insert() product = Product() product.updateSold(producto.sku) if "error" in res_kardex: ExitoHandler.sendError( "move a bodega reserva product_id {}, {}". format(l["product_id"], res_kardex["error"])) else: od = OrderDetail() res_moved = od.MarkAsMoved(l['id']) if "error" in res_moved: ExitoHandler.sendError( "mark as moved id {}".format(l['id']), res_moved["error"]) else: ExitoHandler.sendError( "initizalizar producto {}, {}".format( l["product_id"], res_remove_cart["error"])) except Exception, e: ExitoHandler.sendError("mover stock {}".format(str(e))) pass
def get(self, category, name, color): category = category.replace("_", "&") name = name.replace("_", "&") color = color.replace("_", "&") tag = self.get_argument("tag", "") id_bodega = cellar_id cellar = Cellar() res_cellar = cellar.GetWebCellar() if "success" in res_cellar: id_bodega = res_cellar["success"] # sku = self.get_argument("sku","") prod = Product() response_obj = prod.GetProductCatNameColor(category, name, color) if "error" in response_obj: self.render("beauty_error.html", message="Producto no encontrado, error:{}".format( response_obj["error"])) else: tallas_disponibles = [] prod.size_id = sorted(prod.size_id, reverse=True) for s in prod.size_id: kardex = Kardex() response_obj = kardex.FindKardex(prod.sku, id_bodega, s) if "success" in response_obj: # print kardex.balance_units if kardex.balance_units > 0: _size = Size() _size.id = s res_name = _size.initById() if "success" in res_name: tallas_disponibles.append({ "id": _size.id, "name": _size.name, "stock": kardex.balance_units }) elif debugMode: print res_name["error"] elif debugMode: print response_obj["error"] prod.size = tallas_disponibles[::-1] vote = Vote() res = vote.GetVotes(prod.id) votos = 0 prod_name = prod.name try: prod_name = name.split("&")[0] except: pass # print "prod_name:{}".format(prod_name) combinaciones = prod.GetCombinations(id_bodega, prod_name) tag = Tag() res_tags = tag.GetTagsByProductId(prod.id) if "success" in res_tags: relacionados = prod.GetRandom(id_bodega, res_tags["success"]) if "success" in res: votos = res["success"] self.render("store/detalle-producto.html", data=prod, combinations=combinaciones, related=relacionados, votos=votos, tag=tag)
def get(self): if self.current_user: cart = Cart() cart.user_id = self.current_user["id"] lista = cart.GetCartByUserId() cellar = Cellar() res_web_cellar = cellar.GetWebCellar() if self.current_user["type_id"] == User().getUserTypeID( UserType.EMPRESA): total_quantity = 0 for item in lista: total_quantity += item["quantity"] if total_quantity < 15: self.write( json_util.dumps( {"error": "La cantidad mínima es de 15 pares"})) return if "success" in res_web_cellar: web_cellar_id = res_web_cellar["success"] k = Kardex() res_checkstock = k.checkStock(lista, web_cellar_id) if "error" in res_checkstock: self.write(json_util.dumps(res_checkstock)) else: res_update_cart_price = cart.updatePrice( lista, self.current_user) if res_update_cart_price["success"] > 0: self.write( json_util.dumps({ "alert": "Alerta! El precio de algunos productos han sido actualizados" })) else: self.write(json_util.dumps(res_update_cart_price)) else: self.write(json_util.dumps(res_web_cellar)) else: user_id = self.get_argument("user_id", 0) cart = Cart() cart.user_id = user_id lista = cart.GetCartByUserId() cellar = Cellar() res_web_cellar = cellar.GetWebCellar() if "success" in res_web_cellar: web_cellar_id = res_web_cellar["success"] k = Kardex() res_checkstock = k.checkStock(lista, web_cellar_id) if "error" in res_checkstock: self.write(json_util.dumps(res_checkstock)) else: res_update_cart_price = cart.updatePrice( lista, self.current_user) if res_update_cart_price["success"] > 0: self.write( json_util.dumps({ "alert": "Alerta! El precio de algunos productos han sido actualizados" })) else: self.write(json_util.dumps(res_update_cart_price)) else: self.write(json_util.dumps(res_web_cellar))
def get(self): if self.current_user: user_id = self.current_user["id"] contact = Contact() response_obj = contact.ListByUserId(user_id) contactos = [] cities = [] if "success" in response_obj: contactos = json_util.loads(response_obj["success"]) # else: # self.render("beauty_error.html",message="Error al obtener la lista de contactos:{}".format(response_obj["error"])) # return # use globals default to avoid exception web_cellar_id = cellar_id c = Cellar() res_cellar_id = c.GetWebCellar() if "success" in res_cellar_id: web_cellar_id = res_cellar_id["success"] cart = Cart() cart.user_id = user_id lista = cart.GetCartByUserId() suma = 0 for l in lista: suma += l["subtotal"] res_web_cellar = c.InitById(web_cellar_id) if "success" in res_web_cellar: cellar_city_id = c.city_id city = City() city.from_city_id = cellar_city_id res_city = city.ListByFromCityId() # print res_city post_office_list = [] po = PostOffice() res_po = po.ListOnlyWithShippingCost() if "success" in res_po: post_office_list = res_po["success"] if suma > 0: if "success" in res_city: cities = res_city["success"] self.render("store/checkout-1.html", contactos=contactos, data=lista, suma=suma, cities=cities, post_office_list=post_office_list) else: self.render("beauty_error.html", message="Carro está vacío") else: self.redirect("/auth/login")
def get(self): if self.current_user: user_id = self.current_user["id"] nombre = self.get_argument("name", self.current_user["name"]) apellido = self.get_argument("lastname", self.current_user["lastname"]) email = self.get_argument("email", self.current_user["email"]) direccion = self.get_argument("address", "") ciudad = self.get_argument("city_id", "") codigo_postal = self.get_argument("zip_code", "") informacion_adicional = self.get_argument("additional_info", "") telefono = self.get_argument("telephone", "") id_contacto = self.get_argument("contact_id", "") comuna = self.get_argument("town", "") rut = self.get_argument("rut", "") shipping_type = self.get_argument("shipping_type", "") post_office_id = self.get_argument("post_office_id", "") shipping_type_id = 1 cart = Cart() cart.user_id = user_id lista = cart.GetCartByUserId() if len(lista) <= 0: self.render("beauty_error.html", message="Carro está vacío") contact = Contact() contact.name = nombre contact.lastname = apellido contact.telephone = telefono contact.email = email contact.address = direccion if shipping_type == "chilexpress": po = PostOffice() po.InitById(post_office_id) post_office_name = po.name contact.address = "Oficina {}".format(post_office_name) contact.city = ciudad contact.zip_code = codigo_postal contact.user_id = user_id contact.additional_info = informacion_adicional contact.town = comuna contact.rut = rut operacion = "" if id_contacto != "": contact.id = id_contacto response_obj = contact.Edit() operacion = "editar" else: response_obj = contact.Save() operacion = "guardar" if "error" in response_obj: self.render("beauty_error.html", message="Error al {} contacto {}".format( operacion, response_obj["error"])) else: items = 0 suma = 0 for l in lista: c = Cart() response_obj = c.InitById(l["id"]) if "success" in response_obj: c.shipping_id = contact.id c.shipping_info = contact.additional_info c.Edit() else: print response_obj["error"] suma += l["subtotal"] items += l["quantity"] contactos = [] cities = [] response_obj = contact.ListByUserId(user_id) city = City() res_city = city.List() if "success" in response_obj: contactos = json_util.loads(response_obj["success"]) if "success" in res_city: cities = res_city["success"] c = Cellar() res_cellar_id = c.GetWebCellar() web_cellar_id = cellar_id if "success" in res_cellar_id: web_cellar_id = res_cellar_id["success"] res_web_cellar = c.InitById(web_cellar_id) if "success" in res_web_cellar: if shipping_type != "chilexpress": cellar_city_id = c.city_id shipping = Shipping() shipping.from_city_id = int(cellar_city_id) shipping.to_city_id = int(ciudad) res = shipping.GetGianiPrice() if "error" in res: self.render( "beauty_error.html", message="Error al calcular costo de despacho, {}" .format(res["error"])) else: shipping_type_id = 2 shipping = Shipping() shipping.post_office_id = post_office_id res = shipping.GetPriceByPostOfficeId() if "error" in res: self.render( "beauty_error.html", message= "Error al calcular costo de despacho de Chilexpress, {}" .format(res["error"])) else: if shipping.charge_type == 1: costo_despacho = shipping.price * items else: costo_despacho = shipping.price self.render("store/checkout-2.html", contactos=contactos, data=lista, suma=suma, selected_address=direccion, cities=cities, costo_despacho=costo_despacho, shipping_type=shipping_type_id, post_office_id=post_office_id) else: self.redirect("/auth/login")
def post(self): post_office_id = self.get_argument("post_office_id", "") shipping_type = self.get_argument("shipping_type", 1) cart_id = self.get_argument("cart_id", "") ciudad = None items = 0 c = Cart() c.user_id = self.current_user["id"] detail = c.GetCartByUserId() for d in detail: items += int(d["quantity"]) if cart_id != "": cart = Cart() res = cart.InitById(cart_id) if "success" in res: contact = Contact() res_contact = contact.InitById(cart.shipping_id) if "success" in res_contact: ciudad = res_contact["success"]["city_id"] c = Cellar() res_cellar_id = c.GetWebCellar() web_cellar_id = cellar_id if "success" in res_cellar_id: web_cellar_id = res_cellar_id["success"] res_web_cellar = c.InitById(web_cellar_id) if "success" in res_web_cellar: if int(shipping_type) == 1: cellar_city_id = c.city_id shipping = Shipping() shipping.from_city_id = int(cellar_city_id) shipping.to_city_id = int(ciudad) res = shipping.GetGianiPrice() else: shipping = Shipping() shipping.post_office_id = post_office_id res = shipping.GetPriceByPostOfficeId() if "error" in res: self.write( json_util.dumps({ "state": "error", "message": res["error"] })) else: if shipping.charge_type == 1: costo_despacho = shipping.price * items else: costo_despacho = shipping.price self.write( json_util.dumps({ "state": "ok", "shipping_cost": costo_despacho })) else: self.write( json_util.dumps({ "state": "error", "message": res_web_cellar["error"] }))