Payment-Modul “Rechnung” – Teil3 (Restriktion auf Kundengruppen-Ebene)

In Teil 3 von Mxperts-Invoice möchte ich nun die Möglichkeit schaffen, das man im Backend die Verfügbakeit des Moduls auf bestimmte Kundengruppen einschränken kann. Das haben wir ja bereits in unserem Shipping-Modul gemacht, weshalb das eine leichte Übung ist
Wir benötigen:
1. Liste aller Kundengruppen
2. Zustzfelder im Backend
3. Aktuelle Kundengruppe des eingeloggten User’s
4. Gütligkeitsprüfung
Zuerst lesen wir die Kundengruppen aus – Datei: app\code\local\Mxperts\Invoice\Model\Source\Customergroups.php
<?php
class Mxperts_Invoice_Model_Source_Customergroups
{
public function toOptionArray()
{
$customer_groups[] = array('value'=>Mage_Customer_Model_Group::NOT_LOGGED_IN_ID, 'label'=>'NOT LOGGED IN');
$groups = Mage::helper('customer')->getGroups()->toOptionArray();
foreach($groups as $group){
$customer_groups[] = array('value'=>$group['value'], 'label'=>$group['label']);
}
return $customer_groups;
}
}
Da uns die Kundengruppen-Liste für das Backend zur Verfügung steht, definieren wir dafür eine Multiselect-Liste zur Auswahl.
Datei: app\code\local\Mxperts\Invoice\etc\system.xml
...
<!-- Erlaubte Kundengruppen -->
<customergroups translate="label comment">
<label>Customer Group(s)</label>
<frontend_type>multiselect</frontend_type>
<source_model>invoice/source_customergroups</source_model>
<sort_order>4</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</customergroups>
...
Zum Schluss nur noch die Datei app\code\local\Mxperts\Invoice\Model\Invoice.php mit den Zusatzfunktionen ausstatten.
<?php
class Mxperts_Invoice_Model_Invoice extends Mage_Payment_Model_Method_Abstract
{
// Eindeutiger Bezeichner
protected $_code = 'invoice';
// Klassen fuer unsere Blocks/Templates
protected $_formBlockType = 'invoice/form';
protected $_infoBlockType = 'invoice/info';
// Kundengruppe des aktuellen Users auslesen
public function getCurrentCustomerGroup()
{
$session = Mage::getSingleton('customer/session');
if (! $session->isLoggedIn()) $customer_group_id = Mage_Customer_Model_Group::NOT_LOGGED_IN_ID;
else $customer_group_id = $session->getCustomerGroupId();
return $customer_group_id;
}
// Ausgabe des Titels aus dem Backend
public function getCODTitle()
{
return $this->getConfigData('title');
}
// Ausgabe von Daten aus dem Backend
public function getInfoText($fieldname)
{
return $this->getConfigData($fieldname);
}
public function canUseCheckout()
{
$canUse = true;
if($this->getConfigData('customergroups') != '') {
$customer_groups = explode(',',$this->getConfigData('customergroups'));
$activecustomer_groups_id = $this->getCurrentCustomerGroup();
if (!in_array($activecustomer_groups_id,$customer_groups)) {
$canUse = false;
}
}
return $canUse;
}
}
Nachdem Sie den Cache geleert und das Modul konfiguriert haben, erhalten nur noch die angeklickten Kundengruppen die Zahlungsart Rechnung zur Auswahl.

Das fertige Modul haben wir bei Magento-Connect veröffentlicht.
www.magentocommerce.com/extension/1589/mxperts–customer-groups-invoice
Daniel Sasse wird in Teil 4 erklären, wie man seine Module auf Magento-Connect publiziert.
Viele Grüße
Johannes Teitge
Was muss ich tun, damit Rechnungen bei der Erstellung nicht sofort als “bezahlt” markiert werden? Ich würde eine Rechnung gern erst auf Knopfdruck als bezahlt markieren.
War diese Antwort hilfreich?
LikeDislikeHi, genau vor derselben Frage stehe ich gerade auch… Danke für diese hilfreiche Seite. Vielleicht auch einen Tipp dafür?
War diese Antwort hilfreich?
LikeDislike