Fall 4424: Nummernkreise

develop
Ahmed Aly 2017-12-11 12:46:43 +01:00
parent db656cbaa2
commit efd658f91e
4 changed files with 60 additions and 42 deletions

View File

@ -1,12 +1,17 @@
# -*- coding: utf-8 -*-
from __future__ import print_function
import sys
try:
from urllib.parse import urlparse
except ImportError:
from urlparse import urlparse
from .config import Config
from .environments import ENVIRONMENTS, Environment
from .functions import DatenpolFunctions
def main():
def _usage():
print('Verwendung: dp <environment> <command> [<module_name>/<setup_function>]')
@ -145,7 +150,7 @@ def main():
if cmd == 'rollout':
methods = [
'login',
#'set_sequences',
'set_sequences',
#'set_dmi_noupdate',
#'dmi_confirm_inventory',
#'import_users',

View File

@ -2,6 +2,7 @@
from .config import Config
class ConfigGlaser(Config):
def __init__(self):
super(ConfigGlaser, self).__init__()
@ -35,29 +36,28 @@ class ConfigGlaser(Config):
self.sequences = {
'sale.order': {
# 'number_next_actual': 1,
'prefix': 'GL%(y)s',
'padding': 4,
'prefix': 'ATOC%(range_y)s-',
'padding': 6,
'use_date_range': True,
'monthly_date_range': False
},
'account.invoice': {
# 'number_next_actual': 0001,
'prefix': 'GL%(y)s%(month)s',
'padding': 4,
'prefix': '%(range_year)s-',
'padding': 6,
'use_date_range': True,
'monthly_date_range': False
},
# Wenn 'account.invoice_refund' auskommentiert ist, dann wird
# für die Gutschrift der selbe Nummernkreis verwendet
'account.invoice_refund': {
# 'number_next_actual': 0001,
'name': 'Gutschriften',
'implementation': 'no_gap',
'prefix': 'GL%(y)s',
'padding': 4,
'use_date_range': True,
'monthly_date_range': False
},
# 'account.invoice_refund': {
# # 'number_next_actual': 0001,
# 'name': 'Gutschriften',
# 'implementation': 'no_gap',
# 'prefix': 'GL%(y)s',
# 'padding': 4,
# 'use_date_range': True,
# 'monthly_date_range': False
# },
# 'picking.out': {
# # 'number_next_actual': 1,
# 'prefix': 'LS-',
@ -83,4 +83,3 @@ class ConfigGlaser(Config):
self.multi_company_settings = {
'chart_template_id': ('xmlid', 'l10n_at.austria_chart_template')
}

View File

@ -2,6 +2,7 @@
from .config import Config
class ConfigTZA(Config):
def __init__(self):
super(ConfigTZA, self).__init__()
@ -35,29 +36,28 @@ class ConfigTZA(Config):
self.sequences = {
'sale.order': {
# 'number_next_actual': 1,
'prefix': '%(y)s',
'padding': 4,
'prefix': 'ATOC%(range_y)s-',
'padding': 6,
'use_date_range': True,
'monthly_date_range': False
},
'account.invoice': {
# 'number_next_actual': 0001,
'prefix': '%(y)s%(month)s',
'padding': 4,
'prefix': '%(range_year)s-',
'padding': 6,
'use_date_range': True,
'monthly_date_range': False
},
# Wenn 'account.invoice_refund' auskommentiert ist, dann wird
# für die Gutschrift der selbe Nummernkreis verwendet
'account.invoice_refund': {
# 'number_next_actual': 0001,
'name': 'Gutschriften',
'implementation': 'no_gap',
'prefix': '%(y)s',
'padding': 4,
'use_date_range': True,
'monthly_date_range': False
},
# 'account.invoice_refund': {
# # 'number_next_actual': 0001,
# 'name': 'Gutschriften',
# 'implementation': 'no_gap',
# 'prefix': '%(y)s',
# 'padding': 4,
# 'use_date_range': True,
# 'monthly_date_range': False
# },
# 'picking.out': {
# # 'number_next_actual': 1,
# 'prefix': 'LS-',
@ -79,4 +79,3 @@ class ConfigTZA(Config):
# 'padding': 5,
# },
}

View File

@ -1,13 +1,16 @@
# -*- coding: utf-8 -*-
from __future__ import print_function
import base64
import sys
import odoorpc
try:
from urllib.parse import urlparse
except ImportError:
from urlparse import urlparse
class DatenpolFunctions:
class DatenpolFunctions(object):
def __init__(self, environment, config):
self.env = environment
self.config = config
@ -252,9 +255,19 @@ class DatenpolFunctions:
# Angebot
if seq_dict.get('sale.order', False):
s_ids = ir_seq.search([('code', '=', 'sale.order')])
s_ids = ir_seq.search([('code', '=', 'sale.order'), ('company_id', '=', self.company_id.id)])
if not s_ids:
s_ids = ir_seq.search([('code', '=', 'sale.order'), ('company_id', '=', False)])
if len(s_ids) != 1:
s_ids = ir_seq.search([('code', '=', 'sale.order')], limit=1)
if not s_ids:
return False
ir_seq_id = ir_seq.browse(s_ids)
if ir_seq_id.company_id and ir_seq_id.company_id.id != self.company_id.id:
seq_dict['sale.order']['company_id'] = self.company_id.id
s_ids = [ir_seq_id.copy()]
if not ir_seq_id.company_id:
seq_dict['sale.order']['company_id'] = self.company_id.id
if not ir_seq.write(s_ids, seq_dict.get('sale.order')):
return False
@ -275,6 +288,8 @@ class DatenpolFunctions:
return False
# Hole Journal für Ausgangsrechnungen
j_ids = self.odoo.env['account.journal'].search([('code', '=', 'Re.:'), ('company_id', '=', self.company_id.id)])
if not j_ids:
j_ids = self.odoo.env['account.journal'].search([('code', '=', 'Re.:')])
if len(j_ids) != 1:
return False
@ -727,7 +742,7 @@ class DatenpolFunctions:
self.odoo.env['res.partner'].write([id], vals)
def make_anonymous_project(self):
if (self.odoo.env['ir.module.module'].search([('name', '=', 'project'), ('state', '=', 'installed')])):
if self.odoo.env['ir.module.module'].search([('name', '=', 'project'), ('state', '=', 'installed')]):
ids = self.odoo.env['project.project'].search([])
for id in ids:
vals = {
@ -744,7 +759,7 @@ class DatenpolFunctions:
self.odoo.env['project.task'].write([id], vals)
def make_anonymous_employee(self):
if (self.odoo.env['ir.module.module'].search([('name', '=', 'hr'), ('state', '=', 'installed')])):
if self.odoo.env['ir.module.module'].search([('name', '=', 'hr'), ('state', '=', 'installed')]):
ids = self.odoo.env['hr.employee'].search([])
for id in ids:
vals = {
@ -754,7 +769,7 @@ class DatenpolFunctions:
self.odoo.env['hr.employee'].write([id], vals)
def make_anonymous_leads(self):
if (self.odoo.env['ir.module.module'].search([('name', '=', 'crm'), ('state', '=', 'installed')])):
if self.odoo.env['ir.module.module'].search([('name', '=', 'crm'), ('state', '=', 'installed')]):
ids = self.odoo.env['crm.lead'].search([])
for id in ids:
vals = {