/**************************** 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