Thursday, 9 March 2017

SSRS Contract Class in AX 2012

[
    DataContractAttribute,
    SysOperationContractProcessingAttribute(classstr(GOD_RevenueUIBuilder))
]
class GOD_RevenueContract
{
    FromDate    fromDate;
    ToDate      toDate;
    List        verticalDimensionList;
}


[DataMemberAttribute("fromDate")]
public FromDate parmFromDate(FromDate _fromDate = fromDate)
{
    fromDate = _fromDate;
    return fromDate;
}


[DataMemberAttribute("toDate")]
public ToDate parmToDate(ToDate _toDate = toDate)
{
    toDate = _toDate;
    return toDate;
}


[
    DataMemberAttribute("verticalDimensionList"),
    AifCollectionTypeAttribute("verticalDimensionList", Types::String),
    SysOperationLabelAttribute(literalStr("@SYS62571"))
]
public List parmverticalDimensionList(List _verticalDimensionList = verticalDimensionList)
{
    verticalDimensionList = _verticalDimensionList;

    return verticalDimensionList;
}





/////////////////////////////////////////////////////////////////////////////////////////////////////
[
    SRSReportParameterAttribute(classStr(GOD_RevenueContract))
]
class GOD_RevenueDP extends SRSReportDataProviderBase//SrsReportDataProviderPreProcess//  //
{
    GOD_RevenueContract     contract;
    GOD_RevenueTmp          tempTable;
    ListIterator            dimListIterator;
    FromDate                fromDate;
    ToDate                  toDate;
    #GOD_DefaultDimension
}


[
    SRSReportDataSetAttribute(tableStr(GOD_RevenueTmp))
]
public GOD_RevenueTmp getTmpTable()
{
    select * from tempTable;

    return tempTable;
}

[SysEntryPointAttribute]
public void processReport()
{
    CustInvoiceJour         custInvoiceJour;
    MainAccount             mainAccount;
    GOD_IntegrationPostingProfile       postingProfile;
    DimensionValue                      dimvalue;
    int                                 dimExists;
    TaxTrans                            taxTrans;
    boolean                 isTaxInserted = false;
    container               vertDims = conNull();
    GOD_GeneralJournalSubledgerVoucher  generalJournalEntry;
    contract = this.parmDataContract() as GOD_RevenueContract;
    fromDate        =   contract.parmFromDate();
    toDate          =   contract.parmToDate();

    if(contract.parmverticalDimensionList())
    {
        dimListIterator = new ListIterator(contract.parmverticalDimensionList());

        while(dimListIterator.more())
        {
            vertDims += dimListIterator.value();

            dimListIterator.next();
        }
    }

    while select LedgerVoucher,InvoiceId,InvoiceDate  from custInvoiceJour
        where custInvoiceJour.InvoiceDate >= fromDate &&
              custInvoiceJour.InvoiceDate <= toDate// && custInvoiceJour.InvoiceId == 'IMTM-000001'
    {
        generalJournalEntry.clear();
        isTaxInserted = false;
        while select Voucher,LedgerDimension,MainAccount,AccountingCurrencyAmount from generalJournalEntry
                            where generalJournalEntry.Voucher == custInvoiceJour.LedgerVoucher
        {
            mainAccount = MainAccount::find(generalJournalEntry.MainAccount);
            select firstonly postingProfile where postingProfile.MainAccountId == mainAccount.MainAccountId;
            if(postingProfile)// || generalJournalEntry.PostingType == LedgerPostingType::ServiceTax_IN)
            {
                dimvalue = conPeek(GOD_getDimAttrFromLedgerDimension(#Vertical,generalJournalEntry.LedgerDimension),1);
                dimExists = conFind(vertDims,dimvalue);
                if(dimExists || !vertDims)
                {
                    tempTable.InvoiceId                 = custInvoiceJour.InvoiceId;
                    tempTable.InvoiceDate               = custInvoiceJour.InvoiceDate;
                    tempTable.DiscAmount                = custInvoiceJour.CashDisc;
                    tempTable.MainAccount               = mainAccount.Name;
                    tempTable.Vertical                  = dimvalue;
                    tempTable.EventName                 = conPeek(GOD_getDimAttrFromLedgerDimension(#Event,generalJournalEntry.LedgerDimension),2);
                    tempTable.AccountingCurrencyAmount  =  generalJournalEntry.AccountingCurrencyAmount;
                    if(isTaxInserted == false)
                    {
                        select sum(TaxAmount) from taxTrans where taxTrans.Voucher == generalJournalEntry.Voucher
                                                                    && taxTrans.GOD_isSBT == NoYes::No;
                                tempTable.STAmount              = taxTrans.TaxAmount;
                        taxTrans.clear();
                        select sum(TaxAmount) from taxTrans where taxTrans.Voucher == generalJournalEntry.Voucher
                                                                && taxTrans.GOD_isSBT == NoYes::Yes;
                            tempTable.SBAmount              = taxTrans.TaxAmount;
                        isTaxInserted = true;
                    }
                    else
                    {
                        tempTable.STAmount = 0;
                        tempTable.SBAmount = 0;
                    }
                    tempTable.insert();
                }
            }
        }
    }
}


///////////////////////


class GOD_RevenueUIBuilder extends SrsReportDataContractUIBuilder
{
    #GOD_DefaultDimension

    DialogField                 dialogfromDate,dialogtoDate,dialogDimName;
    GOD_RevenueContract       contract;
}
public void build()
{
    contract            = this.dataContractObject();
    dialogfromDate      = this.addDialogField(methodStr(GOD_RevenueContract, parmFromDate),contract);
    dialogtoDate        = this.addDialogField(methodStr(GOD_RevenueContract, parmToDate),contract);
    dialogDimName       = this.addDialogField(methodStr(GOD_RevenueContract, parmverticalDimensionList),contract);
    dialogDimName.value("");
    //dialogproductSubGroup.value("");
}

private void dimNameValueLookUp(FormStringControl dimNameLookUp)
{
    Query                   query = new Query();
    container   conDim;
    DimensionAttributeDirCategory   dimAttributeDirCategory;
    DimensionAttribute      dimensionAttribute;
    ;

    select firstonly Type, RecId from dimensionAttribute where dimensionAttribute.Name == #Vertical;
    if(dimensionAttribute.Type == DimensionAttributeType::CustomList)
    {
        select firstonly DirCategory from dimAttributeDirCategory where dimAttributeDirCategory.DimensionAttribute == dimensionAttribute.RecId;

        query.addDataSource(tableNum(DimensionFinancialTag)).

        addRange(fieldNum(DimensionFinancialTag, FinancialTagCategory)).

        value(queryValue(dimAttributeDirCategory.DirCategory));

        SysLookupMultiSelectGrid::lookup(query,dimNameLookUp,dimNameLookUp,conDim);
    }
}



public void getFromDialog()
{
    contract = this.dataContractObject();
    super();
}


public void postBuild()
{
    super();
    dialogfromDate              = this.bindInfo().getDialogField(this.dataContractObject(),methodStr(GOD_RevenueContract, parmFromDate));
    dialogtoDate                = this.bindInfo().getDialogField(this.dataContractObject(),methodStr(GOD_RevenueContract, parmToDate));
    dialogDimName                = this.bindInfo().getDialogField(this.dataContractObject(),methodStr(GOD_RevenueContract, parmverticalDimensionList));

    dialogDimName.registerOverrideMethod(methodStr(FormStringControl, lookup), methodStr(GOD_RevenueUIBuilder,dimNameValueLookUp), this);
    if (dialogDimName)
    {
        dialogDimName.lookupButton(2);
    }
}


public void postRun()
{
    //super();
}




////


[DataContractAttribute,
SysOperationContractProcessingAttribute(classstr(GOD_ServiceTaxPayUIBuilder))]

class GOD_ServiceTaxPayContract_New
{
    DimensionValue      vertical;
    yearBase            fromYear;
}

[DataMemberAttribute("year"),
SysOperationLabelAttribute(literalStr("@IMT197")),
SysOperationHelpTextAttribute(literalStr("@SYS107162")),
SysOperationDisplayOrderAttribute('2')]

public YearBase parmFromYear(YearBase _fromYear = fromYear)
{
    fromYear = _fromYear;
    return fromYear;
}

[DataMemberAttribute("DimensionValue"),
SysOperationLabelAttribute(literalStr("@SYS62571")),
SysOperationHelpTextAttribute(literalStr("@SYS62571")),
SysOperationDisplayOrderAttribute('1')]

public DimensionValue parmVertical(DimensionValue _vertical = vertical)
{
    vertical = _vertical;
    return vertical;
}


//

//////////////////////////////////////////////////////////
[  SRSReportParameterAttribute(classstr(GOD_ServiceTaxPayContract))]

public class GOD_ServiceTaxPayDP extends SRSReportDataProviderBase//SrsReportDataProviderPreProcess//
{
    #define.ServiceTax("Serv. Tax")
    #define.VAT("VAT")
    #GOD_DefaultDimension
    GOD_ServiceTaxPayTmp                    god_ServiceTaxTmp,god_ServiceTaxTmpCust;
    CustInvoiceJour                         custInvoiceJour;
    TaxTrans_IN                             taxTrans;
    MonthsOfYear                            MonthsOfYear;
    TransDate                               fromDate,toDate,curDate;
    Amount                                  preClosingBal;
    DimensionValue                          vertical;
    GeneralJournalAccountEntry              generalJournalAccountEntry;
    YearBase                                fromYear;
}

private Amount getAdditionsAmt(TransDate    _transdate)
{
    TransDate               fromd,tod;
    TaxTrans_IN             taxTransInOpening;
    ;

    fromd   = mkDate(1,mthOfYr(_transdate),year(_transdate));
    tod     = nextMth(fromd);

    select sum(TaxAmount) from taxTransInOpening
        where taxTransInOpening.Source == TaxModuleType::Purch ||
              taxTransInOpening.Source == TaxModuleType::Voucher &&
              taxTransInOpening.TransDate >= fromd &&
              taxTransInOpening.TransDate <= tod;

    return taxTransInOpening.TaxAmount;
}

public boolean getDimensionCombinationValues(GeneralJournalAccountEntry gjAccEntry)
{

    DimensionAttributeValueCombination  dimAttrValueComb;
    DimensionStorage        dimensionStorage;
    DimensionStorageSegment segment;
    int                     segmentCount, segmentIndex;
    int                     hierarchyCount, hierarchyIndex;
    str                     segmentName;
    SysDim                  segmentValue;
    ;

    dimAttrValueComb = DimensionAttributeValueCombination::find(gjAccEntry.LedgerDimension);
    dimensionStorage = DimensionStorage::findById(gjAccEntry.LedgerDimension);
    if (dimensionStorage == null)
    {
        throw error("@SYS83964");
    }
    hierarchyCount = dimensionStorage.hierarchyCount();
    for(hierarchyIndex = 1; hierarchyIndex <= hierarchyCount; hierarchyIndex++)
    {
        segmentCount = dimensionStorage.segmentCountForHierarchy(hierarchyIndex);
        for (segmentIndex = 1; segmentIndex <= segmentCount; segmentIndex++)
        {
            segment = dimensionStorage.getSegmentForHierarchy(hierarchyIndex, segmentIndex);

            if (segment.parmDimensionAttributeValueId() != 0)
            {
                segmentName          = DimensionAttribute::find(DimensionAttributeValue::find(segment.parmDimensionAttributeValueId()).DimensionAttribute).Name;
                segmentValue        = segment.parmDisplayValue();
                if(segmentName == #Vertical && segmentValue == vertical)
                {
                    return true;
                }
                else
                {
                    return false;
                }

            }
        }
    }
    return false;
}


private int getMonthNum(MonthsOfYear _month)
{
    switch(_month)
    {
        case MonthsOfYear::April :
            return 1;
        case MonthsOfYear::May :
            return 2;
        case MonthsOfYear::June :
            return 3;
        case MonthsOfYear::July :
            return 4;
        case MonthsOfYear::August :
            return 5;
        case MonthsOfYear::September :
            return 6;
        case MonthsOfYear::October :
            return 7;
        case MonthsOfYear::November :
            return 8;
        case MonthsOfYear::December :
            return 9;
        case MonthsOfYear::January :
            return 10;
        case MonthsOfYear::February :
            return 11;
        case MonthsOfYear::March :
            return 12;
    }
    return 0;
}


private Amount getOpeningBalance(TransDate    _asOnDate)
{
    TaxTrans_IN                 taxTransInOpening;
    GeneralJournalAccountEntry  generalJournalAccEntry;
    GeneralJournalEntry         generalJournalEntry;
    MainAccount                 mainAccnt;
    Amount                      openingBal;

    while select TaxAmount from taxTransInOpening
        where taxTransInOpening.TransDate < _asOnDate
    join SubledgerVoucher, RecId from generalJournalEntry
        where generalJournalEntry.SubledgerVoucher == taxTransInOpening.Voucher
    join MainAccount, PostingType from generalJournalAccEntry
        where generalJournalAccEntry.GeneralJournalEntry == generalJournalEntry.RecId &&
              generalJournalAccEntry.PostingType == LedgerPostingType::ServiceTax_IN
    join MainAccountId from mainAccnt
        where mainAccnt.RecId == generalJournalAccEntry.MainAccount &&
              mainAccnt.MainAccountId == "2001314"
    {
        if(this.getDimensionCombinationValues(generalJournalAccEntry))
        {
            openingBal += taxTransInOpening.TaxAmount;
        }
    }
    return  openingBal;
}

[SRSReportDataSetAttribute(tablestr(GOD_ServiceTaxPayTmp))]
public GOD_ServiceTaxPayTmp getServiceTaxPayTmpDetails()
{
    select  god_ServiceTaxTmp;

    return  god_ServiceTaxTmp;
}


public void insertFromCustTrans()
{
    TransDate                               currentDate;
    CustTrans                               custTrans;
    DimensionAttributeValueSetItem          dimensionAttributeValueSetItem;
    DimensionAttributeValue                 dimensionAttributeValue;
    DimensionAttribute                      dimensionAttribute;
    TransDate                               fd,td;
    while select forUpdate god_ServiceTaxTmpCust
    {
        if(god_ServiceTaxTmpCust.MonthNumber != 1)
        {
            god_ServiceTaxTmpCust.OpeningBal = preClosingBal;
        }

        if(god_ServiceTaxTmpCust.MonthNumber <= 9)
        {
            fd = mkDate(1,god_ServiceTaxTmpCust.MonthNumber + 3,fromYear);
        }
        else
        {
            fd = mkDate(1,god_ServiceTaxTmpCust.MonthNumber - 9,fromYear + 1);
        }
        td  = endmth(fd);


        select sum(SourceBaseAmountCur) from taxTrans
            where taxTrans.Source == TaxModuleType::FreeTxtInvoice &&
                  taxTrans.TransDate >= fd &&
                  taxTrans.TransDate <= td
        join custTrans
            where taxTrans.Voucher == custTrans.Voucher
        join dimensionAttributeValueSetItem
            where dimensionAttributeValueSetItem.DimensionAttributeValueSet == custTrans.DefaultDimension &&
                dimensionAttributeValueSetItem.DisplayValue == vertical
        join dimensionAttributeValue
            where dimensionAttributeValue.RecId == dimensionAttributeValueSetItem.DimensionAttributeValue
        join dimensionAttribute
            where dimensionAttribute.RecId == dimensionAttributeValue.DimensionAttribute &&
                  dimensionAttribute.Name == #Vertical;

        god_ServiceTaxTmpCust.TaxableAdvance    = abs(taxTrans.SourceBaseAmountCur);

        select sum(SourceBaseAmountCur) from taxTrans
            where taxTrans.Source == TaxModuleType::Voucher &&
                  taxTrans.TransDate >= fd &&
                  taxTrans.TransDate <= td
        join custTrans
            where taxTrans.Voucher == custTrans.Voucher
        join dimensionAttributeValueSetItem
            where dimensionAttributeValueSetItem.DimensionAttributeValueSet == custTrans.DefaultDimension &&
                dimensionAttributeValueSetItem.DisplayValue == vertical
        join dimensionAttributeValue
            where dimensionAttributeValue.RecId == dimensionAttributeValueSetItem.DimensionAttributeValue
        join dimensionAttribute
            where dimensionAttribute.RecId == dimensionAttributeValue.DimensionAttribute &&
                  dimensionAttribute.Name == #Vertical;

        god_ServiceTaxTmpCust.TaxableIncome     = abs(taxTrans.SourceBaseAmountCur);

        select sum(TaxAmount) from taxTrans
            where taxTrans.TaxPeriod == #VAT &&
                  taxTrans.TransDate >= fd &&
                  taxTrans.TransDate <= td
        join custTrans
            where taxTrans.Voucher == custTrans.Voucher
        join dimensionAttributeValueSetItem
            where dimensionAttributeValueSetItem.DimensionAttributeValueSet == custTrans.DefaultDimension &&
                dimensionAttributeValueSetItem.DisplayValue == vertical
        join dimensionAttributeValue
            where dimensionAttributeValue.RecId == dimensionAttributeValueSetItem.DimensionAttributeValue
        join dimensionAttribute
            where dimensionAttribute.RecId == dimensionAttributeValue.DimensionAttribute &&
                  dimensionAttribute.Name == #Vertical;

        god_ServiceTaxTmpCust.VAT               = abs(taxTrans.TaxAmount);

       select sum(TaxAmount) from taxTrans
            where taxTrans.TaxPeriod == #ServiceTax &&
                  taxTrans.TransDate >= fd &&
                  taxTrans.TransDate <= td
        join DefaultDimension, Voucher from custTrans
            where taxTrans.Voucher == custTrans.Voucher
        join DimensionAttributeValue, DisplayValue from dimensionAttributeValueSetItem
            where dimensionAttributeValueSetItem.DimensionAttributeValueSet == custTrans.DefaultDimension &&
                dimensionAttributeValueSetItem.DisplayValue == vertical
        join DimensionAttribute from dimensionAttributeValue
            where dimensionAttributeValue.RecId == dimensionAttributeValueSetItem.DimensionAttributeValue
        join Name from dimensionAttribute
            where dimensionAttribute.RecId == dimensionAttributeValue.DimensionAttribute &&
                  dimensionAttribute.Name == #Vertical;

        god_ServiceTaxTmpCust.ServiceTax            = abs(taxTrans.TaxAmount);

        god_ServiceTaxTmpCust.Total                 = god_ServiceTaxTmpCust.VAT + god_ServiceTaxTmpCust.ServiceTax;

        this.insertFromVendTrans(fd,td);

        if(god_ServiceTaxTmpCust.Total > (god_ServiceTaxTmpCust.Additions + god_ServiceTaxTmpCust.OpeningBal))
        {
            god_ServiceTaxTmpCust.Utilisations      = god_ServiceTaxTmpCust.Additions + god_ServiceTaxTmpCust.OpeningBal;
            god_ServiceTaxTmpCust.ClosingBalance    = 0;
        }
        else
        {
            god_ServiceTaxTmpCust.Utilisations      = god_ServiceTaxTmpCust.Total;
            god_ServiceTaxTmpCust.ClosingBalance    = god_ServiceTaxTmpCust.Utilisations - (god_ServiceTaxTmpCust.Additions + god_ServiceTaxTmpCust.OpeningBal);
        }
        preClosingBal                               = god_ServiceTaxTmpCust.ClosingBalance;

        currentDate = nextMth(fd);
        if(god_ServiceTaxTmpCust.MonthNumber == 12)
        {
            god_ServiceTaxTmpCust.DueDate               = mkDate(31,mthOfYr(fd),year(fd));
        }
        else
        {
            god_ServiceTaxTmpCust.DueDate               = mkDate(5,mthOfYr(currentDate),year(currentDate));
        }

        god_ServiceTaxTmpCust.update();

    }
}

public void insertFromVendTrans(FromDate _fd, ToDate _td)
{
    VendTrans                               vendTrans;
    DimensionAttributeValueSetItem          dimensionAttributeValueSetItem;
    DimensionAttributeValue                 dimensionAttributeValue;
    DimensionAttribute                      dimensionAttribute;

    select sum(TaxAmount) from taxTrans
        where taxTrans.TaxPeriod == #ServiceTax &&
              taxTrans.TransDate >= _fd &&
              taxTrans.TransDate <= _td
    join DefaultDimension, Voucher from vendTrans
        where taxTrans.Voucher == vendTrans.Voucher
    join DimensionAttributeValue, DisplayValue from dimensionAttributeValueSetItem
        where dimensionAttributeValueSetItem.DimensionAttributeValueSet == vendTrans.DefaultDimension &&
              dimensionAttributeValueSetItem.DisplayValue == vertical
    join DimensionAttribute from dimensionAttributeValue
        where dimensionAttributeValue.RecId == dimensionAttributeValueSetItem.DimensionAttributeValue
    join Name from dimensionAttribute
        where dimensionAttribute.RecId == dimensionAttributeValue.DimensionAttribute &&
              dimensionAttribute.Name == #Vertical;

    god_ServiceTaxTmpCust.Additions = taxTrans.TaxAmount;
}


[SysEntryPointAttribute(false)]
public void processReport()
{
    #define.VERTICALS("VERTICALS")


    GOD_ServiceTaxPayContract               dataContract;
    int                                     flag = 0;
    TransDate                               fd;

    delete_from god_ServiceTaxTmp;
    dataContract = this.parmDataContract() as GOD_ServiceTaxPayContract;

    vertical        = dataContract.parmVertical();

    fromYear        = dataContract.parmFromYear();

    fromDate        = mkDate(1,4,fromYear);
    fd              = fromDate;
    toDate          = mkDate(31,3,fromYear+1);

    ttsBegin;
    while(fd < toDate)
    {
        god_ServiceTaxTmp.clear();
        god_ServiceTaxTmp.month                 = str2enum(MonthsOfYear,mthName(mthOfYr(fd)));
        god_ServiceTaxTmp.MonthNumber           = this.getMonthNum(god_ServiceTaxTmp.month);
        god_ServiceTaxTmp.FromDate              = fromDate;
        god_ServiceTaxTmp.ToDate                = toDate;
        if(god_ServiceTaxTmp.MonthNumber == 1)
        {
            god_ServiceTaxTmp.OpeningBal        = this.getOpeningBalance(fromDate);
        }
        else
        {
            god_ServiceTaxTmp.OpeningBal        = 0;
        }
        god_ServiceTaxTmp.insert();

        fd = nextMth(fd);
    }
    this.insertFromCustTrans();
    ttsCommit;
}


private void updateClosingBalance()
{
    GOD_ServiceTaxPayTmp        god_ServiceTaxPayTmpUp;

    while select god_ServiceTaxPayTmpUp
    {
        god_ServiceTaxPayTmpUp.selectForUpdate(true);
        ttsBegin;
        god_ServiceTaxPayTmpUp.Total             = god_ServiceTaxPayTmpUp.VAT + god_ServiceTaxPayTmpUp.ServiceTax;

        if((god_ServiceTaxPayTmpUp.Additions + god_ServiceTaxPayTmpUp.OpeningBal) < god_ServiceTaxPayTmpUp.Total)
        {
            god_ServiceTaxPayTmpUp.OpeningBal       = preClosingBal;
            god_ServiceTaxPayTmpUp.Utilisations     = god_ServiceTaxPayTmpUp.Additions + god_ServiceTaxPayTmpUp.OpeningBal;
            god_ServiceTaxPayTmpUp.NetServiceTax    = god_ServiceTaxPayTmpUp.Total -(god_ServiceTaxPayTmpUp.OpeningBal + god_ServiceTaxPayTmpUp.Additions);
            god_ServiceTaxPayTmpUp.ClosingBalance   = 0;
        }
        else
        {
            god_ServiceTaxPayTmpUp.OpeningBal       = preClosingBal;
            god_ServiceTaxPayTmpUp.Utilisations     = god_ServiceTaxPayTmpUp.Total;
            god_ServiceTaxPayTmpUp.NetServiceTax    = 0;
            god_ServiceTaxPayTmpUp.ClosingBalance   = (god_ServiceTaxPayTmpUp.Additions + god_ServiceTaxPayTmpUp.OpeningBal) - god_ServiceTaxPayTmpUp.Total;
        }
        preClosingBal                               = god_ServiceTaxPayTmpUp.ClosingBalance;
        if((god_ServiceTaxPayTmpUp.DateOfPaym - god_ServiceTaxPayTmpUp.DueDate) > 0)
        {
            god_ServiceTaxPayTmpUp.Delay = god_ServiceTaxPayTmpUp.DateOfPaym - god_ServiceTaxPayTmpUp.DueDate;
        }
        else
        {
           god_ServiceTaxPayTmpUp.Delay  = 0;
        }
        god_ServiceTaxPayTmpUp.update();
        ttsCommit;
    }
}

private void updateServiceTaxPayTmp(GOD_ServiceTaxPayTmp _god_ServiceTaxTmp)
{
    if(_god_ServiceTaxTmp)
    {
        _god_ServiceTaxTmp.selectForUpdate(true);
        ttsBegin;
        if(taxTrans.Source == TaxModuleType::FreeTxtInvoice)
        {
            god_ServiceTaxTmp.TaxableIncome     += abs(taxTrans.SourceBaseAmountCur);
        }
        if(taxTrans.Source == TaxModuleType::Voucher)
        {
            god_ServiceTaxTmp.TaxableAdvance    += abs(taxTrans.SourceBaseAmountCur);
        }
        if(taxTrans.TaxPeriod == #ServiceTax)
        {
            _god_ServiceTaxTmp.ServiceTax       += abs(taxTrans.TaxAmount);
        }
        if(taxTrans.TaxPeriod == #VAT)
        {
            _god_ServiceTaxTmp.VAT              += abs(taxTrans.TaxAmount);
        }
        _god_ServiceTaxTmp.update();
        ttsCommit;
    }


}


///////////////////////
//////////////
class GOD_ServiceTaxPayUIBuilder extends SrsReportDataContractUIBuilder
{
    DialogField                     dialogvertical,dialogyear;
    boolean                         enable;
    GOD_ServiceTaxPayContract       contract;
}

public void build()
{
    contract            = this.dataContractObject();
    dialogvertical      = this.addDialogField(methodStr(GOD_ServiceTaxPayContract, parmVertical),contract);
    dialogyear          = this.addDialogField(methodStr(GOD_ServiceTaxPayContract, parmFromYear),contract);
    dialogvertical.value("");

}

public void getFromDialog()
{
    contract = this.dataContractObject();
    super();
}
public void postBuild()
{
    super();
    dialogvertical  = this.bindInfo().getDialogField(this.dataContractObject(),methodStr(GOD_ServiceTaxPayContract, parmVertical));
    dialogyear      = this.bindInfo().getDialogField(this.dataContractObject(),methodStr(GOD_ServiceTaxPayContract, parmFromYear));
    dialogvertical.registerOverrideMethod(methodStr(FormStringControl, lookup), methodStr(GOD_ServiceTaxPayUIBuilder,verticalLookup), this);

}

private void verticalLookup(FormStringControl verticalLookup)
{
   #define.DimensionName("VERTICALS")
    Query                   query;
    QueryBuildDataSource    qbds,qbds1;
    SysTableLookup          sysTableLookup;
    DimensionAttribute      dimAttr;

    ;

    dimAttr = DimensionAttribute::findByName(#DimensionName);
    sysTableLookup  = SysTableLookup::newParameters(tablenum(DimensionFinancialTag),verticalLookup);

    sysTableLookup.addLookupfield(fieldnum(DimensionFinancialTag, Value));
    sysTableLookup.addLookupfield(fieldNum(DimensionFinancialTag,Description));

    query = new Query();
    qbds = query.addDataSource(tableNum(DimensionFinancialTag));
    qbds1 = qbds.addDataSource(tableNum(DimensionAttributeDirCategory));
    qbds1.addLink(fieldNum(DimensionFinancialTag,FinancialTagCategory),fieldnum(DimensionAttributeDirCategory,RecId));

    qbds1.addRange(fieldNum(DimensionAttributeDirCategory, DimensionAttribute)).value(queryvalue(dimAttr.recid));

    sysTableLookup.parmQuery(query);
    sysTableLookup.parmUseLookupValue(False);
    sysTableLookup.performFormLookup();

}

///////////////

No comments:

Post a Comment

Labels

#veryusefulcode (1) AIF (8) AOT Maps (1) Args (1) Ax 2009 Reports (2) AX 2012 navigation (1) Ax 2012 Interview Questions (1) AX 7 (2) AX Architecture (1) Ax Backup (1) AX Workflow (2) AX2012 (1) AX2012 R2 (1) Ax2012R3 (1) AX2012R3 Dynamics Connector Step by Step Installation and Configuration (1) AX2012R3 EP Step by Step Installation and Configuration EP R3 (1) AX2012R3 HelpServer Step by Step Installation and Configuration (1) AX2012R3 Rapid Start Connector Step by Step Installation and Configuration (1) AX2012R3 Report Server and Analysis Server Step by Step Installation and Configuration (1) AX7 (1) Best practices (1) Blocking user to enter (1) Collection Classes (1) Container (1) D365FO (3) Data Migration Frame Work ax 2012R3 (1) Deleting duplicate Record from Table – Ax2012 (1) Delivery due date notification workflow in Ax 2012 (1) Development Steps EP (1) Dimensions (1) DIXF (1) DMF in Ax 2012 R3 (1) Dynamics Ax 2012 Interview Questions (1) DYNAMICS AX 2012 INTERVIEW QUESTIONS PART 2 (1) DYNAMICS AX 7 (1) EDT relation Migration Tool (1) EP AX 2012 (1) Ep Lookup (1) Error (1) Event Handler (1) F5 (1) File Handling (4) Filter on AX2012 Listpage (1) filtering (2) financial dimensions in AX 2012 (3) form (1) images (1) Installation and Configration (4) Installation and Configuration (11) Installation of Management Reporter 2012 for AX 2012 (1) Interaction class in ax 2012 (1) Interview Question (1) Interview Questions For Ax 2012 (1) Invent DIm (1) Jobs (2) license (1) List page and form menuitem enable code (1) Methods (1) microsoft Dynamics AX 365FO (1) Number Sequence Generation – AX 2012 (5) Number Sequence2012 (1) OLTP-OLAP (1) Passing Args (1) Passing form caller and menu item caller in ax 2012 (1) Passing Multiple Records Args (1) Posting in Ax 2012 (1) POSTING PURCHASE ORDER (1) Query (1) Query Filter Form (2) Query Ranges in X++ (1) Question and Answer (1) Report (1) Reports Controller class (1) RLS in ax 2009 (1) SALES ORDER IMPORT/EXPORT FRAMEWORK BY DMF (1) Security (1) security roles (1) Security Sysqueryrangeutil (1) Sharepoint 2016 (1) SQL SERVER (1) SSRS (2) SSRS Reports Controller class (2) Table collections & Virtual company (1) Time (1) TIPS AND TRICKS (1) Web service AIF (3) Web Services on IIS (AIF) Step by Step Installation and Configuration (1) workflow ax2012 (1) Workflow installation (1) Workflow Method (3) X++ (1)