I have a website where I am selling items, what I desperately want to 
achieve is to be able to show the buyers the remaining number of each item. 
I have 2 tables, the table that has all the items being sold & has a field 
amount which is the current number of items in stock and the other table 
which records sales as customers buy and has a field quantity which is the 
quantity of items purchased. After a customer has made a purchase I want to 
be able to subtract quantity from amount and have difference update and be 
the new value for amount.

I wrote some controller code which is not achieving this, it is instead 
updating the amount field for all items with the same figure.


THE VIEW

{{extend 'layout.html'}}

    <div class="row">
{{for p in products:}}
        {{if p.product_type=="Earrings":}}
<div class="clothes">
    <h4 style="color: #ff69b4;">{{=p.name}}</h4>
    <h7 style="color: #ff69b4;">{{=p.amount}} available in stock</h7>
    <h5>
        <span style="color: aqua; font-weight: 
bold;">{{=MoneyFormat(p.price)}}</span>
    </h5>
    <img class="magnify" src="{{=URL('download',args=p.image)}}" 
height="200px"/>
    <br />
    <span id="{{='item%s'%p.id}}" style="font-weight: bold; color: 
red;">{{=session.cart.get(p.id,0)}}</span> in cart - {{=A('add to 
cart',callback=URL('cart_callback',vars=dict(id=p.id,action='add')),target='item%s'%p.id,_class='button
 pill')}}
    <br />
    <span style="font-size:12px;font-weight: bold; color: #ff69b4;">Click the 
image to enlarge</span>
<br />
</div>
{{pass}}

{{pass}}
        </div>


THE CART_CALLBACK FUNCTION


def cart_callback():
    id = int(request.vars.id)
    if request.vars.action == 'add':
        session.cart[id]=session.cart.get(id,0)+1
    if request.vars.action == 'sub':
        session.cart[id]=max(0,session.cart.get(id,0)-1)
    return str(session.cart[id])


MY FUNCTION FOR UPDATING AFTER PURCHASES

def index():
    if not auth.user:
        response.flash=T('PLEASE LOG IN FIRST TO BE ABLE TO GET THE MENU AND 
BUY')
    products = db(db.product).select(orderby=db.product.name)
    num=db(db.sale).select()
    for n in num:
        quantity=n.quantity
        if quantity is None:
            quantity=0
        for p in products:
            amount1=p.amount-quantity
            db(db.product.amount).update(amount=amount1)
    return locals()


What should happen is that every time a customer buys whatever number of 
items a new figure showing reduction in number of items should be displayed.


Regards;


Mostwanted




-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/0825a673-1af7-4940-ab0a-8c0d3e2533e4%40googlegroups.com.

Reply via email to