DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_HEADER_PAYMENT_UTIL

Source


1 PACKAGE BODY OE_Header_Payment_Util AS
2 /* $Header: OEXUHPMB.pls 120.15.12010000.4 2008/11/25 14:23:54 sgoli ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'OE_Header_Payment_Util';
7 
8 --3382262
9 Procedure Delete_Payment_at_header(p_header_id in number,
10                                    p_line_id in number := null,
11                                    x_return_status out nocopy varchar2,
12                                    x_msg_count out nocopy number,
13                                    x_msg_data out nocopy varchar2);
14 --3382262
15 
16 FUNCTION G_MISS_OE_AK_HPAYMENT_REC
17 RETURN OE_AK_HEADER_PAYMENTS_V%ROWTYPE IS
18 l_rowtype_rec				OE_AK_HEADER_PAYMENTS_V%ROWTYPE;
19 --
20 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
21 --
22 BEGIN
23 
24     l_rowtype_rec.ATTRIBUTE1                     := FND_API.G_MISS_CHAR;
25     l_rowtype_rec.ATTRIBUTE2                     := FND_API.G_MISS_CHAR;
26     l_rowtype_rec.ATTRIBUTE3                     := FND_API.G_MISS_CHAR;
27     l_rowtype_rec.ATTRIBUTE4                     := FND_API.G_MISS_CHAR;
28     l_rowtype_rec.ATTRIBUTE5                     := FND_API.G_MISS_CHAR;
29     l_rowtype_rec.ATTRIBUTE6                     := FND_API.G_MISS_CHAR;
30     l_rowtype_rec.ATTRIBUTE7                     := FND_API.G_MISS_CHAR;
31     l_rowtype_rec.ATTRIBUTE8                     := FND_API.G_MISS_CHAR;
32     l_rowtype_rec.ATTRIBUTE9                     := FND_API.G_MISS_CHAR;
33     l_rowtype_rec.ATTRIBUTE10                    := FND_API.G_MISS_CHAR;
34     l_rowtype_rec.ATTRIBUTE11                    := FND_API.G_MISS_CHAR;
35     l_rowtype_rec.ATTRIBUTE12                    := FND_API.G_MISS_CHAR;
36     l_rowtype_rec.ATTRIBUTE13                    := FND_API.G_MISS_CHAR;
37     l_rowtype_rec.ATTRIBUTE14                    := FND_API.G_MISS_CHAR;
38     l_rowtype_rec.ATTRIBUTE15                    := FND_API.G_MISS_CHAR;
39     l_rowtype_rec.CONTEXT                        := FND_API.G_MISS_CHAR;
40     l_rowtype_rec.CREATED_BY                     := FND_API.G_MISS_NUM;
41     l_rowtype_rec.CREATION_DATE                  := FND_API.G_MISS_DATE;
42     l_rowtype_rec.LAST_UPDATED_BY                := FND_API.G_MISS_NUM;
43     l_rowtype_rec.LAST_UPDATE_DATE               := FND_API.G_MISS_DATE;
44     l_rowtype_rec.LAST_UPDATE_LOGIN              := FND_API.G_MISS_NUM;
45     l_rowtype_rec.CHECK_NUMBER                   := FND_API.G_MISS_CHAR;
46     l_rowtype_rec.CREDIT_CARD_APPROVAL_CODE      := FND_API.G_MISS_CHAR;
47     l_rowtype_rec.CREDIT_CARD_APPROVAL_DATE      := FND_API.G_MISS_DATE;
48     l_rowtype_rec.CREDIT_CARD_CODE               := FND_API.G_MISS_CHAR;
49     l_rowtype_rec.CREDIT_CARD_EXPIRATION_DATE    := FND_API.G_MISS_DATE;
50     l_rowtype_rec.CREDIT_CARD_HOLDER_NAME        := FND_API.G_MISS_CHAR;
51     l_rowtype_rec.CREDIT_CARD_NUMBER             := FND_API.G_MISS_CHAR;
52     l_rowtype_rec.PAYMENT_LEVEL_CODE             := FND_API.G_MISS_CHAR;
53     l_rowtype_rec.COMMITMENT_APPLIED_AMOUNT      := FND_API.G_MISS_NUM;
54     l_rowtype_rec.COMMITMENT_INTERFACED_AMOUNT   := FND_API.G_MISS_NUM;
55     l_rowtype_rec.PAYMENT_NUMBER                 := FND_API.G_MISS_NUM;
56     l_rowtype_rec.HEADER_ID                      := FND_API.G_MISS_NUM;
57     l_rowtype_rec.LINE_ID                        := FND_API.G_MISS_NUM;
58     l_rowtype_rec.PAYMENT_AMOUNT                 := FND_API.G_MISS_NUM;
59     l_rowtype_rec.PAYMENT_COLLECTION_EVENT       := FND_API.G_MISS_CHAR;
60     l_rowtype_rec.PAYMENT_TRX_ID                 := FND_API.G_MISS_NUM;
61     l_rowtype_rec.PAYMENT_TYPE_CODE              := FND_API.G_MISS_CHAR;
62     l_rowtype_rec.PAYMENT_SET_ID                 := FND_API.G_MISS_NUM;
63     l_rowtype_rec.PREPAID_AMOUNT                 := FND_API.G_MISS_NUM;
64     l_rowtype_rec.PROGRAM_APPLICATION_ID         := FND_API.G_MISS_NUM;
65     l_rowtype_rec.PROGRAM_ID                     := FND_API.G_MISS_NUM;
66     l_rowtype_rec.PROGRAM_UPDATE_DATE            := FND_API.G_MISS_DATE;
67     l_rowtype_rec.RECEIPT_METHOD_ID              := FND_API.G_MISS_NUM;
68     l_rowtype_rec.REQUEST_ID                     := FND_API.G_MISS_NUM;
69     l_rowtype_rec.TANGIBLE_ID                    := FND_API.G_MISS_CHAR;
70     l_rowtype_rec.RETURN_STATUS                  := FND_API.G_MISS_CHAR;
71     l_rowtype_rec.DB_FLAG                        := FND_API.G_MISS_CHAR;
72     l_rowtype_rec.OPERATION                      := FND_API.G_MISS_CHAR;
73 
74     RETURN l_rowtype_rec;
75 
76 END G_MISS_OE_AK_HPAYMENT_REC;
77 
78 PROCEDURE API_Rec_To_Rowtype_Rec
79 (   p_HEADER_Payment_rec            IN  OE_Order_PUB.HEADER_PAYMENT_Rec_Type
80 ,   x_rowtype_rec                  IN OUT NOCOPY OE_AK_HEADER_PAYMENTS_V%ROWTYPE
81 ) IS
82 --
83 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
84 --
85 BEGIN
86 
87     x_rowtype_rec.ATTRIBUTE1       := p_header_Payment_rec.ATTRIBUTE1;
88     x_rowtype_rec.ATTRIBUTE2       := p_header_Payment_rec.ATTRIBUTE2;
89     x_rowtype_rec.ATTRIBUTE3       := p_header_Payment_rec.ATTRIBUTE3;
90     x_rowtype_rec.ATTRIBUTE4       := p_header_Payment_rec.ATTRIBUTE4;
91     x_rowtype_rec.ATTRIBUTE5       := p_header_Payment_rec.ATTRIBUTE5;
92     x_rowtype_rec.ATTRIBUTE6       := p_header_Payment_rec.ATTRIBUTE6;
93     x_rowtype_rec.ATTRIBUTE7       := p_header_Payment_rec.ATTRIBUTE7;
94     x_rowtype_rec.ATTRIBUTE8       := p_header_Payment_rec.ATTRIBUTE8;
95     x_rowtype_rec.ATTRIBUTE9       := p_header_Payment_rec.ATTRIBUTE9;
96     x_rowtype_rec.ATTRIBUTE10       := p_header_Payment_rec.ATTRIBUTE10;
97     x_rowtype_rec.ATTRIBUTE11       := p_header_Payment_rec.ATTRIBUTE11;
98     x_rowtype_rec.ATTRIBUTE12       := p_header_Payment_rec.ATTRIBUTE12;
99     x_rowtype_rec.ATTRIBUTE13       := p_header_Payment_rec.ATTRIBUTE13;
100     x_rowtype_rec.ATTRIBUTE14       := p_header_Payment_rec.ATTRIBUTE14;
101     x_rowtype_rec.ATTRIBUTE15       := p_header_Payment_rec.ATTRIBUTE15;
102     x_rowtype_rec.CONTEXT                        := p_header_Payment_rec.CONTEXT;
103     x_rowtype_rec.CREATED_BY                     := p_header_Payment_rec.CREATED_BY;
104     x_rowtype_rec.CREATION_DATE                  := p_header_Payment_rec.CREATION_DATE;
105     x_rowtype_rec.LAST_UPDATED_BY                := p_header_Payment_rec.LAST_UPDATED_BY;
106     x_rowtype_rec.LAST_UPDATE_DATE               := p_header_Payment_rec.LAST_UPDATE_DATE;
107     x_rowtype_rec.LAST_UPDATE_LOGIN              := p_header_Payment_rec.LAST_UPDATE_LOGIN;
108     x_rowtype_rec.CHECK_NUMBER                   := p_header_Payment_rec.CHECK_NUMBER;
109     x_rowtype_rec.CREDIT_CARD_APPROVAL_CODE      := p_header_Payment_rec.CREDIT_CARD_APPROVAL_CODE;
110     x_rowtype_rec.CREDIT_CARD_APPROVAL_DATE      := p_header_Payment_rec.CREDIT_CARD_APPROVAL_DATE;
111     x_rowtype_rec.CREDIT_CARD_CODE               := p_header_Payment_rec.CREDIT_CARD_CODE;
112     x_rowtype_rec.CREDIT_CARD_EXPIRATION_DATE    := p_header_Payment_rec.CREDIT_CARD_EXPIRATION_DATE;
113     x_rowtype_rec.CREDIT_CARD_HOLDER_NAME        := p_header_Payment_rec.CREDIT_CARD_HOLDER_NAME;
114     x_rowtype_rec.CREDIT_CARD_NUMBER             := p_header_Payment_rec.CREDIT_CARD_NUMBER;
115     x_rowtype_rec.PAYMENT_LEVEL_CODE             := p_header_Payment_rec.PAYMENT_LEVEL_CODE;
116     x_rowtype_rec.COMMITMENT_APPLIED_AMOUNT      := p_header_Payment_rec.COMMITMENT_APPLIED_AMOUNT;
117     x_rowtype_rec.COMMITMENT_INTERFACED_AMOUNT   := p_header_Payment_rec.COMMITMENT_INTERFACED_AMOUNT;
118     x_rowtype_rec.PAYMENT_NUMBER                 := p_header_Payment_rec.PAYMENT_NUMBER;
119     x_rowtype_rec.HEADER_ID                      := p_header_Payment_rec.HEADER_ID;
120     x_rowtype_rec.LINE_ID                        := p_header_Payment_rec.LINE_ID;
121     x_rowtype_rec.PAYMENT_AMOUNT                 := p_header_Payment_rec.PAYMENT_AMOUNT;
122     x_rowtype_rec.PAYMENT_COLLECTION_EVENT       := p_header_Payment_rec.PAYMENT_COLLECTION_EVENT;
123     x_rowtype_rec.PAYMENT_TRX_ID                 := p_header_Payment_rec.PAYMENT_TRX_ID;
124     x_rowtype_rec.PAYMENT_TYPE_CODE              := p_header_Payment_rec.PAYMENT_TYPE_CODE;
125     x_rowtype_rec.PAYMENT_SET_ID                 := p_header_Payment_rec.PAYMENT_SET_ID;
126     x_rowtype_rec.PREPAID_AMOUNT                 := p_header_Payment_rec.PREPAID_AMOUNT;
127     x_rowtype_rec.PROGRAM_APPLICATION_ID         := p_header_Payment_rec.PROGRAM_APPLICATION_ID;
128     x_rowtype_rec.PROGRAM_ID                     := p_header_Payment_rec.PROGRAM_ID;
129     x_rowtype_rec.PROGRAM_UPDATE_DATE            := p_header_Payment_rec.PROGRAM_UPDATE_DATE;
130     x_rowtype_rec.RECEIPT_METHOD_ID              := p_header_Payment_rec.RECEIPT_METHOD_ID;
131     x_rowtype_rec.REQUEST_ID                     := p_header_Payment_rec.REQUEST_ID;
132     x_rowtype_rec.TANGIBLE_ID                    := p_header_Payment_rec.TANGIBLE_ID;
133     x_rowtype_rec.RETURN_STATUS                  := p_header_Payment_rec.RETURN_STATUS;
134     x_rowtype_rec.DB_FLAG                        := p_header_Payment_rec.DB_FLAG;
135     x_rowtype_rec.OPERATION                      := p_header_Payment_rec.OPERATION;
136 
137 END API_Rec_To_RowType_Rec;
138 
139 
140 PROCEDURE Rowtype_Rec_To_API_Rec
141 (   p_record                        IN  OE_AK_HEADER_PaymentS_V%ROWTYPE
142 ,   x_api_rec                     IN OUT NOCOPY OE_Order_PUB.HEADER_Payment_Rec_Type
143 ) IS
144 --
145 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
146 --
147 BEGIN
148 
149     x_api_rec.ATTRIBUTE1       := p_record.ATTRIBUTE1;
150     x_api_rec.ATTRIBUTE2       := p_record.ATTRIBUTE2;
151     x_api_rec.ATTRIBUTE3       := p_record.ATTRIBUTE3;
152     x_api_rec.ATTRIBUTE4       := p_record.ATTRIBUTE4;
153     x_api_rec.ATTRIBUTE5       := p_record.ATTRIBUTE5;
154     x_api_rec.ATTRIBUTE6       := p_record.ATTRIBUTE6;
155     x_api_rec.ATTRIBUTE7       := p_record.ATTRIBUTE7;
156     x_api_rec.ATTRIBUTE8       := p_record.ATTRIBUTE8;
157     x_api_rec.ATTRIBUTE9       := p_record.ATTRIBUTE9;
158     x_api_rec.ATTRIBUTE10       := p_record.ATTRIBUTE10;
159     x_api_rec.ATTRIBUTE11       := p_record.ATTRIBUTE11;
160     x_api_rec.ATTRIBUTE12       := p_record.ATTRIBUTE12;
161     x_api_rec.ATTRIBUTE13       := p_record.ATTRIBUTE13;
162     x_api_rec.ATTRIBUTE14       := p_record.ATTRIBUTE14;
163     x_api_rec.ATTRIBUTE15       := p_record.ATTRIBUTE15;
164     x_api_rec.CONTEXT                        := p_record.CONTEXT;
165     x_api_rec.CREATED_BY                     := p_record.CREATED_BY;
166     x_api_rec.CREATION_DATE                  := p_record.CREATION_DATE;
167     x_api_rec.LAST_UPDATED_BY                := p_record.LAST_UPDATED_BY;
168     x_api_rec.LAST_UPDATE_DATE               := p_record.LAST_UPDATE_DATE;
169     x_api_rec.LAST_UPDATE_LOGIN              := p_record.LAST_UPDATE_LOGIN;
170     x_api_rec.CHECK_NUMBER                   := p_record.CHECK_NUMBER;
171     x_api_rec.CREDIT_CARD_APPROVAL_CODE      := p_record.CREDIT_CARD_APPROVAL_CODE;
172     x_api_rec.CREDIT_CARD_APPROVAL_DATE      := p_record.CREDIT_CARD_APPROVAL_DATE;
173     x_api_rec.CREDIT_CARD_CODE               := p_record.CREDIT_CARD_CODE;
174     x_api_rec.CREDIT_CARD_EXPIRATION_DATE    := p_record.CREDIT_CARD_EXPIRATION_DATE;
175     x_api_rec.CREDIT_CARD_HOLDER_NAME        := p_record.CREDIT_CARD_HOLDER_NAME;
176     x_api_rec.CREDIT_CARD_NUMBER             := p_record.CREDIT_CARD_NUMBER;
177     x_api_rec.PAYMENT_LEVEL_CODE             := p_record.PAYMENT_LEVEL_CODE;
178     x_api_rec.COMMITMENT_APPLIED_AMOUNT      := p_record.COMMITMENT_APPLIED_AMOUNT;
179     x_api_rec.COMMITMENT_INTERFACED_AMOUNT   := p_record.COMMITMENT_INTERFACED_AMOUNT;
180     x_api_rec.PAYMENT_NUMBER                 := p_record.PAYMENT_NUMBER;
181     x_api_rec.HEADER_ID                      := p_record.HEADER_ID;
182     x_api_rec.LINE_ID                        := p_record.LINE_ID;
183     x_api_rec.PAYMENT_AMOUNT                 := p_record.PAYMENT_AMOUNT;
184     x_api_rec.PAYMENT_COLLECTION_EVENT       := p_record.PAYMENT_COLLECTION_EVENT;
185     x_api_rec.PAYMENT_TRX_ID                 := p_record.PAYMENT_TRX_ID;
186     x_api_rec.PAYMENT_TYPE_CODE              := p_record.PAYMENT_TYPE_CODE;
187     x_api_rec.PAYMENT_SET_ID                 := p_record.PAYMENT_SET_ID;
188     x_api_rec.PREPAID_AMOUNT                 := p_record.PREPAID_AMOUNT;
189     x_api_rec.PROGRAM_APPLICATION_ID         := p_record.PROGRAM_APPLICATION_ID;
190     x_api_rec.PROGRAM_ID                     := p_record.PROGRAM_ID;
191     x_api_rec.PROGRAM_UPDATE_DATE            := p_record.PROGRAM_UPDATE_DATE;
192     x_api_rec.RECEIPT_METHOD_ID              := p_record.RECEIPT_METHOD_ID;
193     x_api_rec.REQUEST_ID                     := p_record.REQUEST_ID;
194     x_api_rec.TANGIBLE_ID                    := p_record.TANGIBLE_ID;
195     x_api_rec.RETURN_STATUS                  := p_record.RETURN_STATUS;
196     x_api_rec.DB_FLAG                        := p_record.DB_FLAG;
197 
198 END Rowtype_Rec_To_API_Rec;
199 
200 --  Procedure Clear_Dependent_Attr
201 
202 PROCEDURE Clear_Dependent_Attr
203 (   p_attr_id                       IN  NUMBER := FND_API.G_MISS_NUM
204 ,   p_x_Header_Payment_rec    IN OUT NOCOPY  OE_AK_HEADER_PAYMENTS_V%ROWTYPE
205 ,   p_old_Header_Payment_rec        IN  OE_AK_HEADER_PAYMENTS_V%ROWTYPE :=
206 								G_MISS_OE_AK_HPayment_REC
207 ,   p_x_instrument_id		IN NUMBER DEFAULT NULL --R12 CC Encryption
208 ,   p_old_instrument_id         IN NUMBER DEFAULT NULL
209 )
210 IS
211 l_index			NUMBER :=0;
212 l_src_attr_tbl		OE_GLOBALS.NUMBER_Tbl_Type;
213 l_dep_attr_tbl		OE_GLOBALS.NUMBER_Tbl_Type;
214 --
215 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
216 --
217 BEGIN
218 
219     --  Load out record
220 
221 
222 
223     --  If attr_id is missing compare old and new records and for
224     --  every changed attribute clear its dependent fields.
225 
226     IF p_attr_id = FND_API.G_MISS_NUM THEN
227 
228         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute1,p_old_Header_Payment_rec.attribute1)
229         THEN
230            l_index := l_index + 1;
231            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE1;
232         END IF;
233 
234         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute2,p_old_Header_Payment_rec.attribute2)
235         THEN
236            l_index := l_index + 1;
237            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE2;
238         END IF;
239 
240         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute3,p_old_Header_Payment_rec.attribute3)
241         THEN
242            l_index := l_index + 1;
243            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE3;
244         END IF;
245 
246         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute4,p_old_Header_Payment_rec.attribute4)
247         THEN
248            l_index := l_index + 1;
249            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE4;
250         END IF;
251 
252         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute5,p_old_Header_Payment_rec.attribute5)
253         THEN
254            l_index := l_index + 1;
255            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE5;
256         END IF;
257 
258         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute6,p_old_Header_Payment_rec.attribute6)
259         THEN
260            l_index := l_index + 1;
261            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE6;
262         END IF;
263 
264         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute7,p_old_Header_Payment_rec.attribute7)
265         THEN
266            l_index := l_index + 1;
267            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE7;
268         END IF;
269 
270         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute8,p_old_Header_Payment_rec.attribute8)
271         THEN
272            l_index := l_index + 1;
273            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE8;
274         END IF;
275 
276         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute9,p_old_Header_Payment_rec.attribute9)
277         THEN
278            l_index := l_index + 1;
279            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE9;
280         END IF;
281 
282         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute10,p_old_Header_Payment_rec.attribute10)
283         THEN
284            l_index := l_index + 1;
285            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE10;
286         END IF;
287 
288         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute11,p_old_Header_Payment_rec.attribute11)
289         THEN
290            l_index := l_index + 1;
291            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE11;
292         END IF;
293 
294         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute12,p_old_Header_Payment_rec.attribute12)
295         THEN
296            l_index := l_index + 1;
297            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE12;
298         END IF;
299 
300         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute13,p_old_Header_Payment_rec.attribute13)
301         THEN
302            l_index := l_index + 1;
303            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE13;
304         END IF;
305 
306         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute14,p_old_Header_Payment_rec.attribute14)
307         THEN
308            l_index := l_index + 1;
309            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE14;
310         END IF;
311 
312         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute15,p_old_Header_Payment_rec.attribute15)
313         THEN
314            l_index := l_index + 1;
315            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE15;
316         END IF;
317 
318         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.context,p_old_Header_Payment_rec.context)
319         THEN
320            l_index := l_index + 1;
321            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CONTEXT;
322         END IF;
323 
324         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.created_by,p_old_Header_Payment_rec.created_by)
325         THEN
326            l_index := l_index + 1;
327            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CREATED_BY;
328         END IF;
329 
330         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.creation_date,p_old_Header_Payment_rec.creation_date)
331         THEN
332            l_index := l_index + 1;
333            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CREATION_DATE;
334         END IF;
335 
336         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.last_updated_by,p_old_Header_Payment_rec.last_updated_by)
337         THEN
338            l_index := l_index + 1;
339            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_LAST_UPDATED_BY;
340         END IF;
341 
342         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.last_update_date,p_old_Header_Payment_rec.last_update_date)
343         THEN
344            l_index := l_index + 1;
345            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_LAST_UPDATE_DATE;
346         END IF;
347 
348         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.last_update_login,p_old_Header_Payment_rec.last_update_login)
349         THEN
350            l_index := l_index + 1;
351            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_LAST_UPDATE_LOGIN;
352         END IF;
353 
354         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.check_number,p_old_Header_Payment_rec.check_number)
355         THEN
356            l_index := l_index + 1;
357            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CHECK_NUMBER;
358         END IF;
359 
360         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.credit_card_approval_code,p_old_Header_Payment_rec.credit_card_approval_code)
361         THEN
362            l_index := l_index + 1;
363            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CREDIT_CARD_APPROVAL_CODE;
364         END IF;
365 
366         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.credit_card_approval_date,p_old_Header_Payment_rec.credit_card_approval_date)
367         THEN
368            l_index := l_index + 1;
369            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CREDIT_CARD_APPROVAL_DATE;
370         END IF;
371 
372         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.credit_card_code,p_old_Header_Payment_rec.credit_card_code)
373         THEN
374            l_index := l_index + 1;
375            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CREDIT_CARD_CODE;
376         END IF;
377 
378         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.credit_card_expiration_date,p_old_Header_Payment_rec.credit_card_expiration_date)
379         THEN
380            l_index := l_index + 1;
381            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CREDIT_CARD_EXPIRATION_DATE;
382         END IF;
383 
384         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.credit_card_holder_name,p_old_Header_Payment_rec.credit_card_holder_name)
385         THEN
386            l_index := l_index + 1;
387            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CREDIT_CARD_HOLDER_NAME;
388         END IF;
389 	--R12 CC Encryption
390 	--Since the credit card numbers are encrypted, passing both the credit card
391 	--numbers as well as instrument ids to determine if both the old and new
392 	--values point to the same credit card number.
393 
394         IF NOT OE_GLOBALS.Is_Same_Credit_Card(p_old_Header_Payment_rec.credit_card_number,
395                             p_x_Header_Payment_rec.credit_card_number,p_old_instrument_id,
396 			    p_x_instrument_id)
397         THEN
398            l_index := l_index + 1;
399            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CREDIT_CARD_NUMBER;
400         END IF;
401 
402         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.payment_level_code,p_old_Header_Payment_rec.payment_level_code)
403         THEN
404            l_index := l_index + 1;
405            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PAYMENT_LEVEL_CODE;
406         END IF;
407 
408         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.commitment_applied_amount,p_old_Header_Payment_rec.commitment_applied_amount)
409         THEN
410            l_index := l_index + 1;
411            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_COMMITMENT_APPLIED_AMOUNT;
412         END IF;
413 
414         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.commitment_interfaced_amount,p_old_Header_Payment_rec.commitment_interfaced_amount)
415         THEN
416            l_index := l_index + 1;
417            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_COMMITMENT_INTERFACED_AMOUNT;
418         END IF;
419 
420         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.payment_number,p_old_Header_Payment_rec.payment_number)
421         THEN
422            l_index := l_index + 1;
423            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PAYMENT_NUMBER;
424         END IF;
425 
426         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.header_id,p_old_Header_Payment_rec.header_id)
427         THEN
428            l_index := l_index + 1;
429            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_HEADER;
430         END IF;
431 
432         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.line_id,p_old_Header_Payment_rec.line_id)
433         THEN
434            l_index := l_index + 1;
435            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_LINE;
436         END IF;
437 
438         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.payment_amount,p_old_Header_Payment_rec.payment_amount)
439         THEN
440            l_index := l_index + 1;
441            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PAYMENT_AMOUNT;
442         END IF;
443 
444 
445         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.payment_collection_event,p_old_Header_Payment_rec.payment_collection_event)
446         THEN
447            l_index := l_index + 1;
448            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PAYMENT_COLLECTION_EVENT;
449         END IF;
450 
451         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.payment_trx_id,p_old_Header_Payment_rec.payment_trx_id)
452         THEN
453            l_index := l_index + 1;
454          l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PAYMENT_TRX_ID;
455         END IF;
456 
457         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.payment_type_code,p_old_Header_Payment_rec.payment_type_code)
458         THEN
459            l_index := l_index + 1;
460            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PAYMENT_TYPE_CODE;
461         END IF;
462 
463         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.payment_set_id,p_old_Header_Payment_rec.payment_set_id)
464         THEN
465            l_index := l_index + 1;
466            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PAYMENT_SET_ID;
467         END IF;
468 
469         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.prepaid_amount,p_old_Header_Payment_rec.prepaid_amount)
470         THEN
471            l_index := l_index + 1;
472            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PREPAID_AMOUNT;
473         END IF;
474 
475         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.program_application_id,p_old_Header_Payment_rec.program_application_id)
476         THEN
477            l_index := l_index + 1;
478            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PROGRAM_APPLICATION_ID;
479         END IF;
480 
481         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.program_id,p_old_Header_Payment_rec.program_id)
482         THEN
483            l_index := l_index + 1;
484            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PROGRAM_ID;
485         END IF;
486 
487         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.program_update_date,p_old_Header_Payment_rec.program_update_date)
488         THEN
489            l_index := l_index + 1;
490            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PROGRAM_UPDATE_DATE;
491         END IF;
492 
493         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.receipt_method_id,p_old_Header_Payment_rec.receipt_method_id)
494         THEN
495            l_index := l_index + 1;
496            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_RECEIPT_METHOD_ID;
497         END IF;
498 
499         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.request_id,p_old_Header_Payment_rec.request_id)
500         THEN
501            l_index := l_index + 1;
502            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_REQUEST_ID;
503         END IF;
504 
505         IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.tangible_id,p_old_Header_Payment_rec.tangible_id)
506         THEN
507            l_index := l_index + 1;
508            l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_TANGIBLE_ID;
509         END IF;
510 
511     ELSIF p_attr_id = G_ATTRIBUTE1 THEN
512         l_index := l_index + 1;
513         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE1;
514     ELSIF p_attr_id = G_ATTRIBUTE2 THEN
515         l_index := l_index + 1;
516         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE2;
517     ELSIF p_attr_id = G_ATTRIBUTE3 THEN
518         l_index := l_index + 1;
519         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE3;
520     ELSIF p_attr_id = G_ATTRIBUTE4 THEN
521         l_index := l_index + 1;
522         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE4;
523     ELSIF p_attr_id = G_ATTRIBUTE5 THEN
524         l_index := l_index + 1;
525         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE5;
526     ELSIF p_attr_id = G_ATTRIBUTE6 THEN
527         l_index := l_index + 1;
528         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE6;
529     ELSIF p_attr_id = G_ATTRIBUTE7 THEN
530         l_index := l_index + 1;
531         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE7;
532     ELSIF p_attr_id = G_ATTRIBUTE8 THEN
533         l_index := l_index + 1;
534         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE8;
535     ELSIF p_attr_id = G_ATTRIBUTE9 THEN
536         l_index := l_index + 1;
537         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE9;
538     ELSIF p_attr_id = G_ATTRIBUTE10 THEN
539         l_index := l_index + 1;
540         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE10;
541     ELSIF p_attr_id = G_ATTRIBUTE11 THEN
542         l_index := l_index + 1;
543         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE11;
544     ELSIF p_attr_id = G_ATTRIBUTE12 THEN
545         l_index := l_index + 1;
546         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE12;
547     ELSIF p_attr_id = G_ATTRIBUTE13 THEN
548         l_index := l_index + 1;
549         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE13;
550     ELSIF p_attr_id = G_ATTRIBUTE14 THEN
551         l_index := l_index + 1;
552         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE14;
553     ELSIF p_attr_id = G_ATTRIBUTE15 THEN
554         l_index := l_index + 1;
555         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE15;
556     ELSIF p_attr_id = G_CREATED_BY THEN
557         l_index := l_index + 1;
558         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CREATED_BY;
559     ELSIF p_attr_id = G_CREATION_DATE THEN
560         l_index := l_index + 1;
561         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CREATION_DATE;
562     ELSIF p_attr_id = G_LAST_UPDATED_BY THEN
563         l_index := l_index + 1;
564         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_LAST_UPDATED_BY;
565     ELSIF p_attr_id = G_LAST_UPDATE_DATE THEN
566         l_index := l_index + 1;
567         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_LAST_UPDATE_DATE;
568     ELSIF p_attr_id = G_LAST_UPDATE_LOGIN THEN
569         l_index := l_index + 1;
570         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_LAST_UPDATE_LOGIN;
571     ELSIF p_attr_id = G_CHECK_NUMBER THEN
572         l_index := l_index + 1;
573         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CHECK_NUMBER;
574     ELSIF p_attr_id = G_CREDIT_CARD_APPROVAL_CODE THEN
575         l_index := l_index + 1;
576         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CREDIT_CARD_APPROVAL_CODE;
577     ELSIF p_attr_id = G_CREDIT_CARD_APPROVAL_DATE THEN
578         l_index := l_index + 1;
579         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CREDIT_CARD_APPROVAL_DATE;
580     ELSIF p_attr_id = G_CREDIT_CARD_CODE THEN
581         l_index := l_index + 1;
582         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CREDIT_CARD_CODE;
583     ELSIF p_attr_id = G_CREDIT_CARD_EXPIRATION_DATE THEN
584         l_index := l_index + 1;
585         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CREDIT_CARD_EXPIRATION_DATE;
586     ELSIF p_attr_id = G_CREDIT_CARD_HOLDER_NAME THEN
587         l_index := l_index + 1;
588         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CREDIT_CARD_HOLDER_NAME;
589     ELSIF p_attr_id = G_CREDIT_CARD_NUMBER THEN
590         l_index := l_index + 1;
591         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CREDIT_CARD_NUMBER;
592     ELSIF p_attr_id = G_PAYMENT_LEVEL_CODE THEN
593         l_index := l_index + 1;
594         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PAYMENT_LEVEL_CODE;
595     ELSIF p_attr_id = G_COMMITMENT_APPLIED_AMOUNT THEN
596         l_index := l_index + 1;
597         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_COMMITMENT_APPLIED_AMOUNT;
598     ELSIF p_attr_id = G_COMMITMENT_INTERFACED_AMOUNT THEN
599         l_index := l_index + 1;
600         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_COMMITMENT_INTERFACED_AMOUNT;
601     ELSIF p_attr_id = G_CONTEXT THEN
602         l_index := l_index + 1;
603         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_CONTEXT;
604     ELSIF p_attr_id = G_PAYMENT_NUMBER THEN
605         l_index := l_index + 1;
606         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PAYMENT_NUMBER;
607     ELSIF p_attr_id = G_HEADER THEN
608         l_index := l_index + 1;
609         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_HEADER;
610     ELSIF p_attr_id = G_LINE THEN
611         l_index := l_index + 1;
612         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_LINE;
613     ELSIF p_attr_id = G_PAYMENT_AMOUNT THEN
614         l_index := l_index + 1;
615         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PAYMENT_AMOUNT;
616     ELSIF p_attr_id = G_PAYMENT_COLLECTION_EVENT THEN
617         l_index := l_index + 1;
618         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PAYMENT_COLLECTION_EVENT;
619     ELSIF p_attr_id = G_PAYMENT_TRX_ID THEN
620         l_index := l_index + 1;
621         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PAYMENT_TRX_ID;
622     ELSIF p_attr_id = G_PAYMENT_TYPE_CODE THEN
623         l_index := l_index + 1;
624         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PAYMENT_TYPE_CODE;
625     ELSIF p_attr_id = G_PAYMENT_SET_ID THEN
626         l_index := l_index + 1;
627         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PAYMENT_SET_ID;
628     ELSIF p_attr_id = G_PREPAID_AMOUNT THEN
629         l_index := l_index + 1;
630         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PREPAID_AMOUNT;
631     ELSIF p_attr_id = G_PROGRAM_APPLICATION_ID THEN
632         l_index := l_index + 1;
633         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PROGRAM_APPLICATION_ID;
634     ELSIF p_attr_id = G_PROGRAM_ID THEN
635         l_index := l_index + 1;
636         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PROGRAM_ID;
637     ELSIF p_attr_id = G_PROGRAM_UPDATE_DATE THEN
638         l_index := l_index + 1;
639         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_PROGRAM_UPDATE_DATE;
640     ELSIF p_attr_id = G_RECEIPT_METHOD_ID THEN
641         l_index := l_index + 1;
642         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_RECEIPT_METHOD_ID;
643     ELSIF p_attr_id = G_REQUEST_ID THEN
644         l_index := l_index + 1;
645         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_REQUEST_ID;
646     ELSIF p_attr_id = G_TANGIBLE_ID THEN
647         l_index := l_index + 1;
648         l_src_attr_tbl(l_index) := OE_HEADER_PAYMENT_UTIL.G_TANGIBLE_ID;
649     END IF;
650 
651     If l_src_attr_tbl.COUNT <> 0 THEN
652 
653         OE_Dependencies.Mark_Dependent
654         (p_entity_code     => OE_GLOBALS.G_ENTITY_HEADER_PAYMENT,
655         p_source_attr_tbl => l_src_attr_tbl,
656         p_dep_attr_tbl    => l_dep_attr_tbl);
657 
658         FOR I IN 1..l_dep_attr_tbl.COUNT LOOP
659             IF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE1 THEN
660                 p_x_Header_PAYMENT_rec.ATTRIBUTE1 := FND_API.G_MISS_NUM;
661             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE2 THEN
662                 p_x_Header_PAYMENT_rec.ATTRIBUTE2 := FND_API.G_MISS_CHAR;
663             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE3 THEN
664                 p_x_Header_PAYMENT_rec.ATTRIBUTE3 := FND_API.G_MISS_CHAR;
665             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE4 THEN
666                 p_x_Header_PAYMENT_rec.ATTRIBUTE4 := FND_API.G_MISS_CHAR;
667             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE5 THEN
668                 p_x_Header_PAYMENT_rec.ATTRIBUTE5 := FND_API.G_MISS_CHAR;
669             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE6 THEN
670                 p_x_Header_PAYMENT_rec.ATTRIBUTE6 := FND_API.G_MISS_CHAR;
671             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE7 THEN
672                 p_x_Header_PAYMENT_rec.ATTRIBUTE7 := FND_API.G_MISS_CHAR;
673             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE8 THEN
674                 p_x_Header_PAYMENT_rec.ATTRIBUTE8 := FND_API.G_MISS_CHAR;
675             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE9 THEN
676                 p_x_Header_PAYMENT_rec.ATTRIBUTE9 := FND_API.G_MISS_CHAR;
677             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE10 THEN
678                 p_x_Header_PAYMENT_rec.ATTRIBUTE10 := FND_API.G_MISS_CHAR;
679             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE11 THEN
680                 p_x_Header_PAYMENT_rec.ATTRIBUTE11 := FND_API.G_MISS_CHAR;
681             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE12 THEN
682                 p_x_Header_PAYMENT_rec.ATTRIBUTE12 := FND_API.G_MISS_CHAR;
683             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE13 THEN
684                 p_x_Header_PAYMENT_rec.ATTRIBUTE13 := FND_API.G_MISS_CHAR;
685             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE14 THEN
686                 p_x_Header_PAYMENT_rec.ATTRIBUTE14 := FND_API.G_MISS_CHAR;
687             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_ATTRIBUTE15 THEN
688                 p_x_Header_PAYMENT_rec.ATTRIBUTE15 := FND_API.G_MISS_CHAR;
689             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_CONTEXT THEN
690                 p_x_Header_PAYMENT_rec.CONTEXT := FND_API.G_MISS_CHAR;
691             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_CREATED_BY THEN
692                 p_x_Header_PAYMENT_rec.CREATED_BY := FND_API.G_MISS_NUM;
693             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_CREATION_DATE THEN
694                 p_x_Header_PAYMENT_rec.CREATION_DATE := FND_API.G_MISS_DATE;
695             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_LAST_UPDATED_BY THEN
696                 p_x_Header_PAYMENT_rec.LAST_UPDATED_BY := FND_API.G_MISS_NUM;
697             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_LAST_UPDATE_DATE THEN
698                 p_x_Header_PAYMENT_rec.LAST_UPDATE_DATE := FND_API.G_MISS_DATE;
699             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_LAST_UPDATE_LOGIN THEN
700                 p_x_Header_PAYMENT_rec.LAST_UPDATE_LOGIN := FND_API.G_MISS_NUM;
701             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_CHECK_NUMBER THEN
702                 p_x_Header_PAYMENT_rec.CHECK_NUMBER := FND_API.G_MISS_CHAR;
703             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_CREDIT_CARD_APPROVAL_CODE THEN
704 		--R12 CC Encryption
705 		--Added the additional conditional before clearing credit
706 		--card attributes as the dependent attributes were cleared out
707 		--when the change attributes was called for multiple attributes
708 		--in a single call
709 		IF (OE_GLOBALS.Equal(p_x_Header_PAYMENT_rec.CREDIT_CARD_APPROVAL_CODE, p_old_Header_Payment_rec.CREDIT_CARD_APPROVAL_CODE)
710 	        AND (p_old_Header_Payment_rec.header_id IS NOT NULL OR
711 		p_x_Header_PAYMENT_rec.CREDIT_CARD_APPROVAL_CODE IS NOT NULL)
712 	        ) -- AND condition added to fix 3098878
713 	        THEN
714 			p_x_Header_PAYMENT_rec.CREDIT_CARD_APPROVAL_CODE := FND_API.G_MISS_CHAR;
715 		END IF;
716             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_CREDIT_CARD_APPROVAL_DATE THEN
717 		IF (OE_GLOBALS.Equal(p_x_Header_PAYMENT_rec.CREDIT_CARD_APPROVAL_DATE, p_old_Header_Payment_rec.CREDIT_CARD_APPROVAL_DATE)
718 	        AND (p_old_Header_Payment_rec.header_id IS NOT NULL OR
719 		p_x_Header_PAYMENT_rec.CREDIT_CARD_APPROVAL_DATE IS NOT NULL)
720 	        ) -- AND condition added to fix 3098878
721 	        THEN
722 			p_x_Header_PAYMENT_rec.CREDIT_CARD_APPROVAL_DATE := FND_API.G_MISS_DATE;
723 		END IF;
724             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_CREDIT_CARD_CODE THEN
725 		IF (OE_GLOBALS.Equal(p_x_Header_PAYMENT_rec.CREDIT_CARD_CODE, p_old_Header_Payment_rec.CREDIT_CARD_CODE)
726 	        AND (p_old_Header_Payment_rec.header_id IS NOT NULL OR
727 		p_x_Header_PAYMENT_rec.CREDIT_CARD_CODE IS NOT NULL)
728 	        ) -- AND condition added to fix 3098878
729 	        THEN
730 			p_x_Header_PAYMENT_rec.CREDIT_CARD_CODE := FND_API.G_MISS_CHAR;
731 		END IF;
732             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_CREDIT_CARD_EXPIRATION_DATE THEN
733 		IF (OE_GLOBALS.Equal(p_x_Header_PAYMENT_rec.CREDIT_CARD_EXPIRATION_DATE, p_old_Header_Payment_rec.CREDIT_CARD_EXPIRATION_DATE)
734 	        AND (p_old_Header_Payment_rec.header_id IS NOT NULL OR
735 		p_x_Header_PAYMENT_rec.CREDIT_CARD_EXPIRATION_DATE IS NOT NULL)
736 	        ) -- AND condition added to fix 3098878
737 	        THEN
738 			p_x_Header_PAYMENT_rec.CREDIT_CARD_EXPIRATION_DATE := FND_API.G_MISS_DATE;
739 		END IF;
740             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_CREDIT_CARD_HOLDER_NAME THEN
741 		IF (OE_GLOBALS.Equal(p_x_Header_PAYMENT_rec.credit_card_holder_name, p_old_Header_Payment_rec.credit_card_holder_name)
742 	        AND (p_old_Header_Payment_rec.header_id IS NOT NULL OR
743 		p_x_Header_PAYMENT_rec.credit_card_holder_name IS NOT NULL)
744 	        ) -- AND condition added to fix 3098878
745 	        THEN
746 			p_x_Header_PAYMENT_rec.CREDIT_CARD_HOLDER_NAME := FND_API.G_MISS_CHAR;
747 		END IF;
748             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_CREDIT_CARD_NUMBER THEN
749 		IF (OE_GLOBALS.Is_Same_Credit_Card(p_old_Header_Payment_rec.CREDIT_CARD_NUMBER,
750 		p_x_Header_PAYMENT_rec.CREDIT_CARD_NUMBER,p_old_instrument_id,p_x_instrument_id)
751 	        AND (p_old_Header_Payment_rec.header_id IS NOT NULL OR
752 		p_x_Header_PAYMENT_rec.CREDIT_CARD_NUMBER IS NOT NULL)
753 	        ) -- AND condition added to fix 3098878
754 	        THEN
755 			p_x_Header_PAYMENT_rec.CREDIT_CARD_NUMBER := FND_API.G_MISS_CHAR;
756 		END IF;
757 		--R12 CC Encryption
758             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_PAYMENT_LEVEL_CODE THEN
759                 p_x_Header_PAYMENT_rec.PAYMENT_LEVEL_CODE := FND_API.G_MISS_CHAR;
760             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_COMMITMENT_APPLIED_AMOUNT THEN
761                 p_x_Header_PAYMENT_rec.COMMITMENT_APPLIED_AMOUNT := FND_API.G_MISS_NUM;
762             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_COMMITMENT_INTERFACED_AMOUNT THEN
763                 p_x_Header_PAYMENT_rec.COMMITMENT_INTERFACED_AMOUNT := FND_API.G_MISS_NUM;
764             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_PAYMENT_NUMBER THEN
765                 p_x_Header_PAYMENT_rec.PAYMENT_NUMBER := FND_API.G_MISS_NUM;
766             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_HEADER THEN
767                 p_x_Header_PAYMENT_rec.HEADER_ID := FND_API.G_MISS_NUM;
768             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_LINE THEN
769                 p_x_Header_PAYMENT_rec.LINE_ID := FND_API.G_MISS_NUM;
770             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_PAYMENT_AMOUNT THEN
771                 p_x_Header_PAYMENT_rec.PAYMENT_AMOUNT := FND_API.G_MISS_NUM;
772             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_PAYMENT_COLLECTION_EVENT THEN
773                 p_x_Header_PAYMENT_rec.PAYMENT_COLLECTION_EVENT := FND_API.G_MISS_CHAR;
774             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_PAYMENT_TRX_ID THEN
775                 p_x_Header_PAYMENT_rec.PAYMENT_TRX_ID := FND_API.G_MISS_NUM;
776             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_PAYMENT_TYPE_CODE THEN
777                 p_x_Header_PAYMENT_rec.PAYMENT_TYPE_CODE := FND_API.G_MISS_CHAR;
778             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_PAYMENT_SET_ID THEN
779                 p_x_Header_PAYMENT_rec.PAYMENT_SET_ID := FND_API.G_MISS_NUM;
780             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_PREPAID_AMOUNT THEN
781                 p_x_Header_PAYMENT_rec.PREPAID_AMOUNT := FND_API.G_MISS_NUM;
782             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_PROGRAM_APPLICATION_ID THEN
783                 p_x_Header_PAYMENT_rec.PROGRAM_APPLICATION_ID := FND_API.G_MISS_NUM;
784             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_PROGRAM_ID THEN
785                 p_x_Header_PAYMENT_rec.PROGRAM_ID := FND_API.G_MISS_NUM;
786             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_PROGRAM_UPDATE_DATE THEN
787                 p_x_Header_PAYMENT_rec.PROGRAM_UPDATE_DATE := FND_API.G_MISS_DATE;
788             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_RECEIPT_METHOD_ID THEN
789                 p_x_Header_PAYMENT_rec.RECEIPT_METHOD_ID := FND_API.G_MISS_NUM;
790             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_REQUEST_ID THEN
791                 p_x_Header_PAYMENT_rec.REQUEST_ID := FND_API.G_MISS_NUM;
792             ELSIF l_dep_attr_tbl(I) = OE_HEADER_PAYMENT_UTIL.G_TANGIBLE_ID THEN
793                 p_x_Header_PAYMENT_rec.TANGIBLE_ID := FND_API.G_MISS_CHAR;
794     	    END IF;
795         END LOOP;
796     END IF;
797 END Clear_Dependent_Attr;
798 
799 PROCEDURE Clear_Dependent_Attr
800 (   p_attr_id                       IN  NUMBER := FND_API.G_MISS_NUM
801 ,   p_x_Header_Payment_rec   IN OUT NOCOPY OE_Order_PUB.Header_Payment_Rec_Type
802 ,   p_old_Header_Payment_rec        IN  OE_Order_PUB.Header_Payment_Rec_Type :=
803                                         OE_Order_PUB.G_MISS_HEADER_Payment_REC
804 )
805 IS
806 l_Header_Payment_rec		OE_AK_HEADER_PaymentS_V%ROWTYPE;
807 l_old_Header_Payment_rec		OE_AK_HEADER_PaymentS_V%ROWTYPE;
808 --
809 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
810 --
811 BEGIN
812 
813 	API_Rec_To_Rowtype_Rec(p_x_Header_Payment_rec, l_Header_Payment_rec);
814 	API_Rec_To_Rowtype_Rec(p_old_Header_Payment_rec, l_old_Header_Payment_rec);
815 	--R12 CC Encryption
816 	--Need to pass the instrument id for credit card comparison
817 	--as the card numbers are encrypted.
818 	Clear_Dependent_Attr
819 		(p_attr_id			=> p_attr_id
820 		,p_x_Header_Payment_rec 	=> l_Header_Payment_rec
821 		,p_old_Header_Payment_rec	=> l_old_Header_Payment_rec
822 		,p_old_instrument_id		=> p_old_Header_Payment_rec.cc_instrument_id  --R12 CC Encryption
823 		,p_x_instrument_id		=> p_x_Header_Payment_rec.cc_instrument_id
824 		);
825 
826 	Rowtype_Rec_To_API_Rec(l_Header_Payment_rec,p_x_Header_Payment_rec);
827 
828 END Clear_Dependent_Attr;
829 
830 --ER#7479609 start
831 Procedure Delete_PaymentType_Hold
832 (
833    p_header_id       IN   NUMBER
834 ,  p_payment_number  IN  NUMBER
835 ,  x_msg_count       OUT  NOCOPY NUMBER
836 ,  x_msg_data        OUT  NOCOPY VARCHAR2
837 ,  x_return_status   OUT  NOCOPY VARCHAR2
838 ) IS
839 
840 CURSOR order_paytype_hold IS
841 Select OH.Order_hold_id,NVL(OH.hold_release_id,0)
842 FROM OE_HOLD_SOURCES HS,OE_ORDER_HOLDS OH,OE_PAYMENTS OP
843 WHERE HS.hold_source_id=OH.hold_source_id
844   AND OH.header_id=OP.header_id
845   AND OP.payment_number=p_payment_number
846   AND ((HS.hold_entity_code= 'P' AND HS.hold_entity_id=OP.payment_type_code)
847       OR (HS.hold_entity_code2 = 'P' AND HS.hold_entity_id2=OP.payment_type_code))
848   AND OH.header_id=p_header_id
849   AND OH.line_id IS NULL
850   AND OP.line_id IS NULL;
851 
852 l_order_hold_id  OE_ORDER_HOLDS.ORDER_HOLD_ID%TYPE;
853 l_hold_release_id  OE_ORDER_HOLDS.HOLD_RELEASE_ID%TYPE;
854 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
855 
856 BEGIN
857   x_return_status := FND_API.G_RET_STS_SUCCESS;
858 
859   IF l_debug_level  > 0 THEN
860       oe_debug_pub.add(  'Entering Delete_PaymentType_Hold' , 3 ) ;
861   END IF;
862 
863     OPEN order_paytype_hold;
864 
865     LOOP
866       FETCH order_paytype_hold INTO l_order_hold_id,l_hold_release_id;
867       IF (order_paytype_hold%notfound) THEN
868         EXIT;
869       END IF;
870 
871       IF l_debug_level  > 0 THEN
872           oe_debug_pub.add(  'DELETING HEADER PAYMENT TYPE HOLD' ) ;
873       END IF;
874 
875       DELETE FROM OE_ORDER_HOLDS
876        WHERE order_hold_id = l_order_hold_id;
877 
878       DELETE FROM OE_HOLD_RELEASES
879        WHERE HOLD_RELEASE_ID = l_hold_release_id
880          AND ORDER_HOLD_ID   = l_order_hold_id;
881     END LOOP;
882 
883     CLOSE order_paytype_hold;
884 
885   IF l_debug_level  > 0 THEN
886       oe_debug_pub.add(  'Exiting Delete_PaymentType_Hold' , 3 ) ;
887   END IF;
888 
889 EXCEPTION
890     	WHEN FND_API.G_EXC_ERROR THEN
891     		IF (order_paytype_hold%isopen) THEN
892     			CLOSE order_paytype_hold;
893     		END IF;
894 
895         	x_return_status := FND_API.G_RET_STS_ERROR;
896         	FND_MSG_PUB.Count_And_Get
897 		(   p_count 	=>	x_msg_count
898 		,   p_data	=>	x_msg_data
899 	  	);
900     	WHEN OTHERS THEN
901     		IF (order_paytype_hold%isopen) THEN
902     			CLOSE order_paytype_hold;
903     		END IF;
904         	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
905         	FND_MSG_PUB.Count_And_Get
906 		(   p_count 	=>	x_msg_count
907 		,   p_data	=>	x_msg_data
908 	  	);
909 
910 END Delete_PaymentType_Hold;
911 --ER#7479609 end
912 
913 
914 --  Procedure Apply_Attribute_Changes
915 
916 PROCEDURE Apply_Attribute_Changes
917 (   p_x_Header_Payment_rec            IN OUT NOCOPY OE_Order_PUB.Header_Payment_Rec_Type
918 ,   p_old_Header_Payment_rec        IN  OE_Order_PUB.Header_Payment_Rec_Type :=
919                                         OE_Order_PUB.G_MISS_HEADER_Payment_REC
920 )
921 IS
922 l_return_status                   Varchar2(10);
923 --
924 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
925 --
926 l_payments_update_flag VARCHAR2(1) := 'N';
927 --bug3507871
928 l_booked_flag VARCHAR2(1) :='N';
929 --bug3625027 start
930 l_cc_flag_old VARCHAR2(1);
931 l_cc_flag_new VARCHAR2(1);
932 --bug3625027 end
933 
934 --bug3781675 start
935 p_payment_type_code varchar2(30) := NULL;
936 p_payment_amount NUMBER := NULL;
937 p_check_number varchar2(50) := NULL;
938 p_credit_card_code varchar2(80) := NULL;
939 p_credit_card_holder_name varchar2(80) := NULL;
940 p_credit_card_number varchar2(80) := NULL;
941 p_credit_card_approval_code varchar2(80) := NULL;
942 p_credit_card_expiration_date DATE := NULL;
943 l_delete_payment_hold	VARCHAR2(1) := 'N';
944 l_delete_pmt_param1	VARCHAR2(30);
945 
946 
947 -- replaced this cursor for performance change to join to base table instead of view
948 /*
949 cursor header_payment_cur is
950 select 	ooh.payment_type_code,
951        	ooh.payment_amount,
952        	ooh.check_number,
953        	ite.card_issuer_code,
954        	ite.card_holder_name,
955        	ite.card_number,
956        	ite.card_expirydate
957 from 	oe_order_headers_all ooh,
958      	oe_payments op,
959      	iby_trxn_extensions_v ite
960 where 	ooh.header_id = p_x_header_payment_rec.header_id
961 and	ooh.header_id = op.header_id
962 and	op.trxn_extension_id = ite.trxn_extension_id;
963 
964 --bug3781675 end
965 */
966 
967 cursor header_payment_cur is
968 select 	ooh.payment_type_code,
969        	ooh.payment_amount,
970        	ooh.check_number,
971        	c.card_issuer_code,
972        	c.chname,
973        	c.masked_cc_number,
974        	c.expirydate
975 from 	oe_order_headers_all ooh,
976      	oe_payments op,
977         iby_creditcard c,
978         iby_pmt_instr_uses_all u,
979         iby_fndcpt_tx_extensions x
980 where 	ooh.header_id = p_x_header_payment_rec.header_id
981 and	ooh.header_id = op.header_id
982 and	op.trxn_extension_id = x.trxn_extension_id
983 and     x.instr_assignment_id = u.instrument_payment_use_id(+)
984 and     u.instrument_id = c.instrid(+);
985 
986 BEGIN
987 
988     --  Load out record
989 
990     oe_debug_pub.add('Trxn_extension id ksurendr'||p_x_Header_Payment_rec.trxn_extension_id);
991     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute1,p_old_Header_Payment_rec.attribute1)
992     THEN
993         NULL;
994     END IF;
995 
996     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute2,p_old_Header_Payment_rec.attribute2)
997     THEN
998         NULL;
999     END IF;
1000 
1001     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute3,p_old_Header_Payment_rec.attribute3)
1002     THEN
1003         NULL;
1004     END IF;
1005 
1006     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute4,p_old_Header_Payment_rec.attribute4)
1007     THEN
1008         NULL;
1009     END IF;
1010 
1011     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute5,p_old_Header_Payment_rec.attribute5)
1012     THEN
1013         NULL;
1014     END IF;
1015 
1016     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute6,p_old_Header_Payment_rec.attribute6)
1017     THEN
1018         NULL;
1019     END IF;
1020 
1021     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute7,p_old_Header_Payment_rec.attribute7)
1022     THEN
1023         NULL;
1024     END IF;
1025 
1026     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute8,p_old_Header_Payment_rec.attribute8)
1027     THEN
1028         NULL;
1029     END IF;
1030 
1031     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute9,p_old_Header_Payment_rec.attribute9)
1032     THEN
1033         NULL;
1034     END IF;
1035 
1036     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute10,p_old_Header_Payment_rec.attribute10)
1037     THEN
1038         NULL;
1039     END IF;
1040 
1041     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute11,p_old_Header_Payment_rec.attribute11)
1042     THEN
1043         NULL;
1044     END IF;
1045 
1046     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute12,p_old_Header_Payment_rec.attribute12)
1047     THEN
1048         NULL;
1049     END IF;
1050 
1051     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute13,p_old_Header_Payment_rec.attribute13)
1052     THEN
1053         NULL;
1054     END IF;
1055 
1056     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute14,p_old_Header_Payment_rec.attribute14)
1057     THEN
1058         NULL;
1059     END IF;
1060 
1061     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.attribute15,p_old_Header_Payment_rec.attribute15)
1062     THEN
1063         NULL;
1064     END IF;
1065 
1066     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.context,p_old_Header_Payment_rec.context)
1067     THEN
1068         NULL;
1069     END IF;
1070 
1071     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.created_by,p_old_Header_Payment_rec.created_by)
1072     THEN
1073         NULL;
1074     END IF;
1075 
1076     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.creation_date,p_old_Header_Payment_rec.creation_date)
1077     THEN
1078         NULL;
1079     END IF;
1080 
1081     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.last_updated_by,p_old_Header_Payment_rec.last_updated_by)
1082     THEN
1083         NULL;
1084     END IF;
1085 
1086     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.last_update_date,p_old_Header_Payment_rec.last_update_date)
1087     THEN
1088         NULL;
1089     END IF;
1090 
1091     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.last_update_login,p_old_Header_Payment_rec.last_update_login)
1092     THEN
1093         NULL;
1094     END IF;
1095 
1096     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.check_number,p_old_Header_Payment_rec.check_number)
1097     THEN
1098         l_payments_update_flag := 'Y';
1099     END IF;
1100 
1101     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.credit_card_approval_code,p_old_Header_Payment_rec.credit_card_approval_code)
1102     THEN
1103         l_payments_update_flag := 'Y';
1104     END IF;
1105 
1106     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.credit_card_approval_date,p_old_Header_Payment_rec.credit_card_approval_date)
1107     THEN
1108         l_payments_update_flag := 'Y';
1109     END IF;
1110 
1111     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.credit_card_code,p_old_Header_Payment_rec.credit_card_code)
1112     THEN
1113         l_payments_update_flag := 'Y';
1114     END IF;
1115     IF l_debug_level > 0 THEN
1116 	    oe_debug_pub.add('Old Expiration date in apply attribute changes '||p_old_Header_Payment_rec.credit_card_expiration_date);
1117 	    oe_debug_pub.add('New Expiration date'||p_x_Header_Payment_rec.credit_card_expiration_date);
1118     END IF;
1119 
1120     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.credit_card_expiration_date,p_old_Header_Payment_rec.credit_card_expiration_date)
1121     THEN
1122         l_payments_update_flag := 'Y';
1123     END IF;
1124     IF l_debug_level > 0 THEN
1125 	oe_debug_pub.add('Old cc holder name'||p_old_Header_Payment_rec.credit_card_holder_name);
1126 	oe_debug_pub.add('New cc holder name'||p_x_Header_Payment_rec.credit_card_holder_name);
1127     END IF;
1128 
1129     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.credit_card_holder_name,p_old_Header_Payment_rec.credit_card_holder_name)
1130     THEN
1131         l_payments_update_flag := 'Y';
1132     END IF;
1133     --R12 CC Encryption
1134     --Since the credit card numbers are encrypted, passing both the credit card
1135     --numbers as well as instrument ids to determine if both the old and new
1136     --values point to the same credit card number.
1137 
1138     IF NOT OE_GLOBALS.Is_Same_Credit_Card(p_old_Header_Payment_rec.credit_card_number,
1139 	    p_x_Header_Payment_rec.credit_card_number,
1140 	    p_old_Header_Payment_rec.cc_instrument_id,
1141 	    p_x_Header_Payment_rec.cc_instrument_id)
1142     THEN
1143         IF l_debug_level > 0 THEN
1144 		oe_debug_pub.add('after is_same_credit_card ---> changed cc number');
1145 	END IF;
1146         l_payments_update_flag := 'Y';
1147     END IF;
1148 
1149     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.payment_level_code,p_old_Header_Payment_rec.payment_level_code)
1150     THEN
1151        l_payments_update_flag := 'Y';
1152     END IF;
1153 
1154     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.commitment_applied_amount,p_old_Header_Payment_rec.commitment_applied_amount)
1155     THEN
1156         NULL;
1157     END IF;
1158 
1159     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.commitment_interfaced_amount,p_old_Header_Payment_rec.commitment_interfaced_amount)
1160     THEN
1161         NULL;
1162     END IF;
1163 
1164     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.payment_number,p_old_Header_Payment_rec.payment_number)
1165     THEN
1166         NULL;
1167     END IF;
1168 
1169     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.header_id,p_old_Header_Payment_rec.header_id)
1170     THEN
1171         NULL;
1172     END IF;
1173 
1174     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.line_id,p_old_Header_Payment_rec.line_id)
1175     THEN
1176         NULL;
1177     END IF;
1178 
1179     --R12 CC Encryption
1180     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.trxn_extension_id,p_old_Header_Payment_rec.trxn_extension_id)
1181     THEN
1182         NULL;
1183     END IF;
1184 
1185     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.instrument_security_code,p_old_Header_Payment_rec.instrument_security_code)
1186     THEN
1187         NULL;
1188     END IF;
1189     --R12 CC Encryption
1190 
1191 
1192     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.payment_amount,p_old_Header_Payment_rec.payment_amount)
1193     THEN
1194         l_payments_update_flag := 'Y';
1195 
1196 	--bug3507871 start
1197       IF OE_PrePayment_UTIL.IS_MULTIPLE_PAYMENTS_ENABLED = TRUE then
1198        BEGIN
1199 	  SELECT booked_flag INTO l_booked_flag
1200 	  FROM oe_order_headers_all
1201 	  WHERE header_id=p_x_header_Payment_rec.header_id;
1202 	IF (l_booked_flag = 'Y') THEN
1203 	 IF( l_debug_level > 0) THEN
1204              oe_debug_pub.add('pviprana: logging a new payment delayed request for making the order go on payment hold', 1);
1205 	 END IF;
1206 
1207 
1208          OE_delayed_requests_Pvt.log_request
1209 		(p_entity_code            => OE_GLOBALS.G_ENTITY_HEADER_PAYMENT,
1210 		p_entity_id              => p_x_Header_Payment_rec.header_id,
1211 		p_requesting_entity_code => OE_GLOBALS.G_ENTITY_HEADER,
1212 		p_requesting_entity_id   => p_x_Header_Payment_rec.header_id,
1213 		p_request_type           => OE_GLOBALS.G_APPLY_PPP_HOLD,
1214 		x_return_status          => l_return_status);
1215 	END IF;
1216        EXCEPTION
1217 	  WHEN no_data_found THEN
1218 	     null;
1219 	  WHEN others THEN
1220 	     null;
1221        END;
1222 
1223      END IF;
1224       --bug3507871 end
1225     END IF;
1226 
1227     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.payment_collection_event,p_old_Header_Payment_rec.payment_collection_event)
1228     THEN
1229         l_payments_update_flag := 'Y';
1230 
1231         -- if changing from credit card invoice payment to a prepayment
1232         -- or changing from prepayment to any invoice payment
1233         IF (
1234             (nvl(p_old_Header_Payment_rec.payment_collection_event, 'PREPAY')
1235              ='INVOICE' AND p_old_Header_Payment_rec.payment_type_code ='CREDIT_CARD'
1236             )
1237            OR
1238              nvl(p_old_Header_Payment_rec.payment_collection_event,'PREPAY')='PREPAY'
1239            )
1240            AND p_x_header_payment_rec.operation = 'UPDATE'
1241            THEN
1242 
1243              l_delete_payment_hold := 'Y';
1244          END IF;
1245 
1246         -- Set this value to N to ensure to not suppress the call to
1247         -- credit checking. Without doing this, Credit checking would not
1248         -- be called when: change the payment type code (which results in
1249         -- cc flag changing), press Save button, then change the payment
1250         -- collection event, and press Process Payment button.
1251         OE_Prepayment_PVT.g_process_pmt_req_logged := 'N';
1252     END IF;
1253 
1254 IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.defer_payment_processing_flag,p_old_Header_Payment_rec.defer_payment_processing_flag)
1255     THEN
1256         NULL;
1257     END IF;
1258 
1259     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.payment_trx_id,p_old_Header_Payment_rec.payment_trx_id)
1260     THEN
1261           NULL;
1262     END IF;
1263 
1264     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.payment_type_code,p_old_Header_Payment_rec.payment_type_code)
1265     THEN
1266         l_payments_update_flag := 'Y';
1267 
1268         --if changing from credit card invoice payment to any other invoice payment.
1269         IF     nvl(p_old_Header_Payment_rec.payment_collection_event, 'PREPAY')
1270                    = 'INVOICE'
1271            AND nvl(p_x_Header_Payment_rec.payment_collection_event, 'PREPAY')
1272                    = 'INVOICE'
1273            AND p_old_Header_Payment_rec.payment_type_code = 'CREDIT_CARD'
1274            AND p_x_header_payment_rec.operation = 'UPDATE'
1275            THEN
1276            l_delete_payment_hold := 'Y';
1277          END If;
1278 
1279 
1280 	--bug3625027 start
1281 	BEGIN
1282 	 IF nvl(p_x_Header_Payment_rec.payment_collection_event,'PREPAY') = 'INVOICE' THEN
1283 	   SELECT booked_flag INTO l_booked_flag
1284 	   FROM oe_order_headers_all
1285 	   WHERE header_id=p_x_header_Payment_rec.header_id;
1286 
1287 	   IF p_old_header_payment_rec.payment_type_code IS NOT NULL THEN
1288 	      SELECT credit_check_flag INTO l_cc_flag_old
1289               FROM oe_payment_types_vl
1290 	      WHERE payment_type_code=p_old_Header_Payment_rec.payment_type_code;
1291 	   END IF;
1292 
1293 	   SELECT credit_check_flag INTO l_cc_flag_new
1294 	   FROM oe_payment_types_vl
1295 	   WHERE payment_type_code=p_x_Header_Payment_rec.payment_type_code;
1296 
1297 	   IF l_booked_flag = 'Y' AND
1298 	      NOT OE_GLOBALS.Equal(l_cc_flag_old,l_cc_flag_new)
1299 --              AND nvl(l_cc_flag_new, 'N') = 'Y'
1300               THEN
1301 
1302 	        IF( l_debug_level > 0) THEN
1303 
1304 		      oe_debug_pub.add('pviprana: logging a new payment delayed request for processing the payment', 1);
1305 		END IF;
1306 
1307 		OE_delayed_requests_Pvt.log_request
1308 		   (p_entity_code            => OE_GLOBALS.G_ENTITY_HEADER_PAYMENT,
1309 		    p_entity_id              => p_x_Header_Payment_rec.header_id,
1310 		    p_requesting_entity_code => OE_GLOBALS.G_ENTITY_HEADER,
1311 		    p_requesting_entity_id   => p_x_Header_Payment_rec.header_id,
1312 		    p_request_type           => OE_GLOBALS.G_PROCESS_PAYMENT,
1313 		    x_return_status          => l_return_status);
1314 
1315                     -- set the global value, to be used in process_payment
1316                     -- API to not call credit checking redundantly.
1317                     OE_Prepayment_PVT.g_process_pmt_req_logged := 'Y';
1318 	  END IF;
1319 	END IF;
1320        EXCEPTION
1321 	  WHEN no_data_found THEN
1322 	     null;
1323 	  WHEN others THEN
1324 	     null;
1325        END;
1326        --bug3625027 end
1327 
1328     END IF;
1329 
1330     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.payment_set_id,p_old_Header_Payment_rec.payment_set_id)
1331     THEN
1332         NULL;
1333     END IF;
1334 
1335     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.prepaid_amount,p_old_Header_Payment_rec.prepaid_amount)
1336     THEN
1337         NULL;
1338     END IF;
1339 
1340     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.program_application_id,p_old_Header_Payment_rec.program_application_id)
1341     THEN
1342         NULL;
1343     END IF;
1344 
1345     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.program_id,p_old_Header_Payment_rec.program_id)
1346     THEN
1347         NULL;
1348     END IF;
1349 
1350     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.program_update_date,p_old_Header_Payment_rec.program_update_date)
1351     THEN
1352         NULL;
1353     END IF;
1354 
1355     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.receipt_method_id,p_old_Header_Payment_rec.receipt_method_id)
1356     THEN
1357         NULL;
1358     END IF;
1359 
1360     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.request_id,p_old_Header_Payment_rec.request_id)
1361     THEN
1362         NULL;
1363     END IF;
1364 
1365     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.tangible_id,p_old_Header_Payment_rec.tangible_id)
1366     THEN
1367         NULL;
1368     END IF;
1369 
1370     --log delayed requests based on certain attribute changes
1371 
1372     IF l_payments_update_flag = 'Y' and
1373        OE_PrePayment_UTIL.IS_MULTIPLE_PAYMENTS_ENABLED = TRUE then
1374 
1375 
1376        --bug3781675 start
1377        /* get header payment info */
1378        open header_payment_cur;
1379        fetch header_payment_cur into p_payment_type_code,
1380                                      p_payment_amount,
1381                                      p_check_number,
1382                                      p_credit_card_code,
1383                                      p_credit_card_holder_name,
1384                                      p_credit_card_number,
1385                                      p_credit_card_expiration_date;
1386                                      -- p_credit_card_approval_code;
1387 
1388        close header_payment_cur;
1389        /*
1390        oe_debug_pub.add('p_x_header_payment_rec.payment_collection_event ' || p_x_header_payment_rec.payment_collection_event);
1391        oe_debug_pub.add('p_old_Header_Payment_rec.payment_collection_event ' || p_old_Header_Payment_rec.payment_collection_event);
1392 oe_debug_pub.add('p_payment_type_code ' || p_payment_type_code);
1393 oe_debug_pub.add('p_x_header_payment_rec.payment_type_code ' || p_x_header_payment_rec.payment_type_code);
1394 oe_debug_pub.add('p_payment_amount ' || p_payment_amount);
1395 oe_debug_pub.add('p_x_header_payment_rec.payment_amount ' || p_x_header_payment_rec.payment_amount);
1396 oe_debug_pub.add('p_check_number ' || p_check_number);
1397 oe_debug_pub.add('p_x_header_payment_rec.check_number ' || p_x_header_payment_rec.check_number);
1398 oe_debug_pub.add('p_credit_card_code ' || p_credit_card_code);
1399 oe_debug_pub.add('p_x_header_payment_rec.credit_card_code ' || p_x_header_payment_rec.credit_card_code);
1400 oe_debug_pub.add('p_credit_card_holder_name ' || p_credit_card_holder_name);
1401 oe_debug_pub.add('p_x_header_payment_rec.credit_card_holder_name ' || p_x_header_payment_rec.credit_card_holder_name);
1402 oe_debug_pub.add('p_credit_card_number ' || p_credit_card_number);
1403 oe_debug_pub.add('p_x_header_payment_rec.credit_card_number ' || p_x_header_payment_rec.credit_card_number);
1404 oe_debug_pub.add('p_credit_card_expiration_date ' || p_credit_card_expiration_date);
1405 oe_debug_pub.add('p_x_header_payment_rec.credit_card_expiration_date ' || p_x_header_payment_rec.credit_card_expiration_date);
1406 
1407 oe_debug_pub.add('p_x_header_payment_rec.payment_collection_event ' || p_x_header_payment_rec.payment_collection_event);
1408 */
1409        if p_x_header_payment_rec.payment_type_code IS NOT NULL and
1410 	  (((nvl(p_payment_type_code, '-1') <> nvl(p_x_header_payment_rec.payment_type_code, '-1') or
1411         --  nvl(p_payment_amount, -1) <> nvl(p_x_header_payment_rec.payment_amount,-1) or
1412           nvl(p_check_number, '-1') <> nvl(p_x_header_payment_rec.check_number, '-1') or            nvl(p_credit_card_code, '-1') <> nvl(p_x_header_payment_rec.credit_card_code, '-1')   or
1413 	  nvl(p_credit_card_holder_name, '-1') <> nvl(p_x_header_payment_rec.credit_card_holder_name, '-1') or
1414           NOT OE_GLOBALS.Is_Same_Credit_Card(p_old_Header_Payment_rec.credit_card_number,
1415                             p_x_Header_Payment_rec.credit_card_number,
1416 			    p_old_Header_Payment_rec.cc_instrument_id,
1417 			    p_x_Header_Payment_rec.cc_instrument_id) or
1418           nvl(p_credit_card_expiration_date,sysdate) <> nvl(p_x_header_payment_rec.credit_card_expiration_date, nvl((p_credit_card_expiration_date - 1),sysdate))) and
1419           nvl(p_x_header_payment_rec.payment_collection_event,'PREPAY') = 'INVOICE') or
1420 	   (nvl(p_x_header_payment_rec.payment_collection_event,'PREPAY') <> nvl(p_old_Header_Payment_rec.payment_collection_event,'PREPAY') and
1421 	    p_x_header_payment_rec.operation = 'UPDATE')) then
1422 	  --bug3781675 end
1423 
1424 
1425 	         oe_debug_pub.add('logging synch from UHPMB.pls payment delayed request', 1);
1426 
1427 		 OE_delayed_requests_Pvt.log_request
1428 		    (p_entity_code            => OE_GLOBALS.G_ENTITY_HEADER_PAYMENT,
1429 		     p_entity_id              => p_x_Header_Payment_rec.header_id,
1430 		     p_requesting_entity_code => OE_GLOBALS.G_ENTITY_HEADER,
1431 		     p_requesting_entity_id   => p_x_Header_Payment_rec.header_id,
1432 		     p_request_type           => OE_GLOBALS.G_UPDATE_HDR_PAYMENT,
1433 		     p_param1                 => 'UPDATE_HEADER',
1434 		     x_return_status          => l_return_status);
1435 
1436 
1437         end if; --bug3781675
1438 
1439      END IF;
1440 
1441      IF l_delete_payment_hold = 'Y' THEN
1442         oe_debug_pub.add('logging request to release payment related holds', 3);
1443         IF nvl(p_old_Header_Payment_rec.payment_collection_event,'PREPAY')
1444            = 'PREPAY' THEN
1445            l_delete_pmt_param1 := 'PREPAYMENT';
1446         ELSE
1447            l_delete_pmt_param1 := 'VERIFY_PAYMENT';
1448         END IF;
1449 
1450         OE_delayed_requests_Pvt.log_request
1451 		    (p_entity_code            => OE_GLOBALS.G_ENTITY_HEADER_PAYMENT,
1452 		     p_entity_id              => p_x_Header_Payment_rec.header_id,
1453 		     p_requesting_entity_code => OE_GLOBALS.G_ENTITY_HEADER,
1454 		     p_requesting_entity_id   => p_x_Header_Payment_rec.header_id,
1455 		     p_request_type           => OE_GLOBALS.G_DELETE_PAYMENT_HOLD,
1456 		     p_param1                 => l_delete_pmt_param1,
1457 		     x_return_status          => l_return_status);
1458       END IF;
1459 
1460 --ER#7479609 start
1461 --ER#7479609 start
1462     IF NOT OE_GLOBALS.Equal(p_x_Header_Payment_rec.payment_type_code,p_old_Header_Payment_rec.payment_type_code)
1463     THEN
1464 		oe_debug_pub.add('logging Delayed request for evaluation of payments hold', 1);
1465 
1466                 OE_delayed_requests_Pvt.log_request
1467                  (p_entity_code            => OE_GLOBALS.G_ENTITY_HEADER_PAYMENT,
1468                   p_entity_id              => p_x_Header_Payment_rec.header_id,
1469                   p_requesting_entity_code => OE_GLOBALS.G_ENTITY_HEADER,
1470                   p_requesting_entity_id   => p_x_Header_Payment_rec.header_id,
1471                   p_request_type           => OE_GLOBALS.G_EVAL_HOLD_SOURCE,
1472                   p_request_unique_key1    => 'PAYMENT_TYPE',
1473                   p_param1                 => 'P',
1474                   p_param2                 => p_x_Header_Payment_rec.payment_type_code,
1475                   x_return_status          => l_return_status);
1476     END IF;
1477 --ER#7479609 end
1478 
1479 END Apply_Attribute_Changes;
1480 
1481 --  Procedure Complete_Record
1482 
1483 PROCEDURE Complete_Record
1484 (   p_x_Header_Payment_rec     IN OUT NOCOPY OE_Order_PUB.Header_Payment_Rec_Type
1485 ,   p_old_Header_Payment_rec        IN  OE_Order_PUB.Header_Payment_Rec_Type
1486 )
1487 IS
1488 --
1489 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1490 --
1491 BEGIN
1492 
1493     IF p_x_Header_Payment_rec.attribute1 = FND_API.G_MISS_CHAR THEN
1494         p_x_Header_Payment_rec.attribute1 := p_old_Header_Payment_rec.attribute1;
1495     END IF;
1496 
1497     IF p_x_Header_Payment_rec.attribute2 = FND_API.G_MISS_CHAR THEN
1498         p_x_Header_Payment_rec.attribute2 := p_old_Header_Payment_rec.attribute2;
1499     END IF;
1500 
1501     IF p_x_Header_Payment_rec.attribute3 = FND_API.G_MISS_CHAR THEN
1502         p_x_Header_Payment_rec.attribute3 := p_old_Header_Payment_rec.attribute3;
1503     END IF;
1504 
1505     IF p_x_Header_Payment_rec.attribute4 = FND_API.G_MISS_CHAR THEN
1506         p_x_Header_Payment_rec.attribute4 := p_old_Header_Payment_rec.attribute4;
1507     END IF;
1508 
1509     IF p_x_Header_Payment_rec.attribute5 = FND_API.G_MISS_CHAR THEN
1510         p_x_Header_Payment_rec.attribute5 := p_old_Header_Payment_rec.attribute5;
1511     END IF;
1512 
1513     IF p_x_Header_Payment_rec.attribute6 = FND_API.G_MISS_CHAR THEN
1514         p_x_Header_Payment_rec.attribute6 := p_old_Header_Payment_rec.attribute6;
1515     END IF;
1516 
1517     IF p_x_Header_Payment_rec.attribute7 = FND_API.G_MISS_CHAR THEN
1518         p_x_Header_Payment_rec.attribute7 := p_old_Header_Payment_rec.attribute7;
1519     END IF;
1520 
1521     IF p_x_Header_Payment_rec.attribute8 = FND_API.G_MISS_CHAR THEN
1522         p_x_Header_Payment_rec.attribute8 := p_old_Header_Payment_rec.attribute8;
1523     END IF;
1524 
1525     IF p_x_Header_Payment_rec.attribute9 = FND_API.G_MISS_CHAR THEN
1526         p_x_Header_Payment_rec.attribute9 := p_old_Header_Payment_rec.attribute9;
1527     END IF;
1528 
1529     IF p_x_Header_Payment_rec.attribute10 = FND_API.G_MISS_CHAR THEN
1530         p_x_Header_Payment_rec.attribute10 := p_old_Header_Payment_rec.attribute10;
1531     END IF;
1532 
1533     IF p_x_Header_Payment_rec.attribute11 = FND_API.G_MISS_CHAR THEN
1534         p_x_Header_Payment_rec.attribute11 := p_old_Header_Payment_rec.attribute11;
1535     END IF;
1536 
1537     IF p_x_Header_Payment_rec.attribute12 = FND_API.G_MISS_CHAR THEN
1538         p_x_Header_Payment_rec.attribute12 := p_old_Header_Payment_rec.attribute12;
1539     END IF;
1540 
1541     IF p_x_Header_Payment_rec.attribute13 = FND_API.G_MISS_CHAR THEN
1542         p_x_Header_Payment_rec.attribute13 := p_old_Header_Payment_rec.attribute13;
1543     END IF;
1544 
1545     IF p_x_Header_Payment_rec.attribute14 = FND_API.G_MISS_CHAR THEN
1546         p_x_Header_Payment_rec.attribute14 := p_old_Header_Payment_rec.attribute14;
1547     END IF;
1548 
1549     IF p_x_Header_Payment_rec.attribute15 = FND_API.G_MISS_CHAR THEN
1550         p_x_Header_Payment_rec.attribute15 := p_old_Header_Payment_rec.attribute15;
1551     END IF;
1552 
1553     IF p_x_Header_Payment_rec.context = FND_API.G_MISS_CHAR THEN
1554         p_x_Header_Payment_rec.context := p_old_Header_Payment_rec.context;
1555     END IF;
1556 
1557     IF p_x_Header_Payment_rec.created_by = FND_API.G_MISS_NUM THEN
1558         p_x_Header_Payment_rec.created_by := p_old_Header_Payment_rec.created_by;
1559     END IF;
1560 
1561     IF p_x_Header_Payment_rec.creation_date = FND_API.G_MISS_DATE THEN
1562         p_x_Header_Payment_rec.creation_date := p_old_Header_Payment_rec.creation_date;
1563     END IF;
1564 
1565     IF p_x_Header_Payment_rec.last_updated_by = FND_API.G_MISS_NUM THEN
1566         p_x_Header_Payment_rec.last_updated_by := p_old_Header_Payment_rec.last_updated_by;
1567     END IF;
1568 
1569     IF p_x_Header_Payment_rec.last_update_date = FND_API.G_MISS_DATE THEN
1570         p_x_Header_Payment_rec.last_update_date := p_old_Header_Payment_rec.last_update_date;
1571     END IF;
1572 
1573     IF p_x_Header_Payment_rec.last_update_login = FND_API.G_MISS_NUM THEN
1574         p_x_Header_Payment_rec.last_update_login := p_old_Header_Payment_rec.last_update_login;
1575     END IF;
1576 
1577     IF p_x_Header_Payment_rec.check_number = FND_API.G_MISS_CHAR THEN
1578         p_x_Header_Payment_rec.check_number := p_old_Header_Payment_rec.check_number;
1579     END IF;
1580 
1581     IF p_x_Header_Payment_rec.credit_card_approval_code = FND_API.G_MISS_CHAR THEN
1582         p_x_Header_Payment_rec.credit_card_approval_code := p_old_Header_Payment_rec.credit_card_approval_code;
1583     END IF;
1584 
1585     IF p_x_Header_Payment_rec.credit_card_approval_date = FND_API.G_MISS_DATE THEN
1586         p_x_Header_Payment_rec.credit_card_approval_date := p_old_Header_Payment_rec.credit_card_approval_date;
1587     END IF;
1588 
1589     IF p_x_Header_Payment_rec.credit_card_code = FND_API.G_MISS_CHAR THEN
1590         p_x_Header_Payment_rec.credit_card_code := p_old_Header_Payment_rec.credit_card_code;
1591     END IF;
1592 
1593     IF p_x_Header_Payment_rec.credit_card_expiration_date = FND_API.G_MISS_DATE THEN
1594         p_x_Header_Payment_rec.credit_card_expiration_date := p_old_Header_Payment_rec.credit_card_expiration_date;
1595     END IF;
1596 
1597     IF p_x_Header_Payment_rec.credit_card_holder_name = FND_API.G_MISS_CHAR THEN
1598         p_x_Header_Payment_rec.credit_card_holder_name := p_old_Header_Payment_rec.credit_card_holder_name;
1599     END IF;
1600 
1601     IF p_x_Header_Payment_rec.credit_card_number = FND_API.G_MISS_CHAR THEN
1602         p_x_Header_Payment_rec.credit_card_number := p_old_Header_Payment_rec.credit_card_number;
1603     END IF;
1604 
1605     IF p_x_Header_Payment_rec.payment_level_code = FND_API.G_MISS_CHAR THEN
1606         p_x_Header_Payment_rec.payment_level_code := p_old_Header_Payment_rec.payment_level_code;
1607     END IF;
1608 
1609     IF p_x_Header_Payment_rec.commitment_applied_amount = FND_API.G_MISS_NUM THEN
1610         p_x_Header_Payment_rec.commitment_applied_amount := p_old_Header_Payment_rec.commitment_applied_amount;
1611     END IF;
1612 
1613     IF p_x_Header_Payment_rec.commitment_interfaced_amount = FND_API.G_MISS_NUM THEN
1614         p_x_Header_Payment_rec.commitment_interfaced_amount := p_old_Header_Payment_rec.commitment_interfaced_amount;
1615     END IF;
1616 
1617     IF p_x_Header_Payment_rec.payment_number = FND_API.G_MISS_NUM THEN
1618         p_x_Header_Payment_rec.payment_number := p_old_Header_Payment_rec.payment_number;
1619     END IF;
1620 
1621     IF p_x_Header_Payment_rec.header_id = FND_API.G_MISS_NUM THEN
1622         p_x_Header_Payment_rec.header_id := p_old_Header_Payment_rec.header_id;
1623     END IF;
1624 
1625     IF p_x_Header_Payment_rec.line_id = FND_API.G_MISS_NUM THEN
1626         p_x_Header_Payment_rec.line_id := p_old_Header_Payment_rec.line_id;
1627     END IF;
1628 
1629     IF p_x_Header_Payment_rec.payment_amount = FND_API.G_MISS_NUM THEN
1630         p_x_Header_Payment_rec.payment_amount := p_old_Header_Payment_rec.payment_amount;
1631     END IF;
1632 
1633     IF p_x_Header_Payment_rec.payment_collection_event = FND_API.G_MISS_CHAR THEN
1634         p_x_Header_Payment_rec.payment_collection_event := p_old_Header_Payment_rec.payment_collection_event;
1635     END IF;
1636 
1637     IF p_x_Header_Payment_rec.defer_payment_processing_flag = FND_API.G_MISS_CHAR THEN
1638         p_x_Header_Payment_rec.defer_payment_processing_flag := p_old_Header_Payment_rec.defer_payment_processing_flag;
1639     END IF;
1640 
1641     IF p_x_Header_Payment_rec.payment_trx_id = FND_API.G_MISS_NUM THEN
1642         p_x_Header_Payment_rec.payment_trx_id := p_old_Header_Payment_rec.payment_trx_id;
1643     END IF;
1644 
1645     IF p_x_Header_Payment_rec.payment_type_code = FND_API.G_MISS_CHAR THEN
1646         p_x_Header_Payment_rec.payment_type_code := p_old_Header_Payment_rec.payment_type_code;
1647     END IF;
1648 
1649     IF p_x_Header_Payment_rec.payment_set_id = FND_API.G_MISS_NUM THEN
1650         p_x_Header_Payment_rec.payment_set_id := p_old_Header_Payment_rec.payment_set_id;
1651     END IF;
1652 
1653     IF p_x_Header_Payment_rec.prepaid_amount = FND_API.G_MISS_NUM THEN
1654         p_x_Header_Payment_rec.prepaid_amount := p_old_Header_Payment_rec.prepaid_amount;
1655     END IF;
1656 
1657     IF p_x_Header_Payment_rec.program_application_id = FND_API.G_MISS_NUM THEN
1658         p_x_Header_Payment_rec.program_application_id := p_old_Header_Payment_rec.program_application_id;
1659     END IF;
1660 
1661     IF p_x_Header_Payment_rec.program_id = FND_API.G_MISS_NUM THEN
1662         p_x_Header_Payment_rec.program_id := p_old_Header_Payment_rec.program_id;
1663     END IF;
1664 
1665     IF p_x_Header_Payment_rec.program_update_date = FND_API.G_MISS_DATE THEN
1666         p_x_Header_Payment_rec.program_update_date := p_old_Header_Payment_rec.program_update_date;
1667     END IF;
1668 
1669     IF p_x_Header_Payment_rec.receipt_method_id = FND_API.G_MISS_NUM THEN
1670         p_x_Header_Payment_rec.receipt_method_id := p_old_Header_Payment_rec.receipt_method_id;
1671     END IF;
1672 
1673     IF p_x_Header_Payment_rec.request_id = FND_API.G_MISS_NUM THEN
1674         p_x_Header_Payment_rec.request_id := p_old_Header_Payment_rec.request_id;
1675     END IF;
1676 
1677     IF p_x_Header_Payment_rec.tangible_id = FND_API.G_MISS_CHAR THEN
1678         p_x_Header_Payment_rec.tangible_id := p_old_Header_Payment_rec.tangible_id;
1679     END IF;
1680 
1681     IF p_x_Header_Payment_rec.trxn_extension_id = FND_API.G_MISS_NUM THEN
1682         p_x_Header_Payment_rec.trxn_extension_id := p_old_Header_Payment_rec.trxn_extension_id;
1683     END IF;
1684 
1685     --R12 CC Encryption
1686     IF p_x_Header_Payment_rec.trxn_extension_id = FND_API.G_MISS_NUM THEN
1687 	p_x_Header_Payment_rec.trxn_extension_id := p_old_Header_Payment_rec.trxn_extension_id;
1688     END IF;
1689 
1690     IF p_x_Header_Payment_rec.instrument_security_code = FND_API.G_MISS_CHAR THEN
1691 	p_x_Header_Payment_rec.instrument_security_code := p_old_Header_Payment_rec.instrument_security_code;
1692     END IF;
1693     --R12 CC Encryption
1694 
1695 END Complete_Record;
1696 
1697 --  Procedure Convert_Miss_To_Null
1698 
1699 PROCEDURE Convert_Miss_To_Null
1700 (   p_x_Header_Payment_rec  IN OUT NOCOPY  OE_Order_PUB.Header_Payment_Rec_Type
1701 )
1702 IS
1703 
1704 --
1705 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1706 --
1707 BEGIN
1708 
1709     IF p_x_Header_Payment_rec.attribute1 = FND_API.G_MISS_CHAR THEN
1710         p_x_Header_Payment_rec.attribute1 := NULL;
1711     END IF;
1712 
1713     IF p_x_Header_Payment_rec.attribute2 = FND_API.G_MISS_CHAR THEN
1714         p_x_Header_Payment_rec.attribute2 := NULL;
1715     END IF;
1716 
1717     IF p_x_Header_Payment_rec.attribute3 = FND_API.G_MISS_CHAR THEN
1718         p_x_Header_Payment_rec.attribute3 := NULL;
1719     END IF;
1720 
1721     IF p_x_Header_Payment_rec.attribute4 = FND_API.G_MISS_CHAR THEN
1722         p_x_Header_Payment_rec.attribute4 := NULL;
1723     END IF;
1724 
1725     IF p_x_Header_Payment_rec.attribute5 = FND_API.G_MISS_CHAR THEN
1726         p_x_Header_Payment_rec.attribute5 := NULL;
1727     END IF;
1728 
1729     IF p_x_Header_Payment_rec.attribute6 = FND_API.G_MISS_CHAR THEN
1730         p_x_Header_Payment_rec.attribute6 := NULL;
1731     END IF;
1732 
1733     IF p_x_Header_Payment_rec.attribute7 = FND_API.G_MISS_CHAR THEN
1734         p_x_Header_Payment_rec.attribute7 := NULL;
1735     END IF;
1736 
1737     IF p_x_Header_Payment_rec.attribute8 = FND_API.G_MISS_CHAR THEN
1738         p_x_Header_Payment_rec.attribute8 := NULL;
1739     END IF;
1740 
1741     IF p_x_Header_Payment_rec.attribute9 = FND_API.G_MISS_CHAR THEN
1742         p_x_Header_Payment_rec.attribute9 := NULL;
1743     END IF;
1744 
1745     IF p_x_Header_Payment_rec.attribute10 = FND_API.G_MISS_CHAR THEN
1746         p_x_Header_Payment_rec.attribute10 := NULL;
1747     END IF;
1748 
1749     IF p_x_Header_Payment_rec.attribute11 = FND_API.G_MISS_CHAR THEN
1750         p_x_Header_Payment_rec.attribute11 := NULL;
1751     END IF;
1752 
1753     IF p_x_Header_Payment_rec.attribute12 = FND_API.G_MISS_CHAR THEN
1754         p_x_Header_Payment_rec.attribute12 := NULL;
1755     END IF;
1756 
1757     IF p_x_Header_Payment_rec.attribute13 = FND_API.G_MISS_CHAR THEN
1758         p_x_Header_Payment_rec.attribute13 := NULL;
1759     END IF;
1760 
1761     IF p_x_Header_Payment_rec.attribute14 = FND_API.G_MISS_CHAR THEN
1762         p_x_Header_Payment_rec.attribute14 := NULL;
1763     END IF;
1764 
1765     IF p_x_Header_Payment_rec.attribute15 = FND_API.G_MISS_CHAR THEN
1766         p_x_Header_Payment_rec.attribute15 := NULL;
1767     END IF;
1768 
1769     IF p_x_Header_Payment_rec.context = FND_API.G_MISS_CHAR THEN
1770         p_x_Header_Payment_rec.context := NULL;
1771     END IF;
1772 
1773     IF p_x_Header_Payment_rec.created_by = FND_API.G_MISS_NUM THEN
1774         p_x_Header_Payment_rec.created_by := NULL;
1775     END IF;
1776 
1777     IF p_x_Header_Payment_rec.creation_date = FND_API.G_MISS_DATE THEN
1778         p_x_Header_Payment_rec.creation_date := NULL;
1779     END IF;
1780 
1781     IF p_x_Header_Payment_rec.last_updated_by = FND_API.G_MISS_NUM THEN
1782         p_x_Header_Payment_rec.last_updated_by := NULL;
1783     END IF;
1784 
1785     IF p_x_Header_Payment_rec.last_update_date = FND_API.G_MISS_DATE THEN
1786         p_x_Header_Payment_rec.last_update_date := NULL;
1787     END IF;
1788 
1789     IF p_x_Header_Payment_rec.last_update_login = FND_API.G_MISS_NUM THEN
1790         p_x_Header_Payment_rec.last_update_login := NULL;
1791     END IF;
1792 
1793     IF p_x_Header_Payment_rec.check_number = FND_API.G_MISS_CHAR THEN
1794         p_x_Header_Payment_rec.check_number := NULL;
1795     END IF;
1796 
1797     IF p_x_Header_Payment_rec.credit_card_approval_code = FND_API.G_MISS_CHAR THEN
1798         p_x_Header_Payment_rec.credit_card_approval_code := NULL;
1799     END IF;
1800 
1801     IF p_x_Header_Payment_rec.credit_card_approval_date = FND_API.G_MISS_DATE THEN
1802         p_x_Header_Payment_rec.credit_card_approval_date := NULL;
1803     END IF;
1804 
1805     IF p_x_Header_Payment_rec.credit_card_code = FND_API.G_MISS_CHAR THEN
1806         p_x_Header_Payment_rec.credit_card_code := NULL;
1807     END IF;
1808 
1809     IF p_x_Header_Payment_rec.credit_card_expiration_date = FND_API.G_MISS_DATE THEN
1810         p_x_Header_Payment_rec.credit_card_expiration_date := NULL;
1811     END IF;
1812 
1813     IF p_x_Header_Payment_rec.credit_card_holder_name = FND_API.G_MISS_CHAR THEN
1814         p_x_Header_Payment_rec.credit_card_holder_name := NULL;
1815     END IF;
1816 
1817     IF p_x_Header_Payment_rec.credit_card_number = FND_API.G_MISS_CHAR THEN
1818         p_x_Header_Payment_rec.credit_card_number := NULL;
1819     END IF;
1820 
1821     IF p_x_Header_Payment_rec.payment_level_code = FND_API.G_MISS_CHAR THEN
1822         p_x_Header_Payment_rec.payment_level_code := NULL;
1823     END IF;
1824 
1825     IF p_x_Header_Payment_rec.commitment_applied_amount = FND_API.G_MISS_NUM THEN
1826         p_x_Header_Payment_rec.commitment_applied_amount := NULL;
1827     END IF;
1828 
1829     IF p_x_Header_Payment_rec.commitment_interfaced_amount = FND_API.G_MISS_NUM THEN
1830         p_x_Header_Payment_rec.commitment_interfaced_amount := NULL;
1831     END IF;
1832 
1833     IF p_x_Header_Payment_rec.payment_number = FND_API.G_MISS_NUM THEN
1834         p_x_Header_Payment_rec.payment_number := NULL;
1835     END IF;
1836 
1837     IF p_x_Header_Payment_rec.header_id = FND_API.G_MISS_NUM THEN
1838         p_x_Header_Payment_rec.header_id := NULL;
1839     END IF;
1840 
1841     IF p_x_Header_Payment_rec.line_id = FND_API.G_MISS_NUM THEN
1842         p_x_Header_Payment_rec.line_id := NULL;
1843     END IF;
1844 
1845     IF p_x_Header_Payment_rec.payment_amount = FND_API.G_MISS_NUM THEN
1846         p_x_Header_Payment_rec.payment_amount := NULL;
1847     END IF;
1848 
1849     IF p_x_Header_Payment_rec.payment_collection_event = FND_API.G_MISS_CHAR THEN
1850         p_x_Header_Payment_rec.payment_collection_event := NULL;
1851     END IF;
1852 
1853     IF p_x_Header_Payment_rec.defer_payment_processing_flag = FND_API.G_MISS_CHAR THEN
1854         p_x_Header_Payment_rec.defer_payment_processing_flag := NULL;
1855     END IF;
1856 
1857     IF p_x_Header_Payment_rec.payment_trx_id = FND_API.G_MISS_NUM THEN
1858         p_x_Header_Payment_rec.payment_trx_id := NULL;
1859     END IF;
1860 
1861     IF p_x_Header_Payment_rec.payment_type_code = FND_API.G_MISS_CHAR THEN
1862         p_x_Header_Payment_rec.payment_type_code := NULL;
1863     END IF;
1864 
1865     IF p_x_Header_Payment_rec.payment_set_id = FND_API.G_MISS_NUM THEN
1866         p_x_Header_Payment_rec.payment_set_id := NULL;
1867     END IF;
1868 
1869     IF p_x_Header_Payment_rec.prepaid_amount = FND_API.G_MISS_NUM THEN
1870         p_x_Header_Payment_rec.prepaid_amount := NULL;
1871     END IF;
1872 
1873     IF p_x_Header_Payment_rec.program_application_id = FND_API.G_MISS_NUM THEN
1874         p_x_Header_Payment_rec.program_application_id := NULL;
1875     END IF;
1876 
1877     IF p_x_Header_Payment_rec.program_id = FND_API.G_MISS_NUM THEN
1878         p_x_Header_Payment_rec.program_id := NULL;
1879     END IF;
1880 
1881     IF p_x_Header_Payment_rec.program_update_date = FND_API.G_MISS_DATE THEN
1882         p_x_Header_Payment_rec.program_update_date := NULL;
1883     END IF;
1884 
1885     IF p_x_Header_Payment_rec.receipt_method_id = FND_API.G_MISS_NUM THEN
1886         p_x_Header_Payment_rec.receipt_method_id := NULL;
1887     END IF;
1888 
1889     IF p_x_Header_Payment_rec.request_id = FND_API.G_MISS_NUM THEN
1890         p_x_Header_Payment_rec.request_id := NULL;
1891     END IF;
1892 
1893     IF p_x_Header_Payment_rec.tangible_id = FND_API.G_MISS_CHAR THEN
1894         p_x_Header_Payment_rec.tangible_id := NULL;
1895     END IF;
1896 
1897     -- R12 CC Encryption
1898     IF p_x_Header_Payment_rec.trxn_extension_id = FND_API.G_MISS_NUM THEN
1899         p_x_Header_Payment_rec.trxn_extension_id := NULL;
1900     END IF;
1901 
1902     IF p_x_Header_Payment_rec.instrument_security_code = FND_API.G_MISS_CHAR THEN
1903         p_x_Header_Payment_rec.instrument_security_code := NULL;
1904     END IF;
1905     -- R12 CC Encryption
1906 
1907 END Convert_Miss_To_Null;
1908 
1909 --  Procedure Update_Row
1910 
1911 PROCEDURE Update_Row
1912 (   p_Header_Payment_rec            IN OUT NOCOPY OE_Order_PUB.Header_Payment_Rec_Type
1913 )
1914 IS
1915     l_lock_control   NUMBER;
1916  --added for notification framework
1917       l_index    NUMBER;
1918       l_return_status VARCHAR2(1);
1919 
1920 
1921 --
1922 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1923 --
1924 BEGIN
1925 
1926     SELECT lock_control
1927     INTO   l_lock_control
1928     FROM   OE_PAYMENTS
1929     WHERE  payment_number = p_Header_Payment_rec.payment_number
1930     AND    header_id = p_Header_Payment_rec.header_id
1931     AND    line_id IS NULL;
1932 
1933     l_lock_control := l_lock_control + 1;
1934 
1935    --calling notification framework to update global picture
1936    --check code release level first. Notification framework is at Pack H level
1937     IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
1938        IF l_debug_level  > 0 THEN
1939            oe_debug_pub.add(  'JFC: payment_number' || P_HEADER_Payment_REC.payment_number ) ;
1940        END IF;
1941 -- Sasi: this should be added by Renga
1942    /*    OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists => True,
1943                     p_Hdr_pmt_rec =>p_header_Payment_rec,
1944                     p_hdr_pmt_id => p_header_Payment_rec.payment_number,
1945                     x_index => l_index,
1946                     x_return_status => l_return_status);*/
1947        IF l_debug_level  > 0 THEN
1948            oe_debug_pub.add(  'UPDATE_GLOBAL RETURN STATUS FROM OE_HEADER_Payment_UTIL.UPDATE_ROW IS: ' || L_RETURN_STATUS ) ;
1949        END IF;
1950        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1951           IF l_debug_level  > 0 THEN
1952               oe_debug_pub.add(  'EVENT NOTIFY - UNEXPECTED ERROR' ) ;
1953           END IF;
1954           IF l_debug_level  > 0 THEN
1955               oe_debug_pub.add(  'EXITING OE_HEADER_Payment_UTIL.UPDATE_ROW' , 1 ) ;
1956           END IF;
1957 	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1958        ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1959           IF l_debug_level  > 0 THEN
1960               oe_debug_pub.add(  'UPDATE_GLOBAL_PICTURE ERROR IN OE_HEADER_Payment_UTIL.UPDATE_ROW' ) ;
1961           END IF;
1962          IF l_debug_level  > 0 THEN
1963              oe_debug_pub.add(  'EXITING OE_HEADER_Payment_UTIL.UPDATE_ROW' , 1 ) ;
1964          END IF;
1965 	 RAISE FND_API.G_EXC_ERROR;
1966        END IF;
1967    END IF; /*code_release_level*/
1968     -- notification framework end
1969 
1970     UPDATE  OE_PAYMENTS
1971     SET     ATTRIBUTE1                     = p_Header_Payment_rec.attribute1
1972     ,       ATTRIBUTE2                     = p_Header_Payment_rec.attribute2
1973     ,       ATTRIBUTE3                     = p_Header_Payment_rec.attribute3
1974     ,       ATTRIBUTE4                     = p_Header_Payment_rec.attribute4
1975     ,       ATTRIBUTE5                     = p_Header_Payment_rec.attribute5
1976     ,       ATTRIBUTE6                     = p_Header_Payment_rec.attribute6
1977     ,       ATTRIBUTE7                     = p_Header_Payment_rec.attribute7
1978     ,       ATTRIBUTE8                     = p_Header_Payment_rec.attribute8
1979     ,       ATTRIBUTE9                     = p_Header_Payment_rec.attribute9
1980     ,       ATTRIBUTE10                    = p_Header_Payment_rec.attribute10
1981     ,       ATTRIBUTE11                    = p_Header_Payment_rec.attribute11
1982     ,       ATTRIBUTE12                    = p_Header_Payment_rec.attribute12
1983     ,       ATTRIBUTE13                    = p_Header_Payment_rec.attribute13
1984     ,       ATTRIBUTE14                    = p_Header_Payment_rec.attribute14
1985     ,       ATTRIBUTE15                    = p_Header_Payment_rec.attribute15
1986     ,       CONTEXT                        = p_Header_Payment_rec.context
1987     ,       CREATED_BY                     = p_Header_Payment_rec.created_by
1988     ,       CREATION_DATE                  = p_Header_Payment_rec.creation_date
1989     ,       LAST_UPDATED_BY                = p_Header_Payment_rec.last_updated_by
1990     ,       LAST_UPDATE_DATE               = p_Header_Payment_rec.last_update_date
1991     ,       LAST_UPDATE_LOGIN              = p_Header_Payment_rec.last_update_login
1992     ,       CHECK_NUMBER                   = p_Header_Payment_rec.check_number
1993     /*,       CREDIT_CARD_APPROVAL_CODE      = p_Header_Payment_rec.credit_card_approval_code  --R12 CC Encryption
1994     ,       CREDIT_CARD_APPROVAL_DATE      = p_Header_Payment_rec.credit_card_approval_date
1995     ,       CREDIT_CARD_CODE               = p_Header_Payment_rec.credit_card_code
1996     ,       CREDIT_CARD_EXPIRATION_DATE    = p_Header_Payment_rec.credit_card_expiration_date
1997     ,       CREDIT_CARD_HOLDER_NAME        = p_Header_Payment_rec.credit_card_holder_name
1998     ,       CREDIT_CARD_NUMBER             = p_Header_Payment_rec.credit_card_number*/         --R12 CC Encryption
1999     ,       PAYMENT_LEVEL_CODE             = p_Header_Payment_rec.payment_level_code
2000     ,       COMMITMENT_APPLIED_AMOUNT      = p_Header_Payment_rec.commitment_applied_amount
2001     ,       COMMITMENT_INTERFACED_AMOUNT   = p_Header_Payment_rec.commitment_interfaced_amount
2002     ,       PAYMENT_NUMBER                 = p_Header_Payment_rec.payment_number
2003     ,       HEADER_ID                      = p_Header_Payment_rec.header_id
2004     ,       LINE_ID                        = p_Header_Payment_rec.line_id
2005     ,       PAYMENT_AMOUNT                 = p_Header_Payment_rec.payment_amount
2006     ,       PAYMENT_COLLECTION_EVENT       = p_Header_Payment_rec.payment_collection_event
2007     ,       PAYMENT_TRX_ID                 = p_Header_Payment_rec.payment_trx_id
2008     ,       PAYMENT_TYPE_CODE              = p_Header_Payment_rec.payment_type_code
2009     ,       PAYMENT_SET_ID                 = p_Header_Payment_rec.payment_set_id
2010     ,       PREPAID_AMOUNT                 = p_Header_Payment_rec.prepaid_amount
2011     ,       PROGRAM_APPLICATION_ID         = p_Header_Payment_rec.program_application_id
2012     ,       PROGRAM_ID                     = p_Header_Payment_rec.program_id
2013     ,       PROGRAM_UPDATE_DATE            = p_Header_Payment_rec.program_update_date
2014     ,       RECEIPT_METHOD_ID              = p_Header_Payment_rec.receipt_method_id
2015     ,       REQUEST_ID                     = p_Header_Payment_rec.request_id
2016     --,       TANGIBLE_ID                    = p_Header_Payment_rec.tangible_id --R12 CC Encryption
2017     ,       DEFER_PAYMENT_PROCESSING_FLAG = p_Header_Payment_rec.defer_payment_processing_flag
2018     ,       TRXN_EXTENSION_ID              = p_Header_Payment_rec.trxn_extension_id
2019     ,       LOCK_CONTROL                   = l_lock_control
2020     WHERE   PAYMENT_NUMBER = p_Header_Payment_rec.payment_number
2021     AND     HEADER_ID   = p_Header_Payment_rec.header_id
2022     AND     LINE_ID IS NULL;
2023 
2024 
2025     p_Header_Payment_rec.lock_control :=   l_lock_control;
2026 
2027 EXCEPTION
2028 
2029     WHEN OTHERS THEN
2030 
2031         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2032         THEN
2033             oe_msg_pub.Add_Exc_Msg
2034             (   G_PKG_NAME
2035             ,   'Update_Row'
2036             );
2037         END IF;
2038 
2039         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2040 
2041 END Update_Row;
2042 
2043 --  Procedure Insert_Row
2044 
2045 PROCEDURE Insert_Row
2046 (   p_Header_Payment_rec       IN OUT NOCOPY  OE_Order_PUB.Header_Payment_Rec_Type
2047 )
2048 IS
2049     l_lock_control   NUMBER:= 1;
2050     l_index          NUMBER;
2051     l_return_status VARCHAR2(1);
2052     --
2053     l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2054     --
2055 BEGIN
2056    IF l_debug_level  > 0 THEN
2057        oe_debug_pub.add(  'ENTERING OE_HEADER_Payment_UTIL.INSERT_ROW' , 1 ) ;
2058    END IF;
2059 
2060     INSERT  INTO OE_PAYMENTS
2061     (       ATTRIBUTE1
2062     ,       ATTRIBUTE2
2063     ,       ATTRIBUTE3
2064     ,       ATTRIBUTE4
2065     ,       ATTRIBUTE5
2066     ,       ATTRIBUTE6
2067     ,       ATTRIBUTE7
2068     ,       ATTRIBUTE8
2069     ,       ATTRIBUTE9
2070     ,       ATTRIBUTE10
2071     ,       ATTRIBUTE11
2072     ,       ATTRIBUTE12
2073     ,       ATTRIBUTE13
2074     ,       ATTRIBUTE14
2075     ,       ATTRIBUTE15
2076     ,       CONTEXT
2077     ,       CREATED_BY
2078     ,       CREATION_DATE
2079     ,       LAST_UPDATED_BY
2080     ,       LAST_UPDATE_DATE
2081     ,       LAST_UPDATE_LOGIN
2082     ,       CHECK_NUMBER
2083     /*,       CREDIT_CARD_APPROVAL_CODE --R12 CC Encryption
2084     ,       CREDIT_CARD_APPROVAL_DATE
2085     ,       CREDIT_CARD_CODE
2086     ,       CREDIT_CARD_EXPIRATION_DATE
2087     ,       CREDIT_CARD_HOLDER_NAME
2088     ,       CREDIT_CARD_NUMBER*/
2089     ,       PAYMENT_LEVEL_CODE
2090     ,       COMMITMENT_APPLIED_AMOUNT
2091     ,       COMMITMENT_INTERFACED_AMOUNT
2092     ,       PAYMENT_NUMBER
2093     ,       HEADER_ID
2094     ,       LINE_ID
2095     ,       PAYMENT_AMOUNT
2096     ,       PAYMENT_COLLECTION_EVENT
2097     ,       PAYMENT_TRX_ID
2098     ,       PAYMENT_TYPE_CODE
2099     ,       PAYMENT_SET_ID
2100     ,       PREPAID_AMOUNT
2101     ,       PROGRAM_APPLICATION_ID
2102     ,       PROGRAM_ID
2103     ,       PROGRAM_UPDATE_DATE
2104     ,       RECEIPT_METHOD_ID
2105     ,       REQUEST_ID
2106     --,       TANGIBLE_ID
2107     ,       DEFER_PAYMENT_PROCESSING_FLAG
2108     ,       TRXN_EXTENSION_ID
2109     ,       LOCK_CONTROL
2110     )
2111     VALUES
2112     (       p_Header_Payment_rec.attribute1
2113     ,       p_Header_Payment_rec.attribute2
2114     ,       p_Header_Payment_rec.attribute3
2115     ,       p_Header_Payment_rec.attribute4
2116     ,       p_Header_Payment_rec.attribute5
2117     ,       p_Header_Payment_rec.attribute6
2118     ,       p_Header_Payment_rec.attribute7
2119     ,       p_Header_Payment_rec.attribute8
2120     ,       p_Header_Payment_rec.attribute9
2121     ,       p_Header_Payment_rec.attribute10
2122     ,       p_Header_Payment_rec.attribute11
2123     ,       p_Header_Payment_rec.attribute12
2124     ,       p_Header_Payment_rec.attribute13
2125     ,       p_Header_Payment_rec.attribute14
2126     ,       p_Header_Payment_rec.attribute15
2127     ,       p_Header_Payment_rec.context
2128     ,       p_Header_Payment_rec.created_by
2129     ,       p_Header_Payment_rec.creation_date
2130     ,       p_Header_Payment_rec.last_updated_by
2131     ,       p_Header_Payment_rec.last_update_date
2132     ,       p_Header_Payment_rec.last_update_login
2133     ,       p_Header_Payment_rec.check_number
2134     /*,       p_Header_Payment_rec.credit_card_approval_code --R12 CC Encryption
2135     ,       p_Header_Payment_rec.credit_card_approval_date
2136     ,       p_Header_Payment_rec.credit_card_code
2137     ,       p_Header_Payment_rec.credit_card_expiration_date
2138     ,       p_Header_Payment_rec.credit_card_holder_name
2139     ,       p_Header_Payment_rec.credit_card_number*/ --R12 CC Encryption
2140     ,       p_Header_Payment_rec.payment_level_code
2141     ,       p_Header_Payment_rec.commitment_applied_amount
2142     ,       p_Header_Payment_rec.commitment_interfaced_amount
2143     ,       p_Header_Payment_rec.payment_number
2144     ,       p_Header_Payment_rec.header_id
2145     ,       p_Header_Payment_rec.line_id
2146     ,       p_Header_Payment_rec.payment_amount
2147     ,       p_Header_Payment_rec.payment_collection_event
2148     ,       p_Header_Payment_rec.payment_trx_id
2149     ,       p_Header_Payment_rec.payment_type_code
2150     ,       p_Header_Payment_rec.payment_set_id
2151     ,       p_Header_Payment_rec.prepaid_amount
2152     ,       p_Header_Payment_rec.program_application_id
2153     ,       p_Header_Payment_rec.program_id
2154     ,       p_Header_Payment_rec.program_update_date
2155     ,       p_Header_Payment_rec.receipt_method_id
2156     ,       p_Header_Payment_rec.request_id
2157     --,       p_Header_Payment_rec.tangible_id --R12 CC Encryption
2158     ,       p_Header_Payment_rec.defer_payment_processing_flag
2159     ,       p_Header_Payment_rec.trxn_extension_id
2160     ,       l_lock_control
2161     );
2162 
2163     p_Header_Payment_rec.lock_control :=   l_lock_control;
2164 
2165     --calling notification framework to update global picture
2166   --check code release level first. Notification framework is at Pack H level
2167    IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
2168 /*
2169       OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists => True,
2170                     p_old_hdr_pmt_rec => NULL,
2171                     p_Hdr_pmt_rec =>p_header_Payment_rec,
2172                     p_hdr_pmt_id => p_header_Payment_rec.payment_number,
2173                     x_index => l_index,
2174                     x_return_status => l_return_status); */
2175        IF l_debug_level  > 0 THEN
2176            oe_debug_pub.add(  'UPDATE_GLOBAL RETURN STATUS FROM OE_HEADER_Payment_UTIL.INSERT_ROW IS: ' || L_RETURN_STATUS ) ;
2177        END IF;
2178        IF l_debug_level  > 0 THEN
2179            oe_debug_pub.add(  'RETURNED INDEX IS: ' || L_INDEX , 1 ) ;
2180        END IF;
2181 
2182       IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2183         IF l_debug_level  > 0 THEN
2184             oe_debug_pub.add(  'EVENT NOTIFY - UNEXPECTED ERROR' ) ;
2185         END IF;
2186         IF l_debug_level  > 0 THEN
2187             oe_debug_pub.add(  'EXITING OE_HEADER_Payment_UTIL.INSERT_ROW' , 1 ) ;
2188         END IF;
2189 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2190       ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2191         IF l_debug_level  > 0 THEN
2192             oe_debug_pub.add(  'UPDATE_GLOBAL_PICTURE ERROR IN OE_HEADER_Payment_UTIL.INSERT_ROW' ) ;
2193         END IF;
2194         IF l_debug_level  > 0 THEN
2195             oe_debug_pub.add(  'EXITING OE_HEADER_Payment_UTIL.INSERT_ROW' , 1 ) ;
2196         END IF;
2197 	RAISE FND_API.G_EXC_ERROR;
2198       END IF;
2199    END IF; /*code_release_level*/
2200  -- notification framework end
2201 
2202     IF l_debug_level  > 0 THEN
2203         oe_debug_pub.add(  'EXITING OE_HEADER_Payment_UTIL.INSERT_ROW' , 1 ) ;
2204     END IF;
2205 
2206 EXCEPTION
2207 
2208     WHEN OTHERS THEN
2209         oe_debug_pub.add('Sql error'||sqlerrm);
2210         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2211         THEN
2212             oe_msg_pub.Add_Exc_Msg
2213             (   G_PKG_NAME
2214             ,   'Insert_Row'
2215             );
2216         END IF;
2217 
2218         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2219 
2220 END Insert_Row;
2221 
2222 --  Procedure Delete_Row
2223 
2224 PROCEDURE Delete_Row
2225 (   p_payment_number               IN  NUMBER :=
2226                                         FND_API.G_MISS_NUM
2227 ,   p_header_id                     IN  NUMBER :=
2228                                         FND_API.G_MISS_NUM
2229 )
2230 IS
2231 l_return_status		VARCHAR2(30);
2232 l_msg_count number := 0;
2233 l_msg_data VARCHAR2(2000) := NULL;
2234 l_pmt_collection_event	VARCHAR2(30);
2235 l_prepay_count		NUMBER := 0;
2236 
2237 
2238 CURSOR payment IS
2239 	SELECT payment_number, payment_collection_event,trxn_extension_id,payment_type_code --R12 CC Encryption
2240 	FROM OE_PAYMENTS
2241 	WHERE   HEADER_ID = p_header_id
2242         AND     line_id is NULL;
2243  -- added for notification framework
2244         l_new_header_Payment_rec     OE_Order_PUB.Header_Payment_Rec_Type;
2245         l_index           NUMBER;
2246         --
2247         l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2248         --R12 CC Encryption
2249 	l_trxn_extension_id  NUMBER;
2250 	l_invoice_to_org_id  NUMBER;
2251 	l_payment_type_code VARCHAR2(80);
2252 	--R12 CC Encryption
2253 BEGIN
2254   IF l_debug_level  > 0 THEN
2255       oe_debug_pub.add(  'ENTERING OE_HEADER_Payment_UTIL.DELETE_ROW' , 1 ) ;
2256   END IF;
2257 
2258   IF p_header_id <> FND_API.G_MISS_NUM AND
2259      nvl(p_payment_number, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
2260   THEN
2261 
2262     FOR l_pmt IN payment LOOP
2263 
2264     --added notification framework
2265    --check code release level first. Notification framework is at Pack H level
2266       IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
2267       /* Set the operation on the record so that globals are updated as well */
2268         l_new_header_Payment_rec.operation := OE_GLOBALS.G_OPR_DELETE;
2269         l_new_header_Payment_rec.header_id := p_header_id;
2270         l_new_header_Payment_rec.payment_number := l_pmt.payment_number;
2271         l_new_header_Payment_rec.payment_collection_event := l_pmt.payment_collection_event;
2272 	--l_new_header_Payment_rec.payment_type_code := l_pmt.
2273 	--l_new_header_Payment_rec.trxn_extension_id := l_pmt.trxn_extension_id; --R12 CC Encryption Verify
2274 
2275 /*        OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists => True,
2276                     p_Hdr_pmt_rec =>l_new_header_Payment_rec,
2277                     p_hdr_pmt_id => payment_number,
2278                     x_index => l_index,
2279                     x_return_status => l_return_status); */
2280 
2281          IF l_debug_level  > 0 THEN
2282              oe_debug_pub.add(  'UPDATE_GLOBAL RETURN STATUS FROM OE_HEADER_Payment_UTIL.DELETE_ROW IS: ' || L_RETURN_STATUS ) ;
2283          END IF;
2284          IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2285            IF l_debug_level  > 0 THEN
2286                oe_debug_pub.add(  'EVENT NOTIFY - UNEXPECTED ERROR' ) ;
2287            END IF;
2288            IF l_debug_level  > 0 THEN
2289                oe_debug_pub.add(  'EXITING OE_HEADER_Payment_UTIL.DELETE_ROW' , 1 ) ;
2290            END IF;
2291  	   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2292         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2293            IF l_debug_level  > 0 THEN
2294                oe_debug_pub.add(  'UPDATE_GLOBAL_PICTURE ERROR IN OE_HEADER_Payment_UTIL.DELETE_ROW' ) ;
2295            END IF;
2296             IF l_debug_level  > 0 THEN
2297                 oe_debug_pub.add(  'EXITING OE_HEADER_Payment_UTIL.DELETE_ROW' , 1 ) ;
2298             END IF;
2299 	    RAISE FND_API.G_EXC_ERROR;
2300          END IF;
2301        END IF; /*code_release_level*/
2302      -- notification framework end
2303         --R12 CC Encryption
2304 	--Calling delete API of Oracle Payments only if the payment
2305 	--type is credit card ach or direct debit.
2306 	IF l_pmt.payment_type_code in ('CREDIT_CARD','ACH','DIRECT_DEBIT') THEN
2307 	       --Passing the invoice to org id as null to Delete_Payment_trxn API
2308 	       --as the old invoice to org id needs to be passed to this api in
2309 	       --case of deleting the payments due to bill-to site change.
2310 
2311 		/*select invoice_to_org_id into l_invoice_to_org_id  --Verify
2312 		from oe_order_headers_all where
2313 		header_id = p_header_id;*/
2314 		IF l_debug_level  > 0 THEN
2315 			oe_debug_pub.add('Deleting trxn id...'||l_pmt.trxn_extension_id);
2316 			oe_debug_pub.add('Invoice to org.'||l_invoice_to_org_id);
2317 		END IF;
2318 
2319 		OE_PAYMENT_TRXN_UTIL.Delete_Payment_Trxn
2320 		(p_header_id     => p_header_id,
2321 		 p_line_id       => null,
2322 		 p_payment_number=> null,
2323 		 P_site_use_id	 => l_invoice_to_org_id,
2324 		 p_trxn_extension_id	=> l_pmt.trxn_extension_id,
2325 		 x_return_status    =>l_return_status,
2326 		 x_msg_count        => l_msg_count,
2327 		 x_msg_data        => l_msg_data);
2328 
2329 		    IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2330 			  IF l_debug_level  > 0 THEN
2331 			      oe_debug_pub.add(  'Delete Payment at Header - UNEXPECTED ERROR' ) ;
2332 			      oe_debug_pub.add('Error message'||sqlerrm);
2333 			      oe_debug_pub.add('Msg data'||l_msg_data);
2334 			  END IF;
2335 			  IF l_debug_level  > 0 THEN
2336 			      oe_debug_pub.add(  'EXITING OE_HEADER_Payment_UTIL.DELETE_ROW' , 1 ) ;
2337 			  END IF;
2338 			  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2339 			ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2340 			  IF l_debug_level  > 0 THEN
2341 			      oe_debug_pub.add(  'Delete Payment at Header - OE_HEADER_Payment_UTIL.DELETE_ROW' ) ;
2342 			      oe_debug_pub.add('Error message'||sqlerrm);
2343 			      oe_debug_pub.add('Msg data'||l_msg_data);
2344 			  END IF;
2345 			  IF l_debug_level  > 0 THEN
2346 			      oe_debug_pub.add(  'EXITING OE_HEADER_Payment_UTIL.DELETE_ROW' , 1 ) ;
2347 			  END IF;
2348 			  RAISE FND_API.G_EXC_ERROR;
2349 		    END IF;
2350 	END IF;
2351 	--R12 CC Encryption
2352     END LOOP;
2353 
2354       OE_Delayed_Requests_Pvt.Delete_Reqs_for_deleted_entity(
2355         p_entity_code  => OE_GLOBALS.G_ENTITY_HEADER_PAYMENT,
2356         p_entity_id     => p_header_id,
2357         x_return_status => l_return_status
2358         );
2359 
2360     DELETE  FROM OE_PAYMENTS
2361     WHERE   HEADER_ID = p_header_id
2362     AND     LINE_ID IS NULL;
2363 
2364 --3382262
2365     IF l_debug_level  > 0 THEN
2366         oe_debug_pub.add('1: after executing delete statement against oe_payments - before delete_payment_at_header');
2367     END IF;
2368     Delete_Payment_at_header(p_header_id => p_header_id,
2369                                    x_return_status => l_return_status,
2370                                    x_msg_count => l_msg_count,
2371                                    x_msg_data => l_msg_data);
2372 --3382262
2373     -- Release all Prepayment holds;
2374     IF l_debug_level  > 0 THEN
2375        oe_debug_pub.add(  'Releasing all payment related holds.' , 3 ) ;
2376     END IF;
2377 
2378     OE_Prepayment_PVT.Release_Prepayment_Hold
2379                                 ( p_header_id     => p_header_id
2380                                 , p_msg_count     => l_msg_count
2381                                 , p_msg_data      => l_msg_data
2382                                 , p_return_status => l_return_status
2383                                 );
2384 
2385     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2386        RAISE FND_API.G_EXC_ERROR;
2387     ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2388        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2389     END IF;
2390 
2391     -- release any authorization related holds.
2392     OE_Verify_Payment_PUB.Release_Verify_Hold
2393                                  ( p_header_id     => p_header_id
2394                                  , p_epayment_hold => 'Y'
2395                                  , p_msg_count     => l_msg_count
2396                                  , p_msg_data      => l_msg_data
2397                                  , p_return_status => l_return_status
2398                                  );
2399     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2400        RAISE FND_API.G_EXC_ERROR;
2401     ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2402        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2403     END IF;
2404 
2405 
2406   ELSIF p_header_id <> FND_API.G_MISS_NUM AND
2407         p_payment_number <> FND_API.G_MISS_NUM THEN
2408      --added notification framework
2409    --check code release level first. Notification framework is at Pack H level
2410      IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110508' THEN
2411       /* Set the operation on the record so that globals are updated as well */
2412         l_new_header_Payment_rec.operation := OE_GLOBALS.G_OPR_DELETE;
2413         l_new_header_Payment_rec.payment_number := p_payment_number;
2414         l_new_header_Payment_rec.header_id := p_header_id;
2415 /*       OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists => True,
2416                     p_Hdr_pmt_rec =>l_new_header_Payment_rec,
2417                     p_hdr_pmt_id => p_payment_number,
2418                     x_index => l_index,
2419                     x_return_status => l_return_status); */
2420 
2421     --ER#7479609 start
2422     Delete_PaymentType_Hold
2423     (
2424        p_header_id => p_header_id
2425     ,  p_payment_number => p_payment_number
2426     ,  x_msg_count      => l_msg_count
2427     ,  x_msg_data       => l_msg_data
2428     ,  x_return_status   => l_return_status
2429     );
2430     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2431        RAISE FND_API.G_EXC_ERROR;
2432     ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2433        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2434     END IF;
2435    --ER#7479609 end
2436 
2437 
2438        IF l_debug_level  > 0 THEN
2439            oe_debug_pub.add(  'UPDATE_GLOBAL RETURN STATUS FROM OE_HEADER_Payment_UTIL.DELETE_ROW IS: ' || L_RETURN_STATUS ) ;
2440        END IF;
2441 
2442         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2443           IF l_debug_level  > 0 THEN
2444               oe_debug_pub.add(  'EVENT NOTIFY - UNEXPECTED ERROR' ) ;
2445           END IF;
2446           IF l_debug_level  > 0 THEN
2447               oe_debug_pub.add(  'EXITING OE_HEADER_Payment_UTIL.DELETE_ROW' , 1 ) ;
2448           END IF;
2449     	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2450         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2451           IF l_debug_level  > 0 THEN
2452               oe_debug_pub.add(  'UPDATE_GLOBAL_PICTURE ERROR IN OE_HEADER_Payment_UTIL.DELETE_ROW' ) ;
2453           END IF;
2454           IF l_debug_level  > 0 THEN
2455               oe_debug_pub.add(  'EXITING OE_HEADER_Payment_UTIL.DELETE_ROW' , 1 ) ;
2456           END IF;
2457 	  RAISE FND_API.G_EXC_ERROR;
2458         END IF;
2459       END IF; /*code_release_level*/
2460     -- notification framework end
2461 
2462      OE_Delayed_Requests_Pvt.Delete_Reqs_for_deleted_entity(
2463         p_entity_code  => OE_GLOBALS.G_ENTITY_HEADER_Payment,
2464         p_entity_id     => p_header_id,
2465         x_return_status => l_return_status
2466         );
2467 
2468     BEGIN
2469       SELECT payment_collection_event,trxn_extension_id,payment_type_code --R12 CC Encryption
2470       INTO   l_pmt_collection_event,l_trxn_extension_id,l_payment_type_code
2471       FROM   oe_payments
2472       WHERE  payment_number = p_payment_number
2473       AND    header_id = p_header_id
2474       AND    line_id is null;
2475     EXCEPTION WHEN NO_DATA_FOUND THEN
2476       null;
2477     END;
2478     --R12 CC Encryption
2479     --Calling delete API of Oracle Payments only if the payment
2480     --type is credit card ach or direct debit.
2481     IF l_payment_type_code in ('CREDIT_CARD','ACH','DIRECT_DEBIT') THEN
2482 	       --Passing the invoice to org id as null to Delete_Payment_trxn API
2483 	       --as the old invoice to org id needs to be passed to this api in
2484 	       --case of deleting the payments due to bill-to site change.
2485 
2486 	       /*select invoice_to_org_id into l_invoice_to_org_id
2487 	       from oe_order_headers_all where header_id = p_header_id;*/
2488 		IF l_debug_level  > 0 THEN
2489 			oe_debug_pub.add('Deleting trxn id...'||l_trxn_extension_id);
2490 			oe_debug_pub.add('Invoice to org.'||l_invoice_to_org_id);
2491 		END IF;
2492 
2493 		OE_PAYMENT_TRXN_UTIL.Delete_Payment_Trxn
2494 		(p_header_id     => p_header_id,
2495 		 p_line_id       => null,
2496 		 p_payment_number=> p_payment_number,
2497 		 P_site_use_id	 => l_invoice_to_org_id,
2498 		 p_trxn_extension_id	=> l_trxn_extension_id,
2499 		 x_return_status    =>l_return_status,
2500 		 x_msg_count        => l_msg_count,
2501 		 x_msg_data        => l_msg_data);
2502 
2503 
2504 	    IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2505 		  IF l_debug_level  > 0 THEN
2506 		      oe_debug_pub.add(  '2:Delete Payment at Header - UNEXPECTED ERROR' ) ;
2507 		  END IF;
2508 		  IF l_debug_level  > 0 THEN
2509 		      oe_debug_pub.add(  'EXITING OE_HEADER_Payment_UTIL.DELETE_ROW' , 1 ) ;
2510 		  END IF;
2511 		  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2512 		ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2513 		  IF l_debug_level  > 0 THEN
2514 		      oe_debug_pub.add(  '2:Delete Payment at Header - OE_HEADER_Payment_UTIL.DELETE_ROW' ) ;
2515 		  END IF;
2516 		  IF l_debug_level  > 0 THEN
2517 		      oe_debug_pub.add(  'EXITING OE_HEADER_Payment_UTIL.DELETE_ROW' , 1 ) ;
2518 		  END IF;
2519 		  RAISE FND_API.G_EXC_ERROR;
2520 	    END IF;
2521     END IF;
2522     --R12 CC Encryption
2523     DELETE  FROM OE_PAYMENTS
2524     WHERE   HEADER_ID = p_header_id
2525     AND     PAYMENT_NUMBER = p_payment_number
2526     AND     LINE_ID IS NULL
2527     ;
2528 
2529 --3382262
2530     IF l_debug_level  > 0 THEN
2531         oe_debug_pub.add('2: after executing delete statement against oe_payments - before delete_payment_at_header');
2532     END IF;
2533     Delete_Payment_at_header(p_header_id => p_header_id,
2534                                    x_return_status => l_return_status,
2535                                    x_msg_count => l_msg_count,
2536                                    x_msg_data => l_msg_data);
2537 --3382262
2538 
2539 
2540     IF l_pmt_collection_event = 'INVOICE' THEN
2541       -- release any authorization related holds.
2542       IF l_debug_level  > 0 THEN
2543          oe_debug_pub.add(  'releasing all authorization related holds.', 3 ) ;
2544       END IF;
2545       OE_Verify_Payment_PUB.Release_Verify_Hold
2546                                  ( p_header_id     => p_header_id
2547                                  , p_epayment_hold => 'Y'
2548                                  , p_msg_count     => l_msg_count
2549                                  , p_msg_data      => l_msg_data
2550                                  , p_return_status => l_return_status
2551                                  );
2552        IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2553           RAISE FND_API.G_EXC_ERROR;
2554        ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2555           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2556        END IF;
2557 
2558      ELSE
2559        -- the payment being deleted is a prepayment.
2560        BEGIN
2561          SELECT count(*)
2562          INTO   l_prepay_count
2563          FROM   oe_payments
2564          WHERE  nvl(payment_collection_event, 'PREPAY') = 'PREPAY'
2565          AND    header_id = p_header_id
2566          AND    line_id is null;
2567        EXCEPTION WHEN NO_DATA_FOUND THEN
2568          l_prepay_count := 0;
2569        END;
2570 
2571        IF l_prepay_count = 0 THEN
2572          -- Release all Prepayment holds if no prepayment exists any more.
2573          IF l_debug_level  > 0 THEN
2574             oe_debug_pub.add(  'releasing all prepayment related holds.', 3 ) ;
2575          END IF;
2576 
2577          OE_Prepayment_PVT.Release_Prepayment_Hold
2578                                 ( p_header_id     => p_header_id
2579                                 , p_msg_count     => l_msg_count
2580                                 , p_msg_data      => l_msg_data
2581                                 , p_return_status => l_return_status
2582                                 );
2583 
2584           IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2585              RAISE FND_API.G_EXC_ERROR;
2586           ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2587              RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2588           END IF;
2589         END IF;
2590 
2591      END IF;
2592 
2593      oe_debug_pub.add('exiting oe_header_Payment_util.delete_row ',1);
2594 
2595   END IF;
2596 
2597 EXCEPTION
2598 
2599     WHEN OTHERS THEN
2600 
2601         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2602         THEN
2603             oe_msg_pub.Add_Exc_Msg
2604             (   G_PKG_NAME
2605             ,   'Delete_Row'
2606             );
2607         END IF;
2608 
2609         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2610 
2611 END Delete_Row;
2612 
2613 --  Procedure Query_Row
2614 PROCEDURE Query_Row
2615 (   p_payment_number               IN  NUMBER,
2616     p_header_id                    IN  NUMBER,
2617    x_Header_Payment_rec  IN OUT NOCOPY OE_Order_PUB.Header_Payment_Rec_Type
2618 )
2619 IS
2620 x_Header_Payment_tbl OE_Order_PUB.Header_Payment_Tbl_Type;
2621 CURSOR l_Header_Payment_csr IS
2622     SELECT  ATTRIBUTE1
2623     ,       ATTRIBUTE2
2624     ,       ATTRIBUTE3
2625     ,       ATTRIBUTE4
2626     ,       ATTRIBUTE5
2627     ,       ATTRIBUTE6
2628     ,       ATTRIBUTE7
2629     ,       ATTRIBUTE8
2630     ,       ATTRIBUTE9
2631     ,       ATTRIBUTE10
2632     ,       ATTRIBUTE11
2633     ,       ATTRIBUTE12
2634     ,       ATTRIBUTE13
2635     ,       ATTRIBUTE14
2636     ,       ATTRIBUTE15
2637     ,       CONTEXT
2638     ,       CREATED_BY
2639     ,       CREATION_DATE
2640     ,       LAST_UPDATED_BY
2641     ,       LAST_UPDATE_DATE
2642     ,       LAST_UPDATE_LOGIN
2643     ,       CHECK_NUMBER		--R12 CC Encryption Verify
2644     ,       CREDIT_CARD_APPROVAL_CODE
2645     ,       CREDIT_CARD_APPROVAL_DATE
2646     ,       CREDIT_CARD_CODE
2647     ,       CREDIT_CARD_EXPIRATION_DATE
2648     ,       CREDIT_CARD_HOLDER_NAME
2649     ,       CREDIT_CARD_NUMBER	--R12 CC Encryption Verify
2650     ,       PAYMENT_LEVEL_CODE
2651     ,       COMMITMENT_APPLIED_AMOUNT
2652     ,       COMMITMENT_INTERFACED_AMOUNT
2653     ,       HEADER_ID
2654     ,       LINE_ID
2655     ,       PAYMENT_AMOUNT
2656     ,       PAYMENT_COLLECTION_EVENT
2657     ,       PAYMENT_TRX_ID
2658     ,       PAYMENT_TYPE_CODE
2659     ,       PAYMENT_SET_ID
2660     ,       PREPAID_AMOUNT
2661     ,       PROGRAM_APPLICATION_ID
2662     ,       PROGRAM_ID
2663     ,       PROGRAM_UPDATE_DATE
2664     ,       RECEIPT_METHOD_ID
2665     ,       REQUEST_ID
2666     ,       TANGIBLE_ID --R12 CC Encryption Verify
2667     ,       LOCK_CONTROL
2668     ,       PAYMENT_NUMBER
2669     ,       DEFER_PAYMENT_PROCESSING_FLAG
2670     ,       TRXN_EXTENSION_ID
2671     FROM    OE_PAYMENTS
2672     WHERE ( PAYMENT_NUMBER = p_payment_number
2673     AND     HEADER_ID = p_header_id
2674     AND     LINE_ID IS NULL);
2675 
2676 --
2677 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2678 --R12 CC Encryption Verify
2679 x_bank_account_number VARCHAR2(100);
2680 x_check_number        varchar2(100);
2681 l_return_status      VARCHAR2(30) := NULL ;
2682 l_msg_count          NUMBER := 0 ;
2683 l_msg_data           VARCHAR2(2000) := NULL ;
2684 
2685 --R12 CC Encryption
2686 BEGIN
2687 
2688     --  Loop over fetched records
2689 
2690     FOR l_implicit_rec IN l_Header_Payment_csr LOOP
2691 
2692         x_Header_Payment_rec.attribute1 := l_implicit_rec.ATTRIBUTE1;
2693         x_Header_Payment_rec.attribute2 := l_implicit_rec.ATTRIBUTE2;
2694         x_Header_Payment_rec.attribute3 := l_implicit_rec.ATTRIBUTE3;
2695         x_Header_Payment_rec.attribute4 := l_implicit_rec.ATTRIBUTE4;
2696         x_Header_Payment_rec.attribute5 := l_implicit_rec.ATTRIBUTE5;
2697         x_Header_Payment_rec.attribute6 := l_implicit_rec.ATTRIBUTE6;
2698         x_Header_Payment_rec.attribute7 := l_implicit_rec.ATTRIBUTE7;
2699         x_Header_Payment_rec.attribute8 := l_implicit_rec.ATTRIBUTE8;
2700         x_Header_Payment_rec.attribute9 := l_implicit_rec.ATTRIBUTE9;
2701         x_Header_Payment_rec.attribute10 := l_implicit_rec.ATTRIBUTE10;
2702         x_Header_Payment_rec.attribute11 := l_implicit_rec.ATTRIBUTE11;
2703         x_Header_Payment_rec.attribute12 := l_implicit_rec.ATTRIBUTE12;
2704         x_Header_Payment_rec.attribute13 := l_implicit_rec.ATTRIBUTE13;
2705         x_Header_Payment_rec.attribute14 := l_implicit_rec.ATTRIBUTE14;
2706         x_Header_Payment_rec.attribute15 := l_implicit_rec.ATTRIBUTE15;
2707         x_Header_Payment_rec.context   := l_implicit_rec.CONTEXT;
2708         x_Header_Payment_rec.created_by := l_implicit_rec.CREATED_BY;
2709         x_Header_Payment_rec.creation_date := l_implicit_rec.CREATION_DATE;
2710         x_Header_Payment_rec.last_updated_by := l_implicit_rec.LAST_UPDATED_BY;
2711         x_Header_Payment_rec.last_update_date := l_implicit_rec.LAST_UPDATE_DATE;
2712         x_Header_Payment_rec.last_update_login := l_implicit_rec.LAST_UPDATE_LOGIN;
2713         --R12 CC Encryption Verify
2714 	x_Header_Payment_rec.check_number := l_implicit_rec.CHECK_NUMBER;
2715         x_Header_Payment_rec.credit_card_approval_code := l_implicit_rec.CREDIT_CARD_APPROVAL_CODE;
2716         x_Header_Payment_rec.credit_card_approval_date := l_implicit_rec.CREDIT_CARD_APPROVAL_DATE;
2717         x_Header_Payment_rec.credit_card_code := l_implicit_rec.CREDIT_CARD_CODE;
2718         x_Header_Payment_rec.credit_card_expiration_date := l_implicit_rec.CREDIT_CARD_EXPIRATION_DATE;
2719         x_Header_Payment_rec.credit_card_holder_name := l_implicit_rec.CREDIT_CARD_HOLDER_NAME;
2720         x_Header_Payment_rec.credit_card_number := l_implicit_rec.CREDIT_CARD_NUMBER;
2721 	--R12 CC Encryption Verify
2722         x_Header_Payment_rec.payment_level_code := l_implicit_rec.PAYMENT_LEVEL_CODE;
2723         x_Header_Payment_rec.commitment_applied_amount := l_implicit_rec.COMMITMENT_APPLIED_AMOUNT;
2724         x_Header_Payment_rec.commitment_interfaced_amount := l_implicit_rec.COMMITMENT_INTERFACED_AMOUNT;
2725         x_Header_Payment_rec.header_id := l_implicit_rec.HEADER_ID;
2726         x_Header_Payment_rec.line_id   := l_implicit_rec.LINE_ID;
2727         x_Header_Payment_rec.payment_amount := l_implicit_rec.PAYMENT_AMOUNT;
2728         x_Header_Payment_rec.payment_collection_event := l_implicit_rec.PAYMENT_COLLECTION_EVENT;
2729         x_Header_Payment_rec.payment_trx_id := l_implicit_rec.PAYMENT_TRX_ID;
2730         x_Header_Payment_rec.payment_type_code := l_implicit_rec.PAYMENT_TYPE_CODE;
2731         x_Header_Payment_rec.payment_set_id := l_implicit_rec.PAYMENT_SET_ID;
2732         x_Header_Payment_rec.prepaid_amount := l_implicit_rec.PREPAID_AMOUNT;
2733         x_Header_Payment_rec.program_application_id := l_implicit_rec.PROGRAM_APPLICATION_ID;
2734         x_Header_Payment_rec.program_id := l_implicit_rec.PROGRAM_ID;
2735         x_Header_Payment_rec.program_update_date := l_implicit_rec.PROGRAM_UPDATE_DATE;
2736         x_Header_Payment_rec.receipt_method_id := l_implicit_rec.RECEIPT_METHOD_ID;
2737         x_Header_Payment_rec.request_id := l_implicit_rec.REQUEST_ID;
2738         x_Header_Payment_rec.tangible_id := l_implicit_rec.TANGIBLE_ID;  --R12 CC Encryption Verify
2739         x_Header_Payment_rec.lock_control   := l_implicit_rec.LOCK_CONTROL;
2740         x_Header_Payment_rec.payment_number   := l_implicit_rec.PAYMENT_NUMBER;
2741         x_Header_Payment_rec.defer_payment_processing_flag := l_implicit_rec.defer_payment_processing_flag;
2742 	--R12 CC Encryption
2743 	x_Header_Payment_rec.trxn_extension_id := l_implicit_rec.trxn_extension_id;
2744 	--Populating the header payment record by querying the Payments tables
2745 	--as they are no longer stored in OM tables
2746 	IF l_implicit_rec.trxn_extension_id is not null then
2747 		OE_Payment_Trxn_Util.Get_Payment_Trxn_Info(p_header_id => p_header_id,
2748 		 P_trxn_extension_id => x_Header_Payment_rec.trxn_extension_id,
2749 		 P_payment_type_code => x_Header_Payment_rec.payment_type_code ,
2750 		 X_credit_card_number => x_Header_Payment_rec.credit_card_number,
2751 		 X_credit_card_holder_name => x_Header_Payment_rec.credit_card_holder_name,
2752 		 X_credit_card_expiration_date => x_Header_Payment_rec.credit_card_expiration_date,
2753 		 X_credit_card_code => x_Header_Payment_rec.credit_card_code,
2754 		 X_credit_card_approval_code => x_Header_Payment_rec.credit_card_approval_code,
2755 		 X_credit_card_approval_date => x_Header_Payment_rec.credit_card_approval_date,
2756 		 X_bank_account_number => X_bank_account_number,
2757 		 --X_check_number => X_check_number	,
2758 		 X_instrument_security_code => x_Header_Payment_rec.instrument_security_code,
2759 		 X_instrument_id	=> x_Header_Payment_rec.cc_instrument_id,
2760 		 X_instrument_assignment_id => x_Header_Payment_rec.cc_instrument_assignment_id,
2761 		 X_return_status => l_return_status,
2762 		 X_msg_count => l_msg_count,
2763 		 X_msg_data => l_msg_data);
2764 	END IF;
2765 	--R12 CC Encryption
2766 	x_Header_Payment_tbl(x_Header_Payment_tbl.COUNT + 1) := x_Header_Payment_rec;
2767 
2768     END LOOP;
2769         x_Header_Payment_rec := x_Header_Payment_tbl(1);
2770 
2771     --  PK sent and no rows found
2772 
2773     IF
2774     (p_payment_number IS NOT NULL
2775      AND
2776      p_payment_number <> FND_API.G_MISS_NUM)
2777     AND
2778     (p_header_id IS NOT NULL
2779      AND
2780      p_header_id <> FND_API.G_MISS_NUM)
2781     AND
2782     (x_Header_Payment_tbl.COUNT = 0)
2783     THEN
2784         RAISE NO_DATA_FOUND;
2785     END IF;
2786 
2787 
2788 EXCEPTION
2789 
2790     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2791 
2792         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2793 
2794     WHEN OTHERS THEN
2795 
2796         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2797         THEN
2798             oe_msg_pub.Add_Exc_Msg
2799             (   G_PKG_NAME
2800             ,   'Query_Row'
2801             );
2802         END IF;
2803 
2804         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2805 
2806 END Query_Row;
2807 
2808 
2809 
2810 --  Procedure Query_Rows
2811 
2812 --
2813 
2814 Procedure Query_Rows
2815 (   p_payment_number        IN  NUMBER :=
2816                                         FND_API.G_MISS_NUM
2817 ,   p_header_id                     IN  NUMBER :=
2818                                         FND_API.G_MISS_NUM
2819 ,  x_header_Payment_tbl   IN OUT NOCOPY OE_Order_PUB.Header_Payment_Tbl_Type
2820 )
2821 IS
2822 l_Header_Payment_rec          OE_Order_PUB.Header_Payment_Rec_Type;
2823 
2824 CURSOR l_Header_Payment_csr IS
2825     SELECT  ATTRIBUTE1
2826     ,       ATTRIBUTE2
2827     ,       ATTRIBUTE3
2828     ,       ATTRIBUTE4
2829     ,       ATTRIBUTE5
2830     ,       ATTRIBUTE6
2831     ,       ATTRIBUTE7
2832     ,       ATTRIBUTE8
2833     ,       ATTRIBUTE9
2834     ,       ATTRIBUTE10
2835     ,       ATTRIBUTE11
2836     ,       ATTRIBUTE12
2837     ,       ATTRIBUTE13
2838     ,       ATTRIBUTE14
2839     ,       ATTRIBUTE15
2840     ,       CONTEXT
2841     ,       CREATED_BY
2842     ,       CREATION_DATE
2843     ,       LAST_UPDATED_BY
2844     ,       LAST_UPDATE_DATE
2845     ,       LAST_UPDATE_LOGIN
2846     ,       CHECK_NUMBER		--R12 CC Encryption Verify
2847     ,       CREDIT_CARD_APPROVAL_CODE
2848     ,       CREDIT_CARD_APPROVAL_DATE
2849     ,       CREDIT_CARD_CODE
2850     ,       CREDIT_CARD_EXPIRATION_DATE
2851     ,       CREDIT_CARD_HOLDER_NAME
2852     ,       CREDIT_CARD_NUMBER	--R12 CC Encryption Verify
2853     ,       PAYMENT_LEVEL_CODE
2854     ,       COMMITMENT_APPLIED_AMOUNT
2855     ,       COMMITMENT_INTERFACED_AMOUNT
2856     ,       HEADER_ID
2857     ,       LINE_ID
2858     ,       PAYMENT_AMOUNT
2859     ,       PAYMENT_COLLECTION_EVENT
2860     ,       PAYMENT_TRX_ID
2861     ,       PAYMENT_TYPE_CODE
2862     ,       PAYMENT_SET_ID
2863     ,       PREPAID_AMOUNT
2864     ,       PROGRAM_APPLICATION_ID
2865     ,       PROGRAM_ID
2866     ,       PROGRAM_UPDATE_DATE
2867     ,       RECEIPT_METHOD_ID
2868     ,       REQUEST_ID
2869     ,       TANGIBLE_ID		--R12 CC Encryption Verify
2870     ,       LOCK_CONTROL
2871     ,       PAYMENT_NUMBER
2872     ,       DEFER_PAYMENT_PROCESSING_FLAG
2873     ,       TRXN_EXTENSION_ID
2874     FROM    OE_PAYMENTS
2875     WHERE HEADER_ID = p_header_id
2876     AND     LINE_ID IS NULL
2877 	;
2878 
2879 --
2880 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2881 --
2882 --R12 CC Encryption Verify
2883 x_bank_account_number VARCHAR2(100); --bug 5170754
2884 x_check_number        varchar2(100);
2885 l_return_status      VARCHAR2(30) := NULL ;
2886 l_msg_count          NUMBER := 0 ;
2887 l_msg_data           VARCHAR2(2000) := NULL ;
2888 --R12 CC Encryption
2889 
2890 BEGIN
2891 
2892     --  Loop over fetched records
2893 
2894     FOR l_implicit_rec IN l_Header_Payment_csr LOOP
2895 
2896         l_Header_Payment_rec.attribute1 := l_implicit_rec.ATTRIBUTE1;
2897         l_Header_Payment_rec.attribute2 := l_implicit_rec.ATTRIBUTE2;
2898         l_Header_Payment_rec.attribute3 := l_implicit_rec.ATTRIBUTE3;
2899         l_Header_Payment_rec.attribute4 := l_implicit_rec.ATTRIBUTE4;
2900         l_Header_Payment_rec.attribute5 := l_implicit_rec.ATTRIBUTE5;
2901         l_Header_Payment_rec.attribute6 := l_implicit_rec.ATTRIBUTE6;
2902         l_Header_Payment_rec.attribute7 := l_implicit_rec.ATTRIBUTE7;
2903         l_Header_Payment_rec.attribute8 := l_implicit_rec.ATTRIBUTE8;
2904         l_Header_Payment_rec.attribute9 := l_implicit_rec.ATTRIBUTE9;
2905         l_Header_Payment_rec.attribute10 := l_implicit_rec.ATTRIBUTE10;
2906         l_Header_Payment_rec.attribute11 := l_implicit_rec.ATTRIBUTE11;
2907         l_Header_Payment_rec.attribute12 := l_implicit_rec.ATTRIBUTE12;
2908         l_Header_Payment_rec.attribute13 := l_implicit_rec.ATTRIBUTE13;
2909         l_Header_Payment_rec.attribute14 := l_implicit_rec.ATTRIBUTE14;
2910         l_Header_Payment_rec.attribute15 := l_implicit_rec.ATTRIBUTE15;
2911         l_Header_Payment_rec.context   := l_implicit_rec.CONTEXT;
2912         l_Header_Payment_rec.created_by := l_implicit_rec.CREATED_BY;
2913         l_Header_Payment_rec.creation_date := l_implicit_rec.CREATION_DATE;
2914         l_Header_Payment_rec.last_updated_by := l_implicit_rec.LAST_UPDATED_BY;
2915         l_Header_Payment_rec.last_update_date := l_implicit_rec.LAST_UPDATE_DATE;
2916         l_Header_Payment_rec.last_update_login := l_implicit_rec.LAST_UPDATE_LOGIN;
2917         --R12 CC Encryption Verify
2918 	l_Header_Payment_rec.check_number := l_implicit_rec.CHECK_NUMBER;
2919         l_Header_Payment_rec.credit_card_approval_code := l_implicit_rec.CREDIT_CARD_APPROVAL_CODE;
2920         l_Header_Payment_rec.credit_card_approval_date := l_implicit_rec.CREDIT_CARD_APPROVAL_DATE;
2921         l_Header_Payment_rec.credit_card_code := l_implicit_rec.CREDIT_CARD_CODE;
2922         l_Header_Payment_rec.credit_card_expiration_date := l_implicit_rec.CREDIT_CARD_EXPIRATION_DATE;
2923         l_Header_Payment_rec.credit_card_holder_name := l_implicit_rec.CREDIT_CARD_HOLDER_NAME;
2924         l_Header_Payment_rec.credit_card_number := l_implicit_rec.CREDIT_CARD_NUMBER;
2925 	--R12 CC Encryption Verify
2926         l_Header_Payment_rec.payment_level_code := l_implicit_rec.PAYMENT_LEVEL_CODE;
2927         l_Header_Payment_rec.commitment_applied_amount := l_implicit_rec.COMMITMENT_APPLIED_AMOUNT;
2928         l_Header_Payment_rec.commitment_interfaced_amount := l_implicit_rec.COMMITMENT_INTERFACED_AMOUNT;
2929         l_Header_Payment_rec.header_id := l_implicit_rec.HEADER_ID;
2930         l_Header_Payment_rec.line_id   := l_implicit_rec.LINE_ID;
2931         l_Header_Payment_rec.payment_amount := l_implicit_rec.PAYMENT_AMOUNT;
2932         l_Header_Payment_rec.payment_collection_event := l_implicit_rec.PAYMENT_COLLECTION_EVENT;
2933         l_Header_Payment_rec.payment_trx_id := l_implicit_rec.PAYMENT_TRX_ID;
2934         l_Header_Payment_rec.payment_type_code := l_implicit_rec.PAYMENT_TYPE_CODE;
2935         l_Header_Payment_rec.payment_set_id := l_implicit_rec.PAYMENT_SET_ID;
2936         l_Header_Payment_rec.prepaid_amount := l_implicit_rec.PREPAID_AMOUNT;
2937         l_Header_Payment_rec.program_application_id := l_implicit_rec.PROGRAM_APPLICATION_ID;
2938         l_Header_Payment_rec.program_id := l_implicit_rec.PROGRAM_ID;
2939         l_Header_Payment_rec.program_update_date := l_implicit_rec.PROGRAM_UPDATE_DATE;
2940         l_Header_Payment_rec.receipt_method_id := l_implicit_rec.RECEIPT_METHOD_ID;
2941         l_Header_Payment_rec.request_id := l_implicit_rec.REQUEST_ID;
2942         l_Header_Payment_rec.tangible_id := l_implicit_rec.TANGIBLE_ID;  --R12 CC Encryption Verify
2943         l_Header_Payment_rec.lock_control   := l_implicit_rec.LOCK_CONTROL;
2944         l_Header_Payment_rec.payment_number   := l_implicit_rec.PAYMENT_NUMBER;
2945         l_Header_Payment_rec.defer_payment_processing_flag := l_implicit_rec.DEFER_PAYMENT_PROCESSING_FLAG;
2946 	--R12 CC Encryption
2947 	l_Header_Payment_rec.trxn_extension_id := l_implicit_rec.trxn_extension_id;
2948 	--Populating the header payment record by querying the Payments tables
2949 	--as they are no longer stored in OM tables
2950 	IF l_implicit_rec.trxn_extension_id is not null then
2951 		OE_Payment_Trxn_Util.Get_Payment_Trxn_Info(p_header_id => p_header_id,
2952 		 P_trxn_extension_id => l_Header_Payment_rec.trxn_extension_id,
2953 		 P_payment_type_code => l_Header_Payment_rec.payment_type_code ,
2954 		 X_credit_card_number => l_Header_Payment_rec.credit_card_number,
2955 		 X_credit_card_holder_name => l_Header_Payment_rec.credit_card_holder_name,
2956 		 X_credit_card_expiration_date => l_Header_Payment_rec.credit_card_expiration_date,
2957 		 X_credit_card_code => l_Header_Payment_rec.credit_card_code,
2958 		 X_credit_card_approval_code => l_Header_Payment_rec.credit_card_approval_code,
2959 		 X_credit_card_approval_date => l_Header_Payment_rec.credit_card_approval_date,
2960 		 X_bank_account_number => X_bank_account_number,
2961 		 --X_check_number => X_check_number	,
2962 		 X_instrument_security_code => l_Header_Payment_rec.instrument_security_code,
2963 		 X_instrument_id	=> l_Header_Payment_rec.cc_instrument_id,
2964 		 X_instrument_assignment_id => l_Header_Payment_rec.cc_instrument_assignment_id,
2965 		 X_return_status => l_return_status,
2966 		 X_msg_count => l_msg_count,
2967 		 X_msg_data => l_msg_data);
2968 	END IF;
2969 	--R12 CC Encryption
2970 
2971 	x_Header_Payment_tbl(x_Header_Payment_tbl.COUNT + 1) := l_Header_Payment_rec;
2972 
2973     END LOOP;
2974 
2975     --  Return fetched table
2976 
2977 
2978 EXCEPTION
2979 
2980     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2981 
2982         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2983 
2984     WHEN OTHERS THEN
2985 
2986         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2987         THEN
2988             oe_msg_pub.Add_Exc_Msg
2989             (   G_PKG_NAME
2990             ,   'Query_Rows'
2991             );
2992         END IF;
2993 
2994         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2995 
2996 END Query_Rows;
2997 
2998 --  Procedure       lock_Row
2999 --
3000 
3001 PROCEDURE Lock_Row
3002 (   x_return_status                 OUT NOCOPY VARCHAR2
3003 ,   p_x_Header_Payment_rec IN OUT NOCOPY  OE_Order_PUB.Header_Payment_Rec_Type
3004 ,   p_payment_number               IN  NUMBER
3005 ,   p_header_id                    IN  NUMBER
3006 )
3007 IS
3008 l_payment_number	      NUMBER;
3009 l_header_id     	      NUMBER;
3010 l_Header_Payment_rec          OE_Order_PUB.Header_Payment_Rec_Type;
3011 l_lock_control                NUMBER;
3012 --
3013 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3014 --
3015 BEGIN
3016 
3017     IF l_debug_level  > 0 THEN
3018         oe_debug_pub.add(  'ENTERING OE_HEADER_Payment_UTIL.LOCK_ROW' , 1 ) ;
3019     END IF;
3020 
3021     SAVEPOINT Lock_Row;
3022 
3023     l_lock_control := NULL;
3024 
3025     -- Retrieve the primary key.
3026     IF p_payment_number <> FND_API.G_MISS_NUM AND
3027        p_header_id <> FND_API.G_MISS_NUM THEN
3028         l_payment_number := p_payment_number;
3029         l_header_id := p_header_id;
3030     ELSE
3031         l_payment_number := p_x_header_Payment_rec.payment_number;
3032         l_header_id := p_x_header_Payment_rec.header_id;
3033         l_lock_control    := p_x_header_Payment_rec.lock_control;
3034     END IF;
3035 
3036    SELECT  payment_number
3037     INTO   l_payment_number
3038     FROM   oe_payments
3039     WHERE  payment_number = l_payment_number
3040     AND    header_id = l_header_id
3041     AND    line_id is null
3042     FOR UPDATE NOWAIT;
3043 
3044     IF l_debug_level  > 0 THEN
3045         oe_debug_pub.add(  'SELECTED FOR UPDATE' , 1 ) ;
3046     END IF;
3047 
3048     OE_Header_Payment_Util.Query_Row
3049 	(p_payment_number    => l_payment_number
3050 	,p_header_id         => l_header_id
3051 	,x_header_Payment_rec => p_x_header_Payment_rec );
3052 
3053 
3054     -- If lock_control is null / missing, then return the locked record.
3055 
3056     IF l_lock_control is null OR
3057        l_lock_control <> FND_API.G_MISS_NUM THEN
3058 
3059         --  Set return status
3060         x_return_status                := FND_API.G_RET_STS_SUCCESS;
3061         p_x_header_Payment_rec.return_status       := FND_API.G_RET_STS_SUCCESS;
3062 
3063         RETURN;
3064 
3065     END IF;
3066 
3067     --  Row locked. If the whole record is passed, then
3068     --  Compare IN attributes to DB attributes.
3069 
3070     IF  OE_GLOBALS.Equal(p_x_Header_Payment_rec.lock_control,
3071                          l_lock_control)
3072     THEN
3073 
3074         --  Row has not changed. Set out parameter.
3075 
3076         p_x_Header_Payment_rec           := l_Header_Payment_rec;
3077 
3078         --  Set return status
3079 
3080         x_return_status                := FND_API.G_RET_STS_SUCCESS;
3081         p_x_Header_Payment_rec.return_status := FND_API.G_RET_STS_SUCCESS;
3082 
3083     ELSE
3084 
3085         --  Row has changed by another user.
3086 
3087         x_return_status                := FND_API.G_RET_STS_ERROR;
3088         p_x_Header_Payment_rec.return_status := FND_API.G_RET_STS_ERROR;
3089 
3090         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
3091         THEN
3092 
3093             -- Release the lock
3094 	    ROLLBACK TO Lock_Row;
3095 
3096             FND_MESSAGE.SET_NAME('ONT','OE_LOCK_ROW_CHANGED');
3097             oe_msg_pub.Add;
3098 
3099         END IF;
3100 
3101     END IF;
3102 
3103 EXCEPTION
3104 
3105     WHEN NO_DATA_FOUND THEN
3106 
3107         x_return_status                := FND_API.G_RET_STS_ERROR;
3108         p_x_Header_Payment_rec.return_status := FND_API.G_RET_STS_ERROR;
3109 
3110         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
3111         THEN
3112 
3113             FND_MESSAGE.SET_NAME('ONT','OE_LOCK_ROW_DELETED');
3114             oe_msg_pub.Add;
3115 
3116         END IF;
3117     WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
3118 
3119         x_return_status                := FND_API.G_RET_STS_ERROR;
3120         p_x_Header_Payment_rec.return_status := FND_API.G_RET_STS_ERROR;
3121 
3122         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
3123         THEN
3124 
3125             FND_MESSAGE.SET_NAME('ONT','OE_LOCK_ROW_ALREADY_LOCKED');
3126             oe_msg_pub.Add;
3127 
3128         END IF;
3129     WHEN OTHERS THEN
3130 
3131         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
3132         p_x_Header_Payment_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3133 
3134         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3135         THEN
3136             oe_msg_pub.Add_Exc_Msg
3137             (   G_PKG_NAME
3138             ,   'Lock_Row'
3139             );
3140         END IF;
3141 
3142 END Lock_Row;
3143 
3144 PROCEDURE Lock_Rows
3145 (   p_payment_number        IN  NUMBER :=
3146                                         FND_API.G_MISS_NUM
3147 ,   p_header_id              IN  NUMBER :=
3148                                         FND_API.G_MISS_NUM
3149 ,   x_header_Payment_tbl     OUT NOCOPY OE_Order_PUB.header_Payment_Tbl_Type
3150 ,   x_return_status          OUT NOCOPY VARCHAR2
3151  )
3152 IS
3153   CURSOR lock_hdr_Payments(p_header_id  NUMBER) IS
3154   SELECT payment_number
3155   FROM   oe_payments
3156   WHERE  header_id = p_header_id
3157   AND    line_id is NULL
3158     FOR UPDATE NOWAIT;
3159 
3160   l_payment_number    NUMBER;
3161   --
3162   l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3163   --
3164 BEGIN
3165 
3166     IF l_debug_level  > 0 THEN
3167         oe_debug_pub.add(  'ENTERING OE_HEADER_PaymentS_UTIL.LOCK_ROWS' , 1 ) ;
3168     END IF;
3169 /*
3170     IF (p_payment_number IS NOT NULL AND
3171         p_payment_number <> FND_API.G_MISS_NUM) AND
3172        (p_header_id IS NOT NULL AND
3173         p_header_id <> FND_API.G_MISS_NUM)
3174     THEN
3175       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3176       THEN
3177         OE_MSG_PUB.Add_Exc_Msg
3178         (   G_PKG_NAME
3179           , 'Lock Rows'
3180           , 'Keys are mutually exclusive: payment_number = '||
3181              p_payment_number || ', header_id = '|| p_header_id );
3182       END IF;
3183 
3184       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3185 
3186     END IF;
3187 */
3188    IF p_payment_number <> FND_API.G_MISS_NUM AND
3189       p_header_id <> FND_API.G_MISS_NUM THEN
3190 
3191      SELECT payment_number
3192      INTO   l_payment_number
3193      FROM   OE_PAYMENTS
3194      WHERE  payment_number   = p_payment_number
3195      AND    header_id = p_header_id
3196      AND line_id is NULL
3197      FOR UPDATE NOWAIT;
3198 
3199    ELSE
3200 
3201    BEGIN
3202 
3203      IF p_header_id <> FND_API.G_MISS_NUM THEN
3204 
3205        SAVEPOINT LOCK_ROWS;
3206        OPEN lock_hdr_Payments(p_header_id);
3207 
3208        LOOP
3209          FETCH lock_hdr_Payments INTO l_payment_number;
3210          EXIT WHEN lock_hdr_Payments%NOTFOUND;
3211        END LOOP;
3212 
3213        CLOSE lock_hdr_Payments;
3214 
3215      END IF;
3216 
3217    EXCEPTION
3218      WHEN OTHERS THEN
3219        ROLLBACK TO LOCK_ROWS;
3220 
3221        IF lock_hdr_Payments%ISOPEN THEN
3222          CLOSE lock_hdr_Payments;
3223        END IF;
3224 
3225        RAISE;
3226    END;
3227 
3228    END IF;
3229 
3230    -- locked all
3231 
3232    OE_Header_Payment_Util.Query_Rows
3233      (p_payment_number          => p_payment_number
3234      ,p_header_id                => p_header_id
3235      ,x_header_Payment_tbl       => x_header_Payment_tbl
3236      );
3237 
3238    x_return_status  := FND_API.G_RET_STS_SUCCESS;
3239 
3240    IF l_debug_level  > 0 THEN
3241        oe_debug_pub.add(  'EXITING OE_HEADER_PaymentS_UTIL.LOCK_ROWS' , 1 ) ;
3242    END IF;
3243 
3244 EXCEPTION
3245    WHEN NO_DATA_FOUND THEN
3246 
3247      x_return_status                := FND_API.G_RET_STS_ERROR;
3248 
3249      IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
3250      THEN
3251        fnd_message.set_name('ONT','OE_LOCK_ROW_DELETED');
3252        OE_MSG_PUB.Add;
3253      END IF;
3254 
3255     WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
3256 
3257       x_return_status                := FND_API.G_RET_STS_ERROR;
3258       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
3259       THEN
3260         fnd_message.set_name('ONT','OE_LOCK_ROW_ALREADY_LOCKED');
3261         OE_MSG_PUB.Add;
3262       END IF;
3263 
3264     WHEN OTHERS THEN
3265 
3266         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
3267 
3268       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3269       THEN
3270         OE_MSG_PUB.Add_Exc_Msg
3271         (   G_PKG_NAME
3272          ,   'Lock_Rows'
3273         );
3274       END IF;
3275 
3276 END Lock_Rows;
3277 
3278 
3279 --  Function Get_Values
3280 
3281 FUNCTION Get_Values
3282 (   p_Header_Payment_rec          IN        OE_Order_PUB.Header_Payment_Rec_Type
3283 ,   p_old_Header_Payment_rec        IN  OE_Order_PUB.Header_Payment_Rec_Type :=
3284                                         OE_Order_PUB.G_MISS_HEADER_Payment_REC
3285 )RETURN OE_Order_PUB.Header_Payment_Val_Rec_Type
3286 IS
3287 l_Header_Payment_val_rec      OE_Order_PUB.Header_Payment_Val_Rec_Type;
3288 --
3289 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3290 --
3291 BEGIN
3292 
3293     IF (p_Header_Payment_rec.payment_collection_event IS NULL OR
3294         p_Header_Payment_rec.payment_collection_event <> FND_API.G_MISS_CHAR) AND
3295         NOT OE_GLOBALS.Equal(p_Header_Payment_rec.payment_collection_event,
3296         p_old_Header_Payment_rec.payment_collection_event)
3297     THEN
3298         l_Header_Payment_val_rec.payment_collection_event_name := OE_Id_To_Value.payment_collection_event_name
3299         (   p_payment_collection_event        => p_Header_Payment_rec.payment_collection_event
3300         );
3301     END IF;
3302 
3303     IF (p_Header_Payment_rec.receipt_method_id IS NULL OR
3304         p_Header_Payment_rec.receipt_method_id <> FND_API.G_MISS_NUM) AND
3305         NOT OE_GLOBALS.Equal(p_Header_Payment_rec.receipt_method_id,
3306         p_old_Header_Payment_rec.receipt_method_id)
3307     THEN
3308         l_Header_Payment_val_rec.receipt_method := OE_Id_To_Value.Receipt_Method
3309         (   p_receipt_method                => p_Header_Payment_rec.receipt_method_id
3310         );
3311     END IF;
3312 
3313     IF (p_Header_Payment_rec.payment_type_code IS NULL OR
3314         p_Header_Payment_rec.payment_type_code <> FND_API.G_MISS_CHAR) AND
3315         NOT OE_GLOBALS.Equal(p_Header_Payment_rec.payment_type_code,
3316         p_old_Header_Payment_rec.payment_type_code)
3317     THEN
3318         l_Header_Payment_val_rec.payment_type := OE_Id_To_Value.payment_type
3319         (   p_payment_type_code => p_Header_Payment_rec.payment_type_code
3320         );
3321     END IF;
3322 
3323     RETURN l_Header_Payment_val_rec;
3324 
3325 END Get_Values;
3326 
3327 --  Procedure Get_Ids
3328 
3329 PROCEDURE Get_Ids
3330 (   p_x_Header_Payment_rec IN OUT NOCOPY  OE_Order_PUB.Header_Payment_Rec_Type
3331 ,   p_Header_Payment_val_rec        IN  OE_Order_PUB.Header_Payment_Val_Rec_Type
3332 )
3333 IS
3334 
3335 --
3336 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3337 --
3338 BEGIN
3339 
3340     --  initialize  return_status.
3341 
3342     p_x_Header_Payment_rec.return_status := FND_API.G_RET_STS_SUCCESS;
3343 
3344     --  initialize l_Header_Payment_rec.
3345 
3346 
3347 
3348     IF  p_Header_Payment_val_rec.payment_collection_event_name <> FND_API.G_MISS_CHAR
3349     THEN
3350 
3351         IF p_x_Header_Payment_rec.payment_collection_event  <> FND_API.G_MISS_CHAR THEN
3352 
3353             IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS)
3354             THEN
3355 
3356                 FND_MESSAGE.SET_NAME('ONT','OE_BOTH_VAL_AND_ID_EXIST');
3357                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','payment_collection_event_name');
3358                 oe_msg_pub.Add;
3359 
3360             END IF;
3361 
3362         ELSE
3363 
3364             p_x_Header_Payment_rec.payment_collection_event := OE_Value_To_Id.payment_collection_event_name
3365             (   p_payment_collection_event     => p_Header_Payment_val_rec.payment_collection_event_name
3366             );
3367 
3368             IF p_x_Header_Payment_rec.payment_collection_event = FND_API.G_MISS_CHAR THEN
3369                p_x_Header_Payment_rec.return_status := FND_API.G_RET_STS_ERROR;
3370             END IF;
3371 
3372         END IF;
3373 
3374     END IF;
3375 
3376     IF  p_Header_Payment_val_rec.payment_type <> FND_API.G_MISS_CHAR
3377     THEN
3378 
3379         IF p_x_Header_Payment_rec.payment_type_code <> FND_API.G_MISS_CHAR THEN
3380 
3381 
3382             IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS)
3383             THEN
3384 
3385                 FND_MESSAGE.SET_NAME('ONT','OE_BOTH_VAL_AND_ID_EXIST');
3386                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','payment_type');
3387                 oe_msg_pub.Add;
3388 
3389             END IF;
3390 
3391         ELSE
3392 
3393             p_x_Header_Payment_rec.payment_type_code := OE_Value_To_Id.payment_type
3394             (   p_payment_type => p_Header_Payment_val_rec.payment_type
3395             );
3396 
3397             IF p_x_Header_Payment_rec.payment_type_code = FND_API.G_MISS_CHAR THEN
3398                 p_x_Header_Payment_rec.return_status := FND_API.G_RET_STS_ERROR;
3399             END IF;
3400 
3401         END IF;
3402 
3403     END IF;
3404 
3405 
3406     IF  p_Header_Payment_val_rec.receipt_method <> FND_API.G_MISS_CHAR
3407     THEN
3408 
3409         IF p_x_Header_Payment_rec.receipt_method_id <> FND_API.G_MISS_NUM THEN
3410 
3411 
3412             IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS)
3413             THEN
3414 
3415                 FND_MESSAGE.SET_NAME('ONT','OE_BOTH_VAL_AND_ID_EXIST');
3416                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Receipt_Method');
3417                 oe_msg_pub.Add;
3418 
3419             END IF;
3420 
3421         ELSE
3422 
3423             p_x_Header_Payment_rec.receipt_method_id := OE_Value_To_Id.Receipt_Method
3424             (   p_receipt_method => p_Header_Payment_val_rec.receipt_method
3425             );
3426 
3427             IF p_x_Header_Payment_rec.receipt_method_id = FND_API.G_MISS_NUM THEN
3428                 p_x_Header_Payment_rec.return_status := FND_API.G_RET_STS_ERROR;
3429             END IF;
3430 
3431         END IF;
3432 
3433     END IF;
3434 
3435 
3436 
3437 END Get_Ids;
3438 
3439 PROCEDURE Pre_Write_Process
3440   ( p_x_header_Payment_rec IN OUT NOCOPY OE_ORDER_PUB.header_Payment_rec_type,
3441     p_old_header_Payment_rec IN OE_ORDER_PUB.header_Payment_rec_type := OE_ORDER_PUB.G_MISS_HEADER_PAYMENT_REC )
3442     IS
3443 l_return_status varchar2(30);
3444 l_ordered_date DATE;
3445 l_transactional_curr_code VARCHAR2(30);
3446 l_invoice_to_org_id NUMBER;
3447 l_bank_acct_id                 NUMBER;
3448 l_bank_acct_uses_id            NUMBER;
3449 l_hdr_inv_to_cust_id           NUMBER;
3450 l_trx_date		       DATE;
3451 --
3452 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3453 --
3454 --R12 CC Encryption
3455 l_update_card_flag	       VARCHAR2(1) := 'N';
3456 l_trxn_extension_id	       NUMBER;
3457 l_msg_count		       NUMBER;
3458 l_msg_data		       VARCHAR2(2000);
3459 l_exists_flag		       VARCHAR2(1) := 'N';
3460 l_payment_exists	       VARCHAR2(1) := 'N';
3461 l_old_trxn_extension_id	       NUMBER;
3462 --R12 CC Encryption
3463 
3464 BEGIN
3465 
3466   IF l_debug_level > 0 THEN
3467      oe_debug_pub.add(  'entering oe_header_payment_util.Pre_Write_Process. payment_type_code'||p_x_header_Payment_rec.payment_type_code);
3468   END IF;
3469   --R12 CC Encryption
3470   --Querying the invoice to org id before checking the payment type
3471   --as it is needed for both credit card and check payments.
3472 	select ordered_date, transactional_curr_code, invoice_to_org_id
3473 	into l_ordered_date, l_transactional_curr_code, l_invoice_to_org_id
3474 	from oe_order_headers
3475 	where header_id=p_x_header_Payment_rec.header_id;
3476 
3477 	IF l_debug_level > 0 THEN
3478 	   oe_debug_pub.add(  'l_transactional_curr_code:'||l_transactional_curr_code||':l_invoice_to_org_id:'||l_invoice_to_org_id);
3479 	   oe_debug_pub.add(' old trxn extn id ksurendr'||p_old_header_Payment_rec.trxn_extension_id);
3480 	END IF;
3481 
3482   --For payment types like Credit Card, ACH and Direct Debit, the processing
3483   --is handled in OE_PAYMENT_TRXN_UTIL package. So need to modify this part
3484   --to call the appropriate procedures for create, update or copy.
3485   IF p_x_header_Payment_rec.payment_type_code IN ('CREDIT_CARD','ACH','DIRECT_DEBIT')  THEN
3486 	--Verify
3487 
3488 	BEGIN
3489 	   SELECT customer_id
3490 	   INTO   l_hdr_inv_to_cust_id
3491 	   FROM   oe_invoice_to_orgs_v
3492 	   WHERE  organization_id = l_invoice_to_org_id;
3493 	EXCEPTION
3494 	    WHEN OTHERS THEN
3495 	      IF l_debug_level  > 0 THEN
3496 		 oe_debug_pub.add(  'IN OTHERS EXCEPTION ( OE_INVOICE_TO_ORGS_V ) '||SQLERRM , 1 ) ;
3497 	      END IF;
3498 	END;
3499 
3500 	IF l_debug_level  > 0 THEN
3501 	 oe_debug_pub.add('l_hdr_inv_to_cust_id -->' || l_hdr_inv_to_cust_id );
3502 	 oe_debug_pub.add('p_site_use_id --->'||l_invoice_to_org_id);
3503 	 oe_debug_pub.add('cc number : ' || p_x_header_payment_rec.credit_card_number );
3504 	 oe_debug_pub.add('cc name : ' || p_x_header_payment_rec.credit_card_holder_name );
3505 	 oe_debug_pub.add('exp date : ' || to_char(p_x_header_payment_rec.credit_card_expiration_date, 'DD-MON-YYYY') );
3506 	 oe_debug_pub.add('instr id...'||p_x_header_payment_rec.cc_instrument_id);
3507 	 oe_debug_pub.add('instr assgn id'||p_x_header_payment_rec.cc_instrument_assignment_id);
3508 	 oe_debug_pub.add('Operation...'||p_x_header_Payment_rec.operation);
3509 	 oe_debug_pub.add('trxn extn id'||p_x_header_Payment_rec.trxn_extension_id);
3510 	 oe_debug_pub.add('New name'||p_x_header_Payment_rec.credit_card_holder_name);
3511 	 oe_debug_pub.add('Old name'||p_old_header_Payment_rec.credit_card_holder_name);
3512 	 --Bug 7460481
3513 	 oe_debug_pub.add('New Approval Code'||p_x_header_Payment_rec.credit_card_approval_code);
3514 	 oe_debug_pub.add('Old Approval Code'||p_old_header_Payment_rec.credit_card_approval_code);
3515 	 oe_debug_pub.add('New Approval Date'||p_x_header_Payment_rec.credit_card_approval_date);
3516 	 oe_debug_pub.add('Old Approval Date'||p_old_header_Payment_rec.credit_card_approval_date);
3517 	END IF;
3518 
3519      IF p_x_header_Payment_rec.trxn_extension_id IS NOT NULL AND
3520         p_x_header_Payment_rec.trxn_extension_id <> FND_API.G_MISS_NUM
3521         AND p_x_header_Payment_rec.operation = OE_GLOBALS.G_OPR_CREATE AND
3522         nvl(oe_order_cache.g_header_rec.source_document_type_id, -99) <> 2 -- not a copy order Verify
3523      THEN
3524 	    --R12 CC Encryption
3525 	    --for orders coming from outside of Order Management, we need to call Oracle
3526 	    --Payments Copy Transaction API to get a new transaction extension id.
3527 	    BEGIN
3528 			OE_PAYMENT_TRXN_UTIL.Copy_Payment_TRXN
3529 			(P_header_id		=> p_x_header_Payment_rec.header_id,
3530 			p_line_id		=> p_x_header_payment_rec.line_id,
3531 			p_cust_id		=> l_hdr_inv_to_cust_id,
3532 			P_site_use_id		=> l_invoice_to_org_id,
3533 			p_trxn_extension_id	=> p_x_header_payment_rec.trxn_extension_id,
3534 			x_trxn_extension_id	=> l_trxn_extension_id,
3535 			X_return_status		=> l_return_status,
3536 			X_msg_count		=> l_msg_count,
3537 			X_msg_data		=> l_msg_data);
3538 			IF l_debug_level>0 THEN
3539 				oe_debug_pub.add('New trxn extension id after calling Copy_Payment_TRXN:'||l_trxn_extension_id);
3540 			END IF;
3541 	    EXCEPTION
3542 		WHEN FND_API.G_EXC_ERROR THEN
3543 			l_return_status := FND_API.G_RET_STS_ERROR;
3544 			RAISE FND_API.G_EXC_ERROR;
3545 		WHEN OTHERS THEN
3546 			IF l_debug_level>0 THEN
3547 				oe_debug_pub.add('After call to copy payment trxn - exception');
3548 			END IF;
3549 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3550 	    END;
3551 
3552 		p_x_header_payment_rec.trxn_extension_id := l_trxn_extension_id;
3553 
3554 	ELSIF p_x_header_payment_rec.operation = OE_GLOBALS.G_OPR_UPDATE THEN
3555 
3556 		IF l_debug_level > 0 THEN
3557 			oe_debug_pub.add('trxn id'||p_x_header_payment_rec.trxn_Extension_id);
3558 			oe_debug_pub.add('payemnt type'||p_x_header_payment_rec.payment_type_Code);
3559 			IF OE_GLOBALS.Is_Same_Credit_Card(p_old_Header_Payment_rec.credit_card_number,
3560                             p_x_Header_Payment_rec.credit_card_number,
3561 			    p_old_Header_Payment_rec.cc_instrument_id,
3562 			    p_x_Header_Payment_rec.cc_instrument_id) THEN
3563 			    	oe_debug_pub.add('same cc true');
3564 			ELSE
3565 				oe_debug_pub.add('diff cc');
3566 			END IF;
3567 			if OE_GLOBALS.Equal(p_old_header_Payment_rec.credit_card_holder_name,
3568 			p_x_header_Payment_rec.credit_card_holder_name) THEN
3569 				oe_debug_pub.add('Same name');
3570 			ELSE
3571 				oe_debug_pub.add('Diff name');
3572 			END IF;
3573 			if OE_GLOBALS.Equal(p_old_header_Payment_rec.credit_card_expiration_date,
3574 			p_x_header_Payment_rec.credit_card_expiration_date) THEN
3575 				oe_debug_pub.add('Same date');
3576 			ELSE
3577 				oe_debug_pub.add('Diff date');
3578 			END IF;
3579 			if OE_GLOBALS.Equal(p_old_header_payment_rec.instrument_security_code,
3580 			p_x_header_payment_rec.instrument_security_code) THEN
3581 				oe_debug_pub.add('Same cvv2');
3582 			ELSE
3583 				oe_debug_pub.add('Diff cvv2');
3584 			END IF;
3585 			if OE_GLOBALS.Equal(p_x_header_Payment_rec.payment_trx_id,
3586 			p_old_header_Payment_rec.payment_trx_id) THEN
3587 				oe_debug_pub.add('Same trxid');
3588 			ELSE
3589 				oe_debug_pub.add('Diff trxid');
3590 			END IF;
3591 			--Bug 7460481
3592 			IF OE_GLOBALS.Equal(p_x_header_Payment_rec.credit_card_approval_code,
3593 			p_old_header_Payment_rec.credit_card_approval_code) THEN
3594 				oe_debug_pub.add('Same approval code');
3595 			ELSE
3596 				oe_debug_pub.add('Diff approval code');
3597 			END IF;
3598 		END IF;
3599 		IF  p_x_header_payment_rec.trxn_extension_id IS NOT NULL
3600 		AND p_x_header_payment_rec.trxn_extension_id <> FND_API.G_MISS_NUM
3601 		AND ((p_x_header_Payment_rec.payment_type_code = 'CREDIT_CARD'
3602 		AND OE_GLOBALS.Is_Same_Credit_Card(p_old_Header_Payment_rec.credit_card_number,
3603                             p_x_Header_Payment_rec.credit_card_number,
3604 			    p_old_Header_Payment_rec.cc_instrument_id,
3605 			    p_x_Header_Payment_rec.cc_instrument_id)
3606 		AND p_x_header_Payment_rec.credit_card_holder_name =
3607 		    p_old_header_Payment_rec.credit_card_holder_name
3608 		AND p_x_header_Payment_rec.credit_card_expiration_date =
3609 		    p_old_header_Payment_rec.credit_card_expiration_date
3610 		AND OE_GLOBALS.Equal(p_x_header_Payment_rec.instrument_security_code, --Using OE_GLOBALS.Equal for cvv2
3611 		p_old_header_payment_rec.instrument_security_code)		      --as cvv2 might be null for certain cards
3612 		--Bug 7460481
3613 		AND OE_GLOBALS.Equal(p_x_header_payment_rec.credit_card_approval_code,
3614 		    p_old_header_Payment_rec.credit_card_approval_code))
3615 		OR (p_x_header_Payment_rec.payment_type_code IN ('ACH','DIRECT_DEBIT')
3616 		AND OE_GLOBALS.Equal(p_x_header_Payment_rec.payment_trx_id, p_old_header_Payment_rec.payment_trx_id))
3617 		OR (p_x_header_Payment_rec.payment_type_code IN ('CASH','WIRE_TRANSFER'))) THEN
3618 
3619 			--no operation is needed as payment information did not change
3620 			IF l_debug_level  > 0 THEN
3621 				oe_debug_pub.add('No change to payments attributes...');
3622 			END IF;
3623 			NULL;
3624 
3625 		--While changing the payment type from cash, check etc to
3626 		--credit card payment type, the operation would be update but the
3627 		--transaction extension id would be null.
3628 		ELSIF p_x_header_payment_rec.trxn_extension_id is null or
3629 		p_x_header_payment_rec.trxn_extension_id =FND_API.G_MISS_NUM THEN
3630 			IF l_debug_level > 0 THEN
3631 			   oe_debug_pub.add(  'getting payment_trx_id as cc details changed');
3632 			   oe_debug_pub.add('Operation is Update and trxn extension id is null');
3633 			   oe_debug_pub.add('Payment type has changed from check or cash to one which requires trxn extension id...');
3634 			END IF;
3635 
3636 			-- validate cc security code
3637 			IF p_x_Header_Payment_rec.payment_type_code = 'CREDIT_CARD' THEN
3638 				IF OE_Payment_Trxn_Util.g_CC_Security_Code_Use  IS NULL THEN
3639 					OE_Payment_Trxn_Util.g_CC_Security_Code_Use := OE_Payment_Trxn_Util.Get_CC_Security_Code_Use;
3640 				END IF;
3641 
3642 				IF OE_Payment_Trxn_Util.g_CC_Security_Code_Use  = 'REQUIRED' AND
3643 				p_x_Header_Payment_rec.instrument_security_code IS NULL THEN
3644 					FND_MESSAGE.SET_NAME('ONT','OE_CC_SECURITY_CODE_REQD');
3645 					OE_Msg_Pub.Add;
3646 					RAISE FND_API.G_EXC_ERROR;
3647 				END IF;
3648 			END IF;
3649 
3650 			--R12 CC Encryption
3651 			--Since the credit card numbers are encrypted, passing both the credit card
3652 			--numbers as well as instrument ids to determine if both the old and new
3653 			--values point to the same credit card number.
3654 			IF NOT OE_GLOBALS.Is_Same_Credit_Card(p_old_Header_Payment_rec.credit_card_number,
3655 					    p_x_Header_Payment_rec.credit_card_number,
3656 					    p_old_Header_Payment_rec.cc_instrument_id,
3657 					    p_x_Header_Payment_rec.cc_instrument_id)
3658 			OR NOT OE_GLOBALS.Equal(p_x_header_Payment_rec.credit_card_code,
3659 			p_old_header_Payment_rec.credit_card_code) THEN
3660 				IF NOT OE_GLOBALS.Equal(p_x_header_Payment_rec.credit_card_holder_name,
3661 				p_old_header_Payment_rec.credit_card_holder_name)
3662 				OR NOT OE_GLOBALS.Equal(p_x_header_Payment_rec.credit_card_expiration_date,
3663 				p_old_header_Payment_rec.credit_card_expiration_date)  THEN
3664 					l_update_card_flag := 'Y';
3665 				ELSE
3666 					l_update_card_flag := 'N';
3667 				END IF;
3668 			ELSIF NOT OE_GLOBALS.Equal(p_x_header_Payment_rec.credit_card_holder_name,
3669 			p_old_header_Payment_rec.credit_card_holder_name)
3670 			OR NOT OE_GLOBALS.Equal(p_x_header_Payment_rec.credit_card_expiration_date,
3671 			p_old_header_Payment_rec.credit_card_expiration_date)  THEN
3672 				l_update_card_flag := 'Y';
3673 			END IF;
3674 		     Begin
3675 				OE_PAYMENT_TRXN_UTIL.Create_Payment_TRXN
3676 				(p_header_id		=> p_x_header_Payment_rec.header_id,
3677 				 p_line_id		=> p_x_header_payment_rec.line_id,
3678 				 p_cust_id		=> l_hdr_inv_to_cust_id,
3679 				 P_site_use_id		=> l_invoice_to_org_id,
3680 				 P_payment_trx_id	=> p_x_header_payment_rec.payment_trx_id,
3681 				 P_payment_type_code	=> p_x_header_payment_rec.payment_type_code,
3682 				 p_payment_number	=> p_x_header_payment_rec.payment_number,
3683 				 P_card_number		=> p_x_header_payment_rec.credit_card_number,
3684 				 p_card_code		=> p_x_header_payment_rec.credit_card_code,
3685 				 P_card_holder_name	=> p_x_header_payment_rec.credit_card_holder_name,
3686 				 P_exp_date		=> p_x_header_payment_rec.credit_card_expiration_date,
3687 				 P_receipt_method_id	=> p_x_header_payment_rec.receipt_method_id,
3688 				 p_instrument_security_code => p_x_header_payment_rec.instrument_security_code,
3689 				 p_credit_card_approval_code => p_x_header_payment_rec.credit_card_approval_code,
3690 				 p_credit_card_approval_date =>	p_x_header_payment_rec.credit_card_approval_date,
3691 				 p_x_trxn_extension_id	=> p_x_header_payment_rec.trxn_extension_id,
3692 				 p_update_card_flag	=> l_update_card_flag,
3693 				 p_instrument_id	=> p_x_header_payment_rec.cc_instrument_id,
3694 				 p_instrument_assignment_id => p_x_header_payment_rec.cc_instrument_assignment_id,
3695 				 X_return_status	=> l_return_status,
3696 				 X_msg_count		=> l_msg_count,
3697 				 X_msg_data		=> l_msg_data);
3698 
3699 				 IF l_debug_level > 0 THEN
3700 					 oe_debug_pub.add('New trxn extension id after calling Create_Payment_TRXN:'||p_x_header_payment_rec.trxn_extension_id);
3701 				 END IF;
3702 		     Exception
3703 			   WHEN FND_API.G_EXC_ERROR THEN
3704 			       OE_MSG_PUB.Count_And_Get
3705 			       ( p_count => l_msg_count,
3706 				 p_data  => l_msg_data
3707 				);
3708 				l_return_status := FND_API.G_RET_STS_ERROR;
3709 				RAISE FND_API.G_EXC_ERROR;
3710 
3711 			    WHEN OTHERS THEN
3712 			     OE_MSG_PUB.Count_And_Get
3713 			     ( p_count => l_msg_count,
3714 			       p_data  => l_msg_data
3715 			     );
3716 			      FND_MESSAGE.SET_NAME('ONT','OE_VPM_CC_ACCT_NOT_SET');
3717 			      OE_MSG_PUB.ADD;
3718 			      IF l_debug_level  > 0 THEN
3719 				 oe_debug_pub.add(  'OEXUHPMB: ERROR IN ARP_BANK_PKG.PROCESS_CUST_BANK_ACCOUNT'||l_msg_data ) ;
3720 				 oe_debug_pub.add('Error messsge ksurendr'||l_return_status);
3721 			      END IF;
3722 			      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3723 		     end;
3724 
3725 		    IF l_debug_level > 0 THEN
3726 			oe_debug_pub.add( 'Return status...'||l_return_status	);
3727 		    END IF;
3728 
3729 			p_x_header_payment_rec.payment_trx_id := l_bank_acct_id;
3730 		ELSE
3731 		--payment transaction id already exists,  so need to update the IBY transaction
3732 		--extenstion table
3733 		BEGIN
3734 		-- validate cc security code
3735 		/*IF p_x_Header_Payment_rec.payment_type_code = 'CREDIT_CARD' THEN
3736 			IF OE_Payment_Trxn_Util.g_CC_Security_Code_Use  IS NULL THEN
3737 				OE_Payment_Trxn_Util.g_CC_Security_Code_Use := OE_Payment_Trxn_Util.Get_CC_Security_Code_Use;
3738 			END IF;
3739 			IF OE_Payment_Trxn_Util.g_CC_Security_Code_Use  = 'REQUIRED'
3740 			AND p_x_Header_Payment_rec.instrument_security_code IS NULL THEN
3741 				FND_MESSAGE.SET_NAME('ONT','OE_CC_SECURITY_CODE_REQD');
3742 				OE_Msg_Pub.Add;
3743 				RAISE FND_API.G_EXC_ERROR;
3744 			END IF;
3745 		END IF;*/
3746 
3747 		--R12 CC Encryption
3748 		--Since the credit card numbers are encrypted, passing both the credit card
3749 		--numbers as well as instrument ids to determine if both the old and new
3750 		--values point to the same credit card number.
3751 		IF NOT OE_GLOBALS.Is_Same_Credit_Card(p_old_Header_Payment_rec.credit_card_number,
3752 				    p_x_Header_Payment_rec.credit_card_number,
3753 				    p_old_Header_Payment_rec.cc_instrument_id,
3754 				    p_x_Header_Payment_rec.cc_instrument_id)
3755 		OR NOT OE_GLOBALS.Equal(p_x_header_Payment_rec.credit_card_code,
3756 		p_old_header_Payment_rec.credit_card_code) THEN
3757 			IF NOT OE_GLOBALS.Equal(p_x_header_Payment_rec.credit_card_holder_name,
3758 			p_old_header_Payment_rec.credit_card_holder_name)
3759 			OR NOT OE_GLOBALS.Equal(p_x_header_Payment_rec.credit_card_expiration_date,
3760 			p_old_header_Payment_rec.credit_card_expiration_date)  THEN
3761 				l_update_card_flag := 'Y';
3762 			ELSE
3763 				l_update_card_flag := 'N';
3764 			END IF;
3765 		ELSIF NOT OE_GLOBALS.Equal(p_x_header_Payment_rec.credit_card_holder_name,
3766 		p_old_header_Payment_rec.credit_card_holder_name)
3767 		OR NOT OE_GLOBALS.Equal(p_x_header_Payment_rec.credit_card_expiration_date,
3768 		p_old_header_Payment_rec.credit_card_expiration_date)  THEN
3769 			l_update_card_flag := 'Y';
3770 		END IF;
3771 		oe_debug_pub.add('b4 call to update pay...');
3772 		oe_debug_pub.add('Payment trx id'||p_x_header_payment_rec.payment_trx_id);
3773 		OE_PAYMENT_TRXN_UTIL.Update_Payment_TRXN
3774 		(P_header_id		=> p_x_header_Payment_rec.header_id,
3775 		 p_line_id		=> p_x_header_payment_rec.line_id,
3776 		 p_cust_id		=> l_hdr_inv_to_cust_id,
3777 		 P_site_use_id		=> l_invoice_to_org_id,
3778 		 P_payment_trx_id	=> p_x_header_payment_rec.payment_trx_id,
3779 		 P_payment_type_code	=> p_x_header_payment_rec.payment_type_code,
3780 		 p_payment_number	=> p_x_header_payment_rec.payment_number,
3781 		 p_card_number		=> p_x_header_payment_rec.credit_card_number,
3782 		 p_card_code		=> p_x_header_payment_rec.credit_card_code,
3783 		 p_card_holder_name	=> p_x_header_payment_rec.credit_card_holder_name,
3784 		 p_exp_date		=> p_x_header_payment_rec.credit_card_expiration_date,
3785 		 p_receipt_method_id	=> p_x_header_payment_rec.receipt_method_id,
3786 		 p_instrument_security_code => p_x_header_payment_rec.instrument_security_code,
3787 		 --Bug 7460481
3788                  p_credit_card_approval_code => p_x_header_payment_rec.credit_card_approval_code,
3789                  p_credit_card_approval_date =>	p_x_header_payment_rec.credit_card_approval_date,
3790                  --Bug 7460481
3791  		 p_trxn_extension_id	=> p_x_header_payment_rec.trxn_extension_id,
3792 		 p_update_card_flag	=> l_update_card_flag,
3793 		 p_instrument_id	=> p_x_header_payment_rec.cc_instrument_id,
3794 		 p_instrument_assignment_id => p_x_header_payment_rec.cc_instrument_assignment_id,
3795 		 X_return_status	=> l_return_status,
3796 		 X_msg_count		=> l_msg_count,
3797 		 X_msg_data		=> l_msg_data);
3798 		 IF l_debug_level  > 0 THEN
3799 			oe_debug_pub.add('trxn extension id after calling Update_Payment_TRXN:'||p_x_header_payment_rec.trxn_extension_id);
3800 		 END IF;
3801       EXCEPTION
3802       WHEN FND_API.G_EXC_ERROR THEN
3803 
3804 		IF l_debug_level > 0 THEN
3805 			oe_debug_pub.add('Update_Payment_TRXN  error....exc');
3806 			oe_debug_pub.add('After call to Update_Payment_TRXN'||l_return_status);
3807 			oe_debug_pub.add('Error'||sqlerrm);
3808 		END IF;
3809 	        l_return_status := FND_API.G_RET_STS_ERROR;
3810 	        OE_MSG_PUB.Count_And_Get
3811 		    ( p_count => l_msg_count,
3812 		      p_data  => l_msg_data
3813 		    );
3814  		RAISE FND_API.G_EXC_ERROR;
3815 
3816        WHEN OTHERS THEN
3817 	        OE_MSG_PUB.Count_And_Get
3818 	        ( p_count => l_msg_count,
3819 	         p_data  => l_msg_data
3820 	        );
3821 		IF l_debug_level  > 0 THEN
3822 			oe_debug_pub.add('After call to Update_Payment_TRXN --> Unexpected error');
3823 			oe_debug_pub.add('Error message '||sqlerrm);
3824 		END IF;
3825 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3826         END;
3827 
3828 	END IF;
3829 
3830 	IF l_debug_level > 0 THEN
3831 		oe_debug_pub.add(  'id already derived for this credit card');
3832 	END IF;
3833 
3834 	ELSIF p_x_header_payment_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN --not a copy order Verify
3835 
3836 		IF l_debug_level > 0 THEN
3837 		   oe_debug_pub.add(  'getting payment_trx_id as cc details changed');
3838 		END IF;
3839 
3840 	     /*l_trx_date := nvl(l_ordered_date, sysdate)
3841 			  - nvl( to_number(fnd_profile.value('ONT_DAYS_TO_BACKDATE_BANK_ACCT')), 0);*/
3842 		-- validate cc security code
3843 		IF p_x_Header_Payment_rec.payment_type_code = 'CREDIT_CARD' THEN
3844 			IF OE_Payment_Trxn_Util.g_CC_Security_Code_Use  IS NULL THEN
3845 				OE_Payment_Trxn_Util.g_CC_Security_Code_Use := OE_Payment_Trxn_Util.Get_CC_Security_Code_Use;
3846 			END IF;
3847 
3848 			IF OE_Payment_Trxn_Util.g_CC_Security_Code_Use  = 'REQUIRED' AND
3849 			p_x_Header_Payment_rec.instrument_security_code IS NULL THEN
3850 				FND_MESSAGE.SET_NAME('ONT','OE_CC_SECURITY_CODE_REQD');
3851 				OE_Msg_Pub.Add;
3852 				RAISE FND_API.G_EXC_ERROR;
3853 			END IF;
3854 		END IF;
3855 
3856 		--R12 CC Encryption
3857 		--Since the credit card numbers are encrypted, passing both the credit card
3858 		--numbers as well as instrument ids to determine if both the old and new
3859 		--values point to the same credit card number.
3860 		IF NOT OE_GLOBALS.Is_Same_Credit_Card(p_old_Header_Payment_rec.credit_card_number,
3861 				    p_x_Header_Payment_rec.credit_card_number,
3862 				    p_old_Header_Payment_rec.cc_instrument_id,
3863 				    p_x_Header_Payment_rec.cc_instrument_id)
3864 		OR NOT OE_GLOBALS.Equal(p_x_header_Payment_rec.credit_card_code,
3865 		p_old_header_Payment_rec.credit_card_code) THEN
3866 			IF l_debug_level > 0 THEN
3867 				oe_debug_pub.add('credit card details changed!');
3868 			END IF;
3869 
3870 			IF NOT OE_GLOBALS.Equal(p_x_header_Payment_rec.credit_card_holder_name,
3871 			p_old_header_Payment_rec.credit_card_holder_name)
3872 			OR NOT OE_GLOBALS.Equal(p_x_header_Payment_rec.credit_card_expiration_date,
3873 			p_old_header_Payment_rec.credit_card_expiration_date)  THEN
3874 				IF l_debug_level > 0 THEN
3875 					oe_debug_pub.add('Need to call update_card API');
3876 				END IF;
3877 
3878 				l_update_card_flag := 'Y';
3879 			ELSE
3880 				IF l_debug_level > 0 THEN
3881 					oe_debug_pub.add('Need not call update_card API');
3882 				END IF;
3883 
3884 				l_update_card_flag := 'N';
3885 			END IF;
3886 		ELSIF NOT OE_GLOBALS.Equal(p_x_header_Payment_rec.credit_card_holder_name,
3887 		p_old_header_Payment_rec.credit_card_holder_name)
3888 		OR NOT OE_GLOBALS.Equal(p_x_header_Payment_rec.credit_card_expiration_date,
3889 		p_old_header_Payment_rec.credit_card_expiration_date)  THEN
3890 			IF l_debug_level > 0 THEN
3891 				oe_debug_pub.add('Need to call update_card API 1');
3892 			END IF;
3893 
3894 			l_update_card_flag := 'Y';
3895 		END IF;
3896 
3897 
3898 	     Begin
3899 			IF l_debug_level > 0 THEN
3900 				oe_debug_pub.add('Before calling create_payment_trxn API');
3901 			END IF;
3902 			OE_PAYMENT_TRXN_UTIL.Create_Payment_TRXN
3903 			(p_header_id		=> p_x_header_Payment_rec.header_id,
3904 			 p_line_id		=> p_x_header_payment_rec.line_id,
3905 			 p_cust_id		=> l_hdr_inv_to_cust_id,
3906 			 P_site_use_id		=> l_invoice_to_org_id,
3907 			 P_payment_trx_id	=> p_x_header_payment_rec.payment_trx_id,
3908 			 P_payment_type_code	=> p_x_header_payment_rec.payment_type_code,
3909 			 p_payment_number	=> p_x_header_payment_rec.payment_number,
3910 			 P_card_number		=> p_x_header_payment_rec.credit_card_number,
3911 			 p_card_code		=> p_x_header_payment_rec.credit_card_code,
3912  			 P_card_holder_name	=> p_x_header_payment_rec.credit_card_holder_name,
3913 			 P_exp_date		=> p_x_header_payment_rec.credit_card_expiration_date,
3914 			 P_receipt_method_id	=> p_x_header_payment_rec.receipt_method_id,
3915 			 p_instrument_security_code => p_x_header_payment_rec.instrument_security_code,
3916 			 p_credit_card_approval_code => p_x_header_payment_rec.credit_card_approval_code,
3917  			 p_credit_card_approval_date =>	p_x_header_payment_rec.credit_card_approval_date,
3918 			 p_x_trxn_extension_id	=> p_x_header_payment_rec.trxn_extension_id,
3919 			 p_update_card_flag	=> l_update_card_flag,
3920 			 p_instrument_id	=> p_x_header_payment_rec.cc_instrument_id,
3921 			 p_instrument_assignment_id => p_x_header_payment_rec.cc_instrument_assignment_id,
3922 			 X_return_status	=> l_return_status,
3923 			 X_msg_count		=> l_msg_count,
3924 			 X_msg_data		=> l_msg_data);
3925 
3926 			 oe_debug_pub.add('New trxn extension id after calling Create_Payment_TRXN:'||p_x_header_payment_rec.trxn_extension_id);
3927 
3928 	     Exception
3929 		   WHEN FND_API.G_EXC_ERROR THEN
3930 		       OE_MSG_PUB.Count_And_Get
3931 		       ( p_count => l_msg_count,
3932 		         p_data  => l_msg_data
3933 		        );
3934 			l_return_status := FND_API.G_RET_STS_ERROR;
3935 
3936 		      FND_MESSAGE.SET_NAME('ONT','OE_VPM_CC_ACCT_NOT_SET');
3937 		      OE_MSG_PUB.ADD;
3938 
3939 		      RAISE FND_API.G_EXC_ERROR;
3940 
3941 		    WHEN OTHERS THEN
3942 		     OE_MSG_PUB.Count_And_Get
3943 		     ( p_count => l_msg_count,
3944 		       p_data  => l_msg_data
3945 		     );
3946 		      FND_MESSAGE.SET_NAME('ONT','OE_VPM_CC_ACCT_NOT_SET');
3947 		      OE_MSG_PUB.ADD;
3948 		      IF l_debug_level  > 0 THEN
3949 			 oe_debug_pub.add(  'OEXUHPMB: ERROR IN ARP_BANK_PKG.PROCESS_CUST_BANK_ACCOUNT'||l_msg_data ) ;
3950 			 oe_debug_pub.add('Error messsge ksurendr'||l_return_status);
3951 		      END IF;
3952 		      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3953 	     end;
3954 
3955 	    IF l_debug_level > 0 THEN
3956 		oe_debug_pub.add(  'after calling process_cust_bank_account. l_bank_acct_id:'||l_bank_acct_id);
3957 	    END IF;
3958 
3959 		p_x_header_payment_rec.payment_trx_id := l_bank_acct_id;
3960 	END IF;
3961   ELSIF p_x_header_Payment_rec.payment_type_code IN ('CHECK','CASH') AND
3962   p_x_header_payment_rec.operation = OE_GLOBALS.G_OPR_UPDATE
3963   AND p_old_header_Payment_rec.trxn_extension_id IS NOT NULL THEN
3964 
3965 	--For update operation, the trxn extension id of the original
3966 	--transaction needs to be deleted if it already exists as
3967 	--there is no trxn extension id for check payments.
3968 	IF l_debug_level > 0 THEN
3969 		oe_debug_pub.add(' Before calling delete payment trxn....');
3970 		oe_debug_pub.add(' Trxn extension to delete'||p_old_header_Payment_rec.trxn_extension_id);
3971 	END IF;
3972 	--Passing the invoice to org id as null as in case of
3973 	--deleting payments due to bill to change, we would need the
3974 	--old invoice to org id.
3975 	OE_PAYMENT_TRXN_UTIL.Delete_Payment_Trxn
3976 	(p_header_id => p_x_header_Payment_rec.header_id,
3977 	 p_line_id   => p_x_header_Payment_rec.line_id,
3978 	 p_payment_number =>  p_x_header_Payment_rec.payment_number,
3979 	 x_return_status  =>  l_return_status,
3980 	 x_msg_count      =>  l_msg_count,
3981 	 x_msg_data       =>  l_msg_data,
3982 	 p_trxn_extension_id => p_old_header_Payment_rec.trxn_extension_id,
3983 	 P_site_use_id	    => null
3984 	 );
3985 
3986 	IF l_return_status = FND_API.G_RET_STS_ERROR  THEN
3987 		RAISE FND_API.G_EXC_ERROR;
3988 	ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3989 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3990 	ELSIF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
3991 		IF l_debug_level > 0 THEN
3992 			oe_debug_pub.add('Before setting the trxn extension id to null...');
3993 			oe_debug_pub.add('Id that was deleted from iby tables...'||p_old_header_Payment_rec.trxn_extension_id);
3994 		END IF;
3995 	END IF;
3996 
3997 	IF l_debug_level > 0 THEN
3998 		oe_debug_pub.add('Successful deletion of trxn extension');
3999 		oe_debug_pub.add('Return status after delete trxn in pre write process '|| l_return_status);
4000 		oe_debug_pub.add('msg data'||l_msg_data);
4001 	END IF;
4002 	--Setting the trxn extension id as null as for transactions
4003 	--coming from sales order others tab, the trxn extension id would
4004 	--be updated in oe_payments table during updation.
4005 	p_x_header_Payment_rec.trxn_extension_id := null;
4006 
4007   END IF;
4008 
4009   -- fix bug 3740225, need to round amount according to precision
4010   -- when processing prepayment and refund to be in synch  with AR.
4011   IF p_x_header_payment_rec.payment_collection_event = 'PREPAY' THEN
4012     IF OE_ORDER_UTIL.G_Precision IS NULL THEN
4013       OE_ORDER_UTIL.G_Precision:=2;
4014     END IF;
4015 
4016     p_x_header_payment_rec.payment_amount
4017       := ROUND(p_x_header_payment_rec.payment_amount, OE_ORDER_UTIL.G_Precision);
4018   END IF;
4019 
4020   IF l_debug_level > 0 THEN
4021 	oe_debug_pub.add('EXITING OE_HEADER_PAYMENT_UTIL.PRE_WRITE_PROCESS');
4022   END IF;
4023 
4024   EXCEPTION
4025      WHEN FND_API.G_EXC_ERROR THEN
4026          IF L_DEBUG_LEVEL > 0 THEN
4027             Oe_debug_pub.add('OEXUHPMB.pls - pre_write_process error ');
4028          END if;
4029 	p_x_header_Payment_rec.return_status := FND_API.G_RET_STS_ERROR;
4030 	RAISE FND_API.G_EXC_ERROR;
4031      WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4032          IF L_DEBUG_LEVEL > 0 THEN
4033             Oe_debug_pub.add('OEXUHPMB.pls - pre_write_process unexpected error ');
4034          END if;
4035 	p_x_header_payment_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4036 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4037 
4038      WHEN OTHERS THEN
4039          IF L_DEBUG_LEVEL > 0 THEN
4040             Oe_debug_pub.add('OEXUHPMB.pls - pre_write_process unexpected error ');
4041          END if;
4042          raise fnD_API.G_EXC_UNEXPECTED_ERROR;
4043 
4044 END Pre_Write_Process;
4045 
4046 --3382262
4047 Procedure Delete_Payment_at_header(p_header_id in number,
4048                                    p_line_id in number := null,
4049                                    x_return_status out nocopy varchar2,
4050                                    x_msg_count out nocopy number,
4051                                    x_msg_data out nocopy varchar2) is
4052 p_count number := -1;
4053 p_x_header_rec OE_ORDER_PUB.Header_Rec_Type;
4054 l_old_header_rec OE_ORDER_PUB.Header_Rec_Type;
4055 l_header_rec OE_ORDER_PUB.Header_Rec_Type;
4056 l_return_status varchar2(30) := NULL;
4057 
4058 Begin
4059 
4060  Begin
4061 
4062   select count(payment_type_code) into p_count
4063   from oe_payments
4064   where header_id = p_header_id
4065   and nvl(payment_collection_event, 'PREPAY') = 'INVOICE'
4066   and line_id is null;
4067 
4068  Exception
4069 
4070    when others then
4071    oe_debug_pub.add('could not find any records');
4072    return;
4073 
4074  End;
4075 
4076   if p_count = 0 then  --there was only one record and it was deleted
4077 
4078       -- Set up the Header record
4079          OE_Header_Util.Lock_Row
4080                 (p_header_id                    => p_header_id
4081                 ,p_x_header_rec         => l_old_header_rec
4082                 ,x_return_status                => l_return_status
4083                 );
4084          IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4085             RAISE FND_API.G_EXC_ERROR;
4086          ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4087             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4088          END IF;
4089 
4090          l_header_rec := l_old_header_rec;
4091 
4092        oe_debug_pub.add('before updating oe_order_headers_all ');
4093 
4094       update oe_order_headers_all
4095       set payment_type_code = null,
4096           payment_amount    = null,
4097           check_number      = null,
4098           credit_card_code  = null,
4099           credit_card_holder_name = null,
4100           credit_card_number      = null,
4101           credit_card_expiration_date = null,
4102           credit_card_approval_code   = null
4103           where header_id = p_header_id;
4104    end if;
4105 
4106 Exception
4107 
4108 WHEN FND_API.G_EXC_ERROR THEN
4109       x_return_status := FND_API.G_RET_STS_ERROR;
4110       OE_MSG_PUB.Count_And_Get
4111             ( p_count => x_msg_count,
4112               p_data  => x_msg_data
4113             );
4114 
4115     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4116       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4117       OE_MSG_PUB.Count_And_Get
4118             ( p_count => x_msg_count,
4119               p_data  => x_msg_data
4120             );
4121 
4122 WHEN OTHERS THEN
4123       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4124       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4125       THEN
4126         OE_MSG_PUB.Add_Exc_Msg
4127             (   G_PKG_NAME
4128             ,   'Delete_Payment_at_Header'
4129             );
4130       END IF;
4131 
4132 END Delete_Payment_at_header;
4133 --3382262
4134 
4135 END OE_Header_Payment_Util;