GL bug
This commit is contained in:
@@ -3080,8 +3080,26 @@ class GeneralLedgerDetail(DescriptionOriginMixin, ModelSQL, ModelView):
|
|||||||
payments = Payment.search([('line', '=', self.move_line.id)], limit=1)
|
payments = Payment.search([('line', '=', self.move_line.id)], limit=1)
|
||||||
return payments[0] if payments else None
|
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):
|
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:
|
if origin:
|
||||||
model_name = origin.__name__
|
model_name = origin.__name__
|
||||||
if model_name == 'account.invoice':
|
if model_name == 'account.invoice':
|
||||||
|
|||||||
@@ -2196,5 +2196,22 @@ class AccountTestCase(
|
|||||||
'to_date': datetime.date(2026, 1, 31),
|
'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
|
del ModuleTestCase
|
||||||
|
|||||||
Reference in New Issue
Block a user