From e5057d620e6fa299ab44596b04c6c69edf8ed945 Mon Sep 17 00:00:00 2001 From: Benjamin <benjamin@le-filament.com> Date: Wed, 17 Feb 2021 16:40:13 +0100 Subject: [PATCH] [add] export datetime on move.line and wizard filter --- controllers/main.py | 15 +++++++++++---- models/__init__.py | 4 +++- models/account_move_line.py | 10 ++++++++++ wizard/export_journal_wizard.py | 7 +++++-- wizard/export_journal_wizard_view.xml | 4 +++- 5 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 models/account_move_line.py diff --git a/controllers/main.py b/controllers/main.py index 40a7b0f..d070840 100755 --- a/controllers/main.py +++ b/controllers/main.py @@ -2,7 +2,7 @@ # License AGPL-3 or later (http://www.gnu.org/licenses/agpl.html). import csv -from datetime import date +from datetime import date, datetime from io import BytesIO, StringIO from odoo import http @@ -18,7 +18,8 @@ class JournalDatasExport(http.Controller): # ------------------------------------------------------ @http.route('/web/export_journal/', type='http', auth="user") @serialize_exception - def export_journal(self, format, export, date_start, date_end, **kwargs): + def export_journal( + self, format, export, type, date_start, date_end, **kwargs): """ Sélectionne les account.move.line correspondants aux journaux et à la plage de date définis @@ -30,12 +31,15 @@ class JournalDatasExport(http.Controller): :return: file """ export_id = request.env['export.journal.type'].browse(int(export)) - export_line_ids = request.env['account.move.line'].search([ + domain = [ ('date', '>=', date_start), ('date', '<=', date_end), ('journal_id', 'in', export_id.journal_ids.ids), ('company_id', '=', export_id.company_id.id), - ]) + ] + if type == 'empty': + domain += [('date_export', '!=', False)] + export_line_ids = request.env['account.move.line'].search(domain) lines_to_export = [] for line in export_line_ids: row = [] @@ -43,6 +47,9 @@ class JournalDatasExport(http.Controller): value = eval(field.field_name) row.append(value) lines_to_export.append(row) + line.write({ + 'date_export': datetime.now() + }) filename_ = (export_id.company_id.name.title().replace(' ', '') + date_start.replace('-', '') diff --git a/models/__init__.py b/models/__init__.py index e747f4d..c15eeb8 100755 --- a/models/__init__.py +++ b/models/__init__.py @@ -1,4 +1,6 @@ -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +# Copyright 2020 Le Filament (<http://www.le-filament.com>) +# License AGPL-3 or later (http://www.gnu.org/licenses/agpl.html). +from . import account_move_line from . import export_journal_field from . import export_journal_type diff --git a/models/account_move_line.py b/models/account_move_line.py new file mode 100644 index 0000000..9ca8983 --- /dev/null +++ b/models/account_move_line.py @@ -0,0 +1,10 @@ +# Copyright 2020 Le Filament +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models, api + + +class AccountMoveLine(models.Model): + _inherit = 'account.move.line' + + date_export = fields.Datetime('Date export') diff --git a/wizard/export_journal_wizard.py b/wizard/export_journal_wizard.py index f95b8dc..35ce434 100755 --- a/wizard/export_journal_wizard.py +++ b/wizard/export_journal_wizard.py @@ -37,6 +37,9 @@ class ExportJournalWizard(models.TransientModel): domain="[('company_id', '=', company_id)]", default=_get_default_export ) + export_type = fields.Selection( + [('empty', 'Ecritures non exportées'), ('all', 'Toutes les écritures')], + string='Ecritures à exporter', default="empty") def get_data_file(self): """ @@ -46,8 +49,8 @@ class ExportJournalWizard(models.TransientModel): return { 'type': 'ir.actions.act_url', 'url': - '/web/export_journal?format=%s&export=%s' - % (self.export_format, self.export_id.id) + + '/web/export_journal?format=%s&export=%s&type=%s' + % (self.export_format, self.export_id.id, self.export_type) + '&date_start=%s&date_end=%s' % (self.date_start, self.date_end), 'target': 'new', diff --git a/wizard/export_journal_wizard_view.xml b/wizard/export_journal_wizard_view.xml index 56fbc47..4f7ae84 100755 --- a/wizard/export_journal_wizard_view.xml +++ b/wizard/export_journal_wizard_view.xml @@ -12,9 +12,11 @@ <group> <field name="export_id" required="True" options="{'no_create': 1}"/> <field name="company_id" invisible="True"/> + <field name="export_type" widget="radio" /> </group> </group> - + + <p class="text-muted">Les dates de début et de fin sont incluses dans l'export des écritures</p> <group> <group> <field name="date_start"/> -- GitLab