DBA Data[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;