Recommendation im Eigenbau, nicht nur für Magento

veröffentlicht in Consulting,Software Engineering am 16. Jun. 2014 Tags: , ,

Ist der Shop einmal aufgesetzt, fragt sich jeder Shopbetreiber wie man den Umsatz steigern könnte. Dafür gibt es viele Ansatzpunkte. Zum einen könnten durch mehr Werbung mehr Besucher auf die Shopseite gelenkt werden und zum anderen könnte durch eine Optimierung des Shops die Konversionsrate gesteigert werden. Es geht also darum, aus Besuchern Kunden zu machen. Diese beiden Ansatzpunkte sind Prozesse, die jeder Shopbetreiber beherrschen sollte, wenn er seinen Shop voranbringen will.

Ein weiterer Ansatzpunkt, ja sogar die Königsdisziplin, ist den bestehenden Kunden noch zu optimieren, um z.B. den Warenkorbwert zu steigern. Hierbei bietet sich Recommendation-Engine an. Dem Kunden werden so Cross- und Upselling Funktionen zur Verfügung gestellt. Oder wie man das von den großen Portalen kennt: „Kunden, die diesen Artikel gekauft haben, kauften auch:“

Bei Magento kann man Cross- und Upselling für Produkte manuell konfigurieren, was in größeren Shops nicht handelbar wäre. Meist wird dann zu bestehenden Modulen aus Magento-Connect gegriffen. Alternativ fällt die Funktion auch in einem Suchprojekt ab. Beide Lösungen aber haben den Nachteil, dass sie die Informationen über die Produkte und über das Kaufverhalten der Kunden nur oberflächlich verwenden.

recommendation

In Zusammenarbeit mit dem Kunden haben wir deshalb ein eigenes Recommendation für Magento entwickelt. Wir verfügen über das mathematische Know-How um dieses Problem fundiert angehen zu können und der Kunde bringt das Wissen über sein Produkt mit ein. Diese Kombination führt zu einem optimalen Ergebnis. Durch die Steigerung des Umsatzes finanziert sich diese Maßnahme von alleine.

Falls Sie auch ein für Sie optimiertes Produktempfehlungsmodul benötigen, dann nehmen Sie mit uns Kontakt auf. Wir helfen Ihnen gerne weiter!

Sie erreichen uns unter der Telefonnummer +49 (0)4105 5615699 oder per Mail an info@initos.com.

Über Markus Schneider

Als Analytiker und Informatiker ist Markus Schneider Experte für Shop- und ERP-Systeme. Dabei setzt er sein fundiertes Wissen insbesondere im Bereich der Open Source Software ein und kann verschiedene
Anwendungssysteme, z.B. Oxid eSales, OTRS, und Solr Suche, darin integrieren. Auch mit der Onlineshopsoftware Magento kennt sich Herr Schneider bestens aus. Zudem greift er auf gesammelte Erfahrungen unterschiedlicher Systeme wie Sage, SAP und speziell OpenERP zurück.

OpenERP / Odoo Magento Connector: Product import with taxes

veröffentlicht in Consulting,Software Engineering am 6. Jun. 2014 Tags: , ,

Many countries have different tax rates for different kinds of goods and services. For ecommerce applications at least two software components have to know the right taxes for products: the online shop software and the backing ERP system. Once you have configured your products with tax rates correctly in your Magento online web shop, you don’t want to configure them in OpenERP/Odoo again when you have imported them with the OpenERP Magento Connector.
The product import of the connector does not import the taxes because there is no easy mapping between taxes in Magento and the complex tax and accounting functionality of OpenERP/Odoo. But such a mapping can easily be defined in a custom add-on that extends the connector.

Based on the value of tax_class_id-field of the Magento product, we want to fill all four relevant income/expense account and purchase/sale tax rate fields in OpenERP/Odoo that are shown in the following image.

Tax rate and tax account configuration of a product in OpenERP

Tax and account configuration of a product in OpenERP

For a German company with 19% and 7% tax rates, the mapping could be as shown below. If you have not customized your OpenERP Magento Connector yet, you can find a good tutorial at the official homepage of the connector.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
@magento_myversion
class CustomProductImportMapper(ProductImportMapper):
    _model_name = 'magento.product.product'
 
    @mapping
    def tax_class_id(self, record):
        value = record.get('tax_class_id', '-1')
        if value == '1':
            sess = self.session
            tax_ids = sess.search('account.tax',
                [('description', '=', '19% USt'), ('type_tax_use', '=', 'sale'), ('parent_id', '=', False)])
            supplier_tax_ids = sess.search('account.tax',
                [('description', '=', '19% VSt'), ('type_tax_use', '=', 'purchase'), ('parent_id', '=', False)])
            account_income = sess.search('account.account',
                [('code', '=', '440000')])
            account_expense = sess.search('account.account',
                [('code', '=', '540000')])
            result = {'taxes_id': [(6, 0, [tax_ids[0]])],
                      'supplier_taxes_id': [(6, 0, [supplier_tax_ids[0]])],
                      'property_account_income': account_income[0],
                      'property_account_expense': account_expense[0],
                     }
        elif value == '2':
            sess = self.session
            tax_ids = sess.search('account.tax',
                [('description', '=', '7% USt'), ('type_tax_use', '=', 'sale'), ('parent_id', '=', False)])
            supplier_tax_ids = sess.search('account.tax',
                [('description', '=', '7% VSt'), ('type_tax_use', '=', 'purchase'), ('parent_id', '=', False)])
            account_income = sess.search('account.account',
                [('code', '=', '430000')])
            account_expense = sess.search('account.account',
                [('code', '=', '530000')])
            result = {'taxes_id': [(6, 0, [tax_ids[0]])],
                      'supplier_taxes_id': [(6, 0, [supplier_tax_ids[0]])],
                      'property_account_income': account_income[0],
                      'property_account_expense': account_expense[0],
                     }
        else:
            result = {}
        return result

Über Thomas Rehn

Der ausgebildete Mathematiker Thomas Rehn ist begeisterter Problemlöser in C++, Java, Perl, PHP und Python. Seine jahrelange Erfahrung als System-Administrator sorgt für den reibungslosen Betrieb unserer Web-, Datenbank und Applicationserver. Nebenbei ist er Autor von und Contributor zu verschiedener mathematischer Open-Source-Software.

OpenERP/Odoo – Kleine Helfer

veröffentlicht in Software Engineering am 19. Feb. 2014 Tags: ,

In unseren vergangen Blogbeiträgen haben wir bereits einige Beispiele für die Flexibilität von OpenERP/Odoo angeführt. Viele individuelle Anpassungen lassen sich schon durch ganz kleine Module vornehmen. Hier ein paar Kostproben, die das alltägliche Arbeiten mit Kunden, Partnern und Produkten einfacher machen.

Begrüßungsfloskeln

Reports wie Angebote und Rechnungen sowie E-Mails werden in OpenERP/Odoo mittels Vorlagen (Templates) automatisiert erstellt und an den betreffenden Kontakt adressiert. Für Sprachen mit Genus-spezifischer Anrede ist das Problem der Begrüßung damit leider noch nicht ganz gelöst. Beispielsweise wird eine Kundin nicht erfreut sein, wenn sie mit „Sehr geehrter“ angesprochen wird. Außerdem wirkt die Verwendung eines universellen „Hallo“, mit welchem das Problem nicht auftritt, oft unseriös.

Doch die Lösung ist simpel. OpenERP/Odoo erlaubt es standardmäßig Titel zu Kontakten zu pflegen. In unserem Modul title_greetings wurde das Titel-Objekt ganz einfach um ein weiteres Feld für die Begrüßungsfloskel erweitert. So können in Reports und E-Mails auch die Begrüßungsfloskeln automatisiert generiert werden, insofern zuvor konfiguriert wurde, welcher Kunde oder Partner wie anzureden ist. Im alltäglichen Geschäft muss sich also keine Gedanken mehr darüber gemacht werden, Kontakte ungebührlich anzusprechen.

Screenshot von der Listenansicht Partner Kontaktanrede

Neue Spalte Grußformel für die Partner Kontaktanrede.

Erweiterung des Kontaktnamens

Beim Ausfüllen von Formularfeldern werden von OpenERP/Odoo oft Einträge aus der Datenbank vorgeschlagen. Dies ist auch bei Feldern der Fall, in denen ein Kunde oder Partner einzutragen ist. Um Vorschläge zu ermitteln, durchsucht OpenERP/Odoo hierbei nicht nur in den Kontaktnamen nach einer Übereinstimmung, sondern auch in den Namen der übergeordneten Firmenkunden. Die Kundenreferenz wird hierbei jedoch standardmäßig nicht durchsucht. Es ist also zunächst nicht möglich, einen Kunden per Kundennummer in ein Formular einzutragen. Aber gerade dies hat oft einen großen praktischen Nutzen im alltäglichen Geschäft.

Auch hier ist die Lösung recht einfach. Wie jedes Objekt in OpenERP/Odoo hat auch das Kunden-Objekt eine name_get- und eine name_search-Methode. Auf der einen Seite ist die name_get-Methode für den Anzeigenamen eines Objektes, wie etwa in Formularfeldern, verantwortlich. Sie kann so angepasst werden, dass beim Anzeigen eines Kontaktes neben dem eigentlichen Namen auch die Kontaktreferenz dargestellt wird. Auf der anderen Seite steuert die name_search-Methode die Suche über den Namen eines Objektes. Hier kann die Suche so erweitert werden, dass auch Kundenreferenzen beachtet werden. Beides wurde in unserem kleinen Modul partner_extended_name umgesetzt. Neben den angeführten Anpassungen wird durch das Modul der Anzeigename eines Kontaktes außerdem um den Kontakttyp erweitert. So können Rechnungs- und Lieferadresse eines Kontaktes voneinander unterschieden werden, sollte der Kontaktname identisch sein.

Screenshot Angebotserstellung mit Modul partner_extended_name

Auswahl eines Kontakts über die Kundennummer.

Mehrsprachigkeit für Produkte deaktivieren

OpenERP/Odoo unterstützt Mehrsprachigkeit. Jeder Nutzer kann konfigurieren, in welcher Sprache das System angezeigt wird. Das ist jedoch nicht alles. Viele Felder von Objekten sind übersetzbar. Beispielsweise können die Beschreibung und der Name eines Produktes in verschiedenen Sprachen gepflegt werden. Dies ist vor allem dann sehr nützlich, wenn nicht alle Kunden eines Unternehmens die gleiche Sprache sprechen. Angebote, Rechnungen und Lieferscheine können dann automatisch in der jeweiligen Sprache des Kunden erstellt werden. Leider birgt die Verwaltung von Übersetzungen in OpenERP 7 einige Tücken. Gerade wenn es um das Bearbeiten eines übersetzten Feldes geht, ist dies der Fall. Das liegt daran, dass die angezeigte Übersetzung am Benutzer hängt. Einem Benutzer ist es nicht möglich, Übersetzungen aus mehreren Sprachen gleichzeitig zu sehen oder zu bearbeiten. Frühere Versionen von OpenERP/Odoo waren hier mitunter benutzerfreundlicher.

Sollte es ausreichen Produkte in deutscher Sprache zu pflegen, haben wir auch für diese Unannehmlichkeit ein kleines Modul geschrieben. Das Modul product_single_language_de deaktiviert die Übersetzbarkeit von Produktfeldern wie Produktname und Produktbeschreibung. Bei der Installation werden zunächst die deutschen Bezeichnungen direkt am Produkt gespeichert und anschließend alle weiteren Übersetzungen aus der Datenbank entfernt. (Achtung: Dieser Vorgang kann nicht rückgängig gemacht werden.)

Die drei vorgestellten Module finden Sie als OpenERP Apps unter:

oder als Source bei Launchpad.

Falls Sie auch Interesse an OpenERP/Odoo haben oder unsere Expertise für Ihr ERP-Projekt benötigen, dann nehmen Sie mit uns Kontakt auf. Wir helfen Ihnen gerne weiter!

Sie erreichen uns unter der Telefonnummer +49 (0)4105 5615699 oder per Mail an {This email is obscured. Your must have javascript enabled to see it}.

Über Katja Matthes

Frau Matthes ist nach ihrem Studium an der Otto-von-Guericke-Universität zu uns gestoßen und bereichert seitdem unser Team mit ihrem Fachwissen aus der Informatik. Bei unseren Projekten im Bereich Magento und OpenERP geht sie gerne auf die Wünsche unserer Kunden ein und kein SQL-Ausdruck ist ihr zu komplex. Sie ist nicht nur am Morgen mit guter Laune die Erste im Büro, sondern geht in ihrer Freizeit dem Musizieren und Schreiben nach.

Nächste Seite »