I figured if I could update the amount field in db.product within the buy
functiontion just around the same time i'm saving inside the db.sale table
when purchasing then it should be easy but I am having a really hard time
identifying only the purchased items by their ids & subtracting their
quantities from similar items in db.product!
The code below is able to update the amount in db.product but it updates
for all products which is not what i want
CODE SAMPLE 1:
for item1 in item1:
diff=item1.amount-value
db(db.product.amount).update(amount=diff)
Then i made another desperate attempt with the code below but it is not
updating anything at all!
for item1 in item1:
for id, k in session.cart.items():
if item1.id==k:
diff=item1.amount-value
db(db.product.amount).update(amount=diff)
Anyone who can do this better please help.
Regards;
Mostwanted
On Thursday, September 5, 2019 at 8:21:56 AM UTC+2, Dave S wrote:
>
>
>
> On Wednesday, September 4, 2019 at 10:59:21 PM UTC-7, mostwanted wrote:
>>
>> 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
>>
>>
>>
> index() looks like it spends a great deal of time subtracting everything
> in sales from everything in products.
>
> I think you are recording the product id in the cart. Are you then (on
> check-out, I presume) recording the product id in db.sales?
>
> if so , then you don't need the select() on all products.
> Instead, use the product id in each row of db.sales to select the product
> entry to update.
>
> You probably want a way to identify which rows in db.sales have already
> been processed (that is, which quantities have already been subtracted from
> the the available in the corresponding product entry).
>
> /dps
>
>
>
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/web2py/72d0171e-3668-4554-8606-f65536e1d8ec%40googlegroups.com.