Monday, 22 September 2025

JSON Payload for Sending Data from Apex

/****************************  Header Level ***************************************/


CREATE OR REPLACE FUNCTION PORTAL.PAYLOAD (P_INV VARCHAR2,P_CNAME VARCHAR2) RETURN CLOB IS

l_payload   Clob ;

V_NTN VARCHAR2(50);

V_ADDRESS VARCHAR2(100);

V_TITLE VARCHAR2(100);

BEGIN

  /* --------------------------------------------------------------------

      Build the JSON in one SQL call using JSON_OBJECT and JSON_ARRAYAGG

     -------------------------------------------------------------------- */

     

     SELECT NTN_CNIC,ADDRESS,TITLE INTO V_NTN,V_ADDRESS,V_TITLE FROM COMPANY_PROFILE WHERE COMPANY_NAME = P_CNAME;

     

  SELECT JSON_OBJECT 

  (

'invoiceType'                  VALUE 'Sale Invoice',                      

'invoiceDate'                  VALUE TO_CHAR(h.INV_DATE, 'YYYY-MM-DD'),                                  

'sellerNTNCNIC'                VALUE V_NTN,                         

'sellerBusinessName'           VALUE V_TITLE,                 

'sellerProvince'               VALUE 'PUNJAB',                        

'sellerAddress'                VALUE V_ADDRESS,                       

'buyerRegistrationType'        VALUE h.cust_type,                 

'buyerNTNCNIC'                 VALUE NVL(H.CUST_NTN,'0000000'),                       

'buyerBusinessName'            VALUE h.CUST_NAME,                  

'buyerProvince'                VALUE 'PUNJAB',                    

'buyerAddress'                 VALUE 'Hattar',                   

'invoiceRefNo'                 VALUE '',                  

'scenarioId'                VALUE h.SNERIO_ID

             

)

INTO L_PAYLOAD 

FROM SALM H WHERE H.INV_NO = P_INV AND H.SCHEMA_NAME = P_CNAME;  

RETURN l_payload;

  end;

/


/********************************* Detail Level ******************************/

CREATE OR REPLACE FUNCTION PORTAL.PAYLOAD_DETAILS(P_INV VARCHAR2,p_sysname varchar2) RETURN CLOB IS
L_PAYLOADDTL CLOB;
BEGIN
select json_arrayagg (  
    json_object (    
'hsCode'                            VALUE NVL(i.hs_Code,'5208.1900'),                             
'productDescription'                VALUE i.PROD_NAME,                 
'rate'                              VALUE i.ST_RATE||'%',                               
'uoM'                               VALUE i.uom,                                 
'quantity'                          VALUE i.qty,                                  
'totalValues'                       VALUE round(i.G_VALUE+((i.g_value*i.st_rate)/100),2),                               
'valueSalesExcludingST'             VALUE round(i.G_VALUE,2),                     
'fixedNotifiedValueOrRetailPrice'   VALUE 0,           
'salesTaxApplicable'                VALUE round((i.g_value*i.st_rate)/100,2),                        
'salesTaxWithheldAtSource'          VALUE 0,            
'extraTax'                          VALUE 0,                            
'furtherTax'                        VALUE 0,                          
'sroScheduleNo'                     VALUE '',                      
'fedPayable'                        VALUE 0,                          
'discount'                          VALUE 0,                            
'saleType'                          VALUE i.sal_type,                           
'sroItemSerialNo'                   VALUE ''     
    )     
    returning clob   
) INTO  L_PAYLOADDTL  
from sald I where I.inv_line_id  = p_inv and I.SCHEMA_NAME = p_sysname;
RETURN L_PAYLOADDTL;
END;
/

/******************************** Make Long Payload ****************************/

CREATE OR REPLACE FUNCTION PORTAL.LONG_JSON_PAYLOAD(P_INV VARCHAR2 , P_CNAME VARCHAR2) RETURN CLOB IS
L_CLOB CLOB;
BEGIN
select substr(payload(P_INV,P_CNAME),1,(length(payload(P_INV,P_CNAME)))-1)||','
||'"items"'||':'
||PAYLOAD_DETAILS(P_INV,P_CNAME)||'}'
INTO L_CLOB FROM DUAL ;
RETURN L_CLOB;
END;
/

No comments:

Post a Comment

Check Internet Connectivity on Local System

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