public function create($mode)
 {
     $pdo = PDOBuilder::getPdo();
     $newTransaction = !$pdo->inTransaction();
     if ($newTransaction) {
         $pdo->beginTransaction();
     }
     // Insert mode
     $id = parent::create($mode);
     if ($id === false) {
         if ($newTransaction) {
             $pdo->rollback();
             return false;
         }
     }
     // Insert rules
     $stmt = $pdo->prepare("INSERT INTO PAYMENTMODES_RETURNS " . "(PAYMENTMODE_ID, MIN, RETURNMODE_ID) " . "VALUES (:pmId, :min, :ret);");
     $stmt->bindValue(":pmId", $id);
     foreach ($mode->rules as $rule) {
         $stmt->bindValue(":min", $rule->minVal);
         if ($rule->modeId == PaymentModeReturn::PARENT_ID) {
             $stmt->bindValue(":ret", $id);
         } else {
             $stmt->bindValue(":ret", $rule->modeId);
         }
         if ($stmt->execute() === false) {
             if ($newTransaction) {
                 $pdo->rollback();
             }
             return false;
         }
     }
     // Insert values
     $stmtVal = $pdo->prepare("INSERT INTO PAYMENTMODES_VALUES " . "(PAYMENTMODE_ID, VALUE, RESOURCE, DISPORDER) " . "VALUES (:pmId, :val, :res, :dispOrder);");
     $stmtVal->bindValue(":pmId", $id);
     foreach ($mode->values as $value) {
         $stmtVal->bindValue(":val", $value->value);
         $stmtVal->bindValue(":res", $value->resource);
         $stmtVal->bindValue(":dispOrder", $value->dispOrder);
         if ($stmtVal->execute() === false) {
             if ($newTransaction) {
                 $pdo->rollback();
             }
             return false;
         }
     }
     if ($newTransaction) {
         $pdo->commit();
     }
     return $id;
 }