details:   https://code.tryton.org/tryton/commit/fa4ad2e40f74
branch:    7.4
user:      Cédric Krier <[email protected]>
date:      Sat Jan 03 19:17:20 2026 +0100
description:
        Apply types to SQLite query for the getter of history datetime of 
invoice

        Closes #14463
        (grafted from a5578ab6db855a7b52cdaecb3d1910e319f16e8e)
diffstat:

 modules/account_invoice_history/account.py |  10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diffs (39 lines):

diff -r b0c00edfceea -r fa4ad2e40f74 modules/account_invoice_history/account.py
--- a/modules/account_invoice_history/account.py        Sat Jan 03 13:45:10 
2026 +0100
+++ b/modules/account_invoice_history/account.py        Sat Jan 03 19:17:20 
2026 +0100
@@ -4,9 +4,10 @@
 from sql.conditionals import Greatest
 from sql.functions import CurrentTimestamp
 
+from trytond import backend
 from trytond.model import ModelView, Workflow, fields
 from trytond.pool import Pool, PoolMeta
-from trytond.tools import grouped_slice, reduce_ids
+from trytond.tools import grouped_slice, reduce_ids, sqlite_apply_types
 from trytond.transaction import Transaction
 
 
@@ -58,7 +59,7 @@
         invoice_ids = [i.id for i in invoices]
         datetimes = dict.fromkeys(invoice_ids)
         for ids in grouped_slice(invoice_ids):
-            cursor.execute(*table
+            query = (table
                 .join(party, condition=table.party == party.id)
                 .join(address, condition=table.invoice_address == address.id)
                 .join(identifier, 'LEFT',
@@ -68,10 +69,13 @@
                 .select(table.id,
                     Greatest(table.numbered_at, party.create_date,
                         address.create_date, identifier.create_date,
-                        payment_term.create_date),
+                        payment_term.create_date).as_('history_datetime'),
                     where=reduce_ids(table.id, ids)
                     & (table.numbered_at != Null)
                     & (table.state.in_(cls._history_states()))))
+            if backend.name == 'sqlite':
+                sqlite_apply_types(query, [None, 'DATETIME'])
+            cursor.execute(*query)
             datetimes.update(cursor)
         return datetimes
 

Reply via email to