Home Affiliates Marketing Domains Marketing Webhost Services Contact Us

Whmcs 如何设置客户CAN NOT 申请取消 请求取消 product

 whmcs 里面注意:客户申请了取消此服务 这个客户又不想取消了,怎么设定啊

山西网友:后台找到这个客户, 在产品里 下方有一个到期删除 吧。。 好像是这


江苏网友:其实这个可以关闭,然后客户想取消的时候,发TK,然后后台取消,别让客户乱点,特别是一些人,特别喜欢试。。

台湾网友:

求教,这个已经申请的怎么关闭啊


湖北网友:到期之后自动终止 勾去掉 原因删空


试试


Here is correct  file for :   主目录  \  httpdocs    \ whmcs   \     templates\

\ six/    clientareacancelrequest.tpl


{if $invalid}


    {include file="$template/includes/alert.tpl" type="error" msg=$LANG.clientareacancelinvalid textcenter=true}

    <p class="text-center">

        <a href="clientarea.php?action=productdetails&amp;id={$id}" class="btn btn-primary">{$LANG.clientareabacklink}</a>

    </p>


{elseif $requested}


    {include file="$template/includes/alert.tpl" type="success" msg=$LANG.clientareacancelconfirmation textcenter=true}


    <p class="text-center">

        <a href="clientarea.php?action=productdetails&amp;id={$id}" class="btn btn-primary">{$LANG.clientareabacklink}</a>

    </p>


{else}


    {if $error}

        {include file="$template/includes/alert.tpl" type="error" errorshtml="<li>{$LANG.clientareacancelreasonrequired}</li>"}

    {/if}


    {include file="$template/includes/alert.tpl" type="info" textcenter=true msg="{$LANG.clientareacancelproduct}: <strong>{$groupname} - {$productname}</strong>{if $domain} ({$domain}){/if}"}


    <form method="post" action="{$smarty.server.PHP_SELF}?action=cancel&amp;id={$id}" class="form-stacked">

        <input type="hidden" name="sub" value="submit" />


        <fieldset>

            <div class="form-group" style="display:none;">

                <label for="cancellationreason">{$LANG.clientareacancelreason}</label>

                <textarea name="cancellationreason" id="cancellationreason" class="form-control" rows="6" class="fullwidth"></textarea>

            </div>


            {if $domainid}

            <div class="panel panel-warning">

                <div class="panel-heading">

                    <h3 class="panel-title">{$LANG.cancelrequestdomain}</h3>

                </div>

                <div class="panel-body">

                    <p>{$LANG.cancelrequestdomaindesc|sprintf2:$domainnextduedate:$domainprice:$domainregperiod}</p>

                    <div class="col-sm-12 text-center">

                        <label class="checkbox">

                            <input type="checkbox" name="canceldomain" id="canceldomain" /> {$LANG.cancelrequestdomainconfirm}

                        </label>

                    </div>

                </div>

            </div>

            {/if}


            <div class="form-group" style="display:none;">

                <div class="form-inline text-center">

                    <label class="control-label" for="type">{$LANG.clientareacancellationtype}</label>

                    <select name="type" id="type" class="form-control">

                        <option value="Immediate">{$LANG.clientareacancellationimmediate}</option>

                        <option value="End of Billing Period">{$LANG.clientareacancellationendofbillingperiod}</option>

                    </select>

                </div>

            </div>

            <div class="form-group" style="display:none;">

                <div class="form-inline text-center">

                    <input type="submit" value="{$LANG.clientareacancelrequestbutton}" class="btn btn-danger" />

                    <a href="clientarea.php?action=productdetails&id={$id}" class="btn btn-default">{$LANG.cancel}</a>

                </div>

            </div>


        </fieldset>


    </form>


{/if}






Whmcs:设置购买VPS时,取消NS填写和自动生成hostname

 修改这些只需要将购物车模板的configureproduct.tpl(文件位于templates/orderforms/stardand_cart)文件修改即可,具体修改步骤如下:

找到相应的NS填写的div块,然后增加样式


style="display:none;"

并将以下类似代码中的value值修改。


<input type="text" name="ns1prefix" class="form-control" id="inputNs1prefix" value="ns1.qsvm.com" placeholder="ns1">

<input type="text" name="ns2prefix" class="form-control" id="inputNs2prefix" value="ns2.qsvm.com" placeholder="ns2">

关于自动生成hostname:


只需将底下这段代码,增加到这个文件的底部即可:


<script>

$("#inputHostname").val("vm"+((new Date()).getMonth()+1).toString()+(new Date()).getDate()+parseInt(Math.random()*(999+1),10)+".qsvm.com");

</script>

另外如果你不想让用户修改hostname,你可以将底下的这个类似代码修改为我这样子:


 <input type="text" name="hostname" autocomplete="false" readonly="readonly" class="form-control" id="inputHostname" value="{$server.hostname}" placeholder="servername.qsvm.com">

转自

here is the correct 购物车模板的configureproduct.tpl 文件:

{include file="orderforms/standard_cart/common.tpl"}


<script>

var _localLang = {

    'addToCart': '{$LANG.orderForm.addToCart|escape}',

    'addedToCartRemove': '{$LANG.orderForm.addedToCartRemove|escape}'

}

</script>


<div id="order-standard_cart">


    <div class="row">


        <div class="pull-md-right col-md-9">


            <div class="header-lined">

                <h1>{$LANG.orderconfigure}</h1>

            </div>


        </div>


        <div class="col-md-3 pull-md-left sidebar hidden-xs hidden-sm">


            {include file="orderforms/standard_cart/sidebar-categories.tpl"}


        </div>


        <div class="col-md-9 pull-md-right">


            {include file="orderforms/standard_cart/sidebar-categories-collapsed.tpl"}


            <form id="frmConfigureProduct">

                <input type="hidden" name="configure" value="true" />

                <input type="hidden" name="i" value="{$i}" />


                <div class="row">

                    <div class="col-md-8">


                        <p>{$LANG.orderForm.configureDesiredOptions}</p>


                        <div class="product-info">

                            <p class="product-title">{$productinfo.name}</p>

                            <p>{$productinfo.description}</p>

                        </div>


                        <div class="alert alert-danger hidden" role="alert" id="containerProductValidationErrors">

                            <p>{$LANG.orderForm.correctErrors}:</p>

                            <ul id="containerProductValidationErrorsList"></ul>

                        </div>


                        {if $pricing.type eq "recurring"}

                            <div class="field-container">

                                <div class="form-group">

                                    <label for="inputBillingcycle">{$LANG.cartchoosecycle}</label>

                                    <select name="billingcycle" id="inputBillingcycle" class="form-control select-inline" onchange="{if $configurableoptions}updateConfigurableOptions({$i}, this.value);{else}recalctotals();{/if}">

                                        {if $pricing.monthly}

                                            <option value="monthly"{if $billingcycle eq "monthly"} selected{/if}>

                                                {$pricing.monthly}

                                            </option>

                                        {/if}

                                        {if $pricing.quarterly}

                                            <option value="quarterly"{if $billingcycle eq "quarterly"} selected{/if}>

                                                {$pricing.quarterly}

                                            </option>

                                        {/if}

                                        {if $pricing.semiannually}

                                            <option value="semiannually"{if $billingcycle eq "semiannually"} selected{/if}>

                                                {$pricing.semiannually}

                                            </option>

                                        {/if}

                                        {if $pricing.annually}

                                            <option value="annually"{if $billingcycle eq "annually"} selected{/if}>

                                                {$pricing.annually}

                                            </option>

                                        {/if}

                                        {if $pricing.biennially}

                                            <option value="biennially"{if $billingcycle eq "biennially"} selected{/if}>

                                                {$pricing.biennially}

                                            </option>

                                        {/if}

                                        {if $pricing.triennially}

                                            <option value="triennially"{if $billingcycle eq "triennially"} selected{/if}>

                                                {$pricing.triennially}

                                            </option>

                                        {/if}

                                    </select>

                                </div>

                            </div>

                        {/if}


                        {if count($metrics) > 0}

                            <div class="sub-heading">

                                <span>{$LANG.metrics.title}</span>

                            </div>


                            <p>{$LANG.metrics.explanation}</p>


                            <ul>

                                {foreach $metrics as $metric}

                                    <li>

                                        {$metric.displayName}

                                        -

                                        {if count($metric.pricing) > 1}

                                            {$LANG.metrics.startingFrom} {$metric.lowestPrice} / {if $metric.unitName}{$metric.unitName}{else}{$LANG.metrics.unit}{/if}

                                            <button type="button" class="btn btn-default btn-xs" data-toggle="modal" data-target="#modalMetricPricing-{$metric.systemName}">

                                                {$LANG.metrics.viewPricing}

                                            </button>

                                        {elseif count($metric.pricing) == 1}

                                            {$metric.lowestPrice} / {if $metric.unitName}{$metric.unitName}{else}{$LANG.metrics.unit}{/if}

                                            {if $metric.includedQuantity > 0} ({$metric.includedQuantity} {$LANG.metrics.includedNotCounted}){/if}

                                        {/if}

                                        {include file="$template/usagebillingpricing.tpl"}

                                    </li>

                                {/foreach}

                            </ul>


                            <br>

                        {/if}


                        {if $productinfo.type eq "server"}

                            <div class="sub-heading">

                                <span>{$LANG.cartconfigserver}</span>

                            </div>


                            <div class="field-container">


                                <div class="row">

                                    <div class="col-sm-6">

                                        <div class="form-group">

                                            <label for="inputHostname">{$LANG.serverhostname}</label>

                                            <input type="text" name="hostname" class="form-control" id="inputHostname" value="{$server.hostname}" placeholder="servername.yourdomain.com">

                                        </div>

                                    </div>

                                    <div class="col-sm-6">

                                        <div class="form-group" style="display:none;">

                                            <label for="inputRootpw">{$LANG.serverrootpw}</label>

                                            <input type="password" name="rootpw" class="form-control" id="inputRootpw" value="123456">

                                        </div>

                                    </div>

                                </div>


                                <div class="row">

                                    <div class="col-sm-6">

                                        <div class="form-group" style="display:none;">

                                            <label for="inputNs1prefix">{$LANG.serverns1prefix}</label>

                                            <input type="text" name="ns1prefix" class="form-control" id="inputNs1prefix" value="ns1" placeholder="ns1">

                                        </div>

                                    </div>

                                    <div class="col-sm-6">

                                        <div class="form-group" style="display:none;">

                                            <label for="inputNs2prefix">{$LANG.serverns2prefix}</label>

                                            <input type="text" name="ns2prefix" class="form-control" id="inputNs2prefix" value="ns2" placeholder="ns2">

                                        </div>

                                    </div>

                                </div>


                            </div>

                        {/if}


                        {if $configurableoptions}

                            <div class="sub-heading">

                                <span>{$LANG.orderconfigpackage}</span>

                            </div>

                            <div class="product-configurable-options" id="productConfigurableOptions">

                                <div class="row">

                                    {foreach $configurableoptions as $num => $configoption}

                                        {if $configoption.optiontype eq 1}

                                            <div class="col-sm-6">

                                                <div class="form-group">

                                                    <label for="inputConfigOption{$configoption.id}">{$configoption.optionname}</label>

                                                    <select name="configoption[{$configoption.id}]" id="inputConfigOption{$configoption.id}" class="form-control">

                                                        {foreach key=num2 item=options from=$configoption.options}

                                                            <option value="{$options.id}"{if $configoption.selectedvalue eq $options.id} selected="selected"{/if}>

                                                                {$options.name}

                                                            </option>

                                                        {/foreach}

                                                    </select>

                                                </div>

                                            </div>

                                        {elseif $configoption.optiontype eq 2}

                                            <div class="col-sm-6">

                                                <div class="form-group">

                                                    <label for="inputConfigOption{$configoption.id}">{$configoption.optionname}</label>

                                                    {foreach key=num2 item=options from=$configoption.options}

                                                        <br />

                                                        <label>

                                                            <input type="radio" name="configoption[{$configoption.id}]" value="{$options.id}"{if $configoption.selectedvalue eq $options.id} checked="checked"{/if} />

                                                            {if $options.name}

                                                                {$options.name}

                                                            {else}

                                                                {$LANG.enable}

                                                            {/if}

                                                        </label>

                                                    {/foreach}

                                                </div>

                                            </div>

                                        {elseif $configoption.optiontype eq 3}

                                            <div class="col-sm-6">

                                                <div class="form-group">

                                                    <label for="inputConfigOption{$configoption.id}">{$configoption.optionname}</label>

                                                    <br />

                                                    <label>

                                                        <input type="checkbox" name="configoption[{$configoption.id}]" id="inputConfigOption{$configoption.id}" value="1"{if $configoption.selectedqty} checked{/if} />

                                                        {if $configoption.options.0.name}

                                                            {$configoption.options.0.name}

                                                        {else}

                                                            {$LANG.enable}

                                                        {/if}

                                                    </label>

                                                </div>

                                            </div>

                                        {elseif $configoption.optiontype eq 4}

                                            <div class="col-sm-12">

                                                <div class="form-group">

                                                    <label for="inputConfigOption{$configoption.id}">{$configoption.optionname}</label>

                                                    {if $configoption.qtymaximum}

                                                        {if !$rangesliderincluded}

                                                            <script type="text/javascript" src="{$BASE_PATH_JS}/ion.rangeSlider.min.js"></script>

                                                            <link href="{$BASE_PATH_CSS}/ion.rangeSlider.css" rel="stylesheet">

                                                            <link href="{$BASE_PATH_CSS}/ion.rangeSlider.skinModern.css" rel="stylesheet">

                                                            {assign var='rangesliderincluded' value=true}

                                                        {/if}

                                                        <input type="text" name="configoption[{$configoption.id}]" value="{if $configoption.selectedqty}{$configoption.selectedqty}{else}{$configoption.qtyminimum}{/if}" id="inputConfigOption{$configoption.id}" class="form-control" />

                                                        <script>

                                                            var sliderTimeoutId = null;

                                                            var sliderRangeDifference = {$configoption.qtymaximum} - {$configoption.qtyminimum};

                                                            // The largest size that looks nice on most screens.

                                                            var sliderStepThreshold = 25;

                                                            // Check if there are too many to display individually.

                                                            var setLargerMarkers = sliderRangeDifference > sliderStepThreshold;


                                                            jQuery("#inputConfigOption{$configoption.id}").ionRangeSlider({

                                                                min: {$configoption.qtyminimum},

                                                                max: {$configoption.qtymaximum},

                                                                grid: true,

                                                                grid_snap: setLargerMarkers ? false : true,

                                                                onChange: function() {

                                                                    if (sliderTimeoutId) {

                                                                        clearTimeout(sliderTimeoutId);

                                                                    }


                                                                    sliderTimeoutId = setTimeout(function() {

                                                                        sliderTimeoutId = null;

                                                                        recalctotals();

                                                                    }, 250);

                                                                }

                                                            });

                                                        </script>

                                                    {else}

                                                        <div>

                                                            <input type="number" name="configoption[{$configoption.id}]" value="{if $configoption.selectedqty}{$configoption.selectedqty}{else}{$configoption.qtyminimum}{/if}" id="inputConfigOption{$configoption.id}" min="{$configoption.qtyminimum}" onchange="recalctotals()" onkeyup="recalctotals()" class="form-control form-control-qty" />

                                                            <span class="form-control-static form-control-static-inline">

                                                                x {$configoption.options.0.name}

                                                            </span>

                                                        </div>

                                                    {/if}

                                                </div>

                                            </div>

                                        {/if}

                                        {if $num % 2 != 0}

                                            </div>

                                            <div class="row">

                                        {/if}

                                    {/foreach}

                                </div>

                            </div>


                        {/if}


                        {if $customfields}


                            <div class="sub-heading">

                                <span>{$LANG.orderadditionalrequiredinfo}</span>

                            </div>


                            <div class="field-container">

                                {foreach $customfields as $customfield}

                                    <div class="form-group">

                                        <label for="customfield{$customfield.id}">{$customfield.name}</label>

                                        {$customfield.input}

                                        {if $customfield.description}

                                            <span class="field-help-text">

                                                {$customfield.description}

                                            </span>

                                        {/if}

                                    </div>

                                {/foreach}

                            </div>


                        {/if}


                        {if $addons || count($addonsPromoOutput) > 0}


                            <div class="sub-heading">

                                <span>{$LANG.cartavailableaddons}</span>

                            </div>


                            {foreach $addonsPromoOutput as $output}

                                <div>

                                    {$output}

                                </div>

                            {/foreach}


                            <div class="row addon-products">

                                {foreach $addons as $addon}

                                    <div class="col-sm-{if count($addons) > 1}6{else}12{/if}">

                                        <div class="panel panel-default panel-addon{if $addon.status} panel-addon-selected{/if}">

                                            <div class="panel-body">

                                                <label>

                                                    <input type="checkbox" name="addons[{$addon.id}]"{if $addon.status} checked{/if} />

                                                    {$addon.name}

                                                </label><br />

                                                {$addon.description}

                                            </div>

                                            <div class="panel-price">

                                                {$addon.pricing}

                                            </div>

                                            <div class="panel-add">

                                                <i class="fas fa-plus"></i>

                                                {$LANG.addtocart}

                                            </div>

                                        </div>

                                    </div>

                                {/foreach}

                            </div>


                        {/if}


                        <div class="alert alert-warning info-text-sm">

                            <i class="fas fa-question-circle"></i>

                            {$LANG.orderForm.haveQuestionsContact} <a href="contact.php" target="_blank" class="alert-link">{$LANG.orderForm.haveQuestionsClickHere}</a>

                        </div>


                    </div>

                    <div class="col-md-4" id="scrollingPanelContainer">


                        <div id="orderSummary">

                            <div class="order-summary">

                                <div class="loader" id="orderSummaryLoader">

                                    <i class="fas fa-fw fa-sync fa-spin"></i>

                                </div>

                                <h2>{$LANG.ordersummary}</h2>

                                <div class="summary-container" id="producttotal"></div>

                            </div>

                            <div class="text-center">

                                <button type="submit" id="btnCompleteProductConfig" class="btn btn-primary btn-lg">

                                    {$LANG.continue}

                                    <i class="fas fa-arrow-circle-right"></i>

                                </button>

                            </div>

                        </div>


                    </div>


                </div>


            </form>

        </div>

    </div>

</div>


<script>recalctotals();</script>

<script>

$("#inputHostname").val("vps"+((new Date()).getMonth()+1).toString()+(new Date()).getDate()+"-"+parseInt(Math.random()*(999+1),10)+".whmcs.auto");

</script>


Pulover’s Macro Creator

 Quick Tutorial


The simplest way to get started with Pulover’s Macro Creator is using the recorder. Follow these steps record a macro:


    Start Pulover’s Macro Creator.

    Click on the Record button on the toolbar or press Ctrl+R.

    Press the record hotkey (default is F9).

    Make mouse and keyboard actions.

    Press the record hotkey again to stop.

    Press the playback hotkey (default is F3) to reproduce your actions.

https://www.macrocreator.com/help/

You can change record and playback options clicking the arrows beside those buttons in the toolbar, or going to Settings.


Although the recorder is a good choice for quick tasks, Pulover’s Macro Creator can do many other things if you take the time to learn its commands. You can add loops, conditions, create variables and arrays, send text on a background window, search for an image or pixel and much more.

Download Pulover’s Macro Creator


    Download installer from GitHub – Easy installation with shortcuts and file association.

    Download source code – The source code of the current version.

    View source on GitHub

    Other versions and releases on GitHub