Das Odoo Kochbuch
Das Odoo Kochbuch
Martin Schmid
Buy on Leanpub

Inhaltsverzeichnis

Über dieses Buch

Dieses Buch soll kein komplettes Handbuch sein, sondern eine Sammlung von Rezepten für das tägliche Arbeiten mit dem Open Source ERP System Odoo früher auch als OpenERP bekannt.

Das Benutzerverhalten hat sich sehr geändert. Das merke ich an mir selbst. Früher habe ich alle Fachbücher in der Regel von vorne bis hinten durchgearbeitet. Heute im Informationszeitalter „googlet“ man sich seine Informationen mit mehr oder weniger großem Erfolg zusammen. Deshalb baue ich dieses Buch eher wie ein Koch- oder Rezeptbuch auf, in dem man das findet, was man zum Thema Odoo gerade sucht.

Historie

Version 1.2.2 - 5. November 2017

  • Korrekturen im Bereich der Docker Installation
  • Überarbeitung nginx auf Version 1.12.2 inkl. http2
  • Kleine Korrekturen

Version 1.2.1 - 2. Oktober 2017

  • Korrekturen im Bereich der Docker Installation
  • Neue Musterdatenbank
  • Neues MyOdoo 10 Images 171001
  • Überarbeitung Docker Bereich Synology für MyOdoo 10

Version 1.2.0 - September 2017

  • Fokus auf Odoo v10 gesetzt
  • Überarbeitung Open Source insbesondere LGPL
  • Docker Kapitel um Bereinigung von Volumen / Images erweitert
  • nginx Anpassungen für Odoo 10
  • Geschwindigkeitsoptimierungen insbesondere mit Workern

Version 1.1.1 - 20. Februar 2017

  • Kleinere Rechtschreibfehler

Version 1.1.0 - Februar 2017

  • Docker (Linux, Windows, macOS, Synology)
  • Skripte aktualisiert
  • Update Prozess besser dokumentiert
  • Modul: MyOdoo Backend Theme v8
  • Modul: Web Invalid Tab
  • Modul: CKEditor 4.x widget
  • Modul: Collapsible menu

Version 1.0.3 - November 2016

  • Docker Installation Linux
  • Anpassungen der Skripte
  • Optimierung nginx & PostgreSQL
  • Kleinere Fehlerkorrekturen

Version 1.0.2 - Juni 2016

  • Anpassungen im Bereich nginx und PostgreSQL
  • Anpassungen der Skripte
  • Kleinere Fehlerkorrekturen

Version 1.0.1 - Mai 2016

  • Kleinere Fehlerkorrekturen

Version 1.0.0 - April 2016

  • Veröffentlichung der ersten Version

Updates

Das Buch wird ständig erweitert. Ziel ist es, dass neue Rezepte für die aktuelle Version nach und nach hinzugefügt werden. In der Regel 6-9 Monate nach Erscheinungsdatum, wenn ein passabler Stand erreicht ist. Käufer bekommen automatisch ein Update des Buches zur Verfügung gestellt.

Deutschsprachige Raum im Fokus

Das Buch hat den deutschsprachigen Anwender D-A-CH (Deutschland, Österreich & Schweiz) im Fokus.

Version 10 jetzt als Grundlage

Als Basis wird die Version 10 vorausgesetzt. Die meisten Rezepte gehen aber auch schon mit der Version 8 oder 9. Teilweise sind die Rezepte auch bei der Version 7 nutzbar. Anfangs habe ich noch die manuelle Installation erklärt, mit Docker geht der Start und spätere aber viel einfacher.

Markenschutz

Die in diesem Werk genutzten Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. können auch ohne besondere Kennzeichnung Marken sein und als solche den gesetzlichen Bestimmungen unterliegen.

Haftungsausschluss

Ungeachtet der Sorgfalt, die auf die Erstellung von Text, Abbildungen und Programmen verwendet wurde, kann der Autor & Herausgeber nicht für mögliche Fehler und deren Folgen eine juristische Verantwortung oder irgendeine Haftung übernehmen.

Rechtliche Hinweise

In diesem Abschnitt finden Sie die ausführlichen und rechtlich verbindlichen Nutzungsbedingungen für dieses E-Book.

Das vorliegende Werk ist in all seinen Teilen urheberrechtlich geschützt. Alle Nutzungs- und Verwertungsrechte liegen beim Autor. Insbesondere das Recht der Vervielfältigung und Verbreitung, sei es in gedruckter oder in elektronischer Form. © Martin Schmid, Knittlingen 2016-2017 - Self Publishing

Ihre Rechte als Nutzer

Sie sind berechtigt, dieses E-Book ausschließlich für persönliche Zwecke zu nutzen. Insbesondere sind Sie berechtigt, das E-Book für Ihren eigenen Gebrauch auszudrucken oder eine Kopie herzustellen, sofern Sie diese Kopie auf einem von Ihnen alleine und persönlich genutzten Endgerät speichern. Zu anderen oder weitergehenden Nutzungen und Verwertungen sind Sie nicht berechtigt.

So ist es insbesondere unzulässig, eine elektronische oder gedruckte Kopie an Dritte weiterzugeben. Unzulässig und nicht erlaubt ist des Weiteren, das E-Book im Internet, in Intranets oder auf andere Weise zu verbreiten oder Dritten zur Verfügung zu stellen. Eine öffentliche Wiedergabe oder sonstige Weiterveröffentlichung und jegliche den persönlichen Gebrauch übersteigende Vervielfältigung des E-Books ist ausdrücklich untersagt. Das vorstehend Gesagte gilt nicht nur für das E-Book insgesamt, sondern auch für seine Teile (z.B. Grafiken, Fotos, Tabellen, Textabschnitte). Urheberrechtsvermerke, Markenzeichen und andere Rechtsvorbehalte dürfen aus dem E-Book nicht entfernt werden, auch nicht das digitale Wasserzeichen.

Symbole

In dem Buch werde ich bestimmte Bereiche mit unterschiedlichen Symbolen kennzeichnen, um auf wichtige Aspekte hinzuweisen.

Autor

Meine Vita

Meine ersten digitalen Schritte machte ich auf einem Apple IIe, Commodore VC 20 und den anderen „Home Computern“ der Achtziger. Der erste eigene Computer war ein Schneider CPC 464, den ich mit Lötkolben und handwerklichem Geschick erweiterte. Damit brachte ich mir auch das Programmieren bei.

Nach Basic von vielen „Peeks & Pokes“ folgt meine erste Hochsprache mit Turbo Pascal 3 unter CP/M auf meinem CPC 464. Ich habe anfangs ganze 8 KB Arbeitsspeicher zur Verfügung gehabt. Nach vielen Bastelstunden waren es später 24 KB! Dies kann man sich heute gar nicht mehr vorstellen und es ist ja auch über 30 Jahre her. Da Apple Macintosh Computer in dieser Zeit noch viel zu teuer waren, gab es damals unter den Nerds (die so aber noch niemand nannte) zwei Lager von Programmierern. Commodore Amiga oder Atari ST. Ich zählte mich zu dem Amiga Lager und programmierte mit KickPascal und „Modula 2“.

1988 fing ich an meine erste Datenbank-Anwendung unter Superbase zu programmieren, aus der sich im Laufe der Zeit eine kleine Warenwirtschaft für die Schmuckbranche entwickelte. Nachdem Commodore leider den Laden dicht machen musste, stieg ich zähneknirschend 1993 auf Windows 3.11 um und programmierte mein Warenwirtschaftssystem komplett neu unter Borland Paradox.

1995 kam mit Delphi 1 endlich wieder ein Entwicklungssystem mit einem „objektorientierten Pascal-Dialekt“ heraus. In diesem Jahr hängte ich auch meinem ursprünglichen Beruf in der Schmuck- und Edelsteinbranche an den Nagel und machte mein Hobby zum Beruf und gründete das „Equitania Programmierteam, dem ich bis heute als geschäftsführender Gesellschafter unter der Firmierung „Equitania Software GmbH“ vorstehe.

Schwerpunkt waren anfangs Warenwirtschaftssysteme und Bilddatenbanken für die Schmuckbranche. Später kamen andere Branchen hinzu. Neben den eigenen Entwicklungen programmieren und betreuen wir heute ERP Systeme anderer Hersteller für mittelständische Unternehmen.

Bis Delphi 7 habe ich aktiv programmiert. Wir sind dann dem Trend gefolgt und auf Visual Studio und C# umgestiegen. Mein Tätigkeitsfeld hat sich von der Programmierung mehr in Richtung Beratung verlagert. Seit 2005 bin ich auf Apple OS X unterwegs. Mit Delphi XE kann ich endlich wieder mehr mit meiner geliebten „Mutterprogrammiersprache“ Pascal „coden“, wenn ich Zeit dazu finde. Aber einige Apps für Odoo sind schon in einem Prototypen Stadium. Aber wie Sie diesem Buch entnehmen werden, schreibe ich sehr viele Skripte in “Bash” und Python.

Meine Lektoren

Einen besonderen Dank geht an Julia Eberle, Uwe Kinkel & Brigitte Grausam für das Korrekturlesen.

Einleitung

Odoo

Was ist Odoo?

Ich denke, dass Sie nicht durch Zufall auf dieses Buch gestoßen sind, sondern weil Sie Informationen für das Open Source ERP System auf Deutsch gesucht haben.

Odoo hat schon einige Namen und Lizenzänderungen in den letzten 10 Jahren durchlaufen. Von Tiny ERP bis Odoo liegen 10 Jahre.

Was ist denn jetzt Odoo?

Odoo ist ein inzwischen ERP, Webseiten und eCommerce Framework mit modularem Aufbau. Basis ist die populäre Programmiersprache Python. Seit Jahren ist Python in dem Tiobe-Index in der Top 10 zu finden. Sie werden sich jetzt fragen, was Ihnen diese Information sagen soll. Ganz einfach: Je populärer eine Sprache, desto einfach ist es Programmierer dafür zu finden. Das trägt zur Verbreitung und Unterstützung eines Systems bei. Vor allem in Indien gibt es sehr viele Softwarefirmen, die ihre Dienste und fertige Module für Odoo anbieten. Neben Python kommt XML und HTML5 (HTML, CSS und JavaScript) zum Einsatz. Seit Version 8 gekoppelt mit einem Reponsive Design Framework Bootstrap, das ursprünglich von Twitter entwickelt wurde. Die Daten werden in der Open Source Datenbank PostgreSQL gespeichert.

Die Zutaten stimmen schon mal. Alle Kernkomponenten sind Open Source. Aber der wichtigste Faktor fehlt noch - die Community.

Mit der „Odoo Community Association“ kurz OCA ist ein starker Gegenpart zu den kommerziellen Interessen der Odoo S.A. entstanden. Von der OCA gibt es hunderte von kostenlosen Modulen für Odoo unter Github zum Download. Hierzu später mehr unter dem Kapitel nützliche Module.

Der Kern von Odoo bietet die Möglichkeit das System dynamisch zu erweitern. So können die Standard Module für CRM, LVS, ERP und eCommerce angepasst oder erweitert oder es können komplett eigene Ideen umgesetzt werden.

Im Kern finden sich Komponenten für Datenbankzugriff, Oberflächengestaltung, Benutzerverwaltung, Druck, Webservices oder Testing. Keine Angst! Dies wird kein Programmiererhandbuch. Seit der Version 8 wird die Dokumentation für Entwickler immer besser. Wer sich dafür interessiert findet beim Hersteller viele Informationen. Sehr zu empfehlen ist auch das Entwicklerhandbuch von Daniel Reis

Inzwischen gibt es über 5.000 Module für Odoo. Da das System Open Source ist, fällt es schwer die genaue Anzahl der Anwender zu ermitteln. Odoo selbst spricht von mehr als 2 Millionen Anwendern weltweit und über 2.000 Programmierern. Auch sind einige Bücher für Odoo inzwischen erschienen. Leider wie fast alle Informationen ausschließlich in Englisch. Wer lieber Videos schaut, dem würde ich die Website OdooClass.com ans Herz legen. Teilweise etwas langatmig, aber sehr gut erklärt.

Nur mit der deutschen Dokumentation hapert es noch etwas. Aber dies will ich mit diesem Buch ja ändern. ;)

Zielgruppe dieses Buches

Dieses Buch widmet sich ausschließlich der Community Version von Odoo. Es zeigt Ihnen wie Sie Odoo installieren, die Grundeinstellungen vornehmen und Ihren ersten Auftrag damit erzeugen können. Dieses Buch geht nicht auf jeden Bereich von Odoo ein, sondern es befasst sich im Wesentlichen mit dem Grundsystem im Handelsumfeld. Je nachdem wie ich Zeit finde, werde ich separate Bücher für Fertigung und Lager schreiben. Das weitere Vorgehen hängt natürlich auch vom Feedback zum Buch und den Verkaufszahlen ab.

Aber das Buch bietet auch eine Sammlung von Rezepten für Anwender und System-Administratoren, die ich in den letzten Jahren gesammelt habe.

Jetzt will ich Ihnen einige Informationen zur Historie geben, die Sie unter Wikipedia ausführlich nachlesen können.

Mit Tiny ERP begann alles

Im Jahr 2005 schuf der belgische Entwickler Fabian Pinckaers das „kleine ERP“ mit dem Namen „Tiny ERP“. Bis zur Version 4 folgten recht kurze Release Zyklen bis zum Jahr 2006. Dann wurde es etwas ruhig um das System. Es wurde aber weiter entwickelt. Diese Version wurde unter der GNU GPL veröffentlich.

OpenERP

Im April 2009 erschien die Version 5 und gleichzeitig der Name von „Tiny ERP“ auf „OpenERP“ geändert. Mit der Version 6.0 kam der erste Web Client dazu und seitdem gibt es jedes Jahr ein neues Release und die Verbreitung vor allem im frankophilen Sprachraum begann. Aber auch in Afrika, im spanischen und lateinamerikanischen Sprachraum sowie in Indien und Pazifikraum wurde das System immer beliebter. Mit der Version 6.0 wurde die Lizenz auf GNU APGL geändert.

Der große Durchbruch kam mit der Version 7 im Jahr 2012. Die neu konzipierte Browseroberfläche war damals ein echter Meilenstein für ERP-Systeme hinsichtlich der Benutzerfreundlichkeit und des Bedienkonzepts. Bereits für die Version 7 gab es schon tausende von Modulen. Aber auch die Version 6.1 wird bei vielen Firmen noch betrieben.

In der Version 7 gab es eine einen regelrechten Wettstreit der Report Generatoren. Die früheren Versionen basierten auf Open Office, d.h. man konnte seine Auftrags- und Rechnungsformulare mit Open Office gestalten und anpassen und sie wurden auf den Server geladen und dort mit Livedaten gefüllt. Jedoch war die Gestaltung stark eingeschränkt. Deshalb entwickelte der Odoo Partner camptocamp aus der Schweiz eine HTML basierte Report Engine auf Webkit. Dann gab es noch eine Report Engine Namens „Aero Report“. Sowie Anbindungen an die javabasierten Reportgeneratoren von Pentaho und Jasper. Mit der Version 8 hat sich dies aber größtenteils wieder bereinigt, was auch ein Problem beim Updaten sein kann.

Apropos Update. Tja, das ist leider nicht so einfach, da Odoo einen recht radikalen Weg geht. Die neuen Versionen nehmen wenig Rücksicht auf die älteren und ändern viele Tabellenstrukturen, so dass man nicht einfach umstellen kann.

Das liegt zum Teil auch am Geschäftsmodell von Odoo S.A. selbst. Von Open Source allein kann man nicht leben. Deshalb werden seit mehreren Jahren „Enterprise“ Dienste angeboten. Diese beinhalten neben einem englischen Support auch die Transformation der Daten von der jeweiligen Version auf die nächsthöhere Folgeversion.

Ob dies gelingt, hängt im Wesentlichen von dem Grad der eigenen Anpassungen ab.
Wir haben inzwischen ein Framework entwickelt, dass die wesentlichen Inhalte von einem Altsystem in eine aktuelle Odoo Version mittels WEB-API kopiert. Damit lassen sich auch gleich Altlasten beseitigen.

Odoo

Mit der Version 8 wurde der Name wiederum geändert, da man mit der Einführung von LVS, CMS und Webshop der Meinung war, dass „OpenERP“ nicht alles wiedergeben würde, was Odoo jetzt könne. Da inzwischen Investoren im Boot sind, könnte man auch „Böses glauben“. Tatsache ist, dass die Version 8 viele Neuerungen mit sich brachte. Nicht nur die Websites lassen sich mit der Template Engine QWeb gestalten, sondern auch die Reports. Auch die API wurde komplett überarbeitet. Viele „Altlasten“ wie Open Office Report oder alte API Aufrufe wurden abgekündigt und stehen mit der Version 9 nicht mehr zur Verfügung.

Version 9

Sie werden sich jetzt fragen, warum schreibt er dieses Buch nicht gleich für die Version 9?

Die Erfahrung hat gezeigt, dass neue Odoo Versionen „Bananen-Software“ sind, d.h. die reifen meist beim Kunden. ;)

Der gravierende Unterschied ist aber die Änderung der GPL auf GNU LGLP v3. Später im Buch gehe ich etwas näher auf das Thema Open Source und GPL ein. Aber soviel sei gesagt. Das „L“ steht für „Lesser“ was bekanntlich weniger heisst. Will sagen, nicht alles muss Open Source sein. Unter AGPL ist es zwingend erforderlich, dass alles im Quellcode auf dem Kundenserver vorhanden sein muss. Auf den Odoo Tagen 2015 wurden folgendes verkündet: Es gibt 3 Versionen eine Community, eine SaaS und Enterprise Version. Die Community hat nicht alle Features der Enterprise.

Die Ausrichtung der Version geht aber eindeutig Richtung USA und Kanada. Die Erweiterungen der Enterprise Version zielen in diese Richtung. Gerade die Buchhaltung wurde entsprechend angepasst. Aber dies bringt einem deutschen Unternehmen recht wenig. Auch müssen die Exporte zu DATEV noch entsprechend angepasst werden.

Noch einige Sätze zur Finanzbuchhaltung generell. Odoo ist eine international einsetzbare Software. Entsprechend hält sich die Finanzbuchhaltung an international geltende Standards. Dass diese nicht immer mit unserem komplizierten Steuerrecht in Deutschland zusammenpassen, sollte jedem klar sein. In unseren Kundenprojekten empfehlen wir Odoo als OP-Buchhaltung einzusetzen und die Daten über eine DATEV-Schnittstelle an die entsprechende Bilanzierungssoftware zu exportieren.

Odoo 10

Wie viele andere Entwickler haben wir erst mal abgewartet, was sich bei Odoo mit der Version 9 so tut. Viele Module wurden gar nicht zur v9 portiert. Vor allem nicht die Vielzahl der Module der Version 8 insbesondere im OCA Bereich hat.

Mit der v10 hat sich aber hier einiges getan. Deshalb haben wir unser grösstes Modul “equitania” ab Mai 2017 auf v10 portiert und in viele kleine Einzelmodule unterteilt, was die Pflege und Weiterentwicklung erheblich vereinfach. Details zu den neuen Modulen in unserem WIKI

Alle Module, auf die ich in diesem Buch hinweise, sind Open Source und können im Internet eingesehen und heruntergeladen werden. Jetzt schauen wir uns das Thema Open Source genauer an.

Open Source: Geben und Nehmen

Wenn Sie also eigene Module entwickelt haben, dann stellen Sie diese auch wieder zur Verfügung! Besser noch Sie werden Mitglied bei der Odoo Community Association.

Mit Github ist das recht einfach und kostenlos möglich.

Soll keine Eigenwerbung sein

Ich baue das Buch auf meinem eigenen Fork auf. Dieser entspricht zu 99.9 % dem Original Branch 8 bzw. 10, nur habe ich alle Sprachen außer Deutsch und Englisch entfernt und die deutschen Übersetzungen maßgeblich verbessert. Ferner beinhaltet der Form nur die deutsche, österreichische und schweizer Finanzkontenpläne.
Ich weiß nicht, ob es daran liegt, dass „viele Köche“ manchmal den Brei verderben oder die Basisübersetzungen mit Google gemacht worden sind oder von Leuten, die von Betriebswirtschaft wenig Ahnung haben. Ich will in keinster Weise deren Arbeit schmälern. Aber teilweise waren die Übersetzungen etwas „hanebüchen“. Zum anderen haben wir einige Fehler aus dem System entfernt.

Sie werden jetzt sagen. Dann mach doch einen „Pull Request“!

Bei Open Source ist es manchmal wie in der Politik. Da sitzen einige Leute an den Schaltstellen, die meinen, dass es gut ist wie es ist ;)

Auf unsere Korrekturen gehe ich später näher ein. Es steht aber jedem frei, den Fork zu verwenden, den er will.

  • myodoo-server (v8) bzw. myodoo-server-10 (v10) - von mir gepflegter Fork für den deutschsprachigen Raum (D-A-CH)
  • odoo-addons (v8) bzw. myodoo-addons-v10 - von Equitania entwickelte Module
  • myodoo-docker - Dockerfiles und Skripte für den Betrieb von Odoo auf Basis von Docker
  • myodoo-pos - Skripte und Bibliotheken für die Einrichtung einer Kasse für Odoo basierend auf dem MyOdoo Branch
  • odoo-third-party-modules - Nützliche Module von Drittanbietern, die ich ins Deutsche übersetzt habe
  • oca-modules bzw. myodoo-oca-v10 - Nützliche Module von der Odoo Community Association, die ich ins Deutsche übersetzt habe
  • odoo-pentaho - Module für den Report Generator Pentaho, der insbesondere mittels Docker verwendet werden kann

bereit.

Grundlage für dieses Buch

Als ich begonnen habe mich mit Odoo, damals hieß es noch OpenERP, zu beschäftigen habe ich sehr viel Zeit damit verbracht mir die Informationen zusammen zu suchen und musste auch viel selbst ausprobieren.

Dieses Buch ist nicht als komplettes Handbuch für Odoo gedacht. Dazu müsste es mehrere 1.000 Seiten lang werden. Vielmehr ist es als eine Art Nachschlagewerk für die Arbeit und den Betrieb des Open Source ERP Systems. Es konzentrierte sich Anfangs auf die Version 8. Die „Rezepte“ können aber teilweise auch für die Version 7. Im Sommer 2017 stelle ich den Fokus langsam auf Version 10 um, nach dem wir alle unseren wesentlichen Module von v8 auf v10 portiert haben.

Ein Grundverständnis für die betriebswirtschaftlichen Abläufe in einem Unternehmen setze ich als Basis voraus. Wer die „Rezepte“ im Bereich des Betriebes von Odoo verstehen will, sollte über eine Affinität für Computer insbesondere Linux verfügen.

Ich bemühe mich aber, die Rezepte so “vorzukochen”, dass auch Laien in die Lage versetzt werden, diese per “Copy&Paste” nachkochen zu können. Dabei müssen nicht alle Details verstanden werden.

Außerdem gehe ich ab 2017 nur noch auf den Einsatz unter Docker ein, wobei die alten Anleitungen zur direkten Installation erhalten bleiben.

Wenn man so will “Deckel auf - heiß Wasser drauf - nach …“ :)

Ich wünsche viel Erfolg beim Benutzen.

Gliederung

Das Buch ist in 6 Bereiche untergliedert:

  • Installation
  • Einführung
  • Konfiguration
  • Nützliche Module
  • Rezepte für Anwender
  • Rezepte für System-Administratoren

Ausblick

Ich sehe das Buch als eine „unendliche Geschichte“, die ich basierend aus meinen täglichen Erfahrungen weiterschreiben werde. Käufer dieses Buches über Leanpub.com bekommen, ähnlich wie bei einer App, Updates zur Verfügung gestellt. Dank den Möglichkeiten des „Self-Publishings“ werde ich das Buch auch unter Amazon als Kindle Version publizieren. Ob dort auch Erweiterungen, Anpassungen und Überarbeitungen automatisch bereitgestellt werden können, kann ich zum jetzigen Zeitpunkt noch nicht sagen.

Anwenderhandbücher

Diese Buch ist recht technisch aufgebaut. Oftmals fragen Leser und Kunden nach einem einfacheren Einstieg. Deshalb plane ich 2017/2018 noch weitere Bücher für den schnellen Einstieg unter v10 und den Bereich Fertigung.

Bitte beachten Sie auch unser WIKI

Open Source und Odoo

Open Source

Open Source und quelloffen nennt man Werke, deren Lizenzbestimmungen besagen, dass man mit deren Empfang auch den dazugehörigen Quelltext empfängt. Open-Source-Software (kurz OSS) steht unter einer der von der Open Source Initiative (OSI) anerkannten Lizenzen. Diese Organisation stützt sich bei ihrer Bewertung auf die Kriterien der Open Source Definition. Unter anderem beinhalten diese Lizenzen, dass die Software frei kopiert, modifiziert und verändert wie unverändert weiterverbreitet werden darf. Open Source Software ist in der rein funktionellen Definition fast deckungsgleich mit der Freie-Software-Definition.Der Unterschied liegt in den vertretenen Werten: bei Freier Software ist das Grundprinzip die Freiheit der Nutzer (Freiheit über: Kontrolle der Software, Kooperation mit Anderen — angesehen als ein wichtiges soziales, politisches und ethisches Anliegen), während es bei Open Source (Verbunden mit der Open Source Initiative) nur die Hervorhebung des praktischen Nutzens und der Entwicklungsmethode ist. Quelle:

GNU Affero General Public License

Die GNU Affero General Public License, kurz AGPL, ist eine von der General Public License (GPL) abgeleitete Lizenz für Freie Software mit Copyleft. Sie wurde in ihrer ursprünglichen Form von der Firma Affero gemeinsam mit der Free Software Foundation (FSF) entworfen, um die Freiheiten des Benutzers auch für Software zu schützen, die als Dienst über ein Netzwerk zur Verfügung gestellt, aber nicht im eigentlichen Sinn weitergegeben wird. Dies wird durch die GPL nicht gewährleistet. Der Abschnitt 13 verlangt, dass der Quelltext des unter AGPL lizenzierten Werkes allen Benutzern des Werkes im Netzwerk verfügbar gemacht werden muss. Beispielsweise ist so ein Werk ein Content-Management-System, das auf einem Server im Internet läuft. Die Clients haben keinen direkten Zugriff auf die ausführbaren Dateien der Anwendung, sondern nur auf deren Ausgabe, daher trifft die Verpflichtung zur Weitergabe des Quelltextes der GPL nicht zu. Die Verfügbarkeit des Quelltextes für alle Benutzer wird in solchen Fällen durch die AGPL gesichert. Quelle:

GNU Lesser General Public License

GNU Lesser General Public License oder LGPL (ehemals GNU Library General Public License) ist eine von der Free Software Foundation (FSF) entwickelte Lizenz für Freie Software. Die LGPL erlaubt den Entwicklern und Firmen das Verwenden und Einbinden von LGPL-Software in eigene (sogar proprietäre) Software, ohne durch ein starkes Copyleft gezwungen zu sein, den Quellcode der eigenen Software-Teile offenzulegen. Lediglich das Ändern der LGPL-Software-Teile muss Endnutzern ermöglicht werden: Deshalb werden im Falle von proprietärer Software die LGPL-Teile meist in Form einer dynamischen Programmbibliothek (z. B. DLL) verwendet, um so die notwendige Trennung zwischen proprietären und quelloffenen LGPL-Teilen zu ermöglichen.

Die LGPL wurde somit als Kompromiss zwischen dem starken Copyleft der GNU General Public License (GPL) und freizügigerer Lizenzen wie der BSD-Lizenzen und der MIT-Lizenz entwickelt. Das Wort „Lesser“ (im Sinne von „weniger“) im Namen der Lizenz soll zum Ausdruck bringen, dass LGPL den Endnutzern nicht vollkommene Freiheit in der Verwendung von Software garantieren kann, da nur die LGPL-Teile, nicht aber etwaige proprietäre Software-Teile den Endnutzern die Freiheit auf Modifizierung gewähren.

Die LGPL wurde im Jahr 1991 veröffentlicht und nahm gleich die Versionsnummer 2 an, um zahlenmäßig mit der GPL-Version 2 übereinzustimmen. Im Jahre 1999 wurde die LGPL geringfügig verändert und mit 2.1 versioniert, außerdem wurde der Name in GNU Lesser General Public License umbenannt, um dem Standpunkt der FSF Ausdruck zu verleihen, dass nicht alle Bibliotheken die LGPL nutzen sollen. Version 3 der LGPL wurde im Jahr 2007 veröffentlicht, um mit zusätzlichen Berechtigungen der GPL-Version 3 übereinzustimmen. Quelle:

Rechtliche Grundlagen

Dies ist ausdrücklich keine Rechtsberatung, sondern unsere einfache Darstellung der Lizenzsituation. Bitte lassen Sie sich von Ihrem Anwalt diesbezüglich beraten!

Die meisten Anwender gehen davon aus, dass Open Source Software kostenlos sei. Odoo/OpenERP kann frei verwendet werden, wenn man sich an die Vorgaben der Affero GPL oder hält. Deshalb haben wir hier die wichtigsten Fakten zusammengestellt, damit Sie sich über die rechtlichen Aspekte informieren können.

  1. Odoo 8 wurde unter der “Affero GPL” (AGPL) Lizenz und Odoo 9 / 10 unter der “Lesser GPL” (LGPL) von der Odoo S.A. in Brüssel herausgegeben.
  2. Sie unterliegt einem so genannten “Copyleft”, d.h. die Bearbeitung der Software darf nur unter den gleichen Bedingungen, also wieder mit einem “Copyleft” weiter lizenziert werden. Dies gilt für AGPL. Bei v9/10 also LGPL kann ein Modul als AGPL, LGPL oder in einer proprietären Lizenz vom Entwickler herausgegeben werden.
  3. Eigene Module, z.B. Apps sind solche Bearbeitungen und müssen bei v8 auch nach der Affero GPL lizensiert werden. So wird die grundsätzlich kostenlose Lizenz der Software insgesamt sichergestellt. Ab v9 gilt das auch für Module, die unter AGPL oder LGPL veröffentlicht wurden.
  4. Folgende Regelungen der Affero GPL können anders festgelegt werden: Umfang des Haftungsausschlusses, anderweitige Dokumentation rechtlicher Hinweise und Autorenschaft, Ausschluss der Haftung für die Herkunft, Einschränkung der Nutzung für Werbezwecke, Einschränkung der Vergabe von Markenrechten oder Haftungsfreistellung bei Weitergabe. Dies gilt im wesentlichen auch für LGPL.
  5. Der Sourcecode muss bei Übergabe einer Programmkopie (“convey”) übergeben werden. Dies ist bei Odoo auch nicht anders möglich, da der Quellcode in der Programmiersprache “Python” geschrieben wird und auf dem Server installiert wird. Auch bei proprietären Modulen wie den Enterprise Modulen von Odoo liegt der Quellcode zwar auch dem Server, darf aber weder kopiert noch verändert werden.
  6. Im Falle eines Fernzugangs muss der Sourcecode auf dem Server hinterlegt und downloadbar sein.(AGPL/LGPL)
  7. Bei Weitergabe im Sourcecode sind anzugeben: Änderung, Änderungsdatum und Lizenzierung der gesamten Software unter der Affero GPL bzw. LGPL. Im Falle der Weitergabe im Objektcode müssen zusätzlich alternativ bereitgestellt werden: Sourcecode auf einem dauerhaften Medium, Angebot für jeden Besitzer des Objekts über drei Jahre zur Überlassung des Sourcecode oder Zugang zum Server oder an- deren Rechnern (“peer-to-peer”) zur Kopie des Sourcecodes ohne Berechnung.
  8. Programmschutz ist nicht erlaubt. Mit der Übergabe einer Programmkopie verzichtet der Lizenzgeber auf eine solche Schutzmaßnahme. Die Installationsinformationen umfassen auch einen Aktivierungsschlüssel oder ähnliches. Dies gilt nur für AGPL/LGPL. In den Enterprise Modulen ist ein Überprüfungsmechanismus integriert, der monatlich die installierten Module und die Benutzer an Odoo meldet.
  9. Mit der urheberrechtlichen Softwarelizenz ist auch ein entsprechendes Patent lizenziert. Entgegenstehender Patentschutz ist also wirkungslos.
  10. Lizenzen unter der Affero GPL sind unwiderruflich. Deshalb hat Odoo ab v9 den Quellcode komplett überarbeitet um die Lizenz auf LGPL umstellen zu können.
  11. Lizenzen bleiben beim Unternehmensnachfolger bestehen.

Proprietäre Lizenz - Hände weg!

Ich habe mir mal die Mühe gemacht die “Odoo Proprietary License v1.0” zu analysieren, unter der Odoo Enterprise Module und auch viele Apps im Odoo Store ab v9 veröffentlicht werden und die wichtigsten Passagen markiert. Ich nehme an, dass kein Enterprise Kunde sich je die Lizenz angesehen und geprüft hat, sonst dürfte er eigentlich einen solchen Vertrag nicht eingehen.

This software and associated files (the “Software”) may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file).

Diese Software und zugehörige Dateien (die “Software”) dürfen nur verwendet (ausgeführt, geändert, nach Änderungen ausgeführt), wenn Sie eine gültige Lizenz von den Autoren erworben haben, typischerweise über Odoo apps, oder wenn Sie eine schriftliche Vereinbarung von den Autoren der Software erhalten haben (siehe die Copyright-Datei).

You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one).

Sie können Odoo-Module entwickeln, die die Software als Bibliothek verwenden (typischerweise je nach IT, importieren und verwenden ihrer Ressourcen), aber ohne jeglichen Quelltext oder Material von der Software zu kopieren. Sie können diese Module unter der Lizenz Ihrer Wahl verteilen, vorausgesetzt, diese Lizenz ist mit den Bedingungen der Odoo proprietären Lizenz (zum Beispiel: LGPL, mit, oder proprietäre Lizenzen ähnlich dieser).

It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software.

Es ist verboten, Kopien der Software oder modifizierten Kopien der Software zu veröffentlichen, zu verteilen, zu lizenzieren oder zu verkaufen.

The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software.

Die obige Copyright-Vermerk und dieser Lizenz-Hinweis muss in allen Exemplaren oder erheblichen Teilen der Software enthalten sein.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

DIE SOFTWARE WIRD “WIE SIE IST” BEREITGESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER GEBRAUCHSTAUGLICHKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. IN KEINEM FALL HAFTEN DIE URHEBER ODER URHEBERRECHTE FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER SONSTIGE HAFTUNG, OB IN EINER HANDLUNG DES VERTRAGES, UNERLAUBTER HANDLUNG ODER ANDERWEITIG, DIE SICH AUS, AUS ODER IN VERBINDUNG MIT DER SOFTWARE ODER DER VERWENDUNG ODER ANDEREN HANDLUNGEN IN DER SOFTWARE ERGEBEN.

Vorteile

Open Source hat viele Vorteile und ich wollte Sie keineswegs gerade abschrecken. Odoo wirbt zwar mit Open Source aber die Enterprise Variante hat nicht mehr soviel damit zu tun.

Basierend auf den rechtlichen Fakten führe ich die Vorteile auf, die sich daraus ergeben, da es gerade beim Einsatz Vorbehalte gibt.

Die 3 Kernprinzipien von Open Source Software

  • Verfügbarkeit des Quellcodes und das Recht ihn ändern zu dürfen.
  • Das Recht, die Open Source Software sowie alle Änderungen und Verbesserungen am Quellcode weiterzugeben.
  • Keine Exklusivrechte an der Software.

Sämtlicher Quellcode von Odoo/OpenERP steht offen zur Verfügung. Millionen von Anwendern weltweit setzen es ein. Dadurch werden Fehler und Sicherheitslücken schnell gefunden und ausgemerzt. “Backdoors” sind zwar niemals ausgeschlossen, jedoch weit geringer als bei geschlossenen Systemen.

Dennoch kommt es auch bei Open Source auf einige Eckdaten an, damit der Einsatz nicht zum Nachteil wird.

  • Betriebsystem-Unterstützung: Odoo/OpenERP wird zwar meist serverseitig auf dem Open Source Betriebsystem Linux installiert, kann aber auch unter Windows und mit etwas Geschick auf Apple OSX installiert werden. Da Odoo/OpenERP komplett im Browser genutzt wird, läuft es in modernen Browsern unter Microsoft Windows, Apple OSX oder Linux Desktops sowie auf verschiedenen Tablets Betriebssystemen wie iOS 8 oder Android 4.x.
  • Datenbank: Odoo/OpenERP setzt ausschließlich auf die PostgreSQL Open Source Datenbank auf. Diese Datenbank genießt weltweit einen sehr guten Ruf und kann im Leistungsumfang auch mit kommerziellen Produkten mithalten. (z.B. Vergleich Universität Zürich von 2012)
  • Programmiersprache: Odoo/OpenERP ist in der beliebten Programmiersprache Python entwickelt, die ebenfalls als Open Source zur Verfügung steht. Die Wurzeln von Python reichen in die frühen 90er Jahre zurück. Seit Jahren belegt Python einen Platz unter den Top 10 der beliebtesten Programmiersprachen. (z.B. TIOBE Index)
  • Unterstützung: Weltweit hat Odoo/OpenERP mehrere hundert Entwickler und Dienstleister. So haben Sie die freie Wahl einen Partner Ihres Vertrauens zu wählen.
  • Dokumentation: Odoo/OpenERP ist sehr gut dokumentiert. Neben diesem eBook stehen einige eBooks kostenlos zum Download bereit und eine technische Dokumentation auf Englisch ist online verfügbar und wird nahezu täglich verbessert. Daneben gibt es auch ein deutsches Forum sowie Blogs, Gruppen in XING und Google+.

Gegen Vorurteile

Unterhält man sich mit Anwendern oder Entscheidern über Open Source Software kurz OSS genannt, werden oftmals Vorurteile wie

  • Open Source Software sei unsicher
  • Open Source Software Projekte seien chaotisch
  • Open Source Software habe mehr Fehler als proprietäre Software (meist kommerzielle Software, deren Quellcode nicht offengelegt wird)

Da diese Vorurteile unbegründet sind, haben wir für Sie hier einige Quellen verlinkt, auf denen Sie sich über die Fakten informieren können:

Docker Schnellstart

Docker
Docker

Docker ist eine Open-Source-Software, die dazu verwendet werden kann, Anwendungen mithilfe von Betriebssystemvirtualisierung in Containern zu isolieren. Dies vereinfacht einerseits die Bereitstellung von Anwendungen, weil sich Container, die alle nötigen Pakete enthalten, leicht als Dateien transportieren und installieren lassen. Andererseits gewährleisten Container die Trennung der auf einem Rechner genutzten Ressourcen, sodass ein Container keinen Zugriff auf Ressourcen anderer Container hat.

Quelle: Wikipedia

Für mich ist Docker eines der innovativsten und produktivsten Softwarewerkzeuge der letzten Jahre. Inzwischen betreibe ich keine Odoo Installation mehr ohne Docker. Damit ist es möglich, unterschiedlichste Odoo Versionen auf einem HOST System zu betreiben.

Nachdem Docker für alle Plattformen verfügbar ist und unser Release Manager einen Reifegrad erreicht hat, in dem alle Optionen wie Installation, Update und Backup abgedeckt und erprobt wurden, empfehlen wir diese Variante.

Docker Architektur
Docker Architektur

Inzwischen gibt es auch sehr gute deutschsprachige Docker Dokumentationen und in Fachzeitschriften erscheinen regelmäßig Artikel zu diesem Thema. Docker Anwendungen kann man mit einer App auf einem mobilen Gerät vergleichen. Die Anwendung bringt ihr nötiges Umfeld mit sich. So kann eine Anwendung auf Debian basieren und eine zweite benutzt Ubuntu mit Tomcat. Die Anwendungen laufen in einer “Sandbox” und können erst einmal nicht mit der Aussenwelt kommunizieren. Man muss ihr die Schnittstelle freigeben. Ähnlich ist es auch bei mobilen Apps. Diese können mit unterschiedlichen Programmiersprachen entwickelt worden sein und man muss ihr den Zugriff auf Kamera, Adressbuch etc. erlauben.

Pro Docker Image sollte nur eine Anwendung laufen. Es gibt zwar gegenteilige Beispiele, aber man sollte darauf achten!

Aber zunächst müssen wir erst einmal Docker auf unserer präferierten Plattform installieren. In der Vergangenheit haben viele Windows Anwender Odoo unter Windows installiert, was zu Problemen mit dem Umfeld und auch nicht so performant wie vergleichbare Linux Installationen war. Das lag nicht zuletzt daran, dass gewisse Vorbehalte zum Einsatz einer Shell gehörte.

Docker unter Windows installieren

Docker Windows - Homepage Docker
Docker Windows - Homepage Docker

Unter https://store.docker.com/editions/community/docker-ce-desktop-windows können Sie die aktuelle Version von Docker für Windows herunterladen.

Docker Windows - Setup
Docker Windows - Setup
Docker Windows - Hyper-V
Docker Windows - Hyper-V
Docker Windows - Hyper-V Einstellen
Docker Windows - Hyper-V Einstellen
Docker Windows - Docker unter Windows
Docker Windows - Docker unter Windows

Starten Sie jetzt die PowerShell und überprüfen Sie die Variante.

Docker Windows - Überprüfung über PowerShell
Docker Windows - Überprüfung über PowerShell

Docker unter macOS installieren

Unter https://download.docker.com/mac/stable/Docker.dmg können Sie die aktuelle Version von Docker für macOS herunterladen.

Docker macOS - Docker App Drag & Drop
Docker macOS - Docker App Drag & Drop
Docker macOS - Welcome
Docker macOS - Welcome
Docker macOS - Rechte anfragen
Docker macOS - Rechte anfragen
Docker macOS - Rechte freigeben
Docker macOS - Rechte freigeben
Docker macOS - Docker Start
Docker macOS - Docker Start
Docker macOS - Docker Versionsüberprüfung
Docker macOS - Docker Versionsüberprüfung

Docker unter Linux (Debian 8/9) installieren

Linux-Grundpakete

Grundpakete installieren
$ apt-get update
$ sudo apt-get install \
     apt-transport-https \
     ca-certificates \
     curl \
     gnupg2 \
     software-properties-common

Docker Quelle ergänzen: Debian 8/9

Docker unter Debian Jessie
$ curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID\
")/gpg | sudo apt-key add -
..

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; e\
cho "$ID") \
   $(lsb_release -cs) \
   stable"

Docker installieren

Docker installieren
$ apt-get update
$ apt-get install docker-ce

Weitere Information für andere Linux OS

Docker Linux - Docker Versionsüberprüfung
Docker Linux - Docker Versionsüberprüfung

PostgreSQL Container starten

Zunächst starten wird den PostgreSQL in einem Docker Container:

docker run -d -e POSTGRES_USER=myodoo -e POSTGRES_PASSWORD=myodoo --name "myodoo-db" postgres:9.6.5

Docker - Postgres Container laden und starten
Docker - Postgres Container laden und starten
PostgreSQL als Docker Container starten
# Start
$ docker run -d -e POSTGRES_USER=myodoo -e POSTGRES_PASSWORD=myodoo \ 
         --name "myodoo-db" postgres:9.6.5
 
# bash Zugriff
$ docker exec -ti "myodoo-db" env TERM=xterm bash -l
  
# Aktualisieren
$ docker pull postgres:9.6.x
Docker - Postgres läuft
Docker - Postgres läuft

MyOdoo Container starten

Wir stellen die öffentliche Version unter https://hub.docker.com/r/myodoo/public-myodoo/ zur Verfügung.

Docker - MyOdoo im Docker Hub
Docker - MyOdoo im Docker Hub
Docker - MyOdoo Tags
Docker - MyOdoo Tags

Jetzt starten wir den MyOdoo Container. Zunächst wird das Image auch heruntergeladen.

docker run -d --restart=always -p 8069:8069 --name="myodoo-10-public" --link myodoo-db:db myodoo/myodoo-10-public:171001 start

Docker - Aufruf MyOdoo Datenbank Manager
Docker - Aufruf MyOdoo Datenbank Manager

Jetzt sollten Sie den Datenbank Manager sehen. Das Masterpasswort ist “myodoo2017”.

Diese können Sie jederzeit ändern. Sie können jetzt zu Erste Schritte wechseln.

MyOdoo als Docker Container starten
# Start
docker run -d --restart=always -p 8069:8069 --name="myodoo-10-public" \
     --link myodoo-db:db  myodoo/myodoo-10-public:171001 start
 
# Filestore auf Host mounten
docker run -d --restart=always -p 8069:8069 --name="myodoo-10-public" \
     -v ~/odoofilestore:/opt/odoo/data --link myodoo-db:db \ 
     myodoo/myodoo-10-public:171001 start
 
# Update
docker run -it --rm -p 8069:8069 --name="myodoo-10-public" \
     --link myodoo-db:db  myodoo/myodoo-10-public:171001 \ 
     update --database=test --db_user=myodoo --db_password=myodoo --db_host=db
Docker - MyOdoo Container läuft
Docker - MyOdoo Container läuft

Sie können jetzt zu Erste Schritte wechseln.

Die wichtigsten Docker Befehle

Container auflisten

docker ps -a

Images auflisten

docker images

Container stoppen

docker stop myodoo-10-public bzw. docker stop myodoo-db

Container starten

docker start myodoo-10-public bzw. docker start myodoo-db

Container restarten

docker restart myodoo-10-public bzw. docker restart myodoo-db

Container löschen

docker rm myodoo-10-public bzw. docker rm myodoo-db

Image löschen

Docker - Container & Images
Docker - Container & Images

docker rmi myodoo/myodoo-10-public bzw. docker rmi postgres:9.6.5

Einsatz unter Synology

Zunächst müssen Sie überprüfen, ob Ihr Synology Docker unterstützt. Information hierzu finden Sie unter https://www.synology.com/de-de/dsm/app_packages/Docker

Docker - Synology Docker App
Docker - Synology Docker App

Installieren Sie jetzt die Docker App auf Ihrem Synology und starten Sie diese danach:

Docker - Synology App Start
Docker - Synology App Start

Jetzt müssen wir zunächst die passenden Images (Abbilder) vom Docker Hub laden.

Postgres installieren

Dazu geben Sie unter Registrierung den Suchbegriff “postgres” und klicken danach auf das Originalabbild. Danach können Sie den “Tag” auswählen.

Docker - Synology PostgreSQL Tag wählen
Docker - Synology PostgreSQL Tag wählen

Verwenden Sie den “Tag” 9.6.5 bei Odoo 10 oder höher bzw. 9.4.7 oder höher bei Odoo 8.

Docker - Synology PostgreSQL Abbild (Image)
Docker - Synology PostgreSQL Abbild (Image)

Das Abbild wird jetzt aus dem Internet heruntergeladen. Danach können Sie unter Abbild einen Doppelklick darauf machen.

Docker - Synology PostgreSQL Container Name
Docker - Synology PostgreSQL Container Name

Geben Sie dem Container den Namen “myodoo-db” und klicken dann auf “Erweiterte Einstellungen”.

Docker - Synology PostgreSQL Variablen unter Umwelt
Docker - Synology PostgreSQL Variablen unter Umwelt
Docker - Synology PostgreSQL Zusammenfassung
Docker - Synology PostgreSQL Zusammenfassung

MyOdoo installieren

Jetzt laden wird den aktuellen “Tag” von MyOdoo. Unsere Tags wie mit Jahr/Monat/Build gekennzeichnet, z.B. 171001 für den ersten Build auf dem Oktober 2017. Wir aktualisieren diese Tags regelmäßig.

Docker - Synology MyOdoo Image wählen
Docker - Synology MyOdoo Image wählen

Ist das Abbild geladen, können wir darauf einen Container erstellen.

Docker - Synology MyOdoo Container konfigurieren
Docker - Synology MyOdoo Container konfigurieren

Sie geben dem Container den Namen “myodoo-10” und wechseln dann zu den “Erweiterten Einstellungen”.

Docker - Synology Volumen Ordner Hinzufügen
Docker - Synology Volumen Ordner Hinzufügen

Dazu wählen wir unter Volumen die Option “Ordner hinzufügen”

Docker - Synology Ordner wählen
Docker - Synology Ordner wählen

Durch die Installation der Docker App wurde der Ordner “docker” angelegt. Sie dürfen nur diesen oder einen Unterordner darin verwenden, da Ihr Container sonst keine Schreibrechte hat.

Docker - Synology Volumen Zusammenfassung
Docker - Synology Volumen Zusammenfassung

Als “Mount-Pfad” müssen Sie “/opt/odoo/data” angeben.

Docker - Synology MyOdoo Links zum PostgreSQL Container setzen
Docker - Synology MyOdoo Links zum PostgreSQL Container setzen

Unter “Links” stellen wir jetzt eine Verbindung zum Datenbank Container her.

Docker - Synology MyOdoo Variablen
Docker - Synology MyOdoo Variablen
Docker - Synology MyOdoo Port
Docker - Synology MyOdoo Port

Sie können den Port unter dem Ihr MyOdoo System über den Browser erreichbar sein wird vorgeben oder den Port von der Synology automatisch vergeben lassen.

Docker - Synology MyOdoo Zusammenfassung
Docker - Synology MyOdoo Zusammenfassung

Hier noch mal die Zusammenfassung aller Parameter.

Docker - Synology MyOdoo Zusammenfassung Fortsetzung
Docker - Synology MyOdoo Zusammenfassung Fortsetzung

Danach können Sie “Übernehmen” und starten dann Ihr MyOdoo-System.

MyOdoo Container erster Start

Docker - Synology Container im Überblick
Docker - Synology Container im Überblick

Wechseln Sie jetzt in den Browser und geben Sie die IP-Adresse Ihres Synologys ein sowie den Port den Sie oder das Synology vergeben haben.

Docker - Synology MyOdoo Container Details
Docker - Synology MyOdoo Container Details

Unter Details können Sie diesen ablesen.

Docker - Synology MyOdoo Datenbank Manager
Docker - Synology MyOdoo Datenbank Manager

Jetzt sollten Sie den Datenbank Manager sehen. Das Masterpasswort ist “myodoo2017”.

Dieses können Sie jederzeit ändern.

Docker - Synology Prozess überprüfen
Docker - Synology Prozess überprüfen

Falls das System nicht läuft, überprüfen Sie den Reiter “Prozess” und “Protokoll”

Docker - Synology Protokoll
Docker - Synology Protokoll

Diese sollten wie abgebildet aussehen.

Das Filestore

Docker - Synology Filestore
Docker - Synology Filestore

Der Container hat jetzt im Docker Ordner die Ordner “addons”, “filestore” und “sessions” abgelegt.

Docker - Synology Filestore
Docker - Synology Filestore

Unter “filestore” finden Sie die Dateien Ihres Systems im Ordner mit dem Namen der Datenbank als “base64”-codierte Ordner/Dateien.

Zusätzliche Module installieren

Docker - Synology Module hinzufügen
Docker - Synology Module hinzufügen

Falls Sie zusätzliche Module verwenden wollen, können Sie diese unter “addons/8.1/” ablegen.

Docker - Synology Module aktualisieren
Docker - Synology Module aktualisieren

MyOdoo updaten

Wenn es eine neue Version des MyOdoo Image zur Verfügung steht, reicht es keineswegs nur das Image/Abbild zu tauschen.

Sie müssen Ihre Datenbank aktualisieren.

Dazu müssen Sie den bestehenden Container entfernen und mit dem neuen Abbild einen neuen Container wie oben beschrieben erzeugen.

Der Postgres-Container bleibt dabei unberührt.

Wenn der neue Container läuft, rufen Sie vor dem ersten Anmelden unter “Terminal” eine “bash” durch den Button “Erstellen” auf.

MyOdoo 10 als Docker updaten
sudo -i -u odoo \
    /opt/odoo/odoo-server/odoo-bin \
    --update=all \
    --workers=0 \
    --no-xmlrpc \
    --database=dbname \
    --db_user=myodoo \
    --db_password=myodoo \
    --db_host=db \
    --stop-after-init
Docker - Synology MyOdoo Update
Docker - Synology MyOdoo Update
MyOdoo 8 als Docker updaten
sudo -i -u odoo /usr/bin/python \
    /opt/odoo/odoo-server/odoo.py \
    --update=all \
    --workers=0 \
    --no-xmlrpc \
    --database=dbname \
    --db_user=myodoo \
    --db_password=myodoo \
    --db_host=db \
    --stop-after-init

Sie können jetzt zu Erste Schritte wechseln.

Nützliche Module

In diesem Kapitel werde ich auf nützliche Module von uns oder aus der Community eingehen und diese kurz erklären:

MyOdoo Backend Theme v8

Odoo: MyOdoo Backend Theme v8
Odoo: MyOdoo Backend Theme v8

Dieses Modul ändert das Aussehen von Odoo im Backenbereich komplett. Damit lässt sich die Oberfläche auch gut auf Tablets bedienen. Ferner können Sie bei mehreren Odoo Systemen durch Änderung der Farben und des Ribbons (Banderole links oben) die Systeme besser unterscheiden.

Odoo: Neues Look & Feel für Odoo 8
Odoo: Neues Look & Feel für Odoo 8

Zum Ändern wechseln Sie als “Administrator” in die Einstellungen/Grundeinstellungen.

Odoo: Neues Look & Feel für Odoo 8
Odoo: Neues Look & Feel für Odoo 8

Hier können Sie komfortabel die Farben, die Schriftgrößen und ein Ribbon (Banderole) anzeigen lassen.

Odoo: Neues Look & Feel für Odoo 8
Odoo: Neues Look & Feel für Odoo 8

Nach dem Abspeichern ändert sich das Aussehen gemäß Ihren Einstellungen und bleibt auch nach den Anpassungen entsprechend erhalten.

Odoo: Ribbon, Farben & Schriftgrößen
Odoo: Ribbon, Farben & Schriftgrößen

Das Modul setzt das OCA-Modul “web_widget_color” neben dem Equitania-Modul voraus.

Quelle: https://github.com/equitania/myodoo-server/tree/8.0/addons/eq_myodoo_backend_theme

Odoo: Nicht zusammen mit MyOdoo Backend Theme v8 verwenden
Odoo: Nicht zusammen mit MyOdoo Backend Theme v8 verwenden

CKEditor 4.x widget

Odoo: CKEditor
Odoo: CKEditor

Das Modul CKEditor 4.x widget ersetzt den Standard WYSIWYG Editor.

Die Equitania Software GmbH hat das OCA-Modul speziell für den deutschsprachigen Raum optimiert.

Neben verschiedenen Schriftarten ist auch eine Rechtschreibprüfung integriert.

Odoo: CKEditor
Odoo: CKEditor

Quelle: https://github.com/equitania/oca-modules/tree/8.0/web_ckeditor4 - Original von https://github.com/oca

Web Clean Nav

Odoo: Web Clean Navbar
Odoo: Web Clean Navbar

Dieses Modul sorgt für eine bessere Lesbarkeit im Hauptmenübereich. Es macht den Farbkontrast klar und hebt das selektierte Menü hervor.

Quelle: https://github.com/equitania/odoo-addons/tree/8.0/web_clean_navbar

Web Sheet Full Width / Masken volle Breite

Odoo: Web Sheet Full Width
Odoo: Web Sheet Full Width

Diese Modul weitet die Ränder der Detailansichten auf die volle Browserbreite aus. Dadurch passen sich auch die Felder an und es kommt zu weniger Umbrüchen und die Masken erscheinen klarer und strukturierter.

Odoo: Web Sheet Full Width -> Vorher
Odoo: Web Sheet Full Width -> Vorher
Odoo: Web Sheet Full Width -> Nachher
Odoo: Web Sheet Full Width -> Nachher

Quelle: https://github.com/equitania/oca-modules/tree/8.0/web_sheet_full_width - Original von https://github.com/oca

Equitania No Advertisement & Disable OpenERP Online

Wie hält es Odoo denn mit dem Datenschutz? Für deutsche Maßstäbe etwas grenzwertig. Wenn ich mit Werbung penetriert werde oder eine Verbindung zum Odoo Hauptserver besteht, wird dort registriert, wie viele Benutzer ich anlege und welche Module ich installiere. Ich persönliche möchte das nicht so haben. Diese Module sorgen für Abhilfe.

Odoo: Equitania No Advertisement Quelle: https://github.com/equitania/odoo-addons/tree/8.0/eq_no_ad

Odoo: Disable OpenERP Online
Odoo: Disable OpenERP Online

Quelle: https://github.com/equitania/oca-modules/tree/8.0/disable_openerp_online - Original von https://github.com/oca

Web Translate dialog / Übersetzungsdialog

Odoo: Web Sheet Full Width
Odoo: Web Sheet Full Width

Mit diesem Modul werden alle zu übersetzenden Felder einer Maske übersichtlich gegenübergestellt. Damit erhalten Sie den nötigen Komfort, um die Mehrsprachigkeit von Odoo einsetzen zu können.

Odoo: Web Sheet Full Width -> Vorher
Odoo: Web Sheet Full Width -> Vorher
Odoo: Web Sheet Full Width -> Nachher
Odoo: Web Sheet Full Width -> Nachher

Quelle: https://github.com/equitania/oca-modules/tree/8.0/web_translate_dialog - Original von https://github.com/oca

Full width searchbar / Suchfeld volle Breite

Odoo: Full width searchbar
Odoo: Full width searchbar

Weitet die Suchleiste auf die volle Maskenbreite aus.

Odoo: Full width searchbar -> Vorher
Odoo: Full width searchbar -> Vorher
Odoo: Full width searchbar -> Nachher
Odoo: Full width searchbar -> Nachher

Quelle: https://github.com/equitania/oca-modules/tree/8.0/web_searchbar_full_width - Original von https://github.com/oca

Mass Editing / Massenverarbeitung

Eines der mächtigsten Werkzeuge ist dieses unscheinbare Modul. Damit können Sie jedes Datenmodell massenhaft verändern.

Sie können damit:

  • Feldwerte setzen
  • Feldwerte entfernen
  • Verknüpfungen hinzufügen

Das Einzige was diesem Modul noch fehlt, wäre die Möglichkeit einen bestehenden Feldwert mittels Formel zu verändern, um zum Beispiel eine Preiserhöhung um 5% durchzuführen.

Odoo: mass_editing
Odoo: mass_editing

Quelle: https://github.com/equitania/oca-modules/tree/8.0/mass_editing - Original von https://github.com/oca

Die Funktionsweise der Massenverarbeitung erkläre ich unter den Rezepten.

Collapsible menu

Odoo: Collapsible menu
Odoo: Collapsible menu

Klappt nicht benutzte Menüs automatisch zusammen. Damit wird es übersichtlicher.

Odoo: Collapsible menu
Odoo: Collapsible menu

Quelle: https://github.com/equitania/oca-modules/tree/8.0/web_menu_collapsible - Original von https://github.com/oca

Equitania Erweiterungspaket

Modul Equitania Erweiterungspaket
Modul Equitania Erweiterungspaket

Als wir mit OpenERP 7 begonnen haben, merkten wir sehr schnell, dass die mitgelieferten Module den Kundenanforderungen des deutschsprachigen Marktes nicht entsprechen.

Deshalb haben wir für uns ein Hauptmodul programmiert, dass bei all unseren Kundenprojekten eingesetzt wird, die Hauptkundenwünsche abdeckt und auch von unseren laufenden Projekten ständig erweitert wird.

Dies merkt man nicht zuletzt daran, dass wir fast täglich Änderungen oder Erweiterungen in diesem Paket updaten.

Bei Open Source kann nicht alles kostenlos sein

Das Modul “Equitania Erweiterungspaket” ist, wie weitere Module von der Equitania Software GmbH, frei verfügbar. Sie können die Module, die in diesem Buch beschrieben werden frei gemäß der AGPL verwenden.

Selbst dieses Buch entsteht mehr oder weniger als Hobby-Projekt meinerseits, weil alle Kunden nach einem Handbuch gefragt haben.

Deshalb bieten wir den Support für unsere Module zu einem fairen Preis an. Basierend auf einer einmaligen Bereitstellungsgebühr berechnet sich eine jährliche Software-Pflege-Gebühr. Im Gegenzug erhalten Sie Support und regelmäßige Updates für Ihr System.

Nicht alle unsere Module sind unter Github.com frei verfügbar. Viele Module im Bereich von Finanzbuchhaltung, Fertigung, Lager oder Webshop erhalten Sie nur nach Kauf ähnlich dem Odoo Shop.

Alle unsere Module mit Beschreibungen finden Sie unter MyOdoo Module oder in unserem Webshop mit Preisen.

Ferner stellen wir auch die häufigsten Fragen und Antworten für Anwender und Entwickler in unserem MyOdoo Wiki zur Verfügung.

Welche Bereiche werden erweitert?

Adressen, Produkte, Verkauf, Einkauf, Lager, Reports & Berichte, Übersetzungen, Dezimalstellen, Nummerngenerierung und und und …

Release Notes überprüfen

Unser Hauptmodul ändert sich fast täglich. Überprüfen Sie deshalb unter Release Notes zu dem Modul.

Hier erfahren Sie was sich ändert und ob sich ein Update für Sie lohnt.

Hauptmerkmale

Arbeiten mit Adressen
  • Optimierung der Masken
Equitania: Masken-Optimierung Hauptadressen
Equitania: Masken-Optimierung Hauptadressen
Equitania: Masken-Optimierung Unteradressen
Equitania: Masken-Optimierung Unteradressen
  • Die Debitoren- und Kreditorennummer mit Nummerngenerator im Kunden/Lieferanten hinzugefügt. Debitoren beginnen bei 10.000, Kreditoren bei 70.000. Einstellbar
Equitania: Kunden - und Lieferanten-Nummern
Equitania: Kunden - und Lieferanten-Nummern
  • Suche in allen Adressdaten (Interessenten, Kunden, Lieferanten und Benutzer)
Equitania: Suche über Adressen
Equitania: Suche über Adressen
  • Das Feld “Vermittelt durch” in die Leads eingefügt. Enthält eine Beschreibung.
  • Kundenreferenz in die Listenansicht des Verkaufsauftrag und Suche nach der Kundenreferenz hinzugefügt
  • 1:1 Verbindung zwischen Mitarbeitern und Benutzern hergestellt
Equitania: Suche über alle Adressen
Equitania: Suche über alle Adressen
  • Benutzer, der den Kunden anlegt, wird automatisch Verkäufer.
Equitania: Ersteller wird Verkäufer
Equitania: Ersteller wird Verkäufer
Arbeiten mit Produkten
  • Optimierung der Masken
Equitania: Optimierungen in der Produktmaske
Equitania: Optimierungen in der Produktmaske
  • Smartbuttons für Schnellzugriffe
  • UVP für Produkte
  • Benutzen der internen Produktbeschreibung für den Verkaufstext, wenn der Verkaufstext für die Website geschrieben wurde und sehr lang ist.
Equitania: Interne Produktbeschreibung
Equitania: Interne Produktbeschreibung
  • Diverse Zusatzfelder
  • Nummer-Generator für Produkte
Equitania: Produkt-Nummer-Generator
Equitania: Produkt-Nummer-Generator

Mit dem abgebildeten Beispiel geben Sie min. 2 Zeichen in das Nummern Feld ein.

z.B. ID

Wenn Sie dann auf den Link “Nummer erzeugen” drücken, wird automatisch die nächste Nummer im Zähler “ID-“ erzeugt und der Generator hochgezählt.

Equitania: Nummernvorgaben Produkt-Nummer-Generator
Equitania: Nummernvorgaben Produkt-Nummer-Generator
  • Schnellzugriff auf die Preislistenversionspositionen von der Produktmaske
  • Neue Zugriffe auf die Preislistenversionspositionen und Optimierungen
Equitania: Preislisten
Equitania: Preislisten

Details zu den Preislisten

Einkauf/Verkauf
  • Optimierung der Masken
Equitania: Optimierungen in der Angebots- und Auftragsmaske
Equitania: Optimierungen in der Angebots- und Auftragsmaske
  • Die Anzeige in der Partnersuche des Verkaufsauftrag um den Adresstypen erweitert. Anzeige von Straße, Ort sind einstellbar.
Equitania: Suche in Angeboten und Aufträgen
Equitania: Suche in Angeboten und Aufträgen
  • Alle Auftragspositionen für Einkauf und Verkauf werden noch einmal in einer separaten Maske(Liste, Form) angezeigt
Equitania: Auftragspositionen
Equitania: Auftragspositionen
  • Lieferbedingungen in den Verkaufsauftrag eingefügt
  • Sachbearbeiter in den Verkaufsauftrag eingefügt, Verkäufer wird automatisch eingetragen (einstellbar)
  • Dezimalstellen für Mengen, Gewichte und Preise für Einkauf, Verkauf und Fertigung separat einstellbar
Equitania: Erweiterung Dezimalstellen
Equitania: Erweiterung Dezimalstellen
  • Liefertermin für Ein/Verkauf eingefügt. Wird auf Reports gedruckt (einstellbar KW/Datum)
Equitania: Lieferdatum Einkauf / Produkte von gelistetem Lieferant ordern
Equitania: Lieferdatum Einkauf / Produkte von gelistetem Lieferant ordern
  • Kopftext/Fusstext für die Reports eingefügt
Equitania: Lieferdatum Verkauf / Abweichender Kopf- & Fusstext
Equitania: Lieferdatum Verkauf / Abweichender Kopf- & Fusstext
  • Verbindung zwischen Verkaufsauftrag, Lieferschein und Rechnung hergestellt
  • Positionsnummer eingefügt und sortieren mit Drag&Drop, wird vom Verkaufsauftrag an den Lieferschein und die Rechnung übergeben
  • Leistungsdatum in Rechnung vom Lieferschein abgeleitet
  • Produktbeschreibung wird für den Verkauf/Einkauf optimiert
  • Stornieren von Lieferscheinen ohne Rechnung - neuer Lieferschein wird erstellt
  • Überlieferungen werden in einer Position zusammengefasst (einstellbar)
  • Wizard für das Ändern des Lieferdatums im Lieferschein eingefügt. Änderungsgrund muss angegeben werden und Änderung wird als Nachricht dokumentiert
  • Feld für die Preislistenversion in die Preislistenposition eingefügt
  • Steuer wird bei den Rechnungspositionen automatisch gesetzt, wenn eine Rechnung von einem Lieferauftrag erstellt wird, welcher keinen Bezug zu einem Verkaufs-/Einkaufsauftrag hat
  • Fremdnr. bei Kontakt pflegbar - wird automatisch im Kundenauftrag in Referenznr. eingefügt
  • Separater Kopf-/Fusstext für Rechnungen
Reports
  • Alle Reports sind für den Einsatz im deutschsprachigen Raum angepasst und es kann meist ohne Anpassungen sofort begonnen werden. Die Unternehmensmaske um 4 Felder, die in der Fußzeile der Reports angezeigt werden, und das Firmenlogo, welches auf dem Report aufgedruckt wird
  • Internes und externes Papierformat wird gesetzt
Equitania: Papierformate
Equitania: Papierformate
  • Eigene Logik für Tausender Separatoren und Nachkommastellen für die Reports eingefügt (einstellbar)
Einstellungen
  • In den Einstellungen wird der Reiter “Installierte Module” als erster Eintrag angezeigt und beim Öffnen aufgerufen
  • Eigene Übersetzungslogik der Reports und Masken
Equitania Modul erkennen
Equitania Modul erkennen

Datenbank bereinigen

Wenn man mit Odoo beginnt, testet man sehr viel, pflegt Stammdaten und Inhalte. Aber irgendwann ist es so weit und man möchte die Testdaten bereinigen.

Dies ist nicht so einfach, da innerhalb der Tabellen Abhängigkeiten bestehen und der Status des Auftrags einen Einfluss hat.

Löschen Angebote/Verkaufsaufträge

Alle Bewegungsdaten im Verkauf löschen
DELETE FROM sale_order_line;
DELETE FROM sale_order;
DELETE FROM ir_attachment WHERE res_model = 'sale.order';
ALTER SEQUENCE sale_order_line_id_seq RESTART;
ALTER SEQUENCE sale_order_id_seq RESTART;

Löschen Bestellanfragen/Bestellungen

Alle Bewegungsdaten im Einkauf löschen
DELETE FROM purchase_order_line;
DELETE FROM purchase_order;
DELETE FROM ir_attachment WHERE res_model = 'purchase.order';
ALTER SEQUENCE purchase_order_line_id_seq RESTART;
ALTER SEQUENCE purchase_order_id_seq RESTART;

Löschen Rechnungen

Alle Bewegungsdaten im Rechnungen löschen
DELETE FROM account_invoice_line;
DELETE FROM account_invoice;
DELETE FROM account_move;
DELETE FROM ir_attachment WHERE res_model = 'account.invoice';
ALTER SEQUENCE account_invoice_line_id_seq RESTART;
ALTER SEQUENCE account_invoice_id_seq RESTART;
ALTER SEQUENCE account_move_id_seq RESTART;

# Einzelne Rechnungen
DELETE FROM account_invoice_line WHERE invoice_id=0000; # 0000 = id
DELETE FROM account_invoice WHERE id=0000; 

Lager

Alle Bewegungsdaten im Lager löschen
DELETE FROM stock_pack_operation;
DELETE FROM stock_picking;
DELETE FROM stock_move;
DELETE FROM stock_quant;
DELETE FROM stock_inventory_line;
DELETE FROM stock_inventory;
DELETE FROM stock_production_lot;
DELETE FROM procurement_order;
DELETE FROM stock_warehouse_orderpoint;
ALTER SEQUENCE stock_move_id_seq RESTART;
ALTER SEQUENCE stock_quant_id_seq RESTART;
ALTER SEQUENCE stock_warehouse_orderpoint_id_seq RESTART;
ALTER SEQUENCE stock_inventory_line_id_seq RESTART;
ALTER SEQUENCE stock_inventory_id_seq RESTART;
ALTER SEQUENCE stock_production_lot_id_seq RESTART;
ALTER SEQUENCE procurement_order_id_seq RESTART;

Projekte

Alle Projektdaten löschen
DELETE FROM project_task;
ALTER SEQUENCE project_task_id_seq RESTART;
DELETE FROM project_issue;
ALTER SEQUENCE project_issue_id_seq RESTART;
DELETE FROM account_analytic_line;
ALTER SEQUENCE account_analytic_line_id_seq RESTART;
DELETE FROM project_tags;
ALTER SEQUENCE project_tags_id_seq RESTART;
DELETE FROM project_project;
ALTER SEQUENCE project_project_id_seq RESTART;

Kassensitzung und Buchungen

Alle Bewegungsdaten im Kassenbereich löschen
DELETE FROM pos_order_line;
DELETE FROM pos_order;
DELETE FROM pos_session_opening;
DELETE FROM pos_session;
# ggf. Gutscheine
DELETE FROM pos_coupon_line;
DELETE FROM pos_coupon;

Geschäftsjahre bereinigen

Alle Bewegungsdaten im Geschäftsjahre löschen
DELETE FROM account_fiscal_position;
DELETE FROM account_bank_statement;
DELETE FROM account_voucher_line;
DELETE FROM account_voucher;
DELETE FROM account_period;
DELETE FROM account_fiscalyear;

Bankbuchungen bereinigen

Alle Bewegungsdaten für Bankbuchungen löschen
DELETE FROM account_bank_statement_line;
DELETE FROM account_bank_statement;
DELETE FROM payment_transaction;

Kostenstellen bereinigen

Alle Bewegungsdaten für Kostenstellen löschen
DELETE FROM account_analytic_line;

Nachrichten bereinigen

Alle Bewegungsdaten für Nachrichten löschen
DELETE FROM mail_message;
DELETE FROM mail_mail;
DELETE FROM ir_attachment WHERE res_model = 'mail.compose.message';
ALTER SEQUENCE mail_message_id_seq RESTART;
ALTER SEQUENCE mail_mail_id_seq RESTART;
DELETE FROM mail_followers_mail_message_subtype_rel;
DELETE FROM mail_followers;
ALTER SEQUENCE mail_followers_id_seq RESTART;

Auditlog Protokolle bereinigen

Alle Veränderungenprotokolle löschen
DELETE FROM auditlog_http_request;
DELETE FROM auditlog_http_session;
DELETE FROM auditlog_log_line;
DELETE FROM auditlog_log;
ALTER SEQUENCE auditlog_log_line_id_seq RESTART;
ALTER SEQUENCE auditlog_log_id_seq RESTART;
ALTER SEQUENCE auditlog_http_request_id_seq RESTART;
ALTER SEQUENCE auditlog_http_session_id_seq RESTART;

Fertigung bereinigen

Fertigung bereinigen
DELETE FROM mrp_bom_line;
DELETE FROM mrp_bom;
DELETE FROM mrp_routing;
DELETE FROM mrp_production_workcenter_line;
DELETE FROM mrp_workcenter;
DELETE FROM mrp_production_product_line;
DELETE FROM mrp_production;
ALTER SEQUENCE mrp_bom_line_id_seq RESTART;
ALTER SEQUENCE mrp_bom_id_seq RESTART;
ALTER SEQUENCE mrp_routing_id_seq RESTART;
ALTER SEQUENCE mrp_production_workcenter_line_id_seq RESTART;
ALTER SEQUENCE mrp_workcenter_id_seq RESTART;
ALTER SEQUENCE mrp_production_product_line_id_seq RESTART;
ALTER SEQUENCE mrp_production_id_seq RESTART;

# optional
DELETE FROM eq_calculation_detail;
DELETE FROM eq_calculation_data;

Produkte bereinigen

Rahmenaufträge (Equitania Modul)
Rahmenaufträge bereinigen
DELETE FROM "public"."eq_framework_agreement_purchase_pos_fetches";
DELETE FROM "public"."eq_framework_agreement_purchase_pos";
DELETE FROM "public"."eq_framework_agreement_purchase";
DELETE FROM "public"."eq_framework_agreement_pos_fetches";
DELETE FROM "public"."eq_framework_agreement_pos";
DELETE FROM "public"."eq_framework_agreement";
Interessenten bereinigen
DELETE FROM crm_lead;
DELETE FROM crm_phonecall;
Nur Kunden / Lieferanten bereinigen
DELETE FROM res_partner WHERE customer = TRUE OR supplier = TRUE;
Debitoren (parent_id siehe Kontenrahmen) bereinigen
DELETE FROM account_account WHERE type = 'receivable' AND parent_id=12;
Kreditoren (parent_id siehe Kontenrahmen)
DELETE FROM account_account WHERE type = 'payable' AND parent_id=70;
Version 8
Produkte bereinigen
DELETE FROM product_supplierinfo;
DELETE FROM product_product;
DELETE FROM product_template;
DELETE FROM product_template_standard_price_history;
DELETE FROM ir_translation  where name like 'product.template,%' and coalesce\
(res_id,0) > 0;
ALTER SEQUENCE product_product_id_seq RESTART;
ALTER SEQUENCE product_template_id_seq RESTART;
ALTER SEQUENCE product_template_standard_price_history_id_seq RESTART;
ALTER SEQUENCE product_supplierinfo_id_seq RESTART;
Verträge
DELETE FROM account_analytic_line;
DELETE FROM account_analytic_account;
Version 10
Produkte bereinigen
DELETE FROM stock_change_product_qty;
DELETE FROM product_supplierinfo;
DELETE FROM product_product;
DELETE FROM product_template;
DELETE FROM product_template_standard_price_history;
ALTER SEQUENCE stock_change_product_qty_id_seq RESTART;
ALTER SEQUENCE product_product_id_seq RESTART;
ALTER SEQUENCE product_template_id_seq RESTART;
ALTER SEQUENCE product_template_standard_price_history_id_seq RESTART; ALTER \
SEQUENCE product_supplierinfo_id_seq RESTART;

Löschen mit TRUNCATE

Die PostgreSQL Datenbank bietet dazu den TRUNCATE-Befehl. Dieser Befehl löscht alle Inhalte einer Tabelle und Ihre Abhängigkeiten in anderen Tabelle.
Näheres zu TRUNCATE

Alle Bewegungsdaten im Einkauf, Verkauf, Lager, Fibu, Mails & Nachrichten sowie Fertigung löschen
TRUNCATE sale_order CASCADE;
TRUNCATE purchase_order CASCADE;
TRUNCATE mrp_production CASCADE;
TRUNCATE stock_picking CASCADE;
TRUNCATE stock_inventory CASCADE;
TRUNCATE account_invoice CASCADE;
TRUNCATE account_move CASCADE;
TRUNCATE mail_message CASCADE;
TRUNCATE mail_followers CASCADE;
TRUNCATE pos_session CASCADE;
TRUNCATE account_journal_cashbox_line CASCADE;
delete from "wkf_instance" where res_type in ('sale.order', 'purchase.order',\
 'mrp.production', 'mrp.production.workcenter', 'mrp.production.workcenter.li\
ne', 'account.invoice');

TRUNCATE sale_order CASCADE

Alle Bewegungsdaten im Verkauf löschen
TRUNCATE sale_order CASCADE;

NOTICE:  truncate cascades to table "eq_framework_agreement_pos_fetches"
NOTICE:  truncate cascades to table "sale_order_category_rel"
NOTICE:  truncate cascades to table "sale_order_invoice_rel"
NOTICE:  truncate cascades to table "sale_order_line"
NOTICE:  truncate cascades to table "procurement_order"
NOTICE:  truncate cascades to table "sale_order_line_invoice_rel"
NOTICE:  truncate cascades to table "sale_order_line_property_rel"
NOTICE:  truncate cascades to table "sale_order_tax"
NOTICE:  truncate cascades to table "procurement_property_rel"
NOTICE:  truncate cascades to table "purchase_requisition"
NOTICE:  truncate cascades to table "stock_move"
NOTICE:  truncate cascades to table "stock_location_route_procurement"
NOTICE:  truncate cascades to table "mrp_production"
NOTICE:  truncate cascades to table "purchase_order"
NOTICE:  truncate cascades to table "purchase_requisition_line"
NOTICE:  truncate cascades to table "stock_quant"
NOTICE:  truncate cascades to table "stock_quant_move_rel"
NOTICE:  truncate cascades to table "stock_location_route_move"
NOTICE:  truncate cascades to table "stock_move_operation_link"
NOTICE:  truncate cascades to table "stock_return_picking_line"
NOTICE:  truncate cascades to table "mrp_operations_operation"
NOTICE:  truncate cascades to table "mrp_production_product_line"
NOTICE:  truncate cascades to table "mrp_production_workcenter_line"
NOTICE:  truncate cascades to table "purchase_invoice_rel"
NOTICE:  truncate cascades to table "purchase_order_line"
NOTICE:  truncate cascades to table "account_invoice_line"
NOTICE:  truncate cascades to table "purchase_order_line_invoice_rel"
NOTICE:  truncate cascades to table "purchase_order_taxe"
NOTICE:  truncate cascades to table "account_invoice_line_tax"

TRUNCATE purchase_order CASCADE

Alle Bewegungsdaten im Einkauf löschen
TRUNCATE purchase_order CASCADE;

NOTICE:  truncate cascades to table "purchase_invoice_rel"
NOTICE:  truncate cascades to table "purchase_order_line"
NOTICE:  truncate cascades to table "account_invoice_line"
NOTICE:  truncate cascades to table "procurement_order"
NOTICE:  truncate cascades to table "purchase_order_line_invoice_rel"
NOTICE:  truncate cascades to table "purchase_order_taxe"
NOTICE:  truncate cascades to table "stock_move"
NOTICE:  truncate cascades to table "account_invoice_line_tax"
NOTICE:  truncate cascades to table "mrp_production"
NOTICE:  truncate cascades to table "procurement_property_rel"
NOTICE:  truncate cascades to table "purchase_requisition"
NOTICE:  truncate cascades to table "sale_order_line_invoice_rel"
NOTICE:  truncate cascades to table "stock_quant"
NOTICE:  truncate cascades to table "stock_quant_move_rel"
NOTICE:  truncate cascades to table "stock_location_route_move"
NOTICE:  truncate cascades to table "stock_location_route_procurement"
NOTICE:  truncate cascades to table "stock_move_operation_link"
NOTICE:  truncate cascades to table "stock_return_picking_line"
NOTICE:  truncate cascades to table "mrp_operations_operation"
NOTICE:  truncate cascades to table "mrp_production_product_line"
NOTICE:  truncate cascades to table "mrp_production_workcenter_line"
NOTICE:  truncate cascades to table "purchase_requisition_line"

TRUNCATE mrp_production CASCADE

Alle Bewegungsdaten in der Fertigung löschen
TRUNCATE mrp_production CASCADE;

NOTICE:  truncate cascades to table "mrp_operations_operation"
NOTICE:  truncate cascades to table "mrp_production_product_line"
NOTICE:  truncate cascades to table "mrp_production_workcenter_line"
NOTICE:  truncate cascades to table "procurement_order"
NOTICE:  truncate cascades to table "stock_move"
NOTICE:  truncate cascades to table "procurement_property_rel"
NOTICE:  truncate cascades to table "purchase_requisition"
NOTICE:  truncate cascades to table "stock_quant"
NOTICE:  truncate cascades to table "stock_quant_move_rel"
NOTICE:  truncate cascades to table "stock_location_route_move"
NOTICE:  truncate cascades to table "stock_location_route_procurement"
NOTICE:  truncate cascades to table "stock_move_operation_link"
NOTICE:  truncate cascades to table "stock_return_picking_line"
NOTICE:  truncate cascades to table "purchase_order"
NOTICE:  truncate cascades to table "purchase_requisition_line"
NOTICE:  truncate cascades to table "purchase_invoice_rel"
NOTICE:  truncate cascades to table "purchase_order_line"
NOTICE:  truncate cascades to table "account_invoice_line"
NOTICE:  truncate cascades to table "purchase_order_line_invoice_rel"
NOTICE:  truncate cascades to table "purchase_order_taxe"
NOTICE:  truncate cascades to table "account_invoice_line_tax"
NOTICE:  truncate cascades to table "sale_order_line_invoice_rel"

TRUNCATE stock_picking CASCADE

Alle Lagerbewegungsdaten löschen
TRUNCATE stock_picking CASCADE;

NOTICE:  truncate cascades to table "stock_move"
NOTICE:  truncate cascades to table "stock_pack_operation"
NOTICE:  truncate cascades to table "stock_transfer_details"
NOTICE:  truncate cascades to table "mrp_production"
NOTICE:  truncate cascades to table "procurement_order"
NOTICE:  truncate cascades to table "stock_quant"
NOTICE:  truncate cascades to table "stock_quant_move_rel"
NOTICE:  truncate cascades to table "stock_location_route_move"
NOTICE:  truncate cascades to table "stock_move_operation_link"
NOTICE:  truncate cascades to table "stock_return_picking_line"
NOTICE:  truncate cascades to table "stock_transfer_details_items"
NOTICE:  truncate cascades to table "mrp_operations_operation"
NOTICE:  truncate cascades to table "mrp_production_product_line"
NOTICE:  truncate cascades to table "mrp_production_workcenter_line"
NOTICE:  truncate cascades to table "procurement_property_rel"
NOTICE:  truncate cascades to table "purchase_requisition"
NOTICE:  truncate cascades to table "stock_location_route_procurement"
NOTICE:  truncate cascades to table "purchase_order"
NOTICE:  truncate cascades to table "purchase_requisition_line"
NOTICE:  truncate cascades to table "purchase_invoice_rel"
NOTICE:  truncate cascades to table "purchase_order_line"
NOTICE:  truncate cascades to table "account_invoice_line"
NOTICE:  truncate cascades to table "purchase_order_line_invoice_rel"
NOTICE:  truncate cascades to table "purchase_order_taxe"
NOTICE:  truncate cascades to table "account_invoice_line_tax"
NOTICE:  truncate cascades to table "sale_order_line_invoice_rel"

TRUNCATE stock_inventory CASCADE

Alle Lagerbestände löschen
TRUNCATE stock_inventory CASCADE;

NOTICE:  truncate cascades to table "stock_move"
NOTICE:  truncate cascades to table "stock_inventory_line"
NOTICE:  truncate cascades to table "mrp_production"
NOTICE:  truncate cascades to table "procurement_order"
NOTICE:  truncate cascades to table "stock_quant"
NOTICE:  truncate cascades to table "stock_quant_move_rel"
NOTICE:  truncate cascades to table "stock_location_route_move"
NOTICE:  truncate cascades to table "stock_move_operation_link"
NOTICE:  truncate cascades to table "stock_return_picking_line"
NOTICE:  truncate cascades to table "mrp_operations_operation"
NOTICE:  truncate cascades to table "mrp_production_product_line"
NOTICE:  truncate cascades to table "mrp_production_workcenter_line"
NOTICE:  truncate cascades to table "procurement_property_rel"
NOTICE:  truncate cascades to table "purchase_requisition"
NOTICE:  truncate cascades to table "stock_location_route_procurement"
NOTICE:  truncate cascades to table "purchase_order"
NOTICE:  truncate cascades to table "purchase_requisition_line"
NOTICE:  truncate cascades to table "purchase_invoice_rel"
NOTICE:  truncate cascades to table "purchase_order_line"
NOTICE:  truncate cascades to table "account_invoice_line"
NOTICE:  truncate cascades to table "purchase_order_line_invoice_rel"
NOTICE:  truncate cascades to table "purchase_order_taxe"
NOTICE:  truncate cascades to table "account_invoice_line_tax"
NOTICE:  truncate cascades to table "sale_order_line_invoice_rel"

TRUNCATE account_invoice CASCADE

Alle Rechnungen löschen
TRUNCATE account_invoice CASCADE;

NOTICE:  truncate cascades to table "account_analytic_line"
NOTICE:  truncate cascades to table "account_invoice_line"
NOTICE:  truncate cascades to table "account_invoice_tax"
NOTICE:  truncate cascades to table "purchase_invoice_rel"
NOTICE:  truncate cascades to table "sale_order_invoice_rel"
NOTICE:  truncate cascades to table "account_invoice_line_tax"
NOTICE:  truncate cascades to table "hr_analytic_timesheet"
NOTICE:  truncate cascades to table "purchase_order_line_invoice_rel"
NOTICE:  truncate cascades to table "sale_order_line_invoice_rel"

TRUNCATE account_move CASCADE

Alle Buchungen in der Finanzbuchhaltung löschen
TRUNCATE account_move CASCADE;

NOTICE:  truncate cascades to table "account_bank_statement_line"
NOTICE:  truncate cascades to table "account_move_line"
NOTICE:  truncate cascades to table "account_invoice"
NOTICE:  truncate cascades to table "account_subscription_line"
NOTICE:  truncate cascades to table "account_voucher"
NOTICE:  truncate cascades to table "ecofi_eccount_move_error_rel"
NOTICE:  truncate cascades to table "account_analytic_line"
NOTICE:  truncate cascades to table "account_invoice_line"
NOTICE:  truncate cascades to table "account_invoice_tax"
NOTICE:  truncate cascades to table "account_move_line_relation"
NOTICE:  truncate cascades to table "account_voucher_line"
NOTICE:  truncate cascades to table "purchase_invoice_rel"
NOTICE:  truncate cascades to table "sale_order_invoice_rel"
NOTICE:  truncate cascades to table "account_invoice_line_tax"
NOTICE:  truncate cascades to table "hr_analytic_timesheet"
NOTICE:  truncate cascades to table "purchase_order_line_invoice_rel"
NOTICE:  truncate cascades to table "sale_order_line_invoice_rel"

TRUNCATE mail_message CASCADE

Alle Nachrichten löschen
TRUNCATE mail_message CASCADE;

NOTICE:  truncate cascades to table "mail_compose_message"
NOTICE:  truncate cascades to table "mail_mail"
NOTICE:  truncate cascades to table "mail_message_res_partner_rel"
NOTICE:  truncate cascades to table "mail_notification"
NOTICE:  truncate cascades to table "mail_vote"
NOTICE:  truncate cascades to table "message_attachment_rel"
NOTICE:  truncate cascades to table "mail_compose_message_ir_attachments_rel"
NOTICE:  truncate cascades to table "mail_compose_message_res_partner_rel"
NOTICE:  truncate cascades to table "mail_mail_res_partner_rel"

TRUNCATE mail_followers CASCADE

Alle Nachrichten Abonnenten löschen
TRUNCATE mail_followers CASCADE;

NOTICE:  truncate cascades to table "mail_followers_mail_message_subtype_rel"

Workflows bereinigen

Alle Bewegungsdaten in den Workflows löschen
DELETE FROM wkf_instance WHERE res_type IN 
('sale.order', 
'purchase.order', 
'mrp.production', 
'mrp.production.workcenter', 
'mrp.production.workcenter.line', 
'account.invoice');

Komplettes Inhaltsverzeichnis

Diese Vorschau zeigt Ihnen nur ein Teil des Inhalts.

Das komplette Inhaltsverzeichnis habe ich zum Download hinterlegt.