For got a line. Here is the correct code for anyone who has this situation.

   db.bonus_daysummary.create_time.readable
= db.bonus_daysummary.distributor_id.readable = False

   class VirtualTotalField(object):
        def total_price(self):
            return "$" + str(
                self.bonus_daysummary.sponsorbonus +
self.bonus_daysummary.leadbonus + \
                self.bonus_daysummary.matchingbonus +
self.bonus_daysummary.growingbonus + \
                self.bonus_daysummary.adviewpayback +
self.bonus_daysummary.adpackcomm + \
                self.bonus_daysummary.kvalue_deduction +
self.bonus_daysummary.group_management_fee
            )

   db.bonus_daysummary.virtualfields.append(VirtualTotalField())

   dailyBonusReport= SQLFORM.grid(
            (db.bonus_daysummary.distributor_id == distributor.id),
            orderby=[~db.bonus_daysummary.report_date,
db.bonus_daysummary.distributor_id],
            paginate=10, deletable=False, editable=False, details=False,
csv=True,
            links=[dict(header=T('Total'), body=lambda row:
row.total_price)],
            formname='dailyBonus',
    )

On Tue, Feb 14, 2012 at 3:08 PM, Bruce Wade <[email protected]> wrote:

> Thanks Richard and Anthony,
>
> I will use the links trick, works for how I need it.
>
>     db.bonus_daysummary.create_time.readable
> = db.bonus_daysummary.distributor_id.readable = False
>
>    class VirtualTotalField(object):
>         def total_price(self):
>             return "$" + str(
>                 self.bonus_daysummary.sponsorbonus +
> self.bonus_daysummary.leadbonus + \
>                 self.bonus_daysummary.matchingbonus +
> self.bonus_daysummary.growingbonus + \
>                 self.bonus_daysummary.adviewpayback +
> self.bonus_daysummary.adpackcomm + \
>                 self.bonus_daysummary.kvalue_deduction +
> self.bonus_daysummary.group_management_fee
>             )
>
>    dailyBonusReport= SQLFORM.grid(
>             (db.bonus_daysummary.distributor_id == distributor.id),
>             orderby=[~db.bonus_daysummary.report_date,
> db.bonus_daysummary.distributor_id],
>             paginate=10, deletable=False, editable=False, details=False,
> csv=True,
>             links=[dict(header=T('Total'), body=lambda row:
> row.total_price)],
>             formname='dailyBonus',
>     )
>
>
>
> On Tue, Feb 14, 2012 at 2:39 PM, Anthony <[email protected]> wrote:
>
>> Unfortunately, this is not well supported yet. See
>> http://stackoverflow.com/questions/9232336/calculated-fields-in-web2py-sqlgrid/9235992#9235992for
>>  a workaround.
>>
>> Anthony
>>
>>
>> On Tuesday, February 14, 2012 5:26:29 PM UTC-5, Detectedstealth wrote:
>>>
>>> Hi,
>>>
>>> I have a column I want to show in a SQLFORM.grid that is not a field in
>>> the database table. The column will add together multiple columns to give a
>>> total. However I am not sure how to accomplish this.
>>>
>>> table:
>>> db.define_table('bonus_**daysummary',
>>>     Field('create_time', 'datetime', default=request.now),
>>>     Field('report_date', 'datetime'),
>>>     Field('distributor_id', 'references distributors'),
>>>     Field('sponsorbonus', 'decimal(12,2)'),
>>>     Field('leadbonus', 'decimal(12,2)'),
>>>     Field('binarybonus', 'decimal(12,2)'),
>>>     Field('matchingbonus', 'decimal(12,2)'),
>>>     Field('growingbonus', 'decimal(12,2)'),
>>>     Field('adviewpayback', 'decimal(12,2)'),
>>>     Field('adpackcomm', 'decimal(12,2)'),
>>>     Field('kvalue_deduction', 'decimal(12,2)'),
>>>     Field('group_management_fee', 'decimal(12,2)'),
>>>      migrate=False
>>> )
>>>
>>> controller action:
>>>     class VirtualTotalField(object):
>>>         def total_price(self):
>>>             return "$" + str(
>>>                 self.bonus_daysummary.**sponsorbonus +
>>> self.bonus_daysummary.**leadbonus + \
>>>                 self.bonus_daysummary.**matchingbonus +
>>> self.bonus_daysummary.**growingbonus + \
>>>                 self.bonus_daysummary.**adviewpayback +
>>> self.bonus_daysummary.**adpackcomm + \
>>>                 self.bonus_daysummary.kvalue_**deduction +
>>> self.bonus_daysummary.group_**management_fee
>>>             )
>>>
>>>     db.bonus_daysummary.**virtualfields.append(**VirtualTotalField())
>>>
>>>     dailyBonusReport= SQLFORM.grid(
>>>             (db.bonus_daysummary.**distributor_id == distributor.id),
>>> orderby=[~db.bonus_daysummary.**report_date, 
>>> db.bonus_daysummary.**distributor_id],
>>>  paginate=10, deletable=False, editable=False, details=False, csv=True,
>>> formname='dailyBonus',
>>>     )
>>>
>>> Now after appending the virtual field how to set its label and have it
>>> actually displayed in the grid?
>>>
>>> --
>>> --
>>> Regards,
>>> Bruce Wade
>>> http://ca.linkedin.com/in/**brucelwade<http://ca.linkedin.com/in/brucelwade>
>>> http://www.wadecybertech.com
>>> http://www.warplydesigned.com
>>> http://www.**fitnessfriendsfinder.com<http://www.fitnessfriendsfinder.com>
>>>
>>
>
>
> --
> --
> Regards,
> Bruce Wade
> http://ca.linkedin.com/in/brucelwade
> http://www.wadecybertech.com
> http://www.warplydesigned.com
> http://www.fitnessfriendsfinder.com
>



-- 
-- 
Regards,
Bruce Wade
http://ca.linkedin.com/in/brucelwade
http://www.wadecybertech.com
http://www.warplydesigned.com
http://www.fitnessfriendsfinder.com

Reply via email to