Samstag, 27. Dezember 2014

Odoo-eBook schreiben mit Leanpub

Ein Projekt, das mich schon das ganze Jahr umtreibt, ist die Erstellung eines eBooks für Odoo.

Nachdem ich mehrere Tools und Programme ausprobiert habe, habe ich mich für Leanpub entschieden.

Dort entsteht jetzt gerade mein "Odoo Kochbuch". Ich habe die Feiertage genutzt und bin schon ein gutes Stück vorangekommen.

Es wird kein klassisches Anwender-Handbuch, sondern ein "Kochbuch" für Odoo wie es in der IT zahlreiche Bücher gibt. Ein Nachschlagewerk für die häufigsten Fragen zu Odoo 8.

Leanpub bietet die Möglichkeit den Leser in die Erstellung mit einzubeziehen. So kann ich Interessanten Vorabversionen zur Verfügung stellen.

Mit dem Teil der Odoo Installation bin ich weitgehend fertig. Jetzt kommen die eigentlichen "Rezepte" für Odoo. Teilweise verwende ich Themen, die ich bereits hier gebloggt habe und bereite sie noch etwas auf. Des weiteren kommen Themen, die ich meiner täglichen Arbeit mit Odoo bewältige.

Leanpub

Leanpub setzt bei der Erstellung auf Markdown Subset "Markua".

Wenn man sich an die Vorgehensweise gewöhnt hat, funktioniert es recht ein einfach.
Ich habe meine Dropbox mit Leanpub verbunden. In dem Dropbox-Buch-Ordner liegen jetzt alle Steuerungsdateien, Texte, Grafiken und Skript.

Die Texte schreibe ich mit iA Writer für Mac.
Sobald die Dateien in meiner Dropbox hochgeladen sind, kann ich mein Buch im PDF-, epub- oder Kindle-mobi-Format erzeugen lassen.

Das Ergebnis steht nach der Erzeugung nach wenigen Minuten wieder in meiner Dropbox.

Ich habe die wichtigsten Markdown Tags hier zusammengefasst. Bei Leanpub verfügt über eine sehr gut Dokumentation in Text- und Videoform.

Markua-Tags


Aufteilung in Buchbereiche
{frontmatter} > Einleitung
..
{mainmater} > Hauptbereich
..
{backmater} > Anhang

Neue Seite:
{pagebreak}

Zeilenumbruch
2 Leerzeichen am Zeilenende

Definition in Teile
-# Teil 1
..
-# Teil 2

Definition Kapitel
# Kapitel 1
..
# Kapitel 2
..
## Unterkapitel 2.1
..
### Unter-Unterkapitel 2.1.1


Textformatierungen
*kursiv*
**fett**

Hochstellen:
1^st^
2^nd^

`Text mit fester Laufweite`


Fussnoten
Fussnote [^fussnote1]
[^fussnote1]: Hier den Fussnotentext


Link:
[Linkname](http://url)


Bulletliste
* Eins
* Zwei
* ..


Nummerliste
1. Eins
2. Zwei
3. ..


Grafik
![Grafiktitel](images/grafikname.png)

Quellcode


Variante 1
    Quellcode 4 Leerzeichen einrücken
    damit Leanpub es erkennt

Variante 2
~~~~~~~~
Quellcodeblock
...
Quellcode
~~~~~~~~ (8x~  > ~ beim Mac [alt+n])

Variante 3
Link zum Code 
<<(code/codename.py)
ggf. <<[Titel des Codeblocks](code/codename.py)


Variante 4
`Quellcodeblock`


Tabellen
| Spalte1       | Spalte2      |
|------------------------------|
| text 1        | text 2       |
| text 3        | text 4       |


Hinweis-Boxen
> Textblock eingerückt
> Textblock eingerückt
> ...

A> ##Textblock mit Rahmen Titel
A>
A> Textblock mit Rahmen
A> ...

T> ##Textblock-Tipp Titel
T>
T> Textblock-Tipp
T> ...

W> ##Textblock-Warnung Titel
W> 
W> Textblock-Warnung
W> ...

E> ##Textblock-Fehler Titel
E> 
E> Textblock-Fehler
E> ...

I> ##Textblock-Info Titel
I> 
I> Textblock-Info
I> ...

Q> ##Textblock-Frage Titel
Q> 
Q> Textblock-Frage
Q> ...

D> ##Textblock-Diskussion Titel
D> 
D> Textblock-Diskussion
D> ...

X> ##Textblock-Übung Titel
X> 
X> Textblock-Übung
X> ...

{icon=calculator}
G> ##Textblock-Freie Grafik Titel
G> 
G> Textblock-Freie Grafik von 
G> [fontawesome](http://fontawesome.io/icons/)
G> ...



Querverweis
{#querverweisname}
Querverweistext

Im Text:
Bitte drücken Sie [hier](#querverweisname) um...



Montag, 15. Dezember 2014

Das Geheimnis der Mehrsprachigkeit bei OpenERP/Odoo und die "Problemchen" damit...

Prinzipiell ist Odoo/OpenERP auf Mehrsprachigkeit ausgelegt.

Den Odoo-Modulen liegt eine Übersetzungsdatei für die jeweilige Sprache bei:

Beispiel de.po:
..
#. module: equitania
#: model:ir.model,name:equitania.model_res_company
msgid "Companies"
msgstr "Unternehmen"
..
Für jedes zu übersetzende Wort in Englisch wird die Übersetzung in Deutsch hinterlegt.
Dabei wird der Modulname und das Model angegeben.

Wird ein Modul installiert wird dies ausgelesen und in die Tabelle "ir_translation" gespeichert.
Basierend auf der Anwender oder Kundensprache wird die passende Übersetzung gezogen.

Man kann Odoo auf dazu veranlassen alle Sprachdateien nochmals auszulesen:





























Soweit die Theorie!


Wird aber die Tabelle "ir_translation" nicht korrekt gefüllt.

Ich habe mal ein Beispiel aufbereitet. In der "ir_translation" steht die Übersetzung. Im Feld "res_id" steht der Bezug auf Objekt.

SELECT irt.*,
(SELECT iuv."name" FROM ir_ui_view iuv WHERE iuv."id"=irt.res_id) AS refer_object
FROM ir_translation irt 
WHERE irt.res_id = 1749

ORDER BY irt.src, irt.lang











Felder und ihre Bedeutung:

id = Auto-Field wird von der Datenbank gesetzt
lang = Sprachpaket im Beispiel de_DE = deutsch für Deutschland de_AT wäre deutsch für Österreich
src = Welcher englische Begriff soll übersetzt werden
name = Welcher Bereich
res_id = Verweis auf das Objekt in Tabelle "ir_ui_view"
module = Für Odoo-Module
state = Status z.B. "translated"
value = Übersetzung des Feldes "src"
type = Art der Objektes z.B. View, Ode, Field etc.
comments = Kommentar

Über die Oberfläche von Odoo kommt man auch an die Übersetzung:





















Lösung bei Übersetzungsfehlern

Wenn also ein Übersetzung nicht angezeigt wird, kann hier nachgeschaut werden und ggf. der fehlende Eintrag nachgebessert werden. Allerdings ist dieser nach dem nächsten "-u all" / Update der Datenbank wieder weg.

Deshalb schreiben wir gerade eine zentrale Funktion für unser Installationsfunktionen https://github.com/equitania/odoo-addons/blob/master/equitania/eq_install_func.py  die fehlende Einträge automatisch nachholt.

Sonntag, 14. Dezember 2014

OpenERP/Odoo auf dem Standardport 80 betreiben

Heute zeige ich wie man seinen Odoo-Server auf dem Port 80 betreiben kann, d.h. man muss hinter der IP-Adresse nicht mehr Port 8069 angeben.

Beispiel: 
http://192.168.0.10 statt http://192.168.0.10:8069 
oder
http://myodoo.de statt http://myodoo.de:8069 

Dazu installiert man den Webserver "nginx" als Proxy.

Als root Benutzer:
$ sudo su (ubuntu)
$ apt-get update
$ apt-get install nginx

Danach editieren wir die Default-Datei mittels
$ nano /etc/nginx/sites-available/default
und ersetzen den Inhalt wie folgt:
server {
        listen 80;
        server_name localhost;
    client_max_body_size 8192m;

    access_log    /var/log/nginx/www-access.log;
    error_log     /var/log/nginx/www-error.log;

location / {
        # proxy_set_header   X-OpenERP-dbfilter dbname;
        proxy_pass    http://127.0.0.1:8069;

        # increase proxy buffer to handle some OpenERP web requests
        proxy_read_timeout 600;
        proxy_connect_timeout 600;
        client_header_timeout 600;
        client_body_timeout 600;

        send_timeout 600;

    }
}
Jetzt ergänzen wir die in der odoo-server.conf folgende Zeilen:
xmlrpc_interface = 127.0.0.1 
netrpc_interface = 127.0.0.1

Jetzt stoppen wir Odoo und nginx und starten bei Dienste neu:
$ /etc/init.d/openerp-server stop
$ /etc/init.d/nginx stop
$ /etc/init.d/openerp-server start
$ /etc/init.d/nginx start

Jetzt können Sie Ihren Server direkt ansprechen. Mit nginx verschlüsselt man übrigens auch sein Odoo System mit einem SSL Zertifikat oder filtert gewisse Datenbanken.

Dazu vielleicht in einem späteren Blogeintrag.

Montag, 1. Dezember 2014

Einrichtung des Dokumentenverwaltungssystem von Odoo/OpenERP

Wenn man das Modul "document" installiert, muss man noch einige Details beachten!























Nach der Installation muss man unter Systemparameter den Eintrag "ir_attachment.location" mit dem Wert "file:///filestore" setzen.

































Gibt man nichts an, speichert Odoo die Daten unter "~/.local/share/Odoo/filestore/databasename".
Dies kann man ändern, in dem man den Pfad in der odoo-server.config setzt wie z.B. "data_dir=/opt/odoo/odoo-dms"

Wichtig: 
Der odoo-user muss Schreibrechte darauf haben.

Danach kann man zu den meisten Objekten (Kunden, Aufträge, Produkte..) Dateien anhängen.