Ok, here is what I would do in my template:

<tbody>
{{last_item_name=[]}}
{{item_quantity = 0}}
{{for sales in products:}}
<tr>
    {{if sales.product.name not in last_item_name:}}
        <td>{{=sales.product.name}}</td>
        {{last_item_name.append(sales.product.name)}}
    {{else:}}
        <td>&nbsp;</td>
    {{pass}}
    <td>{{=sales.product.Quantity}}</td>
    {{item_quantity += sales.product.Quantity}}
    <td>{{=item_quantity}}</td>
</tr>
{{pass}}
</tbody>

In my controller I'd go another step further and add an orderby to ensure 
all products with the same name are in order and in the order of when they 
were purchased. But, this probably means you need a left join as well.

I started coding this, but then was confused by what your columns are 
supposed to be.  From what I gathered,

Name
Quantity Sold for this sale
Total quantity so far

But now I'm not sure I'm right

What does product.Quantity represent vs sales.quantity?

-Jim

On Thursday, October 28, 2021 at 8:57:38 AM UTC-5 mostwanted wrote:

> Hey Jim, thanks for your proposed solution,it worked as shown below, i 
> hope this is how you imagined it but this works now the problem I still 
> have &cant imagine is how I do the sum up of all of the item's purchase 
> quantity, how would you go about it:
>
> *CONTROLLER:*
>     products=db().select(db.sales.ALL)
>
> *VIEW:*
> <script>
> $(function() { *//Script to hide the empty rows*
>             $("table tr").each(function() {
>     var cell = $.trim($(this).find('td').text());
>     if (cell.length == 0){console.log('empty');
>         $(this).addClass('nodisplay');
>     }});});
> </script>
>
> <tbody>
>                  {{last_item_name=[]}}
>                 {{for sales in products:}}
>                 <tr>
>                     {{if sales.product.name not in last_item_name:}}
>                     <td>{{=sales.product.name}}</td>
>                     <td>{{=sales.product.Quantity}}</td>
>                     <td>{{=sales.quantity}}</td>
>                     
>                     {{last_item_name.append(sales.product.name)}}
>                     {{else:}}
>                     <td class="hideTd"> </td>
>                     {{pass}}
>                     {{pass}}
>                 </tr>
>                 </tbody>
>
> On Thursday, October 28, 2021 at 2:01:34 PM UTC+2 Jim S wrote:
>
>> In the solution I proposed, I would create a variable in my template and 
>> sum it as I looped through the records.
>>
>> It might help if you showed a visual example of what you're trying to 
>> accomplish. I may be misunderstanding the question, and if so, giving bad 
>> advice.
>>
>> -Jim
>>
>> On Thursday, October 28, 2021 at 4:15:49 AM UTC-5 mostwanted wrote:
>>
>>> I am able to group them up using *(groupby) *e.g 
>>> (*products=db().select(db.sales.ALL, 
>>> orderby=db.sales.product.name <http://db.sales.product.name>, 
>>> groupby=db.sales.product.name <http://db.sales.product.name>)*) but now 
>>> I have a problem calculating the sum of each item's sold quantities.
>>>
>>> On Wednesday, October 27, 2021 at 8:27:50 PM UTC+2 Jim S wrote:
>>>
>>>> I have done this before, but not using SQLFORM.grid
>>>>
>>>> In a nutshell
>>>>
>>>> 1. Create table tag
>>>> 2. create your table header
>>>> 3. create a temp variable last_item_name and set to None
>>>> 4. loop through all the data you're going to display
>>>> 5. in the item_name column, check if the current item name is equal to 
>>>> last_item_name - if it is, put blanks in that cell, if not, put the item 
>>>> name
>>>> 6. set last_item_name = current item name
>>>>
>>>> Not pretty or clever, more of a brute force way to get it to work.
>>>>
>>>> -Jim
>>>>
>>>> On Wednesday, October 27, 2021 at 9:56:28 AM UTC-5 Clemens wrote:
>>>>
>>>>> Have a look here:
>>>>>
>>>>> http://www.web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#groupby-having
>>>>>
>>>>> Combining this with:
>>>>>
>>>>> http://www.web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#sum-avg-min-max-and-len
>>>>>
>>>>> Is it what you need?
>>>>>
>>>>> Best regards
>>>>> Clemens
>>>>>
>>>>>
>>>>> On Wednesday, October 27, 2021 at 4:44:11 PM UTC+2 mostwanted wrote:
>>>>>
>>>>>> I have a sales database table that records items sold in a store, an 
>>>>>> item can appear several times in the table having been sold several 
>>>>>> times 
>>>>>> or in different days. What i wanna do is display this information in an 
>>>>>> html table in a view without the item names repeating also with the sold 
>>>>>> quantity summed up for every item that appears more than once, how can i 
>>>>>> achieve this?
>>>>>>
>>>>>> Regards
>>>>>>
>>>>>

-- 
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/f9980284-e7b0-4078-9b33-36f1ef50efaan%40googlegroups.com.

Reply via email to