DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_PARTY_MERGE_PKG

Source


1 PACKAGE BODY OE_PARTY_MERGE_PKG AS
2 /* $Header: OEXPMRGB.pls 120.0 2005/06/01 23:06:41 appldev noship $ */
3 
4 
5 G_PROC_NAME        CONSTANT  VARCHAR2(30)  := 'OE_PARTY_MERGE_PKG';
6 G_USER_ID          CONSTANT  NUMBER(15)    := FND_GLOBAL.USER_ID;
7 G_LOGIN_ID         CONSTANT  NUMBER(15)    := FND_GLOBAL.LOGIN_ID;
8 
9 PROCEDURE MERGE_ADJ_ATTRIBS_PARTY (
10     p_entity_name                IN   VARCHAR2,
11     p_from_id                    IN   NUMBER,
12     x_to_id                      OUT  NOCOPY NUMBER,
13     p_from_fk_id                 IN   NUMBER,
14     p_to_fk_id                   IN   NUMBER,
15     p_parent_entity_name         IN   VARCHAR2,
16     p_batch_id                   IN   NUMBER,
17     p_batch_party_id             IN   NUMBER,
18     x_return_status              OUT  NOCOPY VARCHAR2)
19 IS
20 
21    l_merge_reason_code          VARCHAR2(30);
22    l_api_name                   VARCHAR2(30) := 'ADJ_ATTRIB_PARTY_MERGE';
23    l_count                      NUMBER(10)   := 0;
24    RESOURCE_BUSY                EXCEPTION;
25    PRAGMA EXCEPTION_INIT(RESOURCE_BUSY, -0054);
26 
27 BEGIN
28   -- arp_message.set_line('OE_PARTY_MERGE_PKG.MERGE_ADJ_ATTRIBS()+');
29 
30    x_return_status :=  FND_API.G_RET_STS_SUCCESS;
31 
32    select merge_reason_code
33    into   l_merge_reason_code
34    from   hz_merge_batch
35    where  batch_id  = p_batch_id;
36 
37    if l_merge_reason_code = 'DUPLICATE' then
38 	 -- if reason code is duplicate then allow the party merge to happen without
39 	 -- any validations.
40 	 null;
41    else
42 	 -- if there are any validations to be done, include it in this section
43 	 null;
44    end if;
45 
46    -- If the parent has NOT changed (ie.Parent getting transferred) then nothing
47    -- needs to be done. Set Merged To Id is same as Merged From Id and return
48 
49    if p_from_fk_id = p_to_fk_id then
50 	 x_to_id := p_from_id;
51       return;
52    end if;
53 
54    -- If the parent has changed(ie. Parent is getting merged) then transfer the
55    -- dependent record to the new parent. Before transferring check if a similar
56    -- dependent record exists on the new parent. If a duplicate exists then do
57    -- not transfer and return the id of the duplicate record as the Merged To Id
58    -- This check is not required for oe_price_adj_attribs
59 
60    if p_from_fk_id <> p_to_fk_id then
61 	    -- obtain lock on records to be updated.
62       --arp_message.set_name( 'AR', 'AR_UPDATING_TABLE');
63       --arp_message.set_token( 'TABLE_NAME', 'OE_PRICE_ADJ_ATTRIBS', FALSE );
64 
65        UPDATE /*+ index(S OE_PRICE_ADJ_ATTRIBS_N2) */ OE_PRICE_ADJ_ATTRIBS S
66        SET  pricing_attr_value_from = to_char(p_to_fk_id),
67             last_update_date = hz_utility_v2pub.last_update_date,
68        	    last_updated_by = hz_utility_v2pub.user_id,
69             last_update_login = hz_utility_v2pub.last_update_login,
70       	    request_id =  hz_utility_v2pub.request_id,
71      	    program_application_id = hz_utility_v2pub.program_application_id,
72        	    program_id = hz_utility_v2pub.program_id,
73        	    program_update_date = sysdate
74           WHERE pricing_attr_value_from = to_char(p_from_fk_id)
75                 and (pricing_context = 'ASOPARTYINFO'  AND pricing_attribute = 'QUALIFIER_ATTRIBUTE1'
76                      OR pricing_context = 'CUSTOMER' AND pricing_attribute ='QUALIFIER_ATTRIBUTE16'
77                      OR pricing_context = 'CUSTOMER_GROUP' AND pricing_attribute = 'QUALIFIER_ATTRIBUTE3'
78                      OR pricing_context = 'PARTY' AND pricing_attribute
79                                     IN ('QUALIFIER_ATTRIBUTE1', 'QUALIFIER_ATTRIBUTE2')
80                     );
81          l_count := sql%rowcount;
82 
83           --arp_message.set_name('AR', 'AR_ROWS_UPDATED');
84           --arp_message.set_token('NUM_ROWS', to_char(l_count) );
85 
86    end if;
87 
88 EXCEPTION
89 
90          when others then
91              fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
92              FND_MESSAGE.SET_TOKEN('ERROR', SQLERRM);
93              FND_MSG_PUB.ADD;
94              x_return_status :=  FND_API.G_RET_STS_UNEXP_ERROR;
95 
96 END MERGE_ADJ_ATTRIBS_PARTY;
97 
98 PROCEDURE MERGE_ADJ_ATTRIBS_PARTY_SITE (
99     p_entity_name                IN   VARCHAR2,
100     p_from_id                    IN   NUMBER,
101     x_to_id                      OUT  NOCOPY NUMBER,
102     p_from_fk_id                 IN   NUMBER,
103     p_to_fk_id                   IN   NUMBER,
104     p_parent_entity_name         IN   VARCHAR2,
105     p_batch_id                   IN   NUMBER,
106     p_batch_party_id             IN   NUMBER,
107     x_return_status              OUT  NOCOPY VARCHAR2)
108 IS
109 
110    l_merge_reason_code          VARCHAR2(30);
111    l_api_name                   VARCHAR2(30) := 'ADJ_ATTRIB_PARTY_MERGE';
112    l_count                      NUMBER(10)   := 0;
113    RESOURCE_BUSY                EXCEPTION;
114    PRAGMA EXCEPTION_INIT(RESOURCE_BUSY, -0054);
115 
116 BEGIN
117   -- arp_message.set_line('OE_PARTY_MERGE_PKG.MERGE_ADJ_ATTRIBS()+');
118 
119    x_return_status :=  FND_API.G_RET_STS_SUCCESS;
120 
121    select merge_reason_code
122    into   l_merge_reason_code
123    from   hz_merge_batch
124    where  batch_id  = p_batch_id;
125 
126    if l_merge_reason_code = 'DUPLICATE' then
127 	 -- if reason code is duplicate then allow the party merge to happen without
128 	 -- any validations.
129 	 null;
130    else
131 	 -- if there are any validations to be done, include it in this section
132 	 null;
133    end if;
134 
135    -- If the parent has NOT changed (ie.Parent getting transferred) then nothing
136    -- needs to be done. Set Merged To Id is same as Merged From Id and return
137 
138    if p_from_fk_id = p_to_fk_id then
139 	 x_to_id := p_from_id;
140       return;
141    end if;
142 
143    -- If the parent has changed(ie. Parent is getting merged) then transfer the
144    -- dependent record to the new parent. Before transferring check if a similar
145    -- dependent record exists on the new parent. If a duplicate exists then do
146    -- not transfer and return the id of the duplicate record as the Merged To Id
147    -- This check is not required for oe_price_adj_attribs
148 
149    if p_from_fk_id <> p_to_fk_id then
150 	    -- obtain lock on records to be updated.
151       --arp_message.set_name( 'AR', 'AR_UPDATING_TABLE');
152       --arp_message.set_token( 'TABLE_NAME', 'OE_PRICE_ADJ_ATTRIBS', FALSE );
153 
154        UPDATE /*+ index(S OE_PRICE_ADJ_ATTRIBS_N2) */ OE_PRICE_ADJ_ATTRIBS S
155        SET  pricing_attr_value_from = to_char(p_to_fk_id),
156             last_update_date = hz_utility_v2pub.last_update_date,
157        	    last_updated_by = hz_utility_v2pub.user_id,
158             last_update_login = hz_utility_v2pub.last_update_login,
159       	    request_id =  hz_utility_v2pub.request_id,
160      	    program_application_id = hz_utility_v2pub.program_application_id,
161        	    program_id = hz_utility_v2pub.program_id,
162        	    program_update_date = sysdate
163           WHERE pricing_attr_value_from = to_char(p_from_fk_id)
164           AND   (pricing_context = 'ASOPARTYINFO'
165                    AND pricing_attribute IN ('QUALIFIER_ATTRIBUTE10','QUALIFIER_ATTRIBUTE11')
166                  OR pricing_context = 'CUSTOMER'
167                    AND pricing_attribute IN ('QUALIFIER_ATTRIBUTE17', 'QUALIFIER_ATTRIBUTE18')
168                 );
169 
170          l_count := sql%rowcount;
171 
172           --arp_message.set_name('AR', 'AR_ROWS_UPDATED');
173           --arp_message.set_token('NUM_ROWS', to_char(l_count) );
174 
175    end if;
176 
177 EXCEPTION
178 
179          when others then
180              fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
181              FND_MESSAGE.SET_TOKEN('ERROR', SQLERRM);
182              FND_MSG_PUB.ADD;
183              x_return_status :=  FND_API.G_RET_STS_UNEXP_ERROR;
184 
185 END MERGE_ADJ_ATTRIBS_PARTY_SITE;
186 
187 END OE_PARTY_MERGE_PKG;