diff --git a/setup/lib/cli.py b/setup/lib/cli.py index c15d234f..e9f27e56 100755 --- a/setup/lib/cli.py +++ b/setup/lib/cli.py @@ -82,7 +82,6 @@ def main(): 'login', 'install_module_sale', #'setup_accounting', - #'setup_accounting2', 'set_admin_rights', ] diff --git a/setup/lib/config_at.py b/setup/lib/config_at.py index 563f8ec3..315c9887 100644 --- a/setup/lib/config_at.py +++ b/setup/lib/config_at.py @@ -83,13 +83,13 @@ class Config(): # Einstellungen Verkauf self.sale_config = { - 'group_sale_delivery_address': True, # Verschiedene Adressen für Rechnung und Lieferung - 'group_sale_pricelist': True, # Preislisten verwenden - 'group_discount_per_so_line': True, # Rabatte verwenden - 'group_uom': True, # Verwende Mengeneinheiten - 'group_invoice_deli_orders': True, # Erstelle Rechnungen durch Auslieferungen + 'group_sale_delivery_address': 0, # Verschiedene Adressen für Rechnung und Lieferung + 'sale_pricelist_setting': 'fixed', # Verkaufspreis: [fixed], [percentage], [formula] + 'group_discount_per_so_line': 0, # Rabatt auf Verkaufszeilen + 'group_uom': 0, # Verwende Mengeneinheiten + 'default_invoice_policy': 'order' # Standardabrechnung: [order], [delivery] } - self.order_policy = 'picking' # Erzeuge Rechnung: [manual], [picking],[prepaid] + self.order_policy = 'picking' # Erzeuge Rechnung: [manual], [picking], [prepaid] # Einstellungen Einkauf self.purchase_config = { @@ -100,26 +100,27 @@ class Config(): 'group_costing_method': True, # Benutzen Sie 'Einkaufs-' oder 'Durchschnittspreis' zur Bestandsbewertung } - + # Einstellungen Finanzen self.finance_config = { - #'group_multi_currency':True + 'group_multi_currency': False, # Multiwährungsfunktion aktivieren + 'default_sale_tax_id': 'XML:l10n_at.1_tax_at_mwst_10', # Standardsteuer Verkauf } - - #Einstellungen Personal + # Einstellungen Personal self.hr_config = { - 'module_hr_expense': True, # Spesen der Mitarbeiter verwalten - 'module_hr_timesheet': False, # Verwalten Sie Ihre Studenzettel - 'group_hr_attendance': True, # Zuweisung der Berechtigung zur Arbeitszeiteingabe für alle Benutzer + 'module_hr_expense': True, # Spesen der Mitarbeiter verwalten + 'module_hr_timesheet': False, # Verwalten Sie Ihre Studenzettel + 'group_hr_attendance': True, # Zuweisung der Berechtigung zur Arbeitszeiteingabe für alle Benutzer } - #Einstellungen Lager + # Einstellungen Lager self.stock_config = { - 'group_stock_multiple_locations': True, # Verwalten Sie mehrere Lager und Lagerorte - 'group_stock_tracking_lot': False, # Benutze Verpackungen: Paletten, Boxen, ... - 'group_stock_production_lot': True, # Verfolgen Sie Los- und Seriennummern. - 'group_stock_packaging': False, # Ermöglicht die Auswahl einer Verpackung - 'group_stock_adv_location': True, # Verwalten Sie erweiterte Routen im Lager + 'warehouse_and_location_usage_level': 0, # Warehouses and Locations usage level + 'group_stock_tracking_lot': 0, # Verpackungsgrößen bei der Verpackung: Paletten, Kisten, Behälter... + 'group_stock_production_lot': 0, # Verfolgen Sie Los- und Seriennummern + 'group_stock_packaging': 0, # Manage available packaging options per products + 'group_stock_adv_location': 0, # Advanced routing of products using rules + 'group_product_variant': 0, # Produkte können mehrere Attribute haben, die Varianten definieren } # Einstellungen Fertigung diff --git a/setup/lib/functions.py b/setup/lib/functions.py index 9691dfc7..1aa09195 100644 --- a/setup/lib/functions.py +++ b/setup/lib/functions.py @@ -95,6 +95,26 @@ class DatenpolFunctions(): fi.close() return content + def resolve_xml_id(self, value): + # In case the value starts with 'XML:' then take the remaining string + # as an XML-Id, resolve it and return that. Otherwise return value + # unchanged. + if type(value) != str or value[:4] != 'XML:': + return value + + xml_id = value[4:] + res_id = self._execute('ir.model.data', 'xmlid_to_res_id', xml_id) + if not res_id: + raise Exception('XML-Id "%s" nicht vorhanden!' % xml_id) + return res_id + + def resolve_xml_ids(self, data): + # Resolve all XML-Ids in the dict data + # Note: This happens in-place, the original dict is returned + for k, v in data.iteritems(): + data[k] = self.resolve_xml_id(v) + return data + def set_company(self): """Setze Unternehmensdaten (Allgemein, RML, Logo)""" @@ -344,15 +364,6 @@ class DatenpolFunctions(): return self._execute('res.users', 'write', [user_id], vals) def setup_accounting(self): - """Konfiguration Buchhaltung""" - - vals = self._execute('account.installer', 'default_get', []) - vals['charts'] = self.config.chart_of_accounts - wizard_id = self._execute('account.installer', 'create', vals) - self._execute('account.installer', 'action_next', [wizard_id]) - return True - - def setup_accounting2(self): """Konfiguration Kontenplan""" c = self.config @@ -397,7 +408,7 @@ class DatenpolFunctions(): return True def uninstall_chat(self): - """Chat-Modul deinstallieren """ + """Chat-Modul deinstallieren""" modules = ['im_chat', 'im_odoo_support', 'bus'] modules_to_install = self._execute('ir.module.module', 'search', [('name', 'in', modules)]) @@ -690,14 +701,7 @@ class DatenpolFunctions(): """Defaultwerte für Dokumente setzen""" for model, field, value in self.config.default_values: - # Falls XML ID (prefix "XML:") dann die DB ID holen - if value[0:4] == 'XML:': - xml_id = value[4:] - dummy, dummy2, res_id = self._execute('ir.model.data', 'xmlid_lookup', xml_id) - if not res_id: - raise Exception('Defaultwerte anlegen: XML ID %s nicht vorhanden!' % (xml_id)) - value = res_id - + value = self.resolve_xml_id(value) vals = { 'name': field, 'model': model, @@ -800,7 +804,7 @@ class DatenpolFunctions(): if hasattr(self.config, 'finance_config'): vals = self._execute('account.config.settings', 'default_get', []) - vals.update(self.config.finance_config) + vals.update(self.resolve_xml_ids(self.config.finance_config)) wizard_id = self._execute('account.config.settings', 'create', vals) return self._execute('account.config.settings', 'execute', [wizard_id]) return True