Jump to content
Sign in to follow this  
PaulGress

Update renewal price after paid invoice

Recommended Posts

Hi all,

i'm newbie with whmcs and i need help to solve a problem. I'm working with whmcs v. 7.x and actually ( not even in 8.x ) there's a way to change hosting price after 1 year, without creating and using a  promotional coupon code .

So i need that one of my product hosting with pid=70 that it's price 20.00$ could be changed automatically to 30.00$ in Recurring Amount   after 1 year. For only client he's buying it.
So after client have bought it and paid invoice, hook could work and update Recurring Amount value in hosting product for client...There's a way to perform it with a hook ?

I'm seeing documentation about whmcs hooks and i found the " OrderPaid " . Something below could be works?

<?php
add_hook('OrderProductPricingOverride', 1, function($vars) {
    $return = [];

 if ($vars['pid'] == 70 {
        $return = ['recurring' => '30.00',];
    }

return $return;
});

Thanks for any help.

Share this post


Link to post
Share on other sites

and remember that you're just passing a value, and not a currency - e.g if you pass 100 in the hook and the client uses USD, then that's $100; if they use EUR, then its €100 etc.

so in a multi-currency situation, you should find the clients currency before determining what value to pass in the hook - if your site only uses one currency, then this won't matter.

Share this post


Link to post
Share on other sites
On 11/24/2020 at 11:46 PM, steven99 said:

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. 

Sure thanks Steven, but from documentation hook OrderPaid it hasn't variable $pid , could you guide me to a correct solution so?

 

<?php
add_hook('OrderPaid', 1, function($vars) {
    $return = [];

 if ($vars['pid'] == 70 {
        $return = ['recurring' => '30.00',];
    }

return $return;
});

i think that it doesn't work 😕
 

On 11/25/2020 at 5:00 PM, brian! said:

and remember that you're just passing a value, and not a currency - e.g if you pass 100 in the hook and the client uses USD, then that's $100; if they use EUR, then its €100 etc.

Hi Brian, thank you, yes i thought it, but i'm using only one currency.

Thanks

Share this post


Link to post
Share on other sites

Someone could give me a suggestion to do it answering my last post ? i'm totally mess :/

Thank you for any suggestion

Share this post


Link to post
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.

Sign in to follow this  

  • Similar Content

    • By ramf
      Hi,
      Can someone please help me with this hook? 
      It was created by @brian!  and appeared here- but sadly he can't help me. 
      Since I'm selling mostly one time products - I have lots of inactive clients and I want to be able to find them easily without the hassle of  changing the search toggle.
      There it this feature request  that was opened 2 years ago to make the hide inactive clients optional (please vote) - but until this happens I have no choice but to use this hook:
       
      <?php add_hook('AdminAreaHeadOutput', 1, function($vars) { if ($vars['filename'] == 'clients' OR in_array($vars['pagetitle'], array(AdminLang::trans('services.title'), AdminLang::trans('services.listaddons'), AdminLang::trans('services.listdomains')))) { $autoPost = <<<HTML if ($('input#checkboxShowHidden').is(':checked')) { $('body').addClass('hidden'); $('#checkboxShowHidden').click(); } HTML; } return <<<HTML <script> $(document).on('ready', function() { if ($('input#intelliSearchHideInactiveSwitch').is(':checked')) { $('#intelliSearchHideInactiveSwitch').click(); } {$autoPost} }) </script> HTML; }); The problem with this one is that the search bar is always opened with this error - in every page loading:
      So even If i'm not clicking on the search field - the search bar is opened with this message.
      Can someone help me figure out what should be changed in this hook file so it will not open the search bar automatically - but when we do search we will see the inactive clients alongside the active onse?
      Thanks!
       

    • By Eldremor
      Hello, is there anyway via hook or modifying the php to add images before X configurable option name?
      Example:
    • By JesusSuarz
      sometimes the client can have 2 emails.
      one for your account details and one for the account owner.
      I need to know if the account owner's email is verified.
      The var: 
      $client = Menu::context("client"); gets the email that the customer has in the account details, however this is not the email owner of the account.
      I hope to make myself understood correctly.
       
    • By karlfrankeser
      Hello,
      I am new to this community!
      I am setting up a hook that allows me to pass new client data to Zapier in order to update our Marketing automation software.
      This is the code I have been testing now:
      add_hook('ClientAdd', 1, function ($vars) { $userid = $vars['userid']; $firstname = $vars['firstname']; $lastname = $vars['lastname']; $email = $vars['email']; $phone = $vars['phonenumber']; $city = $vars['city']; $country = $vars['country']; $postcode = $vars['postcode']; $company = $vars['companyname']; $state = $vars['state']; $params = '?userid='.$userid.'&firstname='.$firstname.'&lastname='.$lastname.'&email='.$email.'&phonenumber='.$phone.'&city='.$city.'&country='.$country.'&postcode='.$postcode.'&companyname='.$company.'&state='.$state.'&source=WHMCS'; $url = 'https://hooks.zapier.com/hooks/catch/zzz/rrrr/'.$params; $options = array( 'CURLOPT_POST' => 0 ); $response = curlCall($url,$postfields,$options); logActivity('logged addClient with params: ' . $params . 'following is the result: ' . $request, $userid); }); I also tried to send this via file_get_contents but it does not seem to work, by composing the url together with real world values gotten from the LOG in the admin area the request works on Zapier's end, I suppose that the problem lies within WHMCS and the request. The Zapier request has been altered for privacy reasons.
       
      Can anyone point me in the right direction?
    • By Eldremor
      Hello again!
      The title says everything. I found a hook on github but it's not working so I'm here to ask for help 😊
      I hope this topic help a lot of people.
  • 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