DECLARE
   TYPE refcursor IS REF CURSOR;

   xdo_cursor                       refcursor;

   TYPE trans_rectype IS RECORD
   (
      inv_org                    inv_org_parameters.organization_code%TYPE,
      item_number                egp_system_items_vl.item_number%TYPE,
      item_description           egp_system_items_vl.description%TYPE,
      transaction_source         VARCHAR2 (50),
      period_level               VARCHAR2 (50),
      on_hand_qty_period_level   NUMBER
   );

   l_trans_rec                      trans_rectype;

   TYPE trans_tabtype IS TABLE OF trans_rectype
      INDEX BY BINARY_INTEGER;

   l_trans_tab                      trans_tabtype;

   l_on_hand_qty_tab                trans_tabtype;

   l_onhand_post_period_qty_tab     trans_tabtype;


   l_data_clob                      CLOB;

   CURSOR transaction_cur
   IS
        SELECT final.INV_ORG,
               final.ITEM_NUMBER,
               final.ITEM_DESCRIPTION,
               final.TRANSACTION_SOURCE,
               final.PERIOD_LEVEL,
               SUM (final.ON_HAND_QTY_PERIOD_LEVEL) ON_HAND_QTY_PERIOD_LEVEL
          FROM (  SELECT b.INV_ORG         INV_ORG,
                         b.ITEM_NUMBER     ITEM_NUMBER,
                         b.ITEM_DESCRIPTION ITEM_DESCRIPTION,
                         b.TRANSACTION_TYPE_ID TRANSACTION_TYPE_ID,
                         b.TRANSACTION_SOURCE TRANSACTION_SOURCE,
                         b.PERIOD_LEVEL    PERIOD_LEVEL,
                         b.CURR_ON_HAND_QTY CURR_ON_HAND_QTY,
                         SUM (b.total_qty) ON_HAND_QTY_PERIOD_LEVEL
                    FROM (SELECT a.transaction_id    transaction_id,
                                 a.transaction_source_type_id transaction_source_type_id,
                                 a.transaction_type_id transaction_type_id,
                                 a.inv_org           inv_org,
                                 a.item_number       item_number,
                                 a.item_description  item_description,
                                 a.po_number         po_number,
                                 a.po_supplier_id    po_supplier_id,
                                 a.po_supplier_site_id po_supplier_site_id,
                                 /*
								 a.so_number         so_number,
                                 a.so_supplier_id    so_supplier_id,
                                 a.so_supplier_site_id so_supplier_site_id,
								 */
                                 CASE
                                    --WHEN UPPER(a.transaction_type_id) LIKE '%TRANSFER%INTERORGANIZATION%' THEN
                                    WHEN (a.transaction_type_id) IN ('Transfer Order Interorganization Receipt','Transfer Order Interorganization Shipment','Transfer Order Interorganization Transfer') 
									THEN                                    
									   CASE
                                          WHEN (a.total_qty < 0) THEN
                                             'INTERCOMPANY-ISSUE'
                                          WHEN (a.total_qty >= 0) THEN
                                             'INTERCOMPANY-RECEIPT'
                                       END
									WHEN a.po_supplier_id IS NULL THEN
                                       CASE
                                          --WHEN(UPPER (a.transaction_type_id) LIKE '%ISSUE%' OR UPPER (a.transaction_type_id) LIKE '%RETURN%' OR (a.total_qty < 0))
                                        WHEN ((a.transaction_type_id) IN ('Account Alias Issue','Account Issue','Miscellaneous issue','Movement Request Issue','Residual Quantity Issue','Sales Order Issue',
										                                  'Transfer Order Issue','Work in Process Material Issue','Work in Process Negative Material Issue')
										       OR    
											  (a.transaction_type_id) IN ('RMA Return','Receipt Advice Return','Return to Supplier','Supplier Return Scrap Without Receipt Reference','Supplier Return Shipment Without Receipt Reference',
                                                                          'Transfer Order Return Pick','Transfer Order Return Receipt','Transfer Order Return Shipment','Transfer Order Return Transfer','Transfer Order Return With Scrap',
                                                                          'Work in Process Material Return','Work in Process Negative Material Return','Work in Process Product Return')  
									   	       OR
											  (a.total_qty < 0)
											 ) 
										  THEN
                                             'OTHERS-ISSUE'
                                          WHEN ( a.transaction_type_id = 'Purchase Order Receipt' --LIKE'%RECEIPT%' 
										        OR (a.total_qty >= 0))
                                          THEN
                                             'OTHERS-RECEIPT'
                                       END                                   
                                    WHEN NVL((SELECT 'INTERCOMPANY'
                                                  FROM fnd_lookup_values flv,
                                                       poz_suppliers_v  psv,
                                                       poz_supplier_sites_v pssv
                                                 WHERE 1 = 1
                                                   AND flv.lookup_type = 'ICHOR_INTER_COMPANY_SUPPLIER'
                                                    AND flv.meaning = psv.vendor_name
                                                    AND flv.description = pssv.party_site_name
                                                    AND psv.vendor_id = pssv.vendor_id
                                                    AND psv.vendor_id = a.po_supplier_id
                                                    AND pssv.vendor_site_id = a.po_supplier_site_id
                                                    AND TRUNC (NVL (pssv.inactive_date,SYSDATE + 1)) > TRUNC (SYSDATE)
                                                    AND psv.enabled_flag = 'Y'
                                                    AND flv.enabled_flag = 'Y'
													AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(flv.start_date_active,SYSDATE-1)) AND TRUNC(NVL(flv.end_date_active,SYSDATE+1))
                                                    AND flv.language = 'US'),'SUPPLIERS') = 'INTERCOMPANY'
                                    THEN
                                       CASE
                                          --WHEN (UPPER (a.transaction_type_id) LIKE '%ISSUE%' OR UPPER (a.transaction_type_id) LIKE '%RETURN%' OR (a.total_qty < 0))
                                          WHEN ((a.transaction_type_id) IN ('Account Alias Issue','Account Issue','Miscellaneous issue','Movement Request Issue','Residual Quantity Issue','Sales Order Issue',
										                                  'Transfer Order Issue','Work in Process Material Issue','Work in Process Negative Material Issue')
										         OR    
											    (a.transaction_type_id) IN ('RMA Return','Receipt Advice Return','Return to Supplier','Supplier Return Scrap Without Receipt Reference','Supplier Return Shipment Without Receipt Reference',
                                                                          'Transfer Order Return Pick','Transfer Order Return Receipt','Transfer Order Return Shipment','Transfer Order Return Transfer','Transfer Order Return With Scrap',
                                                                          'Work in Process Material Return','Work in Process Negative Material Return','Work in Process Product Return')  
									   	         OR
											    (a.total_qty < 0)
											 ) 
										  THEN
                                             'INTERCOMPANY-ISSUE'
                                          WHEN ((a.transaction_type_id) = 'Purchase Order Receipt' --LIKE '%RECEIPT%' 
										         OR (a.total_qty >= 0))
										  THEN
                                             'INTERCOMPANY-RECEIPT'
                                       END
                                    WHEN NVL ((SELECT 'INTERCOMPANY'
                                                 FROM fnd_lookup_values flv,
                                                      poz_suppliers_v  psv,
                                                      poz_supplier_sites_v pssv
                                                WHERE 1 = 1
                                                    AND flv.lookup_type ='ICHOR_INTER_COMPANY_SUPPLIER'
                                                    AND flv.meaning = psv.vendor_name
                                                    AND flv.description = pssv.party_site_name
                                                    AND psv.vendor_id = pssv.vendor_id
                                                    AND psv.vendor_id = a.po_supplier_id
                                                    AND pssv.vendor_site_id = a.po_supplier_site_id
                                                    AND TRUNC (NVL (pssv.inactive_date,SYSDATE + 1)) > TRUNC (SYSDATE)
                                                    AND psv.enabled_flag = 'Y'
                                                    AND flv.enabled_flag = 'Y'
													AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(flv.start_date_active,SYSDATE-1)) AND TRUNC(NVL(flv.end_date_active,SYSDATE+1))
                                                    AND flv.language = 'US'),'SUPPLIERS') = 'SUPPLIERS'
                                    THEN
                                       CASE
                                          --WHEN (UPPER (a.transaction_type_id) LIKE '%ISSUE%' OR UPPER (a.transaction_type_id) LIKE '%RETURN%' OR (a.total_qty < 0))
                                          WHEN ((a.transaction_type_id) IN ('Account Alias Issue','Account Issue','Miscellaneous issue','Movement Request Issue','Residual Quantity Issue','Sales Order Issue',
										                                  'Transfer Order Issue','Work in Process Material Issue','Work in Process Negative Material Issue')
										         OR    
											    (a.transaction_type_id) IN ('RMA Return','Receipt Advice Return','Return to Supplier','Supplier Return Scrap Without Receipt Reference','Supplier Return Shipment Without Receipt Reference',
                                                                          'Transfer Order Return Pick','Transfer Order Return Receipt','Transfer Order Return Shipment','Transfer Order Return Transfer','Transfer Order Return With Scrap',
                                                                          'Work in Process Material Return','Work in Process Negative Material Return','Work in Process Product Return')  
									   	         OR
											    (a.total_qty < 0)
											 ) 
										  THEN
                                             'SUPPLIERS-ISSUE'
                                          WHEN ((a.transaction_type_id) = 'Purchase Order Receipt' ---LIKE '%RECEIPT%' 
										         OR (a.total_qty >= 0))
                                          THEN
                                             'SUPPLIERS-RECEIPT'
                                       END
                                 END transaction_source,
                                 a.transaction_action_id transaction_action_id,
                                 TO_CHAR (a.transaction_date,'DD-MON-YYYY hh24:mi:ss','nls_date_language=American')transaction_date,
                                 a.txn_period        txn_period,
                                 a.period_level      period_level,
                                 a.total_qty         total_qty,
                                 a.curr_on_hand_qty  curr_on_hand_qty
                            FROM (  SELECT (SELECT TRANSACTION_SOURCE_TYPE_NAME
                                              FROM INV_TXN_SOURCE_TYPES_TL
                                             WHERE TRANSACTION_SOURCE_TYPE_ID = imt.TRANSACTION_SOURCE_TYPE_ID AND language = 'US') TRANSACTION_SOURCE_TYPE_ID,
                                           (SELECT transaction_type_name
                                              FROM inv_transaction_types_tl
                                             WHERE transaction_type_id = imt.TRANSACTION_TYPE_ID) TRANSACTION_TYPE_ID,
                                           iop.organization_code INV_ORG,
                                           esib.item_number  ITEM_NUMBER,
                                           TRIM (esib.description) ITEM_DESCRIPTION,
                                           imt.TRANSACTION_ACTION_ID,
                                           imt.TRANSACTION_DATE,
                                           TO_CHAR (imt.transaction_date,'MON-YYYY','nls_date_language=American')txn_period,
                                           TO_CHAR (imt.transaction_date,'MM','nls_date_language=American')period_level,
                                           imt.transaction_id,
										   CASE
										      WHEN (SELECT transaction_type_name --UPPER(transaction_type_name)
                                                      FROM inv_transaction_types_tl
                                                     WHERE transaction_type_id = imt.TRANSACTION_TYPE_ID) = 'Purchase Order Receipt' --LIKE '%PURCHASE%ORDER%RECEIPT%' 
											  THEN
												   (SELECT segment1
													  FROM po_headers_all
													 WHERE po_header_id = imt.transaction_source_id) 
											  ELSE
                                                 NULL
                                              END PO_NUMBER,
                                           CASE
										      WHEN (SELECT transaction_type_name --UPPER(transaction_type_name)
                                                      FROM inv_transaction_types_tl
                                                     WHERE transaction_type_id = imt.TRANSACTION_TYPE_ID) = 'Purchase Order Receipt' --LIKE '%PURCHASE%ORDER%RECEIPT%' 
											  THEN
												   (SELECT vendor_id
													  FROM po_headers_all
													 WHERE po_header_id = imt.transaction_source_id)
											  ELSE
                                                 NULL
                                              END PO_SUPPLIER_ID,
                                           CASE
										      WHEN (SELECT transaction_type_name --UPPER(transaction_type_name)
                                                      FROM inv_transaction_types_tl
                                                     WHERE transaction_type_id = imt.TRANSACTION_TYPE_ID) = 'Purchase Order Receipt'  --LIKE '%PURCHASE%ORDER%RECEIPT%' 
											  THEN 
												   (SELECT vendor_site_id
													  FROM po_headers_all
													 WHERE po_header_id = imt.transaction_source_id)
											  ELSE
                                                 NULL
                                              END PO_SUPPLIER_SITE_ID,
                                           /*(SELECT order_number
                                              FROM doo_headers_all
                                             WHERE header_id = imt.transaction_source_id)SO_NUMBER,
                                           (SELECT supplier_id
                                              FROM doo_headers_all
                                             WHERE header_id = imt.transaction_source_id)SO_SUPPLIER_ID,
                                           (SELECT supplier_site_id
                                              FROM doo_headers_all
                                             WHERE header_id = imt.transaction_source_id)SO_SUPPLIER_SITE_ID,
										   */ 	 
                                           SUM (NVL (imt.transaction_quantity, 0))total_qty,
                                           (SELECT SUM (NVL (ioqd.transaction_quantity,0))
                                              FROM inv_onhand_quantities_detail ioqd
                                             WHERE 1 = 1
                                               AND ioqd.inventory_item_id = esib.inventory_item_id
                                               AND ioqd.organization_id = esib.organization_id
                                               AND EXISTS (SELECT 1
                                                             FROM inv_secondary_inventories sub
                                                            WHERE 1 = 1
                                                              AND sub.secondary_inventory_name = ioqd.subinventory_code
                                                              AND sub.availability_type = 1))CURR_ON_HAND_QTY
                                      FROM inv_material_txns imt,
                                           inv_org_parameters iop,
                                           egp_system_items_vl esib
                                     WHERE 1 = 1
                                       AND esib.inventory_item_id = imt.inventory_item_id
                                           AND esib.organization_id = imt.organization_id
                                           AND iop.organization_id = imt.organization_id
                                           AND iop.organization_code = NVL( DECODE (:p_inv_org,
                                                                                    'All', iop.organization_code,
                                                                                    :p_inv_org),
                                                                            iop.organization_code)
                                           AND esib.item_number IN
                                                  DECODE (:p_item_number,
                                                          'All', esib.item_number,
                                                          :p_item_number)                                           
                                           --Modification done for 1.1 Start here----------------------
										   /*AND TRUNC (imt.transaction_date) BETWEEN TRUNC(LAST_DAY(ADD_MONTHS(TO_DATE(p_period,'MON-YY','nls_date_language=American'),-1)))+ 1
                                                                                AND TRUNC(LAST_DAY(TO_DATE(p_period,'MON-YY','nls_date_language=American')))
                                           */
										   AND EXISTS ( SELECT 1
														  FROM cst_period_statuses 
														 WHERE 1=1
														   AND period_set_name in (SELECT period_set_name FROM gl_calendars )
														   AND period_name = :p_period
														   AND TRUNC(imt.transaction_date) BETWEEN TRUNC(start_date) AND TRUNC(end_date)
													   )
										   --Modification done for 1.1 End here----------------------
										   AND EXISTS
                                                  (SELECT 1
                                                     FROM egp_system_items_b esib1,
                                                          egp_system_items_tl esit1,
                                                          inv_material_txns imt1
                                                    WHERE 1 = 1
                                                      AND NVL(esib1.enabled_flag,'Y') = 'Y'
                                                      AND NVL(esib1.end_date_active,SYSDATE) >= SYSDATE
                                                      AND esib1.inventory_item_id = esit1.inventory_item_id
                                                      AND esib1.organization_id = esit1.organization_id
                                                      AND imt1.inventory_item_id = esib1.inventory_item_id
                                                      AND imt1.organization_id =esib1.organization_id
                                                      AND esib1.item_number = esib.item_number
                                                      AND EXISTS(SELECT 1
                                                                   FROM inv_transaction_types_tl
                                                                  WHERE transaction_type_id = imt1.transaction_type_id
                                                                    AND transaction_type_name = 'Purchase Order Receipt')
                                                      AND EXISTS(SELECT 1
                                                                   FROM fnd_lookup_values flv, poz_suppliers_v psv, poz_supplier_sites_v pssv
                                                                   WHERE 1 = 1
                                                                     AND flv.lookup_type ='ICHOR_INTER_COMPANY_SUPPLIER'
                                                                     AND flv.meaning = psv.vendor_name
                                                                     AND flv.description = pssv.party_site_name
                                                                     AND psv.vendor_id = pssv.vendor_id
                                                                     AND psv.vendor_id = (SELECT vendor_id
                                                                                            FROM po_headers_all
                                                                                           WHERE po_header_id = imt1.transaction_source_id)
                                                                                             AND pssv.vendor_site_id =(SELECT vendor_site_id
                                                                                                                         FROM po_headers_all
                                                                                                                        WHERE po_header_id = imt1.transaction_source_id)
                                                                     AND TRUNC(NVL(pssv.inactive_date,SYSDATE+1)) > TRUNC(SYSDATE)
                                                                     AND psv.enabled_flag ='Y'
                                                                     AND flv.enabled_flag ='Y'
																	 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(flv.start_date_active,SYSDATE-1)) AND TRUNC(NVL(flv.end_date_active,SYSDATE+1))
                                                                     AND flv.language ='US'))
                                  GROUP BY iop.organization_code,
                                           esib.item_number,
                                           TRIM (esib.description),
                                           esib.inventory_item_id,
                                           esib.organization_id,
                                           imt.TRANSACTION_SOURCE_TYPE_ID,
                                           imt.TRANSACTION_TYPE_ID,
                                           imt.TRANSACTION_ACTION_ID,
                                           imt.TRANSACTION_DATE,
                                           imt.transaction_id,
                                           imt.transaction_source_id) a
                           WHERE 1 = 1) b
                   WHERE 1 = 1
                GROUP BY b.inv_org,
                         b.item_number,
                         b.item_description,
                         b.transaction_type_id,
                         b.transaction_source,
                         b.period_level,
                         b.curr_on_hand_qty) final
         WHERE 1 = 1
      GROUP BY final.INV_ORG,
               final.ITEM_NUMBER,
               final.ITEM_DESCRIPTION,
               final.TRANSACTION_SOURCE,
               final.PERIOD_LEVEL
      ORDER BY final.ITEM_NUMBER,
               final.TRANSACTION_SOURCE,
               final.PERIOD_LEVEL;


   l_opn_stk_supplier               NUMBER := 0;
   l_opn_stk_intercomp              NUMBER := 0;
   l_opn_stk_others                 NUMBER := 0;

   l_qty_rec_supplier               NUMBER := 0;
   l_qty_rec_intercomp              NUMBER := 0;
   l_qty_rec_others                 NUMBER := 0;

   l_qty_issue_supplier             NUMBER := 0;
   l_qty_issue_intercomp            NUMBER := 0;
   l_qty_issue_others               NUMBER := 0;

   l_clo_stk_supplier               NUMBER := 0;
   l_clo_stk_intercomp              NUMBER := 0;
   l_clo_stk_others                 NUMBER := 0;


   CURSOR on_hand_qty_cur (
      p_inventory_org    VARCHAR2,
      p_item_number      VARCHAR2)
   IS
        SELECT final.INV_ORG,
               final.ITEM_NUMBER,
               final.ITEM_DESCRIPTION,
               final.TRANSACTION_SOURCE,
               NULL                               period_level,
               SUM (final.ON_HAND_QTY_PERIOD_LEVEL) ON_HAND_QTY_PERIOD_LEVEL
          FROM (  SELECT b.INV_ORG         INV_ORG,
                         b.ITEM_NUMBER     ITEM_NUMBER,
                         b.ITEM_DESCRIPTION ITEM_DESCRIPTION,
                         b.TRANSACTION_TYPE_ID TRANSACTION_TYPE_ID,
                         b.TRANSACTION_SOURCE TRANSACTION_SOURCE,
                         b.CURR_ON_HAND_QTY CURR_ON_HAND_QTY,
                         SUM (b.total_qty) ON_HAND_QTY_PERIOD_LEVEL
                    FROM (SELECT a.transaction_id    transaction_id,
                                 a.transaction_source_type_id transaction_source_type_id,
                                 a.transaction_type_id transaction_type_id,
                                 a.inv_org           inv_org,
                                 a.item_number       item_number,
                                 a.item_description  item_description,
                                 a.po_number         po_number,
                                 a.po_supplier_id    po_supplier_id,
                                 a.po_supplier_site_id po_supplier_site_id,
                                 /*
								 a.so_number         so_number,
                                 a.so_supplier_id    so_supplier_id,
                                 a.so_supplier_site_id so_supplier_site_id,
								 */
                                 CASE
                                    --WHEN UPPER (a.transaction_type_id) LIKE '%TRANSFER%INTERORGANIZATION%'
                                    WHEN (a.transaction_type_id) IN ('Transfer Order Interorganization Receipt','Transfer Order Interorganization Shipment','Transfer Order Interorganization Transfer') 
									THEN
                                       CASE
                                          WHEN (a.total_qty < 0)
                                          THEN
                                             'INTERCOMPANY-ISSUE'
                                          WHEN (a.total_qty >= 0)
                                          THEN
                                             'INTERCOMPANY-RECEIPT'
                                       END									
									WHEN a.po_supplier_id IS NULL 
                                    THEN
                                       CASE
                                          --WHEN (UPPER (a.transaction_type_id) LIKE '%ISSUE%' OR UPPER (a.transaction_type_id) LIKE '%RETURN%' OR (a.total_qty < 0))
                                          WHEN ((a.transaction_type_id) IN ('Account Alias Issue','Account Issue','Miscellaneous issue','Movement Request Issue','Residual Quantity Issue','Sales Order Issue',
										                                  'Transfer Order Issue','Work in Process Material Issue','Work in Process Negative Material Issue')
										       OR    
											  (a.transaction_type_id) IN ('RMA Return','Receipt Advice Return','Return to Supplier','Supplier Return Scrap Without Receipt Reference','Supplier Return Shipment Without Receipt Reference',
                                                                          'Transfer Order Return Pick','Transfer Order Return Receipt','Transfer Order Return Shipment','Transfer Order Return Transfer','Transfer Order Return With Scrap',
                                                                          'Work in Process Material Return','Work in Process Negative Material Return','Work in Process Product Return')  
									   	       OR
											  (a.total_qty < 0)
											 ) 										  
										  THEN
                                             'OTHERS-ISSUE'
                                          WHEN ((a.transaction_type_id) = 'Purchase Order Receipt' --LIKE'%RECEIPT%' 
										        OR (a.total_qty >= 0))
                                          THEN
                                             'OTHERS-RECEIPT'
                                       END                                    
                                    WHEN NVL ((SELECT 'INTERCOMPANY'
                                                 FROM fnd_lookup_values flv,
                                                      poz_suppliers_v  psv,
                                                      poz_supplier_sites_v pssv
                                                WHERE 1 = 1
                                                  AND flv.lookup_type ='ICHOR_INTER_COMPANY_SUPPLIER'
                                                    AND flv.meaning = psv.vendor_name
                                                    AND flv.description = pssv.party_site_name
                                                    AND psv.vendor_id = pssv.vendor_id
                                                    AND psv.vendor_id = a.po_supplier_id
                                                    AND pssv.vendor_site_id = a.po_supplier_site_id
                                                    AND TRUNC(NVL(pssv.inactive_date,SYSDATE + 1)) > TRUNC(SYSDATE)
                                                    AND psv.enabled_flag = 'Y'
                                                    AND flv.enabled_flag = 'Y'
													AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(flv.start_date_active,SYSDATE-1)) AND TRUNC(NVL(flv.end_date_active,SYSDATE+1))
                                                    AND flv.language = 'US'),'SUPPLIERS') = 'INTERCOMPANY'
                                    THEN
                                       CASE
                                          --WHEN (UPPER (a.transaction_type_id) LIKE '%ISSUE%' OR UPPER (a.transaction_type_id) LIKE '%RETURN%' OR (a.total_qty < 0))
                                          WHEN ((a.transaction_type_id) IN ('Account Alias Issue','Account Issue','Miscellaneous issue','Movement Request Issue','Residual Quantity Issue','Sales Order Issue',
										                                  'Transfer Order Issue','Work in Process Material Issue','Work in Process Negative Material Issue')
										       OR    
											  (a.transaction_type_id) IN ('RMA Return','Receipt Advice Return','Return to Supplier','Supplier Return Scrap Without Receipt Reference','Supplier Return Shipment Without Receipt Reference',
                                                                          'Transfer Order Return Pick','Transfer Order Return Receipt','Transfer Order Return Shipment','Transfer Order Return Transfer','Transfer Order Return With Scrap',
                                                                          'Work in Process Material Return','Work in Process Negative Material Return','Work in Process Product Return')  
									   	       OR
											  (a.total_qty < 0)
											 ) 
										  THEN
										     'INTERCOMPANY-ISSUE'
                                          WHEN ((a.transaction_type_id) = 'Purchase Order Receipt' --LIKE '%RECEIPT%' 
										         OR (a.total_qty >= 0))
                                          THEN
                                             'INTERCOMPANY-RECEIPT'
                                       END
                                    WHEN NVL ((SELECT 'INTERCOMPANY'
                                                 FROM fnd_lookup_values flv,
                                                      poz_suppliers_v  psv,
                                                      poz_supplier_sites_v pssv
                                                WHERE 1 = 1
                                                  AND flv.lookup_type ='ICHOR_INTER_COMPANY_SUPPLIER'
                                                  AND flv.meaning = psv.vendor_name
                                                  AND flv.description = pssv.party_site_name
                                                  AND psv.vendor_id = pssv.vendor_id
                                                  AND psv.vendor_id = a.po_supplier_id
                                                  AND pssv.vendor_site_id = a.po_supplier_site_id
                                                  AND TRUNC (NVL(pssv.inactive_date,SYSDATE + 1)) >TRUNC (SYSDATE)
                                                  AND psv.enabled_flag = 'Y'
                                                  AND flv.enabled_flag = 'Y'
												  AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(flv.start_date_active,SYSDATE-1)) AND TRUNC(NVL(flv.end_date_active,SYSDATE+1))
                                                  AND flv.language = 'US'),'SUPPLIERS') = 'SUPPLIERS'
                                    THEN
                                       CASE
                                          --WHEN (UPPER (a.transaction_type_id) LIKE '%ISSUE%' OR UPPER (a.transaction_type_id) LIKE '%RETURN%' OR (a.total_qty < 0))
                                          WHEN ((a.transaction_type_id) IN ('Account Alias Issue','Account Issue','Miscellaneous issue','Movement Request Issue','Residual Quantity Issue','Sales Order Issue',
										                                  'Transfer Order Issue','Work in Process Material Issue','Work in Process Negative Material Issue')
										       OR    
											  (a.transaction_type_id) IN ('RMA Return','Receipt Advice Return','Return to Supplier','Supplier Return Scrap Without Receipt Reference','Supplier Return Shipment Without Receipt Reference',
                                                                          'Transfer Order Return Pick','Transfer Order Return Receipt','Transfer Order Return Shipment','Transfer Order Return Transfer','Transfer Order Return With Scrap',
                                                                          'Work in Process Material Return','Work in Process Negative Material Return','Work in Process Product Return')  
									   	       OR
											  (a.total_qty < 0)
											 ) 										  
										  THEN
                                             'SUPPLIERS-ISSUE'
                                          WHEN ((a.transaction_type_id) = 'Purchase Order Receipt' --LIKE '%RECEIPT%'
										         OR (a.total_qty >= 0))
                                          THEN
                                             'SUPPLIERS-RECEIPT'
                                       END
                                 END transaction_source,
                                 a.transaction_action_id transaction_action_id,
                                 TO_CHAR (a.transaction_date,'DD-MON-YYYY hh24:mi:ss','nls_date_language=American') transaction_date,
                                 a.txn_period        txn_period,
                                 a.total_qty         total_qty,
                                 a.curr_on_hand_qty  curr_on_hand_qty
                            FROM (  SELECT (SELECT TRANSACTION_SOURCE_TYPE_NAME
                                              FROM INV_TXN_SOURCE_TYPES_TL
                                             WHERE TRANSACTION_SOURCE_TYPE_ID =imt.TRANSACTION_SOURCE_TYPE_ID
                                               AND language = 'US') TRANSACTION_SOURCE_TYPE_ID,
                                           (SELECT transaction_type_name
                                              FROM inv_transaction_types_tl
                                             WHERE transaction_type_id = imt.TRANSACTION_TYPE_ID) TRANSACTION_TYPE_ID,
                                           iop.organization_code INV_ORG,
                                           esib.item_number  ITEM_NUMBER,
                                           TRIM (esib.description) ITEM_DESCRIPTION,
                                           imt.TRANSACTION_ACTION_ID,
                                           imt.TRANSACTION_DATE,
                                           TO_CHAR (imt.transaction_date,'MON-YYYY','nls_date_language=American') txn_period,
                                           TO_CHAR (imt.transaction_date,'MM','nls_date_language=American') period_level,
                                           imt.transaction_id,
                                           CASE
											   WHEN (SELECT transaction_type_name --UPPER(transaction_type_name)
														  FROM inv_transaction_types_tl
														 WHERE transaction_type_id = imt.TRANSACTION_TYPE_ID) = 'Purchase Order Receipt' --LIKE '%PURCHASE%ORDER%RECEIPT%' 
											   THEN
												   (SELECT segment1
													  FROM po_headers_all
													 WHERE po_header_id = imt.transaction_source_id) 
											   ELSE
												  NULL 
                                           END PO_NUMBER,
                                           CASE
											   WHEN (SELECT transaction_type_name --UPPER(transaction_type_name)
														  FROM inv_transaction_types_tl
														 WHERE transaction_type_id = imt.TRANSACTION_TYPE_ID) = 'Purchase Order Receipt' --LIKE '%PURCHASE%ORDER%RECEIPT%' 
											   THEN
													(SELECT vendor_id
													   FROM po_headers_all
													  WHERE po_header_id = imt.transaction_source_id) 
											   ELSE
												  NULL 
                                           END PO_SUPPLIER_ID,
                                           CASE
											   WHEN (SELECT transaction_type_name --UPPER(transaction_type_name)
														  FROM inv_transaction_types_tl
														 WHERE transaction_type_id = imt.TRANSACTION_TYPE_ID) = 'Purchase Order Receipt' --LIKE '%PURCHASE%ORDER%RECEIPT%' 
											   THEN										   
												   (SELECT vendor_site_id
													  FROM po_headers_all
													 WHERE po_header_id = imt.transaction_source_id) 
											   ELSE
												  NULL 
                                           END PO_SUPPLIER_SITE_ID,
                                           /*
										   (SELECT order_number
                                              FROM doo_headers_all
                                             WHERE header_id = imt.transaction_source_id) SO_NUMBER,
                                           (SELECT supplier_id
                                              FROM doo_headers_all
                                             WHERE header_id = imt.transaction_source_id) SO_SUPPLIER_ID,
                                           (SELECT supplier_site_id
                                              FROM doo_headers_all
                                             WHERE header_id = imt.transaction_source_id) SO_SUPPLIER_SITE_ID,
											*/ 
                                           SUM (NVL (imt.transaction_quantity, 0)) total_qty,
                                           (SELECT SUM(NVL(ioqd.transaction_quantity,0))
                                              FROM inv_onhand_quantities_detail ioqd
                                             WHERE 1 = 1
                                               AND ioqd.inventory_item_id = esib.inventory_item_id
                                               AND ioqd.organization_id = esib.organization_id
                                               AND EXISTS(SELECT 1
                                                            FROM inv_secondary_inventories sub
                                                            WHERE 1 = 1
                                                              AND sub.secondary_inventory_name = ioqd.subinventory_code
                                                              AND sub.availability_type = 1))CURR_ON_HAND_QTY
                                      FROM inv_material_txns imt,
                                           inv_org_parameters iop,
                                           egp_system_items_vl esib
                                     WHERE 1 = 1
                                       AND esib.inventory_item_id = imt.inventory_item_id
                                       AND esib.organization_id = imt.organization_id
                                       AND iop.organization_id =imt.organization_id
                                       AND iop.organization_code =NVL (p_inventory_org,iop.organization_code)
                                       AND esib.item_number =(CASE
                                                               WHEN NVL (p_item_number,'All') = 'All'
                                                               THEN
                                                                  esib.item_number
                                                               ELSE
                                                                  p_item_number
                                                              END)
                                  GROUP BY iop.organization_code,
                                           esib.item_number,
                                           TRIM (esib.description),
                                           esib.inventory_item_id,
                                           esib.organization_id,
                                           imt.TRANSACTION_SOURCE_TYPE_ID,
                                           imt.TRANSACTION_TYPE_ID,
                                           imt.TRANSACTION_ACTION_ID,
                                           imt.TRANSACTION_DATE,
                                           imt.transaction_id,
                                           imt.transaction_source_id) a
                           WHERE 1 = 1) b
                   WHERE 1 = 1
                GROUP BY b.inv_org,
                         b.item_number,
                         b.item_description,
                         b.transaction_type_id,
                         b.transaction_source,
                         b.curr_on_hand_qty) final
         WHERE 1 = 1
      GROUP BY final.INV_ORG,
               final.ITEM_NUMBER,
               final.ITEM_DESCRIPTION,
               final.TRANSACTION_SOURCE
      ORDER BY final.ITEM_NUMBER, final.TRANSACTION_SOURCE;


   l_onhand_stk_supplier            NUMBER := 0;
   l_onhand_stk_intercomp           NUMBER := 0;
   l_onhand_stk_others              NUMBER := 0;

   CURSOR onhand_qty_post_period_cur (
      p_inventory_org    VARCHAR2,
      p_item_number      VARCHAR2,
      p_period           VARCHAR2)
   IS
        SELECT final.INV_ORG,
               final.ITEM_NUMBER,
               final.ITEM_DESCRIPTION,
               final.TRANSACTION_SOURCE,
               NULL                               PERIOD_LEVEL,
               SUM (final.ON_HAND_QTY_PERIOD_LEVEL) ON_HAND_QTY_PERIOD_LEVEL
          FROM (  SELECT b.INV_ORG         INV_ORG,
                         b.ITEM_NUMBER     ITEM_NUMBER,
                         b.ITEM_DESCRIPTION ITEM_DESCRIPTION,
                         b.TRANSACTION_TYPE_ID TRANSACTION_TYPE_ID,
                         b.TRANSACTION_SOURCE TRANSACTION_SOURCE,
                         b.PERIOD_LEVEL    PERIOD_LEVEL,
                         b.CURR_ON_HAND_QTY CURR_ON_HAND_QTY,
                         SUM (b.total_qty) ON_HAND_QTY_PERIOD_LEVEL
                    FROM (SELECT a.transaction_id    transaction_id,
                                 a.transaction_source_type_id transaction_source_type_id,
                                 a.transaction_type_id transaction_type_id,
                                 a.inv_org           inv_org,
                                 a.item_number       item_number,
                                 a.item_description  item_description,
                                 a.po_number         po_number,
                                 a.po_supplier_id    po_supplier_id,
                                 a.po_supplier_site_id po_supplier_site_id,
                                 /*
								 a.so_number         so_number,
                                 a.so_supplier_id    so_supplier_id,
                                 a.so_supplier_site_id so_supplier_site_id,
                                 */
								 CASE
								    --WHEN UPPER (a.transaction_type_id) LIKE '%TRANSFER%INTERORGANIZATION%'
                                    WHEN (a.transaction_type_id) IN ('Transfer Order Interorganization Receipt','Transfer Order Interorganization Shipment','Transfer Order Interorganization Transfer')                                   
									THEN
                                       CASE
                                          WHEN (a.total_qty < 0)
                                          THEN
                                             'INTERCOMPANY-ISSUE'
                                          WHEN (a.total_qty >= 0)
                                          THEN
                                             'INTERCOMPANY-RECEIPT'
                                       END
                                    WHEN a.po_supplier_id IS NULL 
                                    THEN
                                       CASE
                                          --WHEN (UPPER (a.transaction_type_id) LIKE '%ISSUE%' OR UPPER (a.transaction_type_id) LIKE '%RETURN%' OR (a.total_qty < 0))
                                          WHEN ((a.transaction_type_id) IN ('Account Alias Issue','Account Issue','Miscellaneous issue','Movement Request Issue','Residual Quantity Issue','Sales Order Issue',
										                                  'Transfer Order Issue','Work in Process Material Issue','Work in Process Negative Material Issue')
										       OR    
											  (a.transaction_type_id) IN ('RMA Return','Receipt Advice Return','Return to Supplier','Supplier Return Scrap Without Receipt Reference','Supplier Return Shipment Without Receipt Reference',
                                                                          'Transfer Order Return Pick','Transfer Order Return Receipt','Transfer Order Return Shipment','Transfer Order Return Transfer','Transfer Order Return With Scrap',
                                                                          'Work in Process Material Return','Work in Process Negative Material Return','Work in Process Product Return')  
									   	       OR
											  (a.total_qty < 0)
											 ) 
										  THEN
                                             'OTHERS-ISSUE'
                                          WHEN ((a.transaction_type_id) = 'Purchase Order Receipt' --LIKE'%RECEIPT%' 
										        OR (a.total_qty >= 0))
                                          THEN
                                             'OTHERS-RECEIPT'
                                       END                                    
                                    WHEN NVL ((SELECT 'INTERCOMPANY'
                                                 FROM fnd_lookup_values flv,
                                                      poz_suppliers_v  psv,
                                                      poz_supplier_sites_v pssv
                                                WHERE 1 = 1
                                                  AND flv.lookup_type = 'ICHOR_INTER_COMPANY_SUPPLIER'
                                                  AND flv.meaning = psv.vendor_name
                                                  AND flv.description = pssv.party_site_name
                                                  AND psv.vendor_id = pssv.vendor_id
                                                  AND psv.vendor_id = a.po_supplier_id
                                                  AND pssv.vendor_site_id = a.po_supplier_site_id
                                                  AND TRUNC(NVL(pssv.inactive_date,SYSDATE + 1)) > TRUNC(SYSDATE)
                                                  AND psv.enabled_flag = 'Y'
                                                  AND flv.enabled_flag = 'Y'
												  AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(flv.start_date_active,SYSDATE-1)) AND TRUNC(NVL(flv.end_date_active,SYSDATE+1))
                                                  AND flv.language = 'US'),'SUPPLIERS') = 'INTERCOMPANY'
                                    THEN
                                       CASE
                                          --WHEN (UPPER (a.transaction_type_id) LIKE '%ISSUE%' OR UPPER (a.transaction_type_id) LIKE '%RETURN%' OR (a.total_qty < 0))
                                          WHEN ((a.transaction_type_id) IN ('Account Alias Issue','Account Issue','Miscellaneous issue','Movement Request Issue','Residual Quantity Issue','Sales Order Issue',
										                                  'Transfer Order Issue','Work in Process Material Issue','Work in Process Negative Material Issue')
										       OR    
											  (a.transaction_type_id) IN ('RMA Return','Receipt Advice Return','Return to Supplier','Supplier Return Scrap Without Receipt Reference','Supplier Return Shipment Without Receipt Reference',
                                                                          'Transfer Order Return Pick','Transfer Order Return Receipt','Transfer Order Return Shipment','Transfer Order Return Transfer','Transfer Order Return With Scrap',
                                                                          'Work in Process Material Return','Work in Process Negative Material Return','Work in Process Product Return')  
									   	       OR
											  (a.total_qty < 0)
											 ) 
										  THEN										  
                                             'INTERCOMPANY-ISSUE'
                                          WHEN ((a.transaction_type_id) = 'Purchase Order Receipt' --LIKE '%RECEIPT%' 
										         OR (a.total_qty >= 0))
                                          THEN
                                             'INTERCOMPANY-RECEIPT'
                                       END
                                    WHEN NVL((SELECT 'INTERCOMPANY'
                                                FROM fnd_lookup_values flv,
                                                     poz_suppliers_v  psv,
                                                     poz_supplier_sites_v pssv
                                               WHERE 1 = 1
                                                 AND flv.lookup_type = 'ICHOR_INTER_COMPANY_SUPPLIER'
                                                 AND flv.meaning = psv.vendor_name
                                                 AND flv.description = pssv.party_site_name
                                                 AND psv.vendor_id = pssv.vendor_id
                                                 AND psv.vendor_id = a.po_supplier_id
                                                 AND pssv.vendor_site_id = a.po_supplier_site_id
                                                 AND TRUNC (NVL(pssv.inactive_date,SYSDATE + 1)) > TRUNC (SYSDATE)
                                                 AND psv.enabled_flag = 'Y'
                                                 AND flv.enabled_flag = 'Y'
												 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(flv.start_date_active,SYSDATE-1)) AND TRUNC(NVL(flv.end_date_active,SYSDATE+1))
                                                 AND flv.language = 'US'),'SUPPLIERS') = 'SUPPLIERS'
                                    THEN
                                       CASE
                                          --WHEN (UPPER (a.transaction_type_id) LIKE '%ISSUE%' OR UPPER (a.transaction_type_id) LIKE '%RETURN%' OR (a.total_qty < 0))
                                          WHEN ((a.transaction_type_id) IN ('Account Alias Issue','Account Issue','Miscellaneous issue','Movement Request Issue','Residual Quantity Issue','Sales Order Issue',
										                                  'Transfer Order Issue','Work in Process Material Issue','Work in Process Negative Material Issue')
										       OR    
											  (a.transaction_type_id) IN ('RMA Return','Receipt Advice Return','Return to Supplier','Supplier Return Scrap Without Receipt Reference','Supplier Return Shipment Without Receipt Reference',
                                                                          'Transfer Order Return Pick','Transfer Order Return Receipt','Transfer Order Return Shipment','Transfer Order Return Transfer','Transfer Order Return With Scrap',
                                                                          'Work in Process Material Return','Work in Process Negative Material Return','Work in Process Product Return')  
									   	       OR
											  (a.total_qty < 0)
											 ) 										  
										  THEN
                                             'SUPPLIERS-ISSUE'
                                          WHEN ((a.transaction_type_id) = 'Purchase Order Receipt' --LIKE '%RECEIPT%' 
										        OR (a.total_qty >= 0))
                                          THEN
                                             'SUPPLIERS-RECEIPT'
                                       END
                                 END transaction_source,
                                 a.transaction_action_id transaction_action_id,
                                 TO_CHAR (a.transaction_date,'DD-MON-YYYY hh24:mi:ss','nls_date_language=American') transaction_date,
                                 a.txn_period        txn_period,
                                 a.period_level      period_level,
                                 a.total_qty         total_qty,
                                 a.curr_on_hand_qty  curr_on_hand_qty
                            FROM (  SELECT (SELECT TRANSACTION_SOURCE_TYPE_NAME
                                              FROM INV_TXN_SOURCE_TYPES_TL
                                             WHERE TRANSACTION_SOURCE_TYPE_ID = imt.TRANSACTION_SOURCE_TYPE_ID AND language = 'US') TRANSACTION_SOURCE_TYPE_ID,
                                           (SELECT transaction_type_name
                                              FROM inv_transaction_types_tl
                                             WHERE transaction_type_id = imt.TRANSACTION_TYPE_ID) TRANSACTION_TYPE_ID,
                                           iop.organization_code INV_ORG,
                                           esib.item_number  ITEM_NUMBER,
                                           TRIM (esib.description) ITEM_DESCRIPTION,
                                           imt.TRANSACTION_ACTION_ID,
                                           imt.TRANSACTION_DATE,
                                           TO_CHAR (imt.transaction_date,'MON-YYYY','nls_date_language=American') txn_period,
                                           TO_CHAR (imt.transaction_date,'MM','nls_date_language=American') period_level,
                                           imt.transaction_id,
										   CASE
											   WHEN (SELECT transaction_type_name --UPPER(transaction_type_name)
														  FROM inv_transaction_types_tl
														 WHERE transaction_type_id = imt.TRANSACTION_TYPE_ID) = 'Purchase Order Receipt' --LIKE '%PURCHASE%ORDER%RECEIPT%' 
											   THEN
												   (SELECT segment1
													  FROM po_headers_all
													 WHERE po_header_id = imt.transaction_source_id) 
											   ELSE	 
												   NULL
										   END PO_NUMBER,
                                           CASE
											   WHEN (SELECT transaction_type_name --UPPER(transaction_type_name)
														  FROM inv_transaction_types_tl
														 WHERE transaction_type_id = imt.TRANSACTION_TYPE_ID) = 'Purchase Order Receipt' --LIKE '%PURCHASE%ORDER%RECEIPT%' 
											   THEN
												   (SELECT vendor_id
													  FROM po_headers_all
													 WHERE po_header_id = imt.transaction_source_id) 
											   ELSE	 
												   NULL
										   END PO_SUPPLIER_ID,
                                           CASE
											   WHEN (SELECT transaction_type_name --UPPER(transaction_type_name)
														  FROM inv_transaction_types_tl
														 WHERE transaction_type_id = imt.TRANSACTION_TYPE_ID) = 'Purchase Order Receipt' --LIKE '%PURCHASE%ORDER%RECEIPT%' 
											   THEN
												   (SELECT vendor_site_id
													  FROM po_headers_all
													 WHERE po_header_id = imt.transaction_source_id) 
											   ELSE	 
												   NULL
										   END PO_SUPPLIER_SITE_ID,
                                           /*
										   (SELECT order_number
                                              FROM doo_headers_all
                                             WHERE header_id = imt.transaction_source_id) SO_NUMBER,
                                           (SELECT supplier_id
                                              FROM doo_headers_all
                                             WHERE header_id = imt.transaction_source_id) SO_SUPPLIER_ID,
                                           (SELECT supplier_site_id
                                              FROM doo_headers_all
                                             WHERE header_id = imt.transaction_source_id) SO_SUPPLIER_SITE_ID,
											*/ 
                                           SUM (NVL (imt.transaction_quantity, 0)) total_qty,
                                           (SELECT SUM(NVL (ioqd.transaction_quantity,0))
                                              FROM inv_onhand_quantities_detail ioqd
                                             WHERE 1 = 1
                                                AND ioqd.inventory_item_id = esib.inventory_item_id
                                                AND ioqd.organization_id = esib.organization_id
                                                AND EXISTS(SELECT 1
                                                             FROM inv_secondary_inventories sub
                                                            WHERE 1 = 1
                                                              AND sub.secondary_inventory_name =ioqd.subinventory_code
                                                              AND sub.availability_type = 1)) CURR_ON_HAND_QTY
                                      FROM inv_material_txns imt,
                                           inv_org_parameters iop,
                                           egp_system_items_vl esib
                                     WHERE 1 = 1
                                       AND esib.inventory_item_id = imt.inventory_item_id
                                       AND esib.organization_id = imt.organization_id
                                       AND iop.organization_id = imt.organization_id
                                       AND iop.organization_code = NVL (p_inventory_org,iop.organization_code)
                                       AND esib.item_number = (CASE
                                                                   WHEN NVL (p_item_number,'All') = 'All'
                                                               THEN
                                                                  esib.item_number
                                                               ELSE
                                                                   p_item_number
                                                               END)
                                       AND TRUNC(imt.transaction_date) > TRUNC(LAST_DAY(TO_DATE(p_period,'MON-YY','nls_date_language=American')))
                                  GROUP BY iop.organization_code,
                                           esib.item_number,
                                           TRIM (esib.description),
                                           esib.inventory_item_id,
                                           esib.organization_id,
                                           imt.TRANSACTION_SOURCE_TYPE_ID,
                                           imt.TRANSACTION_TYPE_ID,
                                           imt.TRANSACTION_ACTION_ID,
                                           imt.TRANSACTION_DATE,
                                           imt.transaction_id,
                                           imt.transaction_source_id) a
                           WHERE 1 = 1) b
                   WHERE 1 = 1
                GROUP BY b.inv_org,
                         b.item_number,
                         b.item_description,
                         b.transaction_type_id,
                         b.transaction_source,
                         b.period_level,
                         b.curr_on_hand_qty) final
         WHERE 1 = 1
      GROUP BY final.INV_ORG,
               final.ITEM_NUMBER,
               final.ITEM_DESCRIPTION,
               final.TRANSACTION_SOURCE
      --final.PERIOD_LEVEL
      ORDER BY final.ITEM_NUMBER, final.TRANSACTION_SOURCE;


   l_onhand_post_period_supplier    NUMBER := 0;
   l_onhand_post_period_intercomp   NUMBER := 0;
   l_onhand_post_period_others      NUMBER := 0;

   l_cal_summary                    VARCHAR2 (1) := 'N';

   l_inv_org                        inv_org_parameters.organization_code%TYPE;
   l_item_number                    egp_system_items_vl.item_number%TYPE;
BEGIN
   l_trans_tab.DELETE;

   OPEN transaction_cur;

   FETCH transaction_cur BULK COLLECT INTO l_trans_tab;

   IF l_trans_tab.COUNT = 0
   THEN
      CLOSE transaction_cur;

      NULL;
   ELSE
      l_data_clob := EMPTY_CLOB ();

      FOR j IN l_trans_tab.FIRST .. l_trans_tab.LAST
      LOOP
         IF (j = 1)
         THEN
            l_opn_stk_supplier := 0;
            l_opn_stk_intercomp := 0;
            l_opn_stk_others := 0;

            l_qty_rec_supplier := 0;
            l_qty_rec_intercomp := 0;
            l_qty_rec_others := 0;

            l_qty_issue_supplier := 0;
            l_qty_issue_intercomp := 0;
            l_qty_issue_others := 0;

            l_clo_stk_supplier := 0;
            l_clo_stk_intercomp := 0;
            l_clo_stk_others := 0;

            l_cal_summary := 'N';

            --starting the summary details for the first item being processed
            l_data_clob :=
                  l_data_clob
               || '<G_1>'
               || '<INV_ORG>'
               || l_trans_tab (j).inv_org
               || '</INV_ORG>'
               || '<ITEM_NUMBER>'
               --|| l_trans_tab (j).item_number
			   || REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(l_trans_tab(j).item_number, '&', '&amp;'),'<','&lt;'),'>','&gt;')
               || '</ITEM_NUMBER>'
               || '<ITEM_DESCRIPTION>'
			   || REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(l_trans_tab(j).item_description, '&', '&amp;'),'<','&lt;'),'>','&gt;')
               --|| REGEXP_REPLACE (l_trans_tab (j).item_description,'&','&amp;')
               || '</ITEM_DESCRIPTION>';
         ELSE
            --check if current iteration is for a new item
            IF (   l_trans_tab (j).inv_org <> l_trans_tab (j - 1).inv_org
                OR l_trans_tab (j).item_number <>
                      l_trans_tab (j - 1).item_number
                OR l_trans_tab (j).item_description <>
                      l_trans_tab (j - 1).item_description)  --new combination
            THEN
               l_cal_summary := 'Y';
			   
			   --Now closing the stock details for the last item (j-1) being processed------------------------------

               -----------Finding On Hand Qty based on trx source----------------

               l_on_hand_qty_tab.DELETE;

               OPEN on_hand_qty_cur (l_trans_tab (j - 1).inv_org,
                                     l_trans_tab (j - 1).item_number);

               FETCH on_hand_qty_cur BULK COLLECT INTO l_on_hand_qty_tab;

               IF l_on_hand_qty_tab.COUNT = 0
               THEN
                  CLOSE on_hand_qty_cur;

                  NULL;
               ELSE
                  FOR k IN l_on_hand_qty_tab.FIRST .. l_on_hand_qty_tab.LAST
                  LOOP
                     CASE
                        WHEN l_on_hand_qty_tab (k).transaction_source =
                                'SUPPLIERS-ISSUE'
                        THEN
                           l_onhand_stk_supplier :=
                                l_onhand_stk_supplier
                              + l_on_hand_qty_tab (k).on_hand_qty_period_level;
                        WHEN l_on_hand_qty_tab (k).transaction_source =
                                'SUPPLIERS-RECEIPT'
                        THEN
                           l_onhand_stk_supplier :=
                                l_onhand_stk_supplier
                              + l_on_hand_qty_tab (k).on_hand_qty_period_level;
                        WHEN l_on_hand_qty_tab (k).transaction_source =
                                'INTERCOMPANY-ISSUE'
                        THEN
                           l_onhand_stk_intercomp :=
                                l_onhand_stk_intercomp
                              + l_on_hand_qty_tab (k).on_hand_qty_period_level;
                        WHEN l_on_hand_qty_tab (k).transaction_source =
                                'INTERCOMPANY-RECEIPT'
                        THEN
                           l_onhand_stk_intercomp :=
                                l_onhand_stk_intercomp
                              + l_on_hand_qty_tab (k).on_hand_qty_period_level;
                        WHEN l_on_hand_qty_tab (k).transaction_source =
                                'OTHERS-ISSUE'
                        THEN
                           l_onhand_stk_others :=
                                l_onhand_stk_others
                              + l_on_hand_qty_tab (k).on_hand_qty_period_level;
                        WHEN l_on_hand_qty_tab (k).transaction_source =
                                'OTHERS-RECEIPT'
                        THEN
                           l_onhand_stk_others :=
                                l_onhand_stk_others
                              + l_on_hand_qty_tab (k).on_hand_qty_period_level;
                        ELSE
                           NULL;
                     END CASE;
                  END LOOP;

                  CLOSE on_hand_qty_cur;
               END IF;

               -------------------------------------------------------------------

               -----------Finding On Hand Qty post period based on trx source----------------

               l_onhand_post_period_qty_tab.DELETE;

               OPEN onhand_qty_post_period_cur (l_trans_tab (j - 1).inv_org,
                                                l_trans_tab (j - 1).item_number,
                                                :p_period);

               FETCH onhand_qty_post_period_cur
                  BULK COLLECT INTO l_onhand_post_period_qty_tab;

               IF l_onhand_post_period_qty_tab.COUNT = 0
               THEN
                  CLOSE onhand_qty_post_period_cur;

                  NULL;
               ELSE
                  FOR l IN l_onhand_post_period_qty_tab.FIRST ..
                           l_onhand_post_period_qty_tab.LAST
                  LOOP
                     CASE
                        WHEN l_onhand_post_period_qty_tab (l).transaction_source =
                                'SUPPLIERS-ISSUE'
                        THEN
                           l_onhand_post_period_supplier :=
                                l_onhand_post_period_supplier
                              + l_onhand_post_period_qty_tab (l).on_hand_qty_period_level;
                        WHEN l_onhand_post_period_qty_tab (l).transaction_source =
                                'SUPPLIERS-RECEIPT'
                        THEN
                           l_onhand_post_period_supplier :=
                                l_onhand_post_period_supplier
                              + l_onhand_post_period_qty_tab (l).on_hand_qty_period_level;
                        WHEN l_onhand_post_period_qty_tab (l).transaction_source =
                                'INTERCOMPANY-ISSUE'
                        THEN
                           l_onhand_post_period_intercomp :=
                                l_onhand_post_period_intercomp
                              + l_onhand_post_period_qty_tab (l).on_hand_qty_period_level;
                        WHEN l_onhand_post_period_qty_tab (l).transaction_source =
                                'INTERCOMPANY-RECEIPT'
                        THEN
                           l_onhand_post_period_intercomp :=
                                l_onhand_post_period_intercomp
                              + l_onhand_post_period_qty_tab (l).on_hand_qty_period_level;
                        WHEN l_onhand_post_period_qty_tab (l).transaction_source =
                                'OTHERS-ISSUE'
                        THEN
                           l_onhand_post_period_others :=
                                l_onhand_post_period_others
                              + l_onhand_post_period_qty_tab (l).on_hand_qty_period_level;
                        WHEN l_onhand_post_period_qty_tab (l).transaction_source =
                                'OTHERS-RECEIPT'
                        THEN
                           l_onhand_post_period_others :=
                                l_onhand_post_period_others
                              + l_onhand_post_period_qty_tab (l).on_hand_qty_period_level;
                        ELSE
                           NULL;
                     END CASE;
                  END LOOP;

                  CLOSE onhand_qty_post_period_cur;
               END IF;

               -------------------------------------------------------------------


               ---making issue quantity as positive for Display and calculation purpose---------------
               l_qty_issue_supplier := ABS (l_qty_issue_supplier);
               l_qty_issue_intercomp := ABS (l_qty_issue_intercomp);
               l_qty_issue_others := ABS (l_qty_issue_others);
               ---making issue quantity as positive for Display and calculation purpose---------------

               l_clo_stk_supplier :=
                  l_onhand_stk_supplier - l_onhand_post_period_supplier;
               l_clo_stk_intercomp :=
                  l_onhand_stk_intercomp - l_onhand_post_period_intercomp;
               l_clo_stk_others :=
                  l_onhand_stk_others - l_onhand_post_period_others;

               --------------------Finding Opening Stock based on transaction Source------------------------------

               l_opn_stk_supplier :=
                    (l_clo_stk_supplier + l_qty_issue_supplier)
                  - l_qty_rec_supplier;
               l_opn_stk_intercomp :=
                    (l_clo_stk_intercomp + l_qty_issue_intercomp)
                  - l_qty_rec_intercomp;
               l_opn_stk_others :=
                  (l_clo_stk_others + l_qty_issue_others) - l_qty_rec_others;
               ------------------------------------------------------------------------------------------------------


               --closing the aging details for the last item being processed
               l_data_clob :=
                     l_data_clob
                  || '<OPN_STK_SUPPLIER>'
                  || TO_CHAR (l_opn_stk_supplier)
                  || '</OPN_STK_SUPPLIER>'
                  || '<OPN_STK_INTERCOMP>'
                  || TO_CHAR (l_opn_stk_intercomp)
                  || '</OPN_STK_INTERCOMP>'
                  || '<OPN_STK_OTHERS>'
                  || TO_CHAR (l_opn_stk_others)
                  || '</OPN_STK_OTHERS>'
                  || '<QTY_REC_SUPPLIER>'
                  || TO_CHAR (l_qty_rec_supplier)
                  || '</QTY_REC_SUPPLIER>'
                  || '<QTY_REC_INTERCOMP>'
                  || TO_CHAR (l_qty_rec_intercomp)
                  || '</QTY_REC_INTERCOMP>'
                  || '<QTY_REC_OTHERS>'
                  || TO_CHAR (l_qty_rec_others)
                  || '</QTY_REC_OTHERS>'
                  || '<QTY_ISSUE_SUPPLIER>'
                  || TO_CHAR (l_qty_issue_supplier)
                  || '</QTY_ISSUE_SUPPLIER>'
                  || '<QTY_ISSUE_INTERCOMP>'
                  || TO_CHAR (l_qty_issue_intercomp)
                  || '</QTY_ISSUE_INTERCOMP>'
                  || '<QTY_ISSUE_OTHERS>'
                  || TO_CHAR (l_qty_issue_others)
                  || '</QTY_ISSUE_OTHERS>'
                  || '<CLO_STK_SUPPLIER>'
                  || TO_CHAR (l_clo_stk_supplier)
                  || '</CLO_STK_SUPPLIER>'
                  || '<CLO_STK_INTERCOMP>'
                  || TO_CHAR (l_clo_stk_intercomp)
                  || '</CLO_STK_INTERCOMP>'
                  || '<CLO_STK_OTHERS>'
                  || TO_CHAR (l_clo_stk_others)
                  || '</CLO_STK_OTHERS>'
                  || '</G_1>';


               --resetting the quantities
               l_opn_stk_supplier := 0;
               l_opn_stk_intercomp := 0;
               l_opn_stk_others := 0;

               l_qty_rec_supplier := 0;
               l_qty_rec_intercomp := 0;
               l_qty_rec_others := 0;

               l_qty_issue_supplier := 0;
               l_qty_issue_intercomp := 0;
               l_qty_issue_others := 0;

               l_clo_stk_supplier := 0;
               l_clo_stk_intercomp := 0;
               l_clo_stk_others := 0;

               l_onhand_stk_supplier := 0;
               l_onhand_stk_intercomp := 0;
               l_onhand_stk_others := 0;

               l_onhand_post_period_supplier := 0;
               l_onhand_post_period_intercomp := 0;
               l_onhand_post_period_others := 0;


               l_cal_summary := 'N';

               --starting the summary details for the current item being processed
               l_data_clob :=
                     l_data_clob
                  || '<G_1>'
                  || '<INV_ORG>'
                  || l_trans_tab (j).inv_org
                  || '</INV_ORG>'
                  || '<ITEM_NUMBER>'
                  --|| l_trans_tab (j).item_number
				  || REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(l_trans_tab(j).item_number, '&', '&amp;'),'<','&lt;'),'>','&gt;')
                  || '</ITEM_NUMBER>'
                  || '<ITEM_DESCRIPTION>'
                  --|| REGEXP_REPLACE (l_trans_tab (j).item_description,'&','&amp;')
				  || REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(l_trans_tab(j).item_description, '&', '&amp;'),'<','&lt;'),'>','&gt;')
                  || '</ITEM_DESCRIPTION>';
            END IF;
         END IF;

         --cummalting/summing up issue and receive quantities based on transaction source

         CASE
            WHEN l_trans_tab (j).transaction_source = 'SUPPLIERS-ISSUE'
            THEN
               l_qty_issue_supplier :=
                    l_qty_issue_supplier
                  + l_trans_tab (j).on_hand_qty_period_level;
            WHEN l_trans_tab (j).transaction_source = 'SUPPLIERS-RECEIPT'
            THEN
               l_qty_rec_supplier :=
                    l_qty_rec_supplier
                  + l_trans_tab (j).on_hand_qty_period_level;
            WHEN l_trans_tab (j).transaction_source = 'INTERCOMPANY-ISSUE'
            THEN
               l_qty_issue_intercomp :=
                    l_qty_issue_intercomp
                  + l_trans_tab (j).on_hand_qty_period_level;
            WHEN l_trans_tab (j).transaction_source = 'INTERCOMPANY-RECEIPT'
            THEN
               l_qty_rec_intercomp :=
                    l_qty_rec_intercomp
                  + l_trans_tab (j).on_hand_qty_period_level;
            WHEN l_trans_tab (j).transaction_source = 'OTHERS-ISSUE'
            THEN
               l_qty_issue_others :=
                    l_qty_issue_others
                  + l_trans_tab (j).on_hand_qty_period_level;
            WHEN l_trans_tab (j).transaction_source = 'OTHERS-RECEIPT'
            THEN
               l_qty_rec_others :=
                  l_qty_rec_others + l_trans_tab (j).on_hand_qty_period_level;
            ELSE
               NULL;
         END CASE;

         l_inv_org := l_trans_tab (j).inv_org;
         l_item_number := l_trans_tab (j).item_number;
      END LOOP;

      IF l_cal_summary = 'N'
      THEN
         -----------Finding On Hand Qty based on trx source----------------

         l_on_hand_qty_tab.DELETE;

         OPEN on_hand_qty_cur (l_inv_org, l_item_number);

         FETCH on_hand_qty_cur BULK COLLECT INTO l_on_hand_qty_tab;

         IF l_on_hand_qty_tab.COUNT = 0
         THEN
            CLOSE on_hand_qty_cur;

            NULL;
         ELSE
            FOR k IN l_on_hand_qty_tab.FIRST .. l_on_hand_qty_tab.LAST
            LOOP
               CASE
                  WHEN l_on_hand_qty_tab (k).transaction_source =
                          'SUPPLIERS-ISSUE'
                  THEN
                     l_onhand_stk_supplier :=
                          l_onhand_stk_supplier
                        + l_on_hand_qty_tab (k).on_hand_qty_period_level;
                  WHEN l_on_hand_qty_tab (k).transaction_source =
                          'SUPPLIERS-RECEIPT'
                  THEN
                     l_onhand_stk_supplier :=
                          l_onhand_stk_supplier
                        + l_on_hand_qty_tab (k).on_hand_qty_period_level;
                  WHEN l_on_hand_qty_tab (k).transaction_source =
                          'INTERCOMPANY-ISSUE'
                  THEN
                     l_onhand_stk_intercomp :=
                          l_onhand_stk_intercomp
                        + l_on_hand_qty_tab (k).on_hand_qty_period_level;
                  WHEN l_on_hand_qty_tab (k).transaction_source =
                          'INTERCOMPANY-RECEIPT'
                  THEN
                     l_onhand_stk_intercomp :=
                          l_onhand_stk_intercomp
                        + l_on_hand_qty_tab (k).on_hand_qty_period_level;
                  WHEN l_on_hand_qty_tab (k).transaction_source =
                          'OTHERS-ISSUE'
                  THEN
                     l_onhand_stk_others :=
                          l_onhand_stk_others
                        + l_on_hand_qty_tab (k).on_hand_qty_period_level;
                  WHEN l_on_hand_qty_tab (k).transaction_source =
                          'OTHERS-RECEIPT'
                  THEN
                     l_onhand_stk_others :=
                          l_onhand_stk_others
                        + l_on_hand_qty_tab (k).on_hand_qty_period_level;
                  ELSE
                     NULL;
               END CASE;
            END LOOP;

            CLOSE on_hand_qty_cur;
         END IF;

         -------------------------------------------------------------------

         -----------Finding On Hand Qty post period based on trx source----------------

         l_onhand_post_period_qty_tab.DELETE;

         OPEN onhand_qty_post_period_cur (l_inv_org, l_item_number, :p_period);

         FETCH onhand_qty_post_period_cur
            BULK COLLECT INTO l_onhand_post_period_qty_tab;

         IF l_onhand_post_period_qty_tab.COUNT = 0
         THEN
            CLOSE onhand_qty_post_period_cur;

            NULL;
         ELSE
            FOR l IN l_onhand_post_period_qty_tab.FIRST ..
                     l_onhand_post_period_qty_tab.LAST
            LOOP
               CASE
                  WHEN l_onhand_post_period_qty_tab (l).transaction_source =
                          'SUPPLIERS-ISSUE'
                  THEN
                     l_onhand_post_period_supplier :=
                          l_onhand_post_period_supplier
                        + l_onhand_post_period_qty_tab (l).on_hand_qty_period_level;
                  WHEN l_onhand_post_period_qty_tab (l).transaction_source =
                          'SUPPLIERS-RECEIPT'
                  THEN
                     l_onhand_post_period_supplier :=
                          l_onhand_post_period_supplier
                        + l_onhand_post_period_qty_tab (l).on_hand_qty_period_level;
                  WHEN l_onhand_post_period_qty_tab (l).transaction_source =
                          'INTERCOMPANY-ISSUE'
                  THEN
                     l_onhand_post_period_intercomp :=
                          l_onhand_post_period_intercomp
                        + l_onhand_post_period_qty_tab (l).on_hand_qty_period_level;
                  WHEN l_onhand_post_period_qty_tab (l).transaction_source =
                          'INTERCOMPANY-RECEIPT'
                  THEN
                     l_onhand_post_period_intercomp :=
                          l_onhand_post_period_intercomp
                        + l_onhand_post_period_qty_tab (l).on_hand_qty_period_level;
                  WHEN l_onhand_post_period_qty_tab (l).transaction_source =
                          'OTHERS-ISSUE'
                  THEN
                     l_onhand_post_period_others :=
                          l_onhand_post_period_others
                        + l_onhand_post_period_qty_tab (l).on_hand_qty_period_level;
                  WHEN l_onhand_post_period_qty_tab (l).transaction_source =
                          'OTHERS-RECEIPT'
                  THEN
                     l_onhand_post_period_others :=
                          l_onhand_post_period_others
                        + l_onhand_post_period_qty_tab (l).on_hand_qty_period_level;
                  ELSE
                     NULL;
               END CASE;
            END LOOP;

            CLOSE onhand_qty_post_period_cur;
         END IF;

         -------------------------------------------------------------------


         ---making issue quantity as positive for Display and calculation purpose---------------
         l_qty_issue_supplier := ABS (l_qty_issue_supplier);
         l_qty_issue_intercomp := ABS (l_qty_issue_intercomp);
         l_qty_issue_others := ABS (l_qty_issue_others);
         
		 
		 ---Finding Closing Stock based on overall onhand and post period onhand---------------

         l_clo_stk_supplier :=
            l_onhand_stk_supplier - l_onhand_post_period_supplier;
         l_clo_stk_intercomp :=
            l_onhand_stk_intercomp - l_onhand_post_period_intercomp;
         l_clo_stk_others :=
            l_onhand_stk_others - l_onhand_post_period_others;

         --------------------Finding Opening Stock based on transaction Source------------------------------

         l_opn_stk_supplier :=
            (l_clo_stk_supplier + l_qty_issue_supplier) - l_qty_rec_supplier;
         l_opn_stk_intercomp :=
              (l_clo_stk_intercomp + l_qty_issue_intercomp)
            - l_qty_rec_intercomp;
         l_opn_stk_others :=
            (l_clo_stk_others + l_qty_issue_others) - l_qty_rec_others;
      ------------------------------------------------------------------------------------------------------
      END IF;


      --closing the aging details for the last item being processed
      l_data_clob :=
            l_data_clob
         || '<OPN_STK_SUPPLIER>'
         || TO_CHAR (l_opn_stk_supplier)
         || '</OPN_STK_SUPPLIER>'
         || '<OPN_STK_INTERCOMP>'
         || TO_CHAR (l_opn_stk_intercomp)
         || '</OPN_STK_INTERCOMP>'
         || '<OPN_STK_OTHERS>'
         || TO_CHAR (l_opn_stk_others)
         || '</OPN_STK_OTHERS>'
         || '<QTY_REC_SUPPLIER>'
         || TO_CHAR (l_qty_rec_supplier)
         || '</QTY_REC_SUPPLIER>'
         || '<QTY_REC_INTERCOMP>'
         || TO_CHAR (l_qty_rec_intercomp)
         || '</QTY_REC_INTERCOMP>'
         || '<QTY_REC_OTHERS>'
         || TO_CHAR (l_qty_rec_others)
         || '</QTY_REC_OTHERS>'
         || '<QTY_ISSUE_SUPPLIER>'
         || TO_CHAR (l_qty_issue_supplier)
         || '</QTY_ISSUE_SUPPLIER>'
         || '<QTY_ISSUE_INTERCOMP>'
         || TO_CHAR (l_qty_issue_intercomp)
         || '</QTY_ISSUE_INTERCOMP>'
         || '<QTY_ISSUE_OTHERS>'
         || TO_CHAR (l_qty_issue_others)
         || '</QTY_ISSUE_OTHERS>'
         || '<CLO_STK_SUPPLIER>'
         || TO_CHAR (l_clo_stk_supplier)
         || '</CLO_STK_SUPPLIER>'
         || '<CLO_STK_INTERCOMP>'
         || TO_CHAR (l_clo_stk_intercomp)
         || '</CLO_STK_INTERCOMP>'
         || '<CLO_STK_OTHERS>'
         || TO_CHAR (l_clo_stk_others)
         || '</CLO_STK_OTHERS>'
         || '</G_1>';

      CLOSE transaction_cur;

      OPEN :xdo_cursor FOR SELECT l_data_clob FROM DUAL;
   END IF;
END;