Skip to content

Instantly share code, notes, and snippets.

@jesussuarz
Created December 26, 2023 06:42
Show Gist options
  • Save jesussuarz/9aeb397f90a5339a732276a65591692e to your computer and use it in GitHub Desktop.
Save jesussuarz/9aeb397f90a5339a732276a65591692e to your computer and use it in GitHub Desktop.

hook para agregar bloque de saldo al área de cliente de WHMCS.

El problema: Resulta que uno de nuestros clientes en la empresa indicaba hace unos días que no podía salía ninguna opción para agregar saldo en la página. por lo tanto hice este plugin basado en uno viejo que había en internet.

el siguiente código debes pegarlo con el nombre: agregar_fondos.php en includes/hooks de tu whmcs.

<?php
/**
* Mostrar saldo en el area de clientes
* @Autor sentq de WHMCS
* @ Modificado por JesusSuarz de Foros Hosting!
* @link   www.cangurohosting.com
* @Para versión WHMCS v7.10.2+
*/
use WHMCS\View\Menu\Item as MenuItem;
use Illuminate\Database\Capsule\Manager as Capsule;
# Funcion para agregar nuevo bloque dentro del área de clientes
add_hook('ClientAreaPrimarySidebar', 1, function(MenuItem $primarySidebar){
    $filename = basename($_SERVER['REQUEST_URI'], ".php");
    $parseFile = explode('.', $filename);
    $client = Menu::context("client");
    $clientid = intval($client->id);
    if ($parseFile['0']!=='clientarea' || $clientid===0){
        return;
    }
    $primarySidebar->addChild('Client-Balance', array(
        'label' => "Tu saldo",
        'order' => '1',
        'icon' => 'fas fa-sack'
    ));
    # Obtener divisa/moneda
    $getCurrency = Capsule::table('tblcurrencies')->where('id', $client->currency)->get();
    # Recupera el panel que acabamos de crear.
    $balancePanel = $primarySidebar->getChild('Client-Balance');
    // Mueve el panel al final del orden de clasificación para que siempre se muestre
    // como último panel de la barra lateral.
    $balancePanel->moveToBack();
    $balancePanel->setOrder(0);
    $fundsenabled = Capsule::table('tblconfiguration')->where('setting','AddFundsEnabled')->value('value');
    //si agregar fondos esta encendido entonces se muestra de lo contrario no
    if ($fundsenabled == "on") {
    //si el cliente tiene saldo de 0 entonces se coloca en rojo
        if ($client->credit == '0.00') {
            $text_color = 'text-danger';
            $no_hay_fondos = '<p class="text-center text-muted">No tienes saldo en tu cuenta. <i class="fas fa-question-circle float-non" data-html="true" data-toggle="tooltip" title="" data-placement="bottom" data-original-title="No tiene fondos agregados en su cuenta, si desea que sus facturas se paguen automáticamente, por favor añada saldo y este mensaje se eliminara de inmediato."></i></p>';
        }//de lo contrario se coloca en azul
        else {
            $text_color = 'text-primary';
        }
        # Agregar Bloque
    $balancePanel->addChild('balance-amount', array(
        'label' => '<h3 class="text-center text-none m-1 '.$text_color.'">'.$getCurrency['0']->prefix.$client->credit.' '. $getCurrency['0']->suffix.'</h3> '.$no_hay_fondos.'',
        'order' => 1
    ));
    $balancePanel->setFooterHtml(
        '<a href="clientarea.php?action=addfunds" class="block-btn btn btn-success btn-sm ">
         <i class="fa fa-plus"></i> Agregar Fondos</a>
        <style>
        .block-btn {width: 100%;}
        div#Primary_Sidebar-Client-Balance-balance-amount:hover {color: initial !important;}
        .float-non {float: none !important;}</style>'
    );
}
});

Que hace? algunas características agregadas son:

  • agrega un bloque de tipo "panel" en la barra lateral izquierda.
  • el hook se oculta si está desactivado el agregar fondos en tu whmcs.
  • agrega un mensaje para notificar que no tiene saldo o está en 0 la cuenta.
  • sale un mensajito en rojo notificando que debería agregar saldo.
  • agrega un botón con el width 100%.
  • si el cliente tiene saldo el mensaje se quita y lo coloca en color azulito.
  • agrega un icono con un tooltip botom donde agrega información adicional cuando el cliente no tiene saldo.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment