Thursday, 20 March 2014

In Memory - SSRS reports

ProdCalcTransVarianceDP
===================

Once values are inserted to table, i need to modify and then update to table.

Since in report the temp table is 'Inmemory ' , the ProdCalcTransVarianceDP is applied to only one selected Prodid.

But my requirement is to get all ProdId's if prodid is not selected.
Modified , to  my requirment

/// <summary>
///    The <c>CitProdCalcTransVarianceSumryDP</c> class is the Report Data Provider class for the
///    <c>CitProdCalcTransVarianceSumry</c> report.
/// </summary>
/// REM 3/12/14 - CIT_245_VarianceSummaryReport
[SRSReportParameterAttribute(classStr(CitProdCalcTransVarianceSumryContract)),
 SRSReportQueryAttribute(queryStr(CitProdTableProdCalcTrans))]
class CitProdCalcTransVarianceSumryDP extends SRSReportDataProviderBase
{
    TmpProdStandardVariance         tmpProdStandardVariance;
    TmpProdStandardVariance         tmpProdStandardVarianceAll;
    ProdStandardVariance            prodStandardVariance;
}
private InventItemPrice getItemPrice(ProdTable prodTable)
{
    InventItemPrice inventItemPrice;
    InventCostTrans inventCostTrans;

    select firstonly TableId from inventCostTrans
        where inventCostTrans.InventTransId     == prodTable.InventTransId
            && inventCostTrans.CostTransType     == InventCostTransType::Receipt
            && inventCostTrans.CostTransState    == InventCostTransState::Financial
            && inventCostTrans.CostTransRefType  == InventCostTransRefType::Production
    join inventItemPrice
        where inventItemPrice.RecId == inventCostTrans.ItemPriceRefRecId;

    return inventItemPrice;
}

/// <summary>
/// Retrieves data from the <c>TmpProdStandardVariance</c> table.
/// </summary>
/// <returns>
/// Data from the <c>TmpProdStandardVariance</c> table.
/// </returns>
[SRSReportDataSetAttribute(tableStr(TmpProdStandardVariance))]
public TmpProdStandardVariance getTmpProdStandardVariance()
{
    select tmpProdStandardVarianceAll
        order by CalcType asc, CostGroupId asc
        where tmpProdStandardVarianceAll.InventCostLevel <= InventCostLevel::Single;

    return tmpProdStandardVarianceAll;
}

         private CostAmount getTotalVariance()
{
    TmpProdStandardVariance totalStandardVariance;

    totalStandardVariance.setTmpData(tmpProdStandardVarianceAll);
    select firstonly totalStandardVariance
        where totalStandardVariance.CalcType == ItemCalcType::Production;

    return totalStandardVariance.totalVariance();
}

         public void new(ProdStandardVariance _prodStandardVariance = ProdStandardVariance::construct(ProdTransRefType::Production))
{
    super();
    prodStandardVariance = _prodStandardVariance;
}

/// <summary>
/// Fetches the required data for the report.
/// </summary>
[SysEntryPointAttribute]
public void processReport()
{

    InventItemPrice         inventItemPrice;

    CitProdCalcTransVarianceSumryContract contract = this.parmDataContract() as CitProdCalcTransVarianceSumryContract;
    ProdTable               prodTable;
    CostAmount              totalVariance;
    //REM ->
    Query                   query = this.parmQuery();
    QueryRun                queryRun;
    ProdCalcTrans           prodCalcTransLoc;
    RecId                   recidCount = 1;
    //REM <-
    ;

    prodStandardVariance.citSetCalledFromVarianceSummaryReport(true); //REM
    queryRun = new QueryRun(query); //REM

    while (queryRun.next()) //REM
    {
        prodTable = queryRun.get(TableNum(prodTable));
        prodCalcTransLoc = queryRun.get(TableNum(prodCalcTrans));

        InventItemPrice = this.getItemPrice(prodTable);
        prodStandardVariance.calc(prodTable.ProdId,
                                  ProdTransRefType::Production,
                                  prodTable.CollectRefLevel,
                                  prodTable.CollectRefProdId,
                                  prodTable.RealDate);

        tmpProdStandardVariance.setTmpData(prodStandardVariance.parmTmpProdStandardVariance()); //Retrieve record set from class
        totalVariance = this.getTotalVariance();

        while select tmpProdStandardVariance
        {
            tmpProdStandardVariance.CitProdId = prodTable.ProdId;
            tmpProdStandardVariance.CitItemId = prodTable.ItemId;
            tmpProdStandardVariance.CitItemName = prodTable.itemName();
            tmpProdStandardVariance.CitDateEnded = prodCalcTransLoc.TransDate; //Date ended on 'Production' type record

            if (inventItemPrice.PriceCalcId)
            {
                tmpProdStandardVariance.LotSize = BOMCalcTable::find(inventItemPrice.PriceCalcId).Qty;
            }
            else
            {
                tmpProdStandardVariance.LotSize = inventItemPrice.PriceUnit;
            }
            tmpProdStandardVariance.TotalVarianceValue = totalVariance;
            tmpProdStandardVariance.ReportedGood = prodTable.reportedFinishedGood();
            tmpProdStandardVariance.update();

            //Insert all records in buffer into temp table used by report ->
            tmpProdStandardVarianceAll.data(tmpProdStandardVariance);
            tmpProdStandardVarianceAll.RecId = recidCount;
            recidCount ++;

            tmpProdStandardVarianceAll.insert();
            //Insert all records in buffer into temp table used by report <-
        }
    }
}

No comments:

Post a Comment