Sunday, 12 May 2024

Master Detail ( Intrective Grid ) Records Save to DB

 Dynamic Action (BTN_SAVE)
var ig$ = apex.region("myGrid").widget();
if (ig$) {
    var model = ig$.interactiveGrid("getViews", "grid").model;
    if (model) {
        var selectedRecords = ig$.interactiveGrid("getSelectedRecords");
        console.log("Selected Records:", selectedRecords);
        if (selectedRecords.length > 0) {
            var column1Values = [];
            var column2Values = [];
            var column3Values = [];
            var column4Values = [];
            var column5Values = [];
            var column6Values = [];
            selectedRecords.forEach(function(record) {
                var column1Value = record[0];
                var column2Value = record[1];
                var column3Value = record[2];
                var column4Value = record[3];
                var column5Value = record[4];
                var column6Value = record[5];
                column1Values.push(column1Value);
                column2Values.push(column2Value);
                column3Values.push(column3Value);
                column4Values.push(column4Value);
                column5Values.push(column5Value);
                column6Values.push(column6Value);
            });
        } else {
            console.error("No records selected.");
        }
    } else {
        console.error("Interactive grid model is undefined.");
    }
} else {
    console.error("Interactive grid widget is undefined.");
}

// Declare an array to store the values
var valuesArray = [];
for (var i = 0; i < column1Values.length; i++) {
    // Access the 'v' property of each object
    var value89 = column1Values[i].v;
    // Check if the value is not undefined
    if (value89 !== undefined) {
        // Store the value in the array
        valuesArray.push(value89);
    } else {
        console.log("Value is undefined for index " + i);
    }
}


// Output the values stored in the array
console.log(valuesArray);
apex.item('P20_ICODE').setValue(valuesArray);
apex.item('P20_QTY').setValue(column2Values);
apex.item('P20_RATE').setValue(column3Values);
apex.item('P20_DIS_PER').setValue(column4Values);
apex.item('P20_DIS_VAL').setValue(column5Values);
apex.item('P20_NETAMT').setValue(column6Values);
/***************************************************************/
True Action (Submit Page)
/***************************************************************/

Master Process
DECLARE
  l_sal_dat DATE;
  l_pty_cod VARCHAR2(50);
  l_sal_des VARCHAR2(100);
  l_inv_num NUMBER;
  l_sman varchar2(100);
  salref number;
BEGIN
--select nvl(max(sal_ref),0)+1 into salref from sgi_sal_00;
  -- Initialize variables
  l_sal_dat := :P20_SAL_DAT;
  l_pty_cod := :P20_PTY_COD;
  l_sal_des := :P20_SAL_DES;
  l_inv_num := :P20_INV_NUM;
  l_sman := :P20_SALEMAN;
  -- Insert into table
  INSERT INTO SGI_SAL_00 (SAL_REF,SAL_DAT, PTY_COD, SAL_DES, INV_NUM,saleman) 
  VALUES (:P20_SAL_REF, l_sal_dat, l_pty_cod, l_sal_des, l_inv_num,l_sman);
  
  -- Commit the transaction
  COMMIT;
END;
/***************************************************************/
Detail Process
DECLARE
  l_icod varchar2(200);
  l_qty varchar2(200);
  l_rate varchar2(200);
  l_disper varchar2(200);
  l_disval varchar2(200);
  l_billamt varchar2(200);
BEGIN
  -- Initialize variables
  l_icod := :P20_ICODE;
  l_qty := :P20_QTY;
  l_rate := :P20_RATE;
  l_disper := :P20_DIS_PER;
  l_disval := :P20_DIS_VAL;
  l_billamt := :P20_NETAMT;
  -- Insert into table
  INSERT INTO SGI_SAL_01 (SAL_REF, ICODE,QTY, RATE,disc,disc_val,amount)  
                select :P20_SAL_REF, 
                        TO_NUMBER(REGEXP_SUBSTR(l_icod, '[^,]+', 1, LEVEL)),
                        TO_NUMBER(REGEXP_SUBSTR(l_qty, '[^,]+', 1, LEVEL)),
                        TO_NUMBER(REGEXP_SUBSTR(l_rate, '[^,]+', 1, LEVEL)),
                        TO_NUMBER(REGEXP_SUBSTR(l_disper, '[^,]+', 1, LEVEL)),
                        TO_NUMBER(REGEXP_SUBSTR(l_disval, '[^,]+', 1, LEVEL)),
                        TO_NUMBER(REGEXP_SUBSTR(l_billamt, '[^,]+', 1, LEVEL))
           FROM dual
    CONNECT BY LEVEL <= REGEXP_COUNT(l_icod, ',') + 1;
     -- Commit the transaction
  COMMIT;
  
END;
/***************************************************************/

Check Internet Connectivity on Local System

if (!navigator.onLine) {     showOfflineAlert(); } else {     // Set a strict 3-second network timeout threshold     const controller = new ...