Tuesday, August 29, 2023

Code for how to Create Sales Agreement Cashflow Report


Create Sales Agreement Cash flow Report ??

DP Class 


 public void processReport()

{

    AgreementHeader                     agreementHeader;

    SalesAgreementHeader                salesAgreementHeader;

    AgreementLine                       agreementLine;

    AgreementLineQuantityCommitment     agreementLineQuentatityCommitment;

    WRE_SalesAgreementTempTable         salesAgreementTempTable;


    real                                qty, checkQty, checkPeroid, noOfMonths;

    TransDate                           transDate;

    date                                Pd;


    Query                               query = new Query();

    QueryBuildDataSource                qbdsAgreementHeader,qbdsSalesAgreementHeader,qbdsAgreementLine,qbdsAgreementLineQuantityCommitment;

    QueryBuildRange                     qbrAgreementHeader,qbrSalesAgreementHeader,qbrAgreementLine,qbrAgreementLinrQuantityCommitent;

    QueryRun                            qRun;


    WRESalesAgreementContract           contract;

    contract    =this.parmDataContract();

    fromDate    = contract.parmFormDate();

    toDate     = contract.parmToDate();



    qbdsAgreementHeader      = query.addDataSource(tableNum(AgreementHeader));

    qbdsSalesAgreementHeader = qbdsAgreementHeader.addDataSource(tableNum(SalesAgreementHeader));

    qbdsSalesAgreementHeader.relations(true);


    qbdsAgreementLine = qbdsSalesAgreementHeader.addDataSource(tableNum(AgreementLine));

    qbdsAgreementLine.relations(true);


    qbdsAgreementLineQuantityCommitment = qbdsAgreementLine.addDataSource(tableNum(AgreementLineQuantityCommitment));

    qbdsAgreementLineQuantityCommitment.relations(true);


    qbrAgreementHeader = qbdsAgreementHeader.addRange(fieldNum(AgreementHeader,DefaultAgreementLineExpirationDate));

    qbrAgreementHeader.value(queryRange(fromDate, toDate));



    qRun = new QueryRun(query);

    while(qRun.next())

    {

        agreementHeader                     = qRun.get(tableNum(AgreementHeader));

        salesAgreementHeader                = qRun.get(tableNum(SalesAgreementHeader));

        agreementLine                       = qRun.get(tableNum(AgreementLine));

        agreementLineQuentatityCommitment   = qRun.get(tableNum(AgreementLineQuantityCommitment));



        qty = 0;

        checkQty = 0;

        qty = agreementLineQuentatityCommitment.CommitedQuantity;

        transDate = fromDate;

        noOfMonths = intvNo(toDate, fromDate, intvScale::YearMonth);

        checkQty =0;

        for(checkPeroid =0;checkPeroid<=noOfMonths;checkPeroid++)

        {



           // wRE_SalesAgreementTempTable.clear();


            wRE_SalesAgreementTempTable.ContractId       = salesAgreementHeader.SalesNumberSequence;

            wRE_SalesAgreementTempTable.CustomerAccount  = salesAgreementHeader.CustAccount;

            wRE_SalesAgreementTempTable.LineNumber       = agreementLine.LineNumber;

            wRE_SalesAgreementTempTable.FromDate         = agreementHeader.DefaultAgreementLineEffectiveDate;

            wRE_SalesAgreementTempTable.ToDate           = agreementHeader.DefaultAgreementLineExpirationDate;

            if(checkQty < qty &&   agreementHeader.DefaultAgreementLineEffectiveDate <= transDate)

                // &&agreementHeader.DefaultAgreementLineExpirationDate >= transDate)


            {

            wRE_SalesAgreementTempTable.ProjectionValue  = agreementLineQuentatityCommitment.PricePerUnit;

            checkQty++;


            }

            else

            {

            wRE_SalesAgreementTempTable.ProjectionValue  = 0;

            }

            wRE_SalesAgreementTempTable.Year             = int2str(year(transDate));

            wRE_SalesAgreementTempTable.MonthName        = mthName(mthOfYr(transDate));

            wRE_SalesAgreementTempTable.insert();



            transDate   =   nextMth(transDate);

         }




     }


}

No comments:

Post a Comment

How To Create A WorkFlow In D365F&O

  How To Create Work Flow In D-365 F&O ? What is workflow? A workflow in the dynamics 365 apps is a way that automate business processes...