Nummernkreise für Entwickler
Manchmal ist es nötig einen Nummernkreis bereitzustellen, z.B. für Rechnungs-IDs. Es ist ungewöhnlich das Rechnungen mit der ID 0 oder 1 anfangen, viele Benuzter oder FIrmen möchten mehrstellige Rechnungsnummern diese dann ab ID 1.000 oder 10.000 starten sollen. Über die NumberRange
API ist es möglich dem Benutzer die Möglichkeit zu geben den Startwert für einen gewissen Nummernkreis selbst festzulegen.
Hinweis:
Benutzer können Nummernkreise über die ERP Einstellungen festlegen `Einstellungen -> Shop -> Allgemein`.
[Screenshot]
Nummernkreis API
Um eine eigene Nummernkreis API bereitzustellen benötigst du eine NumberRange Klasse welche du über den ErpProvider zur Verfügung stellst.
NumberRange Klasse erstellen
Eine NumberRange Klasse muss das Interface QUI\ERP\Api\NumberRangeInterface
implementieren. Dieses gibt an das folgende drei Methoden implementiert werden müssen: getTtitle, setRange und getRange
<?php
/**
* This file contains QUI\ERP\Accounting\Invoice\NumberRanges\Invoice
*/
namespace QUI\ERP\Accounting\Invoice\NumberRanges;
use QUI;
use QUI\ERP\Api\NumberRangeInterface;
/**
* Your NumberRange Class
*/
class YouNumberRange implements NumberRangeInterface
{
/**
* @param null|QUI\Locale $Locale
*
* @return string
*/
public function getTitle($Locale = null)
{
if ($Locale === null) {
$Locale = QUI::getLocale();
}
return $Locale->get('quiqqer/invoice', 'invoice.numberrange.title');
}
/**
* Return the current start range value
*
* @return int
*/
public function getRange()
{
}
/**
* @param int $range
*/
public function setRange($range)
{
}
}
Über diese Methoden kannst du nun bestimmen wie und was genau beim ändern des Nummernkreises passieren soll.
Ein gutes Beispiel findest du im Rechnungs-Moduls quiqqer/invoice
unter https://dev.quiqqer.com/quiqqer/invoice/blob/dev/src/QUI/ERP/Accounting/Invoice/NumberRanges/Invoice.php
NumberRange Klasse zur Verfügung stellen
Damit deine Nummernkreis API auch verwendet wird, musst du diese über den ErpProvider zur Verfügung stellen. Die ErpProvider API besitzt eine Methode getNumberRanges
. Wie die ERP Provider API funktioniert kannst du im Abschnitt ERP Provider registrieren nachlesen.
Eine eigene NumberRange zur Verfügung stellen ist recht schnell gemacht. Dein ERP Provider einfach um eine Methode getNumberRanges
und deine NumberRange als array zurückgeben.
Beispiel:
/**
* @return array
*/
public static function getNumberRanges()
{
return array(
new NumberRanges\Invoice(),
new NumberRanges\TemporaryInvoice()
);
}
Ein erweitertes Beispiel findest du im quiqqer/invoice
Modul: https://dev.quiqqer.com/quiqqer/invoice/blob/dev/src/QUI/ERP/Accounting/Invoice/ErpProvider.php