details: https://code.tryton.org/tryton/commit/6b2455dc2c19
branch: default
user: Cédric Krier <[email protected]>
date: Fri Apr 17 10:01:31 2026 +0200
description:
Abstract the iteration for line items and vat taxes feedback for Typless
The generators can be extended for other type of result.
Closes #14781
diffstat:
modules/document_incoming_ocr_typless/document.py | 24 +++++++++++++++++++++-
1 files changed, 22 insertions(+), 2 deletions(-)
diffs (66 lines):
diff -r 4a6e16fdbcc2 -r 6b2455dc2c19
modules/document_incoming_ocr_typless/document.py
--- a/modules/document_incoming_ocr_typless/document.py Thu Apr 16 23:00:54
2026 +0200
+++ b/modules/document_incoming_ocr_typless/document.py Fri Apr 17 10:01:31
2026 +0200
@@ -196,7 +196,7 @@
lines = []
getter = getattr(
self, f'_typless_feedback_payload_line_items_{document.type}')
- for line in source.line_lines:
+ for line in self._typless_feedback_payload_line_items(source):
line_item = []
for name in line_items:
value = getter(line, name)
@@ -210,7 +210,7 @@
taxes = []
getter = getattr(
self, f'_typless_feedback_payload_vat_rates_{document.type}')
- for tax_line in source.taxes:
+ for tax_line in self._typless_feedback_payload_vat_rates(source):
percentage = getter(tax_line, 'vat_rate_percentage')
net = getter(tax_line, 'vat_rate_net')
if percentage and net:
@@ -228,10 +228,16 @@
if name == 'document_type':
return document.type
+ def _typless_feedback_payload_line_items(self, record):
+ yield from []
+
def _typless_feedback_payload_line_items_document_incoming(
self, line, name):
pass
+ def _typless_feedback_payload_vat_rates(self, record):
+ yield from []
+
def _typless_feedback_payload_vat_rates_document_incoming(
self, tax_line, name):
pass
@@ -354,6 +360,13 @@
elif name == 'purchase_orders':
return invoice.origins
+ def _typless_feedback_payload_line_items(self, record):
+ pool = Pool()
+ Invoice = pool.get('account.invoice')
+ yield from super()._typless_feedback_payload_line_items(record)
+ if isinstance(record, Invoice):
+ yield from record.line_lines
+
def _typless_feedback_payload_line_items_supplier_invoice(
self, line, name):
if name == 'product_name':
@@ -377,6 +390,13 @@
elif name == 'purchase_order':
return line.origin_name
+ def _typless_feedback_payload_vat_rates(self, record):
+ pool = Pool()
+ Invoice = pool.get('account.invoice')
+ yield from super()._typless_feedback_payload_vat_rates(record)
+ if isinstance(record, Invoice):
+ yield from record.taxes
+
def _typless_feedback_payload_vat_rates_supplier_invoice(
self, tax_line, name):
if name == 'vat_rate_percentage':