Dienstag, 31. März 2015

FavIcon in Odoo Website anzeigen


Wenn man Odoo dazu bringen will das passende FavIcon anzuzeigen, muss man an 2 Stellen Änderungen vornehmen:

Website

In ein Modul muss man das Website Layout wie in dem Beispiel erweitern.

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<template id="myodoo_layout" inherit_id="website.layout" name="MyOdoo layout" priority="17">
    <xpath expr="//head//link" position="after">
        <link rel="shortcut icon" href="/myodoo/static/src/img/favicon.ico" type="image/x-icon"/>
    </xpath>
</template>
</data>
</openerp>

Server


Auf dem Server muss man im Server Pfad

serverpfad/addons/web/static/src/img/favicon.ico

austauschen.

Montag, 30. März 2015

Odoo/OpenERP mittels PageSpeed für den nginx beschleunigen

Odoo/OpenERP benutzt für die Browser-Ausgabe im Standard den Port 8069. Sinnvollerweise ist eine Weiterleitung auf den Port 80 empfehlenswert, da sonst der Anwender neben der Serveradresse den Port angeben muss. Steht der Server im Internet ist eine Weiterleitung auf Port 443 für die SSL Verschlüsselung von Nöten.

Die Anleitungen für Odoo verwenden dazu den "nginx" als vorgeschalteten Proxy. Die einzige Aufgabe, die der nginx macht, ist den Port von 8069 auf 80/443 weiterzuleiten und ggf. ein SSL Zertifikat zu verwalten.

Die Einrichtung habe ich in einem früheren Blogeintrag erklärt:
http://www.software-insel.de/2014/12/openerpodoo-auf-dem-standardport-80.html

Aber der nginx kann noch viel mehr. Insbesondere das Modul PageSpeed von Google ist für den Betrieb der Website und des Shop sehr wichtig.

PageSpeed

Das Modul PageSpeed optimiert den Zugriff auf die Website. Es wurde von Google entwickelt und steht im Quellcode zur Verfügung.

https://developers.google.com/speed/pagespeed/module/download

Leider gibt es für den nginx keine fertiges Installationspaket. Da ich Debian 7 auf meinen Servern einsetzt, kommt noch erschwerend dazu, dass Debian eine veraltete Version von nginx über apt-get bereitstellt.

Also ein eigenes Paket bauen! 

Dazu habe ich im Netz eine sehr gute Anleitung gefunden:

http://www.debiantutorials.com/compile-install-latest-version-nginx-1-6-source-pagespeed-module-ngx_pagespeed/

Für alle, die es nicht selbst bauen können oder wollen, habe ich das Debian Paket hier zum Download bereitgestellt:

wget http://www.openerp24.de/fileadmin/content/dateien/nginx_1.6.2-1~wheezy_amd64_pagespeed.deb 

dpkg -i nginx_1.6.2-1~wheezy_amd64_pagespeed.deb

ggf. den alten nginx deinstallieren. 

apt-get remove nginx nginx-common

Vorher die Konfigurationen wegsichern!

In der nginx.conf muss noch folgender Eintrag ergänzt werden:

##
# PageSpeed
##
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;

Danach nginx neu starten.

Deutliche Steigerung

Auf meinen Server konnte ich eine deutliche Steigerung feststellen. Ausführliche Messwerte gibt es zu einem späteren Zeitpunkt.

Weitere Informationen zur Optimierung hier.


https://www.maxcdn.com/blog/nginx-performance-tips-with-the-google-pagespeed-team/


Dienstag, 24. März 2015

Neuer Ansatz zur Datenmigration zwischen OpenERP 7 oder Fremdsystemen auf Odoo 8

Viele setzen erfolgreich OpenERP 7 ein und spielen mit dem Gedanken auf Odoo 8 zu migrieren.

Dazu gibt es verschiedene Ansätze.

1. Enterprise Service von Odoo SA

Wenn man einen Vertrag bei Odoo SA hat, gibt es die Möglichkeit seine Datenbank dort migrieren zu lassen.
Dazu lädt man eine komplette Datenbank auf den Server von Odoo. Die Daten kann man vorher anonymisieren lassen. Danach werden von Odoo Skripte erstellt, die die Konvertierung durchführen. Als Resultat bekommt man SQL Skripte, mit denen man eine Odoo 8 Datenbank erstellt.

Dies kann in der Realität aber schon mal einige Wochen bzw. Monate dauern. :(

Wenn das Transformationsskript von Odoo erstellt wurde,  testet man das Resultat und spielt dann die Datenbank nochmals ein und stellt danach um.

Leider muss man bei diesem Verfahren Offline-Zeit von einigen Tagen einplanen, resultierend auf der Datenbankgrösse.

2. DoItYourSelf mit ETL Tools

Mittels ETL Tools wie z.B. https://github.com/ingadhoc/odoo-etl kann man selbst die Daten migrieren. Dazu ist natürlich hohes technisches Verständnis nötig, insbesondere muss man die Modul- und Tabellenstruktur kennen.

Das o.g. Tool wird in einem Odoo Server installiert. Es vergleicht dann die v7 Datenbank mit der v8 Datenbank und meldet welche Module ggf. fehlen.

Danach kann man die Daten umkopieren.

3. Permanent Transfer und Parallelbetrieb

Wir haben jetzt ein Tool in c# programmiert. Es ist eine Konsolenanwendung unter Windows. Man richtet sich einen Odoo 8 Server ein und trägt natürlich Sorge, dass alle Module von v7 auch dort vorhanden sind.

Mittels XML-RPC werden von der Anwendung alle Stammdaten (Kunden, Lieferanten, Produkte, Benutzer) sowie die Aufträge aus der v7 in die v8 übertragen.
Da man aber keinen Einfluss auf das Erstellungs- und Änderungsdatum sowie den Benutzer hat, weil dies vom Framework gesetzt wird, haben wir eine kleines Modul geschrieben, das auch INSERT und UPDATE Befehle auf Basis von XML-RPC erlaubt. Danach dem Einfügen ändern wir den Datensatz noch auf das ursprüngliche Datum und Benutzer der v7 Datenbank. So bleibt der historische Zustand erhalten.

Parallelbetrieb

Da die Konsolenanwendung über einen Task täglich oder auch stündlich die Veränderungen überträgt, kann man sich solange Zeit lassen, bis man sich sicher ist, das alles in Odoo 8 läuft.

Ob man auch die Lagerbewegungen oder die Nachrichten übertragt, darüber läßt sich streiten. Manchmal ist es besser nicht alle Altlasten zu übertragen. Aber möglich.

Auch bei Fremdsystemen

Ein ähnliches Verfahren setzen wir übrigens auch bei der Umstellung von Fremdsystemen ein. Konkret haben wir so einen Kunden von BEOSYS auf Odoo umgestellt. Dabei haben wir alle Kunden, Lieferanten, Artikel, Stücklisten, Arbeitspläne und Detailtabellen auf Odoo übertragen. Der Kunde konnte mehrere Wochen parallel testen und ist dann umgestiegen. Dies funktioniert mit jedem System, dass einen Zugriff auf seine Datenbank zulässt, Webservices hat oder permanente Exporte unterstützt.
  

Sonntag, 22. März 2015

Odoo - Parlez-vous allemand - Do you speak German - ¿Hablas alemán >>> Odoo Inhalte auf deutsch

Odoo benutzt wie viele Open Source Programme GetText, um die Oberflächen und Texte in verschiedenen Sprachen darzustellen.

Wenn der Programmierer sich an die Richtlinien gehalten hat, ist das jeweilige Modul in der englischen Sprache für alle Texte und Oberfläche programmiert. Im Ordner "i18n" liegt dann die Übersetzungsdatei.

Damit die Sprache anzeigt wird, muss diese in die Tabelle "ir_translation" geladen werden.
Dies macht man über folgende Maske unter den Einstellungen:

Wichtig:
Danach den Server kurz stoppen und starten, sowie den Browser Cache leeren.

Soweit die Theorie:)

Leider funktioniert dies in der Praxis nicht immer korrekt, vor allem wenn der Objektname, der übersetzt werden soll, nicht eindeutig ist.

Deshalb haben wir jetzt in das Equitania-Paket eine Funktion integriert, die die Objekt beim Installieren bzw. Updaten aus der de.po Datei des Paketes lädt und die Tabelle korrekt füllt.

https://github.com/equitania/odoo-addons/blob/master/equitania/eq_install_func.py

Leitet man sein eigenes Modul von Equitania Modul ab, kann die Funktion auch in eigenen Modulen nutzen.

Donnerstag, 19. März 2015

Odoo Menüleiste lesbarer machen

In meinen Projekten habe ich öfters gehört, dass die Menüleiste von Odoo schwer lesbar wäre.
Gerade auf Beamern kam dies öfters vor.


Das liegt daran, dass im Standard mit Grauwerten arbeitet.


Wir haben dies in unserem Fork abgeändert.Die Menü-Leiste ist generell schwarz mit weisser Schrift. Das selektierte Menü wird hervorgehoben.

Wer also unseren Fork benutzt, bekommt automatisch dieses Look&Feel.
Wer wissen will wo und wie man es anpasst, kann dies in diesem Commit nachvollziehen.