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