From 86cb264579ec814b8e67569888ab4cc270d2796f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Br=C3=BCckl?= Date: Thu, 31 Aug 2017 16:23:13 +0200 Subject: [PATCH] =?UTF-8?q?Sequenzen=20f=C3=BCr=20Odoo=2010?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup/lib/config_at.py | 78 ++++++++++++++++++++++-------------------- setup/lib/functions.py | 43 +++++++++++++---------- 2 files changed, 66 insertions(+), 55 deletions(-) diff --git a/setup/lib/config_at.py b/setup/lib/config_at.py index 315c9887..462cdcca 100644 --- a/setup/lib/config_at.py +++ b/setup/lib/config_at.py @@ -134,45 +134,49 @@ class Config(): self.stock_cost_method = 'average' # [standard], [average], [real] - # Wenn gesetzt, teilen sich Gutschriften und Rechnungen den selben Nummernkreis - self.refund_invoice_sequence = True - self.sequences = { - 'sale.order': { - 'number_next_actual': 1, - 'prefix': 'A-', - 'padding': 5, + 'sale.order': { + # 'number_next_actual': 1, + 'prefix': '%(y)s', + 'padding': 4, + 'use_date_range': True }, -# 'work.order': { -# 'number_next_actual': 1, -# 'prefix': 'AS-', -# 'padding': 5, -# }, -# 'picking.out': { -# #'number_next_actual': 1, -# 'prefix': 'LS/', -# 'padding': 4, -# }, -# 'picking.in': { -# #'number_next_actual': 1, -# 'prefix': 'LS/IN/', -# 'padding': 4, -# }, -# 'picking.int': { -# #'number_next_actual': 1, -# 'prefix': 'LS/INT/', -# 'padding': 4, -# }, -# 'purchase.order': { -# 'number_next_actual': 1, -# 'prefix': 'B-', -# 'padding': 5, -# }, -# 'account.invoice': { -# 'number_next_actual': 2000, -# 'prefix': '15-', -# 'padding': 4, -# }, + 'account.invoice': { + # 'number_next_actual': 0001, + 'prefix': '%(y)s%(month)s', + 'padding': 4, + 'use_date_range': True + }, + # 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 + }, + #'picking.out': { + # # 'number_next_actual': 1, + # 'prefix': 'LS-', + # 'padding': 5, + #}, + # 'picking.in': { + # #'number_next_actual': 1, + # 'prefix': 'LS/IN/', + # 'padding': 4, + # }, + # 'picking.int': { + # #'number_next_actual': 1, + # 'prefix': 'LS/INT/', + # 'padding': 4, + # }, + # 'purchase.order': { + # 'number_next_actual': 1, + # 'prefix': 'B-', + # 'padding': 5, + # }, } self.active_uoms = { diff --git a/setup/lib/functions.py b/setup/lib/functions.py index a9061a20..ad373451 100644 --- a/setup/lib/functions.py +++ b/setup/lib/functions.py @@ -268,7 +268,7 @@ class DatenpolFunctions(): # Hauptsequenz des Picking Types mit diesem code anpassen picking_type_id = self._execute('stock.picking.type', 'search', [('code', '=', code)], 0, 1, 'id')[0] picking_type = self._execute('stock.picking.type', 'read', picking_type_id, ['sequence_id']) - s_id = picking_type['sequence_id'][0] + s_id = picking_type[0]['sequence_id'][0] if not self._execute('ir.sequence', 'write', s_id, seq_dict.get(value)): return False @@ -314,31 +314,38 @@ class DatenpolFunctions(): if not self._execute('ir.sequence', 'write', s_ids, seq_dict.get('purchase.order')): return False - # Rechnungsnummer + # Hole Journal für Ausgangsrechnungen + j_ids = self._execute('account.journal', 'search', [('code', '=', 'Re.:')]) + if len(j_ids) != 1: + return False + journals = self._execute('account.journal', 'read', j_ids, ['refund_sequence', 'sequence_id', 'refund_sequence_id']) + + # Rechnungsnummer if seq_dict.get('account.invoice', False): - j_ids = self._execute('account.journal', 'search', [('code', '=', 'VK')]) - if len(j_ids) != 1: - return False - journals = self._execute('account.journal', 'read', j_ids, ['sequence_id']) s_id = journals[0]['sequence_id'][0] if not self._execute('ir.sequence', 'write', [s_id], seq_dict.get('account.invoice')): return False - # Setzen Gutschriftenkreis - if self.config.refund_invoice_sequence: - j_ids = self._execute('account.journal', 'search', [('code', '=', 'VK')]) - if len(j_ids) != 1: - return False - journals = self._execute('account.journal', 'read', j_ids, ['sequence_id']) - s_id = journals[0]['sequence_id'][0] + # Gutschriftennummer + ref_seq_data = seq_dict.get('account.invoice_refund', False) + if ref_seq_data: + s_id = journals[0]['refund_sequence_id'] and journals[0]['refund_sequence_id'][0] or False + if not s_id: + s_id = self._execute('ir.sequence', 'create', ref_seq_data) + else: + self._execute('ir.sequence', 'write', [s_id], ref_seq_data) + # Wenn Checkbox nicht gesetzt ist, dann setzen - gj_ids = self._execute('account.journal', 'search', [('code', '=', 'GSV')]) - if len(gj_ids) != 1: - return False vals = { - 'sequence_id': s_id, + 'refund_sequence_id': s_id, + 'refund_sequence': True } - self._execute('account.journal', 'write', gj_ids, vals) + self._execute('account.journal', 'write', j_ids, vals) + else: + vals = { + 'refund_sequence': False + } + self._execute('account.journal', 'write', j_ids, vals) return True