Import von Meldebeständen in Odoo 8

Eine Tabelle erstellen mit folgender Struktur

active product_max_qty product_min_qty logic qty_multiple location_id/id product_id/id
True 1.0 Beschaffe bis Auffüllbestand 1.0 stock.stock_location_stock 1500

Dann bei den Meldebeständen jeweils Sets von je maximal 1500 Artikeln importieren (jedenfalls in meinem Setup unter CentOS).
Product ID ist die Produkt / Datenbank ID. Dies muss für eine eindeutige Zuordnung ausgewählt werden.


Template inkl. Schriftart von Rechnung und Bestellung in Odoo 8 bearbeiten

In Odoo 8 sind die Templates für die Rechnungen und Bestellungen nicht mehr in den Unternehmensdaten gespeichert, sondern als HTML (zusätzlich) zu ändern.

Unter Einstellungen > Benutzer-Interface > Ansichten – suche nach „external“ findet man Header und Footer und kann diese nach QWeb CSS Standardklassen einrichten. Unter Suche nach „document“ findet man die Vorlagen für Rechnung und Bestellbestätigung…

Schriftarten sind dann jeweils im Header und im Template zu hinterlegen mit z.B.

< div style="font-family: Source Sans Pro; font-size: 8px;" class="header"/ >


Schriftart / Font zu Odoo8 unter CentOS hinzufügen

Die gewünschte Schriftart als TTF in den Ordner /usr/share/fonts/TrueType hinterlegen.

Im Ordner selbst den Befehl fc-cache ausführen.

Die Datei /odoo/openerp/report/render/rml2pdf/customfonts.py bearbeiten, dass entweder der Pfad /usr/share/fonts/TrueType zusätzlich geprüft wird oder einen der schon abgefragten Pfade anpassen.

Odoo8 service neu starten. In den Unternehmensdaten unter Reportkonfiguration die Schriftarten neu laden, auswählen und speichern.


Hide Child Products of Grouped, Bundled or Configurable

Mit dieser Extension werden automatisch beim Speichern eines Produktes mit verknüpften Artikeln die Sichtbarkeiten dieser auf einen eingestellten Wert geändert (Nicht sichtbar, Katalog, Suche, Katalog & Suche).
Viele einzelne Produkte sollen im Katalog und in der Suche nur über das Gruppenprodukt sichtbar sein, da hilft diese Extension immens, den Arbeitsaufwand zu verringern und den Katalog rein zu halten.
Es gibt auch die Möglichkeit, den kompletten Katalog zu prüfen und dementsprechend zu ändern.

Download und Anleitung bei Magento-Connect hier.


Custom Product Urlkey

In Magento ist die automatische Vergabe der URL Keys nur mit dem Namen möglich.

Dieses Modul ergänzt die Funktion um alle möglichen Attribute.

Download über Magento-Connect hier

Der Code für Datei Designcomplex_Urlkey.xml in app\etc\modules\

<?xml version="1.0" ?>
<config>
    <modules>
    <Designcomplex_Urlkey>
        <codePool>local</codePool>
        <active>true</active>
    </Designcomplex_Urlkey>
    </modules>
</config>

und config.xml im Pfad app\code\local\Designcomplex\Urlkey\etc\ und der Code ist

<?xml version="1.0"?>
<config>
  <modules>
    <Designcomplex_Urlkey>
      <version>0.1.0</version>
    </Designcomplex_Urlkey>
  </modules>
    <global>
        <models>
            <Designcomplex_Urlkey>
                <class>Designcomplex_Urlkey_Model</class>
            </Designcomplex_Urlkey>
        </models>
  </global>
    <global>
        <events>
            <catalog_product_save_before>
                <observers>
                    <Designcomplex_Urlkey>
                        <type>singleton</type>
                        <class>Designcomplex_Urlkey/observer</class>
                        <method>updateurl</method>
                    </Designcomplex_Urlkey>
                </observers>
            </catalog_product_save_before>
        </events>
    </global>       
</config> 

Dazu kommt die Observer.php im Verzeichnis app\code\local\Designcomplex\Urlkey\Model

<?php
class Designcomplex_Urlkey_Model_Observer{
    public function updateurl($observer){
        //Mage::log('URLKey log', null, 'urlkey.log');
        if($observer->getEvent()->getProduct()){
            $Product=$observer->getEvent()->getProduct();
            $Url='';
            if(!is_null($Product->getData('manufacturer'))):
            $Url=$Url.$Product->getAttributeText('manufacturer').'-';
            endif;
            if(!is_null($Product->getData('name'))):
            $Url=$Url.$Product->getData('name');
            endif;
            //Mage::log('URLKey log'.$Url, null, 'urlkey.log');
            $Product->setData('url_key',$Url);      

        }
    }
}

In der Observer.php sind die unterschiedlichen Attributarten zu beachten. Der Name wird nur mit getData(’name‘) abgerufen und Attribute wie „manufacturer“ und die meisten anderen Text-Attribute werden mit getAttributeText(‚attribute_code‘) abgerufen.