Merhabalar,

Bir arkadaşım için az önce yaptığım, ürünün kalan gün sayısını gösteren kodu paylaşıyorum sizler ile.

Özellikler
- Aktif ürünlerde, eğer ürünün fiyatlandırması yinelenen şeklindeyse (1 aylık, 3aylık, 6aylık,12 aylık, 24 aylık ve 36 aylık) ürünün kalan gün sayısını bir bar içerisinde gösterir. Gün sayısı azaldıkça bar kısalır.

- Kodda G-Invoices modülü desteği bulunmakta. Modüle Buradan ulaşabilirsiniz. Ürünün süresi eğer 1/3 kalmışsa (aylık üründe 10 gün gibi) altında yenile butonu çıkar, bu da G-Invoices modülünün arayüzüne gönderir.
- Ürünün süresi 1/3 kalmışsa (aylık üründe 10 gün gibi) barın rengi kırmızıya dönmekte.

- Hook gerekliliği bulunmamakta. Tüm kodlar .tpl dosyasının içerisinde bulunmaktadır.

Kodu, templates/temaklasorunuz/clientareaproducts.tpl içindeki kod ile değişmelisiniz. (Temadan temaya çeşitli düzenlemeler olabileceğinden ötürü, yedek alınması ve verdiğim kodun muadili kod ile değişmesi gerekiyor.)




Kod:
{include file="$template/includes/tablelist.tpl" tableName="ServicesList" filterColumn="4" noSortColumns="0"}
<script type="text/javascript">
    jQuery(document).ready( function ()
    {
        var table = jQuery('#tableServicesList').removeClass('hidden').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}');
        {/if}
        table.draw();
        jQuery('#tableLoading').addClass('hidden');
    });
</script>

{literal}
<style>
.progress {
    position:relative;
}
.progress span {
    position:absolute;
    left:0;
    width:100%;
    text-align:center;
    z-index:2;
    color:black;
}
</style>
{/literal}

<div class="table-container clearfix">
    <table id="tableServicesList" class="table table-list hidden">
        <thead>
            <tr>
                <th></th>
                <th>{$LANG.orderproduct}</th>
                <th>{$LANG.clientareaaddonpricing}</th>
                <th>{$LANG.clientareahostingnextduedate}</th>
                <th>Kalan Gün</th>
                <th>{$LANG.clientareastatus}</th>
                <th class="responsive-edit-button" style="display: none;"></th>
            </tr>
        </thead>
        <tbody>
            {foreach key=num item=service from=$services}
                {assign var="tarih3" value= $smarty.now|date_format:"%D"}
                {assign var="tarih1" value= $tarih3|strtotime}
                {assign var="tarih2" value= $service.normalisedNextDueDate|strtotime}

                {if $service.billingcycle eq $LANG.orderpaymenttermmonthly}
                    {assign var="tarih5" value="-1 month"|strtotime:$tarih2}
                {elseif $service.billingcycle eq $LANG.orderpaymenttermquarterly}
                    {assign var="tarih5" value="-3 month"|strtotime:$tarih2}
                {elseif $service.billingcycle eq $LANG.orderpaymenttermsemiannually}
                    {assign var="tarih5" value="-6 month"|strtotime:$tarih2}
                {elseif $service.billingcycle eq $LANG.orderpaymenttermannually}
                    {assign var="tarih5" value="-1 year"|strtotime:$tarih2}
                {elseif $service.billingcycle eq $LANG.orderpaymenttermbiennially}
                    {assign var="tarih5" value="-2 year"|strtotime:$tarih2}
                {elseif $service.billingcycle eq $LANG.orderpaymenttermtriennially}
                    {assign var="tarih5" value="-3 year"|strtotime:$tarih2}
                {/if}

                {assign var="tarih4" value=($tarih2 - $tarih5)/86400}
                {assign var="kalantarih" value=($tarih2 - $tarih1)/86400}
                {assign var="servisdurumu" value=$service.status|strtolower}          
                {math assign="percentage" equation="(x / y) * 100" x=$kalantarih y=$tarih4 format="%d"}
                    
                <tr onclick="clickableSafeRedirect(event, 'clientarea.php?action=productdetails&amp;id={$service.id}', false)">
                    <td class="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()}"/>
                        {elseif !$service.isActive}
                            <img src="{$BASE_PATH_IMG}/ssl/ssl-inactive-domain.png" data-toggle="tooltip" title="{lang key='sslState.sslInactiveService'}">
                        {/if}
                    </td>
                    <td><strong>{$service.product}</strong>{if $service.domain}<br /><a href="http://{$service.domain}" target="_blank">{$service.domain}</a>{/if}</td>
                    <td class="text-center" data-order="{$service.amountnum}">{$service.amount}<br />{$service.billingcycle}</td>
                    <td class="text-center"><span class="hidden">{$service.normalisedNextDueDate}</span>{$service.nextduedate} <br></td>
                    <td class="text-center">
                        {if $service.billingcycle eq $LANG.orderpaymenttermonetime}
                            {$LANG.orderpaymenttermonetime}
                        {elseif $service.billingcycle eq $LANG.orderpaymenttermfreeaccount}
                            {$LANG.orderpaymenttermfreeaccount}
                        {elseif $servisdurumu neq 'active'}
                            {$service.statustext}  
                        {elseif $servisdurumu eq 'active'}
                            <div style="margin-bottom:0px !important; text-align:center !important;" class="progress">
                              <div class="progress-bar" role="progressbar" style="width: {$percentage}%; display: inline-block; {if $percentage lt '34'} background-color: #d9534f !important;{/if}" aria-valuenow="{$percentage}" aria-valuemin="0" aria-valuemax="100"></div><span>{$kalantarih} gün</span>
                            </div>
                            {if $percentage lt '34'}<br>
                            <a style="font-size:11px; margin-top: -13px;" href="clientarea.php?action=productdetails&amp;id={$service.id}#extendTime" type="button" class="button btn btn-primary btn-default"><i class="fa fa-sync" aria-hidden="true"></i> Yenile</a>
                            {/if}
                        {/if}
                    </td>
                    <td class="text-center"><span class="label status status-{$service.status|strtolower}">{$service.statustext}</span></td>
                    <td class="responsive-edit-button" style="display: none;">
                        <a href="clientarea.php?action=productdetails&amp;id={$service.id}" class="btn btn-block btn-info">
                            {$LANG.manageproduct}
                        </a>
                    </td>
                </tr>
            {/foreach}
        </tbody>
    </table>
    <div class="text-center" id="tableLoading">
        <p><i class="fas fa-spinner fa-spin"></i> {$LANG.loading}</p>
    </div>
</div>
Not: WHMCS 8.1 ve 7.10.2 de denenmiştir.

Saygılarımla,
Uğur Burak ARITAŞ.