Total Budget

PHOTO EMBED

Tue Feb 25 2025 14:18:27 GMT+0000 (Coordinated Universal Time)

Saved by @MinaTimo

[ExtensionOf(tableStr(PurchReqLine))]
final class PurchReqLine_ADI_Finance_Extension
{
    public display real TotalBudget()
    {
        AccountingDistribution  AccountingDistribution;
        BudgetTransactionHeader BudgetTransactionHeader;
        BudgetTransactionLine   BudgetTransactionLine;
        DimensionAttributeValueCombination  ValueCombination, ValueCombinationBudget;

        select AccountingDistribution where AccountingDistribution.SourceDocumentLine == this.SourceDocumentLine;
        select ValueCombination 
            where ValueCombination.RecId == AccountingDistribution.LedgerDimension
            && ValueCombination.LedgerDimensionType == LedgerDimensionType::Account;
        while select ValueCombinationBudget 
            //where ValueCombinationBudget.DisplayValue == ValueCombination.DisplayValue
            where ValueCombinationBudget.MainAccount == ValueCombination.MainAccount
            && ValueCombinationBudget.LedgerDimensionType == LedgerDimensionType::Budget
        {
            if(this.getAttr(ValueCombination, 'DEPARTMENT') == this.getAttr(ValueCombinationBudget, 'DEPARTMENT')
                && this.getAttr(ValueCombination, 'COSTCENTER') == this.getAttr(ValueCombinationBudget, 'COSTCENTER'))
                break;
        }

        real amount;
        while select BudgetTransactionLine
            join BudgetTransactionHeader
            where BudgetTransactionLine.BudgetTransactionHeader == BudgetTransactionHeader.RecId
            && BudgetTransactionHeader.BudgetModelDataAreaId == curExt()
            && BudgetTransactionHeader.TransactionStatus == BudgetTransactionStatus::Completed
            && BudgetTransactionLine.LedgerDimension == ValueCombinationBudget.RecId
        {
            if(year(BudgetTransactionLine.Date) == year(this.purchReqTable().TransDate))
                amount+=BudgetTransactionLine.TransactionCurrencyAmount;

        }

        return amount;
    }

    protected RecId getAttr(DimensionAttributeValueCombination _combination,
        Name _attributeName)
    {
        DimensionAttributeLevelValueView valueView;
        DimensionAttribute attribute = DimensionAttribute::findByName(_attributeName);
        ;
        select DisplayValue from valueView
            where valueView.ValueCombinationRecId == _combination.recId
            && valueView.DimensionAttribute == attribute.RecId;
        return valueView.EntityInstance;
    }

}
content_copyCOPY