def get_payment_data(self, person_id):

        query = (FS("person_id") == person_id) & \
                (FS("status") == 1) & \
                (FS("date") <= current.request.utcnow.date())

        resource = current.s3db.resource("dvr_allowance",
                                         filter = query,
                                         )
        data = resource.select(["id",
                                "date",
                                "currency",
                                "amount",
                                ],
                                orderby = "dvr_allowance.date",
                                represent = True,
                               )

        payments = []
        append = payments.append
        for row in data.rows:
            payment_details = {"r": row["dvr_allowance.id"],
                               "d": row["dvr_allowance.date"],
                               "c": row["dvr_allowance.currency"],
                               "a": row["dvr_allowance.amount"],
                               }
            append(payment_details)

        return payments

    # -------------------------------------------------------------------------
Install everything from the default set, then overload
dataset/ETHPy150Open sahana/eden/modules/s3db/dvr.py/DVRRegisterPayment.get_payment_data--crossover with--dataset/ETHPy150Open evennia/evennia/evennia/contrib/chargen.py/OOCCmdSetCharGen.at_cmdset_creation