[Home] [Help]
PACKAGE BODY: APPS.AP_INTERFACE_WORKFLOW_PKG
Source
1 PACKAGE BODY AP_INTERFACE_WORKFLOW_PKG AS
2 /* $Header: apiiwkfb.pls 120.3 2004/10/28 23:20:13 pjena noship $ */
3
4 ----------------------------------------------------------------------
5 PROCEDURE Custom_Validate_Invoice(p_item_type IN VARCHAR2,
6 p_item_key IN VARCHAR2,
7 p_actid IN NUMBER,
8 p_funmode IN VARCHAR2,
9 p_result OUT NOCOPY VARCHAR2) IS
10 ----------------------------------------------------------------------
11 l_invoice_id NUMBER;
12 l_return_error_message VARCHAR2(2000);
13 l_debug_info VARCHAR2(200);
14 BEGIN
15
16 IF (p_funmode = 'RUN') THEN
17
18 ------------------------------------------------
19 l_debug_info := 'Get INVOICE_ID Item Attribute';
20 ------------------------------------------------
21 l_invoice_id := WF_ENGINE.GetItemAttrNumber(p_item_type,
22 p_item_key,
23 'INVOICE_ID');
24
25 --------------------------------------------
26 l_debug_info := 'Call Do_Custom_Validation';
27 --------------------------------------------
28 Do_Custom_Validation(l_invoice_id,
29 l_return_error_message);
30
31 IF (l_return_error_message IS NULL) THEN
32
33 -----------------------------------------------
34 l_debug_info := 'Update Workflow Flag to Done';
35 -----------------------------------------------
36 UPDATE ap_invoices_interface
37 SET workflow_flag = 'D'
38 WHERE invoice_id = l_invoice_id;
39
40 ---------------------------------------------
41 l_debug_info := 'Commit changes to database';
42 ---------------------------------------------
43 COMMIT;
44
45 p_result := 'COMPLETE:AP_PASS';
46
47 ELSE
48 ---------------------------------------------------
49 l_debug_info := 'Set ERROR_MESSAGE Item Attribute';
50 ---------------------------------------------------
51 WF_ENGINE.SetItemAttrText(p_item_type,
52 p_item_key,
53 'ERROR_MESSAGE',
54 l_return_error_message);
55
56 p_result := 'COMPLETE:AP_FAIL';
57
58 END IF;
59
60 ELSIF (p_funmode = 'CANCEL') THEN
61 NULL;
62 END IF;
63
64 EXCEPTION
65 WHEN OTHERS THEN
66 WF_CORE.Context('AP_INTERFACE_WORKFLOW_PKG', 'Custom_Validate_Invoice',
67 p_item_type, p_item_key, to_char(p_actid), l_debug_info);
68 RAISE;
69 END Custom_Validate_Invoice;
70
71
72
73 ---------------------------------------------------------------------------
74 PROCEDURE Do_Custom_Validation(p_invoice_id IN NUMBER,
75 p_return_error_message OUT NOCOPY VARCHAR2) IS
76 ---------------------------------------------------------------------------
77 l_debug_info VARCHAR2(200);
78 BEGIN
79
80 p_return_error_message := NULL;
81
82 --------------------------------------------------------------------
83 -- ADD CUSTOM VALIDATION CODE BELOW
84 --
85 -- Set p_return_error_message to meaningful error message on failure
86 --------------------------------------------------------------------
87
88
89 EXCEPTION
90 WHEN OTHERS THEN
91 WF_CORE.Context('AP_INTERFACE_WORKFLOW_PKG', 'Do_Custom_Validation',
92 null, null, null, l_debug_info);
93 RAISE;
94 END Do_Custom_Validation;
95
96
97 ---------------------------------------------------------------------------
98 PROCEDURE Start_Invoice_Process(p_invoice_id IN NUMBER) IS
99 ---------------------------------------------------------------------------
100 l_item_type VARCHAR2(100) := 'APIMP';
101 l_item_key VARCHAR2(100);
102 l_debug_info VARCHAR2(200);
103 BEGIN
104
105 -----------------------------------------------
106 l_debug_info := 'Generate Unique Item Key';
107 -----------------------------------------------
108 l_item_key := to_char(p_invoice_id) || to_char(sysdate,'MMDDYYYYHH24MISS');
109
110 -----------------------------------------------
111 l_debug_info := 'Create Workflow Process';
112 -----------------------------------------------
113 WF_ENGINE.CreateProcess(l_item_type,
114 l_item_key,
115 'CUSTOM_VALIDATION_PROCESS');
116
117 ------------------------------------------------
118 l_debug_info := 'Set INVOICE_ID Item Attribute';
119 ------------------------------------------------
120 WF_ENGINE.SetItemAttrNumber(l_item_type,
121 l_item_key,
122 'INVOICE_ID',
123 p_invoice_id);
124
125 ---------------------------------------------------
126 l_debug_info := 'Update Workflow Flag to Selected';
127 ---------------------------------------------------
128 UPDATE ap_invoices_interface
129 SET workflow_flag = 'S'
130 WHERE invoice_id = p_invoice_id;
131
132 ---------------------------------------------
133 l_debug_info := 'Commit changes to database';
134 ---------------------------------------------
135 COMMIT;
136
137 -----------------------------------------
138 l_debug_info := 'Start Workflow Process';
139 -----------------------------------------
140 WF_ENGINE.StartProcess(l_item_type,
141 l_item_key);
142
143 EXCEPTION
144 WHEN OTHERS THEN
145 IF (SQLCODE <> -20001) THEN
146 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
147 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
148 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE', 'Start_Invoice_Process');
149 FND_MESSAGE.SET_TOKEN('PARAMETERS','P_INVOICE_ID='||p_invoice_id);
150 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
151 APP_EXCEPTION.RAISE_EXCEPTION;
152 END IF;
153 END Start_Invoice_Process;
154
155 END AP_INTERFACE_WORKFLOW_PKG;