Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by steven99

  1. You would want to use the OrderPaid hook instead and then set the recurring amount to whatever it should renew at. The change can be done via the UpdateClientProduct API call or via internal classes.
  2. If you don't need that in a report type view, you should be able see that figure in the client's profile in the admin -> Invoices/Billing column -> Net Income .
  3. Notices should not cause a 500 error as that is more of a fatal error. Though if the error was output or something beyond a json was given, it might have caused an error. The error log might be in /home/myuser/public_html/whmcs/error_log or each folder within whmcs or in a central file for php errors. You need to check a phpinfo() output. Check WHMCS -> Utilities -> System -> PHP Info and find error_log and the error log should be there. Check that file and see if there are any fatal errors or more then a notice.
  4. So just to confirm, you want promo to be able to applied to a service renewal that may or may not already have a promo applied? Or do you want a promo to be applied to an already generated invoice that will renew a service / product? This could be done with some hooks and there might be a module out there that does it. Since it has been 6 years for that one request, it might be just around the corner or another 6 years.
  5. Try using OrderProductPricingOverride instead as you're dealing with configurable options here and not addons and OrderAddonPricingOverride wont fire otherwise. I tested with OrderProductPricingOverride and it worked. Also I will presume you have the use capsule and product lines above this.
  6. There is likely a php error within the callback. Turning debug, log errors, show errors under whmcs -> settings -> other tab may help. Once that is done, check the php error log for the errors after a webhook fails. The php error log can and usually are separate from the apache /nginx / whatever web server error log.
  7. Would agree with @brian! , though looking at the error it seems the view cart template has PHP in it that is trying to access an object but that object has not been initialized . Are you using a custom orderform?
  8. Well, the troubleshooting steps you have taken thus far. For example, did you enable module logging and use the logmodule function for it do an entry to confirm the hook is actually firing?
  9. Are you accessing the admin via https:// and it redirects you to http://? if so, that would be why it logs you out as the session cookie wont match . As such, you need to edit the database directly and change the option there. or use http:// and change the password afterwards -- not the best solution but it will get you there.
  10. Configuration options would give you that. Settings -> Products / services -> Configurable options . Create the new group and assign it to the product.
  11. Are you saying the ClientChangePassword no longer fires? Could you explain further on what the problem is ?
  12. I'd agree with @yggdrasil . Unless you are saying you need like a 3 month advance notice of cancel. I suppose a CancellationRequest hook could be made to adjust dates and such but changing the next due date would affect invoicing. One method I could think of is a cron hook with a service custom field that has the "date to start termination" plus other hooks for client area product details page to show that date. Then when that date approaches, the cron hook starts the cancel processing. For example, if the next due date month is the same as the terminate date month, then do end of cycle termination request via api. The CancellationRequest hook would "cancel" the original request and fill out the service custom field date to terminate with the calculated date or perhaps one the client sets. Or use a custom page to handle that process to stop whmcs cancel process altogether . With that said, it would be nice if the termination date did work like the above and not require a cancel state. I think your goal could be done but would require a developer to do the hooks.
  13. I think the web agency aspect where someone could have multiple clients on the same system and be able to access those clients via one login is the real draw for the feature if it actually works that way. Beyond that for clients that need multiple people accessing an account, the sub account feature was perfect.
  14. Are you wanting to change the ID to match with the old system's ID ? If so, why? Without services, invoices, etc the only places I could think of right off that the ID would matter would be the contacts, users, email, and log history tables. You would have to change it in the database directly. With that said, I would advise against unless there is a real good reason to do so beyond cosmetics.
  15. IIRC that was an issue for me also and just chalked it up to payment modules just being different then others.
  16. That is for cancels that are at the billing period or like at the next cron job. I would not muck about in the actual status as that could throw the whole system off . Rather, the hook should check the termination date and/or pending cancel requests and go from there for displaying the termination pending status.
  17. In system settings -> Domain pricing, do you have DNS management checked for the TLDs you want to offer that with? That has to be checked for each TLD before it will show . For the update contact details, I would suggest turning on debug mode under the domain registrar module -> config and then try to update. It should then send an email of debug info. or at least that is what the code is saying it does.
  18. You can try using ShoppingCartValidateCheckout hook to check for domains within $_SESSION[‘cart’] and then returning error "blah product requires a domain registration, please pick a domain" and provide a link to the domain checker page. If you want it to be specific to a product, then going through the items in the cart and check their pids against an array of pids that you want to be required to have a domain registration and return error as needed.
  19. Yup, I do. 😉 Oh you want instructions / the hook? A bit pressed for time so can't give a whole tested solution. Basically the hook would look like: add_hook('ClientAreaHeadOutput', 1, function($vars) { $JS = "<script> $( document ).ready(function() { $('#inputnewDomain').hide(); $('#inputnewDomainTLD').hide(); $('#inputnewDomain').parent().append(\"<input name='domainnamesidtld' id='domainnamesidtld'>\"); $( '#domainnamesidtld' ).keyup(function() { $( '#inputnewDomain' ).val($( '#domainnamesidtld' ).val() ) }); }); </script> "; return $JS; }; You'll need to find the correct IDs for the 'inputnewDomainTLD' and "inputnewDomainTLD" and change as needed. You'll also need javascript to split the domain part (sid) from the TLD and have something to check for multiple level TLDs like .com.za/au/whatever . Place within a file called domainSIDTLDcombined.php or whatever name you want and place that within /WHMCS/includes/hooks/ . With that said, personally I think it is better to have a menu for the TLD as then they can have a list of all TLDs you support as well as it prevents mistakes that can be frustrating to clients.
  20. WHMCS is using session cookies where shopify might be using permanent cookies for that. When you update edge, edge quits and clears the session cookies as the session would be over. I have seen the behavior also in firefox.
  21. Either make multiple hooks, changing the function name for each, and change the "45" in $productinfo['pid'] == "45" to the proper product id or change the hook to use an array and use in_array to see if the pid is in the array.
  22. If you mean file permissions, they should be standard 644 for files and 755 for directories. Also, all files and folders should be owned by the user -- including the temp upload directory for the upgrade. This is presuming PHP is running under php-fpm / fastcgi / suphp as the user and not apache / nginx / nobody. You could probably reduce permissions to only allow user read and that would be recommended on the configuration.php file. The temp upload directory for the upgrade should have similar permissions .
  23. Ah had not seen 8.0 docs yet. In there there is a setStatusCancelled() function that would likely be better.
  24. I believe that would require a custom domain spinner. I have not seen docs on doing a domain spinner and only mentions of GetDomainSuggestions in registrar modules. Did see a old post using templates to query enom for suggestions.
  • 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