DBA Data[Home] [Help]

PACKAGE BODY: APPS.OEXVWCAN

Source


1 PACKAGE BODY OEXVWCAN AS
2 /* $Header: OEXVWCNB.pls 115.3 99/07/16 08:17:08 porting shi $ */
3 
4 ------------------------------------------------------------------------
5 function SHIPMENT_SCHEDULE_NUMBER(
6    P_PARENT_LINE_ID                       IN NUMBER DEFAULT NULL
7 ,  P_SERVICE_PARENT_LINE_ID               IN NUMBER DEFAULT NULL
8 ,  P_SHIPMENT_SCHEDULE_LINE_ID            IN NUMBER DEFAULT NULL
9 ,  P_LINE_NUMBER                          IN NUMBER DEFAULT NULL
10                           )
11    return NUMBER
12 IS
13    V_SHIPMENT_SCHEDULE_LINE_ID NUMBER := NULL;  -- default is NULL
14    V_PARENT_LINE_ID NUMBER := NULL;  -- default is NULL
15    V_LINE_NUMBER NUMBER := NULL;  -- default is NULL
16    SCHEDULE_LINE_NUMBER NUMBER := NULL;  -- default is NULL
17 BEGIN
18    IF (  P_SERVICE_PARENT_LINE_ID IS NULL )
19     THEN
20        V_SHIPMENT_SCHEDULE_LINE_ID := P_SHIPMENT_SCHEDULE_LINE_ID;
21        V_PARENT_LINE_ID := P_PARENT_LINE_ID;
22        V_LINE_NUMBER := P_LINE_NUMBER;
23     ELSE
24          SELECT SHIPMENT_SCHEDULE_LINE_ID,
25 		PARENT_LINE_ID,
26 		LINE_NUMBER
27          INTO   V_SHIPMENT_SCHEDULE_LINE_ID,
28 		V_PARENT_LINE_ID,
29 		V_LINE_NUMBER
30          FROM   SO_LINES
31          WHERE  LINE_ID = P_SERVICE_PARENT_LINE_ID;
32    END IF;
33    IF (V_SHIPMENT_SCHEDULE_LINE_ID IS NOT NULL) THEN
34 	IF (V_PARENT_LINE_ID IS NULL) THEN
35 		SCHEDULE_LINE_NUMBER := V_LINE_NUMBER;
36         ELSE
37         	SELECT	LINE_NUMBER
38         	INTO	SCHEDULE_LINE_NUMBER
39 		FROM	SO_LINES
40 		WHERE	LINE_ID = V_PARENT_LINE_ID;
41         END IF;
42    END IF;
43 
44    RETURN(SCHEDULE_LINE_NUMBER);
45 
46 EXCEPTION
47 WHEN NO_DATA_FOUND
48 THEN
49   RETURN( NULL );
50 END ; -- SHIPMENT_LINE_NUMBER
51 
52 
53 ------------------------------------------------------------------------
54  function BASE_LINE_NUMBER(
55    P_PARENT_LINE_ID                      IN NUMBER DEFAULT NULL
56 ,  P_SERVICE_PARENT_LINE_ID              IN NUMBER DEFAULT NULL
57 ,  P_SHIPMENT_SCHEDULE_LINE_ID           IN NUMBER DEFAULT NULL
58 ,  P_LINE_NUMBER                         IN NUMBER DEFAULT NULL
59                           )
60    return NUMBER
61 IS
62    V_SHIPMENT_SCHEDULE_LINE_ID NUMBER := NULL;  -- default is NULL
63    V_PARENT_LINE_ID NUMBER := NULL;  -- default is NULL
64    V_LINE_NUMBER NUMBER := NULL;  -- default is NULL
65    BASE_LINE_NUMBER NUMBER := NULL;  -- default is NULL
66 BEGIN
67    IF (  P_SERVICE_PARENT_LINE_ID IS NULL )
68     THEN
69        V_SHIPMENT_SCHEDULE_LINE_ID := P_SHIPMENT_SCHEDULE_LINE_ID;
70        V_PARENT_LINE_ID := P_PARENT_LINE_ID;
71        V_LINE_NUMBER := P_LINE_NUMBER;
72     ELSE
73          SELECT SHIPMENT_SCHEDULE_LINE_ID,
74                 PARENT_LINE_ID,
75                 LINE_NUMBER
76          INTO   V_SHIPMENT_SCHEDULE_LINE_ID,
77                 V_PARENT_LINE_ID,
78                 V_LINE_NUMBER
79          FROM   SO_LINES
80          WHERE  LINE_ID = P_SERVICE_PARENT_LINE_ID;
81    END IF;
82    IF (V_SHIPMENT_SCHEDULE_LINE_ID IS NULL) THEN
83         IF (V_PARENT_LINE_ID IS NULL) THEN
84                 BASE_LINE_NUMBER := V_LINE_NUMBER;
85 	ELSE
86 		SELECT  LINE_NUMBER
87 	        INTO    BASE_LINE_NUMBER
88 		FROM    SO_LINES
89 		WHERE   LINE_ID = V_PARENT_LINE_ID;
90         END IF;
91    ELSE
92 	SELECT	LINE_NUMBER
93 	INTO	BASE_LINE_NUMBER
94 	FROM	SO_LINES
95 	WHERE	LINE_ID = V_SHIPMENT_SCHEDULE_LINE_ID;
96    END IF;
97 
98    RETURN(BASE_LINE_NUMBER);
99 
100 EXCEPTION
101 WHEN NO_DATA_FOUND
102 THEN
103   RETURN( NULL );
104 END ; -- BASE_LINE_NUMBER
105 
106 ------------------------------------------------------------------------
107 function OPTION_LINE_NUMBER(
108    P_PARENT_LINE_ID                       IN NUMBER DEFAULT NULL
109 ,  P_SERVICE_PARENT_LINE_ID               IN NUMBER DEFAULT NULL
110 ,  P_SHIPMENT_SCHEDULE_LINE_ID            IN NUMBER DEFAULT NULL
111 ,  P_LINE_NUMBER                          IN NUMBER DEFAULT NULL
112                           )
113    return NUMBER
114 IS
115    V_SHIPMENT_SCHEDULE_LINE_ID NUMBER := NULL;  -- default is NULL
116    V_PARENT_LINE_ID NUMBER := NULL;  -- default is NULL
117    V_LINE_NUMBER NUMBER := NULL;  -- default is NULL
118    OPTION_LINE_NUMBER NUMBER := NULL;  -- default is NULL
119 BEGIN
120    IF (  P_SERVICE_PARENT_LINE_ID IS NULL )
121     THEN
122        V_SHIPMENT_SCHEDULE_LINE_ID := P_SHIPMENT_SCHEDULE_LINE_ID;
123        V_PARENT_LINE_ID := P_PARENT_LINE_ID;
124        V_LINE_NUMBER := P_LINE_NUMBER;
125     ELSE
126          SELECT SHIPMENT_SCHEDULE_LINE_ID,
127 		PARENT_LINE_ID,
128 		LINE_NUMBER
129          INTO   V_SHIPMENT_SCHEDULE_LINE_ID,
130 		V_PARENT_LINE_ID,
131 		V_LINE_NUMBER
132          FROM   SO_LINES
133          WHERE  LINE_ID = P_SERVICE_PARENT_LINE_ID;
134    END IF;
135    IF (V_SHIPMENT_SCHEDULE_LINE_ID IS NULL) THEN
136 	IF (V_PARENT_LINE_ID IS NOT NULL) THEN
137 		OPTION_LINE_NUMBER := V_LINE_NUMBER;
138 	END IF;
139    ELSE
140 	IF (V_SHIPMENT_SCHEDULE_LINE_ID IS NOT NULL) THEN
141            IF (V_PARENT_LINE_ID IS NOT NULL) THEN
142                 OPTION_LINE_NUMBER := V_LINE_NUMBER;
143            END IF;
144 	END IF;
145    END IF;
146 
147    RETURN(OPTION_LINE_NUMBER);
148 
149 
150 EXCEPTION
151 WHEN NO_DATA_FOUND
152 THEN
153   RETURN( NULL );
154 END ; -- OPTION_LINE_NUMBER
155 
156 ----------------------------------------------------------------
157  function SUBTREE_EXISTS(
158    V_LINE_ID				IN NUMBER
159 ,  V_REAL_PARENT_LINE_ID		IN NUMBER
160                           )
161    return VARCHAR2
162 IS
163 	V_SUBTREE_EXISTS	VARCHAR2(1);
164 BEGIN
165 
166 	SELECT	'Y'
167 	INTO	V_SUBTREE_EXISTS
168 	FROM	SO_LINES
169 	WHERE	LINK_TO_LINE_ID = V_LINE_ID
170 	AND	PARENT_LINE_ID = V_REAL_PARENT_LINE_ID
171 	AND	ITEM_TYPE_CODE <> 'SERVICE'
172 	AND	LINE_TYPE_CODE <> 'RETURN'
173 	AND     ROWNUM = 1;
174 
175 
176 RETURN(V_SUBTREE_EXISTS);
177 
178 EXCEPTION
179 WHEN NO_DATA_FOUND
180 THEN
181   RETURN('N');
182 END ; -- SUBTREE_EXISTS
183 
184 ----------------------------------------------------------------
185  function IN_CONFIGURATION(
186    V_PARENT_LINE_ID			IN NUMBER
187 ,  V_ITEM_TYPE_CODE			IN VARCHAR2
188 ,  V_SERVICE_PARENT_LINE_ID		IN NUMBER
189                           )
190    return VARCHAR2
191 IS
192 	RESULT VARCHAR2(1);
193 	TEMP_ITEM_TYPE_CODE VARCHAR2(30);
194 BEGIN
195 	IF (V_PARENT_LINE_ID IS NOT NULL) THEN
196 -- If parent_line_id is not null, we know this line is in a configuration
197 		RESULT := 'Y';
198 	ELSE
199 		IF (V_ITEM_TYPE_CODE = 'MODEL') THEN
200 -- Top model line is also in a configuration
201 			RESULT := 'Y';
202 		ELSIF (V_ITEM_TYPE_CODE = 'SERVICE') THEN
203 -- Because there is no way that you can tell if a service line is attached
207 -- the service line is attached to.
204 -- to a top model line, in which case it is in a configuration,
205 -- or if the service line is attached to a standard line, in which case it
206 -- is not in a congifuration, we have to detect item_type_code of the line
208 			IF (V_SERVICE_PARENT_LINE_ID IS NULL) THEN
209 -- A service line may have a NULL SERVICE_PARENT_LINE_ID, yet is not part of
210 -- a configuration.
211 				RESULT := 'N';
212 			ELSE
213 				SELECT ITEM_TYPE_CODE
214 				INTO TEMP_ITEM_TYPE_CODE
215 				FROM SO_LINES
216 				WHERE LINE_ID = V_SERVICE_PARENT_LINE_ID;
217 
218 				IF (TEMP_ITEM_TYPE_CODE = 'MODEL') THEN
219 					RESULT := 'Y';
220 				ELSE
221 					RESULT := 'N';
222 				END IF;
223 			END IF;
224 		ELSE
225 			RESULT := 'N';
226 		END IF;
227 	END IF;
228 	RETURN (RESULT);
229 
230 EXCEPTION
231 WHEN NO_DATA_FOUND
232 THEN
233   RETURN('N');
234 END ; -- IN_CONFIGURATION
235 
236 ----------------------------------------------------------------
237  function OPEN_PICKING_SLIPS(
238    V_LINE_ID                            IN NUMBER
239 ,  V_REAL_PARENT_LINE_ID                IN NUMBER
240 ,  V_COMPONENT_CODE                     IN VARCHAR2
241                           )
242    return VARCHAR2
243 IS
244 	V_OPEN_PICKING_SLIPS	VARCHAR2(1);
245 	V_SUBTREE_EXISTS	VARCHAR2(1);
246 BEGIN
247 
248 	V_SUBTREE_EXISTS := OEXVWCAN.SUBTREE_EXISTS(V_LINE_ID,
249 		V_REAL_PARENT_LINE_ID);
250 
251 	SELECT	'Y'
252 	INTO 	V_OPEN_PICKING_SLIPS
253 	FROM 	SO_PICKING_LINES SOL,
254 		SO_PICKING_HEADERS SPH
255 	WHERE 	SOL.PICKING_HEADER_ID = SPH.PICKING_HEADER_ID
256 	AND 	SOL.ORDER_LINE_ID in
257 		(SELECT	LINE_ID
258 		FROM	SO_LINES
259 		WHERE 	PARENT_LINE_ID = V_REAL_PARENT_LINE_ID
260 		AND	NVL(COMPONENT_CODE,'0') LIKE V_COMPONENT_CODE || '%'
261 		AND	V_SUBTREE_EXISTS = 'Y'
262 		UNION
263 		SELECT	LINE_ID
264 		FROM	SO_LINES
265 		WHERE	LINE_ID = V_LINE_ID)
266 	AND 	SPH.STATUS_CODE IN ('OPEN' ,'PENDING', 'IN PROGRESS')
267         AND     ROWNUM = 1;
268 
272 WHEN NO_DATA_FOUND
269 RETURN(V_OPEN_PICKING_SLIPS);
270 
271 EXCEPTION
273 THEN
274   RETURN('N');
275 END ; -- OPEN_PICKING_SLIPS
276 
277 ----------------------------------------------------------------
278  function PRICE_ADJUST_EXISTS(
279    V_HEADER_ID                          IN NUMBER
280 ,  V_LINE_ID                            IN NUMBER
281                           )
282    return VARCHAR2
283 IS
284 	V_PRICE_ADJUST_EXISTS	VARCHAR2(1);
285         V_PRICE_ADJUST_COUNT    NUMBER := NULL;  -- default is NULL
286 BEGIN
287 
288 	SELECT 	COUNT(0)
289 	INTO	V_PRICE_ADJUST_COUNT
290 	FROM 	SO_PRICE_ADJUSTMENTS PA,
291 		SO_DISCOUNT_LINES DL
292 	WHERE 	PA.HEADER_ID = V_HEADER_ID
293 	AND   	PA.LINE_ID = V_LINE_ID
294 	AND   	PA.DISCOUNT_LINE_ID = DL.DISCOUNT_LINE_ID
295 	AND   	DL.PERCENT IS NULL
296 	AND  	DL.AMOUNT IS NULL
297 	AND  	DL.PRICE IS NULL;
298 
299         IF V_PRICE_ADJUST_COUNT = 0
300         THEN
301           V_PRICE_ADJUST_EXISTS := 'N';
302         ELSE
303           V_PRICE_ADJUST_EXISTS := 'Y';
304         END IF;
305 
306 RETURN(V_PRICE_ADJUST_EXISTS);
307 END ; -- PRICE_ADJUST_EXISTS
308 
309 
310 ----------------------------------------------------------------
311  function TOP_BILL_SEQUENCE_ID(
312    V_LINE_ID	                       IN NUMBER DEFAULT NULL
313 ,  V_PARENT_LINE_ID                      IN NUMBER DEFAULT NULL
314                           )
315    return NUMBER
316 IS
317 	V_TOP_BILL_SEQUENCE_ID		NUMBER;
318 BEGIN
319 
320 	SELECT COMPONENT_SEQUENCE_ID
321 	INTO   V_TOP_BILL_SEQUENCE_ID
322 	FROM   SO_LINES
323 	WHERE  LINE_ID = NVL(V_PARENT_LINE_ID,V_LINE_ID);
324 
325 RETURN(V_TOP_BILL_SEQUENCE_ID);
326 
327 EXCEPTION
328 WHEN NO_DATA_FOUND
329 THEN
330   RETURN(NULL);
331 END ; -- TOP_BILL_SEQUENCE_ID
332 
333 ----------------------------------------------------------------
334  function SECURITY_OBJECT(
335    V_PARENT_LINE_ID                     IN NUMBER
336 ,  V_SHIPMENT_SCHEDULE_LINE_ID          IN NUMBER
337 ,  V_SERVICE_PARENT_LINE_ID             IN NUMBER
338 ,  V_LINE_TYPE_CODE                     IN VARCHAR2
342 	V_SECURITY_OBJECT	VARCHAR(30);
339                           )
340    return VARCHAR2
341 IS
343 BEGIN
344 
345 	if (V_LINE_TYPE_CODE = 'RETURN') then
346 		V_SECURITY_OBJECT := 'RETURN_LINE';
347 		RETURN(V_SECURITY_OBJECT);
348 	end if;
349 
350 	if (V_SERVICE_PARENT_LINE_ID is NULL) then
351 		if (V_SHIPMENT_SCHEDULE_LINE_ID is NULL) then
352 			if (V_PARENT_LINE_ID is NULL) then
353 				V_SECURITY_OBJECT := 'LINE';
354 			else
355 				V_SECURITY_OBJECT := 'OPTION';
356 			end if;
357 		else
358                         if (V_PARENT_LINE_ID is NULL) then
359                                 V_SECURITY_OBJECT := 'SHIPMENT';
360                         else
361                                 V_SECURITY_OBJECT := 'SHIP_OPTION';
362                         end if;
363 		end if;
364 	else
365 		if (V_SHIPMENT_SCHEDULE_LINE_ID is NULL) then
366                         if (V_PARENT_LINE_ID is NULL) then
367                                 V_SECURITY_OBJECT := 'SERVICE';
368                         else
369                                 V_SECURITY_OBJECT := 'OPTION_SERVICE';
370                         end if;
371                 else
372                         if (V_PARENT_LINE_ID is NULL) then
373                                 V_SECURITY_OBJECT := 'SHIPMENT_SERVICE';
374                         else
375                                 V_SECURITY_OBJECT := 'SHIP_OPTION_SERVICE';
376                         end if;
377                 end if;
378 	end if;
379 
380 RETURN(V_SECURITY_OBJECT);
381 
382 END ; -- SECURITY_OBJECT
383 
384 
385 END OEXVWCAN;