[Apex]現在の会計年度を取得するApexコード

2016年12月7日水曜日

Apex Salesforce

開発中のForce.comアプリで、Apexコードから現在の会計年度を取得する必要が出てきました。
Apexの標準クラスからで簡単に取れるかと思いきや、そんなものはないらしいので自分で実装することにしました。

例えばエス・ジーはSalesforceの会計年度設定で「会計年度期首月」を12月、「会計年度の表記」を「期末月に合わせる」としているので、今日が2016年12月1日の場合、会計年度は2017年となります。これをApexコードで取得できるようにします。
↓のコードを参考に、期首月が1月のパターンを考慮しました。

Determine current fiscal year in Apex

【現在の会計年度を取得するApexコード】
Organization org =
    [SELECT FiscalYearStartMonth, UsesStartDateAsFiscalYearName
    FROM Organization WHERE id = :Userinfo.getOrganizationId()];

Integer currentFiscalYear;

Date today = Date.today();
if(org.FiscalYearStartMonth != 1) {
    if (today.month() >= org.FiscalYearStartMonth) {
        if (org.UsesStartDateAsFiscalYearName) {
            currentFiscalYear = today.year();
        } else {
            currentFiscalYear = today.year() + 1;
        }
    } else {
        if (org.UsesStartDateAsFiscalYearName) {
            currentFiscalYear = today.year() - 1;
        } else {
            currentFiscalYear = today.year();
        }
    }
} else {
    currentFiscalYear = today.year();
}
意外とニーズはあると思うので、その内Organizationクラスとかに追加されないですかね~。