SELECT
	hzp.party_name || ' ' || hzp.party_number
  , hzp.party_id
  , hzps.PARTY_SITE_NUMBER "ShipToPartySiteNumber"
  , HZA.account_number
  , HZA.Account_name
  , hza.CUST_ACCOUNT_ID
  , HZA.status "Account Status"
  , hzp.status "Party Status"
  , hzps.status "Party Site Status"
  , hzps.party_site_id "PARTY SITE ID - for SHIP_TO"
  , hzcasa.status "Account Site Status"
  , hzcsua.site_use_id "Account Site ID - for BILL_TO"
  , hzcasa.start_Date
  , hzcasa.end_Date
  , hzcsua.SITE_USE_CODE
  , hzcasa.BILL_TO_FLAG
  , hzcasa.SHIP_TO_FLAG
  , hzcsua.PRIMARY_FLAG
  , hzcsua.STATUS "Account Site USE Status"
  , hzcsua.LOCATION
  , hzl.ADDRESS1
  , hzl.ADDRESS2
  , hzl.ADDRESS3
  , hzl.ADDRESS4
  , hzl.CITY
  , hzl.POSTAL_CODE
  , hzl.STATE
  , hzl.COUNTRY
  , hzl.LOCATION_ID
FROM
	fusion.HZ_PARTIES             HZP
  , fusion.HZ_PARTY_SITES         hzps
  , fusion.HZ_CUST_ACCOUNTS       HZA
  , fusion.HZ_CUST_ACCT_SITES_ALL hzcasa
  , fusion.HZ_CUST_SITE_USES_ALL  hzcsua
  , fusion.hz_locations           HZL
WHERE
	hzP.party_id                 = HZA.party_id (+)
	AND hza.CUST_ACCOUNT_ID      = hzcasa.CUST_ACCOUNT_ID (+)
	AND hzcasa.party_site_id     = hzps.party_site_id (+)
	AND hzcasa.cust_acct_site_id = hzcsua.cust_acct_site_id (+)
	AND hzps.location_id         = hzl.location_id (+)
	--         and       (
	--                      hzcasa.start_Date    <= sysdate
	--                        OR hzcasa.start_Date IS NULL
	--                )
	--                AND
	--                (
	--                        hzcasa.end_date    >= sysdate
	--                        OR hzcasa.end_date IS NULL
	--                )
	AND upper(hzP.party_name) LIKE upper(:Customer_Name)
ORDER BY
	hzp.party_number
  , hza.account_number
  , hzl.LOCATION_ID
;

-- Customer Contact Information:
SELECT DISTINCT
	hp.party_name "Customer Name"
  , hcsua.site_use_code
  , hca.account_number
  , hpc.person_first_name
  , hpc.person_last_name
  , hcp.contact_point_type
  , hcp.email_format
  , hcp.email_address
  , hcp.raw_phone_number
  , hcp.url
  , hcp.phone_area_code
  , hcp.phone_number
  , hcp.phone_extension
  , hcp.phone_line_type
  , hcp.contact_point_purpose
  , hcar.cust_account_role_id
  , HCA.STATUS "Account Status"
  , HCASA.STATUS "Account Site Status"
  , HCSUA.STATUS "Account Site Use Status"
  , HP.STATUS "Party Status"
  , HPS.STATUS "Party Site Status"
  , HR.STATUS "Relationship Status"
  , HCAR.STATUS "Customer Account Relationship Status"
  , HCP.STATUS "Contact Point Status"
FROM
	Fusion.hz_cust_accounts       hca
  , Fusion.hz_cust_acct_sites_all hcasa
  , Fusion.hz_cust_site_uses_all  hcsua
  , Fusion.hz_parties             hp
  , Fusion.hz_parties             hpc
  , Fusion.hz_party_sites         hps
  , Fusion.hz_relationships       hr
  , Fusion.hz_cust_account_roles  hcar
  , Fusion.hz_contact_points      hcp
  , Fusion.HZ_ROLE_RESPONSIBILITY hrr
WHERE
	hca.cust_account_id         = hcar.cust_account_id
	AND hcar.relationship_id    = hr.relationship_id
	AND hr.relationship_id      = hcp.relationship_id
	AND hcasa.cust_account_id   = hca.cust_account_id
	AND hcasa.cust_acct_site_id = hcsua.cust_acct_site_id
	AND hcar.cust_acct_site_id  = hcasa.cust_acct_site_id
	AND hcasa.party_site_id     = hps.party_site_id
	AND hps.party_id            = hca.party_id
	--AND hcsua.site_use_code = 'SHIP_TO'
	AND hca.party_id              = hp.party_id
	AND hr.object_type            = 'PERSON'
	AND hr.object_table_name      = 'HZ_PARTIES'
	AND hr.object_id              = hpc.party_id
	AND hcar.cust_account_role_id = hrr.cust_account_role_id
	-- AND hrr.responsibility_type IN ('SHIP_TO') -- Contact Responsibility - SHIP_TO
	-- AND hca.account_number = ':Account Number' -- Search by Account Number
	--AND hps.party_site_number = ':Site Number'
	AND upper(hp.party_name) LIKE :Customer_Name ||'%'
ORDER BY
	hp.party_name
  , hcsua.site_use_code