Jump to content


  • Content count

  • Joined

  • Last visited

  • Days Won


Everything posted by Kian

  1. I'm completing the refactoring of a module that I initially released on 2015 that allows to pay commissions to Affiliates depending on their sales, performance levels and monthly achievements. It has nothing to do with the Affiliates system of WHMCS. The current version of the module is still functional but has a problem. It has too many types of commissions which makes the module very difficult to use. That's what you get when you give too much room to bad users' feedback 🤔 My bad. The refactored module is based on making it simple to use for administrators and affiliates therefore I refused to implement subterfuges like 3% + 5% commissions (you don't get 8%), misleading mechanics and bonus scheme that requires a supercomputer to be explained. I'll never implement such things again. That said, I'm looking for feedback (good ones 😀), ideas and suggestions. Am I missing something important? Backend Commissions [ Click to enlarge ] You can define commission payouts based on specific Products/Services, TLDs and Product Addons both percentage and fixed amount. It is also possible to define group-based commissions (eg. all VPS servers, all TLDs). You can use padlocks to lock certain items so that they don't get updated when you change parents. Achievements [ Click to enlarge ] You can set multiple achievements to encourage Affiliates to keep selling your products. On a monthly basis the module automatically rewards them for reaching the goals you set. Achievements are based on Revenue, New Signups and Number of Sales. These same achievements can be used also to reward Top Affiliates (eg. first 5 Affiliates that brings you 1000€ of Revenue, Affiliates reaching 1000€ earn a bonus of 100€ etc.). The system pays commissions based on the following Attribution Metrics (Manual, Cookie-based, Interactive). You can put limits to Affiliation program and Payouts. There are also many other pages in backend (Dashboard, View/Filter/Manage Affiliates, Sales, Payouts, Settings) but right now I'd like to focus on the above ones. Before you ask the module already handles multiple currencies and conversion rates. Clientarea Earnings [ Click to enlarge ] This is how your Affiliates can monitor their sales, revenues and request payouts from Clientarea. Achievements [ Click to enlarge ] Here they review not only unlocked Achievements but also next ones. At a glance they can get an idea of their progress by simply looking at progress bars. This way they can decide to focus on a particular goal. Subscriptions [ Click to enlarge ] This area is for recurring commissions that can be lifetime or last for a certain amount of months. Statistics [ Click to enlarge ] We're still working on this page since we need to decide what metrics to represent in graphs. Quite frankly I really don't know. Revenue, Commissions, Payouts, ROI... what else? I'm not a "marketing guy".
  2. @Ithiel I have a question for you. Let's ignore for a moment ABN and just focus on RCTI. At the end of the day, isn't RCTI just a credit note? Right now I issue a credit note when I need to: Refund a payment Reverse an invoice Give money to a customer for any reason By issuing a credit note I'm stating that a certain amount has been credited to customer. I'm starting to think that we can use it also for commissions. Let me show you an example. Thanks to Mike (sales agent), Sara pays you 1000 euro. Few weeks later Mike sends a withdrawal request since he wants his 20%. From WHMCS you issue a credit note of 200 euro. The credit note has the following content: Detailed description (eg. 20% of 1000 euro paid by Sara for Dedicated Server XXL) Written agreement (eg. The recipient and the supplier declare that this agreement relates to the above supplies...) Tax depends on what ABN says I could override "Credit note #120" with "Recipient Created tax Invoice #120" or "RCTI #120" just for credit notes involving commissions (I can detect them) I can automatically issue the RCTI every 28 days if there's at least a commission to pay To me RCTI looks exactly like a credit note with few more details (ABC, Written agreement...). Am I wrong? Nice, this way I can ask questions to two people 😁
  3. Obviously you can't create an account that already exists on WHM. Read this article.
  4. Kian

    bugs in latest version

    It keeps your brain young 🙂
  5. I'll let you know if I manage to find it. In the meantime I found an old txt I wrote in 2010. It lists all parameters that were available at that time. The script was based on this PHP class released by cPanel. cPanel: ftpaccounts perlversion dedicatedip hostname operatingsystem sendmailpath autoresponders perlpath emailforwarders bandwidthusage emailfilters mailinglists diskusage phpversion sqldatabases apacheversion kernelversion shorthostname parkeddomains cpanelbuild theme addondomains cpanelrevision mysqldiskusage mysqlversion subdomains postgresdiskusage sharedip hostingpackage emailaccounts LVE (average, max, limit): cpu vmem pmem ep io vmemf (faults) pmemf (faults) epf (faults)
  6. Kian

    WHMCS Deletion.

    Wait. I thought you wanted to "Delete Clients". Are you sure you want to empty all the tables that contain clients data (all clients)? If so, you can run that query.
  7. What if... I register all domains using a generic email like for example domains@mycompany.com. This way I receive all emails from Namecheap. With a cron that runs every 5 minutes I download received emails and re-send them to the real owner (we know who's the owner of every domain from WHMCS). The only exception is for the "spam" that Namecheap sends. As soon as the script detects the spam it kills the email or removes the spam before sending the email. Is it against the rules?
  8. Kian

    SendEmail API and cc address

    As far as I know it's not possible. SendEmail uses IDs/RelIDs to send emails so there's no way to specify an address. The good news is that you can freely send emails with CC, BCC and even with different SMTP credentials by directly including vendor/phpMailer class (I can't remember the right path atm). It's the same that WHMCS uses to send email.
  9. Yep, it's the typical shady situation.
  10. Yes and no. As you probably already know, every TLD has its own rules. For example NicIT (.it domains) forces Registrars to provide a "drop-time" service to end-users so that they know when domains expire. It doesn't matter if the domain has been sold by a Reseller. Registrars must send expiration notices otherwise they would be responsibile for Resellers refusing or forgetting to send reminders to end-users. From my experience 99% of Registrars don't know anything about it but the remaining 1% (the biggest ones) strictly follow the rules. In my opinion companies like Namecheap prefer to send expiration notices to everyone since they don't want to waste time reading Terms & Conditions of hundreds of TLDs and manage them separately. What sucks is that they send misleading notifications with spam included 👎 At least some Registrars like Internetbs allows you to customize email notifications so that they include your name and no reference to Internetbs. It would be relatively easy to implement for Namecheap but obviously they clearly don't want and we all know why 😛
  11. Kian

    WHMCS Deletion.

    "Delete Client" deletes WHMCS data leaving all products/services, domains and addons intact.
  12. OPcache and ionCube are not good friends since encoded files cannot be cached. As far as I know the only option you have is to get rid of OPcache.
  13. 8 or 9 years ago I coded a WHMCS module that was pulling data from cPanel & CloudLinux. I can't remember all the parameters involved but for sure I had everything you see in LVE Manager (CPU, VMEM, PMEM, I/O, EP... min, avg, max, limit) and in the sidebar of WHM (FTP accounts, databases, emails, forwarders, disk, bandwidth...). At that time cloud was becoming the new trend to follow but there were still no softwares to bill hourly depending on resource usage so I coded one. I remember that few years later Modulesgarden coded a similar script. You could try to contact them. Considering what I did it so many years ago, I'd say that for sure it is still possible but I can't remember anything about INODES. Curiously my ancient module worked non-stop till 2 years ago when I killed the server. Before you ask, I have a backup but who knows where.
  14. Kian

    Removing Addon Modules

    The Deactivate button triggers a function that should be used to remove custom tables and stuff that the module uses. The problem is that many developers don't use it therefore you are forced to complete the deactivation manually. Only the developer of your module can answer to this question. I guess you have to wait. Yes but I can understand why some developer refuse to implement a removal script. For example you can't imagine how much time I wasted because of customers deactivating modules for no fu🤬ing reason and here is what happens. That's why I go to gym everyday 👼
  15. Kian

    bugs in latest version

    That's why... Before you begin customising it for your needs, the first step is to create your own copy of the template. This ensures your customisations are not lost when updating. The complete article is here. Now given that you created your own copy of the template, you won't have any issue with updates of WHMCS. Why? Here you just need to keep your company details up to date. Did you read comments? // Company Details for all invoices/proformas issued until 2016-12-31 --> MILAN LTD. // Company Details for all invoices/proformas issued from 2017-01-01 to 2017-12-31 --> JUVENTUS.LTD // Company Details for all invoices/proformas issued from 2018-01-01 to 2018-12-31 --> INTER LTD. // The default Pay To Text will be used (Setup > General Settings > General > Pay To Text) for invoices/proformas issued from 2019-01-01 In other words in my example I was Milan in 2016, Juventus in 2017, Inter in 2018 and what you have in Pay To Text for 2019, 2020, 2021, 2022 etc.
  16. Kian

    bugs in latest version

    True. Updated. Take a look here.
  17. Kian

    bugs in latest version

    He can't do anything with Snapshots ☹️ The address of his own company has changed.
  18. Kian

    bugs in latest version

    That's not a bug but how WHMCS works. Your company details on invoices come "live" from database. Changing the address will result in changes on all the issued proformas and invoices. Here is how you can solve your problem. First off use this hook point to override Company Details from viewinvoice.tpl depending on dates. The script is commented. Change it to match your needs. <?php use Illuminate\Database\Capsule\Manager as Capsule; add_hook('ClientAreaPageViewInvoice', 1, function($vars) { $InvoiceDate = Capsule::table('tblinvoices')->where('id', $vars['invoiceid'])->value('date'); if ($InvoiceDate <= '2016-12-31') { // Company Details for all invoices/proformas issued until 2016-12-31 return array('payto' => 'Milan Ltd.<br>Address 100<br>Metropolis, MM<br>US'); } elseif ($InvoiceDate <= '2017-12-31') { // Company Details for all invoices/proformas issued from 2017-01-01 to 2017-12-31 return array('payto' => 'Juventus Ltd.<br>Address 200<br>Atlantis, AA<br>GR'); } elseif ($InvoiceDate <= '2018-12-31') { // Company Details for all invoices/proformas issued from 2018-01-01 to 2018-12-31 return array('payto' => 'Inter Ltd.<br>Address 300<br>Gotham City, GC<br>US'); } // What happens in 2019, 2020, 2021 and so on? The default Pay To Text will be used (Setup > General Settings > General > Pay To Text) }); Open templates/{YOUR_TEMPLATE}/invoicepdf.tpl and place the code provided below anywhere you want before this statement: foreach ($companyaddress as $addressLine) { Code: # Conditional Company Details if (date('Y-m-d', strtotime($datecreated)) <= '2016-12-31') { $companyaddress[] = 'Milan Ltd.'; $companyaddress[] = 'Address 100'; $companyaddress[] = 'Metropolis, MM'; $companyaddress[] = 'US'; } elseif (date('Y-m-d', strtotime($datecreated)) <= '2017-12-31') { $companyaddress[] = 'Juventus Ltd.'; $companyaddress[] = 'Address 200'; $companyaddress[] = 'Atlantis, AA'; $companyaddress[] = 'GR'; } elseif (date('Y-m-d', strtotime($datecreated)) <= '2018-12-31') { $companyaddress[] = 'Inter Ltd.'; $companyaddress[] = 'Address 300'; $companyaddress[] = 'Gotham City, US'; $companyaddress[] = 'US'; } There are commercial addons that take a snapshot of your own company details but they're expensive. No need to buy them for such a simple thing.
  19. Could you be more specific? Are you maybe storing images/CSS and stuff like that on a separate server?
  20. Yep, it has to be customizable and multi-language.
  21. Official Announcement: Billing Extension 2.0.0 released - (Changelog) It has been a long time but after several months of development the refactoring of Billing Extension is complete. Billing Extension 2.0.0 is now ready for download. It comes with new architecture, code, style and features. We used the experience acquired in years of development with 68 releases of this module to rethink all the process. Improved Admin Interface Warning System VIES Support Enhanced Renewals Document Customization Online Contract Cookie Bar Monthly & Manual Invoicing Billing Preferences VAT on Credit Refunds Credit Balance Company Profile New Auto-Tags Advanced Late Fees system Discover / Purchase » In Billing Extension there's all our billing experience acquired through years of work with hundreds of customers. You can configure WHMCS in line with regulations and legislations in force reducing the weight of invoices on your time. Discover / Purchase » Let's freeze your invoices Information stored on invoices are fundamental for a correct accounting, for this reason these details shound't change over time. Snapshot for customer data, custom fields, currency and invoice header Admin Panel to modify snapshots Company profile properly applied to each invoice Billing Extension "freezes" the issued invoices' data to avoid billing errors Reducing your Paper-Flow WHMCS generates a large number of invoices. We have decided to optimize this process with OneInvoice and OnePayment. Both allow to issue a maximum of one invoice per month for each customer. With OnePayment you receive a monthly payment from each customer Save up to 18% on transaction fees* 95% reduction on invoices issued and emails sent* Enhanced Renewals for an easier management of renewals Less invoices to record and print * Calculations based on our case study Tailor-made for you! With Billing Extension you can customize invoices, proformas and credit notes individually with no limitations. New Auto-tags to personalize sequential numbering Suppressing unwanted invoices (eg. zero amount, full discount or fully paid by credit) Protect invoices from being edited or deleted For an easier experience all options are manageable from settings page and grouped by categories. Ready for Europea regulations Thanks to Billing Extension WHMCS will be fully in line with the accounting requirements of the European Union. VAT MOSS? VIES? No problem. Automatic verification of VAT ID directly from VIES MOSS report and customized exports on spreadsheets Proper taxation for customers of foreign countries within the EU Support for cookie regulation You can rely on a series of tools handling all aspects automatically. A breath of newness Automate your and your client's rights and obligations in line with your terms of service. You'll find many new dedicated pages to handle your billing needs. Inform customers and request consent for any changes to the contract Review your pending invoices at a glance from the Billing page Set late fees, global or advanced, all from one place The best from WHMCS As you know, WHMCS is a complex and feature-rich system, unfortunately some of its features are only hinted or completely missing. With Billing Extension we have fixed many dysfunctional sides to make the most of all its potential. Ability to create credit notes and unpaid invoices Correct invoicing of credit and overpayments Warning System to detect invoicing issues Our goal is to keep improving both the module and the basic WHMCS features to provide an ideal user experience. Customize your billing All Billing Extension options are applicable globally, on groups or on individual customers. For example, you could use OneInvoice for all customers, OnePayment for a group only, and turn off automatic invoicing for specific customers. Basically, the most specific rule will have priority. Set multi-level rules New filters and options to export to spreadsheets Possibility of inserting an invoice text based on the customer type Katamaze technology Billing Extension includes a number of proprietary technologies that enhance the user experience for both the administrator and visitors. SorTables for displaying data Multilingual content with HereLang Optimal data entry with MagicInput Discover / Purchase » 
  22. Kian

    Registration after Payment and order?

    It's true that I tend to overcomplicate things 😀 but if you want to try with Cart, probably you should hide all the unnecessary input fields (lastname, companyname, address, city, state, custom fields...) and set their values for example equal to "1". This way when customers submit an order filling just email and firstname, WHMCS won't trigger any error (eg. Address 1 is filed is required). Problem is that you have to make sure that your customer doesn't see any of these "1" so you have to invest a lot of time in clearing clients' data with several hook points.
  23. Kian

    Registration after Payment and order?

    I have no idea if there's a ready-made plugin but it's doable. Create you simplified page with: Name Email Order Now button "I want to receive newseller" Checkbox (optional) On click, you'll need to "pre-register" the customer in your WHMCS. Use AddClient API with skipvalidation = true since we don't want to provide lastname, country, address, city etc. now. The bad news is that before running AddClient, you'll need to check if that email is in use otherwise lamers could block the email of your new customers by placing fake orders with their emails. Long story short if the email is "new", AddClient as normal otherwise re-use that customer updating his details with UpdateClient. In both cases (AddClient and UpdateClient) now you have the UserID of the customer that is placing the order. Now you need to: CancelOrder DeleteOrder AddOrder In this specific sequence. The point is that before placing the new order, you want to make sure that there are no other pending orders left there days before. Here comes the tricky part. You have to login your customer via API with Authentication before you redirect him to the invoice. You have successfully registered a customer just with email & name, placed the order and received the payment. Everyone is happy but don't forget that you'll also need to code an action hook to force your customer to provide his/her personal details (companyname, lastname, address, city, zipcode...) X days after they completed the order. I don't know if there are alternatives but this is how I made it. It took me 5 days 😕
  24. Open your english.php file, read this and look for the following strings: $_LANG['tax']['taxLabel'] = "Tax ID"; $_LANG['tax']['vatLabel'] = "VAT Number"; Anyway think twice. Are you 100% sure that you really want customers to use the same field for both VAT numbers and Tax ID? For a million of reasons you'll probably need both values and not just one at a time.
  25. We're now at 2.2.70 and here is the usual recap: Tax Stamp on Invoices The "Tax Stamp" plugin included in BX has been updated in compliance with the latest «I'm the Revenue Agency obey to me!» regulations. Now there's an option that applies Tax Stamp when the sum of VAT-exempt items is greater than or equal to the minimum amount requested by Renevue Agency. What's next? 😡 Tax rate based on blood groups? Additional fee based on body fat percentage? Pffffff.... Apart from that, there are no major changes. In the meantime we made BX compatible with the template made by @SwiftModders LLC I still don't know why I keep supporting all templates of the universe 😭 six, five, default, portal, classic, lara, swiftmodders, metro, WHMCS v5, v6, v7... 😪 Next project (no ETA available) is the integration with Australian ABN Lookup for VAT Numbers and RCTI support (Recipient Created Tax Invoice) so that in BX you will manage: Proformas to receive money Invoices to keep you out of jail Credit Notes to refund customers and reverse invoices RCTI (temporary name) to payout affiliate commissions Indulgence to reduce the amount of punishment one has to undergo for sins * Letter of marque to attack French ships with your vessel * * It's a joke 😌

Important Information

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