7:
8: C_REQUIRED CONSTANT VARCHAR2(25) := 'REQUIRED';
9: C_ENABLED CONSTANT VARCHAR2(25) := 'ENABLED';
10:
11: PROCEDURE AddLineNumbersToErrors (p_header_errors IN AP_WEB_UTILITIES_PKG.expError,
12: p_receipt_errors IN AP_WEB_UTILITIES_PKG.receipt_error_stack);
13:
14: PROCEDURE CheckForReceiptWarnings (p_receipt_errors IN AP_WEB_UTILITIES_PKG.receipt_error_stack);
15:
8: C_REQUIRED CONSTANT VARCHAR2(25) := 'REQUIRED';
9: C_ENABLED CONSTANT VARCHAR2(25) := 'ENABLED';
10:
11: PROCEDURE AddLineNumbersToErrors (p_header_errors IN AP_WEB_UTILITIES_PKG.expError,
12: p_receipt_errors IN AP_WEB_UTILITIES_PKG.receipt_error_stack);
13:
14: PROCEDURE CheckForReceiptWarnings (p_receipt_errors IN AP_WEB_UTILITIES_PKG.receipt_error_stack);
15:
16: Procedure OAInsertTempData(
10:
11: PROCEDURE AddLineNumbersToErrors (p_header_errors IN AP_WEB_UTILITIES_PKG.expError,
12: p_receipt_errors IN AP_WEB_UTILITIES_PKG.receipt_error_stack);
13:
14: PROCEDURE CheckForReceiptWarnings (p_receipt_errors IN AP_WEB_UTILITIES_PKG.receipt_error_stack);
15:
16: Procedure OAInsertTempData(
17: p_report_header_info IN AP_WEB_DFLEX_PKG.ExpReportHeaderRec,
18: p_report_lines_info IN AP_WEB_DFLEX_PKG.ExpReportLines_A,
15:
16: Procedure OAInsertTempData(
17: p_report_header_info IN AP_WEB_DFLEX_PKG.ExpReportHeaderRec,
18: p_report_lines_info IN AP_WEB_DFLEX_PKG.ExpReportLines_A,
19: p_receipt_errors IN AP_WEB_UTILITIES_PKG.receipt_error_stack,
20: Custom1_Array IN AP_WEB_DFLEX_PKG.CustomFields_A,
21: Custom2_Array IN AP_WEB_DFLEX_PKG.CustomFields_A,
22: Custom3_Array IN AP_WEB_DFLEX_PKG.CustomFields_A,
23: Custom4_Array IN AP_WEB_DFLEX_PKG.CustomFields_A,
37: p_employee_id IN NUMBER, -- bug 2242176, employee's id
38: p_user_id IN NUMBER, -- bug 2242176, employee's user id
39: p_report_header_info IN AP_WEB_DFLEX_PKG.ExpReportHeaderRec,
40: p_report_lines_info IN AP_WEB_DFLEX_PKG.ExpReportLines_A,
41: p_receipts_errors IN OUT NOCOPY AP_WEB_UTILITIES_PKG.receipt_error_stack);
42:
43: PROCEDURE CheckForMileagePerDiemPolicy(
44: p_user_id IN NUMBER,
45: p_report_header_info IN AP_WEB_DFLEX_PKG.ExpReportHeaderRec,
43: PROCEDURE CheckForMileagePerDiemPolicy(
44: p_user_id IN NUMBER,
45: p_report_header_info IN AP_WEB_DFLEX_PKG.ExpReportHeaderRec,
46: p_report_lines_info IN OUT NOCOPY AP_WEB_DFLEX_PKG.ExpReportLines_A,
47: p_header_errors IN OUT NOCOPY AP_WEB_UTILITIES_PKG.expError,
48: p_receipts_errors IN OUT NOCOPY AP_WEB_UTILITIES_PKG.receipt_error_stack);
49:
50: PROCEDURE ValidateHeaderDFF(
51: p_user_id IN NUMBER,
44: p_user_id IN NUMBER,
45: p_report_header_info IN AP_WEB_DFLEX_PKG.ExpReportHeaderRec,
46: p_report_lines_info IN OUT NOCOPY AP_WEB_DFLEX_PKG.ExpReportLines_A,
47: p_header_errors IN OUT NOCOPY AP_WEB_UTILITIES_PKG.expError,
48: p_receipts_errors IN OUT NOCOPY AP_WEB_UTILITIES_PKG.receipt_error_stack);
49:
50: PROCEDURE ValidateHeaderDFF(
51: p_user_id IN NUMBER,
52: p_report_header_info IN AP_WEB_DFLEX_PKG.ExpReportHeaderRec,
49:
50: PROCEDURE ValidateHeaderDFF(
51: p_user_id IN NUMBER,
52: p_report_header_info IN AP_WEB_DFLEX_PKG.ExpReportHeaderRec,
53: p_header_errors IN OUT NOCOPY AP_WEB_UTILITIES_PKG.expError);
54:
55:
56: /*
57: Written By
121:
122: l_DataDefaultedUpdateable BOOLEAN;
123: l_emp_id AP_WEB_DB_HR_INT_PKG.empCurrent_employeeID;
124:
125: l_receipt_line_errors AP_WEB_UTILITIES_PKG.receipt_error_stack;
126: l_validate_receipt_errors AP_WEB_UTILITIES_PKG.receipt_error_stack;
127: l_parse_header_errors AP_WEB_UTILITIES_PKG.expError;
128: l_parse_receipt_errors AP_WEB_UTILITIES_PKG.receipt_error_stack;
129: l_errortype VARCHAR2(1) ;
122: l_DataDefaultedUpdateable BOOLEAN;
123: l_emp_id AP_WEB_DB_HR_INT_PKG.empCurrent_employeeID;
124:
125: l_receipt_line_errors AP_WEB_UTILITIES_PKG.receipt_error_stack;
126: l_validate_receipt_errors AP_WEB_UTILITIES_PKG.receipt_error_stack;
127: l_parse_header_errors AP_WEB_UTILITIES_PKG.expError;
128: l_parse_receipt_errors AP_WEB_UTILITIES_PKG.receipt_error_stack;
129: l_errortype VARCHAR2(1) ;
130: l_techstack VARCHAR2(1) := AP_WEB_DISC_PKG.C_NewStack;
123: l_emp_id AP_WEB_DB_HR_INT_PKG.empCurrent_employeeID;
124:
125: l_receipt_line_errors AP_WEB_UTILITIES_PKG.receipt_error_stack;
126: l_validate_receipt_errors AP_WEB_UTILITIES_PKG.receipt_error_stack;
127: l_parse_header_errors AP_WEB_UTILITIES_PKG.expError;
128: l_parse_receipt_errors AP_WEB_UTILITIES_PKG.receipt_error_stack;
129: l_errortype VARCHAR2(1) ;
130: l_techstack VARCHAR2(1) := AP_WEB_DISC_PKG.C_NewStack;
131: l_userId VARCHAR2(20):= null;
124:
125: l_receipt_line_errors AP_WEB_UTILITIES_PKG.receipt_error_stack;
126: l_validate_receipt_errors AP_WEB_UTILITIES_PKG.receipt_error_stack;
127: l_parse_header_errors AP_WEB_UTILITIES_PKG.expError;
128: l_parse_receipt_errors AP_WEB_UTILITIES_PKG.receipt_error_stack;
129: l_errortype VARCHAR2(1) ;
130: l_techstack VARCHAR2(1) := AP_WEB_DISC_PKG.C_NewStack;
131: l_userId VARCHAR2(20):= null;
132: l_temp_array OIE_PDM_NUMBER_T; -- bug 5358186
131: l_userId VARCHAR2(20):= null;
132: l_temp_array OIE_PDM_NUMBER_T; -- bug 5358186
133:
134: BEGIN
135: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_OA_DISC_PKG', 'start OAExpReport');
136:
137: ------------------------------------------------------
138: l_debug_info := 'Initalize global message table';
139: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
135: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_OA_DISC_PKG', 'start OAExpReport');
136:
137: ------------------------------------------------------
138: l_debug_info := 'Initalize global message table';
139: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
140: ------------------------------------------------------
141: fnd_msg_pub.initialize;
142:
143: ------------------------------------------------------
141: fnd_msg_pub.initialize;
142:
143: ------------------------------------------------------
144: l_debug_info := 'Retrieve employee information';
145: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
146: ------------------------------------------------------
147: -- Retrieve internal employee id
148: l_targ_emp_id := p_empid;
149:
147: -- Retrieve internal employee id
148: l_targ_emp_id := p_empid;
149:
150: -- Retrieve employee information
151: AP_WEB_UTILITIES_PKG.GetEmployeeInfo(l_employee_name,
152: l_employee_num,
153: l_cost_center,
154: l_targ_emp_id);
155:
154: l_targ_emp_id);
155:
156: -------------------------------------------------
157: l_debug_info := 'get userid';
158: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
159: --------------------------------------------------
160: AP_WEB_OA_MAINFLOW_PKG.GetUserID(p_empid, l_userId);
161:
162: ------------------------------------------------------
160: AP_WEB_OA_MAINFLOW_PKG.GetUserID(p_empid, l_userId);
161:
162: ------------------------------------------------------
163: l_debug_info := 'Initalize prompt array';
164: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
165: ------------------------------------------------------
166: AP_WEB_DISC_PKG.ap_web_init_prompts_array(TO_NUMBER(l_userId), l_table, l_temp_errors);
167:
168: ------------------------------------------------------
166: AP_WEB_DISC_PKG.ap_web_init_prompts_array(TO_NUMBER(l_userId), l_table, l_temp_errors);
167:
168: ------------------------------------------------------
169: l_debug_info := 'Check for prompt array errors';
170: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
171: ------------------------------------------------------
172: IF l_temp_errors.count > 0 THEN
173: fnd_message.set_name('SQLAP','AP_WEB_DISC_ZERO_PROMPTS');
174: fnd_msg_pub.add();
177: END IF;
178:
179: ------------------------------------------------------
180: l_debug_info := 'Get more employee information';
181: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
182: ------------------------------------------------------
183: -- Determine whether project enabled
184:
185: AP_WEB_PROJECT_PKG.IsSessionProjectEnabled(
197: END IF;
198:
199: -------------------------------------------------------
200: l_debug_info := 'parse exp report';
201: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
202: -------------------------------------------------------
203: l_report_header_info.employee_id := p_empid;
204: AP_WEB_DISC_PKG.ParseExpReport(
205: TO_NUMBER(l_userId), -- Bug 2242176, Employee FND user id
232: );
233:
234: -------------------------------------------------------
235: l_debug_info := 'add line numbers to parse errors';
236: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
237: -------------------------------------------------------
238: AddLineNumbersToErrors (l_parse_header_errors, l_parse_receipt_errors);
239:
240: -- fnd_msg_pub.count_and_get() returns the number of error messages in the table.
253: l_parse_header_errors);
254:
255: -------------------------------------------------
256: l_debug_info := 'validate receipt lines';
257: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
258: --------------------------------------------------
259: l_receipt_count := TO_NUMBER(l_report_header_info.receipt_count);
260: p_receipt_count := l_receipt_count;
261: IF (l_receipt_count > 0 ) THEN
302: END IF;
303:
304: -------------------------------------------------------
305: l_debug_info := 'Validate Foreign Currencies';
306: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
307: -------------------------------------------------------
308: -- 1966365: Checks whether foreign currencies have a rate of 1 or null
309: AP_WEB_DISC_PKG.ValidateForeignCurrencies(l_report_header_info,
310: l_report_lines_info, l_validate_receipt_errors);
310: l_report_lines_info, l_validate_receipt_errors);
311:
312: -------------------------------------------------------
313: l_debug_info := 'Validate Required Fields';
314: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
315: -------------------------------------------------------
316: -- 2159879: Checks whether Required fields are present or not
317: AP_WEB_OA_DISC_PKG.ValidateRequiredProjectTask(TO_NUMBER(p_empid),
318: TO_NUMBER(l_userId),
320: l_report_lines_info, l_validate_receipt_errors);
321:
322: -------------------------------------------------------
323: l_debug_info := 'Check for Mileage / Per Diem / Policy';
324: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
325: -------------------------------------------------------
326: AP_WEB_OA_DISC_PKG.CheckForMileagePerDiemPolicy(
327: TO_NUMBER(l_userId),
328: l_report_header_info,
329: l_report_lines_info, l_parse_header_errors, l_validate_receipt_errors);
330:
331: -------------------------------------------------------
332: l_debug_info := 'Merge parse errors and validate errors';
333: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
334: -------------------------------------------------------
335: AP_WEB_UTILITIES_PKG.MergeErrorStacks(l_receipt_count, l_parse_receipt_errors,
336: l_validate_receipt_errors, l_validate_receipt_errors);
337:
331: -------------------------------------------------------
332: l_debug_info := 'Merge parse errors and validate errors';
333: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
334: -------------------------------------------------------
335: AP_WEB_UTILITIES_PKG.MergeErrorStacks(l_receipt_count, l_parse_receipt_errors,
336: l_validate_receipt_errors, l_validate_receipt_errors);
337:
338: -------------------------------------------------------
339: l_debug_info := 'calculate number of receipts with errors';
336: l_validate_receipt_errors, l_validate_receipt_errors);
337:
338: -------------------------------------------------------
339: l_debug_info := 'calculate number of receipts with errors';
340: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
341: -------------------------------------------------------
342: --calculate the correct number of receipts with errors:
343: p_receipt_with_error := AP_WEB_UTILITIES_PKG.NumOfReceiptWithError(
344: l_validate_receipt_errors );
339: l_debug_info := 'calculate number of receipts with errors';
340: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
341: -------------------------------------------------------
342: --calculate the correct number of receipts with errors:
343: p_receipt_with_error := AP_WEB_UTILITIES_PKG.NumOfReceiptWithError(
344: l_validate_receipt_errors );
345:
346: -------------------------------------------------------
347: l_debug_info := 'add line numbers to validation errors';
344: l_validate_receipt_errors );
345:
346: -------------------------------------------------------
347: l_debug_info := 'add line numbers to validation errors';
348: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
349: -------------------------------------------------------
350: AddLineNumbersToErrors (l_parse_header_errors, l_validate_receipt_errors);
351: END IF;
352:
351: END IF;
352:
353: -----------------------------------------
354: l_debug_info := 'Set number of errors and error type';
355: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
356: ------------------------------------------
357: fnd_msg_pub.count_and_get(p_count => p_msg_count,
358: p_data => p_msg_data);
359:
362: ELSE
363:
364: -----------------------------------------
365: l_debug_info := 'Check for warnings';
366: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
367: ------------------------------------------
368: CheckForReceiptWarnings (l_validate_receipt_errors);
369:
370: -----------------------------------------
368: CheckForReceiptWarnings (l_validate_receipt_errors);
369:
370: -----------------------------------------
371: l_debug_info := 'Add warnings to message stack';
372: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
373: ------------------------------------------
374: fnd_msg_pub.count_and_get(p_count => p_msg_count,
375: p_data => p_msg_data);
376:
382: END IF;
383:
384: -----------------------------------------
385: l_debug_info := 'Inserts into the Temporary Table';
386: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
387: ------------------------------------------
388: OAInsertTempData(
389: l_report_header_info,
390: l_report_lines_info,
403: Custom12_Array,
404: Custom13_Array,
405: Custom14_Array,
406: Custom15_Array);
407: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_OA_DISC_PKG', 'end OAExpReport');
408:
409: EXCEPTION
410: WHEN OTHERS THEN
411: IF (SQLCODE <> -20001) THEN
429: Procedure called by OAExpReport to insert into the Temporary Tables .
430: Input
431: p_report_header_info IN AP_WEB_DFLEX_PKG.ExpReportHeaderRec,
432: p_report_lines_info IN AP_WEB_DFLEX_PKG.ExpReportLines_A,
433: p_receipt_errors IN AP_WEB_UTILITIES_PKG.receipt_error_stack,
434: Custom1_Array IN AP_WEB_DFLEX_PKG.CustomFields_A,
435: Custom2_Array IN AP_WEB_DFLEX_PKG.CustomFields_A,
436: Custom3_Array IN AP_WEB_DFLEX_PKG.CustomFields_A,
437: Custom4_Array IN AP_WEB_DFLEX_PKG.CustomFields_A,
461:
462: Procedure OAInsertTempData(
463: p_report_header_info IN AP_WEB_DFLEX_PKG.ExpReportHeaderRec,
464: p_report_lines_info IN AP_WEB_DFLEX_PKG.ExpReportLines_A,
465: p_receipt_errors IN AP_WEB_UTILITIES_PKG.receipt_error_stack,
466: Custom1_Array IN AP_WEB_DFLEX_PKG.CustomFields_A,
467: Custom2_Array IN AP_WEB_DFLEX_PKG.CustomFields_A,
468: Custom3_Array IN AP_WEB_DFLEX_PKG.CustomFields_A,
469: Custom4_Array IN AP_WEB_DFLEX_PKG.CustomFields_A,
641: The application is WEB
642: Date
643: 04-OCT-2001
644: */
645: PROCEDURE AddLineNumbersToErrors (p_header_errors IN AP_WEB_UTILITIES_PKG.expError,
646: p_receipt_errors IN AP_WEB_UTILITIES_PKG.receipt_error_stack) IS
647:
648: v_index BINARY_INTEGER;
649: v_array_index BINARY_INTEGER;
642: Date
643: 04-OCT-2001
644: */
645: PROCEDURE AddLineNumbersToErrors (p_header_errors IN AP_WEB_UTILITIES_PKG.expError,
646: p_receipt_errors IN AP_WEB_UTILITIES_PKG.receipt_error_stack) IS
647:
648: v_index BINARY_INTEGER;
649: v_array_index BINARY_INTEGER;
650: v_error_text AP_WEB_UTILITIES_PKG.MSG_TEXT_TYPE%TYPE;
646: p_receipt_errors IN AP_WEB_UTILITIES_PKG.receipt_error_stack) IS
647:
648: v_index BINARY_INTEGER;
649: v_array_index BINARY_INTEGER;
650: v_error_text AP_WEB_UTILITIES_PKG.MSG_TEXT_TYPE%TYPE;
651: v_error_text_array AP_WEB_UTILITIES_PKG.LongString_Array;
652:
653: BEGIN
654: -- Clear current global message stack
647:
648: v_index BINARY_INTEGER;
649: v_array_index BINARY_INTEGER;
650: v_error_text AP_WEB_UTILITIES_PKG.MSG_TEXT_TYPE%TYPE;
651: v_error_text_array AP_WEB_UTILITIES_PKG.LongString_Array;
652:
653: BEGIN
654: -- Clear current global message stack
655: FND_MSG_PUB.Delete_Msg;
678: LOOP
679: --Check if there are any errors.
680: IF (p_receipt_errors(v_index).error_text IS NOT NULL) THEN
681: -- Parse error text into array
682: AP_WEB_UTILITIES_PKG.ArrayifyText(p_receipt_errors(v_index).error_text, v_error_text_array);
683: v_array_index := v_error_text_array.FIRST;
684: LOOP
685: IF (v_error_text_array(v_array_index) IS NOT NULL) THEN
686: v_error_text := v_error_text_array(v_array_index);
722: The application is WEB
723: Date
724: 04-OCT-2001
725: */
726: PROCEDURE CheckForReceiptWarnings (p_receipt_errors IN AP_WEB_UTILITIES_PKG.receipt_error_stack) IS
727:
728: v_index BINARY_INTEGER;
729: v_array_index BINARY_INTEGER;
730: v_warning_text AP_WEB_UTILITIES_PKG.MSG_TEXT_TYPE%TYPE;
726: PROCEDURE CheckForReceiptWarnings (p_receipt_errors IN AP_WEB_UTILITIES_PKG.receipt_error_stack) IS
727:
728: v_index BINARY_INTEGER;
729: v_array_index BINARY_INTEGER;
730: v_warning_text AP_WEB_UTILITIES_PKG.MSG_TEXT_TYPE%TYPE;
731: v_warning_text_array AP_WEB_UTILITIES_PKG.LongString_Array;
732:
733: BEGIN
734: -- Clear current global message stack
727:
728: v_index BINARY_INTEGER;
729: v_array_index BINARY_INTEGER;
730: v_warning_text AP_WEB_UTILITIES_PKG.MSG_TEXT_TYPE%TYPE;
731: v_warning_text_array AP_WEB_UTILITIES_PKG.LongString_Array;
732:
733: BEGIN
734: -- Clear current global message stack
735: FND_MSG_PUB.Delete_Msg;
741: LOOP
742: --Check if there are any warnings.
743: IF (p_receipt_errors(v_index).warning_text IS NOT NULL) THEN
744: -- Parse warning text into array
745: AP_WEB_UTILITIES_PKG.ArrayifyText(p_receipt_errors(v_index).warning_text, v_warning_text_array);
746: v_array_index := v_warning_text_array.FIRST;
747: LOOP
748: IF (v_warning_text_array(v_array_index) IS NOT NULL) THEN
749: v_warning_text := v_warning_text_array(v_array_index);
848: p_employee_id IN NUMBER,
849: p_user_id IN NUMBER,
850: p_report_header_info IN AP_WEB_DFLEX_PKG.ExpReportHeaderRec,
851: p_report_lines_info IN AP_WEB_DFLEX_PKG.ExpReportLines_A,
852: p_receipts_errors IN OUT NOCOPY AP_WEB_UTILITIES_PKG.receipt_error_stack) IS
853:
854: l_errors AP_WEB_UTILITIES_PKG.expError;
855: l_receipt_count BINARY_INTEGER;
856: l_debug_info VARCHAR2(300) := '';
850: p_report_header_info IN AP_WEB_DFLEX_PKG.ExpReportHeaderRec,
851: p_report_lines_info IN AP_WEB_DFLEX_PKG.ExpReportLines_A,
852: p_receipts_errors IN OUT NOCOPY AP_WEB_UTILITIES_PKG.receipt_error_stack) IS
853:
854: l_errors AP_WEB_UTILITIES_PKG.expError;
855: l_receipt_count BINARY_INTEGER;
856: l_debug_info VARCHAR2(300) := '';
857: rec_count NUMBER := 1; /* receipt count */
858:
871: lv_msg_type VARCHAR2(2000);
872: lv_procedure_billable_flag VARCHAR2(200);
873:
874: BEGIN
875: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_OA_DISC_PKG', 'start ValidateRequiredProjectTask');
876: ------------------------------------------------------
877: l_debug_info := 'Verify that the user is a projects user';
878: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
879: ------------------------------------------------------
874: BEGIN
875: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_OA_DISC_PKG', 'start ValidateRequiredProjectTask');
876: ------------------------------------------------------
877: l_debug_info := 'Verify that the user is a projects user';
878: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
879: ------------------------------------------------------
880: AP_WEB_PROJECT_PKG.IsSessionProjectEnabled(
881: p_employee_id, p_user_id,
882: l_IsSessionProjectEnabled);
886: END IF;
887:
888: ------------------------------------------------------
889: l_debug_info := 'Verify that the OIE:Enable Projects profile option is set to Required';
890: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
891: ------------------------------------------------------
892: l_is_project_required := AP_WEB_UTILITIES_PKG.VALUE_SPECIFIC(
893: p_name => 'AP_WEB_ENABLE_PROJECT_ACCOUNTING',
894: p_user_id => p_user_id,
888: ------------------------------------------------------
889: l_debug_info := 'Verify that the OIE:Enable Projects profile option is set to Required';
890: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
891: ------------------------------------------------------
892: l_is_project_required := AP_WEB_UTILITIES_PKG.VALUE_SPECIFIC(
893: p_name => 'AP_WEB_ENABLE_PROJECT_ACCOUNTING',
894: p_user_id => p_user_id,
895: p_resp_id => null,
896: p_apps_id => null);
899: -- Loop through all receipts
900: FOR rec_count IN 1..l_receipt_count LOOP
901: ------------------------------------------------------
902: l_debug_info := 'Get the expenditure type for receipt '|| to_char(rec_count);
903: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
904: ------------------------------------------------------
905: AP_WEB_PROJECT_PKG.GetExpenditureTypeMapping(p_report_lines_info(rec_count).parameter_id,
906: l_pa_expenditure_type);
907:
908: -- If the expenditure type is not null
909: IF (l_pa_expenditure_type IS NOT NULL) THEN
910: ------------------------------------------------------
911: l_debug_info := 'Check whether project number and task number are null';
912: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
913: ------------------------------------------------------
914:
915: -- Output error message if project number and task number is null
916: -- AP_WEB_ENABLE_PROJECT_ACCOUNTING can take Y, N, RA, YA, R
923:
924: IF (p_report_lines_info(rec_count).project_number IS NULL OR
925: p_report_lines_info(rec_count).task_number IS NULL) THEN
926: fnd_message.set_name('SQLAP', 'AP_WEB_PA_PROJTASK_REQUIRED');
927: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
928: fnd_message.get_encoded(),
929: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
930: null,
931: rec_count);
925: p_report_lines_info(rec_count).task_number IS NULL) THEN
926: fnd_message.set_name('SQLAP', 'AP_WEB_PA_PROJTASK_REQUIRED');
927: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
928: fnd_message.get_encoded(),
929: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
930: null,
931: rec_count);
932: END IF;
933: -- Award is required.
932: END IF;
933: -- Award is required.
934: IF (IsGrantsEnabled() AND p_report_lines_info(rec_count).award_number IS NULL) THEN
935: fnd_message.set_name('SQLAP', 'OIE_AWARD_REQUIRED');
936: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
937: fnd_message.get_encoded(),
938: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
939: null,
940: rec_count);
934: IF (IsGrantsEnabled() AND p_report_lines_info(rec_count).award_number IS NULL) THEN
935: fnd_message.set_name('SQLAP', 'OIE_AWARD_REQUIRED');
936: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
937: fnd_message.get_encoded(),
938: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
939: null,
940: rec_count);
941: END IF;
942: ELSE
950:
951:
952: fnd_message.set_name('SQLAP', 'AP_WEB_PA_PROJTASK_REQUIRED');
953: l_return_error_message := fnd_message.get;
954: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
955: l_return_error_message,
956: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
957: 'SQLAP',
958: rec_count,
952: fnd_message.set_name('SQLAP', 'AP_WEB_PA_PROJTASK_REQUIRED');
953: l_return_error_message := fnd_message.get;
954: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
955: l_return_error_message,
956: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
957: 'SQLAP',
958: rec_count,
959: AP_WEB_UTILITIES_PKG.C_PATCMessageCategory, AP_WEB_UTILITIES_PKG.IsMobileApp);
960:
955: l_return_error_message,
956: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
957: 'SQLAP',
958: rec_count,
959: AP_WEB_UTILITIES_PKG.C_PATCMessageCategory, AP_WEB_UTILITIES_PKG.IsMobileApp);
960:
961: ELSE
962: -- 6619166, Projects and Tasks not validated in disconnected expense entry.
963: -- Need to validate only when Project or Task are entered.
976: l_return_error_message)) THEN
977: -- Custom Validate Project Allocations
978: IF (l_return_error_message is not null) THEN
979:
980: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
981: l_return_error_message,
982: AP_WEB_DFLEX_PKG.C_CustValidResMsgTypeError,
983: 'PATC',
984: rec_count,
981: l_return_error_message,
982: AP_WEB_DFLEX_PKG.C_CustValidResMsgTypeError,
983: 'PATC',
984: rec_count,
985: AP_WEB_UTILITIES_PKG.C_PATCMessageCategory, AP_WEB_UTILITIES_PKG.IsMobileApp);
986: AP_WEB_UTILITIES_PKG.MergeErrors(l_errors, p_receipts_errors);
987: -- Bug 7497991: commenting return to continue validations.
988: -- return;
989: END IF;
982: AP_WEB_DFLEX_PKG.C_CustValidResMsgTypeError,
983: 'PATC',
984: rec_count,
985: AP_WEB_UTILITIES_PKG.C_PATCMessageCategory, AP_WEB_UTILITIES_PKG.IsMobileApp);
986: AP_WEB_UTILITIES_PKG.MergeErrors(l_errors, p_receipts_errors);
987: -- Bug 7497991: commenting return to continue validations.
988: -- return;
989: END IF;
990: END IF;
1022: l_return_error_message,
1023: lv_procedure_billable_flag);
1024:
1025: if (l_return_error_message IS NOT NULL AND lv_msg_type = AP_WEB_DFLEX_PKG.C_CustValidResMsgTypeError) then
1026: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
1027: l_return_error_message,
1028: lv_msg_type,
1029: 'PATC',
1030: rec_count,
1027: l_return_error_message,
1028: lv_msg_type,
1029: 'PATC',
1030: rec_count,
1031: AP_WEB_UTILITIES_PKG.C_PATCMessageCategory, AP_WEB_UTILITIES_PKG.IsMobileApp);
1032: else
1033: IF (IsGrantsEnabled() AND p_report_lines_info(rec_count).award_number is not null) THEN
1034: -- 6978992, AwardFundingProject call below is a workaround, GMS API fails with
1035: -- Exact Fetch returns more numberof rows error, when the award is not enabled for a project.
1039: p_report_lines_info(rec_count).task_id)) THEN
1040:
1041: fnd_message.set_name('GMS', 'GMS_INVALID_AWARD');
1042: l_return_error_message := fnd_message.get;
1043: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
1044: l_return_error_message,
1045: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
1046: 'GMS',
1047: rec_count,
1041: fnd_message.set_name('GMS', 'GMS_INVALID_AWARD');
1042: l_return_error_message := fnd_message.get;
1043: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
1044: l_return_error_message,
1045: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
1046: 'GMS',
1047: rec_count,
1048: AP_WEB_UTILITIES_PKG.C_PATCMessageCategory, AP_WEB_UTILITIES_PKG.IsMobileApp);
1049:
1044: l_return_error_message,
1045: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
1046: 'GMS',
1047: rec_count,
1048: AP_WEB_UTILITIES_PKG.C_PATCMessageCategory, AP_WEB_UTILITIES_PKG.IsMobileApp);
1049:
1050: -- Validate for the start expense date
1051: ELSIF(not GMS_OIE_INT_PKG.DoGrantsValidation(p_project_id => p_report_lines_info(rec_count).project_id,
1052: p_task_id => p_report_lines_info(rec_count).task_id,
1055: p_expenditure_type => p_report_lines_info(rec_count).expenditure_type,
1056: p_expenditure_item_date => p_report_lines_info(rec_count).start_date,
1057: p_calling_module => 'SelfService',
1058: p_err_msg => l_return_error_message)) then
1059: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
1060: l_return_error_message,
1061: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
1062: 'GMS',
1063: rec_count,
1057: p_calling_module => 'SelfService',
1058: p_err_msg => l_return_error_message)) then
1059: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
1060: l_return_error_message,
1061: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
1062: 'GMS',
1063: rec_count,
1064: AP_WEB_UTILITIES_PKG.C_PATCMessageCategory, AP_WEB_UTILITIES_PKG.IsMobileApp);
1065: ELSE
1060: l_return_error_message,
1061: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
1062: 'GMS',
1063: rec_count,
1064: AP_WEB_UTILITIES_PKG.C_PATCMessageCategory, AP_WEB_UTILITIES_PKG.IsMobileApp);
1065: ELSE
1066: l_return_error_message := null;
1067: lv_msg_type := null;
1068: END IF;
1083: l_return_error_message,
1084: lv_procedure_billable_flag);
1085:
1086: if (l_return_error_message IS NOT NULL AND lv_msg_type = AP_WEB_DFLEX_PKG.C_CustValidResMsgTypeError) then
1087: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
1088: l_return_error_message,
1089: lv_msg_type,
1090: 'PATC',
1091: rec_count,
1088: l_return_error_message,
1089: lv_msg_type,
1090: 'PATC',
1091: rec_count,
1092: AP_WEB_UTILITIES_PKG.C_PATCMessageCategory, AP_WEB_UTILITIES_PKG.IsMobileApp);
1093: else
1094: IF (IsGrantsEnabled() AND p_report_lines_info(rec_count).award_number is not null) THEN
1095: IF(not GMS_OIE_INT_PKG.AwardFundingProject(
1096: p_report_lines_info(rec_count).award_id,
1098: p_report_lines_info(rec_count).task_id)) THEN
1099:
1100: fnd_message.set_name('GMS', 'GMS_INVALID_AWARD');
1101: l_return_error_message := fnd_message.get;
1102: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
1103: l_return_error_message,
1104: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
1105: 'GMS',
1106: rec_count,
1100: fnd_message.set_name('GMS', 'GMS_INVALID_AWARD');
1101: l_return_error_message := fnd_message.get;
1102: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
1103: l_return_error_message,
1104: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
1105: 'GMS',
1106: rec_count,
1107: AP_WEB_UTILITIES_PKG.C_PATCMessageCategory, AP_WEB_UTILITIES_PKG.IsMobileApp);
1108: -- Validate for the start expense date
1103: l_return_error_message,
1104: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
1105: 'GMS',
1106: rec_count,
1107: AP_WEB_UTILITIES_PKG.C_PATCMessageCategory, AP_WEB_UTILITIES_PKG.IsMobileApp);
1108: -- Validate for the start expense date
1109: ELSIF(not GMS_OIE_INT_PKG.DoGrantsValidation(p_project_id => p_report_lines_info(rec_count).project_id,
1110: p_task_id => p_report_lines_info(rec_count).task_id,
1111: p_award_id => p_report_lines_info(rec_count).award_id,
1113: p_expenditure_type => p_report_lines_info(rec_count).expenditure_type,
1114: p_expenditure_item_date => p_report_lines_info(rec_count).end_date,
1115: p_calling_module => 'SelfService',
1116: p_err_msg => l_return_error_message)) then
1117: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
1118: l_return_error_message,
1119: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
1120: 'GMS',
1121: 1,
1115: p_calling_module => 'SelfService',
1116: p_err_msg => l_return_error_message)) then
1117: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
1118: l_return_error_message,
1119: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
1120: 'GMS',
1121: 1,
1122: AP_WEB_UTILITIES_PKG.C_PATCMessageCategory, AP_WEB_UTILITIES_PKG.IsMobileApp);
1123: ELSE
1118: l_return_error_message,
1119: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
1120: 'GMS',
1121: 1,
1122: AP_WEB_UTILITIES_PKG.C_PATCMessageCategory, AP_WEB_UTILITIES_PKG.IsMobileApp);
1123: ELSE
1124: l_return_error_message := null;
1125: lv_msg_type := null;
1126: END IF;
1135: p_report_lines_info(rec_count).task_number IS NOT NULL OR
1136: p_report_lines_info(rec_count).award_number IS NOT NULL) THEN
1137: fnd_message.set_name('SQLAP', 'OIE_NON_PROJ_EXP');
1138: l_return_error_message := fnd_message.get;
1139: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
1140: l_return_error_message,
1141: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
1142: 'SQLAP',
1143: rec_count,
1137: fnd_message.set_name('SQLAP', 'OIE_NON_PROJ_EXP');
1138: l_return_error_message := fnd_message.get;
1139: AP_WEB_UTILITIES_PKG.AddExpError(l_errors,
1140: l_return_error_message,
1141: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
1142: 'SQLAP',
1143: rec_count,
1144: AP_WEB_UTILITIES_PKG.C_PATCMessageCategory, AP_WEB_UTILITIES_PKG.IsMobileApp);
1145: END IF;
1140: l_return_error_message,
1141: AP_WEB_UTILITIES_PKG.C_ErrorMessageType,
1142: 'SQLAP',
1143: rec_count,
1144: AP_WEB_UTILITIES_PKG.C_PATCMessageCategory, AP_WEB_UTILITIES_PKG.IsMobileApp);
1145: END IF;
1146: END IF; -- Check expenditure type
1147: END LOOP;
1148:
1146: END IF; -- Check expenditure type
1147: END LOOP;
1148:
1149: -- Merge errors with receipt error stack
1150: AP_WEB_UTILITIES_PKG.MergeErrors(l_errors, p_receipts_errors);
1151:
1152: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_OA_DISC_PKG', 'end ValidateRequiredProjectTask');
1153: END ValidateRequiredProjectTask;
1154:
1148:
1149: -- Merge errors with receipt error stack
1150: AP_WEB_UTILITIES_PKG.MergeErrors(l_errors, p_receipts_errors);
1151:
1152: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_OA_DISC_PKG', 'end ValidateRequiredProjectTask');
1153: END ValidateRequiredProjectTask;
1154:
1155:
1156: /*
1396: v_numRows NUMBER := 0;
1397: BEGIN
1398: ------------------------------------------------------
1399: l_debug_info := 'Verify that the OIE:Enable Tax profile option is set to Yes';
1400: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
1401: ------------------------------------------------------
1402: AP_WEB_DFLEX_PKG.IsSessionTaxEnabled(l_is_tax_enabled);
1403: IF (l_is_tax_enabled = C_Yes) THEN
1404: -- This query returns rows if any VAT merchant fields are required in this org
1541: PROCEDURE CheckForMileagePerDiemPolicy(
1542: p_user_id IN NUMBER,
1543: p_report_header_info IN AP_WEB_DFLEX_PKG.ExpReportHeaderRec,
1544: p_report_lines_info IN OUT NOCOPY AP_WEB_DFLEX_PKG.ExpReportLines_A,
1545: p_header_errors IN OUT NOCOPY AP_WEB_UTILITIES_PKG.expError,
1546: p_receipts_errors IN OUT NOCOPY AP_WEB_UTILITIES_PKG.receipt_error_stack) IS
1547:
1548: l_receipt_count BINARY_INTEGER;
1549: l_debug_info VARCHAR2(300) := '';
1542: p_user_id IN NUMBER,
1543: p_report_header_info IN AP_WEB_DFLEX_PKG.ExpReportHeaderRec,
1544: p_report_lines_info IN OUT NOCOPY AP_WEB_DFLEX_PKG.ExpReportLines_A,
1545: p_header_errors IN OUT NOCOPY AP_WEB_UTILITIES_PKG.expError,
1546: p_receipts_errors IN OUT NOCOPY AP_WEB_UTILITIES_PKG.receipt_error_stack) IS
1547:
1548: l_receipt_count BINARY_INTEGER;
1549: l_debug_info VARCHAR2(300) := '';
1550: l_errors AP_WEB_UTILITIES_PKG.expError;
1546: p_receipts_errors IN OUT NOCOPY AP_WEB_UTILITIES_PKG.receipt_error_stack) IS
1547:
1548: l_receipt_count BINARY_INTEGER;
1549: l_debug_info VARCHAR2(300) := '';
1550: l_errors AP_WEB_UTILITIES_PKG.expError;
1551: rec_count NUMBER := 1; /* receipt count */
1552:
1553: l_MPD_present BOOLEAN := false; -- Keeps track whether the report contains Mileage / Per Diem header exceptions
1554: l_foreign_currency_present BOOLEAN := false; -- Keeps track whether foreign currencies exist.
1556: l_receipt_required_amount AP_EXPENSE_REPORT_PARAMS.require_receipt_amount%TYPE;
1557: l_base_currency_code AP_WEB_DB_AP_INT_PKG.apSetUp_baseCurrencyCode;
1558:
1559: BEGIN
1560: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_OA_DISC_PKG', 'start CheckForPerDiemMileagePolicy');
1561: -- Get reimbursement currency
1562: l_reimbursement_currency_code := p_report_header_info.reimbursement_currency_code;
1563:
1564: ------------------------------------------------------
1562: l_reimbursement_currency_code := p_report_header_info.reimbursement_currency_code;
1563:
1564: ------------------------------------------------------
1565: l_debug_info := 'Check whether there are any required VAT merchant fields';
1566: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
1567: ------------------------------------------------------
1568:
1569: ------------------------------------------------------
1570: l_debug_info := 'Go through all lines and check whether there are any Mileage, Per Diem, or Policy items';
1567: ------------------------------------------------------
1568:
1569: ------------------------------------------------------
1570: l_debug_info := 'Go through all lines and check whether there are any Mileage, Per Diem, or Policy items';
1571: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
1572: ------------------------------------------------------
1573:
1574: l_receipt_count := TO_NUMBER(p_report_header_info.receipt_count);
1575:
1576: -- Loop through all receipts
1577: FOR rec_count IN 1..l_receipt_count LOOP
1578: ------------------------------------------------------
1579: l_debug_info := 'Check Mileage/Per Diem for receipt '|| to_char(rec_count);
1580: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
1581: ------------------------------------------------------
1582: -- Only check if one or more monetary values is not null
1583: IF p_report_lines_info(rec_count).daily_amount IS NOT null
1584: OR p_report_lines_info(rec_count).receipt_amount IS NOT null
1586:
1587: IF AreMPDRateSchedulesAssigned(p_report_lines_info(rec_count).parameter_id) THEN
1588: ------------------------------------------------------
1589: l_debug_info := 'Blank out monetary values.';
1590: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
1591: ------------------------------------------------------
1592: p_report_lines_info(rec_count).daily_amount := null;
1593: p_report_lines_info(rec_count).receipt_amount := null;
1594: p_report_lines_info(rec_count).amount := null;
1602: AND (l_reimbursement_currency_code <>
1603: p_report_lines_info(rec_count).currency_code)) THEN
1604: ------------------------------------------------------
1605: l_debug_info := 'Found foreign currency in receipt '|| to_char(rec_count);
1606: AP_WEB_UTILITIES_PKG.logStatement('AP_WEB_OA_DISC_PKG', l_debug_info);
1607: ------------------------------------------------------
1608: l_foreign_currency_present := TRUE;
1609: END IF;
1610: END LOOP;
1612:
1613: -- Display Milage / Per Diem error message, if applicable
1614: IF l_MPD_present THEN
1615: fnd_message.set_name('SQLAP','OIE_DISC_PDM_REMOVE_VALUES');
1616: AP_WEB_UTILITIES_PKG.AddExpError(p_header_errors,
1617: fnd_message.get_encoded(),
1618: AP_WEB_UTILITIES_PKG.C_ErrorMessageType);
1619: END IF;
1620:
1614: IF l_MPD_present THEN
1615: fnd_message.set_name('SQLAP','OIE_DISC_PDM_REMOVE_VALUES');
1616: AP_WEB_UTILITIES_PKG.AddExpError(p_header_errors,
1617: fnd_message.get_encoded(),
1618: AP_WEB_UTILITIES_PKG.C_ErrorMessageType);
1619: END IF;
1620:
1621: -- Merge errors with receipt error stack
1622: AP_WEB_UTILITIES_PKG.MergeErrors(l_errors, p_receipts_errors);
1618: AP_WEB_UTILITIES_PKG.C_ErrorMessageType);
1619: END IF;
1620:
1621: -- Merge errors with receipt error stack
1622: AP_WEB_UTILITIES_PKG.MergeErrors(l_errors, p_receipts_errors);
1623:
1624: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_OA_DISC_PKG', 'end CheckForPerDiemMileagePolicy');
1625: END CheckForMileagePerDiemPolicy;
1626:
1620:
1621: -- Merge errors with receipt error stack
1622: AP_WEB_UTILITIES_PKG.MergeErrors(l_errors, p_receipts_errors);
1623:
1624: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_OA_DISC_PKG', 'end CheckForPerDiemMileagePolicy');
1625: END CheckForMileagePerDiemPolicy;
1626:
1627: /*
1628: Written by:
1639:
1640: PROCEDURE ValidateHeaderDFF(
1641: p_user_id IN NUMBER,
1642: p_report_header_info IN AP_WEB_DFLEX_PKG.ExpReportHeaderRec,
1643: p_header_errors IN OUT NOCOPY AP_WEB_UTILITIES_PKG.expError) IS
1644:
1645: l_DFFEnabled VARCHAR2(1);
1646:
1647: BEGIN
1645: l_DFFEnabled VARCHAR2(1);
1646:
1647: BEGIN
1648:
1649: l_DFFEnabled := AP_WEB_UTILITIES_PKG.VALUE_SPECIFIC(
1650: p_name => 'AP_WEB_DESC_FLEX_NAME',
1651: p_user_id => p_user_id,
1652: p_resp_id => FND_PROFILE.VALUE('RESP_ID'),
1653: p_apps_id => FND_PROFILE.VALUE('RESP_APPL_ID') );
1678: TRUE)) THEN
1679:
1680: fnd_message.set_name('SQLAP','OIE_ADDITIONAL_INFO_REQUIRED');
1681: --fnd_message.set_token ('MESSAGE', FND_FLEX_DESCVAL.error_message);
1682: AP_WEB_UTILITIES_PKG.AddExpError(p_header_errors,
1683: fnd_message.get_encoded(),
1684: AP_WEB_UTILITIES_PKG.C_ErrorMessageType);
1685:
1686: END IF;
1680: fnd_message.set_name('SQLAP','OIE_ADDITIONAL_INFO_REQUIRED');
1681: --fnd_message.set_token ('MESSAGE', FND_FLEX_DESCVAL.error_message);
1682: AP_WEB_UTILITIES_PKG.AddExpError(p_header_errors,
1683: fnd_message.get_encoded(),
1684: AP_WEB_UTILITIES_PKG.C_ErrorMessageType);
1685:
1686: END IF;
1687:
1688: END IF;