Creating Custom Merge Master Party Defaulting Method

The merge master party is the party in a duplicate set that remains in the TCA Registry after a merge. The HZ: Merge Master Party Defaulting profile option setting determines the method to use for defaulting the master for each duplicate set. You can define a custom user hook and set the profile option to User Hook to use your method. See: DQM Deployment Category.

Note: If you select User Hook as the profile value, then you must write the custom code in procedure HZ_USER_HOOK_PKG.default_master_user_hook() to link the user hook to the custom PL/SQL procedure.

Parameters

The parameters for the custom user hook are:

User Hook Example

/* Use OSO party as master party, if it doesn't exist, use any party id 
in the dup set*/

procedure default_master_user_hook(
  p_dup_set_id            IN NUMBER,
  x_master_party_id        OUT NOCOPY NUMBER,
  x_master_party_name        OUT NOCOPY VARCHAR2,
  x_return_status         OUT NOCOPY VARCHAR2,
  x_msg_count             OUT NOCOPY NUMBER,
  x_msg_data              OUT NOCOPY VARCHAR2 ) is

    cursor get_OSOPartyId_csr is
        SELECT PP.PARTY_ID, PP.PARTY_NAME
        FROM HZ_PARTIES PP,HZ_DUP_SETS DS, HZ_DUP_SET_PARTIES DSP, 
HZ_DUP_BATCH DB
        WHERE PP.PARTY_ID =DSP.DUP_PARTY_ID
        AND DB.DUP_BATCH_ID = DS.DUP_BATCH_ID
        AND DS.DUP_SET_ID = DSP.DUP_SET_ID
        AND DSP.DUP_SET_ID= p_dup_set_id
        AND PP.CREATED_BY_MODULE = 'OSO_CUSTOMER'
        AND NVL(DSP.MERGE_FLAG,'Y') <> 'N'
        AND ROWNUM = 1;

    cursor get_RandomPartyId_csr is
        SELECT PP.PARTY_ID, PP.PARTY_NAME
        FROM HZ_PARTIES PP,HZ_DUP_SETS DS, HZ_DUP_SET_PARTIES DSP, 
HZ_DUP_BATCH DB
        WHERE PP.PARTY_ID =DSP.DUP_PARTY_ID
        AND DB.DUP_BATCH_ID = DS.DUP_BATCH_ID
        AND DS.DUP_SET_ID = DSP.DUP_SET_ID
        AND DSP.DUP_SET_ID= p_dup_set_id
        AND NVL(DSP.MERGE_FLAG,'Y') <> 'N'
        AND ROWNUM = 1;


begin
    -- Initialize return status to SUCCESS
        x_return_status := FND_API.G_RET_STS_SUCCESS;

      open get_OSOPartyId_csr;
    fetch get_OSOPartyId_csr into x_master_party_id,x_master_party_name;
        close get_OSOPartyId_csr;

    if x_master_party_id is null /* OSO party doesn't exist */
    then
        open get_RandomPartyId_csr;
        fetch get_RandomPartyId_csr into 
x_master_party_id,x_master_party_name;
            close get_RandomPartyId_csr;    
    end if;

EXCEPTION
    WHEN OTHERS THEN
        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;

        FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
        FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
        FND_MSG_PUB.ADD;

        FND_MSG_PUB.Count_And_Get(
                        p_encoded => FND_API.G_FALSE,
                        p_count => x_msg_count,
                        p_data  => x_msg_data);

end;

Related Topics