Tuesday, March 8, 2016

// To Pass the lesser than date range in the query ...



query openingbalance(
    Query           query,
    ItemId          itemId,
 //   transdate       fromdate,
  //  transdate       todate,
    InventDim       inventDimCriteria,
    InventDimParm   inventDimParmCriteria,
    InventDimParm   inventDimParmGroupBy,
    container       dimFields = InventDim::dimFieldList()
    )
{
    QueryBuildDataSource    qbsTrans;
    QueryBuildDataSource    qbsDim;
    QueryBuildRange         queryRange;
    inventtrans             inventtrans;

    boolean                 doFindRange;
    ;

    if (!query)
        query = new Query();

    if (query.dataSourceTable(tablenum(Inventtrans)))
    {
        qbsTrans = query.dataSourceTable(tablenum(Inventtrans));

        qbsTrans.sortClear();

        doFindRange = true;
    }
    else
        qbsTrans = query.addDataSource(tablenum(Inventtrans));


    if (query.dataSourceTable(tablenum(InventDim)))
    {
        qbsDim = query.dataSourceTable(tablenum(InventDim));
        qbsDim.sortClear();

        doFindRange = true;
    }
    else
        qbsDim = qbsTrans.addDataSource(tablenum(InventDim));

    qbsDim.joinMode(JoinMode::InnerJoin);
    qbsDim.relations(true);

    if (inventDimParmCriteria.ItemIdFlag)
    {
        queryRange = doFindRange ? qbsTrans.findRange(fieldnum(Inventtrans,ItemId)) : null;

        if (! queryRange)
            queryRange = qbsTrans.addRange(fieldnum(Inventtrans,ItemId));

        if (itemId)
            queryRange.value(queryValue(itemId));
        else
            queryRange.value(SysQuery::valueEmptyString());
    }


    if (inventDimParmGroupBy.ItemIdFlag)
    {
        qbsTrans.addSortField(fieldnum(Inventtrans,ItemId));
        qbsTrans.orderMode(OrderMode::GroupBy);
    }


    qbsTrans.clearRange(fieldnum(inventtrans,DateFinancial));
    qbsTrans.addRange(fieldnum(inventtrans,DateFinancial)).value('..' + queryvalue(todate));

    Inventtrans::queryAddSumQty(qbsTrans);
//  InventDim::queryDatasourceAddRangeSortFromParms(qbsDim,doFindRange,inventDimCriteria,inventDimParmCriteria,inventDimParmGroupBy,dimFields);
//  Inventtrans::queryAddHint(query,inventDimCriteria,inventDimParmCriteria,qbsTrans,qbsDim);

    qbsTrans.clearRange(fieldnum(inventtrans,DateFinancial));
    return query;
}

No comments:

Post a Comment