X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=wizard%2Faccount_export_csv.py;h=bcd82e996c7c64500250cafceb712295fa9c2553;hb=refs%2Fheads%2F7.0;hp=2bd51d52e896c7c5e2549846a9c42b22c2562363;hpb=ec14f70926a1c288afc268a6c80e726f0a750c93;p=burette%2Fetudesetchantiersidf.git diff --git a/wizard/account_export_csv.py b/wizard/account_export_csv.py index 2bd51d5..bcd82e9 100644 --- a/wizard/account_export_csv.py +++ b/wizard/account_export_csv.py @@ -3,7 +3,7 @@ # # etudesetchantiersidf module for OpenERP, Custom module for Étude et # Chantiers île-de-France -# Copyright (C) 2014-2022 etudesetchantiersidf +# Copyright (C) 2014-2023 etudesetchantiersidf # () # # This file is a part of etudesetchantiersidf @@ -30,8 +30,8 @@ import csv import codecs import calendar import datetime +import string -import openerp.exceptions from openerp.osv import osv from openerp.tools.translate import _ from openerp.addons.account_export_csv.wizard.account_export_csv import AccountUnicodeWriter @@ -77,7 +77,7 @@ class AccountCSVExport(osv.osv_memory): } def _get_header_sage(self, cr, uid, ids, context=None): - """docstring for _get_header_sage""" + """Return header for SAGE export""" return [_(u'Code du journal'), _(u'N° de pièce'), _(u'Date'), @@ -90,23 +90,41 @@ class AccountCSVExport(osv.osv_memory): _(u'Crédit'), ] + def format_row_sage(self, dico, numero_piece, side): + """Return a formatted row for SAGE export""" + if side == "D": + debit = dico['debit'] + credit = 0 + if side == "C": + debit = 0 + credit = dico['credit'] + return [ + dico['journal_code'], + numero_piece, + dico['date'], + dico['account_code'], + dico['compte_tiers'], + dico['general_analytic'], + dico['analytic_account'], + dico['client_name'], + debit, + credit, + ] + def _get_rows_sage(self, cr, uid, ids, fiscalyear_id, period_range_ids, journal_ids, account_ids=None, context=None): - fiscalyear_obj = self.pool.get('account.fiscalyear') - fiscalyear_code = fiscalyear_obj.browse(cr, uid, fiscalyear_id, context=context) - fiscalyear_code = fiscalyear_obj.browse(cr, uid, fiscalyear_id, context=context).code - period_obj = self.pool.get('account.period') journal_obj = self.pool.get('account.journal') account_obj = self.pool.get('account.account') + account_type_obj = self.pool.get('account.account.type') numero_piece = 0 prev_period = 0 prev_journal = 0 - req = """ + cr.execute(""" select aml.period_id, aml.journal_id as journal_id, @@ -127,95 +145,61 @@ class AccountCSVExport(osv.osv_memory): period_id, journal_id, account_id - """ % { - 'period_ids': tuple(period_range_ids), - 'journal_ids': tuple(journal_ids), - 'account_ids': tuple(account_ids), - } - cr.execute(req) + """, + { + 'period_ids': tuple(period_range_ids), + 'journal_ids': tuple(journal_ids), + 'account_ids': tuple(account_ids), + } + ) res = cr.fetchall() rows = [] for line in res: + dico = {} journal = journal_obj.browse(cr, uid, line[1], context=context) - journal_code = journal.code[0:2] + dico['journal_code'] = journal.code[0:2] + if dico['journal_code'] in ('BQ', 'CB'): + dico['journal_code'] = 'OD' period = period_obj.browse(cr, uid, line[0], context=context) if prev_journal != journal or prev_period != period: numero_piece += 1 year = int(period.code[3:7]) month = int(period.code[0:2]) day = calendar.monthrange(year, month)[1] - date = datetime.datetime(year, month, day).strftime("%d/%m/%Y") + dico['date'] = datetime.datetime(year, month, day).strftime( + "%d/%m/%Y") account = account_obj.browse(cr, uid, line[2], context=context) - account_code = account.code - client_name = journal.name.split(" - ", 1)[1].upper() + dico['account_code'] = account.code + preformatted_client_name = journal.name.split(" - ", 1)[1].upper().replace(' ', '') + for char in string.punctuation: + preformatted_client_name = preformatted_client_name.replace( + char, '') + dico['client_name'] = preformatted_client_name if account.type in ("receivable", "payable"): - compte_tiers = client_name - else: - compte_tiers = "" - general_analytic = "G" - analytic_account = "" - debit = line[3] - credit = line[4] - if debit == credit: - pass + dico['compte_tiers'] = dico['client_name'] else: - if debit: - rows.append([ - journal_code, - numero_piece, - date, - account_code, - compte_tiers, - general_analytic, - analytic_account, - client_name, - debit, - 0, - ]) - if credit: - rows.append([ - journal_code, - numero_piece, - date, - account_code, - compte_tiers, - general_analytic, - analytic_account, - client_name, - 0, - credit, - ]) - if account.type == "other": - general_analytic = "A" - analytic_account = journal.code[3:] - if debit: - rows.append([ - journal_code, - numero_piece, - date, - account_code, - compte_tiers, - general_analytic, - analytic_account, - client_name, - debit, - 0, - ]) - if credit: - rows.append([ - journal_code, - numero_piece, - date, - account_code, - compte_tiers, - general_analytic, - analytic_account, - client_name, - 0, - credit, - ]) - - + dico['compte_tiers'] = "" + dico['general_analytic'] = "G" + dico['analytic_account'] = "" + dico['debit'] = line[3] + dico['credit'] = line[4] + if dico['debit']: + row = self.format_row_sage(dico, numero_piece, "D") + rows.append(row) + if dico['credit']: + row = self.format_row_sage(dico, numero_piece, "C") + rows.append(row) + account_type = account_type_obj.browse( + cr, uid, account.user_type.id, context=context) + if account_type.code in ("expense", "income"): + dico['general_analytic'] = "A" + dico['analytic_account'] = journal.code[2:] + if dico['debit']: + row = self.format_row_sage(dico, numero_piece, "D") + rows.append(row) + if dico['credit']: + row = self.format_row_sage(dico, numero_piece, "C") + rows.append(row) prev_journal = journal prev_period = period