protected function insertCommissionObject($tier, $subType, $commissionValueType, $commissionValue, $groupId, $commissionTypeId) {
     $obj = new Pap_Db_Commission();
     $obj->setTier($tier);
     $obj->setSubtype($subType);
     $obj->setCommType($commissionValueType);
     $obj->setCommission($commissionValue);
     $obj->setGroupId($groupId);
     $obj->setCommissionTypeId($commissionTypeId);
     $obj->save();
 }
    private function saveCommissionRecord($tier, $subtype, $commissionType, $commissionValue) {
        $commission = new Pap_Db_Commission();
        $commission->setTier($tier);
        $commission->setSubtype($subtype);
        $commission->setGroupId($this->commissionGroupId);
        $commission->setTypeId($this->commissionTypeId);
        if ($commissionValue == null) {
            $commissionValue = 0;
        }

        try {
            $commission->loadFromData();
            // loaded, change commission value and save
            $commission->setCommType($commissionType);
            $commission->setCommission($commissionValue);
            $commission->save();
        } catch(Gpf_DbEngine_NoRowException $e) {
            // doesn't exist, insert new record
            $commission->setCommType($commissionType);
            $commission->setCommission($commissionValue);
            $commission->insert();
        } catch(Gpf_DbEngine_TooManyRowsException $e) {
            // there are multiple rows, it is a mistake
            $commission->deleteUnusedCommissions($tier, $subtype, $this->commissionGroupId, $this->commissionTypeId, 'exact');
            $commission->setCommType($commissionType);
            $commission->setCommission($commissionValue);
            $commission->insert();
        }
    }