I'm working on a custom NetSuite API that involves postings vendor bills, payments, and so on. One of the requirements is the ability to specify alternate (non-default) accounting periods when creating transactions.
To present users of the external system with a list of accounting periods, I created this simple SuiteQL query.
SELECT AccountingPeriod.ID, AccountingPeriod.PeriodName, ParentPeriod.ID AS ParentPeriodID, ParentPeriod.PeriodName AS ParentPeriodName, AccountingPeriod.StartDate, AccountingPeriod.EndDate, AccountingPeriod.IsPosting, AccountingPeriod.IsAdjust, AccountingPeriod.AllLocked, AccountingPeriod.ARLocked, AccountingPeriod.APLocked, AccountingPeriod.AllowNonGLChanges, AccountingPeriod.LastModifiedDate, AccountingPeriod.Closed, AccountingPeriod.ClosedOnDate FROM AccountingPeriod INNER JOIN AccountingPeriod AS ParentPeriod ON ( ParentPeriod.ID = AccountingPeriod.Parent ) WHERE ( AccountingPeriod.IsInactive = 'F' ) AND ( AccountingPeriod.IsPosting = 'T' ) AND ( AccountingPeriod.IsQuarter = 'F' ) ORDER BY AccountingPeriod.StartDate
The query returns all active, posting periods that are not quarterly summaries. Information about the accounting period, as well as its parent period, are returned. Note that you can filter the list further by excluding locked periods, closed periods, and so on.
If you have any questions about the query shared in this post, please feel free to contact me.