diff --git a/controllers/main.py b/controllers/main.py index 8e73f2a3cf6dbc76748575db5376cffb9ed98ffc..ae18d7894af984fc938a2da2e596860e02287055 100644 --- a/controllers/main.py +++ b/controllers/main.py @@ -35,18 +35,27 @@ class JournalDatasExport(http.Controller): export_id = request.env["export.journal.type"].browse(int(export)) # Set domain domain = self._get_domain(export_id, export_type, date_start, date_end) + order_by = export_id.order_by if export_id.order_by else "id" # Retrieve lines & set datas lines_to_export = [] if not export_id.group_ids: - aml_ids = request.env["account.move.line"].search(domain) + aml_ids = request.env["account.move.line"].search(domain, order=order_by) lines_to_export = self._get_lines(aml_ids, export_id) else: group_fields = export_id.group_ids.mapped("field_id.name") group_agg = export_id.group_ids.mapped( - lambda f: f"{f.field_id.name}:{f.field_agg}" if f.field_agg else f.field_id.name) + lambda f: f"{f.field_id.name}:{f.field_agg}" + if f.field_agg + else f.field_id.name + ) grouped_lines = request.env["account.move.line"].read_group( - domain, fields=group_fields, groupby=group_agg, lazy=False) + domain, + fields=group_fields, + groupby=group_agg, + orderby=order_by, + lazy=False, + ) for group in grouped_lines: if export_id.is_group_header: header = [self._get_group_name(export_id, group)] diff --git a/models/export_journal_group.py b/models/export_journal_group.py index b29c6d2529e9744995d92da235f9fd6f2b5335ff..26d8131e73f1430913aa63c9d6aaf7bd0a47261b 100644 --- a/models/export_journal_group.py +++ b/models/export_journal_group.py @@ -15,9 +15,9 @@ class ExportJournalGroup(models.Model): comodel_name="ir.model.fields", string="Champ", domain="[('model_id', '=', 'account.move.line'), ('store', '=', True)," - "('ttype', 'not in', " - "['many2many', 'one2many', 'binary', 'integer', 'float'])" - "]", + "('ttype', 'not in', " + "['many2many', 'one2many', 'binary', 'integer', 'float'])" + "]", ) field_type = fields.Selection(related="field_id.ttype") field_agg = fields.Char("Aggregation") diff --git a/models/export_journal_type.py b/models/export_journal_type.py index 8e076bde2bf40d4439f8e800d260d6e199cb6533..6382082d13391396c2b32eaf2917fcfdee010d4d 100644 --- a/models/export_journal_type.py +++ b/models/export_journal_type.py @@ -37,6 +37,10 @@ class ExportJournalType(models.Model): journal_ids = fields.Many2many( comodel_name="account.journal", string="Journaux", copy=True ) + order_by = fields.Char( + string="Ordre d'affichage", + help="Liste des champs du modèle ex: move_id, partner_id", + ) delimiter = fields.Char("Séparateur", default=";") csv_datestyle = fields.Char("Format Date CSV", default="%Y-%m-%d") xls_datestyle = fields.Char("Format Date XLS", default="YYYY-MM-DD") diff --git a/views/export_journal_type.xml b/views/export_journal_type.xml index 44a0988e92ba714d13b3e05c0454c4b31c4c3326..6f459c8f08365690f3dae638f707f5c856fa8bba 100644 --- a/views/export_journal_type.xml +++ b/views/export_journal_type.xml @@ -41,6 +41,7 @@ widget="domain" options='{"model": "account.move.line"}' /> + <field name="order_by" /> </group> </group> <notebook> @@ -49,10 +50,13 @@ La première colonne correspond au nom de l'entête du fichier de sortie.<br /> La deuxième colonne est la valeur de sortie : code python où l'objet <code - >line</code> correspond à un <code>account.move.line</code>.<br - /> + >line</code> correspond à un <code + >account.move.line</code>.<br /> </div> - <field name="fields_ids" context="{'default_export_id': active_id}"> + <field + name="fields_ids" + context="{'default_export_id': active_id}" + > <tree editable="bottom"> <field name="sequence" widget="handle" /> <field name="name" required="1" /> @@ -69,7 +73,10 @@ <field name="is_group_header" /> </group> </group> - <field name="group_ids" context="{'default_export_id': active_id}"> + <field + name="group_ids" + context="{'default_export_id': active_id}" + > <tree editable="bottom"> <field name="sequence" widget="handle" /> <field