Terkadang pada payment journal, ketika melakukan settlement, ada transaction marking yang lupa di lepas,
dan kesulitannya, pada ax 2012 mencari transaction marking tsb harus di cari satu persatu jurnal yang melakukan marking tersebut. berikut ini adalah cara mencari transaction marking di mana, dengan sedikit custom dan tricks
berikut ini flow nya:
- user membuka payment journal, atau invoice journal
- pilih line nya maka akan masuk ke journal voucher
- pada journal voucher, pilih functions > settlement
- pada settle open transactions akan muncul jendela sbb:
- pada gambar di atas, terlihat salah satu transaksi ada simbol marking (tanda seru merah)
- penyebabnya dikarenakan adanya transaksi jurnal lain yang marking transaksi tersebut
saya membuat sedikit custom pada \Class\SpecTransManager untuk menampilkan pesan transaksi apa yang melakukan marking transaksi ini. berikut ini adalah source codenya
public boolean existForOtherSpec(CompanyId _refCompany, tableId _refTableId, RefRecId _refRecId) { boolean found = false; SpecTrans specTrans; //ronny SpecTrans spt; int markedByOtherResult; #define.MarkedByOther(1) #define.NotInCache(2) ; if (cacheEnabled) { markedByOtherResult = specTransCache.getMarkedByOtherSpec(_refCompany, _refRecId); if (markedByOtherResult != #NotInCache) { found = (markedByOtherResult == #MarkedByOther); } } if (!cacheEnabled || markedByOtherResult == #NotInCache) { // Find corresponding SpecTrans in other spec set if (_refCompany != '' && _refTableId != 0 && _refRecId != 0) { select firstonly crossCompany RecId from specTrans where (specTrans.SpecCompany != specCompany || specTrans.SpecTableId != specTableId || specTrans.SpecRecId != specRecId) && specTrans.RefCompany == _refCompany && specTrans.RefTableId == _refTableId && specTrans.RefRecId == _refRecId; if (cacheEnabled) { specTransCache.addMarkedByOtherSpecInfo(_refCompany, _refRecId, (specTrans.RecId != 0)); } found = (specTrans.RecId != 0); //untuk mengetahui kena kunci dari mana if(found) { select spt where spt.RefRecId==_refRecId; info(strFmt( "lock on %1,%2,RecId %3 issues lock on %4 at recid %5\nharus select manual di database dengan table %4 dan recid %5 tsb", _refCompany, tableid2name(_refTableId), _refRecId, tableid2name(spt.SpecTableId), spt.SpecRecId) ); } } } return found; }
perhatikan pada baris “if(found) {” saya menambahkan custom khusus di mana akan menampilkan transaksi yang menggantungnya
ketika dijalankan ulang maka akan tampil info sbb:
pada tampilan info tersebut akan muncul pesan
lock on tjp,VendTransOpen,RecId 5637608976 issues lock on LedgerJournalTrans at recid 5638686503
harus select manual di database dengan table LedgerJournalTrans dan recid 5638686503 tsb
nah setelah muncul ini, cara selanjut yang mudah adalah buka sql, lalu select * from [table] where recid=[recid]
dimana table nya adalah ledgerJournalTrans, dan recid nya 5638686503
bila sudah ketemu, maka akan ketemu nomor transaksinya, di dalam kasus ini adalah field journalNum
dan journal ini yang melakukan marking pada transaksi tersebut