Jump to content

Troy

Member
  • Content Count

    514
  • Joined

  • Last visited

  • Days Won

    1

Troy last won the day on February 9 2015

Troy had the most liked content!

Community Reputation

3 Neutral

About Troy

  • Rank
    Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. I usually don't get into these tussles as I see it largely as a waste of time/energy. Usually the disastrous end result isn't changed by such complaints. I do enjoy reading them though! We're a small host with active clients in the low four figures. I've had two owned licenses since 2008 and only used one in production. Our costs are going up 1100% as a result of this increase. Not as bad as some, but enough to hurt. The thing is, if cPanel hadn't done this to us already, I'd probably switch to a monthly plan and continue with WHMCS. When cPanel raised their pricing, I opted to stick with them. When they raised it a second time, I began wondering where it would all end and started at least contemplating a control panel change, but wasn't yet serious enough to take concrete steps to plan such a move. When WHMCS raised their pricing, and I realized that if we switch our owned license to monthly we'll be paying monthly what we paid annually for support and updates, I decided enough was enough. Since we can continue running the current version of WHMCS without support or updates, we have some time to think about the best way to migrate away from WHMCS. However, what WHMCS may not have considered is how their action might be the last straw for people like me who had decided to stick with cPanel. When I look at the numbers, I realize that I can save far more monthly by migrating away from cPanel than I can from migrating away from WHMCS, so my first step will be to migrate away from cPanel. I can cut my control panel MRC in half or better by doing this and save far more per month than I would lose by switching to a monthly WHMCS plan. What I'm wondering is whether WHMCS thought about the impact their decision might have on the cPanel side of the house. In our case, where we might have opted to switch to a monthly WHMCS license were it not for the cPanel increase, we've decided instead to run WHMCS for some time on the current version AND also begin migrating away from cPanel. Without this price increase from WHMCS that wouldn't have happened (or wouldn't have happened as quickly--would have depended on future cPanel price increases eventually pushing us away.) Bottom line is that in our case, this increase will not benefit WHMCS financially, but WILL hurt cPanel financially. I can't help but wonder if this sort of scenario might be playing out for other cPanel & WHMCS customers as well.
  2. Good points for anyone who decides to mess with the registrationperiod value. The rest of it is fine as-is if you don't, but you're right that those two possibilities should be considered before you do. I wasn't sure if the outstanding invoice thing could be an issue, because in my case it would only apply if a client manually renewed a domain name (because of the registrationperiod being set to 1 on a daily basis right before auto-renewal invoices are generated), and I figured WHMCS wouldn't change the registrationperiod in tbldomains until the invoice was paid. However, a quick test confirmed that WHMCS does indeed update the registrationperiod when the renewal order is placed, even if the invoice is left unpaid. IMO that's bad form. It's already bad form to pre-determine that the next auto-renewal should renew for the same term as a manual renewal, but to change the registrationperiod before the invoice is paid is bad form on top of bad form. This makes me wonder...is there a potential loophole that can be exploited by a client? Consider the following: 1. WHMCS is configured to generate auto-renewal invoices 2 weeks before expiration, with the invoice due in 7 days. 2. WHMCS generates an auto-renewal invoice for 1 year. 3. Client orders a 3 year renewal manually before the auto-renewal invoice is due, and either pays the invoice or doesn't. 4. tbldomains.registrationperiod is changed to 3 whether or not the manual renewal order invoice is paid. 5. Auto-renewal 1 year invoice is paid during the daily cron when it comes due. It seems to me that auto-renewal invoice payment under these conditions would renew the domain name for 3 years when the client has only been charged for 1 year.
  3. If you use a supported registrar, WHMCS' Registrar TLD Sync can keep your domain pricing up to date without a lot of effort. However, it does NOT sync the pricing to your existing clients' domains. The Bulk Pricing Updater isn't suited to this task either, requiring many steps to update pricing for different TLDs, billing cycles and domain addons. I put together a SQL query that will set the recurring amount of all client domain names in tbldomains with your current domain pricing, and figured I'd share it for those whom it might benefit. This was written for WHMCS 8.1.3 and MariaDB 10.3. I recommend testing it on a copy of your data, and I make no warranties regarding it's suitability to your particular environment, nor claim that it is free of error. That said, it works well for me. Here are some suggestions for testing this on a copy of your data, assuming you have access to the server shell as root: 1. Export a copy of the relevant tables and import into a work database: mysqldump <your-whmcs-db-name> tblclients tbldomains tbldomainpricing tblpricing > ~/workdb.sql mysqladmin create workdb mysql workdb < ~/workdb.sql 2. Get an idea of the current recurring amount for all your active domains (to give you something to compare against after running the sql script): mysql workdb MariaDB [workdb]> select sum(recurringamount) from tbldomains where status = 'Active'; +----------------------+ | sum(recurringamount) | +----------------------+ | 50029.21 | +----------------------+ 1 row in set (0.000 sec) 3. Create a file to hold the SQL that you can run against the database: nano ~/domain_pricing_sync.sql The SQL to put in the file: SET @idp = (select ssetupfee from tblpricing where type = 'domainaddons'); SET @dns = (select msetupfee from tblpricing where type = 'domainaddons'); SET @fwd = (select qsetupfee from tblpricing where type = 'domainaddons'); update tbldomains d, tbldomainpricing dp, tblpricing p, tblclients c set d.recurringamount = case d.registrationperiod when 1 then p.msetupfee + (d.registrationperiod * ((d.idprotection * @idp) + (d.dnsmanagement * @dns) + (d.emailforwarding * @fwd))) when 2 then p.qsetupfee + (d.registrationperiod * ((d.idprotection * @idp) + (d.dnsmanagement * @dns) + (d.emailforwarding * @fwd))) when 3 then p.ssetupfee + (d.registrationperiod * ((d.idprotection * @idp) + (d.dnsmanagement * @dns) + (d.emailforwarding * @fwd))) when 4 then p.asetupfee + (d.registrationperiod * ((d.idprotection * @idp) + (d.dnsmanagement * @dns) + (d.emailforwarding * @fwd))) when 5 then p.bsetupfee + (d.registrationperiod * ((d.idprotection * @idp) + (d.dnsmanagement * @dns) + (d.emailforwarding * @fwd))) when 6 then p.monthly + (d.registrationperiod * ((d.idprotection * @idp) + (d.dnsmanagement * @dns) + (d.emailforwarding * @fwd))) when 7 then p.quarterly + (d.registrationperiod * ((d.idprotection * @idp) + (d.dnsmanagement * @dns) + (d.emailforwarding * @fwd))) when 8 then p.semiannually + (d.registrationperiod * ((d.idprotection * @idp) + (d.dnsmanagement * @dns) + (d.emailforwarding * @fwd))) when 9 then p.annually + (d.registrationperiod * ((d.idprotection * @idp) + (d.dnsmanagement * @dns) + (d.emailforwarding * @fwd))) end where d.is_premium != 1 and dp.extension = right(d.domain, length(d.domain) - locate('.', d.domain) + 1) and p.type = 'domainrenew' and p.relid = dp.id and c.id = d.userid and p.currency = c.currency; 4. Save the file and the run it against your work database: mysql workdb < ~/domain_pricing_sync.sql 5. Repeat step 2 and see what your total looks like after the update. Once you're comfortable the SQL works for you, you can run it against your production database manually after you update domain pricing, or even schedule it via cron if you want to automatically keep pricing in sync. There probably isn't a good reason for setting it up to run via cron, unless like me you don't like the way WHMCS allows a user to register or manually renew a domain for X number of years, and then assumes the next renewal should be for that same number of years. I personally run this SQL daily via cron, with this line added to the very top of the SQL: update tbldomains set registrationperiod = 1; This way if a client has registered or manually renewed for longer than a year, this will reset the domain to a 1 year registration/renewal with the current pricing for one year. It can certainly be argued that it's a bit of an overkill to run it daily just to keep a few clients' domains who occasionally renew for longer periods reset to 1 year, but I do it anyway. For me it takes a little under a minute to run this against 5,135 domain names. The SQL is written to handle those who use multiple currencies (I do not), and does NOT adjust the pricing for any premium domain names that are properly set (tbldomains.is_premium = 1). It does update ALL domains regardless of status. An additional where clause to only update domains with certain statuses (i.e. where status = 'Active' or where status not in ('Expired', 'Cancelled', 'Fraud', 'Transferred Away')) can easily be added to limit the amount of records updated if you wish. This does not update any open invoices, so it's conceivable a client with an open renewal invoice will still pay an outdated price and have the domain renewed. WHMCS doesn't store the domain extension separately in the tbldomains table, so it has to be calculated on the fly, hence "right(d.domain, length(d.domain) - locate('.', d.domain) + 1)". The assumption is that everything including and to the right of the first instance of a period in the domain name represents the extension. I can't think of a case where this would present a problem, but it's possible and something to consider before deciding to use this. Someone who is more motivated than I could take this concept and build an addon module with more flexibility, such as nice UI providing the ability to only update selected TLDs with selected Status values or some such. Feel free to do so if you are so inclined. Use at your own risk and test thoroughly before running against your production db!
  4. In case anyone else has these questions, here are the answers now that I'm set up in Texas: 1. Sales tax is remitted solely to the Texas Comptroller of Public Accounts, which then remits to the separate taxing locales as necessary. No need for level 1/2 taxes to separate state from local sales tax. 2. 20% of digital services / data processing is exempt from sales tax, so you should only collect 80% of the sales tax for which you will be liable. In my case 8.25% (State of Texas + Dallas City) * 0.8 = 6.6%.
  5. I'm getting ready to set up a second company in Dallas. (Current one is outside of Texas and I haven't had to deal with sales tax.) As I understand it, a Texas based company must charge sales tax for hosting services, (only to clients who are also located in Texas), but 20% of the charge is exempt. Texas sales tax is 6.25%, and Dallas city sales tax is 2.00%, for a total of 8.25% Two questions for anyone who is already in this situation: 1. Do you separate the two taxes (Level 1 and Level 2) or charge a single rate? I assume separating them would make it easier to report the amounts one should remit to each agency? (I haven't formed the company yet so am just assuming there would be two separate payouts, one to the state and one to the city?) 2. To accommodate the 20% exemption do you charge 5.00% state sales tax (80% of 6.25) and 1.60% (80% of 2.00) city sales tax? Reducing the tax rate by 20% is functionally equivalent to making 20% of the entire charge exempt, so I assume this would work out okay, but I'd like to get it right from the get-go.
  6. In version 8 it's viewable on the User tab when you click the drop down arrow for a user and choose the Security Question option. I'm now trying to figure out how in the world an Admin can clear it/remove the security question.
  7. The issue is clients wanting to change their passwords. WHMCS says their password is strong but then cPanel disallows it. Maybe the password strength in the WHMCS settings are for system-generated passwords only? Still it doesn’t seem wise to show the user they are using a good secure password only to then inform them of a failure when they submit it.
  8. Something as simple as MuFFin123# passes the WHMCS check set at 100, but fails cPanel set at 80.
  9. Since WHMCS is owned by cPanel can't you guys use the same algorithm for password strength? I have 90 set as a value in General Settings -> Minimum User Password Strength and 80 set for password strength in cPanel, and STILL there are passwords that will get through the WHMCS check but be rejected by cPanel. It's driving users (and me) crazy! I'm going to push the WHMCS setting up to 95 or maybe 100, but with the same ownership of both products you would think matching values on both sides would do the trick.
  10. Worked perfectly! Thanks again for the great suggestion Brian!
  11. Awesome idea, thanks! I hadn’t thought of using a hook. Kinda dumb of me since I did use a hook to change the destination of the whmcs home menu item. I’ll give this a try and report back.
  12. I recently upgraded to WHMCS 7.4.2, from (believe it or not) 5.3.14. Looks like URLs are handled a bit differently, and I'm having trouble with a rewrite I need to do. Basically I want to suppress WHMCS's index.php. I've decided to keep everything in the root, marketing pages that are html and WHMCS php files. There are no collisions and everything is working fine except that I don't ever want people using the WHMCS home page--I want it to redirect to the html homepage. (Client area links outside of WHMCS will all link to clientarea.php and force login if not already logged in.) Problem is, it appears that URLs now route through index.php to an extent. I definitely want to retain full friendly URLs. However, if a request comes in for just the home page index.php, I want it to redirect to index.html. Anything I've tried that actually redirects index.php if it has no query string variables will also redirect the knowledgebase, which I don't want to happen. So far it seems like only the knowledgebase is affected. Has anyone accomplished something similar and could pass along any pointers. I've tried some many rewrite rule variations but can't seem to get it working properly.
  13. I haven't figured out what I think about this price change, but one thing I have seen time and time again Infopro is that you are extremely condescending. Just an observation. I've seen it for ages in the cPanel forums, and when you came here I though "Oh great! Now I get to see the same condescension on the WHMCS forums." I'm trying to say this in the nicest possible way. It is not meant as an insult--strictly constructive criticism.
  14. I wouldn't see why not. If you are manually migrating data--try to do it in the order in which invoices are coming due in your previous system and if you can stay on top of that you'll perhaps be able to continue migrating while using WHMCS for new orders, and not have to process payments in the old system even though you're not fully migrated yet.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use & Guidelines and understand your posts will initially be pre-moderated