Gross Klein

Magento: Get Product by SKU

Hier mal ein kleines Snippet um ein Produkt mittels der SKU zu laden:

$sku = "microsoftnatural";
$product = Mage::getModel('catalog/product')
            ->loadByAttribute('sku', $sku);
             

print_r($product->getData());

Oder wenn nur die Id gefragt ist:

$productIdBySku = Mage::getModel('catalog/product')
                    ->getIdBySku('Product Sku');
                     
echo $productIdBySku;


Online-Gutschriften über das Backend an Paypal senden

Um über das Backend Gutschriften für widerrufene Artikel zu erstellen bedarf es wenige Klicks. Hat der Kunde via Paypal gezahlt, so kann der zu erstattende Betrag direkt zurück auf das Paypal-Konto des Kunden zurückgebucht werden. Hat der Kunde Mehrere Artikel bestellt, aber nur einen Teil widerrufen, so können diese in die Lagerverwaltung wieder aufgenommen werden.

Hier eine kurze Anleitung:

  • Im Backend die Bestellung unter “Verkäufe” -> “Bestellungen” aufrufen.
  • In der linken Navigation “Rechnungen” wählen.
  • Entsprechende Rechnung auswählen.
  • Hier den “Gutschrift”-Button betätigen (WICHTIG: Der Gutschrift-Button muss auf der Rechnungsseite ausgelöst werden).
  • In der Tabelle “zu erstattende Artikel” die erforderliche Stückzahl zu dem entsprechendem Artikel eintragen und den Haken bei “zurück ins Lager” setzen wenn die Lagerverwaltung von Magento genutzt wird.
  • Nun die Stückzahl aller Artikel, die nicht erstattet werden, auf 0 setzen.
  • Unter der Tabelle befindet sich der ausgegraute Button “Mengen aktualisieren”. Diesen betätigen.
  • Jetzt beträgt die Zwischensumme den Wert der zu erstattenden Artikel. Sollen die Versandkosten ebenfalls erstattet werden, so kann der vorausgefüllte Wert bestehen bleiben. Ansonsten die 0 eintragen.
  • Zuletzt den (rechten) “Erstatten”-Button betätigen (WICHTIG: NICHT den “Erstatten (offline)”-Button).
  • Der Kunde bekommt nun automatisch den Betrag auf sein Paypal-Konto gutgeschrieben.
  • Soll der Kunde über den Vorgang benachrichtigt werden, so muss der Button “Gutschriften” in der linken Navigation betätigt werden.
  • Hier die gewünschte Gutschrift auswählen.
  • Auf der Seite befindet sich oben rechts ein Button “Sende E-Mail”, den auslösen und alles ist erledigt.

Zu den Feldern Berichtigungserstattung und Berichtigungszuschlag:

Berichtigungserstattung:
Hier kann ein Betrag eingegeben werden, der zusätzlich zu den Versandkosten gutgeschrieben werden kann. Der Betrag bezieht sich nicht auf einen Posten sondern wird pauschal zum Erstattungsbetrag hinzugerechnet. Dieser kann nicht höher sein als der gesamte, bereits bezahlte, Betrag.

Berichtigungszuschlag:
Der Berichtigungszuschlag ist das genaue Gegenteil der Berichtigungserstattung. Das heißt, dass dieser Betrag vom Verkäufer einbehalten wird. Der Wert bezieht sich nicht auf einen Posten, sondern auf den gesamten Rechnungsbetrag.


SQL Abfragen in Magento: addAttributeToFilter

addAttributeToFilter ist eine Funktion, mit welcher man geschickte Abfragen an den Produktkatalog stellen kann. In Kurzform: Es beeinflusst den WHERE Anteil der SQL-Query:

$afterSalesSpecialOffer = Mage::getResourceModel('catalogsearch/advanced_collection')
                ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
                ->addMinimalPrice()
                ->addTaxPercents()
                ->addStoreFilter()
                ->addAttributeToFilter('status', array('in'=>1));
    
    $todayDate = date('m/d/y');
    $tomorrow = mktime(0, 0, 0, date('m'), date('d')+1, date('y'));
    $tomorrowDate = date('m/d/y', $tomorrow);
                
    $afterSalesSpecialOffer->addAttributeToFilter('special_from_date', array('date' => true, 'to' => $todayDate))
                    ->addAttributeToFilter('special_to_date', array('or'=> array(
                    0 => array('date' => true, 'from' => $tomorrowDate),
                    1 => array('is' => new Zend_Db_Expr('null')))
                    ), 'left'); 

Diese Abfrage hat zum Beispiel als Ergebnis alle Produkte, welche aktuell im Angebot sind. Dabei wird auch der Gültigkeitszeitraum des Angebots berücksichtigt.

Folgen Abfragebedingungen sind dabei möglich.

Gleich: eq

$_products->addAttributeToFilter('status', array('eq' => 1));

Nicht Gleich: neq

$_products->addAttributeToFilter('status', array('neq' => 1));

Ähnlich : like

$_products->addAttributeToFilter('sku', array('like' => '1%')); // Alle Produkte deren SKU mit 1 beginnen

Nicht Ähnlich: nlike

$_products->addAttributeToFilter('sku', array('nlike' => '1%')); // Alle Produkte deren SKU nicht mit 1 beginnen

Einer von: in

$_products->addAttributeToFilter('sku', array('in' => array(1,2,3))); // Produkte mit der SKU 1,2 oder 3

nicht Einer von: nin

$_products->addAttributeToFilter('sku', array('like' => array(1,2,3))); // Alle Produkte ausser mit der SKU 1,2 oder 3

ist nicht gesetzt NULL: null

$_products->addAttributeToFilter('sku', 'null'); // Alle Produkte ohne SKU; Darf eigentlich nicht vorkommen

ist gesetzt: notnull

$_products->addAttributeToFilter('sku', 'notnull'); // Alle Produkte mit SKU;

größer als: gt

$_products->addAttributeToFilter('entity_id', array('gt' => 100)); 

kleiner als: lt

$_products->addAttributeToFilter('entity_id', array('lt' => 100)); 

größer oder gleich als: gteg

$_products->addAttributeToFilter('entity_id', array('gteq' => 100));

kleiner oder gleich als: lteq

$_products->addAttributeToFilter('entity_id', array('lteq' => 100));

Magento weist auf kritische Sicherheitslücke hin

Magento hat gestern, am 05.07.2012, bekannt gegeben, dass ein Sicherheitsrisiko im Zend-Framework besteht, das jedoch leicht gepatcht werden kann.

Das Problem:

Die potentielle Schwachstelle erlaubt einem Angreifer jede Datei auf dem Server zu lesen, bei der Zend XMLRPC aktiviert ist. Dies beinhaltet auch Passwort- und Konfigurationsdateien, sowie die Datenbanken, sofern sie auf dem selben Rechner liegen.

Die Lösung:

Für die Magento Enterprise und Professional Edition liegt ein Patch zum Download in ihrem Kundenkonto bereit.

Für die kostenfreie Community Edition gehen Sie wie folgt vor:

Für die Versionen 1.4.0.0 bis 1.4.1.1 finden Sie den Patch Hier.

Für die Version 1.4.2.0 gelangen Sie Hier zum gewünschtem Patch.

Und für die Versionen 1.5.0.0 – 1.7.0.1 klicken Sie Hier.

Workaround:
Wenn der Patch nicht gleich angewendet werden kann, so können Sie auf diesem Wege die RPC-Funktionalität temporär ausschalten. Durch diese Methode werden alle Funktionen, die auf die XMLRPC API angewiesen sind, somit nicht weiter funktionieren.

  1. Loggen Sie sich auf dem Magento-Server ein
  2. Wechseln Sie in /app/code/core/Mage/Api/controllers
  3. Öffnen Sie die Datei XmlrpcController.php
  4. Löschen oder kommentieren Sie den Body der Methode public indexAction() aus
  5. Speichern, das war´s

Wenn Sie Erfahrungen in Sachen IDS haben so überwachen Sie das RPC-Interface auf mögliche Angriffe.

Die nächsten Releases von Magento werden den Patch beinhalten.


Magento in Version 1.7.0.1 erschienen

Am 20.06.2012 ist das Update auf Version 1.7.0.1 von der Shopsoftware Magento in der Community Edition erschienen.

Die Neuerungen:

  • Verbesserung des PayPal UserInterface im BackEnd.
  • Funktionalität für verschachtelte Fieldsets in der Systemkonfiguration wurden hinzugefügt.
  • Unterstützung für erweiterte und geteilte Konfigurationsfelder.
  • Es wurde die Möglichkeit eingeplegt Felder von anderen Fieldsets abhängig zu gestalten.
  • Und noch ein paar Bugfixes was die Sicherheit betrifft.

Der Download befindet sich auf dieser Seite.