DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_LINE_PAYMENT_UTIL

Source


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