Powered By Blogger

রবিবার, ৪ ডিসেম্বর, ২০২২

Total calculation by java script in oracle apex

 (function($) {
    // This is the function that calculates over all the rows of the model and then
    // updates something else.
    // Change this to do whatever calculation is needed.
    // Call this whenever the model data changes.
    // Total is the column name which is to be calculated.
    function update(model) {
        var salKey = model.getFieldKey("TOTAL"),  //TOTAL is the column name would be calculated
            total = 0;
        console.log(">> starting sum AMOUNT column")
        model.forEach(function(record, index, id) {
            var sal = parseFloat(record[salKey]),  // record[salKey] should be a little faster than using model.getValue in a loop
                meta = model.getRecordMetadata(id);
            if (!isNaN(sal) && !meta.deleted && !meta.agg) {
                total += sal;
            }
        });
        console.log(">> setting sum AMOUNT column to " + total)
        $s("P68_TOTAL_AMNT", total);
    }
    // P68_TOTAL_AMNT is the field name summary field.
    // This is the general pattern for subscribing to model notifications
    //
    // need to do this here rather than in Execute when Page Loads so that the handler
    // is setup BEFORE the IG is initialized otherwise miss the first model created event
    $(function() {
        // the model gets released and created at various times such as when the report changes
        // listen for model created events so that we can subscribe to model notifications
        $("#BILL").on("interactivegridviewmodelcreate", function(event, ui) {
            var sid,
                model = ui.model;
            // note this is only done for the grid veiw. It could be done for
            // other views if desired. The imporant thing to realize is that each
            // view has its own model
            if ( ui.viewId === "grid" ) {
                sid = model.subscribe( {
                    onChange: function(type, change) {
                        console.log(">> model changed ", type, change);
                        if ( type === "set" ) {
                            // don't bother to recalculate if other columns change
                            if (change.field === "TOTAL" ) {
                                update( model );
                            }
                        } else if (type !== "move" && type !== "metaChange") {
                            // any other change except for move and metaChange affect the calculation
                            update( model );
                        }
                    },
                    progressView: $("#P68_TOTAL_AMNT") // this will cause a spinner on this field
                } );
                // if not lazy loaded there is no notification for initial data so update
                update( model ); 
                // just in case fetch all the data. Model notifications will
                // cause calls to update so nothing to do in the callback function.
                // can remove if data will always be less than 50 records
                model.fetchAll(function() {});
            }
        });
    });
})(apex.jQuery);

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন

Row-level “Add” icon using a virtual column (APEX-safe)

1️⃣ Enable Insert in the Interactive Grid IG → Attributes Edit → Allowed Add Row → Yes 2️⃣ Add a New Column (Icon column) Column...