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.16.12010000.3 2008/11/12 07:11:15 cpati 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 
953 BEGIN
954 
955     --  Load out record
956 
957 
958     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.attribute1,p_old_Line_Payment_rec.attribute1)
959     THEN
960         NULL;
961     END IF;
962 
963     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.attribute2,p_old_Line_Payment_rec.attribute2)
964     THEN
965         NULL;
966     END IF;
967 
968     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.attribute3,p_old_Line_Payment_rec.attribute3)
969     THEN
970         NULL;
971     END IF;
972 
973     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.attribute4,p_old_Line_Payment_rec.attribute4)
974     THEN
975         NULL;
976     END IF;
977 
978     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.attribute5,p_old_Line_Payment_rec.attribute5)
979     THEN
980         NULL;
981     END IF;
982 
983     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.attribute6,p_old_Line_Payment_rec.attribute6)
984     THEN
985         NULL;
986     END IF;
987 
988     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.attribute7,p_old_Line_Payment_rec.attribute7)
989     THEN
990         NULL;
991     END IF;
992 
993     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.attribute8,p_old_Line_Payment_rec.attribute8)
994     THEN
995         NULL;
996     END IF;
997 
998     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.attribute9,p_old_Line_Payment_rec.attribute9)
999     THEN
1000         NULL;
1001     END IF;
1002 
1003     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.attribute10,p_old_Line_Payment_rec.attribute10)
1004     THEN
1005         NULL;
1006     END IF;
1007 
1008     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.attribute11,p_old_Line_Payment_rec.attribute11)
1009     THEN
1010         NULL;
1011     END IF;
1012 
1013     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.attribute12,p_old_Line_Payment_rec.attribute12)
1014     THEN
1015         NULL;
1016     END IF;
1017 
1018     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.attribute13,p_old_Line_Payment_rec.attribute13)
1019     THEN
1020         NULL;
1021     END IF;
1022 
1023     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.attribute14,p_old_Line_Payment_rec.attribute14)
1024     THEN
1025         NULL;
1026     END IF;
1027 
1028     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.attribute15,p_old_Line_Payment_rec.attribute15)
1029     THEN
1030         NULL;
1031     END IF;
1032 
1033     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.context,p_old_Line_Payment_rec.context)
1034     THEN
1035         NULL;
1036     END IF;
1037 
1038     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.created_by,p_old_Line_Payment_rec.created_by)
1039     THEN
1040         NULL;
1041     END IF;
1042 
1043     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.creation_date,p_old_Line_Payment_rec.creation_date)
1044     THEN
1045         NULL;
1046     END IF;
1047 
1048     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.last_updated_by,p_old_Line_Payment_rec.last_updated_by)
1049     THEN
1050         NULL;
1051     END IF;
1052 
1053     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.last_update_date,p_old_Line_Payment_rec.last_update_date)
1054     THEN
1055         NULL;
1056     END IF;
1057 
1058     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.last_update_login,p_old_Line_Payment_rec.last_update_login)
1059     THEN
1060         NULL;
1061     END IF;
1062 
1063     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.check_number,p_old_Line_Payment_rec.check_number)
1064     THEN
1065         NULL;
1066     END IF;
1067 
1068     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.credit_card_approval_code,p_old_Line_Payment_rec.credit_card_approval_code)
1069     THEN
1070         NULL;
1071     END IF;
1072 
1073     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.credit_card_approval_date,p_old_Line_Payment_rec.credit_card_approval_date)
1074     THEN
1075         NULL;
1076     END IF;
1077 
1078     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.credit_card_code,p_old_Line_Payment_rec.credit_card_code)
1079     THEN
1080         NULL;
1081     END IF;
1082 
1083     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.credit_card_expiration_date,p_old_Line_Payment_rec.credit_card_expiration_date)
1084     THEN
1085         NULL;
1086     END IF;
1087 
1088     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.credit_card_holder_name,p_old_Line_Payment_rec.credit_card_holder_name)
1089     THEN
1090         NULL;
1091     END IF;
1092 
1093     --R12 CC Encryption
1094     --Since the credit card numbers are encrypted, passing both the credit card
1095     --numbers as well as instrument ids to determine if both the old and new
1096     --values point to the same credit card number.
1097     IF l_debug_level > 0 THEN
1098 	oe_debug_pub.add('Old cc number'||p_old_Line_Payment_rec.credit_card_number);
1099 	oe_debug_pub.add('New cc number'||p_x_Line_Payment_rec.credit_card_number);
1100 	oe_debug_pub.add('Old instr id'||p_old_Line_Payment_rec.cc_instrument_id);
1101 	oe_debug_pub.add('New instr id'||p_x_Line_Payment_rec.cc_instrument_id);
1102     END IF;
1103 
1104     IF NOT OE_GLOBALS.Is_Same_Credit_Card(p_old_Line_Payment_rec.credit_card_number,
1105 	    p_x_Line_Payment_rec.credit_card_number,
1106 	    p_old_Line_Payment_rec.cc_instrument_id,
1107 	    p_x_Line_Payment_rec.cc_instrument_id)
1108     THEN
1109         NULL;
1110     END IF;
1111 
1112     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.payment_level_code,p_old_Line_Payment_rec.payment_level_code)
1113     THEN
1114         NULL;
1115     END IF;
1116 
1117     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.commitment_applied_amount,p_old_Line_Payment_rec.commitment_applied_amount)
1118     THEN
1119         NULL;
1120     END IF;
1121 
1122     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.commitment_interfaced_amount,p_old_Line_Payment_rec.commitment_interfaced_amount)
1123     THEN
1124         NULL;
1125     END IF;
1126 
1127     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.payment_number,p_old_Line_Payment_rec.payment_number)
1128     THEN
1129         NULL;
1130     END IF;
1131 
1132     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.header_id,p_old_Line_Payment_rec.header_id)
1133     THEN
1134         NULL;
1135     END IF;
1136 
1137     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.line_id,p_old_Line_Payment_rec.line_id)
1138     THEN
1139         NULL;
1140     END IF;
1141 
1142     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.payment_amount,p_old_Line_Payment_rec.payment_amount)
1143     THEN
1144         NULL;
1145     END IF;
1146 
1147     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.payment_collection_event,p_old_Line_Payment_rec.payment_collection_event)
1148     THEN
1149           NULL;
1150     END IF;
1151 
1152     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.defer_payment_processing_flag,p_old_Line_Payment_rec.defer_payment_processing_flag)
1153     THEN
1154           NULL;
1155     END IF;
1156 
1157     -- R12 CC Encryption
1158     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.trxn_extension_id,p_old_Line_Payment_rec.trxn_extension_id)
1159     THEN
1160           NULL;
1161     END IF;
1162 
1163     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.instrument_security_code,p_old_Line_Payment_rec.instrument_security_code)
1164     THEN
1165         NULL;
1166     END IF;
1167 
1168     -- R12 CC Encryption
1169 
1170 
1171     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.payment_trx_id,p_old_Line_Payment_rec.payment_trx_id)
1172     THEN
1173            IF p_x_Line_Payment_rec.payment_type_code = 'COMMITMENT'
1174              AND OE_Commitment_Pvt.Do_Commitment_Sequencing
1175              AND NOT OE_GLOBALS.G_UI_FLAG THEN
1176              -- only need to log delayed request when this is not from UI.
1177              l_calculate_commitment_flag := 'Y';
1178           END IF;
1179     END IF;
1180 
1181     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.payment_type_code,p_old_Line_Payment_rec.payment_type_code)
1182     THEN
1183         l_payments_update_flag := 'Y';
1184 
1185         IF p_old_Line_Payment_rec.payment_type_code = 'CREDIT_CARD'
1186           AND p_x_Line_Payment_rec.operation = 'UPDATE' THEN
1187           l_delete_pmt_hold := 'Y';
1188         END IF;
1189 
1190 	--bug3625027 start
1191 	BEGIN
1192 	        -- use order_header cache instead of sql : bug 4200055
1193 		if ( OE_Order_Cache.g_header_rec.header_id <> FND_API.G_MISS_NUM
1194 		     and OE_Order_Cache.g_header_rec.header_id IS NOT NULL
1195 		     and OE_Order_Cache.g_header_rec.header_id = p_x_Line_Payment_rec.header_id ) then
1196             		l_booked_flag := OE_Order_Cache.g_header_rec.booked_flag ;
1197                 else
1198                      OE_ORDER_CACHE.Load_Order_Header(p_x_Line_Payment_rec.header_id);
1199                      l_booked_flag := OE_Order_Cache.g_header_rec.booked_flag ;
1200                 end if ;
1201 	   /*SELECT booked_flag INTO l_booked_flag
1202 	   FROM oe_order_headers_all
1203 	   WHERE header_id=p_x_Line_Payment_rec.header_id; */
1204 	      -- end bug 4200055
1205 
1206 	   IF p_old_Line_Payment_rec.payment_type_code IS NOT NULL THEN
1207 	      SELECT credit_check_flag INTO l_cc_flag_old
1208 	      FROM oe_payment_types_vl
1209 	      WHERE payment_type_code=p_old_Line_Payment_rec.payment_type_code;
1210 	   END IF;
1211 
1212 	   SELECT credit_check_flag INTO l_cc_flag_new
1213 	   FROM oe_payment_types_vl
1214 	   WHERE payment_type_code=p_x_Line_Payment_rec.payment_type_code;
1215 
1216 	   IF l_booked_flag = 'Y' AND
1217 	      NOT OE_GLOBALS.Equal(l_cc_flag_old,l_cc_flag_new) THEN
1218 
1219 	        IF( l_debug_level > 0) THEN
1220 		      oe_debug_pub.add('l_invoke_credit_checking is: '||l_invoke_credit_checking, 3);
1221 		END IF;
1222 
1223                 l_invoke_credit_checking := 'Y';
1224 
1225 	   END IF;
1226 
1227        EXCEPTION
1228 	  WHEN no_data_found THEN
1229 	     null;
1230 	  WHEN others THEN
1231 	     null;
1232        END;
1233 	--bug3625027 end
1234 
1235        IF p_x_Line_Payment_rec.payment_type_code <> 'COMMITMENT' AND
1236           p_old_Line_Payment_rec.payment_type_code = 'COMMITMENT' THEN
1237           Delete_Payment_at_line(p_line_id => p_x_Line_Payment_rec.line_id,
1238                            p_payment_number => p_x_Line_Payment_rec.payment_number,
1239                            p_payment_type_code => 'COMMITMENT',
1240                            p_del_commitment => 1,
1241                                    x_return_status => l_return_status,
1242                                    x_msg_count => l_msg_count,
1243                                    x_msg_data => l_msg_data);
1244 
1245        END IF;
1246     END IF;
1247 
1248     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.payment_set_id,p_old_Line_Payment_rec.payment_set_id)
1249     THEN
1250         NULL;
1251     END IF;
1252 
1253     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.prepaid_amount,p_old_Line_Payment_rec.prepaid_amount)
1254     THEN
1255         NULL;
1256     END IF;
1257 
1258     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.program_application_id,p_old_Line_Payment_rec.program_application_id)
1259     THEN
1260         NULL;
1261     END IF;
1262 
1263     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.program_id,p_old_Line_Payment_rec.program_id)
1264     THEN
1265         NULL;
1266     END IF;
1267 
1268     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.program_update_date,p_old_Line_Payment_rec.program_update_date)
1269     THEN
1270         NULL;
1271     END IF;
1272 
1273     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.receipt_method_id,p_old_Line_Payment_rec.receipt_method_id)
1274     THEN
1275         NULL;
1276     END IF;
1277 
1278     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.request_id,p_old_Line_Payment_rec.request_id)
1279     THEN
1280         NULL;
1281     END IF;
1282 
1283     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.tangible_id,p_old_Line_Payment_rec.tangible_id)
1284     THEN
1285         NULL;
1286     END IF;
1287 
1288     IF l_payments_update_flag = 'Y' and
1289        OE_PrePayment_UTIL.IS_MULTIPLE_PAYMENTS_ENABLED = TRUE then
1290 
1291        oe_debug_pub.add('logging synch from ULPMB.pls payment delayed request', 1);
1292 
1293        oe_debug_pub.add('line_id is: ' || p_x_Line_Payment_rec.line_id);
1294 
1295        OE_delayed_requests_Pvt.log_request
1296 		(p_entity_code            => OE_GLOBALS.G_ENTITY_LINE_PAYMENT,
1297 		p_entity_id              => p_x_Line_Payment_rec.line_id,
1298 		p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
1299 		p_requesting_entity_id   => p_x_Line_Payment_rec.line_id,
1300 		p_request_type           => OE_GLOBALS.G_UPDATE_HDR_PAYMENT,
1301                 p_param1                 => 'UPDATE_LINE',
1302                 p_param2                 => p_x_Line_Payment_rec.header_id,
1303 		x_return_status          => l_return_status);
1304 
1305      END IF;
1306 
1307      IF l_calculate_commitment_flag = 'Y' THEN
1308        IF l_debug_level > 0 then
1309           oe_debug_pub.add('OEXULPMB: Logging delayed request for Commitment.', 1);
1310        END IF;
1311 
1312        OE_Delayed_Requests_Pvt.Log_Request(
1313            p_entity_code            => OE_GLOBALS.G_ENTITY_LINE,
1314            p_entity_id              => p_x_Line_Payment_rec.line_id,
1315            p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
1316            p_requesting_entity_id   => p_x_Line_Payment_rec.line_id,
1317            p_request_type           => OE_GLOBALS.G_CALCULATE_COMMITMENT,
1318            x_return_status          => l_return_status);
1319      END IF;
1320 
1321 --bug3625027 start
1322      IF l_invoke_credit_checking = 'Y'
1323         AND  OE_PrePayment_UTIL.IS_MULTIPLE_PAYMENTS_ENABLED = TRUE THEN
1324         IF( l_debug_level > 0) THEN
1325             oe_debug_pub.add('pviprana: logging a new payment delayed request for processing the payment', 1);
1326             oe_debug_pub.add('line_id is: ' || p_x_Line_Payment_rec.line_id);
1327 	END IF;
1328 	OE_delayed_requests_Pvt.log_request
1329 		   (p_entity_code            => OE_GLOBALS.G_ENTITY_LINE_PAYMENT,
1330 		    p_entity_id              => p_x_Line_Payment_rec.header_id,
1331 		    p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
1332 		    p_requesting_entity_id   => p_x_Line_Payment_rec.line_id,
1333 		    p_request_type           => OE_GLOBALS.G_PROCESS_PAYMENT,
1334 		    p_param1                 => p_x_Line_Payment_rec.line_id,
1335 		    x_return_status          => l_return_status);
1336      END IF;
1337 --bug3625027 end
1338 
1339      IF l_delete_pmt_hold = 'Y' THEN
1340        IF l_debug_level > 0 then
1341           oe_debug_pub.add('OEXULPMB: Logging delayed request for Delete_Payment_Hold.', 3);
1342        END IF;
1343 
1344        OE_delayed_requests_Pvt.log_request
1345 		(p_entity_code            => OE_GLOBALS.G_ENTITY_LINE_PAYMENT,
1346 		p_entity_id              => p_x_Line_Payment_rec.line_id,
1347 		p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
1348 		p_requesting_entity_id   => p_x_Line_Payment_rec.line_id,
1349 		p_request_type           => OE_GLOBALS.G_DELETE_PAYMENT_HOLD,
1350                 p_param1                 => 'VERIFY_PAYMENT',
1351                 p_param2                 => p_x_Line_Payment_rec.header_id,
1352 		x_return_status          => l_return_status);
1353      END IF;
1354 
1355 
1356      oe_debug_pub.add('OEXULPMB.pls : exiting apply attribute changes');
1357 
1358 --ER#7479609 start
1359     IF NOT OE_GLOBALS.Equal(p_x_Line_Payment_rec.payment_type_code,p_old_Line_Payment_rec.payment_type_code)
1360     THEN
1361 		oe_debug_pub.add('logging Delayed request for evaluation of payments hold', 1);
1362 
1363                 OE_delayed_requests_Pvt.log_request
1364                  (p_entity_code            => OE_GLOBALS.G_ENTITY_LINE_PAYMENT,
1365                   p_entity_id              => p_x_Line_Payment_rec.line_id,
1366                   p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
1367                   p_requesting_entity_id   => p_x_Line_Payment_rec.line_id,
1368                   p_request_type           => OE_GLOBALS.G_EVAL_HOLD_SOURCE,
1369                   p_request_unique_key1    => 'PAYMENT_TYPE',
1370                   p_param1                 => 'P',
1371                   p_param2                 => p_x_Line_Payment_rec.payment_type_code,
1372                   x_return_status          => l_return_status);
1373     END IF;
1374 --ER#7479609 end
1375 END Apply_Attribute_Changes;
1376 
1377 --  Procedure Complete_Record
1378 
1379 PROCEDURE Complete_Record
1380 (   p_x_Line_Payment_rec     IN OUT NOCOPY OE_Order_PUB.Line_Payment_Rec_Type
1381 ,   p_old_Line_Payment_rec        IN  OE_Order_PUB.Line_Payment_Rec_Type
1382 )
1383 IS
1384 --
1385 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1386 --
1387 BEGIN
1388 
1389     IF p_x_Line_Payment_rec.attribute1 = FND_API.G_MISS_CHAR THEN
1390         p_x_Line_Payment_rec.attribute1 := p_old_Line_Payment_rec.attribute1;
1391     END IF;
1392 
1393     IF p_x_Line_Payment_rec.attribute2 = FND_API.G_MISS_CHAR THEN
1394         p_x_Line_Payment_rec.attribute2 := p_old_Line_Payment_rec.attribute2;
1395     END IF;
1396 
1397     IF p_x_Line_Payment_rec.attribute3 = FND_API.G_MISS_CHAR THEN
1398         p_x_Line_Payment_rec.attribute3 := p_old_Line_Payment_rec.attribute3;
1399     END IF;
1400 
1401     IF p_x_Line_Payment_rec.attribute4 = FND_API.G_MISS_CHAR THEN
1402         p_x_Line_Payment_rec.attribute4 := p_old_Line_Payment_rec.attribute4;
1403     END IF;
1404 
1405     IF p_x_Line_Payment_rec.attribute5 = FND_API.G_MISS_CHAR THEN
1406         p_x_Line_Payment_rec.attribute5 := p_old_Line_Payment_rec.attribute5;
1407     END IF;
1408 
1409     IF p_x_Line_Payment_rec.attribute6 = FND_API.G_MISS_CHAR THEN
1410         p_x_Line_Payment_rec.attribute6 := p_old_Line_Payment_rec.attribute6;
1411     END IF;
1412 
1413     IF p_x_Line_Payment_rec.attribute7 = FND_API.G_MISS_CHAR THEN
1414         p_x_Line_Payment_rec.attribute7 := p_old_Line_Payment_rec.attribute7;
1415     END IF;
1416 
1417     IF p_x_Line_Payment_rec.attribute8 = FND_API.G_MISS_CHAR THEN
1418         p_x_Line_Payment_rec.attribute8 := p_old_Line_Payment_rec.attribute8;
1419     END IF;
1420 
1421     IF p_x_Line_Payment_rec.attribute9 = FND_API.G_MISS_CHAR THEN
1422         p_x_Line_Payment_rec.attribute9 := p_old_Line_Payment_rec.attribute9;
1423     END IF;
1424 
1425     IF p_x_Line_Payment_rec.attribute10 = FND_API.G_MISS_CHAR THEN
1426         p_x_Line_Payment_rec.attribute10 := p_old_Line_Payment_rec.attribute10;
1427     END IF;
1428 
1429     IF p_x_Line_Payment_rec.attribute11 = FND_API.G_MISS_CHAR THEN
1430         p_x_Line_Payment_rec.attribute11 := p_old_Line_Payment_rec.attribute11;
1431     END IF;
1432 
1433     IF p_x_Line_Payment_rec.attribute12 = FND_API.G_MISS_CHAR THEN
1434         p_x_Line_Payment_rec.attribute12 := p_old_Line_Payment_rec.attribute12;
1435     END IF;
1436 
1437     IF p_x_Line_Payment_rec.attribute13 = FND_API.G_MISS_CHAR THEN
1438         p_x_Line_Payment_rec.attribute13 := p_old_Line_Payment_rec.attribute13;
1439     END IF;
1440 
1441     IF p_x_Line_Payment_rec.attribute14 = FND_API.G_MISS_CHAR THEN
1442         p_x_Line_Payment_rec.attribute14 := p_old_Line_Payment_rec.attribute14;
1443     END IF;
1444 
1445     IF p_x_Line_Payment_rec.attribute15 = FND_API.G_MISS_CHAR THEN
1446         p_x_Line_Payment_rec.attribute15 := p_old_Line_Payment_rec.attribute15;
1447     END IF;
1448 
1449     IF p_x_Line_Payment_rec.context = FND_API.G_MISS_CHAR THEN
1450         p_x_Line_Payment_rec.context := p_old_Line_Payment_rec.context;
1451     END IF;
1452 
1453     IF p_x_Line_Payment_rec.created_by = FND_API.G_MISS_NUM THEN
1454         p_x_Line_Payment_rec.created_by := p_old_Line_Payment_rec.created_by;
1455     END IF;
1456 
1457     IF p_x_Line_Payment_rec.creation_date = FND_API.G_MISS_DATE THEN
1458         p_x_Line_Payment_rec.creation_date := p_old_Line_Payment_rec.creation_date;
1459     END IF;
1460 
1461     IF p_x_Line_Payment_rec.last_updated_by = FND_API.G_MISS_NUM THEN
1462         p_x_Line_Payment_rec.last_updated_by := p_old_Line_Payment_rec.last_updated_by;
1463     END IF;
1464 
1465     IF p_x_Line_Payment_rec.last_update_date = FND_API.G_MISS_DATE THEN
1466         p_x_Line_Payment_rec.last_update_date := p_old_Line_Payment_rec.last_update_date;
1467     END IF;
1468 
1469     IF p_x_Line_Payment_rec.last_update_login = FND_API.G_MISS_NUM THEN
1470         p_x_Line_Payment_rec.last_update_login := p_old_Line_Payment_rec.last_update_login;
1471     END IF;
1472 
1473     IF p_x_Line_Payment_rec.check_number = FND_API.G_MISS_CHAR THEN
1474         p_x_Line_Payment_rec.check_number := p_old_Line_Payment_rec.check_number;
1475     END IF;
1476 
1477     IF p_x_Line_Payment_rec.credit_card_approval_code = FND_API.G_MISS_CHAR THEN
1478         p_x_Line_Payment_rec.credit_card_approval_code := p_old_Line_Payment_rec.credit_card_approval_code;
1479     END IF;
1480 
1481     IF p_x_Line_Payment_rec.credit_card_approval_date = FND_API.G_MISS_DATE THEN
1482         p_x_Line_Payment_rec.credit_card_approval_date := p_old_Line_Payment_rec.credit_card_approval_date;
1483     END IF;
1484 
1485     IF p_x_Line_Payment_rec.credit_card_code = FND_API.G_MISS_CHAR THEN
1486         p_x_Line_Payment_rec.credit_card_code := p_old_Line_Payment_rec.credit_card_code;
1487     END IF;
1488 
1489     IF p_x_Line_Payment_rec.credit_card_expiration_date = FND_API.G_MISS_DATE THEN
1490         p_x_Line_Payment_rec.credit_card_expiration_date := p_old_Line_Payment_rec.credit_card_expiration_date;
1491     END IF;
1492 
1493     IF p_x_Line_Payment_rec.credit_card_holder_name = FND_API.G_MISS_CHAR THEN
1494         p_x_Line_Payment_rec.credit_card_holder_name := p_old_Line_Payment_rec.credit_card_holder_name;
1495     END IF;
1496 
1497     IF p_x_Line_Payment_rec.credit_card_number = FND_API.G_MISS_CHAR THEN
1498         p_x_Line_Payment_rec.credit_card_number := p_old_Line_Payment_rec.credit_card_number;
1499     END IF;
1500 
1501     IF p_x_Line_Payment_rec.payment_level_code = FND_API.G_MISS_CHAR THEN
1502         p_x_Line_Payment_rec.payment_level_code := p_old_Line_Payment_rec.payment_level_code;
1503     END IF;
1504 
1505     IF p_x_Line_Payment_rec.commitment_applied_amount = FND_API.G_MISS_NUM THEN
1506         p_x_Line_Payment_rec.commitment_applied_amount := p_old_Line_Payment_rec.commitment_applied_amount;
1507     END IF;
1508 
1509     IF p_x_Line_Payment_rec.commitment_interfaced_amount = FND_API.G_MISS_NUM THEN
1510         p_x_Line_Payment_rec.commitment_interfaced_amount := p_old_Line_Payment_rec.commitment_interfaced_amount;
1511     END IF;
1512 
1513     IF p_x_Line_Payment_rec.payment_number = FND_API.G_MISS_NUM THEN
1514         p_x_Line_Payment_rec.payment_number := p_old_Line_Payment_rec.payment_number;
1515     END IF;
1516 
1517     IF p_x_Line_Payment_rec.header_id = FND_API.G_MISS_NUM THEN
1518         p_x_Line_Payment_rec.header_id := p_old_Line_Payment_rec.header_id;
1519     END IF;
1520 
1521     IF p_x_Line_Payment_rec.line_id = FND_API.G_MISS_NUM THEN
1522         p_x_Line_Payment_rec.line_id := p_old_Line_Payment_rec.line_id;
1523     END IF;
1524 
1525     IF p_x_Line_Payment_rec.payment_amount = FND_API.G_MISS_NUM THEN
1526         p_x_Line_Payment_rec.payment_amount := p_old_Line_Payment_rec.payment_amount;
1527     END IF;
1528 
1529     IF p_x_Line_Payment_rec.payment_collection_event = FND_API.G_MISS_CHAR THEN
1530         p_x_Line_Payment_rec.payment_collection_event := p_old_Line_Payment_rec.payment_collection_event;
1531     END IF;
1532 
1533     IF p_x_Line_Payment_rec.defer_payment_processing_flag = FND_API.G_MISS_CHAR THEN
1534         p_x_Line_Payment_rec.defer_payment_processing_flag := p_old_Line_Payment_rec.defer_payment_processing_flag;
1535     END IF;
1536 
1537     IF p_x_Line_Payment_rec.payment_trx_id = FND_API.G_MISS_NUM THEN
1538         p_x_Line_Payment_rec.payment_trx_id := p_old_Line_Payment_rec.payment_trx_id;
1539     END IF;
1540 
1541     IF p_x_Line_Payment_rec.payment_type_code = FND_API.G_MISS_CHAR THEN
1542         p_x_Line_Payment_rec.payment_type_code := p_old_Line_Payment_rec.payment_type_code;
1543     END IF;
1544 
1545     IF p_x_Line_Payment_rec.payment_set_id = FND_API.G_MISS_NUM THEN
1546         p_x_Line_Payment_rec.payment_set_id := p_old_Line_Payment_rec.payment_set_id;
1547     END IF;
1548 
1549     IF p_x_Line_Payment_rec.prepaid_amount = FND_API.G_MISS_NUM THEN
1550         p_x_Line_Payment_rec.prepaid_amount := p_old_Line_Payment_rec.prepaid_amount;
1551     END IF;
1552 
1553     IF p_x_Line_Payment_rec.program_application_id = FND_API.G_MISS_NUM THEN
1554         p_x_Line_Payment_rec.program_application_id := p_old_Line_Payment_rec.program_application_id;
1555     END IF;
1556 
1557     IF p_x_Line_Payment_rec.program_id = FND_API.G_MISS_NUM THEN
1558         p_x_Line_Payment_rec.program_id := p_old_Line_Payment_rec.program_id;
1559     END IF;
1560 
1561     IF p_x_Line_Payment_rec.program_update_date = FND_API.G_MISS_DATE THEN
1562         p_x_Line_Payment_rec.program_update_date := p_old_Line_Payment_rec.program_update_date;
1563     END IF;
1564 
1565     IF p_x_Line_Payment_rec.receipt_method_id = FND_API.G_MISS_NUM THEN
1566         p_x_Line_Payment_rec.receipt_method_id := p_old_Line_Payment_rec.receipt_method_id;
1567     END IF;
1568 
1569     IF p_x_Line_Payment_rec.request_id = FND_API.G_MISS_NUM THEN
1570         p_x_Line_Payment_rec.request_id := p_old_Line_Payment_rec.request_id;
1571     END IF;
1572 
1573     IF p_x_Line_Payment_rec.tangible_id = FND_API.G_MISS_CHAR THEN
1574         p_x_Line_Payment_rec.tangible_id := p_old_Line_Payment_rec.tangible_id;
1575     END IF;
1576 
1577     IF p_x_Line_Payment_rec.trxn_extension_id = FND_API.G_MISS_NUM THEN
1578         p_x_Line_Payment_rec.trxn_extension_id := p_old_Line_Payment_rec.trxn_extension_id;
1579     END IF;
1580 
1581     -- R12 CC Encryption
1582     IF p_x_Line_Payment_rec.trxn_extension_id = FND_API.G_MISS_NUM THEN
1583 	p_x_Line_Payment_rec.trxn_extension_id := p_old_Line_Payment_rec.trxn_extension_id;
1584     END IF;
1585 
1586     IF p_x_Line_Payment_rec.instrument_security_code = FND_API.G_MISS_CHAR THEN
1587 	p_x_Line_Payment_rec.instrument_security_code := p_old_Line_Payment_rec.instrument_security_code;
1588     END IF;
1589 
1590     -- R12 CC Encryption
1591 
1592 END Complete_Record;
1593 
1594 --  Procedure Convert_Miss_To_Null
1595 
1596 PROCEDURE Convert_Miss_To_Null
1597 (   p_x_Line_Payment_rec  IN OUT NOCOPY  OE_Order_PUB.Line_Payment_Rec_Type
1598 )
1599 IS
1600 
1601 --
1602 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1603 --
1604 BEGIN
1605 
1606     IF p_x_Line_Payment_rec.attribute1 = FND_API.G_MISS_CHAR THEN
1607         p_x_Line_Payment_rec.attribute1 := NULL;
1608     END IF;
1609 
1610     IF p_x_Line_Payment_rec.attribute2 = FND_API.G_MISS_CHAR THEN
1611         p_x_Line_Payment_rec.attribute2 := NULL;
1612     END IF;
1613 
1614     IF p_x_Line_Payment_rec.attribute3 = FND_API.G_MISS_CHAR THEN
1615         p_x_Line_Payment_rec.attribute3 := NULL;
1616     END IF;
1617 
1618     IF p_x_Line_Payment_rec.attribute4 = FND_API.G_MISS_CHAR THEN
1619         p_x_Line_Payment_rec.attribute4 := NULL;
1620     END IF;
1621 
1622     IF p_x_Line_Payment_rec.attribute5 = FND_API.G_MISS_CHAR THEN
1623         p_x_Line_Payment_rec.attribute5 := NULL;
1624     END IF;
1625 
1626     IF p_x_Line_Payment_rec.attribute6 = FND_API.G_MISS_CHAR THEN
1627         p_x_Line_Payment_rec.attribute6 := NULL;
1628     END IF;
1629 
1630     IF p_x_Line_Payment_rec.attribute7 = FND_API.G_MISS_CHAR THEN
1631         p_x_Line_Payment_rec.attribute7 := NULL;
1632     END IF;
1633 
1634     IF p_x_Line_Payment_rec.attribute8 = FND_API.G_MISS_CHAR THEN
1635         p_x_Line_Payment_rec.attribute8 := NULL;
1636     END IF;
1637 
1638     IF p_x_Line_Payment_rec.attribute9 = FND_API.G_MISS_CHAR THEN
1639         p_x_Line_Payment_rec.attribute9 := NULL;
1640     END IF;
1641 
1642     IF p_x_Line_Payment_rec.attribute10 = FND_API.G_MISS_CHAR THEN
1643         p_x_Line_Payment_rec.attribute10 := NULL;
1644     END IF;
1645 
1646     IF p_x_Line_Payment_rec.attribute11 = FND_API.G_MISS_CHAR THEN
1647         p_x_Line_Payment_rec.attribute11 := NULL;
1648     END IF;
1649 
1650     IF p_x_Line_Payment_rec.attribute12 = FND_API.G_MISS_CHAR THEN
1651         p_x_Line_Payment_rec.attribute12 := NULL;
1652     END IF;
1653 
1654     IF p_x_Line_Payment_rec.attribute13 = FND_API.G_MISS_CHAR THEN
1655         p_x_Line_Payment_rec.attribute13 := NULL;
1656     END IF;
1657 
1658     IF p_x_Line_Payment_rec.attribute14 = FND_API.G_MISS_CHAR THEN
1659         p_x_Line_Payment_rec.attribute14 := NULL;
1660     END IF;
1661 
1662     IF p_x_Line_Payment_rec.attribute15 = FND_API.G_MISS_CHAR THEN
1663         p_x_Line_Payment_rec.attribute15 := NULL;
1664     END IF;
1665 
1666     IF p_x_Line_Payment_rec.context = FND_API.G_MISS_CHAR THEN
1667         p_x_Line_Payment_rec.context := NULL;
1668     END IF;
1669 
1670     IF p_x_Line_Payment_rec.created_by = FND_API.G_MISS_NUM THEN
1671         p_x_Line_Payment_rec.created_by := NULL;
1672     END IF;
1673 
1674     IF p_x_Line_Payment_rec.creation_date = FND_API.G_MISS_DATE THEN
1675         p_x_Line_Payment_rec.creation_date := NULL;
1676     END IF;
1677 
1678     IF p_x_Line_Payment_rec.last_updated_by = FND_API.G_MISS_NUM THEN
1679         p_x_Line_Payment_rec.last_updated_by := NULL;
1680     END IF;
1681 
1682     IF p_x_Line_Payment_rec.last_update_date = FND_API.G_MISS_DATE THEN
1683         p_x_Line_Payment_rec.last_update_date := NULL;
1684     END IF;
1685 
1686     IF p_x_Line_Payment_rec.last_update_login = FND_API.G_MISS_NUM THEN
1687         p_x_Line_Payment_rec.last_update_login := NULL;
1688     END IF;
1689 
1690     IF p_x_Line_Payment_rec.check_number = FND_API.G_MISS_CHAR THEN
1691         p_x_Line_Payment_rec.check_number := NULL;
1692     END IF;
1693 
1694     IF p_x_Line_Payment_rec.credit_card_approval_code = FND_API.G_MISS_CHAR THEN
1695         p_x_Line_Payment_rec.credit_card_approval_code := NULL;
1696     END IF;
1697 
1698     IF p_x_Line_Payment_rec.credit_card_approval_date = FND_API.G_MISS_DATE THEN
1699         p_x_Line_Payment_rec.credit_card_approval_date := NULL;
1700     END IF;
1701 
1702     IF p_x_Line_Payment_rec.credit_card_code = FND_API.G_MISS_CHAR THEN
1703         p_x_Line_Payment_rec.credit_card_code := NULL;
1704     END IF;
1705 
1706     IF p_x_Line_Payment_rec.credit_card_expiration_date = FND_API.G_MISS_DATE THEN
1707         p_x_Line_Payment_rec.credit_card_expiration_date := NULL;
1708     END IF;
1709 
1710     IF p_x_Line_Payment_rec.credit_card_holder_name = FND_API.G_MISS_CHAR THEN
1711         p_x_Line_Payment_rec.credit_card_holder_name := NULL;
1712     END IF;
1713 
1714     IF p_x_Line_Payment_rec.credit_card_number = FND_API.G_MISS_CHAR THEN
1715         p_x_Line_Payment_rec.credit_card_number := NULL;
1716     END IF;
1717 
1718     IF p_x_Line_Payment_rec.payment_level_code = FND_API.G_MISS_CHAR THEN
1719         p_x_Line_Payment_rec.payment_level_code := NULL;
1720     END IF;
1721 
1722     IF p_x_Line_Payment_rec.commitment_applied_amount = FND_API.G_MISS_NUM THEN
1723         p_x_Line_Payment_rec.commitment_applied_amount := NULL;
1724     END IF;
1725 
1726     IF p_x_Line_Payment_rec.commitment_interfaced_amount = FND_API.G_MISS_NUM THEN
1727         p_x_Line_Payment_rec.commitment_interfaced_amount := NULL;
1728     END IF;
1729 
1730     IF p_x_Line_Payment_rec.payment_number = FND_API.G_MISS_NUM THEN
1731         p_x_Line_Payment_rec.payment_number := NULL;
1732     END IF;
1733 
1734     IF p_x_Line_Payment_rec.header_id = FND_API.G_MISS_NUM THEN
1735         p_x_Line_Payment_rec.header_id := NULL;
1736     END IF;
1737 
1738     IF p_x_Line_Payment_rec.line_id = FND_API.G_MISS_NUM THEN
1739         p_x_Line_Payment_rec.line_id := NULL;
1740     END IF;
1741 
1742     IF p_x_Line_Payment_rec.payment_amount = FND_API.G_MISS_NUM THEN
1743         p_x_Line_Payment_rec.payment_amount := NULL;
1744     END IF;
1745 
1746     IF p_x_Line_Payment_rec.payment_collection_event = FND_API.G_MISS_CHAR THEN
1747         p_x_Line_Payment_rec.payment_collection_event := NULL;
1748     END IF;
1749 
1750     IF p_x_Line_Payment_rec.defer_payment_processing_flag = FND_API.G_MISS_CHAR THEN
1751         p_x_Line_Payment_rec.defer_payment_processing_flag := NULL;
1752     END IF;
1753 
1754     IF p_x_Line_Payment_rec.payment_trx_id = FND_API.G_MISS_NUM THEN
1755         p_x_Line_Payment_rec.payment_trx_id := NULL;
1756     END IF;
1757 
1758     IF p_x_Line_Payment_rec.payment_type_code = FND_API.G_MISS_CHAR THEN
1759         p_x_Line_Payment_rec.payment_type_code := NULL;
1760     END IF;
1761 
1762     IF p_x_Line_Payment_rec.payment_set_id = FND_API.G_MISS_NUM THEN
1763         p_x_Line_Payment_rec.payment_set_id := NULL;
1764     END IF;
1765 
1766     IF p_x_Line_Payment_rec.prepaid_amount = FND_API.G_MISS_NUM THEN
1767         p_x_Line_Payment_rec.prepaid_amount := NULL;
1768     END IF;
1769 
1770     IF p_x_Line_Payment_rec.program_application_id = FND_API.G_MISS_NUM THEN
1771         p_x_Line_Payment_rec.program_application_id := NULL;
1772     END IF;
1773 
1774     IF p_x_Line_Payment_rec.program_id = FND_API.G_MISS_NUM THEN
1775         p_x_Line_Payment_rec.program_id := NULL;
1776     END IF;
1777 
1778     IF p_x_Line_Payment_rec.program_update_date = FND_API.G_MISS_DATE THEN
1779         p_x_Line_Payment_rec.program_update_date := NULL;
1780     END IF;
1781 
1782     IF p_x_Line_Payment_rec.receipt_method_id = FND_API.G_MISS_NUM THEN
1783         p_x_Line_Payment_rec.receipt_method_id := NULL;
1784     END IF;
1785 
1786     IF p_x_Line_Payment_rec.request_id = FND_API.G_MISS_NUM THEN
1787         p_x_Line_Payment_rec.request_id := NULL;
1788     END IF;
1789 
1790     IF p_x_Line_Payment_rec.tangible_id = FND_API.G_MISS_CHAR THEN
1791         p_x_Line_Payment_rec.tangible_id := NULL;
1792     END IF;
1793     -- R12 CC Encryption
1794     IF p_x_Line_Payment_rec.trxn_extension_id = FND_API.G_MISS_NUM THEN
1795         p_x_Line_Payment_rec.trxn_extension_id := NULL;
1796     END IF;
1797 
1798     IF p_x_Line_Payment_rec.instrument_security_code = FND_API.G_MISS_CHAR THEN
1799         p_x_Line_Payment_rec.instrument_security_code := NULL;
1800     END IF;
1801 
1802     -- R12 CC Encryption
1803 
1804 END Convert_Miss_To_Null;
1805 
1806 --  Procedure Update_Row
1807 
1808 PROCEDURE Update_Row
1809 (   p_Line_Payment_rec            IN OUT NOCOPY OE_Order_PUB.Line_Payment_Rec_Type
1810 )
1811 IS
1812     l_lock_control   NUMBER;
1813  --added for notification framework
1814       l_index    NUMBER;
1815       l_return_status VARCHAR2(1);
1816 
1817 
1818 --
1819 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1820 --
1821 BEGIN
1822 
1823     SELECT lock_control
1824     INTO   l_lock_control
1825     FROM   OE_PAYMENTS
1826     WHERE  payment_number = p_Line_Payment_rec.payment_number
1827     AND    header_id = p_Line_Payment_rec.header_id
1828     AND    line_id = p_Line_Payment_rec.line_id;
1829 
1830     l_lock_control := l_lock_control + 1;
1831 
1832    --calling notification framework to update global picture
1833    --check code release level first. Notification framework is at Pack H level
1834     IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
1835        IF l_debug_level  > 0 THEN
1836            oe_debug_pub.add(  'JFC: payment_number' || P_LINE_Payment_REC.payment_number ) ;
1837        END IF;
1838 -- Sasi: this should be added by Renga
1839   /*     OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists => True,
1840                     p_Line_pmt_rec =>p_line_Payment_rec,
1841                     p_line_pmt_id => p_line_Payment_rec.payment_number,
1842                     x_index => l_index,
1843                     x_return_status => l_return_status); */
1844        IF l_debug_level  > 0 THEN
1845            oe_debug_pub.add(  'UPDATE_GLOBAL RETURN STATUS FROM OE_LINE_PAYMENT_UTIL.UPDATE_ROW IS: ' || L_RETURN_STATUS ) ;
1846        END IF;
1847        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1848           IF l_debug_level  > 0 THEN
1849               oe_debug_pub.add(  'EVENT NOTIFY - UNEXPECTED ERROR' ) ;
1850           END IF;
1851           IF l_debug_level  > 0 THEN
1852               oe_debug_pub.add(  'EXITING OE_LINE_PAYMENT_UTIL.UPDATE_ROW' , 1 ) ;
1853           END IF;
1854 	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1855        ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1856           IF l_debug_level  > 0 THEN
1857               oe_debug_pub.add(  'UPDATE_GLOBAL_PICTURE ERROR IN OE_LINE_PAYMENT_UTIL.UPDATE_ROW' ) ;
1858           END IF;
1859          IF l_debug_level  > 0 THEN
1860              oe_debug_pub.add(  'EXITING OE_LINE_PAYMENT_UTIL.UPDATE_ROW' , 1 ) ;
1861          END IF;
1862 	 RAISE FND_API.G_EXC_ERROR;
1863        END IF;
1864    END IF; /*code_release_level*/
1865     -- notification framework end
1866 
1867     UPDATE  OE_PAYMENTS
1868     SET     ATTRIBUTE1                     = p_Line_Payment_rec.attribute1
1869     ,       ATTRIBUTE2                     = p_Line_Payment_rec.attribute2
1870     ,       ATTRIBUTE3                     = p_Line_Payment_rec.attribute3
1871     ,       ATTRIBUTE4                     = p_Line_Payment_rec.attribute4
1872     ,       ATTRIBUTE5                     = p_Line_Payment_rec.attribute5
1873     ,       ATTRIBUTE6                     = p_Line_Payment_rec.attribute6
1874     ,       ATTRIBUTE7                     = p_Line_Payment_rec.attribute7
1875     ,       ATTRIBUTE8                     = p_Line_Payment_rec.attribute8
1876     ,       ATTRIBUTE9                     = p_Line_Payment_rec.attribute9
1877     ,       ATTRIBUTE10                    = p_Line_Payment_rec.attribute10
1878     ,       ATTRIBUTE11                    = p_Line_Payment_rec.attribute11
1879     ,       ATTRIBUTE12                    = p_Line_Payment_rec.attribute12
1880     ,       ATTRIBUTE13                    = p_Line_Payment_rec.attribute13
1881     ,       ATTRIBUTE14                    = p_Line_Payment_rec.attribute14
1882     ,       ATTRIBUTE15                    = p_Line_Payment_rec.attribute15
1883     ,       CONTEXT                        = p_Line_Payment_rec.context
1884     ,       CREATED_BY                     = p_Line_Payment_rec.created_by
1885     ,       CREATION_DATE                  = p_Line_Payment_rec.creation_date
1886     ,       LAST_UPDATED_BY                = p_Line_Payment_rec.last_updated_by
1887     ,       LAST_UPDATE_DATE               = p_Line_Payment_rec.last_update_date
1888     ,       LAST_UPDATE_LOGIN              = p_Line_Payment_rec.last_update_login
1889     ,       CHECK_NUMBER                   = p_Line_Payment_rec.check_number
1890     /*,       CREDIT_CARD_APPROVAL_CODE      = p_Line_Payment_rec.credit_card_approval_code --R12 CC Encryption
1891     ,       CREDIT_CARD_APPROVAL_DATE      = p_Line_Payment_rec.credit_card_approval_date
1892     ,       CREDIT_CARD_CODE               = p_Line_Payment_rec.credit_card_code
1893     ,       CREDIT_CARD_EXPIRATION_DATE    = p_Line_Payment_rec.credit_card_expiration_date
1894     ,       CREDIT_CARD_HOLDER_NAME        = p_Line_Payment_rec.credit_card_holder_name
1895     ,       CREDIT_CARD_NUMBER             = p_Line_Payment_rec.credit_card_number*/
1896     ,       PAYMENT_LEVEL_CODE             = p_Line_Payment_rec.payment_level_code
1897     ,       COMMITMENT_APPLIED_AMOUNT      = p_Line_Payment_rec.commitment_applied_amount
1898     ,       COMMITMENT_INTERFACED_AMOUNT   = p_Line_Payment_rec.commitment_interfaced_amount
1899     ,       PAYMENT_NUMBER                     = p_Line_Payment_rec.payment_number
1900     ,       HEADER_ID                      = p_Line_Payment_rec.header_id
1901     ,       LINE_ID                        = p_Line_Payment_rec.line_id
1902     ,       PAYMENT_AMOUNT                 = p_Line_Payment_rec.payment_amount
1903     ,       PAYMENT_COLLECTION_EVENT       = p_Line_Payment_rec.payment_collection_event
1904     ,       PAYMENT_TRX_ID                 = p_Line_Payment_rec.payment_trx_id
1905     ,       PAYMENT_TYPE_CODE              = p_Line_Payment_rec.payment_type_code
1906     ,       PAYMENT_SET_ID                 = p_Line_Payment_rec.payment_set_id
1907     ,       PREPAID_AMOUNT                 = p_Line_Payment_rec.prepaid_amount
1908     ,       PROGRAM_APPLICATION_ID         = p_Line_Payment_rec.program_application_id
1909     ,       PROGRAM_ID                     = p_Line_Payment_rec.program_id
1910     ,       PROGRAM_UPDATE_DATE            = p_Line_Payment_rec.program_update_date
1911     ,       RECEIPT_METHOD_ID              = p_Line_Payment_rec.receipt_method_id
1912     ,       REQUEST_ID                     = p_Line_Payment_rec.request_id
1913     --,       TANGIBLE_ID                    = p_Line_Payment_rec.tangible_id --R12 CC Encryption
1914     ,       DEFER_PAYMENT_PROCESSING_FLAG  = p_Line_Payment_rec.defer_payment_processing_flag
1915     ,       TRXN_EXTENSION_ID              = p_Line_Payment_rec.trxn_extension_id
1916     ,       LOCK_CONTROL                   = l_lock_control
1917     WHERE   PAYMENT_NUMBER = p_Line_Payment_rec.payment_number
1918     AND     HEADER_ID = p_Line_Payment_rec.header_id
1919     AND     LINE_ID = p_Line_Payment_rec.line_id
1920     ;
1921 
1922     p_Line_Payment_rec.lock_control :=   l_lock_control;
1923 
1924 EXCEPTION
1925 
1926     WHEN OTHERS THEN
1927 
1928         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1929         THEN
1930             oe_msg_pub.Add_Exc_Msg
1931             (   G_PKG_NAME
1932             ,   'Update_Row'
1933             );
1934         END IF;
1935 
1936         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1937 
1938 END Update_Row;
1939 
1940 --  Procedure Insert_Row
1941 
1942 PROCEDURE Insert_Row
1943 (   p_Line_Payment_rec       IN OUT NOCOPY  OE_Order_PUB.Line_Payment_Rec_Type
1944 )
1945 IS
1946     l_lock_control   NUMBER:= 1;
1947     l_index          NUMBER;
1948     l_return_status VARCHAR2(1);
1949     l_transaction_phase_code VARCHAR2(30);
1950     --
1951     l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1952     --
1953 BEGIN
1954    IF l_debug_level  > 0 THEN
1955        oe_debug_pub.add(  'ENTERING OE_LINE_PAYMENT_UTIL.INSERT_ROW' , 1 ) ;
1956    END IF;
1957 
1958     -- QUOTING change
1959     -- No need to insert commitment for orders in negotiation phase
1960     IF p_line_Payment_rec.payment_type_code = 'COMMITMENT' THEN
1961       BEGIN
1962         SELECT   l.transaction_phase_code
1963         INTO     l_transaction_phase_code
1964         FROM     oe_order_lines_all l
1965         WHERE    l.line_id = p_line_Payment_rec.line_id;
1966 
1967       EXCEPTION
1968         WHEN NO_DATA_FOUND THEN
1969                 null;
1970       END;
1971 
1972       if l_debug_level > 0 then
1973         oe_debug_pub.add('trxn phase :'||l_transaction_phase_code);
1974       end if;
1975       IF nvl(l_transaction_phase_code, 'F') = 'N' THEN
1976         RETURN;
1977       END IF;
1978    END IF;
1979 
1980 
1981     INSERT  INTO OE_PAYMENTS
1982     (       ATTRIBUTE1
1983     ,       ATTRIBUTE2
1984     ,       ATTRIBUTE3
1985     ,       ATTRIBUTE4
1986     ,       ATTRIBUTE5
1987     ,       ATTRIBUTE6
1988     ,       ATTRIBUTE7
1989     ,       ATTRIBUTE8
1990     ,       ATTRIBUTE9
1991     ,       ATTRIBUTE10
1992     ,       ATTRIBUTE11
1993     ,       ATTRIBUTE12
1994     ,       ATTRIBUTE13
1995     ,       ATTRIBUTE14
1996     ,       ATTRIBUTE15
1997     ,       CONTEXT
1998     ,       CREATED_BY
1999     ,       CREATION_DATE
2000     ,       LAST_UPDATED_BY
2001     ,       LAST_UPDATE_DATE
2002     ,       LAST_UPDATE_LOGIN
2003     ,       CHECK_NUMBER
2004     /*,       CREDIT_CARD_APPROVAL_CODE  --R12 CC Encryption
2005     ,       CREDIT_CARD_APPROVAL_DATE
2006     ,       CREDIT_CARD_CODE
2007     ,       CREDIT_CARD_EXPIRATION_DATE
2008     ,       CREDIT_CARD_HOLDER_NAME
2009     ,       CREDIT_CARD_NUMBER*/  --R12 CC Encryption
2010     ,       PAYMENT_LEVEL_CODE
2011     ,       COMMITMENT_APPLIED_AMOUNT
2012     ,       COMMITMENT_INTERFACED_AMOUNT
2013     ,       PAYMENT_NUMBER
2014     ,       HEADER_ID
2015     ,       LINE_ID
2016     ,       PAYMENT_AMOUNT
2017     ,       PAYMENT_COLLECTION_EVENT
2018     ,       PAYMENT_TRX_ID
2019     ,       PAYMENT_TYPE_CODE
2020     ,       PAYMENT_SET_ID
2021     ,       PREPAID_AMOUNT
2022     ,       PROGRAM_APPLICATION_ID
2023     ,       PROGRAM_ID
2024     ,       PROGRAM_UPDATE_DATE
2025     ,       RECEIPT_METHOD_ID
2026     ,       REQUEST_ID
2027     --,       TANGIBLE_ID --R12 CC Encryption
2028     ,       DEFER_PAYMENT_PROCESSING_FLAG
2029     ,       TRXN_EXTENSION_ID
2030     ,       LOCK_CONTROL
2031     ,       ORIG_SYS_PAYMENT_REF  --5892425
2032     )
2033     VALUES
2034     (       p_Line_Payment_rec.attribute1
2035     ,       p_Line_Payment_rec.attribute2
2036     ,       p_Line_Payment_rec.attribute3
2037     ,       p_Line_Payment_rec.attribute4
2038     ,       p_Line_Payment_rec.attribute5
2039     ,       p_Line_Payment_rec.attribute6
2040     ,       p_Line_Payment_rec.attribute7
2041     ,       p_Line_Payment_rec.attribute8
2042     ,       p_Line_Payment_rec.attribute9
2043     ,       p_Line_Payment_rec.attribute10
2044     ,       p_Line_Payment_rec.attribute11
2045     ,       p_Line_Payment_rec.attribute12
2046     ,       p_Line_Payment_rec.attribute13
2047     ,       p_Line_Payment_rec.attribute14
2048     ,       p_Line_Payment_rec.attribute15
2049     ,       p_Line_Payment_rec.context
2050     ,       p_Line_Payment_rec.created_by
2051     ,       p_Line_Payment_rec.creation_date
2052     ,       p_Line_Payment_rec.last_updated_by
2053     ,       p_Line_Payment_rec.last_update_date
2054     ,       p_Line_Payment_rec.last_update_login
2055     ,       p_Line_Payment_rec.check_number
2056     /*,       p_Line_Payment_rec.credit_card_approval_code --R12 CC Encryption
2057     ,       p_Line_Payment_rec.credit_card_approval_date
2058     ,       p_Line_Payment_rec.credit_card_code
2059     ,       p_Line_Payment_rec.credit_card_expiration_date
2060     ,       p_Line_Payment_rec.credit_card_holder_name
2061     ,       p_Line_Payment_rec.credit_card_number*/  --R12 CC Encryption
2062     ,       p_Line_Payment_rec.payment_level_code
2063     ,       p_Line_Payment_rec.commitment_applied_amount
2064     ,       p_Line_Payment_rec.commitment_interfaced_amount
2065     ,       p_Line_Payment_rec.payment_number
2066     ,       p_Line_Payment_rec.header_id
2067     ,       p_Line_Payment_rec.line_id
2068     ,       p_Line_Payment_rec.payment_amount
2069     ,       p_Line_Payment_rec.payment_collection_event
2070     ,       p_Line_Payment_rec.payment_trx_id
2071     ,       p_Line_Payment_rec.payment_type_code
2072     ,       p_Line_Payment_rec.payment_set_id
2073     ,       p_Line_Payment_rec.prepaid_amount
2074     ,       p_Line_Payment_rec.program_application_id
2075     ,       p_Line_Payment_rec.program_id
2076     ,       p_Line_Payment_rec.program_update_date
2077     ,       p_Line_Payment_rec.receipt_method_id
2078     ,       p_Line_Payment_rec.request_id
2079     --,       p_Line_Payment_rec.tangible_id --R12 CC Encryption
2080     ,       p_Line_Payment_rec.defer_payment_processing_flag
2081     ,       p_Line_Payment_rec.trxn_extension_id
2082     ,       l_lock_control
2083     ,       p_Line_Payment_rec.ORIG_SYS_PAYMENT_REF  --5892425
2084     );
2085 
2086     p_Line_Payment_rec.lock_control :=   l_lock_control;
2087 
2088     --calling notification framework to update global picture
2089   --check code release level first. Notification framework is at Pack H level
2090    IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
2091 /*      OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists => True,
2092                     p_old_lin_pmt_rec => NULL,
2093                     p_lin_pmt_rec =>p_line_Payment_rec,
2094                     p_lin_pmt_id => p_line_Payment_rec.payment_number,
2095                     x_index => l_index,
2096                     x_return_status => l_return_status); */
2097        IF l_debug_level  > 0 THEN
2098            oe_debug_pub.add(  'UPDATE_GLOBAL RETURN STATUS FROM OE_LINE_PAYMENT_UTIL.INSERT_ROW IS: ' || L_RETURN_STATUS ) ;
2099        END IF;
2100        IF l_debug_level  > 0 THEN
2101            oe_debug_pub.add(  'RETURNED INDEX IS: ' || L_INDEX , 1 ) ;
2102        END IF;
2103 
2104       IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2105         IF l_debug_level  > 0 THEN
2106             oe_debug_pub.add(  'EVENT NOTIFY - UNEXPECTED ERROR' ) ;
2107         END IF;
2108         IF l_debug_level  > 0 THEN
2109             oe_debug_pub.add(  'EXITING OE_LINE_PAYMENT_UTIL.INSERT_ROW' , 1 ) ;
2110         END IF;
2111 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2112       ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2113         IF l_debug_level  > 0 THEN
2114             oe_debug_pub.add(  'UPDATE_GLOBAL_PICTURE ERROR IN OE_LINE_PAYMENT_UTIL.INSERT_ROW' ) ;
2115         END IF;
2116         IF l_debug_level  > 0 THEN
2117             oe_debug_pub.add(  'EXITING OE_LINE_PAYMENT_UTIL.INSERT_ROW' , 1 ) ;
2118         END IF;
2119 	RAISE FND_API.G_EXC_ERROR;
2120       END IF;
2121    END IF; /*code_release_level*/
2122  -- notification framework end
2123 
2124     IF l_debug_level  > 0 THEN
2125         oe_debug_pub.add(  'EXITING OE_LINE_PAYMENT_UTIL.INSERT_ROW' , 1 ) ;
2126     END IF;
2127 
2128 EXCEPTION
2129 
2130     WHEN OTHERS THEN
2131 
2132         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2133         THEN
2134             oe_msg_pub.Add_Exc_Msg
2135             (   G_PKG_NAME
2136             ,   'Insert_Row'
2137             );
2138         END IF;
2139 
2140         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2141 
2142 END Insert_Row;
2143 
2144 --  Procedure Delete_Row
2145 
2146 PROCEDURE Delete_Row
2147 (   p_payment_number              IN  NUMBER :=
2148                                         FND_API.G_MISS_NUM
2149 ,   p_line_id                     IN  NUMBER :=
2150                                         FND_API.G_MISS_NUM
2151 ,   p_header_id                   IN  NUMBER :=
2152                                         FND_API.G_MISS_NUM
2153 )
2154 IS
2155 l_return_status		VARCHAR2(30);
2156 p_payment_type_code     VARCHAR2(30) := NULL;
2157 del_commitment number := 0;
2158 l_msg_count number := 0;
2159 l_msg_data varchar2(2000) := null;
2160 --R12 CC Encryption
2161 l_trxn_extension_id  NUMBER;
2162 l_invoice_to_org_id  NUMBER;
2163 l_payment_type_code VARCHAR2(80);
2164 --R12 CC Encryption
2165 
2166 CURSOR payment IS
2167 	SELECT payment_number, payment_type_code,trxn_extension_id
2168 	FROM OE_PAYMENTS
2169 	WHERE   LINE_ID = p_line_id
2170         AND     HEADER_ID = p_header_id;
2171  -- added for notification framework
2172         l_new_line_Payment_rec     OE_Order_PUB.Line_Payment_Rec_Type;
2173         l_index           NUMBER;
2174         --
2175         l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2176         --
2177 BEGIN
2178   IF l_debug_level  > 0 THEN
2179       oe_debug_pub.add(  'ENTERING OE_LINE_PAYMENT_UTIL.DELETE_ROW' , 1 ) ;
2180   END IF;
2181 
2182   IF p_line_id <> FND_API.G_MISS_NUM AND
2183      nvl(p_payment_number, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
2184   THEN
2185     FOR l_pmt IN payment LOOP
2186 
2187     --added notification framework
2188    --check code release level first. Notification framework is at Pack H level
2189       IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
2190       /* Set the operation on the record so that globals are updated as well */
2191         l_new_line_Payment_rec.operation := OE_GLOBALS.G_OPR_DELETE;
2192         l_new_line_Payment_rec.payment_number := l_pmt.payment_number;
2193         --R12 CC Encryption
2194         l_payment_type_code := l_pmt.payment_type_code;
2195         l_trxn_extension_id := l_pmt.trxn_extension_id;
2196         --R12 CC Encryption
2197         if l_pmt.payment_type_code = 'COMMITMENT' then
2198            del_commitment := 1;
2199         end if;
2200 
2201 	--R12 CC Encryption
2202 	--Calling delete API of Oracle Payments only if the payment
2203 	--type is credit card ach or direct debit.
2204 	IF l_payment_type_code in ('CREDIT_CARD','ACH','DIRECT_DEBIT') THEN
2205 		select invoice_to_org_id into l_invoice_to_org_id  --Verify
2206 		from oe_order_lines_all where
2207 		header_id = p_header_id
2208 		and line_id = p_line_id;
2209 		IF l_debug_level  > 0 THEN
2210 			oe_debug_pub.add('Deleting trxn id...'||l_trxn_extension_id);
2211 			oe_debug_pub.add('Invoice to org.'||l_invoice_to_org_id);
2212 		END IF;
2213 
2214 		OE_PAYMENT_TRXN_UTIL.Delete_Payment_Trxn
2215 		(p_header_id     => p_header_id,
2216 		 p_line_id       => p_line_id,
2217 		 p_payment_number=> l_pmt.payment_number,
2218 		 P_site_use_id	 => l_invoice_to_org_id,
2219 		 p_trxn_extension_id	=> l_trxn_extension_id,
2220 		 x_return_status    =>l_return_status,
2221 		 x_msg_count        => l_msg_count,
2222 		 x_msg_data        => l_msg_data);
2223 
2224 		    IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2225 			  IF l_debug_level  > 0 THEN
2226 			      oe_debug_pub.add(  'Delete Payment at OE_LINE_Payment_UTIL.DELETE_ROW - UNEXPECTED ERROR' ) ;
2227 			      oe_debug_pub.add('Error message'||sqlerrm);
2228 			      oe_debug_pub.add('Msg data'||l_msg_data);
2229 			  END IF;
2230 			  IF l_debug_level  > 0 THEN
2231 			      oe_debug_pub.add(  'EXITING OE_LINE_Payment_UTIL.DELETE_ROW' , 1 ) ;
2232 			  END IF;
2233 			  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2234 			ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2235 			  IF l_debug_level  > 0 THEN
2236 			      oe_debug_pub.add(  'Delete Payment at OE_LINE_Payment_UTIL.DELETE_ROW' ) ;
2237 			      oe_debug_pub.add('Error message'||sqlerrm);
2238 			      oe_debug_pub.add('Msg data'||l_msg_data);
2239 			  END IF;
2240 			  IF l_debug_level  > 0 THEN
2241 			      oe_debug_pub.add(  'EXITING OE_LINE_Payment_UTIL.DELETE_ROW' , 1 ) ;
2242 			  END IF;
2243 			  RAISE FND_API.G_EXC_ERROR;
2244 		    END IF;
2245 	END IF;
2246 	--R12 CC Encryption
2247 
2248 
2249         /*OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists => True,
2250                     p_lin_pmt_rec =>l_new_line_Payment_rec,
2251                     p_lin_pmt_id => l_pmt.payment_number,
2252                     x_index => l_index,
2253                     x_return_status => l_return_status);
2254          IF l_debug_level  > 0 THEN
2255              oe_debug_pub.add(  'UPDATE_GLOBAL RETURN STATUS FROM OE_LINE_PAYMENT_UTIL.DELETE_ROW IS: ' || L_RETURN_STATUS ) ;
2256          END IF;
2257          IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2258            IF l_debug_level  > 0 THEN
2259                oe_debug_pub.add(  'EVENT NOTIFY - UNEXPECTED ERROR' ) ;
2260            END IF;
2261            IF l_debug_level  > 0 THEN
2262                oe_debug_pub.add(  'EXITING OE_LINE_PAYMENT_UTIL.DELETE_ROW' , 1 ) ;
2263            END IF;
2264  	   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2265         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2266            IF l_debug_level  > 0 THEN
2267                oe_debug_pub.add(  'UPDATE_GLOBAL_PICTURE ERROR IN OE_LINE_PAYMENT_UTIL.DELETE_ROW' ) ;
2268            END IF;
2269             IF l_debug_level  > 0 THEN
2270                 oe_debug_pub.add(  'EXITING OE_LINE_PAYMENT_UTIL.DELETE_ROW' , 1 ) ;
2271             END IF;
2272 	    RAISE FND_API.G_EXC_ERROR;
2273          END IF;*/
2274        END IF; /*code_release_level*/
2275      -- notification framework end
2276 
2277     END LOOP;
2278 
2279 
2280       OE_Delayed_Requests_Pvt.Delete_Reqs_for_deleted_entity(
2281         p_entity_code  => OE_GLOBALS.G_ENTITY_LINE_PAYMENT,
2282         p_entity_id     => p_line_id,
2283         x_return_status => l_return_status
2284         );
2285     DELETE  FROM OE_PAYMENTS
2286     WHERE   LINE_ID = p_line_id
2287     AND     HEADER_ID = p_header_id;
2288 
2289 --3382262
2290     IF l_debug_level  > 0 THEN
2291         oe_debug_pub.add('1: after executing delete statement against oe_payments - before delete_payment_at_line');
2292     END IF;
2293 
2294 
2295     Delete_Payment_at_line(p_line_id => p_line_id,
2296                            p_del_commitment => del_commitment,
2297                            x_return_status => l_return_status,
2298                            x_msg_count => l_msg_count,
2299                            x_msg_data => l_msg_data);
2300 
2301     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2302           IF l_debug_level  > 0 THEN
2303               oe_debug_pub.add(  'Delete Payment at Line - UNEXPECTED ERROR' ) ;
2304           END IF;
2305           IF l_debug_level  > 0 THEN
2306               oe_debug_pub.add(  'EXITING OE_LINE_Payment_UTIL.DELETE_ROW' , 1 ) ;
2307           END IF;
2308     	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2309         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2310           IF l_debug_level  > 0 THEN
2311               oe_debug_pub.add(  'Delete Payment at Line - OE_LINE_Payment_UTIL.DELETE_ROW' ) ;
2312           END IF;
2313           IF l_debug_level  > 0 THEN
2314               oe_debug_pub.add(  'EXITING OE_LINE_Payment_UTIL.DELETE_ROW' , 1 ) ;
2315           END IF;
2316 	  RAISE FND_API.G_EXC_ERROR;
2317     END IF;
2318 --3382262
2319 
2320     IF l_debug_level  > 0 THEN
2321        oe_debug_pub.add(  'Releasing line level authorization hold.' , 3 ) ;
2322     END IF;
2323     OE_Verify_Payment_PUB.Release_Verify_Line_Hold
2324                                  ( p_header_id     => p_header_id
2325                                  , p_line_id       => p_line_id
2326                                  , p_epayment_hold => 'Y'
2327                                  , p_msg_count     => l_msg_count
2328                                  , p_msg_data      => l_msg_data
2329                                  , p_return_status => l_return_status
2330                                  );
2331 
2332       IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2333            RAISE FND_API.G_EXC_ERROR;
2334       ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2335         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2336       END IF;
2337 
2338   ELSIF p_line_id <> FND_API.G_MISS_NUM AND
2339         p_payment_number <> FND_API.G_MISS_NUM THEN
2340      --added notification framework
2341    --check code release level first. Notification framework is at Pack H level
2342      IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110508' THEN
2343       /* Set the operation on the record so that globals are updated as well */
2344         l_new_line_Payment_rec.operation := OE_GLOBALS.G_OPR_DELETE;
2345         l_new_line_Payment_rec.payment_number := p_payment_number;
2346         l_new_line_Payment_rec.line_id := p_line_id;
2347 /*       OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists => True,
2348                     p_Lin_pmt_rec =>l_new_line_Payment_rec,
2349                     p_lin_pmt_id => p_payment_number,
2350                     x_index => l_index,
2351                     x_return_status => l_return_status); */
2352 --ER#7479609 start
2353 	Delete_Line_PaymentType_Hold
2354 	(
2355 	   p_header_id      => p_header_id
2356 	,  p_line_id   	     => p_line_id
2357 	,  p_payment_number  => p_payment_number
2358 	,  x_msg_count        => l_msg_count
2359 	,  x_msg_data        => l_msg_data
2360 	,  x_return_status   => l_return_status
2361 	);
2362       IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2363            RAISE FND_API.G_EXC_ERROR;
2364       ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2365         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2366       END IF;
2367 --ER#7479609 end
2368 
2369        IF l_debug_level  > 0 THEN
2370            oe_debug_pub.add(  'UPDATE_GLOBAL RETURN STATUS FROM OE_LINE_PAYMENT_UTIL.DELETE_ROW IS: ' || L_RETURN_STATUS ) ;
2371        END IF;
2372 
2373         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2374           IF l_debug_level  > 0 THEN
2375               oe_debug_pub.add(  'EVENT NOTIFY - UNEXPECTED ERROR' ) ;
2376           END IF;
2377           IF l_debug_level  > 0 THEN
2378               oe_debug_pub.add(  'EXITING OE_LINE_PAYMENT_UTIL.DELETE_ROW' , 1 ) ;
2379           END IF;
2380     	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2381         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2382           IF l_debug_level  > 0 THEN
2383               oe_debug_pub.add(  'UPDATE_GLOBAL_PICTURE ERROR IN OE_LINE_PAYMENT_UTIL.DELETE_ROW' ) ;
2384           END IF;
2385           IF l_debug_level  > 0 THEN
2386               oe_debug_pub.add(  'EXITING OE_LINE_PAYMENT_UTIL.DELETE_ROW' , 1 ) ;
2387           END IF;
2388 	  RAISE FND_API.G_EXC_ERROR;
2389         END IF;
2390       END IF; /*code_release_level*/
2391     -- notification framework end
2392 
2393      OE_Delayed_Requests_Pvt.Delete_Reqs_for_deleted_entity(
2394         p_entity_code  => OE_GLOBALS.G_ENTITY_LINE_Payment,
2395         p_entity_id     => p_line_id,
2396         x_return_status => l_return_status
2397         );
2398 
2399     Begin
2400        select payment_type_code,trxn_extension_id into p_payment_type_code,l_trxn_extension_id
2401        from oe_payments
2402        where payment_number = p_payment_number
2403        and line_id = p_line_id
2404        and header_id = p_header_id;
2405 
2406     Exception
2407        when no_data_found then
2408 
2409         Begin
2410           select payment_type_code,trxn_extension_id into p_payment_type_code,l_trxn_extension_id --R12 CC Encryption
2411           from oe_payments
2412           where line_id = p_line_id
2413           and payment_number is null
2414           and header_id = p_header_id;
2415 
2416         Exception
2417           when no_data_found then
2418 
2419            oe_debug_pub.add('ULPMB.pls: delete_row - could not find the row');
2420            Raise;
2421           when too_many_rows then
2422            oe_debug_pub.add('ULPMB.pls : delete row - too many rows - should not happen');
2423            Raise;
2424         End;
2425 
2426     END;
2427 
2428     if p_payment_type_code = 'COMMITMENT' then
2429        del_commitment := 1;
2430     end if;
2431     --R12 CC Encryption
2432     --Calling delete API of Oracle Payments only if the payment
2433     --type is credit card ach or direct debit.
2434     IF p_payment_type_code in ('CREDIT_CARD','ACH','DIRECT_DEBIT') THEN
2435 	       select invoice_to_org_id into l_invoice_to_org_id
2436 	       from oe_order_lines_all where header_id = p_header_id
2437 	       and line_id = p_line_id;
2438 		IF l_debug_level  > 0 THEN
2439 			oe_debug_pub.add('Deleting trxn id...'||l_trxn_extension_id);
2440 			oe_debug_pub.add('Invoice to org.'||l_invoice_to_org_id);
2441 		END IF;
2442 
2443 		OE_PAYMENT_TRXN_UTIL.Delete_Payment_Trxn
2444 		(p_header_id     => p_header_id,
2445 		 p_line_id       => p_line_id,
2446 		 p_payment_number=> p_payment_number,
2447 		 P_site_use_id	 => l_invoice_to_org_id,
2448 		 p_trxn_extension_id	=> l_trxn_extension_id,
2449 		 x_return_status    =>l_return_status,
2450 		 x_msg_count        => l_msg_count,
2451 		 x_msg_data        => l_msg_data);
2452 
2453 
2454 	    IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2455 		  IF l_debug_level  > 0 THEN
2456 		      oe_debug_pub.add(  '2:Delete Payment OE_LINE_Payment_UTIL.DELETE_ROW - UNEXPECTED ERROR' ) ;
2457 		  END IF;
2458 		  IF l_debug_level  > 0 THEN
2459 		      oe_debug_pub.add(  'EXITING OE_LINE_Payment_UTIL.DELETE_ROW' , 1 ) ;
2460 		  END IF;
2461 		  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2462 		ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2463 		  IF l_debug_level  > 0 THEN
2464 		      oe_debug_pub.add(  '2:Delete Payment OE_LINE_Payment_UTIL.DELETE_ROW' ) ;
2465 		  END IF;
2466 		  IF l_debug_level  > 0 THEN
2467 		      oe_debug_pub.add(  'EXITING OE_LINE_Payment_UTIL.DELETE_ROW' , 1 ) ;
2468 		  END IF;
2469 		  RAISE FND_API.G_EXC_ERROR;
2470 	    END IF;
2471     END IF;
2472     --R12 CC Encryption
2473 
2474     DELETE  FROM OE_PAYMENTS
2475     WHERE   PAYMENT_NUMBER = p_payment_number
2476     AND     LINE_ID = p_line_id
2477     AND     HEADER_ID = p_header_id
2478     ;
2479 
2480     --3382262
2481     IF l_debug_level  > 0 THEN
2482         oe_debug_pub.add('2: after executing delete statement against oe_payments - before delete_payment_at_line');
2483     END IF;
2484 
2485 
2486     Delete_Payment_at_line(p_line_id => p_line_id,
2487                            p_payment_number => p_payment_number,
2488                            p_payment_type_code => p_payment_type_code,
2489                            p_del_commitment => del_commitment,
2490                                    x_return_status => l_return_status,
2491                                    x_msg_count => l_msg_count,
2492                                    x_msg_data => l_msg_data);
2493 
2494     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2495           IF l_debug_level  > 0 THEN
2496               oe_debug_pub.add(  'Delete Payment at Line - UNEXPECTED ERROR' ) ;
2497           END IF;
2498           IF l_debug_level  > 0 THEN
2499               oe_debug_pub.add(  'EXITING OE_LINE_Payment_UTIL.DELETE_ROW' , 1 ) ;
2500           END IF;
2501     	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2502         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2503           IF l_debug_level  > 0 THEN
2504               oe_debug_pub.add(  'Delete Payment at Line - OE_LINE_Payment_UTIL.DELETE_ROW' ) ;
2505           END IF;
2506           IF l_debug_level  > 0 THEN
2507               oe_debug_pub.add(  'EXITING OE_LINE_Payment_UTIL.DELETE_ROW' , 1 ) ;
2508           END IF;
2509 	  RAISE FND_API.G_EXC_ERROR;
2510     END IF;
2511 --3382262
2512 
2513     IF p_payment_type_code = 'CREDIT_CARD' THEN
2514       IF l_debug_level  > 0 THEN
2515          oe_debug_pub.add(  'Releasing line level authorization hold.' , 3 ) ;
2516       END IF;
2517       OE_Verify_Payment_PUB.Release_Verify_Line_Hold
2518                                  ( p_header_id     => p_header_id
2519                                  , p_line_id       => p_line_id
2520                                  , p_epayment_hold => 'Y'
2521                                  , p_msg_count     => l_msg_count
2522                                  , p_msg_data      => l_msg_data
2523                                  , p_return_status => l_return_status
2524                                  );
2525 
2526       IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2527            RAISE FND_API.G_EXC_ERROR;
2528       ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2529         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2530       END IF;
2531     END IF;
2532 
2533   END IF;
2534 
2535 EXCEPTION
2536 
2537     WHEN OTHERS THEN
2538 
2539         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2540         THEN
2541             oe_msg_pub.Add_Exc_Msg
2542             (   G_PKG_NAME
2543             ,   'Delete_Row'
2544             );
2545         END IF;
2546 
2547         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2548 
2549 END Delete_Row;
2550 
2551 --  Procedure Query_Row
2552 PROCEDURE Query_Row
2553 (   p_payment_number               IN  NUMBER,
2554     p_line_id                      IN  NUMBER,
2555     p_header_id                    IN  NUMBER :=
2556                                         FND_API.G_MISS_NUM,
2557    x_Line_Payment_rec  IN OUT NOCOPY OE_Order_PUB.Line_Payment_Rec_Type
2558 )
2559 IS
2560 x_Line_Payment_tbl OE_Order_PUB.Line_Payment_Tbl_Type;
2561 CURSOR l_Line_Payment_csr IS
2562     SELECT  ATTRIBUTE1
2563     ,       ATTRIBUTE2
2564     ,       ATTRIBUTE3
2565     ,       ATTRIBUTE4
2566     ,       ATTRIBUTE5
2567     ,       ATTRIBUTE6
2568     ,       ATTRIBUTE7
2569     ,       ATTRIBUTE8
2570     ,       ATTRIBUTE9
2571     ,       ATTRIBUTE10
2572     ,       ATTRIBUTE11
2573     ,       ATTRIBUTE12
2574     ,       ATTRIBUTE13
2575     ,       ATTRIBUTE14
2576     ,       ATTRIBUTE15
2577     ,       CONTEXT
2578     ,       CREATED_BY
2579     ,       CREATION_DATE
2580     ,       LAST_UPDATED_BY
2581     ,       LAST_UPDATE_DATE
2582     ,       LAST_UPDATE_LOGIN
2583     ,       CHECK_NUMBER  --R12 CC Encryption Verify
2584     ,       CREDIT_CARD_APPROVAL_CODE
2585     ,       CREDIT_CARD_APPROVAL_DATE
2586     ,       CREDIT_CARD_CODE
2587     ,       CREDIT_CARD_EXPIRATION_DATE
2588     ,       CREDIT_CARD_HOLDER_NAME
2589     ,       CREDIT_CARD_NUMBER --R12 CC Encryption Verify
2590     ,       PAYMENT_LEVEL_CODE
2591     ,       COMMITMENT_APPLIED_AMOUNT
2592     ,       COMMITMENT_INTERFACED_AMOUNT
2593     ,       HEADER_ID
2594     ,       LINE_ID
2595     ,       PAYMENT_AMOUNT
2596     ,       PAYMENT_COLLECTION_EVENT
2597     ,       PAYMENT_TRX_ID
2598     ,       PAYMENT_TYPE_CODE
2599     ,       PAYMENT_SET_ID
2600     ,       PREPAID_AMOUNT
2601     ,       PROGRAM_APPLICATION_ID
2602     ,       PROGRAM_ID
2603     ,       PROGRAM_UPDATE_DATE
2604     ,       RECEIPT_METHOD_ID
2605     ,       REQUEST_ID
2606     ,       TANGIBLE_ID --R12 CC Encryption Verify
2607     ,       LOCK_CONTROL
2608     ,       PAYMENT_NUMBER
2609     ,       DEFER_PAYMENT_PROCESSING_FLAG
2610     ,       TRXN_EXTENSION_ID
2611     FROM    OE_PAYMENTS
2612     WHERE ( PAYMENT_NUMBER = p_payment_number
2613     AND LINE_ID = p_line_id
2614     AND HEADER_ID = p_header_id
2615     );
2616 
2617 --
2618 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2619 --
2620 --R12 CC Encryption Verify
2621 x_bank_account_number VARCHAR2(100); --bug 5170754
2622 x_check_number        varchar2(100);
2623 l_return_status      VARCHAR2(30) := NULL ;
2624 l_msg_count          NUMBER := 0 ;
2625 l_msg_data           VARCHAR2(2000) := NULL ;
2626 
2627 --R12 CC Encryption
2628 
2629 BEGIN
2630     --  Loop over fetched records
2631 
2632     FOR l_implicit_rec IN l_Line_Payment_csr LOOP
2633 
2634         x_Line_Payment_rec.attribute1 := l_implicit_rec.ATTRIBUTE1;
2635         x_Line_Payment_rec.attribute2 := l_implicit_rec.ATTRIBUTE2;
2636         x_Line_Payment_rec.attribute3 := l_implicit_rec.ATTRIBUTE3;
2637         x_Line_Payment_rec.attribute4 := l_implicit_rec.ATTRIBUTE4;
2638         x_Line_Payment_rec.attribute5 := l_implicit_rec.ATTRIBUTE5;
2639         x_Line_Payment_rec.attribute6 := l_implicit_rec.ATTRIBUTE6;
2640         x_Line_Payment_rec.attribute7 := l_implicit_rec.ATTRIBUTE7;
2641         x_Line_Payment_rec.attribute8 := l_implicit_rec.ATTRIBUTE8;
2642         x_Line_Payment_rec.attribute9 := l_implicit_rec.ATTRIBUTE9;
2643         x_Line_Payment_rec.attribute10 := l_implicit_rec.ATTRIBUTE10;
2644         x_Line_Payment_rec.attribute11 := l_implicit_rec.ATTRIBUTE11;
2645         x_Line_Payment_rec.attribute12 := l_implicit_rec.ATTRIBUTE12;
2646         x_Line_Payment_rec.attribute13 := l_implicit_rec.ATTRIBUTE13;
2647         x_Line_Payment_rec.attribute14 := l_implicit_rec.ATTRIBUTE14;
2648         x_Line_Payment_rec.attribute15 := l_implicit_rec.ATTRIBUTE15;
2649         x_Line_Payment_rec.context   := l_implicit_rec.CONTEXT;
2650         x_Line_Payment_rec.created_by := l_implicit_rec.CREATED_BY;
2651         x_Line_Payment_rec.creation_date := l_implicit_rec.CREATION_DATE;
2652         x_Line_Payment_rec.last_updated_by := l_implicit_rec.LAST_UPDATED_BY;
2653         x_Line_Payment_rec.last_update_date := l_implicit_rec.LAST_UPDATE_DATE;
2654         x_Line_Payment_rec.last_update_login := l_implicit_rec.LAST_UPDATE_LOGIN;
2655 	--R12 CC Encryption Verify
2656         x_Line_Payment_rec.check_number := l_implicit_rec.CHECK_NUMBER;
2657         x_Line_Payment_rec.credit_card_approval_code := l_implicit_rec.CREDIT_CARD_APPROVAL_CODE;
2658         x_Line_Payment_rec.credit_card_approval_date := l_implicit_rec.CREDIT_CARD_APPROVAL_DATE;
2659         x_Line_Payment_rec.credit_card_code := l_implicit_rec.CREDIT_CARD_CODE;
2660         x_Line_Payment_rec.credit_card_expiration_date := l_implicit_rec.CREDIT_CARD_EXPIRATION_DATE;
2661         x_Line_Payment_rec.credit_card_holder_name := l_implicit_rec.CREDIT_CARD_HOLDER_NAME;
2662         x_Line_Payment_rec.credit_card_number := l_implicit_rec.CREDIT_CARD_NUMBER;
2663 	--R12 CC Encryption Verify
2664         x_Line_Payment_rec.payment_level_code := l_implicit_rec.PAYMENT_LEVEL_CODE;
2665         x_Line_Payment_rec.commitment_applied_amount := l_implicit_rec.COMMITMENT_APPLIED_AMOUNT;
2666         x_Line_Payment_rec.commitment_interfaced_amount := l_implicit_rec.COMMITMENT_INTERFACED_AMOUNT;
2667         x_Line_Payment_rec.header_id := l_implicit_rec.HEADER_ID;
2668         x_Line_Payment_rec.line_id   := l_implicit_rec.LINE_ID;
2669         x_Line_Payment_rec.payment_amount := l_implicit_rec.PAYMENT_AMOUNT;
2670         x_Line_Payment_rec.payment_collection_event := l_implicit_rec.PAYMENT_COLLECTION_EVENT;
2671         x_Line_Payment_rec.payment_trx_id := l_implicit_rec.PAYMENT_TRX_ID;
2672         x_Line_Payment_rec.payment_type_code := l_implicit_rec.PAYMENT_TYPE_CODE;
2673         x_Line_Payment_rec.payment_set_id := l_implicit_rec.PAYMENT_SET_ID;
2674         x_Line_Payment_rec.prepaid_amount := l_implicit_rec.PREPAID_AMOUNT;
2675         x_Line_Payment_rec.program_application_id := l_implicit_rec.PROGRAM_APPLICATION_ID;
2676         x_Line_Payment_rec.program_id := l_implicit_rec.PROGRAM_ID;
2677         x_Line_Payment_rec.program_update_date := l_implicit_rec.PROGRAM_UPDATE_DATE;
2678         x_Line_Payment_rec.receipt_method_id := l_implicit_rec.RECEIPT_METHOD_ID;
2679         x_Line_Payment_rec.request_id := l_implicit_rec.REQUEST_ID;
2680         x_Line_Payment_rec.tangible_id := l_implicit_rec.TANGIBLE_ID; --R12 CC Encryption Verify
2681         x_Line_Payment_rec.lock_control   := l_implicit_rec.LOCK_CONTROL;
2682         x_Line_Payment_rec.payment_number   := l_implicit_rec.PAYMENT_NUMBER;
2683         x_Line_Payment_rec.defer_payment_processing_flag := l_implicit_rec.defer_payment_processing_flag;
2684 	--R12 CC Encryption
2685 	x_Line_Payment_rec.trxn_extension_id := l_implicit_rec.trxn_extension_id;
2686 	--Populating the header payment record by querying the Payments tables
2687 	--as they are no longer stored in OM tables
2688 	IF l_implicit_rec.trxn_extension_id is not null then
2689 		OE_Payment_Trxn_Util.Get_Payment_Trxn_Info(p_header_id => p_header_id,
2690 		 P_trxn_extension_id => x_Line_Payment_rec.trxn_extension_id,
2691 		 P_payment_type_code => x_Line_Payment_rec.payment_type_code ,
2692 		 X_credit_card_number => x_Line_Payment_rec.credit_card_number,
2693 		 X_credit_card_holder_name => x_Line_Payment_rec.credit_card_holder_name,
2694 		 X_credit_card_expiration_date => x_Line_Payment_rec.credit_card_expiration_date,
2695 		 X_credit_card_code => x_Line_Payment_rec.credit_card_code,
2696 		 X_credit_card_approval_code => x_Line_Payment_rec.credit_card_approval_code,
2697 		 X_credit_card_approval_date => x_Line_Payment_rec.credit_card_approval_date,
2698 		 X_bank_account_number => X_bank_account_number,
2699 		 --X_check_number => X_check_number	,
2700 		 X_instrument_security_code => x_Line_Payment_rec.instrument_security_code,
2701 		 X_instrument_id => x_Line_Payment_rec.cc_instrument_id,
2702 		 X_instrument_assignment_id => x_Line_Payment_rec.cc_instrument_assignment_id,
2703 		 X_return_status => l_return_status,
2704 		 X_msg_count => l_msg_count,
2705 		 X_msg_data => l_msg_data);
2706 	END IF;
2707 	--R12 CC Encryption
2708         x_Line_Payment_tbl(x_Line_Payment_tbl.COUNT + 1) := x_Line_Payment_rec;
2709 
2710     END LOOP;
2711 
2712     --  Return fetched table
2713 
2714         x_Line_Payment_rec := x_Line_Payment_tbl(1);
2715 
2716     --  PK sent and no rows found
2717 
2718     IF
2719     (p_payment_number IS NOT NULL
2720      AND
2721      p_payment_number <> FND_API.G_MISS_NUM)
2722     AND
2723     (p_line_id IS NOT NULL
2724      AND
2725      p_line_id <> FND_API.G_MISS_NUM)
2726     AND
2727     (x_Line_Payment_tbl.COUNT = 0)
2728     THEN
2729         RAISE NO_DATA_FOUND;
2730     END IF;
2731 
2732 EXCEPTION
2733 
2734     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2735 
2736         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2737 
2738     WHEN OTHERS THEN
2739 
2740         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2741         THEN
2742             oe_msg_pub.Add_Exc_Msg
2743             (   G_PKG_NAME
2744             ,   'Query_Row'
2745             );
2746         END IF;
2747 
2748         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2749 
2750 END Query_Row;
2751 
2752 
2753 
2754 --  Procedure Query_Rows
2755 
2756 --
2757 
2758 Procedure Query_Rows
2759 (   p_payment_number               IN  NUMBER :=
2760                                         FND_API.G_MISS_NUM
2761 ,   p_line_id                     IN  NUMBER :=
2762                                         FND_API.G_MISS_NUM
2763 ,   p_header_id                   IN  NUMBER :=
2764                                         FND_API.G_MISS_NUM
2765 ,  x_line_Payment_tbl   IN OUT NOCOPY OE_Order_PUB.Line_Payment_Tbl_Type
2766 )
2767 IS
2768 l_Line_Payment_rec          OE_Order_PUB.Line_Payment_Rec_Type;
2769 
2770 CURSOR l_Line_Payment_csr IS
2771     SELECT  ATTRIBUTE1
2772     ,       ATTRIBUTE2
2773     ,       ATTRIBUTE3
2774     ,       ATTRIBUTE4
2775     ,       ATTRIBUTE5
2776     ,       ATTRIBUTE6
2777     ,       ATTRIBUTE7
2778     ,       ATTRIBUTE8
2779     ,       ATTRIBUTE9
2780     ,       ATTRIBUTE10
2781     ,       ATTRIBUTE11
2782     ,       ATTRIBUTE12
2783     ,       ATTRIBUTE13
2784     ,       ATTRIBUTE14
2785     ,       ATTRIBUTE15
2786     ,       CONTEXT
2787     ,       CREATED_BY
2788     ,       CREATION_DATE
2789     ,       LAST_UPDATED_BY
2790     ,       LAST_UPDATE_DATE
2791     ,       LAST_UPDATE_LOGIN
2792     ,       CHECK_NUMBER  --R12 CC Encryption Verify
2793     ,       CREDIT_CARD_APPROVAL_CODE
2794     ,       CREDIT_CARD_APPROVAL_DATE
2795     ,       CREDIT_CARD_CODE
2796     ,       CREDIT_CARD_EXPIRATION_DATE
2797     ,       CREDIT_CARD_HOLDER_NAME
2798     ,       CREDIT_CARD_NUMBER --R12 CC Encryption Verify
2799     ,       PAYMENT_LEVEL_CODE
2800     ,       COMMITMENT_APPLIED_AMOUNT
2801     ,       COMMITMENT_INTERFACED_AMOUNT
2802     ,       HEADER_ID
2803     ,       LINE_ID
2804     ,       PAYMENT_AMOUNT
2805     ,       PAYMENT_COLLECTION_EVENT
2806     ,       PAYMENT_TRX_ID
2807     ,       PAYMENT_TYPE_CODE
2808     ,       PAYMENT_SET_ID
2809     ,       PREPAID_AMOUNT
2810     ,       PROGRAM_APPLICATION_ID
2811     ,       PROGRAM_ID
2812     ,       PROGRAM_UPDATE_DATE
2813     ,       RECEIPT_METHOD_ID
2814     ,       REQUEST_ID
2815     ,       TANGIBLE_ID --R12 CC Encryption Verify
2816     ,       LOCK_CONTROL
2817     ,       PAYMENT_NUMBER
2818     ,       DEFER_PAYMENT_PROCESSING_FLAG
2819     ,       TRXN_EXTENSION_ID
2820     FROM    OE_PAYMENTS
2821     WHERE   LINE_ID = p_line_id
2822     AND     HEADER_ID = p_header_id
2823 	;
2824 
2825 --
2826 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2827 --
2828 --R12 CC Encryption Verify
2829 x_bank_account_number VARCHAR2(100); --bug 5170754
2830 x_check_number        varchar2(100);
2831 l_return_status      VARCHAR2(30) := NULL ;
2832 l_msg_count          NUMBER := 0 ;
2833 l_msg_data           VARCHAR2(2000) := NULL ;
2834 
2835 --R12 CC Encryption
2836 
2837 BEGIN
2838 
2839     --  Loop over fetched records
2840 
2841     FOR l_implicit_rec IN l_Line_Payment_csr LOOP
2842 
2843         l_Line_Payment_rec.attribute1 := l_implicit_rec.ATTRIBUTE1;
2844         l_Line_Payment_rec.attribute2 := l_implicit_rec.ATTRIBUTE2;
2845         l_Line_Payment_rec.attribute3 := l_implicit_rec.ATTRIBUTE3;
2846         l_Line_Payment_rec.attribute4 := l_implicit_rec.ATTRIBUTE4;
2847         l_Line_Payment_rec.attribute5 := l_implicit_rec.ATTRIBUTE5;
2848         l_Line_Payment_rec.attribute6 := l_implicit_rec.ATTRIBUTE6;
2849         l_Line_Payment_rec.attribute7 := l_implicit_rec.ATTRIBUTE7;
2850         l_Line_Payment_rec.attribute8 := l_implicit_rec.ATTRIBUTE8;
2851         l_Line_Payment_rec.attribute9 := l_implicit_rec.ATTRIBUTE9;
2852         l_Line_Payment_rec.attribute10 := l_implicit_rec.ATTRIBUTE10;
2853         l_Line_Payment_rec.attribute11 := l_implicit_rec.ATTRIBUTE11;
2854         l_Line_Payment_rec.attribute12 := l_implicit_rec.ATTRIBUTE12;
2855         l_Line_Payment_rec.attribute13 := l_implicit_rec.ATTRIBUTE13;
2856         l_Line_Payment_rec.attribute14 := l_implicit_rec.ATTRIBUTE14;
2857         l_Line_Payment_rec.attribute15 := l_implicit_rec.ATTRIBUTE15;
2858         l_Line_Payment_rec.context   := l_implicit_rec.CONTEXT;
2859         l_Line_Payment_rec.created_by := l_implicit_rec.CREATED_BY;
2860         l_Line_Payment_rec.creation_date := l_implicit_rec.CREATION_DATE;
2861         l_Line_Payment_rec.last_updated_by := l_implicit_rec.LAST_UPDATED_BY;
2862         l_Line_Payment_rec.last_update_date := l_implicit_rec.LAST_UPDATE_DATE;
2863         l_Line_Payment_rec.last_update_login := l_implicit_rec.LAST_UPDATE_LOGIN;
2864         l_Line_Payment_rec.check_number := l_implicit_rec.CHECK_NUMBER; --R12 CC Encryption Verify
2865         l_Line_Payment_rec.credit_card_approval_code := l_implicit_rec.CREDIT_CARD_APPROVAL_CODE;
2866         l_Line_Payment_rec.credit_card_approval_date := l_implicit_rec.CREDIT_CARD_APPROVAL_DATE;
2867         l_Line_Payment_rec.credit_card_code := l_implicit_rec.CREDIT_CARD_CODE;
2868         l_Line_Payment_rec.credit_card_expiration_date := l_implicit_rec.CREDIT_CARD_EXPIRATION_DATE;
2869         l_Line_Payment_rec.credit_card_holder_name := l_implicit_rec.CREDIT_CARD_HOLDER_NAME;
2870         l_Line_Payment_rec.credit_card_number := l_implicit_rec.CREDIT_CARD_NUMBER; --R12 CC Encryption Verify
2871         l_Line_Payment_rec.payment_level_code := l_implicit_rec.PAYMENT_LEVEL_CODE;
2872         l_Line_Payment_rec.commitment_applied_amount := l_implicit_rec.COMMITMENT_APPLIED_AMOUNT;
2873         l_Line_Payment_rec.commitment_interfaced_amount := l_implicit_rec.COMMITMENT_INTERFACED_AMOUNT;
2874         l_Line_Payment_rec.header_id := l_implicit_rec.HEADER_ID;
2875         l_Line_Payment_rec.line_id   := l_implicit_rec.LINE_ID;
2876         l_Line_Payment_rec.payment_amount := l_implicit_rec.PAYMENT_AMOUNT;
2877         l_Line_Payment_rec.payment_collection_event := l_implicit_rec.PAYMENT_COLLECTION_EVENT;
2878         l_Line_Payment_rec.payment_trx_id := l_implicit_rec.PAYMENT_TRX_ID;
2879         l_Line_Payment_rec.payment_type_code := l_implicit_rec.PAYMENT_TYPE_CODE;
2880         l_Line_Payment_rec.payment_set_id := l_implicit_rec.PAYMENT_SET_ID;
2881         l_Line_Payment_rec.prepaid_amount := l_implicit_rec.PREPAID_AMOUNT;
2882         l_Line_Payment_rec.program_application_id := l_implicit_rec.PROGRAM_APPLICATION_ID;
2883         l_Line_Payment_rec.program_id := l_implicit_rec.PROGRAM_ID;
2884         l_Line_Payment_rec.program_update_date := l_implicit_rec.PROGRAM_UPDATE_DATE;
2885         l_Line_Payment_rec.receipt_method_id := l_implicit_rec.RECEIPT_METHOD_ID;
2886         l_Line_Payment_rec.request_id := l_implicit_rec.REQUEST_ID;
2887         l_Line_Payment_rec.tangible_id := l_implicit_rec.TANGIBLE_ID; --R12 CC Encryption Verify
2888         l_Line_Payment_rec.lock_control   := l_implicit_rec.LOCK_CONTROL;
2889         l_Line_Payment_rec.payment_number   := l_implicit_rec.PAYMENT_NUMBER;
2890         l_Line_Payment_rec.defer_payment_processing_flag := l_implicit_rec.DEFER_PAYMENT_PROCESSING_FLAG;
2891 	--R12 CC Encryption
2892 	l_Line_Payment_rec.trxn_extension_id := l_implicit_rec.trxn_extension_id;
2893 	--Populating the header payment record by querying the Payments tables
2894 	--as they are no longer stored in OM tables
2895 	IF l_implicit_rec.trxn_extension_id is not null then
2896 		OE_Payment_Trxn_Util.Get_Payment_Trxn_Info(p_header_id => p_header_id,
2897 		 P_trxn_extension_id => l_Line_Payment_rec.trxn_extension_id,
2898 		 P_payment_type_code => l_Line_Payment_rec.payment_type_code ,
2899 		 X_credit_card_number => l_Line_Payment_rec.credit_card_number,
2900 		 X_credit_card_holder_name => l_Line_Payment_rec.credit_card_holder_name,
2901 		 X_credit_card_expiration_date => l_Line_Payment_rec.credit_card_expiration_date,
2902 		 X_credit_card_code => l_Line_Payment_rec.credit_card_code,
2903 		 X_credit_card_approval_code => l_Line_Payment_rec.credit_card_approval_code,
2904 		 X_credit_card_approval_date => l_Line_Payment_rec.credit_card_approval_date,
2905 		 X_bank_account_number => X_bank_account_number,
2906 		 --X_check_number => X_check_number	,
2907 		 X_instrument_id => l_Line_Payment_rec.cc_instrument_id,
2908 		 X_instrument_assignment_id => l_Line_Payment_rec.cc_instrument_assignment_id,
2909 		 X_instrument_security_code => l_Line_Payment_rec.instrument_security_code,
2910 		 X_return_status => l_return_status,
2911 		 X_msg_count => l_msg_count,
2912 		 X_msg_data => l_msg_data);
2913 	END IF;
2914 	--R12 CC Encryption
2915         x_Line_Payment_tbl(x_Line_Payment_tbl.COUNT + 1) := l_Line_Payment_rec;
2916 
2917     END LOOP;
2918 
2919     --  Return fetched table
2920 
2921 
2922 EXCEPTION
2923 
2924     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2925 
2926         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2927 
2928     WHEN OTHERS THEN
2929 
2930         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2931         THEN
2932             oe_msg_pub.Add_Exc_Msg
2933             (   G_PKG_NAME
2934             ,   'Query_Rows'
2935             );
2936         END IF;
2937 
2938         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2939 
2940 END Query_Rows;
2941 
2942 --  Procedure       lock_Row
2943 --
2944 
2945 PROCEDURE Lock_Row
2946 (   x_return_status                 OUT NOCOPY VARCHAR2
2947 ,   p_x_Line_Payment_rec IN OUT NOCOPY  OE_Order_PUB.Line_Payment_Rec_Type
2948 ,   p_payment_number               IN  NUMBER
2949                                         := FND_API.G_MISS_NUM
2950 ,   p_line_id                      IN  NUMBER
2951                                         := FND_API.G_MISS_NUM
2952 )
2953 IS
2954 l_payment_number	      NUMBER;
2955 l_line_id       	      NUMBER;
2956 l_header_id       	      NUMBER;
2957 l_Line_Payment_rec          OE_Order_PUB.Line_Payment_Rec_Type;
2958 l_lock_control                NUMBER;
2959 --
2960 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2961 --
2962 BEGIN
2963 
2964     IF l_debug_level  > 0 THEN
2965         oe_debug_pub.add(  'ENTERING OE_LINE_PAYMENT_UTIL.LOCK_ROW' , 1 ) ;
2966     END IF;
2967 
2968     SAVEPOINT Lock_Row;
2969 
2970     l_lock_control := NULL;
2971 
2972     l_header_id := p_x_line_Payment_rec.header_id;
2973     -- Retrieve the primary key.
2974     IF p_payment_number <> FND_API.G_MISS_NUM AND
2975        p_line_id <> FND_API.G_MISS_NUM THEN
2976         l_payment_number := p_payment_number;
2977         l_line_id := p_line_id;
2978     ELSE
2979         l_payment_number := p_x_line_Payment_rec.payment_number;
2980         l_line_id := p_x_line_Payment_rec.line_id;
2981         l_lock_control    := p_x_line_Payment_rec.lock_control;
2982     END IF;
2983 
2984    SELECT  payment_number
2985     INTO   l_payment_number
2986     FROM   oe_payments
2987     WHERE  payment_number = l_payment_number
2988     AND    line_id = l_line_id
2989     AND    header_id = l_header_id
2990     FOR UPDATE NOWAIT;
2991 
2992     IF l_debug_level  > 0 THEN
2993         oe_debug_pub.add(  'SELECTED FOR UPDATE' , 1 ) ;
2994     END IF;
2995 
2996     OE_Line_Payment_Util.Query_Row
2997 	(p_payment_number    => l_payment_number
2998 	,p_line_id           => l_line_id
2999         ,p_header_id	     => l_header_id
3000 	,x_line_Payment_rec => p_x_line_Payment_rec );
3001 
3002 
3003     -- If lock_control is null / missing, then return the locked record.
3004 
3005     IF l_lock_control is null OR
3006        l_lock_control <> FND_API.G_MISS_NUM THEN
3007 
3008         --  Set return status
3009         x_return_status                := FND_API.G_RET_STS_SUCCESS;
3010         p_x_line_Payment_rec.return_status       := FND_API.G_RET_STS_SUCCESS;
3011 
3012         RETURN;
3013 
3014     END IF;
3015 
3016     --  Row locked. If the whole record is passed, then
3017     --  Compare IN attributes to DB attributes.
3018 
3019     IF  OE_GLOBALS.Equal(p_x_Line_Payment_rec.lock_control,
3020                          l_lock_control)
3021     THEN
3022 
3023         --  Row has not changed. Set out parameter.
3024 
3025         p_x_Line_Payment_rec           := l_Line_Payment_rec;
3026 
3027         --  Set return status
3028 
3029         x_return_status                := FND_API.G_RET_STS_SUCCESS;
3030         p_x_Line_Payment_rec.return_status := FND_API.G_RET_STS_SUCCESS;
3031 
3032     ELSE
3033 
3034         --  Row has changed by another user.
3035 
3036         x_return_status                := FND_API.G_RET_STS_ERROR;
3037         p_x_Line_Payment_rec.return_status := FND_API.G_RET_STS_ERROR;
3038 
3039         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
3040         THEN
3041 
3042             -- Release the lock
3043 	    ROLLBACK TO Lock_Row;
3044 
3045             FND_MESSAGE.SET_NAME('ONT','OE_LOCK_ROW_CHANGED');
3046             oe_msg_pub.Add;
3047 
3048         END IF;
3049 
3050     END IF;
3051 
3052 EXCEPTION
3053 
3054     WHEN NO_DATA_FOUND THEN
3055 
3056         x_return_status                := FND_API.G_RET_STS_ERROR;
3057         p_x_Line_Payment_rec.return_status := FND_API.G_RET_STS_ERROR;
3058 
3059         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
3060         THEN
3061 
3062             FND_MESSAGE.SET_NAME('ONT','OE_LOCK_ROW_DELETED');
3063             oe_msg_pub.Add;
3064 
3065         END IF;
3066     WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
3067 
3068         x_return_status                := FND_API.G_RET_STS_ERROR;
3069         p_x_Line_Payment_rec.return_status := FND_API.G_RET_STS_ERROR;
3070 
3071         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
3072         THEN
3073 
3074             FND_MESSAGE.SET_NAME('ONT','OE_LOCK_ROW_ALREADY_LOCKED');
3075             oe_msg_pub.Add;
3076 
3077         END IF;
3078     WHEN OTHERS THEN
3079 
3080         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
3081         p_x_Line_Payment_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3082 
3083         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3084         THEN
3085             oe_msg_pub.Add_Exc_Msg
3086             (   G_PKG_NAME
3087             ,   'Lock_Row'
3088             );
3089         END IF;
3090 
3091 END Lock_Row;
3092 
3093 PROCEDURE Lock_Rows
3094 (   p_payment_number       IN  NUMBER :=
3095                                         FND_API.G_MISS_NUM
3096 ,   p_line_id              IN  NUMBER :=
3097                                         FND_API.G_MISS_NUM
3098 ,   p_header_id            IN  NUMBER :=
3099                                         FND_API.G_MISS_NUM
3100 ,   x_line_Payment_tbl     OUT NOCOPY OE_Order_PUB.line_Payment_Tbl_Type
3101 ,   x_return_status        OUT NOCOPY VARCHAR2
3102  )
3103 IS
3104   CURSOR lock_lin_Payments(p_line_id  NUMBER) IS
3105   SELECT payment_number
3106   FROM   oe_payments
3107   WHERE  line_id = p_line_id
3108   AND    header_id = p_header_id
3109     FOR UPDATE NOWAIT;
3110 
3111   l_payment_number    NUMBER;
3112   --
3113   l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3114   --
3115 BEGIN
3116 
3117     IF l_debug_level  > 0 THEN
3118         oe_debug_pub.add(  'ENTERING OE_HEADER_PaymentS_UTIL.LOCK_ROWS' , 1 ) ;
3119     END IF;
3120 /*
3121     IF (p_payment_number IS NOT NULL AND
3122         p_payment_number <> FND_API.G_MISS_NUM) AND
3123        (p_line_id IS NOT NULL AND
3124         p_line_id <> FND_API.G_MISS_NUM)
3125     THEN
3126       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3127       THEN
3128         OE_MSG_PUB.Add_Exc_Msg
3129         (   G_PKG_NAME
3130           , 'Lock Rows'
3131           , 'Keys are mutually exclusive: payment_number = '||
3132              p_payment_number || ', line_id = '|| p_line_id );
3133       END IF;
3134 
3135       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3136 
3137     END IF;
3138 */
3139    IF p_payment_number <> FND_API.G_MISS_NUM AND
3140       p_line_id <> FND_API.G_MISS_NUM THEN
3141 
3142      SELECT payment_number
3143      INTO   l_payment_number
3144      FROM   OE_PAYMENTS
3145      WHERE  payment_number   = p_payment_number
3146      AND    line_id = p_line_id
3147      AND    header_id = p_header_id
3148      FOR UPDATE NOWAIT;
3149 
3150    ELSE
3151 
3152    BEGIN
3153 
3154      IF p_line_id <> FND_API.G_MISS_NUM THEN
3155 
3156        SAVEPOINT LOCK_ROWS;
3157        OPEN lock_lin_Payments(p_line_id);
3158 
3159        LOOP
3160          FETCH lock_lin_Payments INTO l_payment_number;
3161          EXIT WHEN lock_lin_Payments%NOTFOUND;
3162        END LOOP;
3163 
3164        CLOSE lock_lin_Payments;
3165 
3166      END IF;
3167 
3168    EXCEPTION
3169      WHEN OTHERS THEN
3170        ROLLBACK TO LOCK_ROWS;
3171 
3172        IF lock_lin_Payments%ISOPEN THEN
3173          CLOSE lock_lin_Payments;
3174        END IF;
3175 
3176        RAISE;
3177    END;
3178 
3179    END IF;
3180    -- locked all
3181 
3182    OE_Line_Payment_Util.Query_Rows
3183      (p_payment_number         => p_payment_number
3184      ,p_line_id                => p_line_id
3185      ,p_header_id              => p_header_id
3186      ,x_line_Payment_tbl       => x_line_Payment_tbl
3187      );
3188 
3189    x_return_status  := FND_API.G_RET_STS_SUCCESS;
3190 
3191    IF l_debug_level  > 0 THEN
3192        oe_debug_pub.add(  'EXITING OE_LINE_PAYMENTS_UTIL.LOCK_ROWS' , 1 ) ;
3193    END IF;
3194 
3195 EXCEPTION
3196    WHEN NO_DATA_FOUND THEN
3197 
3198      x_return_status                := FND_API.G_RET_STS_ERROR;
3199 
3200      IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
3201      THEN
3202        fnd_message.set_name('ONT','OE_LOCK_ROW_DELETED');
3203        OE_MSG_PUB.Add;
3204      END IF;
3205 
3206     WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
3207 
3208       x_return_status                := FND_API.G_RET_STS_ERROR;
3209       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
3210       THEN
3211         fnd_message.set_name('ONT','OE_LOCK_ROW_ALREADY_LOCKED');
3212         OE_MSG_PUB.Add;
3213       END IF;
3214 
3215     WHEN OTHERS THEN
3216 
3217         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
3218 
3219       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3220       THEN
3221         OE_MSG_PUB.Add_Exc_Msg
3222         (   G_PKG_NAME
3223          ,   'Lock_Rows'
3224         );
3225       END IF;
3226 
3227 END Lock_Rows;
3228 
3229 
3230 --  Function Get_Values
3231 
3232 FUNCTION Get_Values
3233 (   p_Line_Payment_rec          IN        OE_Order_PUB.Line_Payment_Rec_Type
3234 ,   p_old_Line_Payment_rec        IN  OE_Order_PUB.Line_Payment_Rec_Type :=
3235                                         OE_Order_PUB.G_MISS_LINE_PAYMENT_REC
3236 )RETURN OE_Order_PUB.Line_Payment_Val_Rec_Type
3237 IS
3238 l_Line_Payment_val_rec      OE_Order_PUB.Line_Payment_Val_Rec_Type;
3239 --
3240 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3241 --
3242 BEGIN
3243 
3244     IF (p_Line_Payment_rec.payment_collection_event IS NULL OR
3245         p_Line_Payment_rec.payment_collection_event <> FND_API.G_MISS_CHAR) AND
3246         NOT OE_GLOBALS.Equal(p_Line_Payment_rec.payment_collection_event,
3247         p_old_Line_Payment_rec.payment_collection_event)
3248     THEN
3249         l_Line_Payment_val_rec.payment_collection_event_name := OE_Id_To_Value.payment_collection_event_name
3250         (   p_payment_collection_event        => p_Line_Payment_rec.payment_collection_event
3251         );
3252     END IF;
3253 
3254     IF (p_Line_Payment_rec.receipt_method_id IS NULL OR
3255         p_Line_Payment_rec.receipt_method_id <> FND_API.G_MISS_NUM) AND
3256         NOT OE_GLOBALS.Equal(p_Line_Payment_rec.receipt_method_id,
3257         p_old_Line_Payment_rec.receipt_method_id)
3258     THEN
3259         l_Line_Payment_val_rec.receipt_method := OE_Id_To_Value.Receipt_Method
3260         (   p_receipt_method                => p_Line_Payment_rec.receipt_method_id
3261         );
3262     END IF;
3263 
3264     IF (p_Line_Payment_rec.payment_type_code IS NULL OR
3265         p_Line_Payment_rec.payment_type_code <> FND_API.G_MISS_CHAR) AND
3266         NOT OE_GLOBALS.Equal(p_Line_Payment_rec.payment_type_code,
3267         p_old_Line_Payment_rec.payment_type_code)
3268     THEN
3269         l_Line_Payment_val_rec.payment_type := OE_Id_To_Value.payment_type
3270         (   p_payment_type_code => p_Line_Payment_rec.payment_type_code
3271         );
3272     END IF;
3273 
3274     RETURN l_Line_Payment_val_rec;
3275 
3276 END Get_Values;
3277 
3278 --  Procedure Get_Ids
3279 
3280 PROCEDURE Get_Ids
3281 (   p_x_Line_Payment_rec IN OUT NOCOPY  OE_Order_PUB.Line_Payment_Rec_Type
3282 ,   p_Line_Payment_val_rec        IN  OE_Order_PUB.Line_Payment_Val_Rec_Type
3283 )
3284 IS
3285 
3286 --
3287 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3288 --
3289 BEGIN
3290 
3291     --  initialize  return_status.
3292 
3293     p_x_Line_Payment_rec.return_status := FND_API.G_RET_STS_SUCCESS;
3294 
3295     --  initialize l_Line_Payment_rec.
3296 
3297 
3298 
3299     IF  p_Line_Payment_val_rec.payment_collection_event_name <> FND_API.G_MISS_CHAR
3300     THEN
3301 
3302         IF p_x_Line_Payment_rec.payment_collection_event  <> FND_API.G_MISS_CHAR THEN
3303 
3304             IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS)
3305             THEN
3306 
3307                 FND_MESSAGE.SET_NAME('ONT','OE_BOTH_VAL_AND_ID_EXIST');
3308                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','payment_collection_event_name');
3309                 oe_msg_pub.Add;
3310 
3311             END IF;
3312 
3313         ELSE
3314 
3315             p_x_Line_Payment_rec.payment_collection_event := OE_Value_To_Id.payment_collection_event_name
3316             (   p_payment_collection_event     => p_Line_Payment_val_rec.payment_collection_event_name
3317             );
3318 
3319             IF p_x_Line_Payment_rec.payment_collection_event = FND_API.G_MISS_CHAR THEN
3320                p_x_Line_Payment_rec.return_status := FND_API.G_RET_STS_ERROR;
3321             END IF;
3322 
3323         END IF;
3324 
3325     END IF;
3326 
3327     IF  p_Line_Payment_val_rec.payment_type <> FND_API.G_MISS_CHAR
3328     THEN
3329 
3330         IF p_x_Line_Payment_rec.payment_type_code <> FND_API.G_MISS_CHAR THEN
3331 
3332 
3333             IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS)
3334             THEN
3335 
3336                 FND_MESSAGE.SET_NAME('ONT','OE_BOTH_VAL_AND_ID_EXIST');
3337                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','payment_type');
3338                 oe_msg_pub.Add;
3339 
3340             END IF;
3341 
3342         ELSE
3343 
3344             p_x_Line_Payment_rec.payment_type_code := OE_Value_To_Id.payment_type
3345             (   p_payment_type => p_Line_Payment_val_rec.payment_type
3346             );
3347 
3348             IF p_x_Line_Payment_rec.payment_type_code = FND_API.G_MISS_CHAR THEN
3349                 p_x_Line_Payment_rec.return_status := FND_API.G_RET_STS_ERROR;
3350             END IF;
3351 
3352         END IF;
3353 
3354     END IF;
3355 
3356 
3357     IF  p_Line_Payment_val_rec.receipt_method <> FND_API.G_MISS_CHAR
3358     THEN
3359 
3360         IF p_x_Line_Payment_rec.receipt_method_id <> FND_API.G_MISS_NUM THEN
3361 
3362 
3363             IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS)
3364             THEN
3365 
3366                 FND_MESSAGE.SET_NAME('ONT','OE_BOTH_VAL_AND_ID_EXIST');
3367                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Receipt_Method');
3368                 oe_msg_pub.Add;
3369 
3370             END IF;
3371 
3372         ELSE
3373 
3374             p_x_Line_Payment_rec.receipt_method_id := OE_Value_To_Id.Receipt_Method
3375             (   p_receipt_method => p_Line_Payment_val_rec.receipt_method
3376             );
3377 
3378             IF p_x_Line_Payment_rec.receipt_method_id = FND_API.G_MISS_NUM THEN
3379                 p_x_Line_Payment_rec.return_status := FND_API.G_RET_STS_ERROR;
3380             END IF;
3381 
3382         END IF;
3383 
3384     END IF;
3385 
3386 
3387 
3388 END Get_Ids;
3389 
3390 PROCEDURE Pre_Write_Process
3391   ( p_x_line_Payment_rec IN OUT NOCOPY OE_ORDER_PUB.line_Payment_rec_type,
3392     p_old_line_Payment_rec IN OE_ORDER_PUB.line_Payment_rec_type := OE_ORDER_PUB.G_MISS_LINE_PAYMENT_REC )
3393     IS
3394 l_return_status varchar2(30);
3395 l_ordered_date DATE;
3396 l_transactional_curr_code VARCHAR2(30);
3397 l_invoice_to_org_id NUMBER;
3398 l_bank_acct_id                 NUMBER;
3399 l_bank_acct_uses_id            NUMBER;
3400 l_hdr_inv_to_cust_id           NUMBER;
3401 l_trx_date		       DATE;
3402 --bug 3560198
3403 l_currency_code         varchar2(30) := 'USD';
3404 l_precision             NUMBER;
3405 l_ext_precision         NUMBER;
3406 l_min_acct_unit         NUMBER;
3407 l_commitment_bal        NUMBER;
3408 l_class                 VARCHAR2(30);
3409 l_so_source_code        VARCHAR2(30);
3410 l_oe_installed_flag     VARCHAR2(30);
3411 -- QUOTING change
3412 l_transaction_phase_code          VARCHAR2(30);
3413 --
3414 l_new_commitment_bal    NUMBER;
3415 l_commitment            VARCHAR2(20);
3416 --
3417 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3418 --
3419 --R12 CC Encryption
3420 l_order_source_doc_id NUMBER;
3421 l_trxn_extension_id NUMBER;
3422 l_msg_count	    NUMBER;
3423 l_msg_data	    VARCHAR2(2000);
3424 l_update_card_flag	       	VARCHAR2(1) := 'N';
3425 
3426 -- bug 5204275
3427 l_is_split_payment	VARCHAR2(1) := 'N';
3428 
3429 BEGIN
3430 
3431   IF l_debug_level > 0 THEN
3432      oe_debug_pub.add(  'entering oe_line_payment_util.Pre_Write_Process. payment_type_code'||p_x_line_Payment_rec.payment_type_code);
3433   END IF;
3434 
3435 
3436   --bug 3560198
3437   IF p_x_line_Payment_rec.payment_type_code = 'COMMITMENT' THEN
3438      IF l_debug_level > 0 THEN
3439         oe_debug_pub.add('To log commitment balance message');
3440      END IF;
3441      BEGIN
3442                  -- QUOTING change
3443         SELECT   l.transaction_phase_code
3444         INTO
3445                  l_transaction_phase_code
3446         FROM     oe_order_lines_all l
3447         WHERE    l.line_id = p_x_line_Payment_rec.line_id;
3448 
3449      EXCEPTION
3450         WHEN NO_DATA_FOUND THEN
3451                  RETURN;
3452      END;
3453      -- QUOTING change
3454      -- No need to calculate commitment for orders in negotiation phase
3455      if l_debug_level > 0 then
3456         oe_debug_pub.add('trxn phase :'||l_transaction_phase_code);
3457      end if;
3458      IF l_transaction_phase_code = 'N' THEN
3459         RETURN;
3460      END IF;
3461      -- build currency format.
3462      IF g_fmt_mask IS NULL THEN
3463        BEGIN
3464          SELECT nvl(transactional_curr_code,'USD')
3465          INTO   l_currency_code from oe_order_headers
3466          WHERE  header_id=p_x_line_Payment_rec.header_id;
3467 
3468        EXCEPTION
3469            WHEN NO_DATA_FOUND THEN
3470            l_currency_code := 'USD';
3471        END ;
3472 
3473        FND_CURRENCY.Get_Info(l_currency_code,  -- IN variable
3474                    l_precision,
3475                    l_ext_precision,
3476                    l_min_acct_unit);
3477 
3478        FND_CURRENCY.Build_Format_Mask(G_Fmt_mask, 20, l_precision,
3479                                           l_min_acct_unit, TRUE
3480                                          );
3481      END IF;
3482 
3483      IF l_debug_level > 0 THEN
3484         oe_debug_pub.add('payment_trx_id : '||p_x_line_Payment_rec.payment_trx_id);
3485      END IF;
3486      IF p_x_line_Payment_rec.payment_trx_id IS NOT NULL THEN
3487         l_class := NULL;
3488         l_so_source_code := FND_PROFILE.VALUE('ONT_SOURCE_CODE');
3489         l_oe_installed_flag := 'I';
3490         l_commitment_bal := ARP_BAL_UTIL.GET_COMMITMENT_BALANCE(
3491                              p_x_line_Payment_rec.payment_trx_id
3492                             ,l_class
3493                             ,l_so_source_code
3494                             ,l_oe_installed_flag );
3495      END IF;
3496      IF l_debug_level  > 0 THEN
3497         oe_debug_pub.add(  'COMMITMENT BALANCE IS: '||L_COMMITMENT_BAL ) ;
3498      END IF;
3499      IF p_x_line_Payment_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
3500         l_new_commitment_bal := l_commitment_bal - p_x_line_Payment_rec.commitment_applied_amount;
3501      ELSIF p_x_line_Payment_rec.operation = OE_GLOBALS.G_OPR_UPDATE THEN
3502         l_new_commitment_bal := l_commitment_bal + p_old_line_Payment_rec.commitment_applied_amount - p_x_line_Payment_rec.commitment_applied_amount;
3503      END IF;
3504      IF l_debug_level > 0 THEN
3505         oe_debug_pub.add('l_new_commitment_bal : '||l_new_commitment_bal);
3506      END IF;
3507      -- Added if condition of the Bug #3742103
3508      IF l_new_commitment_bal IS NOT NULL THEN
3509         FND_MESSAGE.Set_Name('ONT','OE_COM_BALANCE');
3510         FND_MESSAGE.Set_Token('COMMITMENT',l_commitment);
3511         FND_Message.Set_Token('BALANCE',to_char(l_new_commitment_bal, g_fmt_mask));
3512         OE_MSG_PUB.ADD;
3513      END IF;
3514      -- End of Bug #3742103
3515   END IF;
3516   --bug 3560198
3517 
3518   --R12 CC Encryption
3519   --Querying the invoice to org id before checking the payment type
3520   --as it is needed for both credit card and check payments.
3521   Select INVOICE_TO_ORG_ID into l_invoice_to_org_id
3522   from oe_order_lines_all where header_id = p_x_line_Payment_rec.header_id
3523   and line_id = p_x_line_payment_rec.line_id;
3524   --Not taking it from the cache as the invoice to org id might change
3525   --in the line level as well.
3526   --  l_invoice_to_org_id := OE_Order_Cache.g_line_rec.invoice_to_org_id;
3527 
3528 
3529   BEGIN
3530     SELECT 'Y'
3531     INTO   l_is_split_payment
3532     FROM   oe_payments
3533     WHERE  header_id = p_x_line_Payment_rec.header_id
3534     AND    line_id = p_x_line_Payment_rec.line_id
3535     AND    payment_type_code IS NULL
3536     AND    credit_card_approval_code = 'CVV2_REQUIRED';
3537   EXCEPTION WHEN NO_DATA_FOUND THEN
3538     null;
3539   END;
3540 
3541 
3542   --For these payment type codes, the logic would be handled by calling
3543   --the appropriate Payments API to create, update or copy
3544   IF p_x_line_Payment_rec.payment_type_code IN
3545   ('CREDIT_CARD','ACH','DIRECT_DEBIT')
3546     OR (l_is_split_payment = 'Y' AND p_x_line_Payment_rec.payment_type_code IS NULL) THEN
3547 
3548 	--Verify
3549        /** comment out this sql stmt to fetch these data from cache.
3550 	select ordered_date, transactional_curr_code, invoice_to_org_id
3551 	into l_ordered_date, l_transactional_curr_code, l_invoice_to_org_id
3552 	from oe_order_headers
3553 	where header_id=p_x_line_Payment_rec.header_id;
3554         **/
3555 
3556         oe_order_cache.load_order_header(p_x_line_Payment_rec.header_id);
3557         l_ordered_date := OE_Order_Cache.g_header_rec.ordered_date;
3558         l_transactional_curr_code := OE_Order_Cache.g_header_rec.transactional_curr_code;
3559 
3560 	IF l_debug_level > 0 THEN
3561 	   oe_debug_pub.add(  'l_transactional_curr_code:'||l_transactional_curr_code||':l_invoice_to_org_id:'||l_invoice_to_org_id);
3562 	END IF;
3563 
3564 	BEGIN
3565 	   SELECT customer_id
3566 	   INTO   l_hdr_inv_to_cust_id
3567 	   FROM   oe_invoice_to_orgs_v
3568 	   WHERE  organization_id = l_invoice_to_org_id;
3569 	EXCEPTION
3570 	    WHEN OTHERS THEN
3571 	      IF l_debug_level  > 0 THEN
3572 		 oe_debug_pub.add(  'IN OTHERS EXCEPTION ( OE_INVOICE_TO_ORGS_V ) '||SQLERRM , 1 ) ;
3573 	      END IF;
3574 	END;
3575        IF l_debug_level  > 0 THEN
3576 	 oe_debug_pub.add('invoice to cust id : ' || l_hdr_inv_to_cust_id );
3577 	 oe_debug_pub.add('cc number : ' || p_x_line_Payment_rec.credit_card_number );
3578 	 oe_debug_pub.add('cc name : ' || p_x_line_Payment_rec.credit_card_holder_name );
3579 	 oe_debug_pub.add('exp date : ' || to_char(p_x_line_Payment_rec.credit_card_expiration_date, 'DD-MON-YYYY') );
3580 	 oe_debug_pub.add('instr id...'||p_x_line_Payment_rec.cc_instrument_id);
3581 	 oe_debug_pub.add('instr assgn id'||p_x_line_Payment_rec.cc_instrument_assignment_id);
3582        END IF;
3583 
3584 	Select SOURCE_DOCUMENT_TYPE_ID
3585 	Into l_order_source_doc_id
3586 	From oe_order_lines_all
3587 	Where line_id = p_x_line_payment_rec.line_id;
3588 
3589 	-- To make sure this is coming from external caller,
3590 	-- not from a copied order, need to check for source
3591 	-- document type id, which is 2 for a copy order.
3592 	IF p_x_line_payment_rec.trxn_extension_id IS NOT NULL
3593 	AND (p_x_line_payment_rec.operation = OE_GLOBALS.G_OPR_CREATE)
3594 	AND nvl(l_order_source_doc_id, -99) <> 2 THEN
3595 
3596             IF l_debug_level  > 0 THEN
3597 		oe_debug_pub.add('Before calling copy payment trxn...');
3598 	    END IF;
3599 
3600 	    --For orders coming from outside of Order Management through Process Order API,
3601 	    --we need to call Oracle Payments Copy Transaction API to get a new transaction
3602 	    --extension id
3603 	    BEGIN
3604 		OE_PAYMENT_TRXN_UTIL.Copy_Payment_TRXN
3605 		(P_header_id		=> p_x_line_Payment_rec.header_id,
3606 		 P_line_id		=> p_x_line_payment_rec.line_id,
3607 		 p_cust_id		=> l_hdr_inv_to_cust_id,
3608 		 P_site_use_id		=> l_invoice_to_org_id,
3609 		 p_trxn_extension_id	=> p_x_line_payment_rec.trxn_extension_id,
3610 		 x_trxn_extension_id	=> l_trxn_extension_id,
3611 		 X_return_status		=> l_return_status,
3612 		 X_msg_count		=> l_msg_count,
3613 		 X_msg_data		=> l_msg_data);
3614 
3615 		 p_x_line_payment_rec.trxn_extension_id := l_trxn_extension_id;
3616 	    EXCEPTION
3617 		WHEN FND_API.G_EXC_ERROR THEN
3618 			l_return_status := FND_API.G_RET_STS_ERROR;
3619 			RAISE FND_API.G_EXC_ERROR;
3620 
3621 		WHEN OTHERS THEN
3622 			IF l_debug_level>0 THEN
3623 				oe_debug_pub.add('After call to copy payment trxn - exception'||sqlerrm);
3624 			END IF;
3625 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3626 	    END;
3627 	ELSIF p_x_line_payment_rec.operation = OE_GLOBALS.G_OPR_UPDATE THEN
3628 		IF  p_x_line_payment_rec.trxn_extension_id IS NOT NULL
3629 		AND p_x_line_payment_rec.trxn_extension_id <> FND_API.G_MISS_NUM
3630 		AND ((p_x_line_Payment_rec.payment_type_code = 'CREDIT_CARD'
3631 		AND OE_GLOBALS.Is_Same_Credit_Card(p_old_line_Payment_rec.credit_card_number,
3632                             p_x_line_Payment_rec.credit_card_number,
3633 			    p_old_line_Payment_rec.cc_instrument_id,
3634 			    p_x_line_Payment_rec.cc_instrument_id)
3635 		AND  p_x_line_Payment_rec.credit_card_holder_name = p_old_line_Payment_rec.credit_card_holder_name
3636 		AND  p_x_line_Payment_rec.credit_card_expiration_date = p_old_line_Payment_rec.credit_card_expiration_date
3637 		AND p_x_line_Payment_rec.instrument_security_code = p_old_line_payment_rec.instrument_security_code)
3638 		OR (p_x_line_Payment_rec.payment_type_code IN ('ACH','DIRECT_DEBIT')
3639 		AND p_x_line_Payment_rec.payment_trx_id = p_old_line_Payment_rec.payment_trx_id)
3640 		OR (p_x_line_Payment_rec.payment_type_code IN ('CASH','WIRE_TRANSFER')))
3641 		THEN
3642 			--<no operation is needed if payment information did not change>
3643 			IF l_debug_level  > 0 THEN
3644 				oe_debug_pub.add('No change to payments attributes...');
3645 			END IF;
3646 			NULL;
3647 		--While changing the payment type from cash, check etc to
3648 		--credit card payment type, the operation would be update but the
3649 		--transaction extension id would be null.
3650 		ELSIF p_x_line_payment_rec.trxn_extension_id IS NULL OR
3651 		p_x_line_payment_rec.trxn_extension_id = FND_API.G_MISS_NUM THEN
3652 
3653 			IF l_debug_level > 0 THEN
3654 			   oe_debug_pub.add(  'Inside trxn extension id creation part....');
3655 			   oe_debug_pub.add('  Operation is UPDATE and Trxn extension id is null...');
3656 			   oe_debug_pub.add('  Creating a new trxn extension id ');
3657 			END IF;
3658 
3659 
3660 			/*l_trx_date := nvl(l_ordered_date, sysdate)
3661 			    - nvl( to_number(fnd_profile.value('ONT_DAYS_TO_BACKDATE_BANK_ACCT')), 0);*/
3662 			IF p_x_line_Payment_rec.payment_type_code = 'CREDIT_CARD'
3663                           -- 5204275
3664                           OR (l_is_split_payment = 'Y'
3665                               AND p_x_line_Payment_rec.payment_type_code IS NULL)
3666                         THEN
3667 				IF OE_Payment_Trxn_Util.g_CC_Security_Code_Use  IS NULL THEN
3668 					OE_Payment_Trxn_Util.g_CC_Security_Code_Use := OE_Payment_Trxn_Util.Get_CC_Security_Code_Use;
3669 				END IF;
3670 
3671 				IF OE_Payment_Trxn_Util.g_CC_Security_Code_Use  = 'REQUIRED' AND
3672 				p_x_line_Payment_rec.instrument_security_code IS NULL THEN
3673 					FND_MESSAGE.SET_NAME('ONT','OE_CC_SECURITY_CODE_REQD');
3674 					OE_Msg_Pub.Add;
3675 					RAISE FND_API.G_EXC_ERROR;
3676 				END IF;
3677 			END IF;
3678 
3679 			IF NOT OE_GLOBALS.Is_Same_Credit_Card(p_old_line_Payment_rec.credit_card_number,
3680 			    p_x_line_Payment_rec.credit_card_number,
3681 			    p_old_line_Payment_rec.cc_instrument_id,
3682 			    p_x_line_Payment_rec.cc_instrument_id)
3683 			OR NOT OE_GLOBALS.Equal(p_x_line_Payment_rec.credit_card_code,
3684 			p_old_line_Payment_rec.credit_card_code) THEN
3685 				IF NOT OE_GLOBALS.Equal(p_x_line_Payment_rec.credit_card_holder_name,
3686 				p_old_line_Payment_rec.credit_card_holder_name)
3687 				OR NOT OE_GLOBALS.Equal(p_x_line_Payment_rec.credit_card_expiration_date,
3688 				p_old_line_Payment_rec.credit_card_expiration_date)  THEN
3689 					l_update_card_flag := 'Y';
3690 				ELSE
3691 					l_update_card_flag := 'N';
3692 				END IF;
3693 			ELSIF NOT OE_GLOBALS.Equal(p_x_line_Payment_rec.credit_card_holder_name,
3694 			p_old_line_Payment_rec.credit_card_holder_name)
3695 			OR NOT OE_GLOBALS.Equal(p_x_line_Payment_rec.credit_card_expiration_date,
3696 			p_old_line_Payment_rec.credit_card_expiration_date)  THEN
3697 				l_update_card_flag := 'Y';
3698 			END IF;
3699 
3700 			IF l_debug_level > 0 THEN
3701 			   oe_debug_pub.add(  'Before calling create payment trxn....');
3702 			   oe_debug_pub.add('Update card flag..'||l_update_card_flag);
3703 			END IF;
3704 
3705         		BEGIN
3706 				OE_PAYMENT_TRXN_UTIL.Create_Payment_TRXN
3707 				(p_header_id		=> p_x_line_Payment_rec.header_id,
3708 				 p_line_id		=> p_x_line_payment_rec.line_id,
3709 				 p_cust_id		=> l_hdr_inv_to_cust_id,
3710 				 P_site_use_id		=> l_invoice_to_org_id,
3711 				 P_payment_trx_id	=> p_x_line_payment_rec.payment_trx_id,
3712 				 p_payment_number	=> p_x_line_payment_rec.payment_number,
3713 				 P_payment_type_code	=> p_x_line_payment_rec.payment_type_code,
3714 				 P_card_number		=> p_x_line_payment_rec.credit_card_number,
3715 				 p_card_code		=> p_x_line_payment_rec.credit_card_code,
3716 				 P_card_holder_name	=> p_x_line_payment_rec.credit_card_holder_name,
3717 				 P_exp_date		=> p_x_line_payment_rec.credit_card_expiration_date,
3718 				 p_receipt_method_id	=> p_x_line_payment_rec.receipt_method_id,
3719 				 p_instrument_security_code=>p_x_line_payment_rec.instrument_security_code,
3720 				 p_update_card_flag	=> l_update_card_flag,
3721 				 p_instrument_id	=> p_x_line_payment_rec.cc_instrument_id,
3722 				 p_instrument_assignment_id => p_x_line_payment_rec.cc_instrument_assignment_id,
3723 				 p_x_trxn_extension_id	=> p_x_line_payment_rec.trxn_extension_id,
3724 				 X_return_status	=> l_return_status,
3725 				 X_msg_count		=> l_msg_count,
3726 				 X_msg_data		=> l_msg_data);
3727 
3728 				 --p_x_line_payment_rec.trxn_extension_id := l_trxn_extension_id;
3729 				 IF l_debug_level>0 THEN
3730 					 oe_debug_pub.add('New trxn extension id after calling Create_Payment_TRXN:'||l_trxn_extension_id);
3731 				 END IF;
3732 			  EXCEPTION
3733 				  WHEN FND_API.G_EXC_ERROR THEN
3734 					OE_MSG_PUB.Count_And_Get
3735 					    ( p_count => l_msg_count,
3736 					      p_data  => l_msg_data
3737 					    );
3738 					l_return_status := FND_API.G_RET_STS_ERROR;
3739 					RAISE FND_API.G_EXC_ERROR;
3740 
3741 				  WHEN OTHERS THEN
3742 					     OE_MSG_PUB.Count_And_Get
3743 					     ( p_count => l_msg_count,
3744 					       p_data  => l_msg_data
3745 					     );
3746 					      FND_MESSAGE.SET_NAME('ONT','OE_VPM_CC_ACCT_NOT_SET');
3747 					      OE_MSG_PUB.ADD;
3748 					      IF l_debug_level  > 0 THEN
3749 						 oe_debug_pub.add(  'OEXUHPMB: ERROR IN CREATE PAYMENT trxn...'||sqlerrm) ;
3750 						 oe_debug_pub.add('Error messsge ksurendr'||l_return_status);
3751 					      END IF;
3752 					      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3753 			   END;
3754 		--Trxn extension id exists and an update to some of the
3755 		--attributes of the payment transaction has occured. So
3756 		--need to call Update_Payment_Trxn API.
3757 		ELSE
3758 			BEGIN
3759 
3760 				-- validate cc security code
3761 				/*IF p_x_line_Payment_rec.payment_type_code = 'CREDIT_CARD' THEN
3762 					IF OE_Payment_Trxn_Util.g_CC_Security_Code_Use  IS NULL THEN
3763 						OE_Payment_Trxn_Util.g_CC_Security_Code_Use := OE_Payment_Trxn_Util.Get_CC_Security_Code_Use;
3764 					END IF;
3765 					IF OE_Payment_Trxn_Util.g_CC_Security_Code_Use  = 'REQUIRED'
3766 					AND p_x_line_Payment_rec.instrument_security_code IS NULL THEN
3767 						FND_MESSAGE.SET_NAME('ONT','OE_CC_SECURITY_CODE_REQD');
3768 						OE_Msg_Pub.Add;
3769 						RAISE FND_API.G_EXC_ERROR;
3770 					END IF;
3771 				END IF;*/
3772 				IF l_debug_level  > 0 THEN
3773 					oe_debug_pub.add('Verifying whether to call update card API...');
3774 				END IF;
3775 
3776 				--R12 CC Encryption
3777 				--Since the credit card numbers are encrypted, passing both the credit card
3778 				--numbers as well as instrument ids to determine if both the old and new
3779 				--values point to the same credit card number.
3780 				IF NOT OE_GLOBALS.Is_Same_Credit_Card(p_old_line_Payment_rec.credit_card_number,
3781 				    p_x_line_Payment_rec.credit_card_number,
3782 				    p_old_line_Payment_rec.cc_instrument_id,
3783 				    p_x_line_Payment_rec.cc_instrument_id)
3784 				OR NOT OE_GLOBALS.Equal(p_x_line_Payment_rec.credit_card_code,
3785 				p_old_line_Payment_rec.credit_card_code) THEN
3786 					IF NOT OE_GLOBALS.Equal(p_x_line_Payment_rec.credit_card_holder_name,
3787 					p_old_line_Payment_rec.credit_card_holder_name)
3788 					OR NOT OE_GLOBALS.Equal(p_x_line_Payment_rec.credit_card_expiration_date,
3789 					p_old_line_Payment_rec.credit_card_expiration_date)  THEN
3790 						l_update_card_flag := 'Y';
3791 					ELSE
3792 						l_update_card_flag := 'N';
3793 					END IF;
3794 				ELSIF NOT OE_GLOBALS.Equal(p_x_line_Payment_rec.credit_card_holder_name,
3795 				p_old_line_Payment_rec.credit_card_holder_name)
3796 				OR NOT OE_GLOBALS.Equal(p_x_line_Payment_rec.credit_card_expiration_date,
3797 				p_old_line_Payment_rec.credit_card_expiration_date)  THEN
3798 					l_update_card_flag := 'Y';
3799 				END IF;
3800 				IF l_debug_level  > 0 THEN
3801 					oe_debug_pub.add('Before calling update payment trxn...');
3802 					oe_debug_pub.add('Update card flag...'||l_update_card_flag);
3803 				END IF;
3804 
3805 				--<payment transaction id already exists,  need  to update the IBY transaction
3806 				--extenstion table>
3807 				OE_PAYMENT_TRXN_UTIL.Update_Payment_TRXN
3808 				(P_header_id		=> p_x_line_Payment_rec.header_id,
3809 				p_line_id		=> p_x_line_Payment_rec.line_id,
3810 				p_cust_id		=> l_hdr_inv_to_cust_id,
3811 				P_site_use_id		=> l_invoice_to_org_id,
3812 				P_payment_trx_id	=> p_x_line_payment_rec.payment_trx_id,
3813 				p_payment_number	=> p_x_line_payment_rec.payment_number,
3814 				P_payment_type_code	=> p_x_line_payment_rec.payment_type_code,
3815 				p_card_number		=> p_x_line_payment_rec.credit_card_number,
3816 				p_card_code		=> p_x_line_payment_rec.credit_card_code,
3817 				p_card_holder_name	=> p_x_line_payment_rec.credit_card_holder_name,
3818 				p_exp_date		=> p_x_line_payment_rec.credit_card_expiration_date,
3819 				p_receipt_method_id	=> p_x_line_payment_rec.receipt_method_id,
3820 				p_instrument_security_code => p_x_line_payment_rec.instrument_security_code,
3821 				p_trxn_extension_id	=> p_x_line_payment_rec.trxn_extension_id,
3822 				p_update_card_flag	=> l_update_card_flag,
3823 				p_instrument_id	=> p_x_line_payment_rec.cc_instrument_id,
3824 				p_instrument_assignment_id => p_x_line_payment_rec.cc_instrument_assignment_id,
3825 				X_return_status		=> l_return_status,
3826 				X_msg_count		=> l_msg_count,
3827 				X_msg_data		=> l_msg_data);
3828 
3829 
3830 				IF l_debug_level > 0 THEN
3831 					oe_debug_pub.add('trxn extension id after calling Update_Payment_TRXN:'||p_x_line_payment_rec.trxn_extension_id);
3832 					oe_debug_pub.add(  'id already derived for this credit card');
3833 				END IF;
3834 			EXCEPTION
3835 		        WHEN FND_API.G_EXC_ERROR THEN
3836 				IF l_debug_level > 0 THEN
3837 					oe_debug_pub.add('Update_Payment_TRXN  error....exc');
3838 					oe_debug_pub.add('After call to Update_Payment_TRXN'||l_return_status);
3839 					oe_debug_pub.add('Error'||sqlerrm);
3840 				END IF;
3841 				l_return_status := FND_API.G_RET_STS_ERROR;
3842 				OE_MSG_PUB.Count_And_Get
3843 				    ( p_count => l_msg_count,
3844 				      p_data  => l_msg_data
3845 				    );
3846 				RAISE FND_API.G_EXC_ERROR;
3847 
3848 		        WHEN OTHERS THEN
3849 				IF l_debug_level  > 0 THEN
3850 					oe_debug_pub.add('After call to Update_Payment_TRXN --> Unexpected error');
3851 					oe_debug_pub.add('Error message '||sqlerrm);
3852 				END IF;
3853 				RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3854 			END;
3855 		END IF;
3856 	--Operation is Create. Hence need to create a new Trxn extension id
3857 	--by calling the Create_trxn_extension API.
3858 	ELSIF p_x_line_payment_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN --not a copy order Verify
3859 
3860 		IF l_debug_level > 0 THEN
3861 		   oe_debug_pub.add(  'Inside trxn extension id creation part....');
3862 		END IF;
3863 
3864 
3865 		/*l_trx_date := nvl(l_ordered_date, sysdate)
3866                     - nvl( to_number(fnd_profile.value('ONT_DAYS_TO_BACKDATE_BANK_ACCT')), 0);*/
3867 		IF p_x_line_Payment_rec.payment_type_code = 'CREDIT_CARD' THEN
3868 			IF OE_Payment_Trxn_Util.g_CC_Security_Code_Use  IS NULL THEN
3869 				OE_Payment_Trxn_Util.g_CC_Security_Code_Use := OE_Payment_Trxn_Util.Get_CC_Security_Code_Use;
3870 			END IF;
3871 
3872 			IF OE_Payment_Trxn_Util.g_CC_Security_Code_Use  = 'REQUIRED' AND
3873 			p_x_line_Payment_rec.instrument_security_code IS NULL THEN
3874 				FND_MESSAGE.SET_NAME('ONT','OE_CC_SECURITY_CODE_REQD');
3875 				OE_Msg_Pub.Add;
3876 				RAISE FND_API.G_EXC_ERROR;
3877 			END IF;
3878 		END IF;
3879 
3880 		IF NOT OE_GLOBALS.Is_Same_Credit_Card(p_old_line_Payment_rec.credit_card_number,
3881 		    p_x_line_Payment_rec.credit_card_number,
3882 		    p_old_line_Payment_rec.cc_instrument_id,
3883 		    p_x_line_Payment_rec.cc_instrument_id)
3884 		OR NOT OE_GLOBALS.Equal(p_x_line_Payment_rec.credit_card_code,
3885 		p_old_line_Payment_rec.credit_card_code) THEN
3886 			IF NOT OE_GLOBALS.Equal(p_x_line_Payment_rec.credit_card_holder_name,
3887 			p_old_line_Payment_rec.credit_card_holder_name)
3888 			OR NOT OE_GLOBALS.Equal(p_x_line_Payment_rec.credit_card_expiration_date,
3889 			p_old_line_Payment_rec.credit_card_expiration_date)  THEN
3890 				l_update_card_flag := 'Y';
3891 			ELSE
3892 				l_update_card_flag := 'N';
3893 			END IF;
3894 		ELSIF NOT OE_GLOBALS.Equal(p_x_line_Payment_rec.credit_card_holder_name,
3895 		p_old_line_Payment_rec.credit_card_holder_name)
3896 		OR NOT OE_GLOBALS.Equal(p_x_line_Payment_rec.credit_card_expiration_date,
3897 		p_old_line_Payment_rec.credit_card_expiration_date)  THEN
3898 			l_update_card_flag := 'Y';
3899 		END IF;
3900 
3901 		IF l_debug_level > 0 THEN
3902 		   oe_debug_pub.add(  'Before calling create payment trxn....');
3903 		   oe_debug_pub.add('Update card flag..'||l_update_card_flag);
3904 		END IF;
3905 
3906                --Begin
3907 	       --IF p_x_line_payment_rec.trxn_extension_id IS NULL THEN
3908 
3909 		  BEGIN
3910 			OE_PAYMENT_TRXN_UTIL.Create_Payment_TRXN
3911 			(p_header_id		=> p_x_line_Payment_rec.header_id,
3912 			 p_line_id		=> p_x_line_payment_rec.line_id,
3913 			 p_cust_id		=> l_hdr_inv_to_cust_id,
3914 			 P_site_use_id		=> l_invoice_to_org_id,
3915 			 P_payment_trx_id	=> p_x_line_payment_rec.payment_trx_id,
3916 			 p_payment_number	=> p_x_line_payment_rec.payment_number,
3917 			 P_payment_type_code	=> p_x_line_payment_rec.payment_type_code,
3918 			 P_card_number		=> p_x_line_payment_rec.credit_card_number,
3919 			 p_card_code		=> p_x_line_payment_rec.credit_card_code,
3920 			 P_card_holder_name	=> p_x_line_payment_rec.credit_card_holder_name,
3921 			 P_exp_date		=> p_x_line_payment_rec.credit_card_expiration_date,
3922 			 p_receipt_method_id	=> p_x_line_payment_rec.receipt_method_id,
3923 			 p_instrument_security_code=>p_x_line_payment_rec.instrument_security_code,
3924 			 p_update_card_flag	=> l_update_card_flag,
3925 			 p_instrument_id	=> p_x_line_payment_rec.cc_instrument_id,
3926 			 p_instrument_assignment_id => p_x_line_payment_rec.cc_instrument_assignment_id,
3927 			 p_x_trxn_extension_id	=> p_x_line_payment_rec.trxn_extension_id,
3928 			 X_return_status	=> l_return_status,
3929 			 X_msg_count		=> l_msg_count,
3930 			 X_msg_data		=> l_msg_data);
3931 
3932 			 --p_x_line_payment_rec.trxn_extension_id := l_trxn_extension_id;
3933 			 IF l_debug_level>0 THEN
3934 				 oe_debug_pub.add('New trxn extension id after calling Create_Payment_TRXN:'||l_trxn_extension_id);
3935 			 END IF;
3936 		    Exception
3937 		    WHEN FND_API.G_EXC_ERROR THEN
3938 			OE_MSG_PUB.Count_And_Get
3939 			    ( p_count => l_msg_count,
3940 			      p_data  => l_msg_data
3941 			    );
3942 			l_return_status := FND_API.G_RET_STS_ERROR;
3943 			RAISE FND_API.G_EXC_ERROR;
3944 
3945 		    WHEN OTHERS THEN
3946 			     OE_MSG_PUB.Count_And_Get
3947 			     ( p_count => l_msg_count,
3948 			       p_data  => l_msg_data
3949 			     );
3950 			      FND_MESSAGE.SET_NAME('ONT','OE_VPM_CC_ACCT_NOT_SET');
3951 			      OE_MSG_PUB.ADD;
3952 			      IF l_debug_level  > 0 THEN
3953 				 oe_debug_pub.add(  'OEXUHPMB: ERROR IN CREATE PAYMENT trxn...'||sqlerrm) ;
3954 				 oe_debug_pub.add('Error messsge ksurendr'||l_return_status);
3955 			      END IF;
3956 			      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3957 		     end;
3958 	END IF; --Operation
3959   ELSIF p_x_line_payment_rec.payment_type_code IN ('CHECK','CASH') AND
3960   p_x_line_payment_rec.operation = OE_GLOBALS.G_OPR_UPDATE
3961   AND p_old_line_Payment_rec.trxn_extension_id IS NOT NULL THEN
3962 
3963 	--For update operation, the trxn extension id of the original
3964 	--transaction needs to be deleted if it already exists as
3965 	--there is no trxn extension id for check payments.
3966 	IF l_debug_level > 0 THEN
3967 		oe_debug_pub.add(' Before calling delete payment trxn....');
3968 		oe_debug_pub.add(' Trxn extension to delete'||p_old_line_Payment_rec.trxn_extension_id);
3969 		oe_debug_pub.add(' Header id '||p_x_line_payment_rec.line_id);
3970 	END IF;
3971 
3972 	OE_PAYMENT_TRXN_UTIL.Delete_Payment_Trxn
3973 	(p_header_id => p_x_line_payment_rec.header_id,
3974 	 p_line_id   => p_x_line_payment_rec.line_id,
3975 	 p_payment_number =>  p_x_line_payment_rec.payment_number,
3976 	 x_return_status  =>  l_return_status,
3977 	 x_msg_count      =>  l_msg_count,
3978 	 x_msg_data       =>  l_msg_data,
3979 	 p_trxn_extension_id => p_old_line_Payment_rec.trxn_extension_id,
3980 	 P_site_use_id	    => l_invoice_to_org_id
3981 	 );
3982 
3983 	IF l_return_status = FND_API.G_RET_STS_ERROR  THEN
3984 		RAISE FND_API.G_EXC_ERROR;
3985 	ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3986 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3987 	END IF;
3988 
3989 	IF l_debug_level > 0 THEN
3990 		oe_debug_pub.add('Successful deletion of trxn extension');
3991 		oe_debug_pub.add('Return status after delete trxn in pre write process '|| l_return_status);
3992 		oe_debug_pub.add('msg data'||l_msg_data);
3993 	END IF;
3994 
3995 	--Setting the trxn extension id as null as for transactions
3996 	--coming from sales order others tab, the trxn extension id would
3997 	--be updated in oe_payments table during updation.
3998 	p_x_line_payment_rec.trxn_extension_id := null;
3999   END IF; --Payment type condtion
4000 --R12 CC Encryption
4001 EXCEPTION
4002      WHEN FND_API.G_EXC_ERROR THEN
4003          IF L_DEBUG_LEVEL > 0 THEN
4004             Oe_debug_pub.add('OEXULPMB.pls - pre_write_process error ');
4005          END if;
4006 	p_x_line_payment_rec.return_status := FND_API.G_RET_STS_ERROR;
4007 	RAISE FND_API.G_EXC_ERROR;
4008      WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4009          IF L_DEBUG_LEVEL > 0 THEN
4010             Oe_debug_pub.add('OEXULPMB.pls - pre_write_process unexpected error ');
4011          END if;
4012 	p_x_line_payment_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4013 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4014      WHEN OTHERS THEN
4015          if l_debug_level > 0 then
4016             oe_debug_pub.add('OEXULPMB.pls - pre_write_process unexpected error ');
4017          end if;
4018  	p_x_line_payment_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4019         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4020 
4021 END Pre_Write_Process;
4022 
4023 --3382262
4024 Procedure Delete_Payment_at_line(p_header_id in number := null,
4025                                    p_line_id in number,
4026                                    p_payment_number in number := null,
4027                                    p_payment_type_code in varchar2 := null,
4028                                    p_del_commitment in number := 0,
4029                                    x_return_status out nocopy varchar2,
4030                                    x_msg_count out nocopy number,
4031                                    x_msg_data out nocopy varchar2) is
4032 p_count number := -1;
4033 p_x_line_rec OE_ORDER_PUB.Line_Rec_Type;
4034 l_old_line_rec OE_ORDER_PUB.Line_Rec_Type;
4035 l_line_rec OE_ORDER_PUB.Line_Rec_Type;
4036 l_return_status varchar2(30) := NULL;
4037 l_payment_type_code varchar2(30) := null;
4038 l_upd_commitment number := 0;
4039 l_upd_payment number := 0;
4040 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4041 
4042 Begin
4043 
4044 
4045  IF p_payment_number is not null or p_payment_type_code is not null then
4046 
4047     IF p_payment_type_code = 'COMMITMENT' then
4048        l_upd_commitment := 1;
4049     ELSE
4050        l_upd_payment := 1;
4051     END IF;
4052 
4053  END IF;
4054 
4055   IF p_del_commitment = 1 then
4056 
4057     l_upd_commitment := 1;
4058 
4059   END IF;
4060 
4061 
4062 
4063  -- Set up the Line record
4064  OE_Line_Util.Lock_Row
4065                 (p_line_id                    => p_line_id
4066                 ,p_x_line_rec         => l_old_line_rec
4067                 ,x_return_status                => l_return_status
4068                 );
4069  IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4070             RAISE FND_API.G_EXC_ERROR;
4071  ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4072             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4073  END IF;
4074 
4075  l_line_rec := l_old_line_rec;
4076 
4077  if l_debug_level > 0 then
4078     oe_debug_pub.add('before updating oe_order_headers_all ');
4079  end if;
4080 
4081  if l_upd_commitment = 1 and l_upd_payment = 1 then
4082 
4083     if l_debug_level > 0 then
4084       oe_debug_pub.add('update commitment and payment type ');
4085     end if;
4086 
4087     update oe_order_lines_all
4088     set payment_type_code = null,
4089           commitment_id     = null
4090     where line_id = p_line_id;
4091 
4092  elsif l_upd_payment = 1 then
4093 
4094     if l_debug_level > 0 then
4095      oe_debug_pub.add('update payment type ');
4096     end if;
4097 
4098       update oe_order_lines_all
4099       set payment_type_code = null
4100       where line_id = p_line_id;
4101 
4102  elsif l_upd_commitment = 1 then
4103 
4104     if l_debug_level > 0 then
4105      oe_debug_pub.add('update commitment ');
4106     end if;
4107 
4108       update oe_order_lines_all
4109       set commitment_id = null
4110       where line_id = p_line_id;
4111  end if;
4112 
4113 Exception
4114 
4115 WHEN FND_API.G_EXC_ERROR THEN
4116       x_return_status := FND_API.G_RET_STS_ERROR;
4117       OE_MSG_PUB.Count_And_Get
4118             ( p_count => x_msg_count,
4119               p_data  => x_msg_data
4120             );
4121 
4122     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4123       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4124       OE_MSG_PUB.Count_And_Get
4125             ( p_count => x_msg_count,
4126               p_data  => x_msg_data
4127             );
4128 
4129 WHEN OTHERS THEN
4130       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4131       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4132       THEN
4133         OE_MSG_PUB.Add_Exc_Msg
4134             (   G_PKG_NAME
4135             ,   'Delete_Payment_at_Line'
4136             );
4137       END IF;
4138 
4139 END Delete_Payment_at_line;
4140 --3382262
4141 
4142 
4143 
4144 END OE_Line_Payment_Util;