update Repo für 10.0
parent
5db603678a
commit
ea7df087a0
|
|
@ -1,15 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="org.python.pydev.debug.regularLaunchConfigurationType">
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/INSTANCE/setup/lib/cli.py"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="1"/>
|
||||
</listAttribute>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:INSTANCE/setup/lib/cli.py}"/>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_OTHER_WORKING_DIRECTORY" value=""/>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="${env_var:CAM_USER} update cam_custom"/>
|
||||
<stringAttribute key="org.python.pydev.debug.ATTR_INTERPRETER" value="__default"/>
|
||||
<stringAttribute key="org.python.pydev.debug.ATTR_PROJECT" value="INSTANCE"/>
|
||||
<stringAttribute key="process_factory_id" value="org.python.pydev.debug.processfactory.PyProcessFactory"/>
|
||||
</launchConfiguration>
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="org.python.pydev.debug.regularLaunchConfigurationType">
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/INSTANCE/ext/odoo/odoo-dev.py"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="1"/>
|
||||
</listAttribute>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:INSTANCE/ext/odoo/odoo-dev.py}"/>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_OTHER_WORKING_DIRECTORY" value=""/>
|
||||
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-c dev/odoo-server-dev-${env_var:CAM_USER}.conf --db-filter="^INSTANCE.*""/>
|
||||
<stringAttribute key="org.python.pydev.debug.ATTR_INTERPRETER" value="__default"/>
|
||||
<stringAttribute key="org.python.pydev.debug.ATTR_PROJECT" value="INSTANCE"/>
|
||||
<stringAttribute key="process_factory_id" value="org.python.pydev.debug.processfactory.PyProcessFactory"/>
|
||||
</launchConfiguration>
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
[options]
|
||||
|
||||
xmlrpc_port = 8080
|
||||
; This is the password that allows database operations:
|
||||
; admin_passwd = admin
|
||||
db_host = False
|
||||
db_port = 5432
|
||||
db_user = False
|
||||
db_password = False
|
||||
|
||||
addons_path = ext/odoo/addons,ext/custom-addons,dmi/run1
|
||||
timezone = Europe/Brussels
|
||||
|
||||
#dbfilter_test = ['.*',]
|
||||
show_debug = 1
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
[options]
|
||||
|
||||
xmlrpc_port = 8080
|
||||
; This is the password that allows database operations:
|
||||
; admin_passwd = admin
|
||||
db_host = False
|
||||
db_port = 5432
|
||||
db_user = False
|
||||
db_password = False
|
||||
|
||||
addons_path = ext/odoo/addons,ext/custom-addons,dmi/run1
|
||||
timezone = Europe/Brussels
|
||||
|
||||
#dbfilter_test = ['.*',]
|
||||
show_debug = 1
|
||||
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
|
@ -1,13 +0,0 @@
|
|||
--- ext/odoo/odoo-dev.py 2015-04-08 10:11:02.000000000 +0200
|
||||
+++ ext/odoo/odoo-dev.py 2015-04-08 10:11:02.000000000 +0200
|
||||
@@ -0,0 +1,10 @@
|
||||
+#!/usr/bin/env python
|
||||
+import sys
|
||||
+if sys.modules.get("gevent") is not None:
|
||||
+ del sys.modules['gevent']
|
||||
+import openerp
|
||||
+
|
||||
+if __name__ == "__main__":
|
||||
+ openerp.cli.main()
|
||||
+
|
||||
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
--- ext/odoo/openerp/report/report_sxw.py 2015-04-15 12:18:30.132784074 +0200
|
||||
+++ ext/odoo/openerp/report/report_sxw.py 2015-04-15 11:48:21.743518606 +0200
|
||||
@@ -476,6 +476,8 @@
|
||||
processed_rml = etree.XML(rml)
|
||||
if report_xml.use_global_header:
|
||||
rml_parser._add_header(processed_rml, self.header)
|
||||
+ else:
|
||||
+ rml_parser._add_header(processed_rml, 'internal')
|
||||
processed_rml = self.preprocess_rml(processed_rml,report_xml.report_type)
|
||||
if rml_parser.logo:
|
||||
logo = base64.decodestring(rml_parser.logo)
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
--- ext/odoo/openerp/report/render/rml2pdf/trml2pdf.py 2014-01-14 14:18:12.302306370 +0100
|
||||
+++ ext/odoo/openerp/report/render/rml2pdf/trml2pdf.py 2014-01-14 14:18:16.770419846 +0100
|
||||
@@ -740,7 +740,7 @@
|
||||
rowheights = [utils.unit_get(f.strip()) for f in node.get('rowHeights').split(',')]
|
||||
if len(rowheights) == 1:
|
||||
rowheights = rowheights[0]
|
||||
- table = platypus.LongTable(data = data, colWidths=colwidths, rowHeights=rowheights, **(utils.attr_get(node, ['splitByRow'] ,{'repeatRows':'int','repeatCols':'int'})))
|
||||
+ table = platypus.LongTable(data = data, colWidths=colwidths, rowHeights=rowheights, **(utils.attr_get(node, ['splitByRow'] ,{'repeatRows':'int','repeatCols':'int', 'hAlign':'str'})))
|
||||
if node.get('style'):
|
||||
table.setStyle(self.styles.table_styles[node.get('style')])
|
||||
for s in styles:
|
||||
|
|
@ -5,18 +5,18 @@ import urlparse
|
|||
|
||||
from config_at import Config
|
||||
from environments import ENVIRONMENTS, Environment
|
||||
from functions import CamadeusFunctions
|
||||
from functions import DatenpolFunctions
|
||||
|
||||
def main():
|
||||
def _usage():
|
||||
print '\nVerwendung: cam.py <environment> <command> [<module_name>/<setup_function>]\n'
|
||||
print '\nVerwendung: dp.py <environment> <command> [<module_name>/<setup_function>]\n'
|
||||
print 'Commands:\n'
|
||||
print ' create Neue Datenbank erstellen'
|
||||
print ' create_from_dump Neue Datenbank von Dump erstellen'
|
||||
print ' setup Modulinstallation, Konfigurationen'
|
||||
print ' setup_part setup_function Aufruf eines einzelnen Setup-Schrittes'
|
||||
print ' "setup_part info" listet die verfügbaren Setup-Schritte auf'
|
||||
print ' rollout Setzt Dokumentnummern, importiert Benutzer, setzt cam_dmi auf noupdate, ...'
|
||||
print ' rollout Setzt Dokumentnummern, importiert Benutzer, setzt dp_dmi auf noupdate, ...'
|
||||
print ' update module_name Modul updaten'
|
||||
print ' install module_name Modul installieren'
|
||||
print ' uninstall module_name Modul deinstallieren'
|
||||
|
|
@ -35,7 +35,7 @@ def main():
|
|||
_usage()
|
||||
|
||||
# RUNBOT
|
||||
# ./cam runbot create [db] [port] [working-dir]
|
||||
# ./dp runbot create [db] [port] [working-dir]
|
||||
|
||||
if argv[0] == 'runbot':
|
||||
import os
|
||||
|
|
@ -67,7 +67,7 @@ def main():
|
|||
print 'Unbekannte Umgebung'
|
||||
_usage()
|
||||
|
||||
instance = CamadeusFunctions(env, config)
|
||||
instance = DatenpolFunctions(env, config)
|
||||
|
||||
methods = None
|
||||
|
||||
|
|
@ -81,8 +81,8 @@ def main():
|
|||
'create_db',
|
||||
'login',
|
||||
'install_module_sale',
|
||||
'setup_accounting',
|
||||
'setup_accounting2',
|
||||
#'setup_accounting',
|
||||
#'setup_accounting2',
|
||||
'set_admin_rights',
|
||||
]
|
||||
|
||||
|
|
@ -101,32 +101,32 @@ def main():
|
|||
'uninstall_chat',
|
||||
'install_modules',
|
||||
'set_warehouse',
|
||||
'base_config',
|
||||
'sale_config',
|
||||
#'base_config',
|
||||
#'sale_config',
|
||||
#'finance_config',
|
||||
'hr_config',
|
||||
'stock_config',
|
||||
'mrp_config',
|
||||
'stock_set_cost_method',
|
||||
'set_incoterms',
|
||||
'purchase_config',
|
||||
#'hr_config',
|
||||
#'stock_config',
|
||||
#'mrp_config',
|
||||
#'stock_set_cost_method',
|
||||
#'set_incoterms',
|
||||
#'purchase_config',
|
||||
'set_date_format',
|
||||
'set_company',
|
||||
'set_taxes',
|
||||
'set_uom',
|
||||
'set_steuerzuordnung',
|
||||
'setup_journals',
|
||||
#'setup_journals',
|
||||
'set_currencies',
|
||||
'set_decimal_price',
|
||||
'set_default_values',
|
||||
'set_translations',
|
||||
'set_default_removal_strategy',
|
||||
'default_set_order_policy',
|
||||
'delete_mail_server',
|
||||
'update_values',
|
||||
'update_special_values',
|
||||
#'set_default_values',
|
||||
#'set_translations',
|
||||
#'set_default_removal_strategy',
|
||||
#'default_set_order_policy',
|
||||
#'delete_mail_server',
|
||||
#'update_values',
|
||||
#'update_special_values',
|
||||
'set_sys_params',
|
||||
'setup_reports',
|
||||
#'setup_reports',
|
||||
]
|
||||
|
||||
if cmd == 'setup':
|
||||
|
|
@ -135,10 +135,10 @@ def main():
|
|||
if cmd == 'rollout':
|
||||
methods = [
|
||||
'login',
|
||||
'set_dokumentennummern',
|
||||
'set_dmi_noupdate',
|
||||
'dmi_confirm_inventory',
|
||||
'import_users',
|
||||
#'set_dokumentennummern',
|
||||
#'set_dmi_noupdate',
|
||||
#'dmi_confirm_inventory',
|
||||
#'import_users',
|
||||
]
|
||||
|
||||
if cmd == 'update':
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
class Config():
|
||||
def __init__(self):
|
||||
self.dump_file = 'upgraded_file_name.dump'
|
||||
self.dump_file = 'odoo_backup.dump'
|
||||
|
||||
self.module_name = None
|
||||
self.lang = 'de_DE' # de_DE, en_US
|
||||
|
|
@ -14,23 +14,23 @@ class Config():
|
|||
self.uom_decimals = 3 # Nachkommastellen Mengeneinheiten
|
||||
|
||||
self.company_data = {
|
||||
'name': 'Camadeus GmbH',
|
||||
'street': 'Wiedner Hauptstraße 135/B3',
|
||||
'name': 'datenpol gmbh',
|
||||
'street': 'Lederergasse 32',
|
||||
'street2': False,
|
||||
'city': 'Wien',
|
||||
'zip': '1050',
|
||||
'phone': '+43 1 78910 96 70',
|
||||
'city': 'Linz',
|
||||
'zip': '4020',
|
||||
'phone': '+43 732 997 035-0',
|
||||
'fax': False,
|
||||
'email': 'office@camadeus.at',
|
||||
'website': 'http://www.camadeus.at/',
|
||||
'company_registry': '280076b',
|
||||
'email': 'office@datenpol.at',
|
||||
'website': 'http://www.datenpol.at/',
|
||||
'company_registry': '359270p',
|
||||
'country_id': 'at', # 'de' für Deutschland
|
||||
'logo': False,
|
||||
'vat': 'ATU 62991855',
|
||||
'vat': 'ATU 66309611',
|
||||
'rml_header1': False,
|
||||
'vat_check_vies': True,
|
||||
'tax_calculation_rounding_method': 'round_globally',
|
||||
'logo': '../ext/custom-addons/cam_custom/static/src/img/logo.png',
|
||||
'logo': '../ext/custom-addons/dp_custom/static/src/img/logo.png',
|
||||
}
|
||||
|
||||
self.mail_server = {
|
||||
|
|
@ -241,8 +241,8 @@ class Config():
|
|||
]
|
||||
|
||||
self.default_values = [ # ir.values
|
||||
#('product.template', 'type', 'service'),
|
||||
#('product.template', 'type', 'XML:xmlid'), #mit prefix "XML:" kann eine XML ID übergeben werden
|
||||
('product.template', 'type', 'service'),
|
||||
('product.template', 'type', 'XML:xmlid'), #mit prefix "XML:" kann eine XML ID übergeben werden
|
||||
]
|
||||
|
||||
self.data_updates = {
|
||||
|
|
|
|||
|
|
@ -26,11 +26,8 @@ Port: %s
|
|||
ENVIRONMENTS = {
|
||||
# Local environments are listed with passwords
|
||||
'br': Environment('http://localhost', '8080', 'INSTANCE_1', 'admin', 'x', 'admin'),
|
||||
'sk': Environment('http://localhost', '8080', 'INSTANCE_1', 'admin', 'x', 'admin'),
|
||||
'ha': Environment('http://localhost', '8080', 'INSTANCE_1', 'admin', 'x', 'admin'),
|
||||
'jb': Environment('http://localhost', '8080', 'INSTANCE_1', 'admin', 'x', 'admin'),
|
||||
'uk': Environment('http://localhost', '8080', 'INSTANCE_1', 'admin', 'x', 'admin'),
|
||||
|
||||
# Remote environments are always listed without passwords!
|
||||
# Do not store them here, you have to type them anyway!
|
||||
'test': Environment('https://INSTANCE.camadeus.at', '443', 'INSTANCE_1', 'admin'),
|
||||
'test': Environment('https://INSTANCE.datenpol.at', '443', 'INSTANCE_1', 'admin'),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,8 @@ import xmlrpclib
|
|||
|
||||
import requests
|
||||
|
||||
class CamadeusFunctions():
|
||||
|
||||
class DatenpolFunctions():
|
||||
def __init__(self, environment, config):
|
||||
self.env = environment
|
||||
self.config = config
|
||||
|
|
@ -16,23 +17,22 @@ class CamadeusFunctions():
|
|||
def create_db(self):
|
||||
"""Neue Datenbank erstellen"""
|
||||
|
||||
payload = {'fields': [ {'name': 'super_admin_pwd', 'value': self.env.super_admin_pw},
|
||||
{'name': 'db_name', 'value': self.env.dbname},
|
||||
{'name': 'demo_data', 'value': False},
|
||||
{'name': 'db_lang', 'value': self.config.lang},
|
||||
{'name': 'create_admin_pwd', 'value': self.env.pwd},
|
||||
]
|
||||
}
|
||||
payload = {'params': payload}
|
||||
json_data = json.dumps(payload)
|
||||
headers = {'content-type': 'application/json'}
|
||||
r = requests.post('%s:%s/web/database/create' % (self.env.host, self.env.port), data=json_data, headers=headers, auth=self.env.basic_auth, verify=False)
|
||||
if r and r.json().get('result', False):
|
||||
return True
|
||||
else:
|
||||
msg = pprint.pformat(r.json().get('error', '????'))
|
||||
print 'Error occured: %s' % msg
|
||||
params = {
|
||||
'master_pwd': self.env.super_admin_pw,
|
||||
'name': self.env.dbname,
|
||||
'login': self.env.username,
|
||||
'password': self.env.pwd,
|
||||
'lang': self.config.lang,
|
||||
'country_code': self.config.company_data.get('country_id', 'at'),
|
||||
}
|
||||
if self.env.demo:
|
||||
params.update(demo=1)
|
||||
|
||||
base_url = '%s:%s/web/database/create' % (self.env.host, self.env.port)
|
||||
res = requests.post(base_url, params=params, verify=False, stream=True)
|
||||
if not res.ok:
|
||||
return False
|
||||
return True
|
||||
|
||||
def create_dump(self):
|
||||
""" Erstelle Odoo-Dump"""
|
||||
|
|
@ -43,9 +43,9 @@ class CamadeusFunctions():
|
|||
'backup_pwd': self.env.super_admin_pw,
|
||||
'token': 'x',
|
||||
}
|
||||
|
||||
|
||||
res = requests.post(base_url, params=params, verify=False, stream=True)
|
||||
|
||||
|
||||
if res.headers['Content-Type'].startswith('application/octet-stream'):
|
||||
with open(self.config.dump_file, 'wb') as fh:
|
||||
chunk_size = 100000
|
||||
|
|
@ -69,12 +69,11 @@ class CamadeusFunctions():
|
|||
print "\nACHTUNG: Nicht vergessen './cam [env] anonym' auszuführen, sodass es zu keiner Kommunikation mit dem Produktivsystem kommt"
|
||||
return True
|
||||
|
||||
|
||||
def login(self):
|
||||
"""Login"""
|
||||
|
||||
# Get the uid
|
||||
sock_common = xmlrpclib.ServerProxy ('%s:%s/xmlrpc/common' % (self.env.host, self.env.port))
|
||||
sock_common = xmlrpclib.ServerProxy('%s:%s/xmlrpc/common' % (self.env.host, self.env.port))
|
||||
self.uid = sock_common.login(self.env.dbname, self.env.username, self.env.pwd)
|
||||
if not self.uid:
|
||||
raise Exception('Authentication Error')
|
||||
|
|
@ -84,12 +83,12 @@ class CamadeusFunctions():
|
|||
def _execute(self, *args):
|
||||
return self.sock.execute(self.env.dbname, self.uid, self.env.pwd, *args)
|
||||
|
||||
def _readAndReturnFile(self, filename, encode =''):
|
||||
fi = open (filename, 'r')
|
||||
def _readAndReturnFile(self, filename, encode=''):
|
||||
fi = open(filename, 'r')
|
||||
content = ''
|
||||
if encode=='':
|
||||
if encode == '':
|
||||
content = fi.read()
|
||||
elif encode=='base64':
|
||||
elif encode == 'base64':
|
||||
content = base64.b64encode(fi.read())
|
||||
else:
|
||||
sys.exit(-1)
|
||||
|
|
@ -100,7 +99,7 @@ class CamadeusFunctions():
|
|||
"""Setze Unternehmensdaten (Allgemein, RML, Logo)"""
|
||||
|
||||
vals = self.config.company_data
|
||||
dummy,country_id = self._execute('ir.model.data', 'get_object_reference', 'base', vals['country_id'])
|
||||
dummy, country_id = self._execute('ir.model.data', 'get_object_reference', 'base', vals['country_id'])
|
||||
|
||||
if vals.get('logo', False):
|
||||
vals['logo'] = self._readAndReturnFile(vals['logo'], encode='base64')
|
||||
|
|
@ -195,8 +194,9 @@ class CamadeusFunctions():
|
|||
if hasattr(self.config, 'incoterms'):
|
||||
terms = self.config.incoterms
|
||||
|
||||
for name,code in terms:
|
||||
existing_ids = self._execute('stock.incoterms', 'search', ['|', ('active', '=', True), ('active', '=', False), ('code', '=', code)])
|
||||
for name, code in terms:
|
||||
existing_ids = self._execute('stock.incoterms', 'search',
|
||||
['|', ('active', '=', True), ('active', '=', False), ('code', '=', code)])
|
||||
if existing_ids:
|
||||
vals = {
|
||||
'active': True,
|
||||
|
|
@ -210,7 +210,7 @@ class CamadeusFunctions():
|
|||
}
|
||||
self._execute('stock.incoterms', 'create', vals)
|
||||
|
||||
codes = [code for name,code in terms]
|
||||
codes = [code for name, code in terms]
|
||||
inactive_ids = self._execute('stock.incoterms', 'search', [('code', 'not in', codes)])
|
||||
self._execute('stock.incoterms', 'write', inactive_ids, {'active': False})
|
||||
|
||||
|
|
@ -227,7 +227,8 @@ class CamadeusFunctions():
|
|||
def install_module_sale(self):
|
||||
"""Modul 'Sale' installieren"""
|
||||
|
||||
modules_to_install = self._execute('ir.module.module', 'search', [('name', '=', 'sale'), ('state', '!=', 'installed')])
|
||||
modules_to_install = self._execute('ir.module.module', 'search',
|
||||
[('name', '=', 'sale'), ('state', '!=', 'installed')])
|
||||
self._execute('ir.module.module', 'button_install', modules_to_install)
|
||||
self._execute('base.module.upgrade', 'upgrade_module', modules_to_install)
|
||||
return True
|
||||
|
|
@ -235,7 +236,8 @@ class CamadeusFunctions():
|
|||
def install_modules(self):
|
||||
"""Module installieren"""
|
||||
|
||||
modules_to_install = self._execute('ir.module.module', 'search', [('name', 'in', self.config.modules), ('state', '!=', 'installed')])
|
||||
modules_to_install = self._execute('ir.module.module', 'search',
|
||||
[('name', 'in', self.config.modules), ('state', '!=', 'installed')])
|
||||
self._execute('ir.module.module', 'button_install', modules_to_install)
|
||||
self._execute('base.module.upgrade', 'upgrade_module', modules_to_install)
|
||||
return True
|
||||
|
|
@ -261,15 +263,15 @@ class CamadeusFunctions():
|
|||
seq_dict = self.config.sequences
|
||||
|
||||
# Lieferschein
|
||||
if seq_dict.get('picking.out',False):
|
||||
if seq_dict.get('picking.out', False):
|
||||
self._set_picking_sequence_prefix('outgoing', 'picking.out')
|
||||
if seq_dict.get('picking.in',False):
|
||||
if seq_dict.get('picking.in', False):
|
||||
self._set_picking_sequence_prefix('incoming', 'picking.in')
|
||||
if seq_dict.get('picking.int',False):
|
||||
if seq_dict.get('picking.int', False):
|
||||
self._set_picking_sequence_prefix('internal', 'picking.int')
|
||||
|
||||
# Angebot
|
||||
if seq_dict.get('sale.order',False):
|
||||
if seq_dict.get('sale.order', False):
|
||||
s_ids = self._execute('ir.sequence', 'search', [('code', '=', 'sale.order')])
|
||||
if len(s_ids) != 1:
|
||||
return False
|
||||
|
|
@ -277,7 +279,7 @@ class CamadeusFunctions():
|
|||
return False
|
||||
|
||||
# Arbeitsschein
|
||||
if seq_dict.get('work.order',False):
|
||||
if seq_dict.get('work.order', False):
|
||||
s_ids = self._execute('ir.sequence', 'search', [('code', '=', 'work.order')])
|
||||
if len(s_ids) != 1:
|
||||
return False
|
||||
|
|
@ -285,7 +287,7 @@ class CamadeusFunctions():
|
|||
return False
|
||||
|
||||
# EK-Angebot
|
||||
if seq_dict.get('purchase.order',False):
|
||||
if seq_dict.get('purchase.order', False):
|
||||
s_ids = self._execute('ir.sequence', 'search', [('code', '=', 'purchase.order')])
|
||||
if len(s_ids) != 1:
|
||||
return False
|
||||
|
|
@ -293,7 +295,7 @@ class CamadeusFunctions():
|
|||
return False
|
||||
|
||||
# Rechnungsnummer
|
||||
if seq_dict.get('account.invoice',False):
|
||||
if seq_dict.get('account.invoice', False):
|
||||
j_ids = self._execute('account.journal', 'search', [('code', '=', 'VK')])
|
||||
if len(j_ids) != 1:
|
||||
return False
|
||||
|
|
@ -323,15 +325,15 @@ class CamadeusFunctions():
|
|||
def set_admin_rights(self):
|
||||
"""Setze Administrator Rechte"""
|
||||
|
||||
dummy,user_id = self._execute('ir.model.data', 'get_object_reference', 'base', 'user_root')
|
||||
dummy, user_id = self._execute('ir.model.data', 'get_object_reference', 'base', 'user_root')
|
||||
groups = []
|
||||
|
||||
# Technische Eigenschaften
|
||||
dummy,group_id = self._execute('ir.model.data', 'get_object_reference', 'base', 'group_no_one')
|
||||
dummy, group_id = self._execute('ir.model.data', 'get_object_reference', 'base', 'group_no_one')
|
||||
groups.append((4, group_id))
|
||||
|
||||
# Finanzmanager
|
||||
dummy,group_id = self._execute('ir.model.data', 'get_object_reference', 'account', 'group_account_manager')
|
||||
dummy, group_id = self._execute('ir.model.data', 'get_object_reference', 'account', 'group_account_manager')
|
||||
groups.append((4, group_id))
|
||||
|
||||
vals = {
|
||||
|
|
@ -354,20 +356,22 @@ class CamadeusFunctions():
|
|||
"""Konfiguration Kontenplan"""
|
||||
|
||||
c = self.config
|
||||
sales_tax_ids = self._execute('account.tax.template', 'search', [('description', '=', c.sales_tax), ('parent_id', '=', False)])
|
||||
sales_tax_ids = self._execute('account.tax.template', 'search',
|
||||
[('description', '=', c.sales_tax), ('parent_id', '=', False)])
|
||||
if not sales_tax_ids:
|
||||
return False
|
||||
purchase_tax_ids = self._execute('account.tax.template', 'search', [('description', '=', c.purchase_tax), ('parent_id', '=', False)])
|
||||
purchase_tax_ids = self._execute('account.tax.template', 'search',
|
||||
[('description', '=', c.purchase_tax), ('parent_id', '=', False)])
|
||||
if not purchase_tax_ids:
|
||||
return False
|
||||
|
||||
# Set Your Accounting Options
|
||||
dummy,currency_id = self._execute('ir.model.data', 'get_object_reference', 'base', 'EUR')
|
||||
dummy, currency_id = self._execute('ir.model.data', 'get_object_reference', 'base', 'EUR')
|
||||
vals = {}
|
||||
vals['chart_template_id'] = c.chart_template_id
|
||||
vals['sale_tax'] = sales_tax_ids[0]
|
||||
vals['purchase_tax'] = purchase_tax_ids[0]
|
||||
vals['company_id'] = 1 # Default
|
||||
vals['company_id'] = 1 # Default
|
||||
vals['currency_id'] = currency_id
|
||||
wizard_id = self._execute('wizard.multi.charts.accounts', 'create', vals)
|
||||
self._execute('wizard.multi.charts.accounts', 'action_next', [wizard_id])
|
||||
|
|
@ -426,7 +430,7 @@ class CamadeusFunctions():
|
|||
return False
|
||||
|
||||
# Update names
|
||||
for uom_xml_id,name in c.active_uoms.items():
|
||||
for uom_xml_id, name in c.active_uoms.items():
|
||||
uom_id = self._execute('ir.model.data', 'xmlid_to_res_id', uom_xml_id)
|
||||
res = self._execute('product.uom', 'write', [uom_id], {'name': name}, context)
|
||||
if not res:
|
||||
|
|
@ -443,10 +447,13 @@ class CamadeusFunctions():
|
|||
self._execute('account.fiscal.position', 'write', invalid_ids, {'active': False})
|
||||
|
||||
# Mappings inaktiver Steuern löschen (also wenn rechte Seite eine inaktive Steuer ist, wie z. B "strf. i.g.L"))
|
||||
valid_position_ids = self._execute('account.fiscal.position', 'search', [('name', 'in', c.valid_fiscal_positions)])
|
||||
valid_position_ids = self._execute('account.fiscal.position', 'search',
|
||||
[('name', 'in', c.valid_fiscal_positions)])
|
||||
valid_tax_ids = self._execute('account.tax', 'search', [('parent_id', '=', False)])
|
||||
|
||||
position_tax_line_ids = self._execute('account.fiscal.position.tax', 'search', [('position_id', 'in', valid_position_ids), ('tax_dest_id', 'not in', valid_tax_ids)])
|
||||
position_tax_line_ids = self._execute('account.fiscal.position.tax', 'search',
|
||||
[('position_id', 'in', valid_position_ids),
|
||||
('tax_dest_id', 'not in', valid_tax_ids)])
|
||||
vals = {'tax_dest_id': False}
|
||||
return self._execute('account.fiscal.position.tax', 'write', position_tax_line_ids, vals)
|
||||
|
||||
|
|
@ -454,9 +461,9 @@ class CamadeusFunctions():
|
|||
"""Aktualisiere Modul"""
|
||||
|
||||
module_name = self.config.module_name
|
||||
mod_ids = self._execute('ir.module.module', 'search', [('name', '=', module_name),('state', '=', 'installed')])
|
||||
mod_ids = self._execute('ir.module.module', 'search', [('name', '=', module_name), ('state', '=', 'installed')])
|
||||
if not len(mod_ids) == 1:
|
||||
raise Exception('Module "%s" not found or not installed.' % module_name)
|
||||
raise Exception('Module "%s" not found or not installed.' % module_name)
|
||||
|
||||
self._execute('ir.module.module', 'button_upgrade', mod_ids)
|
||||
self._execute('base.module.upgrade', 'upgrade_module', [])
|
||||
|
|
@ -466,9 +473,10 @@ class CamadeusFunctions():
|
|||
"""Installiere Modul"""
|
||||
|
||||
module_name = self.config.module_name
|
||||
mod_ids = self._execute('ir.module.module', 'search', [('name', '=', module_name), ('state', '=', 'uninstalled')])
|
||||
mod_ids = self._execute('ir.module.module', 'search',
|
||||
[('name', '=', module_name), ('state', '=', 'uninstalled')])
|
||||
if not len(mod_ids) == 1:
|
||||
raise Exception('Module "%s" not found or is not in state "uninstalled".' % module_name)
|
||||
raise Exception('Module "%s" not found or is not in state "uninstalled".' % module_name)
|
||||
|
||||
self._execute('ir.module.module', 'button_install', mod_ids)
|
||||
self._execute('base.module.upgrade', 'upgrade_module', [])
|
||||
|
|
@ -484,9 +492,9 @@ class CamadeusFunctions():
|
|||
def uninstall_module(self):
|
||||
"""Deinstalliere Modul"""
|
||||
module_name = self.config.module_name
|
||||
mod_ids = self._execute('ir.module.module', 'search', [('name','=',module_name),('state','=','installed')])
|
||||
mod_ids = self._execute('ir.module.module', 'search', [('name', '=', module_name), ('state', '=', 'installed')])
|
||||
if not len(mod_ids) == 1:
|
||||
raise Exception("Module '%s' not found or is not installed." % module_name)
|
||||
raise Exception("Module '%s' not found or is not installed." % module_name)
|
||||
|
||||
self._execute('ir.module.module', 'button_uninstall', mod_ids)
|
||||
self._execute('base.module.upgrade', 'upgrade_module', [])
|
||||
|
|
@ -495,9 +503,10 @@ class CamadeusFunctions():
|
|||
def cancel_upgrade_module(self):
|
||||
"""Modul Upgrade abbrechen"""
|
||||
module_name = self.config.module_name
|
||||
mod_ids = self._execute('ir.module.module', 'search', [('name','=',module_name),('state','=','to upgrade')])
|
||||
mod_ids = self._execute('ir.module.module', 'search',
|
||||
[('name', '=', module_name), ('state', '=', 'to upgrade')])
|
||||
if not len(mod_ids) == 1:
|
||||
raise Exception("Module '%s' not found or is not installed." % module_name)
|
||||
raise Exception("Module '%s' not found or is not installed." % module_name)
|
||||
|
||||
self._execute('ir.module.module', 'button_upgrade_cancel', mod_ids)
|
||||
return True
|
||||
|
|
@ -520,7 +529,8 @@ class CamadeusFunctions():
|
|||
"""Aktualisiere Modul"""
|
||||
|
||||
for module_name in self.config.modules:
|
||||
mod_ids = self._execute('ir.module.module', 'search', [('name', '=', module_name), ('state', '=', 'installed')])
|
||||
mod_ids = self._execute('ir.module.module', 'search',
|
||||
[('name', '=', module_name), ('state', '=', 'installed')])
|
||||
if not len(mod_ids) == 1:
|
||||
raise Exception('Module "%s" not found or ist not installed.' % module_name)
|
||||
self._execute('ir.module.module', 'button_upgrade', mod_ids)
|
||||
|
|
@ -531,7 +541,8 @@ class CamadeusFunctions():
|
|||
def set_warehouse(self):
|
||||
"""Name des Zentrallagers setzen"""
|
||||
|
||||
is_installed = self._execute('ir.module.module', 'search', [('name', '=', 'stock'), ('state', '=', 'installed')])
|
||||
is_installed = self._execute('ir.module.module', 'search',
|
||||
[('name', '=', 'stock'), ('state', '=', 'installed')])
|
||||
if is_installed:
|
||||
vals = {
|
||||
'name': self.config.warehouse_name or self.config.company_data.get('name', 'Mein Unternehmen'),
|
||||
|
|
@ -547,7 +558,7 @@ class CamadeusFunctions():
|
|||
def set_dmi_noupdate(self):
|
||||
"""DMI: Einträge auf 'no update' setzen"""
|
||||
|
||||
domain = [('module','=','cam_dmi'), ('noupdate', '=', False)]
|
||||
domain = [('module', '=', 'dp_dmi'), ('noupdate', '=', False)]
|
||||
data_ids = self._execute('ir.model.data', 'search', domain)
|
||||
|
||||
vals = {'noupdate': True}
|
||||
|
|
@ -556,7 +567,7 @@ class CamadeusFunctions():
|
|||
def dmi_confirm_inventory(self):
|
||||
"""DMI: Lagerstand einbuchen"""
|
||||
|
||||
dummy,inventory_id = self._execute('ir.model.data', 'get_object_reference', 'cam_dmi','inv_init')
|
||||
dummy, inventory_id = self._execute('ir.model.data', 'get_object_reference', 'dp_dmi', 'inv_init')
|
||||
|
||||
inventory = self._execute('stock.inventory', 'read', inventory_id, ['state'])
|
||||
|
||||
|
|
@ -620,12 +631,13 @@ class CamadeusFunctions():
|
|||
vals = {}
|
||||
vals['res_model'] = 'res.users'
|
||||
vals['file'] = self._readAndReturnFile(self.config.users_file)
|
||||
fields = [u'id', u'name', u'login', u'email', u'groups_id/id', False, u'tz', u'mobile', u'phone', u'function']
|
||||
options = {u'headers': True, u'quoting': u'"', u'separator': u',', u'encoding': u'utf-8'}
|
||||
fields = [u'id', u'name', u'login', u'email', u'groups_id/id', False, u'tz', u'mobile', u'phone',
|
||||
u'function']
|
||||
options = {u'headers': True, u'quoting': u'"', u'separator': u',', u'encoding': u'utf-8'}
|
||||
|
||||
wizard_id = self._execute('base_import.import', 'create', vals)
|
||||
if wizard_id:
|
||||
messages = self._execute('base_import.import', 'do', wizard_id, fields,options)
|
||||
messages = self._execute('base_import.import', 'do', wizard_id, fields, options)
|
||||
if messages:
|
||||
print messages
|
||||
return False
|
||||
|
|
@ -677,11 +689,11 @@ class CamadeusFunctions():
|
|||
def set_default_values(self):
|
||||
"""Defaultwerte für Dokumente setzen"""
|
||||
|
||||
for model,field,value in self.config.default_values:
|
||||
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)
|
||||
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
|
||||
|
|
@ -704,9 +716,9 @@ class CamadeusFunctions():
|
|||
def update_special_values(self):
|
||||
"""Spezialwerte setzen"""
|
||||
|
||||
#Z. B.:
|
||||
# Z. B.:
|
||||
## Lösche alle Anreden außer Herr und Frau
|
||||
#data_deletes = [
|
||||
# data_deletes = [
|
||||
# 'base.res_partner_title_doctor',
|
||||
# 'base.res_partner_title_miss',
|
||||
# 'base.res_partner_title_prof',
|
||||
|
|
@ -715,8 +727,8 @@ class CamadeusFunctions():
|
|||
# 'base.res_partner_title_ltd',
|
||||
# 'sale.email_template_edi_sale',
|
||||
# 'account.email_template_edi_invoice',
|
||||
#]
|
||||
#for xml_id in data_deletes:
|
||||
# ]
|
||||
# for xml_id in data_deletes:
|
||||
# try:
|
||||
# dummy,model,res_id = self._execute('ir.model.data', 'xmlid_lookup', xml_id)
|
||||
# self._execute(model, 'unlink', [res_id])
|
||||
|
|
@ -728,8 +740,8 @@ class CamadeusFunctions():
|
|||
def update_values(self):
|
||||
"""Existierende Daten aktualisieren"""
|
||||
|
||||
for xml_id,vals in self.config.data_updates.items():
|
||||
dummy,model,res_id = self._execute('ir.model.data', 'xmlid_lookup', xml_id)
|
||||
for xml_id, vals in self.config.data_updates.items():
|
||||
dummy, model, res_id = self._execute('ir.model.data', 'xmlid_lookup', xml_id)
|
||||
self._execute(model, 'write', [res_id], vals)
|
||||
|
||||
return True
|
||||
|
|
@ -737,7 +749,7 @@ class CamadeusFunctions():
|
|||
def set_sys_params(self):
|
||||
"""Systemparameter setzen"""
|
||||
|
||||
for key,value in self.config.system_parameters.items():
|
||||
for key, value in self.config.system_parameters.items():
|
||||
param_ids = self._execute('ir.config_parameter', 'search', [('key', '=', key)])
|
||||
vals = {
|
||||
'key': key,
|
||||
|
|
@ -749,6 +761,17 @@ class CamadeusFunctions():
|
|||
self._execute('ir.config_parameter', 'create', vals)
|
||||
return True
|
||||
|
||||
def remove_sys_params(self):
|
||||
"""Systemparameter entfernen"""
|
||||
|
||||
for key, value in self.config.system_parameters_remove_on_rollout.items():
|
||||
print key
|
||||
param_ids = self._execute('ir.config_parameter', 'search', [('key', '=', key)])
|
||||
print param_ids
|
||||
if param_ids:
|
||||
self._execute('ir.config_parameter', 'unlink', param_ids)
|
||||
return True
|
||||
|
||||
def setup_reports(self):
|
||||
"""Berichte konfigurieren"""
|
||||
|
||||
|
|
@ -763,13 +786,13 @@ class CamadeusFunctions():
|
|||
def invalidate_email(self):
|
||||
"""In E-Mail-Adressen @ durch # ersetzen, um unbeabsichtigen E-Mail-Versand zu vermeiden"""
|
||||
|
||||
#E-Mail adressen von res_partner: @ -> #
|
||||
p_ids = self._execute('res.partner', 'search', [('email','ilike','%@%')])
|
||||
# E-Mail adressen von res_partner: @ -> #
|
||||
p_ids = self._execute('res.partner', 'search', [('email', 'ilike', '%@%')])
|
||||
partner = self._execute('res.partner', 'read', p_ids, ['email'])
|
||||
for p in partner:
|
||||
id = p['id']
|
||||
email = p['email']
|
||||
new_email = email.replace('@','#')
|
||||
new_email = email.replace('@', '#')
|
||||
self._execute('res.partner', 'write', [id], {'email': new_email})
|
||||
|
||||
def finance_config(self):
|
||||
|
|
@ -786,10 +809,10 @@ class CamadeusFunctions():
|
|||
"""Anonymisieren der Daten"""
|
||||
|
||||
res = True
|
||||
#res &= self.make_anonymous_one('make_anonymous_partner')
|
||||
#res &= self.make_anonymous_one('make_anonymous_project')
|
||||
#res &= self.make_anonymous_one('make_anonymous_employee')
|
||||
#res &= self.make_anonymous_one('make_anonymous_leads')
|
||||
# res &= self.make_anonymous_one('make_anonymous_partner')
|
||||
# res &= self.make_anonymous_one('make_anonymous_project')
|
||||
# res &= self.make_anonymous_one('make_anonymous_employee')
|
||||
# res &= self.make_anonymous_one('make_anonymous_leads')
|
||||
res &= self.make_anonymous_one('make_anonymous_mailserver')
|
||||
res &= self.make_anonymous_one('make_anonymous_cron')
|
||||
return res
|
||||
|
|
@ -809,27 +832,27 @@ class CamadeusFunctions():
|
|||
ids = self._execute('res.partner', 'search', [])
|
||||
for id in ids:
|
||||
vals = {
|
||||
'name': 'Partner %s' % id,
|
||||
'street': '----',
|
||||
'email': 'test@example.com',
|
||||
}
|
||||
'name': 'Partner %s' % id,
|
||||
'street': '----',
|
||||
'email': 'test@example.com',
|
||||
}
|
||||
self._execute('res.partner', 'write', [id], vals)
|
||||
|
||||
def make_anonymous_project(self):
|
||||
if(self._execute('ir.module.module', 'search', [('name', '=', 'project'), ('state', '=', 'installed')])):
|
||||
if (self._execute('ir.module.module', 'search', [('name', '=', 'project'), ('state', '=', 'installed')])):
|
||||
ids = self._execute('project.project', 'search', [])
|
||||
for id in ids:
|
||||
vals = {
|
||||
'name': 'Projekt %s' % id,
|
||||
}
|
||||
'name': 'Projekt %s' % id,
|
||||
}
|
||||
self._execute('project.project', 'write', [id], vals)
|
||||
|
||||
#Tasks
|
||||
# Tasks
|
||||
ids = self._execute('project.task', 'search', [])
|
||||
for id in ids:
|
||||
vals = {
|
||||
'name': 'Aufgabe %s' % id,
|
||||
}
|
||||
'name': 'Aufgabe %s' % id,
|
||||
}
|
||||
self._execute('project.task', 'write', [id], vals)
|
||||
|
||||
def make_anonymous_employee(self):
|
||||
|
|
@ -837,21 +860,21 @@ class CamadeusFunctions():
|
|||
ids = self._execute('hr.employee', 'search', [])
|
||||
for id in ids:
|
||||
vals = {
|
||||
'name': 'Mitarbeiter %s' % id,
|
||||
'work_email': 'test@example.com',
|
||||
}
|
||||
self._execute('hr.employee','write', [id], vals)
|
||||
'name': 'Mitarbeiter %s' % id,
|
||||
'work_email': 'test@example.com',
|
||||
}
|
||||
self._execute('hr.employee', 'write', [id], vals)
|
||||
|
||||
def make_anonymous_leads(self):
|
||||
if (self._execute('ir.module.module', 'search', [('name', '=', 'crm'), ('state', '=', 'installed')])):
|
||||
ids = self._execute('crm.lead', 'search', [])
|
||||
for id in ids:
|
||||
vals = {
|
||||
'name': 'Lead %s' % id,
|
||||
'email_from': 'test@example.com',
|
||||
'description': '',
|
||||
}
|
||||
ids = self._execute('crm.lead','write', [id], vals)
|
||||
'name': 'Lead %s' % id,
|
||||
'email_from': 'test@example.com',
|
||||
'description': '',
|
||||
}
|
||||
ids = self._execute('crm.lead', 'write', [id], vals)
|
||||
|
||||
def make_anonymous_mailserver(self):
|
||||
server_ids = self._execute('ir.mail_server', 'search', [])
|
||||
|
|
@ -864,3 +887,28 @@ class CamadeusFunctions():
|
|||
cron_ids = self._execute('ir.cron', 'search', [])
|
||||
if cron_ids:
|
||||
self._execute('ir.cron', 'write', cron_ids, {'active': False})
|
||||
|
||||
def set_ext_ids(self):
|
||||
"""ExtIDs für Accounts und Types"""
|
||||
|
||||
# # Konten Ext IDs
|
||||
# lst_accs = ['200000', '330000', '250000', '350000'] # odoo 9 nummern
|
||||
# for acc in lst_accs:
|
||||
# res_id = self._execute('account.account', 'search', [('code', '=', acc)])
|
||||
# # print "---------------------------------------------"
|
||||
# # print acc
|
||||
# # print res_id
|
||||
# vals = {
|
||||
# 'name': 'cust_account_mapp_' + acc,
|
||||
# 'module': 'account',
|
||||
# 'model': 'account.account',
|
||||
# 'res_id': res_id[0],
|
||||
# }
|
||||
# try:
|
||||
# self._execute('ir.model.data', 'create', vals)
|
||||
# except:
|
||||
# print "Fehler Anlage ExtID " + 'cust_account_mapp_' + acc
|
||||
|
||||
|
||||
|
||||
return True
|
||||
|
|
|
|||
Loading…
Reference in New Issue