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