Monday, March 8, 2021

Customer Aging Report











 /// <summary>

/// Extension of <c>CustVendBalanceList</c> class

/// </summary>

[ExtensionOf(classStr(CustVendBalanceList))]

final class CustVendBalanceList_CustomerAging_Extension

{

    /// <summary>

    /// numOfBalanceAge

    /// </summary>

    /// <returns></returns>

    public static Counter numOfBalanceAge()

    {

        next numOfBalanceAge();


        const Counter MaximumNumberOfAgingBalances = 9 ;


        return MaximumNumberOfAgingBalances;

    }


}



/// <summary>

/// Extension of <c>CustPostInvoice</c> class

/// </summary>

[ExtensionOf(classStr(CustBalanceList))]

final class CustBalanceList_CustomerAging_Extension

{

    public AccountSumMap_CustomerAging tmpAccountSum_CustomerAging;


    /// <summary>

    /// Constructs the contract that maps aging buckets to their corresponding fields in the <c>CustTmpAccountSum</c> table buffer.

    /// </summary>

    /// <returns>The <c>CustVendBalanceListBucketToBalanceFieldReturn</c> instance with the map of bucket to fields.</returns>

    [Wrappable]

    protected final CustVendBalanceListBucketToBalanceFieldReturn buildBucketToBalanceFieldsMap()

    {

        CustVendBalanceListBucketToBalanceFieldReturn bucketsToFields =  next buildBucketToBalanceFieldsMap();


        bucketsToFields.addBucket(7,

            this.constructCustVendBalanceListBalanceFieldsParameters_CustomerAging(fieldNum(CustTmpAccountSum, CustAgingBalance08),

                fieldNum(CustTmpAccountSum, CustAgingBalance08Cur),

                fieldNum(CustTmpAccountSum, CustAgingBalance08ReportingCurrency)));


        bucketsToFields.addBucket(8,

            this.constructCustVendBalanceListBalanceFieldsParameters_CustomerAging(fieldNum(CustTmpAccountSum, CustAgingBalance09),

                fieldNum(CustTmpAccountSum, CustAgingBalance09Cur),

                fieldNum(CustTmpAccountSum, CustAgingBalance09ReportingCurrency)));


        return bucketsToFields;

    }


    /// <summary>

    /// constructCustVendBalanceListBalanceFieldsParameters_CustomerAging

    /// </summary>

    /// <param name = "_balanceAmountMSTField"></param>

    /// <param name = "_balanceAmountCurField"></param>

    /// <param name = "_balanceReportingAmountField"></param>

    /// <returns></returns>

    private CustVendBalanceListBalanceFieldsParameters constructCustVendBalanceListBalanceFieldsParameters_CustomerAging(FieldId _balanceAmountMSTField, FieldId _balanceAmountCurField, FieldId _balanceReportingAmountField)

    {

        CustVendBalanceListBalanceFieldsParameters param = CustVendBalanceListBalanceFieldsParameters::construct();

        param.balanceMSTField = _balanceAmountMSTField;

        param.balanceCurField = _balanceAmountCurField;

        param.balanceReportingCurrencyField = _balanceReportingAmountField;


        return param;

    }


    /// <summary>

    /// COC for insertIntoTmpAccountSumV2

    /// </summary>

    /// <param name = "_agingCalculation"></param>

    /// <param name = "_withAmountCur"></param>

    /// <param name = "_withAmountMST"></param>

    /// <param name = "_withAmountMSTSecondary"></param>

    /// <param name = "_toCustVendTable"></param>

    protected void insertIntoTmpAccountSumV2(CustVendAgingCalculation _agingCalculation, boolean _withAmountCur, boolean _withAmountMST, boolean _withAmountMSTSecondary, CustVendTable _toCustVendTable)

    {

        next insertIntoTmpAccountSumV2(_agingCalculation, _withAmountCur, _withAmountMST, _withAmountMSTSecondary, _toCustVendTable);


        tmpAccountSum_CustomerAging = custTmpAccountSum;

    }


    /// <summary>

    /// getSpecificSourceCurrency

    /// </summary>

    /// <param name = "_accountNum"></param>

    /// <param name = "_currencyCode"></param>

    /// <param name = "_isSourceCurrency"></param>

    /// <returns></returns>

    public container getSpecificSourceCurrency(AccountNum _accountNum, CurrencyCode _currencyCode, boolean _isSourceCurrency)

    {

        

        next getSpecificSourceCurrency(_accountNum, _currencyCode, _isSourceCurrency);


        

        if (_isSourceCurrency)

        {

            select sum(Balance02Cur),

                sum(Balance03Cur),

                sum(Balance04Cur),

                sum(Balance05Cur),

                sum(Balance06Cur),

                sum(Balance07Cur),

                    sum(CustAgingBalance08Cur),

                    sum(CustAgingBalance09Cur)

            from tmpAccountSum_CustomerAging

            where tmpAccountSum_CustomerAging.AccountNum == _accountNum

                && tmpAccountSum_CustomerAging.CurrencyCode == _currencyCode;


            return [tmpAccountSum_CustomerAging.Balance02Cur, tmpAccountSum_CustomerAging.Balance03Cur, tmpAccountSum_CustomerAging.Balance04Cur, tmpAccountSum_CustomerAging.Balance05Cur, tmpAccountSum_CustomerAging.Balance06Cur, tmpAccountSum_CustomerAging.Balance07Cur, tmpAccountSum_CustomerAging.CustAgingBalance08Cur, tmpAccountSum_CustomerAging.CustAgingBalance09Cur];

        }

        else

        {

            select sum(Balance02),

                    sum(Balance03),

                    sum(Balance04),

                    sum(Balance05),

                    sum(Balance06),

                    sum(Balance07),

                    sum(CustAgingBalance08),

                    sum(CustAgingBalance09)

            from tmpAccountSum_CustomerAging

            where tmpAccountSum_CustomerAging.AccountNum == _accountNum

                && tmpAccountSum_CustomerAging.CurrencyCode != _currencyCode;


            return [tmpAccountSum_CustomerAging.Balance02, tmpAccountSum_CustomerAging.Balance03, tmpAccountSum_CustomerAging.Balance04, tmpAccountSum_CustomerAging.Balance05, tmpAccountSum_CustomerAging.Balance06, tmpAccountSum_CustomerAging.Balance07, tmpAccountSum_CustomerAging.CustAgingBalance08, tmpAccountSum_CustomerAging.CustAgingBalance09];

        }

    }


}



/// <summary>

/// Extension of <c>CustAgingSnapshot</c> class

/// </summary>

[ExtensionOf(classStr(CustAgingSnapshot))]

final class CustAgingSnapshot_CustomerAging_Extension

{

    /// <summary>

    /// Populates the aging period fields on the <c>CustAging</c> table buffer.

    /// </summary>

    /// <param name = "_custAging">The <c>CustAging</c> table buffer to populate.</param>

    /// <param name = "_columnToAgingPeriodArray">The array storing values for aging period values.</param>

    /// <param name = "_columnToAgingPeriodReportingArray">The array storing values for the reporting currency period values.</param>

    [Wrappable(true)]

    protected final void populateAgingPeriodFieldsForSnapShot(CustAging _custAging,

        Array _columnToAgingPeriodArray,

        Array _columnToAgingPeriodReportingArray)

    {

        next populateAgingPeriodFieldsForSnapShot(_custAging, _columnToAgingPeriodArray, _columnToAgingPeriodReportingArray);

        

        _custAging.AgingPeriod7 += _columnToAgingPeriodArray.value(7);

        _custAging.AgingPeriod8 += _columnToAgingPeriodArray.value(8);

    }


}



/// <summary>

/// CustAgingReportDP_CustomerAging_Extension

/// </summary>

[ExtensionOf(ClassStr(CustAgingReportTmpFromCustTmpAccountSum))]

final class CustAgingReportTmpFromCustTmpAccountSum_CustomerAging_Extension

{

    private static CustAgingReportDPParameters CustAgingReportDPParameters_CustomerAging;

    private static CustAgingReportTmpFromCustTmpAccountSum instance_CustomerAging;


    /// <summary>

    /// Creates a new instance of the <c>VendTmpAccountSumFromVendAgingReportTmp</c> class.

    /// </summary>

    /// <param name = "_custAgingReportDPParameters">

    /// An instance of <c>CustAgingReportDPParameters</c> object.

    /// </param>

    /// <returns>

    /// The instantiated <c>CustTmpAccountSumFromCustAgingReportTmp</c> object.

    /// </returns>

    public static CustAgingReportTmpFromCustTmpAccountSum newFromCustAgingReportDP(CustAgingReportDPParameters _custAgingReportDPParameters)

    {

        instance_CustomerAging = next newFromCustAgingReportDP(_custAgingReportDPParameters);

        CustAgingReportDPParameters_CustomerAging=_custAgingReportDPParameters;

        return instance_CustomerAging;

    }


    /// <summary>

    /// initFieldMapping method

    /// </summary>

    protected void initFieldMapping()

    {

        int custTmpAccountSumDataSourceId = this.getCustTmpAccountSumDataSourceId();


        if (CustAgingReportDPParameters_CustomerAging.reverseAmountsAndHeadings)

        {

            if (CustAgingReportDPParameters_CustomerAging.ledgerCurrencySelection == LedgerCurrencySelection::Accounting)

            {

                this.insertFieldMap(custTmpAccountSumDataSourceId, tableNum(CustTmpAccountSum),  fieldNum(CustTmpAccountSum, CustAgingBalance08), tableNum(CustAgingReportTmp), fieldNum(CustAgingReportTmp, BalanceCustomerAging1));

                this.insertFieldMap(custTmpAccountSumDataSourceId, tableNum(CustTmpAccountSum),  fieldNum(CustTmpAccountSum, CustAgingBalance09), tableNum(CustAgingReportTmp), fieldNum(CustAgingReportTmp, BalanceCustomerAging2));

            }

            else if (CustAgingReportDPParameters_CustomerAging.ledgerCurrencySelection == LedgerCurrencySelection::Reporting)

            {

                this.insertFieldMap(custTmpAccountSumDataSourceId, tableNum(CustTmpAccountSum),  fieldNum(CustTmpAccountSum, CustAgingBalance08ReportingCurrency), tableNum(CustAgingReportTmp), fieldNum(CustAgingReportTmp, BalanceCustomerAging1));

                this.insertFieldMap(custTmpAccountSumDataSourceId, tableNum(CustTmpAccountSum),  fieldNum(CustTmpAccountSum, CustAgingBalance09ReportingCurrency), tableNum(CustAgingReportTmp), fieldNum(CustAgingReportTmp, BalanceCustomerAging2));

            }


            this.insertFieldMap(custTmpAccountSumDataSourceId, tableNum(CustTmpAccountSum),  fieldNum(CustTmpAccountSum, CustAgingBalance08Cur), tableNum(CustAgingReportTmp), fieldNum(CustAgingReportTmp, BalanceCustomerAging1Cur));

            this.insertFieldMap(custTmpAccountSumDataSourceId, tableNum(CustTmpAccountSum),  fieldNum(CustTmpAccountSum, CustAgingBalance09Cur), tableNum(CustAgingReportTmp), fieldNum(CustAgingReportTmp, BalanceCustomerAging2Cur));

        }

        else

        {

            if (CustAgingReportDPParameters_CustomerAging.ledgerCurrencySelection == LedgerCurrencySelection::Accounting)

            {

                this.insertFieldMap(custTmpAccountSumDataSourceId, tableNum(CustTmpAccountSum),  fieldNum(CustTmpAccountSum, CustAgingBalance08), tableNum(CustAgingReportTmp), fieldNum(CustAgingReportTmp, BalanceCustomerAging1));

                this.insertFieldMap(custTmpAccountSumDataSourceId, tableNum(CustTmpAccountSum),  fieldNum(CustTmpAccountSum, CustAgingBalance09), tableNum(CustAgingReportTmp), fieldNum(CustAgingReportTmp, BalanceCustomerAging2));

            }

            else if (CustAgingReportDPParameters_CustomerAging.ledgerCurrencySelection == LedgerCurrencySelection::Reporting)

            {

                this.insertFieldMap(custTmpAccountSumDataSourceId, tableNum(CustTmpAccountSum),  fieldNum(CustTmpAccountSum, CustAgingBalance08ReportingCurrency), tableNum(CustAgingReportTmp), fieldNum(CustAgingReportTmp, BalanceCustomerAging1));

                this.insertFieldMap(custTmpAccountSumDataSourceId, tableNum(CustTmpAccountSum),  fieldNum(CustTmpAccountSum, CustAgingBalance09ReportingCurrency), tableNum(CustAgingReportTmp), fieldNum(CustAgingReportTmp, BalanceCustomerAging2));

            }


            this.insertFieldMap(custTmpAccountSumDataSourceId, tableNum(CustTmpAccountSum),  fieldNum(CustTmpAccountSum, CustAgingBalance08Cur), tableNum(CustAgingReportTmp), fieldNum(CustAgingReportTmp, BalanceCustomerAging1Cur));

            this.insertFieldMap(custTmpAccountSumDataSourceId, tableNum(CustTmpAccountSum),  fieldNum(CustTmpAccountSum, CustAgingBalance09Cur), tableNum(CustAgingReportTmp), fieldNum(CustAgingReportTmp, BalanceCustomerAging2Cur));

        }


        next initFieldMapping();

    }


}


/// <summary>

/// CustAgingReportDP_CustomerAging_Extension

/// </summary>

[ExtensionOf(ClassStr(CustAgingReportDP))]

final class CustAgingReportDP_CustomerAging_Extension

{

    public TransDate HeadingCustomerAging1;

    public TransDate HeadingCustomerAging2;

    public TransDate HeadingCustomerAging4;

    public TransDate HeadingCustomerAging3;

    public TransTxt HeadingAgingBucketDescriptionCustomerAging1;

    public TransTxt HeadingAgingBucketDescriptionCustomerAging2;

    public TransDate tempHeadingCustomerAging3;


    #define.emptyString(' ')


    /// <summary>

    /// Inserts records into the temporary <c>CustAgingReportTmp</c> table.

    /// </summary>

    /// <param name="_reverseAmountsAndHeadings">

    /// A Boolean value that indicates whether the column values should be reversed.

    /// </param>

    /// <returns>

    /// The custAgingReportTmp transaction that needs to be inserted.

    /// </returns>

    protected CustAgingReportTmp insertCustAgingReportTmp(boolean _reverseAmountsAndHeadings)

    {

        HeadingAgingBucketDescriptionCustomerAging1=this.headingAgingBucketDescription(8);

        HeadingAgingBucketDescriptionCustomerAging2=this.headingAgingBucketDescription(9);


        HeadingCustomerAging1=this.custVendBalanceList.startdate(8);

        HeadingCustomerAging2=this.custVendBalanceList.enddate(8);


        tempHeadingCustomerAging3=this.custVendBalanceList.startdate(9);

        if(tempHeadingCustomerAging3 != Global::DateNull())

        {

            HeadingCustomerAging3=tempHeadingCustomerAging3;

        }

        HeadingCustomerAging4=this.custVendBalanceList.enddate(9);


        CustAgingReportTmp custAgingReportTmp=  next insertCustAgingReportTmp(_reverseAmountsAndHeadings);


        this.onExecuted(custAgingReportTmp,_reverseAmountsAndHeadings);

        return custAgingReportTmp;

    }


    /// <summary>

    /// 

    /// </summary>

    /// <param name = "custAgingReportTmp"></param>

    /// <param name = "_reverseAmountsAndHeadings"></param>

    public void onExecuted(CustAgingReportTmp custAgingReportTmp, boolean _reverseAmountsAndHeadings)

    {

        update_recordset custAgingReportTmp

                setting HeadingCustomerAging1=this.HeadingCustomerAging1,

            HeadingCustomerAging2=this.HeadingCustomerAging2,

            HeadingCustomerAging3=this.HeadingCustomerAging3,

            HeadingCustomerAging4=this.HeadingCustomerAging4,

            HeadingAgingBucketDescriptionCustomerAging1=this.HeadingAgingBucketDescriptionCustomerAging1,

                    HeadingAgingBucketDescriptionCustomerAging2=this.HeadingAgingBucketDescriptionCustomerAging2;

    }


    /// <summary>

    ///    Gets the heading description.

    /// </summary>

    /// <returns>

    ///    The heading text.

    /// </returns>

    [Wrappable(true)]

    public final TransTxt headingAgingBucketDescription(int HeadingNumber)

    {

        if (contract.parmAgingBuckets() && contract.parmPrintAgingBucketDescription())

        {

            return strFmt('%1', custVendBalanceList.getDescription(HeadingNumber));

        }

        else

        {

            return #emptyString;

        }

    }


}


/// <summary>

/// CustAgingReportControllerCustomerAgingExtension

/// </summary>

class CustAgingReportControllerCustomerAgingExtension extends CustAgingReportController

{

    /// <summary>

    /// construct method for CustAgingReportControllerCustomerAgingExtension class

    /// </summary>

    /// <returns></returns>

    public static CustAgingReportControllerCustomerAgingExtension construct()

    {

        return new CustAgingReportControllerCustomerAgingExtension();

    }


    /// <summary>

    /// main method

    /// </summary>

    /// <param name = "_args"></param>

    public static void main(Args _args)

    {

        SrsReportRunController formLetterController = CustAgingReportControllerCustomerAgingExtension::construct();

        CustAgingReportControllerCustomerAgingExtension controller = formLetterController;

        controller.parmReportName(ssrsReportStr(CustAgingReport_CustomerAging, DesignWithNoDetailAndNoTransactionCur));

        controller.parmArgs(_args);

        controller.startOperation();

    }


    /// <summary>

    /// getReportName method

    /// </summary>

    /// <param name = "_contract"></param>

    /// <returns></returns>

    protected str getReportName(CustAgingReportContract _contract)

    {

        str reportNameLocal;


        if (_contract.parmDetailed())

        {

            if (_contract.parmIncludeAmountCur())

            {

                reportNameLocal = ssrsReportStr(CustAgingReport_CustomerAging, DesignWithDetailAndWithTransactionCur);

            }

            else

            {

                reportNameLocal = ssrsReportStr(CustAgingReport_CustomerAging, DesignWithDetailAndNoTransactionCur);

            }

        }

        else

        {

            if (_contract.parmIncludeAmountCur())

            {

                reportNameLocal = ssrsReportStr(CustAgingReport_CustomerAging, DesignWithNoDetailAndWithTransactionCur);

            }

            else

            {

                reportNameLocal = ssrsReportStr(CustAgingReport_CustomerAging, DesignWithNoDetailAndNoTransactionCur);

            }

        }


        return reportNameLocal;

    }


}

No comments:

Post a Comment

How get primary email of customer or vendor

Below code is for customer only, for vendor we need to replace  CustTable  with VendTable.   dirPartyContactInfoView        dirPartyContactI...