Jump to content

[RESOLVED] Expired Domain Renewal


Recommended Posts

Hi,

 

For some very strange reason, WHMCS allows clients to "renew" domains that expired over 6 months ago. Since the domains are generally held by the registrars at that time, we end up having to refund the invoices and incurring fees.

 

I understand the logic behind allowing that for 30 days after the expiry date but why after that?

 

Thanks for looking into this.

Link to comment
Share on other sites

Actually what would make the most sense is allow what ever Registrar you are using the same options that the Registrar allows.

 

For instant I use ResellerClub, if the domain name has expired in last 30 days, allow the customer to renew as normal, currently can do.

 

If the domain name has slipped into Redemption Period, then allow us to set pricing for redemption and customer would have to pay the redemption price to get domain back.

 

Once the domain has been deleted from the Registrar, then the domain should be deleted from the customers Account in WHMCS, or at least set to canceled. But I say actually delete the domain (keeping all past invoices associated with the domain)

 

At least for the ResellerClub Registrar in WHMCS there is a WHMCS Sync Cron job that syncs up the expiration date at the Registrar to the one showing in customers account, should it be wrong. I would think you could modify that same Cron Job to accomplish the other items mentioned above as well.

Link to comment
Share on other sites

So if the status is showing Expired past 30 days, WHMCS won't automatically cancel them?? Wouldn't make more sense this way than having to create another cron job to do that?

 

No, as every registry and in many cases every tld is different and has differnet 9and ever changing) rules.

 

I do agree some "maintenance" tasks are needed, however *exactly* what they do would vary greatly between installations ... so a "tidyup" daily process which does various jobs based on admin/config choice is the only way for it to work - at present that means coding them yourself

Link to comment
Share on other sites

It would be nice to have such settings in WHMCS for every TLD. :)

 

you'd need it for every tld and registry combination though :P

 

we simply disable the renew button at expiry date minus 31, and stop them being able to pay the invoice based on our own rules for each tld - solves the problem :)

Link to comment
Share on other sites

I'm suprised you havent already implemented a whole host of cron-jobs to assist then ...

update tbldomains set status=Cancelled where status=Expired and date > '".$today-30days."'; ...

 

I'm getting an error when I run that comand:

 

Error

SQL query:

UPDATE tbldomains SET STATUS = Cancelled WHERE STATUS = Expired AND date > '".$today-30days."'

MySQL said:

#1054 - Unknown column 'Expired' in 'where clause'

 

MySQL version is 4.1.22-standard.

 

Also how do I set up a cron job to run that comand?

Pardon my ignorance but I'm not a programmer, I just can find my way around sometimes.

Link to comment
Share on other sites

we simply disable the renew button at expiry date minus 31, and stop them being able to pay the invoice based on our own rules for each tld - solves the problem :)

 

What rules are you talking about...? If you disable renew button and cancel domain, there will still be an invoice that client can pay.

Link to comment
Share on other sites

A standardized setting of "set 30 day expired domain to cancel" would be a much useful config option in the general settings.

 

This would take care of most of the problems we have today.

 

WHMCS wouldn't have to worry about checking if it is in redemption period, find out the reseller's cost, add that into the price for each TLD the reseller is using, etc.. That is just way too much work.

 

If someone has the SQL statement, it may be worth it to send it in to WHMCS Support and request this be implemented. It isn't hard to add something like that into the mix.

Link to comment
Share on other sites

I also have to agree with that.

 

I would also suggest one more thing in addition... Domains expired after 30 days should be set to some new status, for example "Expired Archive" or something like that, and domains with that status should not be shown on client side. We have a clients with 20+ expired domains and that looks really messy on the client side, and after few years some clients can have maybe even 100+ expired domains and it's very stupid that any domain that expired few years ago still be shown in client control panel forever...

 

I think that also something similar should be implemented for expired (terminated) services with some global configurable option for X days after expiration that will change expired and terminated service to some hidden status maybe "Terminated Archive".

Link to comment
Share on other sites

Well, in that case, yes, but that should be part of WHMCS, so we don't have to code the same thing... :)

 

And also for us very important feature would be that old expired domains and services can be hidden from client side.

Link to comment
Share on other sites

Today one of our customer have renewed a domain that has expired 1 year ago.

 

I really don't belive that WHMCS don't support this situation. I would like to suggest the implementation of grace period and add tax fee to renew domains expired a long time. Resellerclub, for example, charge 60 dollars to renew domains after expired grace period.

Link to comment
Share on other sites

To temporary solve this problem while a new version fixing this issue isn't available, try add this to the top of your clientareadomains.tpl:

 

{php}
@mysql_query("UPDATE tbldomains SET status='Cancelled' WHERE userid='".$_SESSION["uid"]."' AND status='Expired' AND expirydate < DATE_SUB(CURDATE(), INTERVAL 20 DAY)");
{/php}

Link to comment
Share on other sites

  • 3 weeks later...

Another temporary solution - in clientareadomaindetails.tpl add one more {if} to disable buttons:

Change this

<p><strong> »  {$LANG.domainmanagementtools}</strong></p>

<table align="center"><tr>
{if $renew}<td><form method="post" action="{$smarty.server.PHP_SELF}?action=domainrenew">
<input type="hidden" name="domainid" value="{$domainid}">
<p align="center"><input type="submit" value="{$LANG.domainrenew}" class="button"></p>
</form></td>{/if}
{if $managecontacts}<td><form method="post" action="{$smarty.server.PHP_SELF}?action=domaincontacts">
<input type="hidden" name="domainid" value="{$domainid}">
<p align="center"><input type="submit" value="{$LANG.domaincontactinfo}" class="button"></p>
</form></td>{/if}
{if $emailforwarding}<td><form method="post" action="{$smarty.server.PHP_SELF}?action=domainemailforwarding">
<input type="hidden" name="domainid" value="{$domainid}">
<p align="center"><input type="submit" value="{$LANG.domainemailforwarding}" class="button"></p>
</form></td>{/if}
{if $dnsmanagement}<td><form method="post" action="{$smarty.server.PHP_SELF}?action=domaindns">
<input type="hidden" name="domainid" value="{$domainid}">
<p align="center"><input type="submit" value="{$LANG.domaindnsmanagement}" class="button"></p>
</form></td>{/if}
{if $getepp}<td><form method="post" action="{$smarty.server.PHP_SELF}?action=domaingetepp">
<input type="hidden" name="domainid" value="{$domainid}">
<p align="center"><input type="submit" value="{$LANG.domaingeteppcode}" class="button"></p>
</form></td>{/if}
{if $registerns}<td><form method="post" action="{$smarty.server.PHP_SELF}?action=domainregisterns">
<input type="hidden" name="domainid" value="{$domainid}">
<p align="center"><input type="submit" value="{$LANG.domainregisterns}" class="button"></p>
</form></td>{/if}
</tr></table>

to:

{if $status eq $LANG.clientareaactive} {*This line added *}

<p><strong> »  {$LANG.domainmanagementtools}</strong></p>

<table align="center"><tr>
{if $renew}<td><form method="post" action="{$smarty.server.PHP_SELF}?action=domainrenew">
<input type="hidden" name="domainid" value="{$domainid}">
<p align="center"><input type="submit" value="{$LANG.domainrenew}" class="button"></p>
</form></td>{/if}
{if $managecontacts}<td><form method="post" action="{$smarty.server.PHP_SELF}?action=domaincontacts">
<input type="hidden" name="domainid" value="{$domainid}">
<p align="center"><input type="submit" value="{$LANG.domaincontactinfo}" class="button"></p>
</form></td>{/if}
{if $emailforwarding}<td><form method="post" action="{$smarty.server.PHP_SELF}?action=domainemailforwarding">
<input type="hidden" name="domainid" value="{$domainid}">
<p align="center"><input type="submit" value="{$LANG.domainemailforwarding}" class="button"></p>
</form></td>{/if}
{if $dnsmanagement}<td><form method="post" action="{$smarty.server.PHP_SELF}?action=domaindns">
<input type="hidden" name="domainid" value="{$domainid}">
<p align="center"><input type="submit" value="{$LANG.domaindnsmanagement}" class="button"></p>
</form></td>{/if}
{if $getepp}<td><form method="post" action="{$smarty.server.PHP_SELF}?action=domaingetepp">
<input type="hidden" name="domainid" value="{$domainid}">
<p align="center"><input type="submit" value="{$LANG.domaingeteppcode}" class="button"></p>
</form></td>{/if}
{if $registerns}<td><form method="post" action="{$smarty.server.PHP_SELF}?action=domainregisterns">
<input type="hidden" name="domainid" value="{$domainid}">
<p align="center"><input type="submit" value="{$LANG.domainregisterns}" class="button"></p>
</form></td>{/if}
</tr></table>

{/if} {*This line added *}

Please check pictures to see result

before.jpg

after.jpg

Edited by hiddenko
Link to comment
Share on other sites

  • 1 year later...
  • 4 weeks later...
  • WHMCS CEO

This should have been resolved quite some time ago now? Back when the domain renewals area was added to the cart, common TLD grace periods were implemented and renewals being allowed only within those windows. Also domains auto change to expired status when the expiry date passes, and only active status domains can be managed from the client area.

 

See http://wiki.whmcs.com/Domains_Management#Domain_Renewal_Restrictions

 

Matt

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • 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