Column wise Sum, Avg, Count in Interactive Grid and Grand Total Calculation Runtime in Apex Item

 

Total Sum,Avg,Count Column Wise

Step: 1
=====

Create Interactive Grid and SQL Query Change for Automatic Total value show 0.

SQL Query:

select ID,

       RETURN_BILL,

       PRODUCT_ID,

       QTY,

       ENTRY_BY,

       ENTRY_DATE,

       UPDATE_BY,

       UPDATE_DATE,

       ANIMAL_TYPE,

       AMOUNT,

      'row-show' ROW_SHOW_HIDE

  from PURCHASE_RETURN_DETAILS

 where RETURN_BILL=:P28_RETURN_BILL

 union all

 select 

       -100 ID,

       null RETURN_BILL,

       null PRODUCT_ID,

       null QTY,

       null ENTRY_BY,

       null ENTRY_DATE,

       null UPDATE_BY,

       null UPDATE_DATE,

       null ANIMAL_TYPE,

       null AMOUNT,

       'row-hide' ROW_SHOW_HIDE

  from dual;


Note: You can not hide ROW_SHOW_HIDE column. But you can do Custom Attributes --> readonly

------------------------------------------------------------

Select ROW_SHOW_HIDE Column and 

Go to Column Initialization JavaScript Function

function(options) {
    options.defaultGridColumnOptions = {
        cellCssClassesColumn: "ROW_SHOW_HIDE"
    }
    return options;
}

Step:2
=====

Inline CSS:

tr:has(.row-hide){

    display: none!important;

}

.a-GV-row.is-aggregate.a-GV-aggregate--SUM.is-grandTotal {

    bottom: 0!important;

    position: sticky!important;

    z-index: 101;

}

Step:2
=====
Select Column Which Column (My column AMOUNT)

Column Initialization JavaScript Function:

function(options) {
    options.defaultGridColumnOptions = {
        aggregates: ["SUM"]
    };
    return options;
}



====Grand Total (Sum, Avg, Count) Show runtime in Apex Item=====




Step:1
=====
Select "Amount" Column in Grid Region.
Create Dynamic Action:
Event: Key Release

Action: Execute Javascript Code :
Code:

function getdefectqty() {

    //  1. Save cursor position
    let activeInput = document.activeElement;
    let cursorPos = 0;

    if (activeInput && activeInput.selectionStart !== undefined) {
        cursorPos = activeInput.selectionStart;
    }

    let sumWrongInfo = 0;
    let sumv_qty = 0;

    let ig$ = apex.region("PRODUCT_GRID").widget();
    let grid = ig$.interactiveGrid("getViews", "grid");

    //  2. commit change (this causes jump)
    grid.view$.grid("finishEditing");

    let model = grid.model;

    model.forEach(function (r) {
        let meta = model.getRecordMetadata(model.getRecordId(r));
        if (!meta.agg) {

            let wrongInfo = model.getValue(r, "UNIT_PRICE") || 0;
            sumWrongInfo += Number(wrongInfo);

            let v_qty = model.getValue(r, "QUANTITY") || 0;
            sumv_qty += Number(v_qty);
        }
    });

    $s("P12801_TOTAL_AMOUNT", sumWrongInfo);
    $s("P12801_QTY", sumv_qty);

    //  3. Restore cursor position (IMPORTANT)
    setTimeout(function () {
        if (activeInput && activeInput.setSelectionRange) {
            activeInput.focus();
            activeInput.setSelectionRange(cursorPos, cursorPos);
        }
    }, 0);
}

getdefectqty();

Step:2
=====
Select Grid Region.
STATIC id: PRODUCT_GRID

Post a Comment

Previous Post Next Post