Insert-update (Form) by Ajax Callback

 Step:1
=====

Go to Ajax Callback Process.
Create Process.
Name: INSERT_PAYMENT
Type: Execute Code
PLSQL Code:

DECLARE

    V_PK_ID         NUMBER;
    V_AUTO_NUMBER   NUMBER;
    V_INVOICE_NO   VARCHAR2 (50);

BEGIN

    IF :P31_ID IS NULL

    THEN
        -- GENERATE NEW PK_ID

        SELECT COALESCE (MAX (ID), 100) + 1 INTO V_PK_ID FROM SIM_CARD_PAYMENT_MST;

        -- GENERATE NEW AUTO_NUMBER

        SELECT COALESCE (MAX (AUTO_NUMBER), 100) + 1
            INTO V_AUTO_NUMBER
          FROM SIM_CARD_PAYMENT_MST
          WHERE COM_ID = :GCOM_ID;

        -- GENERATE SELL_NUMBER

        V_INVOICE_NO := 'INV/' || TO_CHAR (SYSDATE, 'YY') || '/' || V_AUTO_NUMBER;

        -- INSERT THE NEW RECORD

        INSERT INTO SIM_CARD_PAYMENT_MST (

                                         ID,                                      
                                         AUTO_NUMBER,
                                         INVOICE_NO,
                                         INVOICE_DATE,
                                         ASSIGEN_COMPANY_ID,
                                         TOTAL_AMOUNT,
                                         DISCOUNT,
                                         PAID_AMOUNT,
                                         DUE_AMOUNT,
                                         STATUS,           
                                         COM_ID,
                                         CREATOR,
                                         CREATED_ON )

             VALUES (
                     V_PK_ID,
                     V_AUTO_NUMBER,
                     V_INVOICE_NO,
                     SYSDATE,
                     :P31_ASSIGEN_COMPANY_ID,
                     :P31_TOTAL_AMOUNT,
                     :P31_DISCOUNT,
                     :P31_PAID_AMOUNT,
                     :P31_DUE_AMOUNT,
                     1,
                     :GCOM_ID,
                     :GUSER_ID,
                     TO_CHAR (SYSDATE, 'DD-MM-RRRR HH:MI:SS')
                     )

              RETURNING 
                    ID,
                    AUTO_NUMBER,
                    INVOICE_NO

              INTO
                    :P31_ID,
                    :P31_AUTO_NUMBER,
                    :P31_INVOICE_NO;

    END IF;


    IF :P31_ID IS NOT NULL

    THEN

        UPDATE SIM_CARD_PAYMENT_MST  SET 

               ASSIGEN_COMPANY_ID = :P31_ASSIGEN_COMPANY_ID,
               TOTAL_AMOUNT = :P31_TOTAL_AMOUNT,
               DISCOUNT = :P31_DISCOUNT,
               PAID_AMOUNT = :P31_PAID_AMOUNT,
               DUE_AMOUNT = :P31_DUE_AMOUNT,
               MODIFIER = :GUSER_ID,
               MODIFIED_ON = TO_CHAR (SYSDATE, 'DD-MM-RRRR HH:MI:SS')

         WHERE ID = :P31_ID;

    END IF;

    COMMIT;

    APEX_JSON.OPEN_OBJECT;

    APEX_JSON.WRITE ('jsonstatus', 200);

    APEX_JSON.WRITE ('id', :P31_ID);

    APEX_JSON.WRITE ('invoice_no', :P31_INVOICE_NO);

    APEX_JSON.WRITE ('invoice_date', :P31_INVOICE_DATE);

    APEX_JSON.WRITE ('assigen_company_id', :P31_ASSIGEN_COMPANY_ID);

    APEX_JSON.WRITE ('auto_number', :P31_AUTO_NUMBER);

    APEX_JSON.WRITE ('total_amount', :P31_TOTAL_AMOUNT);

    APEX_JSON.WRITE ('discount', :P31_DISCOUNT);

    APEX_JSON.WRITE ('paid_amount', :P31_PAID_AMOUNT);

    APEX_JSON.WRITE ('due_amount', :P31_DUE_AMOUNT);

    APEX_JSON.WRITE ('status', :P31_STATUS);

    APEX_JSON.WRITE ('com_id', :P31_COM_ID);

    apex_json.close_all;

EXCEPTION

    WHEN OTHERS

    THEN

        -- ROLLBACK ON ERROR

        ROLLBACK;


        -- RETURN AN ERROR RESPONSE

        apex_json.open_object;

        apex_json.write ('jsonstatus', 500);

        apex_json.write ('error', SQLERRM);

        apex_json.close_all;

END;


Step:2
====

Go to Function and Global Variable Declaration:

// *******  Payment master  Insert and Update process **********

function f_insertPayment() {  //function Name

    let agent = $v("P31_ASSIGEN_COMPANY_ID");

    // Validation Checks

    if (!agent) {

        apex.message.alert('❌ Agent Name cannot be blank.');

        return;

    }

    // Show Loading Indicator

    // loading();


    // AJAX Request to Insert Payment

    apex.server.process(

        'INSERT_PAYMENT', //Ajax Callback Name (must copy the same Name)

        {

            pageItems: '#P31_ID, #P31_INVOICE_NO, #P31_INVOICE_DATE, #P31_ASSIGEN_COMPANY_ID, #P31_AUTO_NUMBER, #P31_TOTAL_AMOUNT, #P31_DISCOUNT, #P31_PAID_AMOUNT, #P31_DUE_AMOUNT, #P31_STATUS, #P31_PAID_FLAG, #P31_COM_ID, #P31_CREATOR, #P31_CREATED_ON, #P31_MODIFIER, #P31_MODIFIED_ON'

        },

        {

            success: function (data) {

                if (data.jsonstatus=== 200) {

                    // Populate form fields with the returned data

                    $s('P31_ID', data.id);

                    $s('P31_INVOICE_NO', data.invoice_no);

                    $s('P31_INVOICE_DATE', data.invoice_date);

                    $s('P31_ASSIGEN_COMPANY_ID', data.assigen_company_id);

                    $s('P31_AUTO_NUMBER', data.auto_number);

                    $s('P31_TOTAL_AMOUNT', data.total_amount);

                    $s('P31_DISCOUNT', data.discount);

                    $s('P31_PAID_AMOUNT', data.paid_amount);

                    $s('P31_DUE_AMOUNT', data.due_amount);

                    $s('P31_COM_ID', data.com_id);

                    $s('P31_CREATOR', data.creator);

                    $s('P31_CREATED_ON', data.created_on);

                    apex.region('detailsid').refresh(); // refresh details Region

                    apex.message.alert('✅ Agent inserted successfully.');


                    removeLoading();

                } else {

                    apex.message.alert('❌ Error: Unexpected response from server.');

                }

            },

            error: function (jqXHR, textStatus, errorThrown) {

                apex.message.alert('❌ AJAX Error: ' + textStatus + ' - ' + errorThrown);

                console.error("AJAX Error:", textStatus, errorThrown);

            }

        }

    );

}


Step:3
====

Create Button.
Name: Save
         Dynamic Action: 
INSERT_PAYMENT
         Event: Click

Action: Execute Javascript Code
Code: 

loading();

f_insertPayment(); //Call Global function Name

setTimeout(removeLoading, 2000);


==========================================

Clear All Apex Items without page load for New Insert Data.

Create Button.
Name: New_Insert
Event: Click

Action: Execute Javascript Code
Code: 

loading();

$s('P31_ID', '');

$s('P31_INVOICE_NO', '');

// $s('P31_INVOICE_DATE', '');

$s('P31_ASSIGEN_COMPANY_ID', '');

$s('P31_AUTO_NUMBER', '');

$s('P31_TOTAL_AMOUNT', '');

$s('P31_DISCOUNT', '');

$s('P31_PAID_AMOUNT', '');

$s('P31_DUE_AMOUNT', '');

$s('P31_STATUS', '');

$s('P31_PAID_FLAG', '');

$s('P31_COM_ID', '');

$s('P31_CREATOR', '');

$s('P31_CREATED_ON', '');

$s('P31_MODIFIER', '');

$s('P31_MODIFIED_ON', '');

apex.region('detailsid').refresh(); //Clear Region Static ID

setTimeout(removeLoading, 2000);


Post a Comment

Previous Post Next Post