if ($in + $in2 != $originalIn) {
            throw new Exception("new amounts are not equal to original total amount of '" . $originalIn . "'");
        }
        if ($out + $out2 != $originalOut) {
            throw new Exception("new amounts are not equal to original total amount of '" . $originalOut . "'");
        }
        $insert = new MySqlInsert();
        $insert->INTO(tbl_transactions::tableName());
        $insert->COLUMNS(array(tbl_transactions::$tdate, tbl_transactions::$in_amount, tbl_transactions::$out_amount, tbl_transactions::$category, tbl_transactions::$description, tbl_transactions::$ttype, tbl_transactions::$tyear, tbl_transactions::$tmonth, tbl_transactions::$tday, tbl_transactions::$tag_id, tbl_transactions::$store_id));
        $insert->ADD_ROW(array($date, $in2, $out2, $cat2, $desc2, $type, $year, $month, $day, $tag2, $store2));
        Debug($insert->toString());
    }
    $update = new MySqlUpdate();
    $update->TABLE(tbl_transactions::tableName());
    $update->ADD_COLUMN_VALUE_PAIR(tbl_transactions::$in_amount, $in);
    $update->ADD_COLUMN_VALUE_PAIR(tbl_transactions::$out_amount, $out);
    $update->ADD_COLUMN_VALUE_PAIR(tbl_transactions::$category, $cat);
    $update->ADD_COLUMN_VALUE_PAIR(tbl_transactions::$description, $desc);
    $update->ADD_COLUMN_VALUE_PAIR(tbl_transactions::$tag_id, $tag);
    $update->ADD_COLUMN_VALUE_PAIR(tbl_transactions::$store_id, $store);
    $update->ADD_CONDITION(tbl_transactions::getPrimaryKeyField() . "=" . $id);
    Debug($update->toString());
    if ($insert) {
        db::MySqlSubmitTransaction(array($update->toString(), $insert->toString()));
    } else {
        db::MySqlSubmitQuery($update->toString());
    }
    echo "Success.";
} catch (Exception $e) {
    echo $e->getMessage();
}
    $tagTransfers->ADD_COLUMN_VALUE_PAIR(tbl_transactions::$istransfer, "1");
    $tagTransfers->ADD_COLUMN_VALUE_PAIR(tbl_transactions::$tag_id, db_cache_tag::$_N_A["id"]);
    //$tagTransfers->ADD_CONDITION(tbl_transactions::$store_id . "='" . db_cache_store::$_N_A["id"]."'");
    $tagTransfers->ADD_CONDITION(tbl_transactions::$category . " LIKE 'Customer Transfer%' OR " . tbl_transactions::$description . " LIKE 'PC - PAYMENT%'");
    db::MySqlSubmitQuery($tagTransfers->toString());
    //tag records
    $t = new db_cache_store();
    $r = new ReflectionObject($t);
    $storeList = $r->getStaticProperties();
    foreach ($storeList as $key => $value) {
        if ($value != db_cache_store::$_other) {
            $updateStore = new MySqlUpdate();
            $updateStore->TABLE(tbl_transactions::tableName());
            $updateStore->ADD_COLUMN_VALUE_PAIR(tbl_transactions::$store_id, $value["id"]);
            $updateStore->ADD_COLUMN_VALUE_PAIR(tbl_transactions::$tag_id, $value["default_tag_id"]);
            $updateStore->ADD_CONDITION(alphaNumericLowerMySql(tbl_transactions::$description) . " LIKE '%" . alphaNumericLower($value["name"]) . "%'");
            //$updateStore->ADD_CONDITION(tbl_transactions::$in_amount . "=0");
            $updateStore->ADD_CONDITION(tbl_transactions::$istransfer . "=0");
            $updateStore->ADD_CONDITION(tbl_transactions::$store_id . "='" . db_cache_store::$_none["id"] . "'");
            db::MySqlSubmitQuery($updateStore->toString());
        }
    }
    echo 'tagging complete. ';
} else {
    if (!is_null($_GET["reset-tagging"])) {
        //reset all tags to other
        $resetTag = new MySqlUpdate();
        $resetTag->TABLE(tbl_transactions::tableName());
        $resetTag->ADD_COLUMN_VALUE_PAIR(tbl_transactions::$tag, db_enum_tag::c_none);
        $resetTag->ADD_COLUMN_VALUE_PAIR(tbl_transactions::$store_id, db_cache_store::$_none["id"]);
        $resetTag->ADD_COLUMN_VALUE_PAIR(tbl_transactions::$istransfer, "0");