This commit is contained in:
2026-08-04 22:24:59 +02:00
parent a007ed2895
commit 2bcbf169cf
2 changed files with 36 additions and 1 deletions

View File

@@ -3080,8 +3080,26 @@ class GeneralLedgerDetail(DescriptionOriginMixin, ModelSQL, ModelView):
payments = Payment.search([('line', '=', self.move_line.id)], limit=1)
return payments[0] if payments else None
@staticmethod
def _resolve_reference(value):
if not value or hasattr(value, '__name__'):
return value
if not isinstance(value, str):
return None
try:
model_name, record_id = value.split(',', 1)
record_id = int(record_id)
except ValueError:
return None
try:
Model = Pool().get(model_name)
except KeyError:
return None
return Model(record_id)
def get_document_field(self, name):
origin = self.move.origin if self.move else None
origin = self._resolve_reference(
self.origin or (self.move.origin if self.move else None))
if origin:
model_name = origin.__name__
if model_name == 'account.invoice':

View File

@@ -2196,5 +2196,22 @@ class AccountTestCase(
'to_date': datetime.date(2026, 1, 31),
})
@with_transaction()
def test_general_ledger_detail_document_field_reference_string(self):
"Test General Ledger Detail document fields resolve reference strings"
pool = Pool()
Detail = pool.get('account.general_ledger.detail')
Party = pool.get('party.party')
party = Party(name='Customer')
party.save()
detail = Detail()
detail.origin = '%s,%s' % (Party.__name__, party.id)
self.assertIsNone(detail.get_document_field('document_number'))
self.assertEqual(detail.get_document_field('document_type'),
party.rec_name)
del ModuleTestCase