Jump to content


  • Content count

  • Joined

  • Last visited

  • Days Won


brian! last won the day on March 21

brian! had the most liked content!

Community Reputation

1,382 Excellent

About brian!

  • Rank
    WHMCS GearHead

Recent Profile Visitors

5,136 profile views
  1. Show explanation for prorata on order form

    you should just need to change... {$producttotals.pricing.recurringexcltax.{$producttotals.billingcyclefriendly}} to... {$producttotals.pricing.recurring.{$producttotals.billingcyclefriendly}}
  2. you could edit the clientsummary.tpl template and add the payment method for products/addons (but not domains)... e.g for products... <div class="tablebg"> <table class="datatable filterable" width="100%" border="0" cellspacing="1" cellpadding="3"> <tr> <th width="20"><input type="checkbox" id="prodsall" /></th> <th>{$_ADMINLANG.fields.id}</th> <th>{$_ADMINLANG.fields.product}</th> <th>{$_ADMINLANG.fields.amount}</th> <th>{$_ADMINLANG.fields.billingcycle}</th> <th>{$_ADMINLANG.fields.signupdate}</th> <th>{$_ADMINLANG.fields.nextduedate}</th> <th>{$_ADMINLANG.fields.paymentmethod}</th> <th>{$_ADMINLANG.fields.status}</th> <th width="20"></th> </tr> {foreach key=num from=$productsummary item=product} <tr> <td><input type="checkbox" name="selproducts[]" value="{$product.id}" class="checkprods" /></td> <td><a href="clientsservices.php?userid={$clientsdetails.userid}&id={$product.id}">{$product.idshort}</a></td> <td style="padding-left:5px;padding-right:5px">{$product.dpackage} - <a href="http://{$product.domain}" target="_blank">{$product.domain}</a></td> <td>{$product.amount}</td> <td>{$product.dbillingcycle}</td> <td>{$product.regdate}</td> <td>{$product.nextduedate}</td> <td>{$product.dpaymentmethod}</td> <td class="status" data-filter-value="{$product.domainoriginalstatus}">{$product.domainstatus}</td> <td><a href="clientsservices.php?userid={$clientsdetails.userid}&id={$product.id}"><img src="images/edit.gif" width="16" height="16" border="0" alt="Edit"></a></td> </tr> {foreachelse} <tr> <td colspan="9">{$_ADMINLANG.global.norecordsfound}</td> </tr> {/foreach} </table> </div> for domains, you'd need to use an action hook to adjust the array to include the payment method.
  3. Hi Alex, not easily. if you didn't want to send any PDF invoices (both unpaid and paid), then you could simply disable the feature. https://docs.whmcs.com/Invoice_Tab#Enable_PDF_Invoices but to enable in one, but not the other would be difficult. you could certainly edit the invoicepdf.tpl template and make it blank for paid invoices - you'd just need to wrap it in an if statement... <?php if ($status != 'Paid') { *** rest of invoicepdf.tpl } so the PDF invoice attachment will be blank for Paid invoices, all other statuses would be as normal. invoicepdf.tpl
  4. anything is possible... {if $registerdomainenabled} <div class="option"> <label> <input type="radio" name="domainoption" value="register" id="selregister"{if $domainoption eq "register"} checked{/if} />{$LANG.cartregisterdomainchoice|sprintf2:$companyname} </label> <div class="domain-input-group clearfix" id="domainregister"> <div class="row"> <div class="col-sm-8 col-sm-offset-1"> <div class="row domains-row"> <div class="col-xs-12"> <div class="input-group"> <span class="input-group-addon">{$LANG.orderForm.www}</span> <input type="text" id="registersld" value="{$sld}" class="form-control" autocapitalize="none" data-toggle="tooltip" data-placement="top" data-trigger="manual" title="{lang key='orderForm.enterDomain'}" /> <input type="hidden" id="registertld" value="com" class="form-control" /> </div> </div> </div> </div> <div class="col-sm-2"> <button type="submit" class="btn btn-primary btn-block"> {$LANG.orderForm.check} </button> </div> </div> </div> </div> {/if} that's the configureproductdomain.tpl template changed, but it isn't enough.... you need to alter the js - i'll tell you how to do it, and i'll include a modified /templates/orderforms/standard_cart/js/scripts.min.js to download... but you're probably going to have to do this after every WHMCS update. so in scripts.js (not used by WHMCS, but easier to read), you just change domain: sld + tld to just domain: sld (~line 1388)... if (domainoption == 'register') { jQuery('.suggested-domains').hide().removeClass('hidden').fadeIn('fast'); spotlightTlds.hide().removeClass('hidden').fadeIn('fast'); jQuery('#resultDomainOption').val(domainoption); var lookup = jQuery.post( 'cart.php', { token: csrfToken, a: 'checkDomain', type: 'domain', domain: sld }, 'json' ), spotlight = jQuery.post( 'cart.php', { token: csrfToken, a: 'checkDomain', type: 'spotlight', domain: sld }, 'json' ), suggestion = jQuery.post( 'cart.php', { token: csrfToken, a: 'checkDomain', type: 'suggestions', domain: sld }, 'json' ); and then you minify it and replace the existing /templates/orderforms/standard_cart/js/scripts.min.js with it. as you can see from the template code, i'm passing the TLD as a hidden field (currently com, but could be anything - it won't be used)... if a user doesn't enter a TLD, then it won't use com (necessarily), it will just try the first TLD in your domain pricing with pricing set (in the case of my v7.4.2 dev, it's .co.uk)... scripts.min.js
  5. changing the value won't change existing orders/invoices (you can edit them manually), but for new orders, it will use the value in the settings....
  6. it's probably the same cause of the other problem you posted about yesterday...
  7. how did you update - manually via ftp or using the automatic updater? just had a quick look in the rc1 zip and I can't see a __MACOSX folder in there.
  8. Namecheap users.getPricing API response

    it's possible to do it for other registrars, e.g you can import pricing using the ResellerClub Tools addon for Logicboxes registrars (e.g Resell.biz, NEO, Resellerclub etc) and there's one for eNom too... so it's possible if there is sufficient demand for such an addon that a developer may write one in the future... I doubt it would be free though... and I doubt even more that WHMCS would do it, because each registrar API will be different and some might not even support the function.
  9. not really - unless there's a product in Marketplace that does this (I can't think of one)... otherwise, you're likely going to have to resort to hooks.
  10. then sort them if that helps... ... though i've never a big fan of alphabetical sorting of TLDs, not least because from a British point of view, .co.uk and .uk would be at opposite ends of the list. it definitely won't be a hook, at least not primarily, because you're altering the design and you can't alter a design with just hooks (unless the template has been designed in such a way to allow it). the problem you have is that the form is expecting SLD & TLD separately (I think it always has done since i've been using WHMCS)... not least because that's what the .js now wants... I suppose you could rewrite that in the .js and alter the form accordingly (e.g just one text box) and that might work... but that's likely going to mean editing both the template(s) and the scripts.min.js file. perhaps a simpler way (can you tell it's Friday and i've got a lot to do! lol) is to still have two fields, but just replace the dropdown with another text field, e.g change... <div class="col-xs-3"> <select id="registertld" class="form-control"> {foreach from=$registertlds item=listtld} <option value="{$listtld}"{if $listtld eq $tld} selected="selected"{/if}>{$listtld}</option> {/foreach} </select> </div> to... <div class="col-xs-3"> <input type="text" id="registertld" value="{$tld}" class="form-control" autocapitalize="none" /> </div> quickly tested as working in v7.4.2 - it should probably work for transfers too. I think there are potentially valid reasons for keeping it as a dropdown, but I guess if there are hundreds of TLDs in a seemingly random order, then it might get confusing for the user.
  11. @yildavilla I think it's because of your "Order Days Grace" setting... https://docs.whmcs.com/Ordering_Tab#Order_Days_Grace by default, it will be set at 0, and so invoice date and due date will be the same - you will need to change it to a larger value, e.g 28 or 30... and then due date will be X days after the invoice date. setup -> general settings -> ordering -> order days grace Ajustes -> Configuración general -> Pedidos -> Orden, días de gracia because months will have a different number of days in them, I don't think you'll be able to make it exactly one month after the due date, but 30 days would be a good approximation... although I suppose that you could always change the amount 10 times a year when the number of days in the month changes!
  12. Limit Knowledgebase Articles/Categories by Client

    you could certainly do that in a variety of ways... using tags as I suggested in the above thread (optionally with a hook passing the url of the video). you could go the eval route and just use multiple if statements to use the correct video url for the logged-in client. you could use a hook to determine which articles any logged in client can or cannot view. the alternative cheaper (free!) method might be to just use Client Files... https://docs.whmcs.com/Clients:Summary_Tab#Files by default, these files are set to be downloaded, but there's nothing to stop you uploading files, e.g a .html file and embedding the video url in the code (or even a video depending on size), and then tweaking the homepage panel to link to it rather than try to download it... that way you could be certain that only the correct client would view that file because you'll be the one uploading it to the client's account.
  13. Hi John, which template? i'm assuming it's one of the slider/comparison orderform templates? e.g if it were Premium Comparison... that would add the sidebar back, but would thrown the alignment of the page out (because these orderforms were designed to hide the sidebar to give more space to the comparison panels)... you could get around that by tweaking the template, or with css... .row-product-selection { left: 300px !important; } #premiumComparisonSidebar { display:block !important; } #btnShowSidebar { display: none !important; } #order-premium_comparison .price-table-container .price-table { width: 240px !important; min-width: 240px !important; } and additionally in products.tpl, changing the div size...
  14. Hi Troy, are they required fields or can they be left blank? I don't use Authorize, but i've seen those fields on other forms and they're hardly ever required.
  15. Limit Knowledgebase Articles/Categories by Client

    interesting question - there's no addon that i'm aware of. you can make kb articles "private", but that just means that any logged-in clients can view them, but not general visitors. if you really had to make certain kb articles only visible to specific user(s), then you could do that using hooks because a) you'd be able to detect they were logged in and b) who they are (or are not).. you could possibly expand that to only show articles about product X, if the logged in client actually has an active product X and hide to those that haven't, but then that starts getting complicated! ... whether it's a good use of the knowledgebase for (in effect) private categories, i'm not sure. I did post last year about adding tags into the articles to personalise them (e.g name etc), but they would be dependent upon the information already being accessible by the article (or hooking the info in)...

Important Information

By using this site, you agree to our Terms of Use & Guidelines