Hallo zusammen,
ich möchte gerne in den einzelnen Rechnungspositionen aufführen für welchen Zeitraum beim Hosting bezahlt wird. Siehe Beispiel unten. Dafür habe ich einen Hook geschrieben. In der Invoice.tpl-Datei konnte ich die Ausgabe schon anpassen das finde ich aber nicht optimal und ist auch nicht die richtige Stelle. Ich würde gerne die "line item description" auch in der Datenbank ändern. Doch leider wird der Hook InvoiceCreation wohl nicht mal ausgelöst, bzw. nicht mit meiner Funktion. Beim Aktivieren von Hook Debugging steht im Activity Log nur: "Hooks Debug: No Hook Functions Defined for InvoiceCreation". Ich habe auch noch einen Hook von Katamazes-Sammlung, welcher auch nicht ausgeführt wird. Langsam habe ich das Gefühl es gibt ein grundlegendes Problem da auch in der internationalen Community ähnliches bei WHMCS Version 8.1.x berichtet wird.
Hat jemand von euch eine Idee wieso das nicht funktioniert, oder mache ich etwas falsch? Ich verwende WHMCS Version 8.1.3, PHP 7.4.18 Fehler im Log konnte ich keine sehen.
Beispiel
Normale Ausgabe für ein Hosting-Produkt auf der Rechnung ist
Produktname - domain.com (14.05.2021 - 14.05.2022)
Neue Ausgabe für ein Hosting-Produkt auf der Rechnung durch den hook
Produktname - domain.com
Zeitraum: 14.05.2021 - 14.05.2022
Verrechnungszyklus: Jährlich
Letztmöglicher Kündigungstermin: 14.04.2022
Mein Hook
erstellt in: "/includes/hooks/invoicehook.php"
hoha_set_invoice_details($vars) {
// Define parameters
$command = 'GetInvoice';
$values = array(
'invoiceid' => $vars['invoiceid'],
);
$adminuser = 'jbhs';
// Call the localAPI function
$invoice = localAPI($command, $values, $adminuser);
if ($invoice['result'] == 'success') {
foreach ($invoice['items']['item'] as $item){
if($item['type'] == "Hosting") {
$get_products = array(
'clientid' => $invoice['userid'],
'serviceid' => $item['relid'],
'stats' => true,
);
$product_results = localAPI('GetClientsProducts', $get_products , $adminuser);
if ($product_results['products']['product']['0']['billingcycle'] == 'Annually') {
$period_start = strtotime($product_results['products']['product']['0']['nextduedate']);
$period_end = strtotime($product_results['products']['product']['0']['nextduedate'] . '+ 364 days');
$cancellation_date = strtotime($product_results['products']['product']['0']['nextduedate'] . '+ 335 days');
$item_billingcycle = Lang::trans('orderbillingcycle') . ': ' . Lang::trans('orderbillingcycledisplayannually');
}
//ToDo other billingcycles
$item_period = Lang::trans('itemPeriod') . ': ' . date('d.m.Y',$period_start) . ' - ' . date('d.m.Y',$period_end);
$item_cancellation = Lang::trans('lastPossibleTerminationDate') . ': ' . date('d.m.Y', $cancellation_date);
$new_item_description = substr($item['description'], 0, strpos($item['description'],'(')) . $item_period . $item_cancellation . $item_billingcycle;
}
$updatedInfo = array(
'invoiceid' => $vars['invoiceid'],
'itemdescription' => array($item['id'] => $new_item_description),
'itemamount' => array($item['id'] => $item[amount]),
'itemtaxed' => array($item['id'] => $item[taxed])
);
$updatedInvoice = localAPI('UpdateInvoice', $updatedInfo, $adminuser);
}
}
}
add_hook('InvoiceCreation', 1, 'hoha_set_invoice_details')
Alles anzeigen