Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 12/21/21 in all areas

  1. 5 points
    I am more than glad to discuss this since it gives me the opportunity to prove that what moves me. Surely I'm not the best business man and developer of the world but I have a lot of direct experience since I'm playing with WHMCS since 2007. Let's go. If I had a euro for every time I heard that, I would own a Ferrari. There are probably 50k providers using WHMCS. Can you imagine how many developers and CEOs are out there? Ones that use this software on a daily basis sharing the same needs and requirements. There are many opportunities and potential customers to fulfill the growth of multiple companies. There's room for everyone. This market is rich and can provide for everyone. That being said, apart from the usual Modulesgarden and few more companies, I can't see anyone showing up with a module that solves something relevant and that is maintained for more than a couple of weeks. Why is it like this? Short answer: easier said than done & the devil is in the details. WHMCS gives people the perception to be a developer-friendly environment. One sees action hooks, API and concludes that making modules and adjustments is not a big deal till you begin coding for real and relize that this is far from being true. When I started in 2007 there were tens of developers actievely releasing modules. They all disappeared. Today there are less than 5 companies left and probably only 1 or 2 are capable of assisting you decently while they maintain their softwares in this WHMCS that keeps growing bugs, bloats and stupid ideas. It is also worth to underline that many of these companies are focusing on meeting small and trouble-free needs like creating templates, micro-management scripts, integrating some kind of services with API and payment gateways. With very few exceptions, nothing can match the complexity of Modulesgarden works. In essence we are talking about a market with almost no competition so two questions arise. First. Why in such a rich market with almost no competition and many needs that are waiting to be satisfied no one is investing money into module development? Second. If this market is rich and creating modules is easy, why Modulesgarden and others are expanding or moving to other markets? For me the answer is that creating modules for WHMCS is not like creating plugins for WordPress where tens of thousands of devs are welcome. In WHMCS no one gives a flying duck of your work. They never valued nor considered the job of third-party developers that are helping them to sell their product. This shouldn't surprise us as they don't even care about their own customers. Also don't forget that as a developer you are required to pruchase WHMCS in order to start coding. As for me, I started building this monster (Billing Extension) in 2014 exactly because I had the idea that coding in WHMCS was relatively easy and profitable. I was wrong as hell. Unfortunately I couldn't predict years or bad twists by WHMCS. To make matters worse, unlike most of my competitors, I focused on the dark side of WHMCS aiming to fix its issues and add missing features. If I could go back in time, I would stay away from billing. Profit-wise, creating a template or couple of payment gateways would have been the best decision but I don't regret it since I learned many things and met many people. So today I have a module so complex that would take a company of the size of Modulesgarden to support customers and maintain its code. I tried to scale-up. I hired developers, added more funds, merged modules rebuilding them from scratch with the same framework (1 year of work), wrote 500+ pages of docs in two languages, tried to increase prices (...) but it was still not enough. All while WHMCS from day to night release once another a version that breaks the mega-complex script that took you one month of work and that still needs to work in the old way only for people running older versions of WHMCS 🥵 After 3 consecutive years of Ok-ish results and nightmares due to WHMCS releases, I was still dealing with the same problem. I needed more funds to hire more developers but customers didn't want to support us with price increases because (I quote) «We don't need support», «Your module can't cost us more than WHMCS, Plesk or cPanel licenses», «I only use one feature». Fair enough, got it. Ironically few years later WHMCS increased prices up to $1.299.95/mo and put an end to life-time licenses 🤔 In retrospect, I should have raised prices anticipating the trend started by WHMCS, Plesk, cPanel and competitors. You can't grow customers and face increased complexity and challenges driven by poor management of WHMCS keeping the same cheap price. You end up investing tons of man-hours debugging the impossible and money doesn't grow on trees. In conclusion for me it was time to let it go. Funding such an unsustainable business just because you happen to have other sources of income doesn't make it better. You are just prolonging an agony. And for what? Cons: More nightmares, working on 25 December, at night, 12-hours per day (even 16 during emergencies 😑), being permanently unable to keep up with the so-called "stable" releases of WHMCS, receiving five new tickets every time you close one, being "stalked" and "hated" by customers, negative reviews, dealing with all the crazy stuff involving billing and e-invoicing and that unexpected change that forces you to update your module so that it works with: five, six, twentyone, ThemeMetro, Swiftmodders, bootstrap 3, 4, my uncle, my grandmother... give me a break. Pros: some profit that doesn't repay you for the toxicity you have been subjected to. In all honesty it is not worth the effort. I prefer to invest in a grid bot to buy low and sell high on a random crypto. It feels better even when I lose 1k in less than a minute. This reminds me the 2007-2012 period when I was running a quite successful game hosting provider. Everything was going fine. Good vibes, revenues, high dedication, passion for what I was doing till people started playing with ddos attacks to fulfill their egos and live the "hacker-life". At that time anti-ddos protection was very costly. I was spending 28 times the money spent by attackers to ddos me. When you spend 80% the money just to cover firewall and bandwidth costs with servers still lagging, you know it is time to sell your toy and move on. Many years later on a different market and for different reasons the story repeated with WHMCS. Ask me anything but when it comes to gameservers and WHMCS my wallet is closed and my time is better spent on a bycycle in the attempt to win a race on Zwift even if it hurts and leaves you panting like a lizard on a hot rock. Atm I' happily working on a different market that is way more complex than WHMCS but it is still more rewarding. There's a bigger pool of talents and teaching stuff is easier. Not to mention we can plan incomes, expenses and predict changes well ahead simply because there's no entity like WHMCS that feels the urge to pump out sloppy updates driven by nothing that resembles user feedback not couting shady collabs. In my opinion these are only ways to perform well as third-part developer of WHMCS: Making small scripts that are not subjected to WHMCS decisions Work for providers with deep pockets Find a way to gather tens of software developers, designers and specialistys in various fields Embracing open source hoping providers sponsor your project and that other devs come to help. If I had to choose I'd go for open source but considering risks and the fact that WHMCS doesn't care about you, why should I spend my reputation for them? Why should I keep supporting them in chains? At this point I would create my own system
  2. 2 points
    I don't see how having many files is a security risk. If I manage to upload a backdoor on your system, nothing prevents me from burying it in includes/api, naming it addclients.php and obfuscating it with ionCube so that you will never know what is going on. More intelligently I could simply inject my backdoor in an official file of WHMCS. For example I can deobfuscate clientarea.php, add my backdoor and make it accessible with a specific query string. Then I re-obfuscate the entire thing to complete my job. Unless you are constantly watching access log you can't realize what is going on. Not to mention I could hide myself even better using a query string that looks as standard as possible. Personally I protect my system against this kind of problems running a script every couple of hours that compares the checksum of every file I have on the server with the ones included in the official release of WHMCS (same version). If I find a mismatch, the script makes this file harmless (eg. renaming it clientarea.php.suspicious) and sends me an email. Similarly the script also detects php files that are not part of the official release of WHMCS. In this case I review all these potential intruders on a panel where I can whitelist them in case it's a false positive (eg. my own scripts) or destroy them and make further analisys. I was going to release this toy for free on Github but things happened.
  3. 2 points
    Hi @WebHostingPeople I'm pleased to see that our support team were able to help explain the Billing Logic operation, and how deleting invoices was blocking further invoices from being generated. In the broad context; WHMCS will never generate duplicate invoices for the same service on the same Next Due Date. If a service renewal invoice is deleted, but you wish to generate a new invoice for a similar period, edit the client's Products/Service to move the Next Due Date forward by 1 day, then Save Changes. This will allow a new invoice to be generated for almost the same period. Additionally it was my personal pleasure to explain the operation of the Store Client Data Snapshot feature in the follow-up questions in your ticket. If you have any further questions, please don't hesitate to get back in touch.
  4. 2 points
    Great idea as long as he has that installed. Saves time on future coding and upgrades.
  5. 2 points
    I feel the urge to reply on this matter because what you are saying is wrong on many levels. I'm fine with people leaving bad reviews and not renewing me but I refuse to be compared to what WHMCS is doing. First thing first, at the moment I have direct access to 78 systems where BX is installed and working plus hundreds more that I know are working fine. That being said, unlike WHMCS I'm not saying that the module is problem-free. The vast majority of these problems would be easy to solve if only I had time for the usual stuff: get FTP/backend credentials, connect, see the error, fix the problem. But I can't keep up with such a big number of providers and their requests. I don't even have time for presales questions that would easily bring me money just answering to a couple of questions. In other words, I am not avoiding difficult tickets focussing on ones that bring money. This puts me miles away from what WHMCS is doing. For them it's money > anything else, even reputation. For me it's pure and simple lack of time. I am democratically ignoring every incoming request including ones from coming from huge providers, ones that end up buying dedicated support and that spend weeks trying to get my attention. As I said earlier, I even dropped customers who purchased Pro plan (199€/month each) simply because Business and Enterprise plans were already too much demanding and I don't want to do overselling with the time I don't have. Before covid pandemic I burned 45.000€ of my personal money (I have more sources of income) in the attempt to fuel my business with more resources to meet customers' expectation so please, don't put me on the same level of WHMCS. Unlike them, I invested more than I was earning. I'm working in the hosting business since 2007 and let me tell you that the last 3 years before pandemic got me no profit. I paid expenses and made my developer rich 😁 I'll tell you more. We stopped selling BX multiple times in the attempt to buy us time to hire a new developer and finishing writing documentation. This is something you don't see from WHMCS. They often give you final releases without documentation. We planned to increase BX price multiple times to halve the number of active customers (less tickets) increasing inflow of money. We wanted to reach 399€/year in 3 years but we immediately discarded the idea when the first price increase occurred in 2020 (from 95€ to 149€/year). We received so much complaints in response that we decided to stop. Customers valued cheaper price more than the idea of having better support so unlike WHMCS, we listened to customers and end up building dedicated (paid) support. I'm making modules since 2008 and I spent probably 2 years merging them into bigger and more complete modules keeping the same price. For example BX was born as a combination of 3 modules I was selling 95€/year each. As you can imagine, I lost money from this decision but I did it because I didn't like what my competitors were doing. They were selling tens or tiny modules aiming to maximize profits at the expense of ease of use and maintainability. As if it wasn't enough, I am seriously considering to release all my modules as free and open source on Github. Time will tell. That being said, next time you think I don't move a finger unless I get money, please remember what I just told you. I'm open to criticismI about my decisions and my abilities as a developer, human being etc. but don't compare me to WHMCS greediness. We are on two different planets. BX surely wasn't the module for you and we failed to meet your expectations. I agree with you. I am not here making excuses. Parts of my plans for WHMCS have failed. The best I can do is focusing on a small number of customers hoping the rest can use BX without the need to contact me. Unhappy customers can freely open PayPal disputes. I never reply so that they can get their money back by default. From time to time I even allow them to use the module for free for one year so that they have time to find alternatives. Let me conclude by saying that there must be a reason why there are less than 4 software-companies left in WHMCS. Most of them don't even have employees. With very few exceptions, we all fail to meet expectations. Guess why... 🤔
  6. 2 points
    I'm responding just to point out few things. As for the issue reported here, we're cointinuing here. This is true and not a secret. I don't care about WHMCS anymore (not my products) for reasons described in "Submit ticket" page on my website. My job now is to make sure modules keep working with WHMCS. I no longer try to improve WHMCS features, workaround its numerous bugs or follow their poor decisions. To borrow a phrase favoured by WHMCS, I have no plans to switch my life to purely focussing on bugs/defects and code optimization of a software owned and poorly maintained by another company. WHMCS staff don't care about fixing their software. Me neither. I did for 15 years but enough is enough. Actually it is more expensive. The cheapest plan was Pro (199€ / month) but it has been retired to allow me to focus on customers with Business and Enterprise plans that cost not less than 5 times that price with the service being restricted to Italian providers. Understand that Billing Extension is immensely complex and complexity leads to lot of questions, requests and customizations especially when you face the many problems and shortcomings of WHMCS. Focusing on a small group of companies that can speak my language is mutually profitable and manageable. I didn't plan it but it is what it is. I tried for a decade to follow the steps of Modulesgarden where many devs are capable of handling hundreds of customers but this doesn't work with this module. Try finding developers who are experts in such a very specific position. One that masters WHMCS and understands advanced concepts of billing and electronic invoicing for multiple countries and legislations. I never found one. The amount of time I need to invest to get a developer fluent with such topics is unsustainable given customers' demands. As a reference, on average I need to spend 2 hours on Skype/Zoom with the customer just for showing features and configure part of the settings. Following this, add a couple of hours for fine tuning and the inevitable advanced requests. Not counting when they ask me to teach them how to do stuff in WHMCS & BX. Lastly most of the times when they realize my knowledge of WHMCS and hosting in general, I am "condemned" to be their main and only contact person for all requests. I know it is awful for customers with no support plan but I can't do the impossible. I can't keep up with incoming requests neither grow talents at a sustainable speed. For sure not for a module that costs just 149€ / year in such a framework - WHMCS - that is getting worse from years, that has lost connection with customer base and that I don't think has a future. As if it wasn't enough, it drained my passion for coding. For this reason there's plenty of documentation available in two languages. To people expecting replies, I can only suggest to stop renewing the module if they can't live with my silence. I am truly sorry but life is one and I can't be victim of this platform. WHMCS is now my secondary job I do for a very limited number of customers. My main job is still coding but on a different market and for a company that deserves my time. Peace 👍
  7. 2 points
    We've already established that WHMCS could care less about fixing bugs and they'll tell you 'you're the only one raising an issue about this'. Which registrar are you using? If it's Resellerclub or LogicBoxes based, Marco at ResellerClub-Mods has a module or two that should help with this.
  8. 1 point
    Just a quick update, today we released Lara v8.4.0, which is fully compatible with WHMCS v8.4.0 (released 2 days ago!).
  9. 1 point
    Sounds like an issue on Paypal's side, I think. Little bit of a side note but you may want to consider switching to Stripe. Fees are about the same (maybe a little less) and then you could just store the customer's card number and use auto debit. It could save you a lot of time and hassle. https://stripe.com/pricing
  10. 1 point
    Hello everyone, Just want to let you know that e-mail aliases are now supported for OX in WHMCS 8.4: https://docs.whmcs.com/Version_8.4_Release_Notes#OX_App_Suite_Email_Aliases If you experience any issues with this, please reach out to our support team and we will assist in resolving them.
  11. 1 point
    Hi Sjpals, Yes, WHMCS comes with integrations to more than one platform (including cPanel) so that a hosting account or service can be provisioned automatically when an order is received: https://docs.whmcs.com/Server_Modules Similarly to provisioning hosting, domain names can be registered or transferred in an automated way. Here you find a list of the registrar modules that come with out our software: https://docs.whmcs.com/Domain_Registrars Yes. If the product or service offered does not strictly fall into the web-hosting category, you may create a product as type 'Other' and use WHMCS to simply receive orders, generate invoices and reminders. We do have some explainer videos which might help with understanding what WHMCS can do: https://go.whmcs.com/1629/product-tour
  12. 1 point
    It's a little bit hidden. Try this: Login then go to the dropdown where your name is (upper right corner) and click 'account settings'. Next page, click 'Business Information' from the left side menu. On that next screen, click 'update' next to your Business Name. You can edit your logo, address, etc there.
  13. 1 point
    WHMCS have just launched v8.4 which sees many new features. We have updated all of our WHMCS Templates & modules with full support and created guides on how to update your existing product. Learn More: https://www.zomex.com/clients/announcements.php?id=256
  14. 1 point
    Ho provato qualche ora fa ad accere a quella stessa fattura "blu" (simboleggia che l'XML è stato generato) e mi risulta che l'XML è stato rimosso dal nodo FTP. Di fatto mi propone se voglio o meno fare il detach dal database ovverosia dire al modulo di dimenticarsi di quell'XML. Per caso hai risolto? C'erano problemi con il percorso del nodo oppure hai un qualche genere di automatismo che sposta o elimina gli XML? p.s. Ti consiglio di rimuovere lo screenshot o quanto meno cambiare il path amministrativo da "admin" a qualche altra cosa per questo motivo.
  15. 1 point
    This is the kind of news I would like to read in "next release announcement" of yours ... IMHO much, much more useful than any "with this new version you can manage SSL Site Seals!!!" (seriously?!)
  16. 1 point
    It's been more than two years since we have been struggling with "premium domain transfers" and "pre-owned/afternic/sedo" domains on WHMCS. WHMCS has a bug when adding Premium Domain transfers into shopping cart as they just display the standard domain transfer price (and renewal price). As a result of pricing mismatch, the domain transfers don't work. In December 2019, WHMCS had created a #CORE-14055 bug case for this back as far as I know. Since then there hasn't been any resolution whatsoever. This also means we cannot also register 'premium domains'. I have already pulled my hair out over this and am wondering if anyone else has done the same.
  17. 1 point
    Hi all, I can confirm that CORE-14055 was resolved in 8.4.0 Beta 1. We'll get the release notes updated shortly, My apologies for the confusion.
  18. 1 point
    I checked their changelog 'til RC1 and CORE-14055 did not appear. That's why we did not start testing this feature. Let me check this within the rest of this week, latest starting next week. Kai
  19. 1 point
    I've seen there's a feature request submitted 7 years ago about bulk auto recalculate. I know you can do that from phpMyAdmin or with a script but enough is enough. <? /** * Bulk Auto Recalculate Client Domain & Products/Services * * @writtenby Kian * */ use WHMCS\Database\Capsule; add_hook('AdminAreaHeaderOutput', 1, function($vars) { if ($vars['filename'] == 'clientssummary' AND $_GET['userid'] AND in_array($_GET['kata'], array('bulkAutoRecalculateP', 'bulkAutoRecalculateD'))) { $adminUsername = ''; // Optional for WHMCS 7.2 and later if ($_GET['kata'] == 'bulkAutoRecalculateP') { foreach(Capsule::table('tblhosting')->where('userid', '=', $_GET['userid'])->pluck('id') as $v) { localAPI('UpdateClientProduct', array('serviceid' => $v, 'autorecalc' => true), $adminUsername); } header('Location: clientssummary.php?userid=' . $_GET['userid']); die(); } elseif ($_GET['kata'] == 'bulkAutoRecalculateD') { foreach (Capsule::table('tbldomains')->where('userid', '=', $_GET['userid'])->pluck('id') as $v) { localAPI('UpdateClientDomain', array('domainid' => $v, 'autorecalc' => true), $adminUsername); } header('Location: clientssummary.php?userid=' . $_GET['userid']); die(); } } return <<<HTML <script> $(document).ready(function(){ $('[href*="affiliates.php?action=edit&id="], [href*="clientssummary.php?userid="][href*="&activateaffiliate=true&token="]').closest('li').after(('<li><a href="#" id="kata_BulkAutoRecalculate"><i class="fas fa-fw fa-sliders-h" style="width:16px;text-align:center;"></i> Bulk Auto Recalculate</a></li>')); $('#kata_BulkAutoRecalculate').on('click', function(e){ e.preventDefault(); $('#modalAjaxTitle').html('Bulk Auto Recalculate'); $('#modalAjaxBody').html('<div class="container col-md-12"><div class="row"><div class="col-md-6 text-center"><div class="panel panel-default"><div class="panel-body"><p><i class="fas fa-box fa-5x"></i></p><p><small>Auto Recalculate Customer\'s <strong>Products/Services</strong></small></p><p><a href="clientssummary.php?userid={$_GET['userid']}&kata=bulkAutoRecalculateP" class="btn btn-info btn-block">Recalculate Now »</a></p></div></div></div><div class="col-md-6 text-center"><div class="panel panel-default"><div class="panel-body"><p><i class="fas fa-globe fa-5x"></i></p><p><small>Auto Recalculate Customer\'s <strong>Domains</strong></small></p><p><a href="clientssummary.php?userid={$_GET['userid']}&kata=bulkAutoRecalculateD" class="btn btn-info btn-block">Recalculate Now »</a></p></div></div></div></div></div>'); $('#modalAjax .modal-submit').addClass('hidden'); $('#modalAjaxLoader').hide(); $('#modalAjax .modal-dialog').addClass('modal-lg'); $('#modalAjax').modal('show'); }) }) </script> HTML; });
  20. 1 point
    Not sure about doing it in bulk but you can manually update them so you stop losing money. Basically, update your price tables (System settings > domain pricing) and then go to each domain (use the search to make it a little faster or method below) and recalculate each domain. It's not the best way but ultimately stops you from losing any more money. Is it for multiple TLDs? You can also go to Clients > Domain Registrations and then search by TLD. Then open each one in a new tab, recalculate and save.
  21. 1 point
    Hi John, I disabled the automatic backups and that worked! Thanks alot for your help.
  22. 1 point
    Hi @Joelj, How have things been going with the backup disabled? If it's been working since, then it would indicate the backup generation was using up all the available resources on your hosting account. To confirm, you can re-enable it and run the daily automation tasks from the command line , this should show a resource exhausted error on-screen: https://help.whmcs.com/m/automation/l/683269-advanced-cron-troubleshooting If you don't have WHMCS installed on a cPanel server, then I can suggest exploring other external backup options which don't require PHP to operate as an alternative (such as Jetbackup).
  23. 1 point
    Looking at the docs, yup, referral: So surprising.
  24. 1 point
    logActivity is been triggered by WHMCS (or modules/hooks). With this hook index, you can catch the description and then run your code. Just use strpos on $vars[‘desciption’]
  25. 1 point
    Thanks Fraz. Great to hear that they finally dive into patching our bug report regarding premium transfers. How much money Resellers may have lost with other registrars who just accepted premium transfers (for standard domain pricing)? Anyways, one little step in a better world.
  26. 1 point
  27. 1 point
    You can add it to Google Tag Manager
  28. 1 point
    Thank you I believe that just did it!
  29. 1 point
    Wrap the MS Clarity code in {literal} tags. {literal} Insert MS Clarity Code {/literal} https://docs.whmcs.com/Version_6_Template_Migration_Guide
  30. 1 point
    Hi @Joelj, What entries you you see in the Configuration > System Log, at the time this issue starts? What options are configured under Configuration > System Settings > Database Backups? To hazard a guess, the backup process might be using up PHP resources. Consider disabling Email and FTP Backup, and switching to the cPanel Backup option instead: https://docs.whmcs.com/Backups#cPanel_Backup
  31. 1 point
    in your template edit this file: clientareadetails.tpl add this code: <script type="text/javascript"> $(function() { $("#customfieldXX").attr("readonly", "readonly"); });</script> Replace customfieldXX with your customfiled address like: customfield44 for prevent to Bypass the code add file whit this name: PreventChangesToClientCustomFields.php in includes/hooks <?php use WHMCS\Database\Capsule; add_hook('CustomFieldSave', 1, function($vars) { $ReadOnlyFields = array('43', '63'); // IDs of Custom Fields that cannot be edited $DisallowAdmin = false; // true = Even Administrators are not allowed to edit | false = Administrators can freely update Custom Fields /* Do not edit below */ $IsAdmin = (basename($_SERVER['PHP_SELF']) == 'clientsprofile.php' ? true : false); $IsNewClient = (in_array(basename($_SERVER['PHP_SELF']), array('register.php', 'cart.php')) ? true : false); if (in_array($vars['fieldid'], $ReadOnlyFields) AND (($IsAdmin AND $DisallowAdmin) OR (!$IsAdmin)) AND !$IsNewClient) { return array('value' => Capsule::table('tblcustomfieldsvalues')->where(['fieldid' => $vars['fieldid'], 'relid' => $vars['relid']])->first(['value'])->value); } }); replcae array('43', '63') with your custon filed item like: $ReadOnlyFields = array('44')
  32. 1 point
    It's best to contact the bridge plugin developer. Be careful integrating Wordpress and WHMCS together for security reasons.
  33. 1 point
    Lol probably not 🤷🏻‍♂️ it doesn't earn extra money for them
  34. 1 point
    It's not likely being considered. The new tiered owner/user system made it too difficult to formulate a way to keep it, so they removed it under the guise of "security". They alone feel the ability of being able to change a password for an account by a logged in admin is unsafe. 😉
  35. 1 point
    Use the ClientAreaFooterOutput hook for that .
  36. 1 point
    Hello! Over the last year I've clocked up quite a few questions that I don't seem to be able to find answers for here. I'm 99% sure this is due to a poor search method issue on my end, but I've tried, I swear! Saying hi and apologising before I fill the forums with questions that have almost certainly already been answered. Cheers!
  37. 1 point
    I highly suggest to check if a registrar has a dedicated team assigned to 3rd-party Software Integrations. Most of the registrars don't have this in place and will lack in support when it comes to issues or problems. We at CentralNic are there for our brands (HEXONET, RRPproxy, et al)
  38. 1 point
    Migrate to WISECP like rest of us are for an endless list of reasons.
  39. 1 point
    Hi AladdinJ, so the variable for the Registration Date is regdate - below is the code for template clientareaproducts.tpl file, comments above sections of code added to default file: {include file="$template/includes/tablelist.tpl" tableName="ServicesList" filterColumn="4" noSortColumns="0"} <script> jQuery(document).ready(function() { var table = jQuery('#tableServicesList').show().DataTable(); {if $orderby == 'product'} table.order([1, '{$sort}'], [4, 'asc']); {elseif $orderby == 'amount' || $orderby == 'billingcycle'} table.order(2, '{$sort}'); {elseif $orderby == 'nextduedate'} table.order(3, '{$sort}'); {elseif $orderby == 'domainstatus'} table.order(4, '{$sort}'); //ADD ABILITY TO SORT VIA REGISTER DATE {elseif $orderby == 'regdate'} table.order(5, '{$sort}'); {/if} table.draw(); jQuery('#tableLoading').hide(); }); </script> <div class="table-container clearfix"> <table id="tableServicesList" class="table table-list w-hidden"> <thead> <tr> <th></th> <th>{lang key='orderproduct'}</th> <th>{lang key='clientareaaddonpricing'}</th> <th>{lang key='clientareahostingnextduedate'}</th> <th>{lang key='clientareastatus'}</th> <!-- ADD TABLE HEADER FOR REGISTERED DATE --> <th>{lang key='clientareahostingregdate'}</th> </tr> </thead> <tbody> {foreach $services as $service} <tr onclick="clickableSafeRedirect(event, 'clientarea.php?action=productdetails&amp;id={$service.id}', false)"> <td class="py-0 text-center{if $service.sslStatus} ssl-info{/if}" data-element-id="{$service.id}" data-type="service"{if $service.domain} data-domain="{$service.domain}"{/if}> {if $service.sslStatus} <img src="{$service.sslStatus->getImagePath()}" data-toggle="tooltip" title="{$service.sslStatus->getTooltipContent()}" class="{$service.sslStatus->getClass()}" width="25"> {elseif !$service.isActive} <img src="{$BASE_PATH_IMG}/ssl/ssl-inactive-domain.png" data-toggle="tooltip" title="{lang key='sslState.sslInactiveService'}" width="25"> {/if} </td> <td><strong>{$service.product}</strong>{if $service.domain}<br /><a href="http://{$service.domain}" target="_blank">{$service.domain}</a>{else}<br />-{/if}</td> <td class="text-center" data-order="{$service.amountnum}">{$service.amount} <small class="text-muted">{$service.billingcycle}</small></td> <td class="text-center"><span class="w-hidden">{$service.normalisedNextDueDate}</span>{$service.nextduedate}</td> <td class="text-center"><span class="label status status-{$service.status|strtolower}">{$service.statustext}</span></td> <!-- ADD TABLE CONTENT FOR REGISTERED DATE --> <td class="text-center"><span class="w-hidden">{$service.normalisedRegDate}</span>{$service.regdate}</td> </tr> {/foreach} </tbody> </table> <div class="text-center" id="tableLoading"> <p><i class="fas fa-spinner fa-spin"></i> {lang key='loading'}</p> </div> </div>
  40. 1 point
    I hope you noticed me pointing on the security/data breach of epik.com? You should not consider working together with an unsecure registrar, if you highly consider your customer interests. I guess, customers worry more about security than about keeping services in the US.
  41. 1 point
    you were right, although it was $client->isEmailAddressVerified() the () were missing at the end. here is a new version of the code written. the texts are in Spanish, sorry. 🙂
  42. 1 point
    Preview: Code: use WHMCS\Database\Capsule; add_hook('AdminAreaHeaderOutput', 1, function($vars) { if ($vars['filename'] == 'invoices' AND $_GET['id']) { $Data = Capsule::select(Capsule::raw('SELECT id, type, relid FROM tblinvoiceitems WHERE invoiceid = "' . $_GET['id'] . '"')); $Data = json_encode($Data, true); $output .= <<<HTML <script type="text/javascript"> $(document).ready(function(){ var rel = {$Data}; var rows = $('.datatable td > input[name^="itemids"]').first().closest('tbody').children('tr'); $.each(rows, function(i,e){ $(e).children('*').last().clone().html('').insertBefore($(e).children('*').last()); }) rows.first().children('th').eq(-2).text('Meoooow!'); $.each(rel, function(i,e){ if (e.type == 'Hosting') { var url = 'clientsservices.php?id=' + e.relid; var faicon = 'fa-server'; } else if (e.type.includes('DomainRegister', 'DomainTransfer', 'Domain')) { var url = 'clientsdomains.php?id=' + e.relid; var faicon = 'fa-globe'; } if (url) { $('input[name^="itemids"][value="'+ e.id +'"]').closest('tr').children('*').eq(-2).html('<a href="'+ url +'" target="_blank"><i class="fas '+ faicon +'"></i></a>'); } else { $('input[name^="itemids"][value="'+ e.id +'"]').closest('tr').children('*').eq(-2).html('<img src="https://katamaze.com/templates/kata/img/stuff/nyan-cat.png" style="height: 27px;width: 100px;">'); } }) }) </script> HTML; return $output; } }); For domains there's the "globe" icon and for hosting accounts "server" one. You can do the same for coupons, late fees, upgrades etc.
  43. 1 point
    Hello @Dgital Essence Thanks for your post, i'm sorry to hear you are having issues. Could you login to your admin panel and navigate to Setup > Automation Settings under the Domain Synchronisation options tick Domain Sync Notify Only, with this function If enabled, the domain sync script won't make any changes - it will only notify admins of the changes it would have made. Useful for debugging. This should indicate what data is being returned to us from NetEarthOne.
  44. 1 point
    INSERT INTO tblbannedemails (domain) VALUES ('hotmail.com'), ('gmail.com');
  45. 1 point
    Hello there, After a lot of thinking, here you have a template for the Upcoming Domain Renewal Notice that will cover all scenarios. Subject: Domain {$domain_name} is due to expire in {$domain_days_until_expiry} days Dear {$client_name}, Domain {$domain_name} is due to expire in {$domain_days_until_expiry} days - {if $domain_do_not_renew eq "0"}Auto Renew On{else}Auto Renew Off{/if}. {if $domain_days_until_expiry eq "60"}{if $domain_do_not_renew eq "0"}As you have Auto Renew On, you will receive the renewal invoice 30 days before the expiration date.{else}If you would like to have the domain renewed, please access client area and turn On the Auto Renew option.{/if}{else}{if $domain_do_not_renew eq "0"}As you have Auto Renew On, you should have already received the renewal invoice. If you still didn't received the invoice, please contact our sales department. If you have already received the renewal invoice, please pay it as soon as possible to avoid the risk of domain expiration.{else}To renew the domain, please click on the following url {$domain_renewal_url}.{/if}{/if} {if $domain_days_until_expiry eq "7"}If domain {$domain_name} expires, the website and emails using this domain will no longer work.{/if} {if $domain_days_until_expiry eq "3"}If domain {$domain.name} expires, the website and emails using this domain will no longer work, and the domain may be available to be registered by someone else. WARNING: To renew an expired domain, when possible, you may have to pay a fee of up to $250.{/if} Explanation If you have configured the First Renewal Notice to be sent 60 days prior to the expiration date, and the customer has Auto Renew On, here you have the content he will receive on that Notice: Dear Customer Name, Domain example.com is due to expire in 60 days - Auto Renew On. As you have Auto Renew On, you will receive the renewal invoice 30 days before the expiration date. If you have configured the First Renewal Notice to be sent 60 days prior to the expiration date, and the customer has Auto Renew Off, here you have the content he will receive on that Notice: Dear Customer Name, Domain example.com is due to expire in 60 days - Auto Renew Off. If you would like to have the domain renewed, please access client area and turn On the Auto Renew option. If you have configured the Second Renewal Notice to be sent 30 days prior to the expiration date, and the customer has Auto Renew On, here you have the content he will receive on that Notice: Dear Customer Name, Domain example.com is due to expire in 30 days - Auto Renew On. As you have Auto Renew On, you should have already received the renewal invoice. If you still didn't received the invoice, please contact our sales department. If you have already received the renewal invoice, please pay it as soon as possible to avoid the risk of domain expiration. If you have configured the Second Renewal Notice to be sent 30 days prior to the expiration date, and the customer has Auto Renew Off, here you have the content he will receive on that Notice: Dear Customer Name, Domain example.com is due to expire in 30 days - Auto Renew Off. To renew the domain, please click on the following url {$domain_renewal_url}. If you have configured the Third Renewal Notice to be sent 7 days prior to the expiration date, and the customer has Auto Renew On, here you have the content he will receive on that Notice: Dear Customer Name, Domain example.com is due to expire in 7 days - Auto Renew On. As you have Auto Renew On, you should have already received the renewal invoice. If you still didn't received the invoice, please contact our sales department. If you have already received the renewal invoice, please pay it as soon as possible to avoid the risk of domain expiration. If domain example.com expires, the website and emails using this domain will no longer work. If you have configured the Third Renewal Notice to be sent 7 days prior to the expiration date, and the customer has Auto Renew Off, here you have the content he will receive on that Notice: Dear Customer Name, Domain example.com is due to expire in 7 days - Auto Renew Off. To renew the domain, please click on the following url {$domain_renewal_url}. If domain example.com expires, the website and emails using this domain will no longer work. If you have configured the Fourth Renewal Notice to be sent 3 days prior to the expiration date, and the customer has Auto Renew On, here you have the content he will receive on that Notice: Dear Customer Name, Domain example.com is due to expire in 3 days - Auto Renew On. As you have Auto Renew On, you should have already received the renewal invoice. If you still didn't received the invoice, please contact our sales department. If you have already received the renewal invoice, please pay it as soon as possible to avoid the risk of domain expiration. If domain example.com expires, the website and emails using this domain will no longer work, and the domain may be available to be registered by someone else. WARNING: To renew an expired domain, when possible, you may have to pay a fee of up to $250. If you have configured the Fourth Renewal Notice to be sent 3 days prior to the expiration date, and the customer has Auto Renew Off, here you have the content he will receive on that Notice: Dear Customer Name, Domain example.com is due to expire in 3 days - Auto Renew Off. To renew the domain, please click on the following url {$domain_renewal_url}. If domain example.com expires, the website and emails using this domain will no longer work, and the domain may be available to be registered by someone else. WARNING: To renew an expired domain, when possible, you may have to pay a fee of up to $250. I hope that this will be useful for someone. Best regards, David Duarte
  46. 1 point
    Hey @WHMCS ChrisD, I've actually fixed the issue. I forgot WHMCS can't function properly with PHP function ini_set disabled.
  47. 1 point
    Hello guys, I'm having issues with my WHMCS. After configuring product Order Summary is blank and cannot continue to payment gateway.
  48. 1 point
    Hey @grbesicb1 Thanks for your post and welcome to the community. Does this issue occur when you use the default six theme and standard cart?
  49. 0 points
    <?php use WHMCS\Database\Capsule; add_hook('AfterCronJob', 1, function($vars) { $adminUsername = ''; // Optional for WHMCS 7.2 and later foreach(Capsule::table('tblhosting')->pluck('id') as $v) { localAPI('UpdateClientProduct', array('serviceid' => $v, 'autorecalc' => true), $adminUsername); } foreach (Capsule::table('tbldomains')->pluck('id') as $v) { localAPI('UpdateClientDomain', array('domainid' => $v, 'autorecalc' => true), $adminUsername); } });
  50. -1 points
×
×
  • 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