This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
it:openerp:general [2025/12/03 17:30] 47.128.119.72 old revision restored (2025/10/27 14:56) |
it:openerp:general [2025/12/03 17:52] (current) 47.128.49.18 old revision restored (2025/10/27 15:55) |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== OpenERP ====== | ====== OpenERP ====== | ||
| - | ====== Server Konfigurationsdatei ====== | + | ===== zu klärende Fragen zum Einstieg |
| - | * Damit kann man scheinbar einen Login hinterlegen - praktisch | + | * wie werden gelöschte Datensätze behandelt? (aus Tabelle gelöscht und wohin?) |
| - | * Auto-Save für Formulare | + | * Anbindung an OpenOffice |
| - | * [[http:// | + | * Zuordnung Users zu partners |
| + | * res.partner' | ||
| - | ====== Standardmäßig extended view für admin setzen | + | ====== OpenERP Entwicklung ====== |
| + | |||
| + | ===== Standardmäßig extended view für admin setzen ===== | ||
| <code xml> | <code xml> | ||
| <!-- Set Extended View for Administrator --> | <!-- Set Extended View for Administrator --> | ||
| Line 14: | Line 17: | ||
| </ | </ | ||
| - | ====== Felder anhand von Status sperren | + | ===== Felder anhand von Status sperren ===== |
| <code python> | <code python> | ||
| ' | ' | ||
| Line 20: | Line 23: | ||
| | | ||
| | | ||
| - | ====== Spalten Create_Date und Write_Date einblenden: | + | ===== Spalten Create_Date und Write_Date einblenden: ===== |
| <code python> | <code python> | ||
| _columns = { | _columns = { | ||
| Line 28: | Line 31: | ||
| </ | </ | ||
| - | ====== Encoding | + | ===== Encoding ===== |
| Unbedingt alle Python Dateien mit UTF-8 explizit kodieren, um ASCII-Konvertierungsfehler zu vermeiden. | Unbedingt alle Python Dateien mit UTF-8 explizit kodieren, um ASCII-Konvertierungsfehler zu vermeiden. | ||
| <code python> | <code python> | ||
| Line 34: | Line 37: | ||
| </ | </ | ||
| - | ====== Domain Filter auf one2many Spalte | + | ===== Domain Filter auf one2many Spalte ===== |
| [[http:// | [[http:// | ||
| - | ====== Active Spalte | + | ===== Active Spalte ===== |
| Legt man eine Bool-Spalte namens " | Legt man eine Bool-Spalte namens " | ||
| - | ====== Message an ui ====== | + | ===== Message an ui ===== |
| Line 51: | Line 54: | ||
| </ | </ | ||
| - | ===== Übersetzung der message | + | === Übersetzung der message === |
| In der .po Datei | In der .po Datei | ||
| < | < | ||
| Line 64: | Line 67: | ||
| "die Produktmengeneinheit (ME) des Einkaufs befindet" | "die Produktmengeneinheit (ME) des Einkaufs befindet" | ||
| </ | </ | ||
| - | + | ===== einen String übersetzen ===== | |
| - | ====== einen String übersetzen | + | |
| <code python> | <code python> | ||
| from tools.translate import _ | from tools.translate import _ | ||
| Line 73: | Line 75: | ||
| </ | </ | ||
| - | ====== summmen von float fields im tree ==== | + | ===== summmen von float fields im tree ==== |
| <code xml> | <code xml> | ||
| <field name=" | <field name=" | ||
| </ | </ | ||
| - | ====== ein browse-objekt per xml-id holen ====== | + | ===== ein browse-objekt per xml-id holen ===== |
| <code python> | <code python> | ||
| print pool.get(" | print pool.get(" | ||
| </ | </ | ||
| - | ====== kontextsensitive Suchformulare | + | ===== kontextsensitive Suchformulare ===== |
| < | < | ||
| Line 108: | Line 110: | ||
| return{' | return{' | ||
| </ | </ | ||
| - | + | ==== Context => auf übergeordnete Felder zugreifen === | |
| - | ====== Context => auf übergeordnete Felder zugreifen | + | |
| <code xml> | <code xml> | ||
| <field name=" | <field name=" | ||
| Line 127: | Line 128: | ||
| </ | </ | ||
| - | ====== Spezifischen View in Field durch context verwenden | + | ===== Spezifischen View in Field durch context verwenden ===== |
| <code xml> | <code xml> | ||
| #zur Verfügung stehen search_view_ref, | #zur Verfügung stehen search_view_ref, | ||
| Line 133: | Line 134: | ||
| </ | </ | ||
| - | ====== Filter durch Context setzen | + | ===== Filter durch Context setzen ===== |
| <code xml> | <code xml> | ||
| Line 143: | Line 144: | ||
| # 1 = filter an, 0 = filter aus | # 1 = filter an, 0 = filter aus | ||
| </ | </ | ||
| - | + | ===== SQL Constraints ===== | |
| - | ====== SQL Constraints | + | |
| Im Modul res.groups habe folgende Anweisung entdeckt: | Im Modul res.groups habe folgende Anweisung entdeckt: | ||
| Line 156: | Line 156: | ||
| und nicht zwei. | und nicht zwei. | ||
| - | ====== xml_id in id umwandeln | + | ===== xml_id in id umwandeln ===== |
| <code xml> | <code xml> | ||
| <record id=" | <record id=" | ||
| Line 176: | Line 176: | ||
| - | ====== domain in action window mit xml_id | + | ===== domain in action window mit xml_id ===== |
| <code xml> | <code xml> | ||
| <field name=" | <field name=" | ||
| </ | </ | ||
| - | ====== lambda Ausdrücke in defaults columns | + | ===== lambda Ausdrücke in defaults columns ===== |
| <code python> | <code python> | ||
| Line 203: | Line 203: | ||
| } | } | ||
| </ | </ | ||
| - | + | ===== defaults überschreiben ===== | |
| - | ====== defaults überschreiben | + | |
| Hiermit wird der default Wert des Feldes date überschrieben. | Hiermit wird der default Wert des Feldes date überschrieben. | ||
| <code xml> | <code xml> | ||
| <field name=" | <field name=" | ||
| </ | </ | ||
| - | + | ==== Praktische Parameter der openerp_server.py ==== | |
| - | ====== Praktische Parameter der openerp_server.py | + | |
| Um nur ein spezifisches Modul beim start neu zu laden: | Um nur ein spezifisches Modul beim start neu zu laden: | ||
| Line 216: | Line 214: | ||
| | | ||
| ----------------- | ----------------- | ||
| - | + | ===== Model Ebene ===== | |
| - | ====== | + | == Felder |
| Wenn das Feld related auf ein one2many Feld zeigt, dann wird dort das erste Element verwendet | Wenn das Feld related auf ein one2many Feld zeigt, dann wird dort das erste Element verwendet | ||
| unter Beachtund der Sortierung (_order). | unter Beachtund der Sortierung (_order). | ||
| - | ====== Erweitern von Standard Selection Fields | + | == Erweitern von Standard Selection Fields == |
| Beispielsweise gibt es bei res.partner ein Auswahlfeld für den Adresstyp. Um diesen | Beispielsweise gibt es bei res.partner ein Auswahlfeld für den Adresstyp. Um diesen | ||
| zu erweitern, muss im __init__.py der eigenen Klasse per Programmcode die neuen Selections | zu erweitern, muss im __init__.py der eigenen Klasse per Programmcode die neuen Selections | ||
| hinzugefügt werden. Geht so: | hinzugefügt werden. Geht so: | ||
| - | |||
| - | <note important> | ||
| - | folgendes Vorgehen eigentlich nicht mehr so notwendig und vereinfacht sich so, dass nur ein weiteres | ||
| - | selection-Feld hinzugefügt werden muss. Dieses ergänzt dann die Auswahlwerte.</ | ||
| <code python> | <code python> | ||
| Line 242: | Line 236: | ||
| </ | </ | ||
| - | ====== Feldattribute in Abhängigkeit vom Status setzen, z.B. readonly | + | == Readonly |
| <code python> | <code python> | ||
| Line 252: | Line 246: | ||
| <group attrs=" | <group attrs=" | ||
| </ | </ | ||
| - | + | ==== Many2Many Felder Füllen ==== | |
| - | ====== Many2Many Felder Füllen | + | |
| < | < | ||
| Note: The type of field values to pass in vals for relationship fields is specific: | Note: The type of field values to pass in vals for relationship fields is specific: | ||
| Line 325: | Line 318: | ||
| - | ====== Aus einem Tree oder From View einen anderen View per Python-Code | + | ===== View Ebene ===== |
| + | === View öffnen === | ||
| + | Aus einem Tree oder From View einen anderen View öffnen | ||
| <code python> | <code python> | ||
| #wizard erstellen | #wizard erstellen | ||
| - | class open_ref_wizard(osv.osv_memory): | + | class open_ref_wizard(wizard.interface): |
| | | ||
| def open_ref(self, | def open_ref(self, | ||
| Line 336: | Line 330: | ||
| return { | return { | ||
| ' | ' | ||
| - | ' | ||
| ' | ' | ||
| - | ' | + | ' |
| ' | ' | ||
| - | ' | + | ' |
| ' | ' | ||
| ' | ' | ||
| ' | ' | ||
| - | #weitere parameter: | + | } |
| - | 'nodestroy': | + | |
| - | 'views': [(view_id_cal, 'calendar'), (view_id_form, 'form'), (view_id_tree, 'tree')], | + | states = { |
| + | | ||
| + | 'actions': [], | ||
| + | ' | ||
| + | ' | ||
| + | | ||
| + | | ||
| + | } | ||
| } | } | ||
| } | } | ||
| - | + | open_ref_wizard(' | |
| - | open_ref_wizard() | + | |
| </ | </ | ||
| - | <note tip> | ||
| - | |||
| - | <note warning> | ||
| - | |||
| - | ====== Old-Style Wizards ====== | ||
| <code xml> | <code xml> | ||
| <!-- wizard definieren --> | <!-- wizard definieren --> | ||
| Line 365: | Line 359: | ||
| <button string=" | <button string=" | ||
| </ | </ | ||
| - | ====== Message an UI ====== | + | === Message an UI === |
| <code python> | <code python> | ||
| raise osv.osv.except_osv(" | raise osv.osv.except_osv(" | ||
| </ | </ | ||
| - | ====== Events | + | == Events == |
| Felder in Views haben ein " | Felder in Views haben ein " | ||
| [[http:// | [[http:// | ||
| Line 390: | Line 384: | ||
| - | ====== Objekt-ID per XML-ID holen ====== | + | ===== Objekt-ID per XML-ID holen ===== |
| <code python> | <code python> | ||
| xml_id = " | xml_id = " | ||
| try: | try: | ||
| - | _, id = self.pool.get(' | + | _, id = self.pool.get(' |
| except: | except: | ||
| id = None | id = None | ||
| Line 400: | Line 394: | ||
| @Miki: wo ist die get_object Methode??? | @Miki: wo ist die get_object Methode??? | ||
| - | ====== menue.xml | + | ===== menue.xml ===== |
| <code xml> | <code xml> | ||
| < | < | ||
| Line 429: | Line 423: | ||
| </ | </ | ||
| - | ====== view.xml | + | ===== view.xml ===== |
| <code xml> | <code xml> | ||
| < | < | ||
| Line 507: | Line 501: | ||
| </ | </ | ||
| - | ====== Action-Button und Methode aus Model ====== | + | ===== Action-Button und Methode aus Model ===== |
| **Methode in Model**: | **Methode in Model**: | ||
| Line 513: | Line 507: | ||
| def assign_task_to_me(self, | def assign_task_to_me(self, | ||
| - | ======= | + | ====== |
| | | ||
| </ | </ | ||
| Line 521: | Line 515: | ||
| <button name=" | <button name=" | ||
| </ | </ | ||
| - | ====== Kontextbezogenes Editieren | + | ===== Kontextbezogenes Editieren ===== |
| <code xml> | <code xml> | ||
| <field name=" | <field name=" | ||
| </ | </ | ||
| - | ====== SQL Constraints in Python-Klassen | + | ===== SQL Constraints in Python-Klassen ===== |
| <code python> | <code python> | ||
| | | ||
| Line 537: | Line 531: | ||
| </ | </ | ||
| - | ====== Tree Farben | + | ===== Tree Farben ===== |
| <code xml> | <code xml> | ||
| <tree colors=" | <tree colors=" | ||