Nama ERP DocsNama ERP Docs
Home
Guides
Examples
GitHub
Home
Guides
Examples
GitHub
  • Home

    • Guides

      • بعض المعلومات عن استعمال هذا الموقع
      • Utility Links
      • System Minimum Requirements
      • Reports Guide (Jasper Reports)
      • Keyboard Shortcuts
      • Layout Names:
      • Field Values Calculator
      • Importing Data from Excel or Queries
      • Tempo Language Manual
      • Sending Invoices and Documents to Customers
      • SMS and WhatsApp Configuration in Nama ERP
      • Field Filter with Criteria
      • تعديل الترجمات في نظام نما
      • Criteria Based Validation
      • Attendance Machine Formula Guide
      • Email By Parameterized Reports In Task Scheduler
      • Nama Properties
      • Customer Reward Points (Loyalty Points)
      • دليل استعمال النقاط الفنية في نقاط البيع
      • ORACLE JDBC Integration Connection in context.xml for integration purposes
    • Examples

      • أمثلة لمسارات كيان
    • Reprocessing Transactions

      • Reprocessing Quantity, Cost, and Stock Ages
      • Accounting Utilities - Ledger and Debt Ages Reprocessing
      • Queries to Check for (and Fix) Cost And Qty Problems
      • Inventory Related Utility Queries
      • Manufacturing Utilities
      • Fixed Assets Module Utilities
      • Real Estate Utilities
      • Database Related Operations
      • General Purpose Utility Queries
      • Replication Utilities
    • Frequently Asked Questions

      • أسئلة عامة
      • أسئلة شائعة عن مسارات الكيان
      • أسئلة في موديول التوزيع والمخازن والمبيعات والمشتريات
      • أسئلة شائعة في موديول الرواتب والموارد البشرية
      • أسئلة شائعة عن تصميم التقارير
      • أسئلة شائعة حول أداة إنشاء التقارير
      • أسئلة شائعة عن الموافقات
      • أسئلة شائعة حول فلترة الحقول

Accounting Utilities - Ledger and Debt Ages Reprocessing

Reprocess All Ledger Transactions

Details
truncate table AccountBalance
go
truncate table DimensionsBalance
go
truncate table LedgerTransLine

go
delete from LedgerTrans
go
delete from BusinessRequestStatus where requestType = 'Delete' and simpleName ='LedgerTransReq'
go
delete from LedgerTransReq where requestType = 'Delete'
go
truncate table LedgerTransSerial
go
update LedgerTransReq set transStatus ='Retry',debtAgesProcessed=0,reqProcessed=0,hasDebtAges=0
go
truncate table DebtLineMatcher
go
delete from DebtLine
go

Reprocess Unmatched Debt Ages Only

Details
with debtAgeReqs as  (
select distinct lr.id,lr.originCode from  LedgerTransReq lr 
inner join UnmatchedManualDebtLine udl on udl.originId = lr.originId or udl.invoiceId = lr.originId
where requestType <> 'Delete' and transStatus = 'Processed'
)
update lr set transStatus = 'Retry',hasDebtAges=1,debtAgesProcessed=0,reqProcessed=1 from
LedgerTransReq lr inner join debtAgeReqs dar on dar.id = lr.id

Reprocess Debt Ages

Details
truncate table DebtLineMatcher
go
truncate table AllManualDebtLines
go
delete from DebtLine
go
truncate table UnmatchedManualDebtLine
go
with debtAgeReqs as  (
select distinct lr.id from  LedgerTransReq lr inner join LedgerTrans lt on lt.requestId = lr.id inner join LedgerTransLine ltr on ltr.ledgerTrans_id = lt.id left join Account acc on acc.id = ltr.account_id
where requestType <> 'Delete'  and acc.trackDebtAges = 1 and transStatus = 'Processed'
)
update lr set transStatus = 'Retry',hasDebtAges=1,debtAgesProcessed=0,priority = 500  from
LedgerTransReq lr inner join debtAgeReqs dar on dar.id = lr.id

Delete Zombie AllManualDebtLines

Details
delete l from AllManualDebtLines l left join EntitySystemEntry e on e.targetId = l.originId
where e.id is null

Fix Contracting Reprocessing Failure

  • Could not find class com.namasoft.modules.supplychain.domain.entities.ContractingMaterialIssue$ContractingMaterialIssueCostCallback
Details
update InvTransReq set
 costCallbackClass = 'com.namasoft.modules.contracting.domain.entities.ContractingMaterialIssue$ContractingMaterialIssueCostCallback' 
where costCallbackClass = 'com.namasoft.modules.supplychain.domain.entities.ContractingMaterialIssue$ContractingMaterialIssueCostCallback'

Allow Changing Currency of An Account After Deleting All its transactions

Details
delete b from AccountBalance b left join Account acc on acc.id = b.account_id where b.creditAmount = 0 and b.debitAmount = 0 and b.localCreditAmount = 0 and b.localDebitAmount = 0
delete b from DimensionsBalance b left join Account acc on acc.id = b.account_id where b.creditAmount = 0 and b.debitAmount = 0 and b.localCreditAmount = 0 and b.localDebitAmount = 0

Tips

You can use Alt Ctrl X shortcut, then open More Menu of Account Screen, and click on Change Balances Currency

تغيير عملة الأرصدة

Then recommit all transactions of the account

Find and Remove zombie ledger transactions

Find Zombie Transactions
select distinct r.originType,r.originId from LedgerTransReq r 
inner join LedgerTrans lr on lr.requestId = r.id
inner join LedgerTransLine l on l.ledgerTrans_id = lr.id
left join EntitySystemEntry e on e.targetId = r.originId
where (e.id is null or e.fileStatus = 'Cancelled' or r.requestType = 'Delete') 

Remove Zombie Transactions
update r set requestType ='Delete',transStatus = 'Retry',reqProcessed=0,debtAgesProcessed=0 from LedgerTransReq r 
inner join LedgerTrans lr on lr.requestId = r.id
inner join LedgerTransLine l on l.ledgerTrans_id = lr.id
left join EntitySystemEntry e on e.targetId = r.originId
where (e.id is null or e.fileStatus = 'Cancelled' or r.requestType = 'Delete') 

Find Unbalanced Transactions (Total Debit <> Total Credit>

Details
select originType,originId,originCode,valueDate,SUM(creditLocalAmount) cr,SUM(debitLocalAmount) dr from LedgerTransLine group by originType,originId,originCode,valueDate
having ABS(SUM(creditLocalAmount)-SUM(debitLocalAmount))>0.0
order by valueDate

Find Transactions for deleted subsidiaries

Details
select l.originCode,l.originType,l.lineNumber+1,l.subsidiaryCode
from LedgerTransLine l left join EntitySystemEntry e on e.targetId = l.subsidiaryId where e.id is null and l.subsidiaryId

Find LedgerTransLine Entries Without Matching DimensionsBalance Records

Identify Orphaned LedgerTransLine Records (No Matching DimensionsBalance)
select originType,originId from LedgerTransLine d
left join DimensionsBalance b 
on d.account_id = b.account_id
and d.legalEntity_id = b.legalEntity_id
and d.sector_id = b.sector_id
and d.analysisSet_id = b.analysisSet_id
and d.branch_id = b.branch_id
and d.department_id = b.department_id
and coalesce(d.entityDimensionId,0x1) = coalesce(b.entityDimensionId, 0x1)
and coalesce(d.subsidiaryId,0x1) = coalesce(b.subsidiaryId, 0x1)
and d.fiscalPeriod_id = b.fiscalPeriod_id
where b.id is null


Warning

You should recommit the result of the previous query

Find Mismatch in Ledger vs DimensionsBalance (By Period, Entity, Account)
with ledger as (
select sum(l.debitValueAmount) dr,sum(l.creditValueAmount) cr,sum(l.debitValueAmount)  - sum(l.creditValueAmount) dr_cr 
, fp.code fpCode, le.code leCode, fp.id fpId, le.id leId,acc.id accId, acc.code accCode
from LedgerTransLine l
left join Account acc on acc.id = l.account_id
left join FiscalPeriod fp on fp.id = l.fiscalPeriod_id
left join LegalEntity le on le.id = l.legalEntity_id
group by fp.code,le.code,fp.id,le.id,acc.id,acc.code
),
dimbal as (
select sum(l.debitAmount) dr,sum(l.creditAmount) cr,sum(l.debitAmount)  - sum(l.creditAmount) dr_cr 
, fp.code fpCode, le.code leCode, fp.id fpId, le.id leId,acc.id accId, acc.code accCode
from DimensionsBalance l
left join Account acc on acc.id = l.account_id
left join FiscalPeriod fp on fp.id = l.fiscalPeriod_id
left join LegalEntity le on le.id = l.legalEntity_id
group by fp.code,le.code,fp.id,le.id,acc.id,acc.code
)
select coalesce(dimbal.fpCode,ledger.fpCode) fpCode,coalesce(dimbal.leCode,ledger.leCode) leCode
, coalesce(dimbal.accCode,ledger.accCode) accCode, dimbal.dr_cr, ledger.dr_cr
 from dimbal 
full join ledger on ledger.fpId = dimbal.fpId 
	and ledger.accId = dimbal.accId
	and ledger.leId = dimbal.leId
where coalesce(dimbal.dr_cr,0) <> coalesce(ledger.dr_cr,0)
  • Fix Incorrect Dimension Balances

Caution

Please be careful before running the following query

Details
with dimbal as (
select
sum(l.debitValueAmount) debitAmount,sum(l.debitLocalAmount) localDebitAmount,sum(l.creditValueAmount) creditAmount,
sum(l.creditLocalAmount) localCreditAmount,
 l.account_id,coalesce(l.subsidiaryId,0x1) subsidiaryId,coalesce(l.subsidiaryEntityType,'') subsidiaryType,coalesce(l.entityDimensionId,0x1) entityDimensionId,coalesce(l.entityDimensionEntityType,'') entityDimensionType,
l.legalEntity_id,l.sector_id,l.branch_id,l.department_id,l.analysisSet_id,
l.fiscalPeriod_id 
from LedgerTransLine l
group by l.account_id,coalesce(l.subsidiaryId,0x1),coalesce(l.subsidiaryEntityType,''),coalesce(l.entityDimensionId,0x1),coalesce(l.entityDimensionEntityType,''),
l.legalEntity_id,l.sector_id,l.branch_id,l.department_id,l.analysisSet_id,
l.fiscalPeriod_id
)
update b set  b.debitAmount = coalesce(d.debitAmount,0),b.localDebitAmount = coalesce(d.localDebitAmount,0),b.creditAmount = coalesce(d.creditAmount,0),b.localCreditAmount = coalesce(d.localCreditAmount,0)
 from DimensionsBalance b 
left join dimbal d on d.account_id = b.account_id
and d.legalEntity_id = b.legalEntity_id
and d.sector_id = b.sector_id
and d.analysisSet_id = b.analysisSet_id
and d.branch_id = b.branch_id
and d.department_id = b.department_id
and d.entityDimensionId = coalesce(b.entityDimensionId, 0x1)
and d.entityDimensionType = coalesce(b.entityDimensionEntityType, '')
and d.subsidiaryId = coalesce(b.subsidiaryId, 0x1)
and d.subsidiaryType = coalesce(b.subsidiaryEntityType, '')
and d.fiscalPeriod_id = b.fiscalPeriod_id
where coalesce(d.debitAmount,0) <> b.debitAmount
or coalesce(d.creditAmount,0)  <> b.creditAmount
or coalesce(d.localDebitAmount,0) <> b.localDebitAmount
or coalesce(d.localCreditAmount,0) <> b.localCreditAmount 

Financial Paper Utilities

Fix Financial Paper Entries after delete:

Details
update fp set lastStatusEntry_id = null from FinancialPaperStatusEntry e left join EntitySystemEntry est on est.targetId = e.originDocId left join FinancialPaper fp on fp.id = e.financialPaper_id
where est.id is null or est.fileStatus = 'Cancelled'
delete e  from FinancialPaperStatusEntry e left join EntitySystemEntry se on se.targetId = e.originDocId left join FinancialPaper p on p.id = e.financialPaper_id where se.id is null or se.fileStatus = 'Cancelled'


update fp set lastStatusEntry_id = fpe.id,status = fpe.toStatus from FinancialPaper fp 
left join FinancialPaperStatusEntry fpe on fpe.financialPaper_id = fp.id and fpe.id =
(select top 1 id from FinancialPaperStatusEntry le where le.financialPaper_id = fp.id order by valueDate desc,creationDate desc)
where fp.lastStatusEntry_id is null and fpe.id is not null


Fix Cancel of Financial Papers

update l set cancelValue = fp.valueAmount from FinancialPaperCancelLine l left join FinancialPaper fp on fp.id = l.paper_id where l.cancelValue is null

Fix Financial Paper Bad Last Status Entry:

Details
select code,fp.creationDate from FinancialPaper fp left join FinancialPaperStatusEntry e on e.id = fp.lastStatusEntry_id
where e.toStatus <> fp.status

update FinancialPaper set lastStatusEntry_id = (select top 1 id from FinancialPaperStatusEntry e where e.financialPaper_id = 0xFFFF00015134C8B294000000FF5C9560 order by valueDate desc,creationDate desc) where id = 0xFFFF00015134C8B294000000FF5C9560

Allow Deleting Zombie Journal Entries After Deleting Closing Entry

Details
update je set fromDoc_id = null,fromDoc_type = null,fromDoc_code = null,fromDoc_actualCode = null from JournalEntry je left join ClosingEntry ce on ce.id = je.fromDoc_id
where je.fromDoc_type = 'ClosingEntry' and ce.id is null

Get Accounts Tree

Details
with x AS
(
	SELECT acc.id accountId,acc.id parentid
    FROM Account acc
	UNION ALL
    SELECT acc.id accountId,ch1.id parentid
    FROM Account acc inner join AccountsChart ch1 on ch1.id = acc.chartWhenDebit_id
	UNION ALL
	SELECT acc.id accountId,ch2.id parentid
    FROM Account acc inner join AccountsChart ch1 on ch1.id = acc.chartWhenDebit_id
	inner join AccountsChart ch2 on ch2.id = ch1.parent_id
	UNION ALL
	SELECT acc.id accountId,ch3.id parentid
    FROM Account acc inner join AccountsChart ch1 on ch1.id = acc.chartWhenDebit_id
	inner join AccountsChart ch2 on ch2.id = ch1.parent_id
	inner join AccountsChart ch3 on ch3.id = ch2.parent_id
	UNION ALL
	SELECT acc.id accountId,ch4.id parentid
    FROM Account acc inner join AccountsChart ch1 on ch1.id = acc.chartWhenDebit_id
	inner join AccountsChart ch2 on ch2.id = ch1.parent_id
	inner join AccountsChart ch3 on ch3.id = ch2.parent_id
	inner join AccountsChart ch4 on ch4.id = ch3.parent_id
	UNION ALL
	SELECT acc.id accountId,ch5.id parentid
    FROM Account acc inner join AccountsChart ch1 on ch1.id = acc.chartWhenDebit_id
	inner join AccountsChart ch2 on ch2.id = ch1.parent_id
	inner join AccountsChart ch3 on ch3.id = ch2.parent_id
	inner join AccountsChart ch4 on ch4.id = ch3.parent_id
	inner join AccountsChart ch5 on ch5.id = ch4.parent_id
	UNION ALL
	SELECT acc.id accountId,ch6.id parentid
    FROM Account acc inner join AccountsChart ch1 on ch1.id = acc.chartWhenDebit_id
	inner join AccountsChart ch2 on ch2.id = ch1.parent_id
	inner join AccountsChart ch3 on ch3.id = ch2.parent_id
	inner join AccountsChart ch4 on ch4.id = ch3.parent_id
	inner join AccountsChart ch5 on ch5.id = ch4.parent_id
	inner join AccountsChart ch6 on ch6.id = ch5.parent_id
	UNION ALL
	SELECT acc.id accountId,ch7.id parentid
    FROM Account acc inner join AccountsChart ch1 on ch1.id = acc.chartWhenDebit_id
	inner join AccountsChart ch2 on ch2.id = ch1.parent_id
	inner join AccountsChart ch3 on ch3.id = ch2.parent_id
	inner join AccountsChart ch4 on ch4.id = ch3.parent_id
	inner join AccountsChart ch5 on ch5.id = ch4.parent_id
	inner join AccountsChart ch6 on ch6.id = ch5.parent_id
	inner join AccountsChart ch7 on ch7.id = ch6.parent_id
	UNION ALL
	SELECT acc.id accountId,ch8.id parentid
    FROM Account acc inner join AccountsChart ch1 on ch1.id = acc.chartWhenDebit_id
	inner join AccountsChart ch2 on ch2.id = ch1.parent_id
	inner join AccountsChart ch3 on ch3.id = ch2.parent_id
	inner join AccountsChart ch4 on ch4.id = ch3.parent_id
	inner join AccountsChart ch5 on ch5.id = ch4.parent_id
	inner join AccountsChart ch6 on ch6.id = ch5.parent_id
	inner join AccountsChart ch7 on ch7.id = ch6.parent_id
	inner join AccountsChart ch8 on ch8.id = ch7.parent_id
	UNION ALL
	SELECT acc.id accountId,ch9.id parentid
    FROM Account acc inner join AccountsChart ch1 on ch1.id = acc.chartWhenDebit_id
	inner join AccountsChart ch2 on ch2.id = ch1.parent_id
	inner join AccountsChart ch3 on ch3.id = ch2.parent_id
	inner join AccountsChart ch4 on ch4.id = ch3.parent_id
	inner join AccountsChart ch5 on ch5.id = ch4.parent_id
	inner join AccountsChart ch6 on ch6.id = ch5.parent_id
	inner join AccountsChart ch7 on ch7.id = ch6.parent_id
	inner join AccountsChart ch8 on ch8.id = ch7.parent_id
	inner join AccountsChart ch9 on ch9.id = ch8.parent_id
	UNION ALL
	SELECT acc.id accountId,ch8.id parentid
    FROM Account acc inner join AccountsChart ch1 on ch1.id = acc.chartWhenDebit_id
	inner join AccountsChart ch2 on ch2.id = ch1.parent_id
	inner join AccountsChart ch3 on ch3.id = ch2.parent_id
	inner join AccountsChart ch4 on ch4.id = ch3.parent_id
	inner join AccountsChart ch5 on ch5.id = ch4.parent_id
	inner join AccountsChart ch6 on ch6.id = ch5.parent_id
	inner join AccountsChart ch7 on ch7.id = ch6.parent_id
	inner join AccountsChart ch8 on ch8.id = ch7.parent_id
	inner join AccountsChart ch9 on ch9.id = ch8.parent_id
	inner join AccountsChart ch10 on ch10.id = ch9.parent_id
	
)
SELECT t.nodeCode treeCode,t2.nodeCode accountCode FROM x 
left join ChartTree t on t.nodeId = x.parentid and t.defaultParentSide = 1
left join ChartTree t2 on t2.nodeId = x.accountId and t2.defaultParentSide =1

ORDER BY t.nodeCode,t2.nodeCode

Fix Deleting Account Problem

If you try to delete an account and then you get a database error “Query optimizer ran out of space”, then do the following: Run the following query, then copy the lines and paste them in a new window and run it

Details
with x as (
SELECT  obj.name AS FK_NAME,
   sch.name AS [schema_name],
   tab1.name AS [table],
   col1.name AS [column],
   tab2.name AS [referenced_table],
   col2.name AS [referenced_column]
FROM sys.foreign_key_columns fkc
INNER JOIN sys.objects obj
   ON obj.object_id = fkc.constraint_object_id
INNER JOIN sys.tables tab1
   ON tab1.object_id = fkc.parent_object_id
INNER JOIN sys.schemas sch
   ON tab1.schema_id = sch.schema_id
INNER JOIN sys.columns col1
   ON col1.column_id = parent_column_id AND col1.object_id = tab1.object_id
INNER JOIN sys.tables tab2
   ON tab2.object_id = fkc.referenced_object_id
INNER JOIN sys.columns col2
   ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id
)
select 'alter table '+[table]+' drop constraint '+FK_NAME from x where referenced_table = 'account' and [table] 

Edit On github
Last Updated:: 5/26/25, 3:09 PM
Prev
Reprocessing Quantity, Cost, and Stock Ages
Next
Queries to Check for (and Fix) Cost And Qty Problems