Beispiel #1
0
    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"])
Beispiel #2
0
    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"]
Beispiel #3
0
    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"])
Beispiel #4
0
    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)
Beispiel #5
0
    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)
Beispiel #6
0
    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")
Beispiel #7
0
	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"]))
Beispiel #8
0
    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
Beispiel #9
0
    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)
Beispiel #10
0
    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))
Beispiel #11
0
    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&aacute; vac&iacute;o")

        else:
            self.redirect("/auth/login")
Beispiel #12
0
    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&aacute; vac&iacute;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")
Beispiel #13
0
    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"]
                }))