You need to go with a new module.
One way to do this is inherit from hr.payslip, and patch the method get_inputs so that you go over employees attendance, check if worked on holidays and his attendance records and create inputs for them.
class hr_payslip(osv.osv):
    '''
    Pay Slip
    '''
    _inherit = 'hr.payslip'
    def get_inputs(self, cr, uid, contract_ids, date_from, date_to, context=None):
        res = super(hr_payslip, self).get_inputs(cr, uid, contract_ids, date_from, date_to, context=context)
        contract_obj = self.pool.get('hr.contract')
        for contract in contract_obj.browse(cr, uid, contract_ids, context=context):
            """
               Your code here to find out if emplooyee has more than 75% attendance.
               Suppose you set a flag called 'good_attendance'
            """
            input = {
                 'name': 'Attendance over 75 percent',
                 'code': 'ATTENDANCE_OVER_75',
                 'contract_id': contract.id,
                 'amount': good_attendance,
            }
            res += [input]
        return res
Then you create a rule that checks for ATTENDANCE_OVER_75 input and adds a bonus if true...
Similar will be for checking if employee worked on holidays...
<record id="extra_hr_salaire_hs" model="hr.salary.rule">
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="name">heure supplémentaire</field>
<field name="code">STAR0002</field>
<field name="appears_on_payslip">True</field>
<field name="sequence">00002</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">if worked_days.number_of_days > 30:
result = contract.wage + contract.wage * (worked_days.number_of_days-30) /100
else:
result = contract.wage </field>