Abstract the iteration for line items and vat taxes feedback for Typless
The generators can be extended for other type of result. Closes #14781
This commit is contained in:
@@ -196,7 +196,7 @@ class IncomingOCRService(metaclass=PoolMeta):
|
||||
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 @@ class IncomingOCRService(metaclass=PoolMeta):
|
||||
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 @@ class IncomingOCRService(metaclass=PoolMeta):
|
||||
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 @@ class IncomingOCRService_IncomingInvoice(metaclass=PoolMeta):
|
||||
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 @@ class IncomingOCRService_IncomingInvoice(metaclass=PoolMeta):
|
||||
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':
|
||||
|
||||
Reference in New Issue
Block a user