I am customizing the OnlinePOS system to meet my task but i don't 
understand the Ajax Callback function, I can see it is very beneficial in 
updating values without a page refresh.

In the highlighted part in the view below, when i click the *plus *& *minus 
*links the quantity value gets updated without page refresh, 
What i want to achieve is that
*1. When the quantity gets updated i want the total figure to also update 
with quantity automatically *because presently i ma using a jQuery page 
reload function which is not ideal*,*

*2. *There is also a <form> with an input field where i enter the paying 
amount, *what i want is that when i click submit button there shouldnt be a 
page refresh but just have the paying amount displayed and the calculations 
done without the page reloading*, currently I get a page refresh!

How can i achieve these??


Below is my code:

*VIEW:*
{{extend 'layout.html'}}
<script>
    $(document).ready(function(){
        $('#reload2').click(function()
        {
            location.reload();
        });
    });
</script>
<div id="clear">
{{=A('CLEAR BASKET', _href=URL('start'), _id="basket")}}
</div>
<h1>Your Shopping Cart</h1>
<hr />

<div id="receipt">
<table width="100%">
    <tr>
        <th>PRODUCT</th>
        <th>PRICE</th>
        <th>QUANTITY</th>
        <th>SUB-TOTAL</th>
        <th>ADD/SUBTRACT</th>
    </tr>
  {{for id, qty in cart.items():}}{{p=db.product(id)}}
  <tr>
    <td>{{=p.name}}</td>
    <td>P {{=p.price}}</td>
      <td><span id="{{='item%s'%p.id}}">{{=qty}}</span></td>
      <td>
          P {{=qty*p.price}}
      </td>
      <td>
##
*          
{{=A('+',callback=URL('cart_callback',vars=dict(id=p.id,action='add')),target='item%s'%p.id,_class='button
 
pill', _style='increase')}}*
*          
{{=A('-',callback=URL('cart_callback',vars=dict(id=p.id,action='sub')),target='item%s'%p.id,_class='button
 
pill', _style='increase')}}*
      </td>
  </tr>

  {{pass}}
    <tr><td><hr /></td><td><hr /></td><td><hr /></td><td><hr /></td><td><hr 
/></td></tr>
    <tr>
        <td></td><td></td><td class="payment">Tender</td><td class="amt">P 
{{=text}}</td>
    </tr>
    <tr>
        <td></td><td></td><td class="payment">Total</td><td class="amt"> P 
{{=total}}</td> <td><div id="reload"><a href="#" id="reload2">PRICE RELOAD<
/a></div></td> *#jQuery PAGE RELOAD FUNCTION*
    </tr>
    <tr>
        <td></td><td></td><td class="payment">Change:</td> <td class="amt">P 
{{=change}}</td>
    </tr>
    <tr></tr>
    <tr></tr>
    <tr>
        <td style="font-weight: bold; font-size: small;">Authorised By: 
{{=auth.user.first_name}} {{=auth.user.last_name}}</td>
    </tr>
    <tr>
        <td style="font-weight: bold; font-size: small;">Date & Time: 
{{=request.now}}</td>
    </tr>
</table>
</div>
<hr />

<div id="formContainer">

#INPUT FIELD FOR ENTERING THE PAYING AMOUNT
<form method="POST">
<input name="name" placeholder="Enter Amount" id="amount"/>
    <input type="submit" value="PURCHASE" id="buy"/>
</form>
</div>
<hr />
<div id="checkout">
<a href="{{=URL('buy')}}">MOVE TO CHECKOUT</a>
</div>


*CONTROLLER1*
@auth.requires_login()
def cart():
    if not session.cart:
        session.flash = 'Add something to shopping cart'
        redirect(URL('index'))
    total = sum(db.product(id).price*qty for id,qty in session.cart.items())
    text=request.vars.name
    if text:
        change=int(text)-total
    else:
        change=int(0)
    return dict(cart=session.cart, total=total, text=text, change=change)



*CONTROLLER2*
@auth.requires_login()
def buy():
    if not session.cart:
        session.flash = 'Add something to shopping cart'
        redirect(URL('index'))
    import uuid
    from gluon.contrib.AuthorizeNet import process
    invoice = str(uuid.uuid4())
    total = sum(db.product(id).price*qty for id,qty in session.cart.items())
    for key, value in session.cart.items():
        db.sale.insert(invoice=invoice,buyer=auth.user.id,product = 
key,quantity 
= value,price = db.product(key).price)
    session.cart.clear()
    session.flash = 'Purchase Complete'
    redirect(URL('invoice',args=invoice))
    return dict(cart=session.cart,form=form,total=total)

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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to