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));

Store-View relevante Magento Cronjobs

Innerhalb einer Magneto Cron Definition lässt sich leider kein Store-View oder Ähnliches einstellen.
Es besteht jedoch die Möglichkeit, die Definition um eigene Werte zu erweitern und diese dann innerhalb der eigenen Methode zu nutzen.

  • 1. Definiere einen zusätzlichen “node”:
    <crontab>
       <jobs>
           <job_name>
               <schedule>
                   <cron_expr>* * * * * *</cron_expr>     
               </schedule>
               <run>
                   <model>module/observer::myJob</model>
               </run>
               <store>store_code</store>
           </job_name>
       </jobs>
    </crontab>
    
  • 2. Innerhalb der vom Cronjob auszuführende Methode:
    public function myJob($schedule) 
    {
        $jobsRoot = Mage::getConfig()->getNode('crontab/jobs');
        $jobConfig = $jobsRoot->{$schedule->getJobCode()};
        $yourStoreNode = (string) $jobConfig->store;
    
        // Hier kommen nun die Store-View relevanten Dinge
    }
    

Es können nun alle Store-View relevanten Dinge geladen werden.


Trusted-Shop

Um beim Zeitversatz der Truted-Shop Bewertungsmails die Wochenenden und Feiertage zu berücksichtigen sind nur ein paar Anpassungen nötig. Truted-Shop Bewertungsmails