DBA Data[Home] [Help]

PACKAGE BODY: APPS.RCV_PROJECT_PVT

Source


1 PACKAGE BODY RCV_Project_PVT AS
2 /* $Header: RCVVPRJB.pls 115.3 2004/05/11 14:53:16 usethura noship $ */
3 
4 -- Read the profile option that enables/disables the debug log
5 g_fnd_debug CONSTANT VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
6 g_debug_stmt CONSTANT BOOLEAN := PO_DEBUG.is_debug_stmt_on;
7 g_module_prefix CONSTANT VARCHAR2(50) := 'po.plsql.' || g_pkg_name || '.';
8 
9 /**
10  * Private Procedure: set_project_task_numbers
11  * Modifies: API message list
12  * Effects: Retrieves task and project numbers. Appends to API
13  *   message list on error.
14  */
15 PROCEDURE set_project_task_numbers
16    (p_api_version    IN   NUMBER,
17     p_init_msg_list  IN   VARCHAR2,
18     p_transaction_id IN NUMBER)
19 IS
20 
21 l_api_name CONSTANT VARCHAR2(30) := 'set_project_task_numbers';
22 l_api_version CONSTANT NUMBER := 1.0;
23 l_line_location_id	NUMBER;
24 l_distribution_id	NUMBER;
25 l_project_id		NUMBER;
26 l_task_id		NUMBER;
27 
28 BEGIN
29    -- Start standard API initialization
30    IF FND_API.to_boolean(p_init_msg_list) THEN
31        FND_MSG_PUB.initialize;
32    END IF;
33 
34    IF NOT FND_API.compatible_api_call(l_api_version, p_api_version,
35                                        l_api_name, g_pkg_name)
36    THEN
37         IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
38             FND_LOG.string(FND_LOG.LEVEL_PROCEDURE, g_module_prefix || l_api_name ||
39                            '.invoked', 'Api version Incompatible');
40 	END IF;
41         g_transaction_id := null;
42 	g_project_number := null;
43 	g_task_number    := null;
44    END IF;
45    -- End standard API initialization
46 
47    IF (g_fnd_debug = 'Y') THEN
48      IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
49         FND_LOG.string(FND_LOG.LEVEL_PROCEDURE, g_module_prefix || l_api_name ||
50                        '.invoked', 'Transaction Id: ' || NVL(TO_CHAR(p_transaction_id),'null'));
51      END IF;
52    END IF;
53 
54    g_transaction_id := p_transaction_id;
55 
56    IF g_transaction_id IS NOT NULL THEN
57         BEGIN
58 
59             SELECT
60                 PO_LINE_LOCATION_ID,
61                 PO_DISTRIBUTION_ID
62             INTO
63                 l_line_location_id,
64                 l_distribution_id
65             FROM
66                 RCV_TRANSACTIONS
67             WHERE
68                 TRANSACTION_ID = p_transaction_id;
69 
70             EXCEPTION
71 		WHEN NO_DATA_FOUND THEN
72                   IF (g_fnd_debug = 'Y') THEN
73                     IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
74                         FND_LOG.string(FND_LOG.LEVEL_PROCEDURE, g_module_prefix || l_api_name ||
75                                        '.invoked', 'Invalid Transaction Id.');
76                     END IF;
77                   END IF;
78 		g_project_number := null;
79 		g_task_number := null;
80 		g_transaction_id := null;
81 		return;
82 	END;
83 
84 	IF l_distribution_id IS NOT NULL THEN
85 	BEGIN
86              BEGIN
87                   IF (g_fnd_debug = 'Y') THEN
88                     IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
89                         FND_LOG.string(FND_LOG.LEVEL_PROCEDURE, g_module_prefix || l_api_name ||
90                                        '.invoked', 'Distribution Id:' || l_distribution_id);
91                     END IF;
92 		  END IF;
93 
94                   SELECT
95                       pde.SEGMENT1
96                   INTO
97                       g_project_number
98                   FROM
99                       PO_DISTRIBUTIONS_ALL pd,
100                       PA_PROJECTS_ALL pde
101                   WHERE
102                       pd.PO_DISTRIBUTION_ID = l_distribution_id
103                   AND	pde.PROJECT_ID = pd.PROJECT_ID;
104 
105                   EXCEPTION
106                       WHEN NO_DATA_FOUND THEN
107                            g_project_number := null;
108              END;
109              BEGIN
110                   SELECT
111                       pte.TASK_NUMBER
112                   INTO
113                       g_task_number
114                   FROM
115                       PO_DISTRIBUTIONS_ALL pd,
116                       PA_TASKS pte
117                   WHERE
118                       pd.PO_DISTRIBUTION_ID = l_distribution_id
119                   AND	pte.TASK_ID = pd.TASK_ID;
120 
121                   EXCEPTION
122                        WHEN NO_DATA_FOUND THEN
123                             g_task_number := null;
124              END;
125 	END;
126 	ELSIF l_line_location_id IS NOT NULL THEN
127 	BEGIN
128                 BEGIN
129                        IF (g_fnd_debug = 'Y') THEN
130                          IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
131                              FND_LOG.string(FND_LOG.LEVEL_PROCEDURE, g_module_prefix || l_api_name ||
132                                             '.invoked', 'Line Location Id:' || l_line_location_id);
133                          END IF;
134 		       END IF;
135 
136                        SELECT
137 				DISTINCT(pde.SEGMENT1)
138                        INTO
139 				g_project_number
140                        FROM
141 				PO_DISTRIBUTIONS_ALL pd,
142 				PA_PROJECTS_ALL pde
143                        WHERE
144 				pd.LINE_LOCATION_ID = l_line_location_id
145                        AND	pde.PROJECT_ID = pd.PROJECT_ID;
146 
147                        EXCEPTION
148                        WHEN TOO_MANY_ROWS THEN
149                                 FND_MESSAGE.set_name('PO', 'PO_MULTI_DEST_INFO');
150                                 g_project_number := FND_MESSAGE.get;
151                        WHEN NO_DATA_FOUND THEN
152 				g_project_number := null;
153 		END;
154 		BEGIN
155                        SELECT
156 				DISTINCT(pte.TASK_NUMBER)
157                        INTO
158 				g_task_number
159                        FROM
160 				PO_DISTRIBUTIONS_ALL pd,
161 				PA_TASKS pte
162                        WHERE
163 				pd.LINE_LOCATION_ID = l_line_location_id
164                        AND	pte.TASK_ID = pd.TASK_ID;
165 
166                        EXCEPTION
167                        WHEN TOO_MANY_ROWS THEN
168                                 FND_MESSAGE.set_name('PO', 'PO_MULTI_DEST_INFO');
169                                 g_task_number := FND_MESSAGE.get;
170                        WHEN NO_DATA_FOUND THEN
171 				g_task_number	:= null;
172 		END;
173         END;
174         ELSE
175 		/* Certain cases like unordered receipts will not have both
176 		   line_location_id and distributions_id */
177 		g_project_number	:= null;
178 		g_task_number		:= null;
179 		g_transaction_id	:= p_transaction_id;
180         END IF;
181    ELSE
182         IF (g_fnd_debug = 'Y') THEN
183           IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
184              FND_LOG.string(FND_LOG.LEVEL_PROCEDURE, g_module_prefix || l_api_name ||
185                             '.invoked', 'ERROR : transaction_id is NULL');
186           END IF;
187 	END IF;
188         g_project_number := null;
189         g_task_number    := null;
190 	g_transaction_id := p_transaction_id;
191    END IF;
192    EXCEPTION
193       WHEN OTHERS THEN
194         g_project_number := null;
195         g_task_number    := null;
196 	g_transaction_id := p_transaction_id;
197 END set_project_task_numbers;
198 END RCV_Project_PVT;