DBA Data[Home] [Help]

PACKAGE BODY: APPS.PO_VAL_PRICE_DIFFS

Source


1 PACKAGE BODY PO_VAL_PRICE_DIFFS AS
2 -- $Header: PO_VAL_PRICE_DIFFS.plb 120.1 2006/08/16 22:46:53 dedelgad noship $
3 
4 c_entity_type_PRICE_DIFF CONSTANT VARCHAR2(30) := PO_VALIDATIONS.c_entity_type_PRICE_DIFF;
5 
6 -- Constants for columns.
7 c_PRICE_DIFFERENTIAL_NUM CONSTANT VARCHAR2(30) := 'PRICE_DIFFERENTIAL_NUM';
8 c_PRICE_TYPE CONSTANT VARCHAR2(30) := 'PRICE_TYPE';
9 c_MAX_MULTIPLIER CONSTANT VARCHAR2(30) := 'MAX_MULTIPLIER';
10 c_MIN_MULTIPLIER CONSTANT VARCHAR2(30) := 'MIN_MULTIPLIER';
11 c_MULTIPLIER CONSTANT VARCHAR2(30) := 'MULTIPLIER';
12 --<Begin Bug 5415284> Constants for MIN and MAX token names
13 c_MIN CONSTANT VARCHAR2(30) := 'MIN';
14 c_MAX CONSTANT VARCHAR2(30) := 'MAX';
15 --<End Bug 5415284>
16 
17 c_PO_LINE CONSTANT VARCHAR2(30) := 'PO LINE';
18 c_BLANKET_LINE CONSTANT VARCHAR2(30) := 'BLANKET LINE';
19 c_PRICE_BREAK CONSTANT VARCHAR2(30) := 'PRICE BREAK';
20 
21 
22 ---------------------------------------------------------------------------
23 -- Modules for debugging.
24 ---------------------------------------------------------------------------
25 
26 -- The module base for this package.
27 D_PACKAGE_BASE CONSTANT VARCHAR2(50) :=
28   PO_LOG.get_package_base('PO_VAL_PRICE_DIFFS');
29 
30 -- The module base for the subprogram.
31 D_max_mul_ge_zero CONSTANT VARCHAR2(100) :=
32   PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'max_mul_ge_zero');
33 
34 D_max_mul_ge_min_mul CONSTANT VARCHAR2(100) :=
35   PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'max_mul_ge_min_mul');
36 
37 D_min_mul_ge_zero CONSTANT VARCHAR2(100) :=
38   PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'min_mul_ge_zero');
39 
40 D_mul_ge_zero CONSTANT VARCHAR2(100) :=
41   PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'mul_ge_zero');
42 
43 D_unique_price_diff_num CONSTANT VARCHAR2(100) :=
44   PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'unique_price_diff_num');
45 
46 D_price_diff_num_gt_zero CONSTANT VARCHAR2(100) :=
47   PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'price_diff_num_gt_zero');
48 
49 D_unique_price_type CONSTANT VARCHAR2(100) :=
50   PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'unique_price_type');
51 
52 D_spo_price_type_on_src_doc CONSTANT VARCHAR2(100) :=
53   PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'spo_price_type_on_src_doc');
54 
55 D_spo_mul_btwn_min_max CONSTANT VARCHAR2(100) :=
56   PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'spo_mul_btwn_min_max');
57 
58 D_spo_mul_ge_min CONSTANT VARCHAR2(100) :=
59   PO_LOG.get_subprogram_base(D_PACKAGE_BASE,'spo_mul_ge_min');
60 
61 
62 -------------------------------------------------------------------------------
63 --  This procedure determines if max mulitipliers are greater than or equal to
64 --  zero. If not, return a failure.
65 -------------------------------------------------------------------------------
66 PROCEDURE max_mul_ge_zero(
67   p_price_differential_id_tbl IN  PO_TBL_NUMBER
68 , p_max_multiplier_tbl  IN  PO_TBL_NUMBER
69 , x_results           IN OUT NOCOPY PO_VALIDATION_RESULTS_TYPE
70 , x_result_type       OUT NOCOPY    VARCHAR2
71 )
72 IS
73 BEGIN
74 
75 PO_VALIDATION_HELPER.greater_or_equal_zero(
76   p_calling_module => D_max_mul_ge_zero
77 , p_null_allowed_flag => PO_CORE_S.g_parameter_YES
78 , p_value_tbl => p_max_multiplier_tbl
79 , p_entity_id_tbl => p_price_differential_id_tbl
80 , p_entity_type => c_entity_type_PRICE_DIFF
81 , p_column_name => c_MAX_MULTIPLIER
82 , p_message_name => PO_MESSAGE_S.PO_ALL_ENTER_VALUE_GE_ZERO
83 , x_results => x_results
84 , x_result_type => x_result_type
85 );
86 
87 END max_mul_ge_zero;
88 
89 -------------------------------------------------------------------------------
90 --  This procedure determines if max multiplier is greater than or equal to
91 --  min multiplier. If not, return a failure.
92 -------------------------------------------------------------------------------
93 PROCEDURE max_mul_ge_min_mul(
94   p_price_differential_id_tbl IN  PO_TBL_NUMBER
95 , p_min_multiplier_tbl  IN  PO_TBL_NUMBER
96 , p_max_multiplier_tbl  IN  PO_TBL_NUMBER
97 , x_results           IN OUT NOCOPY PO_VALIDATION_RESULTS_TYPE
98 , x_result_type       OUT NOCOPY    VARCHAR2
99 )
100 IS
101 BEGIN
102 
103 PO_VALIDATION_HELPER.num1_less_or_equal_num2(
104   p_calling_module => D_max_mul_ge_min_mul
105 , p_num1_tbl => p_min_multiplier_tbl
106 , p_num2_tbl => p_max_multiplier_tbl
107 , p_entity_id_tbl => p_price_differential_id_tbl
108 , p_entity_type => c_entity_type_PRICE_DIFF
109 , p_column_name => NULL
110 , p_message_name => PO_MESSAGE_S.PO_SVC_MAX_LT_MIN_MULTIPLIER
111 , x_results => x_results
112 , x_result_type => x_result_type
113 );
114 
115 END max_mul_ge_min_mul;
116 
117 -------------------------------------------------------------------------------
118 --  This procedure determines if min mulitipliers are greater than or
119 --  equal to zero. If not, return a failure.
120 -------------------------------------------------------------------------------
121 PROCEDURE min_mul_ge_zero(
122   p_price_differential_id_tbl IN  PO_TBL_NUMBER
123 , p_min_multiplier_tbl  IN  PO_TBL_NUMBER
124 , x_results           IN OUT NOCOPY PO_VALIDATION_RESULTS_TYPE
125 , x_result_type       OUT NOCOPY    VARCHAR2
126 )
127 IS
128 BEGIN
129 
130 PO_VALIDATION_HELPER.greater_or_equal_zero(
131   p_calling_module => D_min_mul_ge_zero
132 , p_null_allowed_flag => PO_CORE_S.g_parameter_YES
133 , p_value_tbl => p_min_multiplier_tbl
134 , p_entity_id_tbl => p_price_differential_id_tbl
135 , p_entity_type => c_entity_type_PRICE_DIFF
136 , p_column_name => c_MIN_MULTIPLIER
137 , p_message_name => PO_MESSAGE_S.PO_ALL_ENTER_VALUE_GE_ZERO
138 , x_results => x_results
139 , x_result_type => x_result_type
140 );
141 
142 END min_mul_ge_zero;
143 
144 -------------------------------------------------------------------------------
145 --  This procedure determines if mulitipliers are greater than or
146 --  equal to zero. If not, return a failure.
147 -------------------------------------------------------------------------------
148 PROCEDURE mul_ge_zero(
149   p_price_differential_id_tbl IN  PO_TBL_NUMBER
150 , p_multiplier_tbl  IN  PO_TBL_NUMBER
151 , x_results           IN OUT NOCOPY PO_VALIDATION_RESULTS_TYPE
152 , x_result_type       OUT NOCOPY    VARCHAR2
153 )
154 IS
155 BEGIN
156 
157 PO_VALIDATION_HELPER.greater_or_equal_zero(
158   p_calling_module => D_mul_ge_zero
159 , p_null_allowed_flag => PO_CORE_S.g_parameter_YES
160 , p_value_tbl => p_multiplier_tbl
161 , p_entity_id_tbl => p_price_differential_id_tbl
162 , p_entity_type => c_entity_type_PRICE_DIFF
163 , p_column_name => c_MULTIPLIER
164 , p_message_name => PO_MESSAGE_S.PO_ALL_ENTER_VALUE_GE_ZERO
165 , x_results => x_results
166 , x_result_type => x_result_type
167 );
168 
169 END mul_ge_zero;
170 
171 -------------------------------------------------------------------------------
172 --  This procedure determines if the price differentials have unique price
173 --  differentials numbers. If not, return a failure.
174 -------------------------------------------------------------------------------
175 -- Assumption:
176 -- All of the unposted data will be passed in
177 -- to this routine in order to get accurate results.
178 PROCEDURE unique_price_diff_num(
179   p_price_differential_id_tbl   IN  PO_TBL_NUMBER
180 , p_entity_id_tbl               IN  PO_TBL_NUMBER
181 , p_entity_type_tbl             IN  PO_TBL_VARCHAR30
182 , p_price_differential_num_tbl  IN  PO_TBL_NUMBER
183 , x_result_set_id IN OUT NOCOPY NUMBER
184 , x_result_type   OUT NOCOPY    VARCHAR2
185 )
186 IS
187 BEGIN
188 
189 PO_VALIDATION_HELPER.price_diff_value_unique(
190   p_calling_module => D_unique_price_diff_num
191 , p_price_diff_id_tbl => p_price_differential_id_tbl
192 , p_entity_id_tbl => p_entity_id_tbl
193 , p_entity_type_tbl => p_entity_type_tbl
194 , p_unique_value_tbl => PO_TYPE_CONVERTER.to_po_tbl_varchar4000(p_price_differential_num_tbl)
195 , p_column_name => c_PRICE_DIFFERENTIAL_NUM
196 , p_message_name => PO_MESSAGE_S.PO_SVC_NON_UNIQUE_PRC_DIFF_NUM
197 , x_result_set_id => x_result_set_id
198 , x_result_type => x_result_type
199 );
200 
201 END unique_price_diff_num;
202 
203 -------------------------------------------------------------------------------
204 --  This procedure determines if price differential number are greater than
205 --  zero. If not, return a failure.
206 -------------------------------------------------------------------------------
207 PROCEDURE price_diff_num_gt_zero(
208   p_price_differential_id_tbl   IN  PO_TBL_NUMBER
209 , p_price_differential_num_tbl  IN  PO_TBL_NUMBER
210 , x_results           IN OUT NOCOPY PO_VALIDATION_RESULTS_TYPE
211 , x_result_type       OUT NOCOPY    VARCHAR2
212 )
213 IS
214 BEGIN
215 
216 PO_VALIDATION_HELPER.greater_than_zero(
217   p_calling_module => D_price_diff_num_gt_zero
218 , p_null_allowed_flag => PO_CORE_S.g_parameter_NO
219 , p_value_tbl => p_price_differential_num_tbl
220 , p_entity_id_tbl => p_price_differential_id_tbl
221 , p_entity_type => c_entity_type_PRICE_DIFF
222 , p_column_name => c_PRICE_DIFFERENTIAL_NUM
223 , p_message_name => PO_MESSAGE_S.PO_ALL_ENTER_VALUE_GT_ZERO
224 , x_results => x_results
225 , x_result_type => x_result_type
226 );
227 
228 END price_diff_num_gt_zero;
229 
230 -------------------------------------------------------------------------------
231 --  This procedure determines if the price differentials have unique price
232 --  types. If not, return a failure.
233 -------------------------------------------------------------------------------
234 -- Assumption:
235 -- All of the unposted data will be passed in
236 -- to this routine in order to get accurate results.
237 PROCEDURE unique_price_type(
238   p_price_differential_id_tbl   IN  PO_TBL_NUMBER
239 , p_entity_id_tbl               IN  PO_TBL_NUMBER
240 , p_entity_type_tbl             IN  PO_TBL_VARCHAR30
241 , p_price_type_tbl              IN  PO_TBL_VARCHAR30
242 , x_result_set_id IN OUT NOCOPY NUMBER
243 , x_result_type   OUT NOCOPY    VARCHAR2
244 )
245 IS
246 BEGIN
247 
248 PO_VALIDATION_HELPER.price_diff_value_unique(
249   p_calling_module => D_unique_price_type
250 , p_price_diff_id_tbl => p_price_differential_id_tbl
251 , p_entity_id_tbl => p_entity_id_tbl
252 , p_entity_type_tbl => p_entity_type_tbl
253 , p_unique_value_tbl => PO_TYPE_CONVERTER.to_po_tbl_varchar4000(p_price_type_tbl)
254 , p_column_name => c_PRICE_TYPE
255 , p_message_name => PO_MESSAGE_S.PO_SVC_NON_UNIQUE_PRICE_TYPE
256 , x_result_set_id => x_result_set_id
257 , x_result_type => x_result_type
258 );
259 
260 END unique_price_type;
261 
262 -------------------------------------------------------------------------------
263 --  This procedure determines if the price type on a SPO line is an enabled
264 --  price type on the referenced BPA line or price break.
265 --  If not, return a failure.
266 -------------------------------------------------------------------------------
267 PROCEDURE spo_price_type_on_src_doc(
268   p_price_differential_id_tbl   IN  PO_TBL_NUMBER
269 , p_entity_type_tbl             IN  PO_TBL_VARCHAR30
270 , p_from_line_location_id_tbl   IN  PO_TBL_NUMBER
271 , p_from_line_id_tbl            IN  PO_TBL_NUMBER
272 , p_price_type_tbl              IN  PO_TBL_VARCHAR30
273 , x_result_set_id     IN OUT NOCOPY NUMBER
274 , x_result_type       OUT NOCOPY    VARCHAR2
275 )
276 IS
277 d_mod CONSTANT VARCHAR2(100) := D_spo_price_type_on_src_doc;
278 BEGIN
279 
280 IF PO_LOG.d_proc THEN
281   PO_LOG.proc_begin(d_mod,'p_price_differential_id_tbl',p_price_differential_id_tbl);
282   PO_LOG.proc_begin(d_mod,'p_entity_type_tbl',p_entity_type_tbl);
283   PO_LOG.proc_begin(d_mod,'p_from_line_location_id_tbl',p_from_line_location_id_tbl);
284   PO_LOG.proc_begin(d_mod,'p_from_line_id_tbl',p_from_line_id_tbl);
285   PO_LOG.proc_begin(d_mod,'p_price_type_tbl',p_price_type_tbl);
286   PO_LOG.proc_begin(d_mod,'x_result_set_id',x_result_set_id);
287 END IF;
288 
289 IF (x_result_set_id IS NULL) THEN
290   x_result_set_id := PO_VALIDATIONS.next_result_set_id();
291 END IF;
292 
293 FORALL i IN 1 .. p_price_differential_id_tbl.COUNT
294 INSERT INTO PO_VALIDATION_RESULTS_GT
295 ( result_set_id
296 , entity_type
297 , entity_id
298 , column_name
299 , column_val
300 , message_name
301 )
302 SELECT
303   x_result_set_id
304 , c_entity_type_PRICE_DIFF
305 , p_price_differential_id_tbl(i)
306 , c_PRICE_TYPE
307 , p_price_type_tbl(i)
308 , PO_MESSAGE_S.PO_SVC_PRC_TYPE_NOT_ON_SRC_DOC
309 FROM DUAL
310 WHERE
311     p_entity_type_tbl(i) = c_PO_LINE
312 AND EXISTS
313 ( SELECT null
314   FROM
315     PO_PRICE_DIFFERENTIALS SRC_PRICE_DIFF
316   WHERE
317       SRC_PRICE_DIFF.entity_id =
318         NVL(p_from_line_location_id_tbl(i),p_from_line_id_tbl(i))
319   AND SRC_PRICE_DIFF.entity_type =
320         NVL2(p_from_line_location_id_tbl(i),c_PRICE_BREAK,c_BLANKET_LINE)
321   AND SRC_PRICE_DIFF.enabled_flag = 'N'
322   AND SRC_PRICE_DIFF.price_type = p_price_type_tbl(i)
323 )
324 ;
325 
326 IF (SQL%ROWCOUNT > 0) THEN
327   x_result_type := PO_VALIDATIONS.c_result_type_FAILURE;
328 ELSE
329   x_result_type := PO_VALIDATIONS.c_result_type_SUCCESS;
330 END IF;
331 
332 IF PO_LOG.d_proc THEN
333   PO_VALIDATIONS.log_validation_results_gt(d_mod,9,x_result_set_id);
334   PO_LOG.proc_end(d_mod,'x_result_type',x_result_type);
335   PO_LOG.proc_end(d_mod,'x_result_set_id',x_result_set_id);
336 END IF;
337 
338 EXCEPTION
339 WHEN OTHERS THEN
340   IF PO_LOG.d_exc THEN
341     PO_LOG.exc(d_mod,0,NULL);
342   END IF;
343   RAISE;
344 
345 END spo_price_type_on_src_doc;
346 
347 -------------------------------------------------------------------------------
348 --  This procedure determines if the multiplier on a SPO line is between
349 --  the min and max multiplier specified on the price differential of the
350 --  referenced BPA line or price break. If not, return a failure.
351 -------------------------------------------------------------------------------
352 PROCEDURE spo_mul_btwn_min_max(
353   p_price_differential_id_tbl   IN  PO_TBL_NUMBER
354 , p_entity_type_tbl             IN  PO_TBL_VARCHAR30
355 , p_from_line_location_id_tbl   IN  PO_TBL_NUMBER
356 , p_from_line_id_tbl            IN  PO_TBL_NUMBER
357 , p_multiplier_tbl              IN  PO_TBL_NUMBER
358 , p_price_type_tbl              IN  PO_TBL_VARCHAR30 --Bug 5415284
359 , x_result_set_id     IN OUT NOCOPY NUMBER
360 , x_result_type       OUT NOCOPY    VARCHAR2
361 )
362 IS
363 d_mod CONSTANT VARCHAR2(100) := D_spo_mul_btwn_min_max;
364 BEGIN
365 
366 IF PO_LOG.d_proc THEN
367   PO_LOG.proc_begin(d_mod,'p_price_differential_id_tbl',p_price_differential_id_tbl);
368   PO_LOG.proc_begin(d_mod,'p_entity_type_tbl',p_entity_type_tbl);
369   PO_LOG.proc_begin(d_mod,'p_from_line_location_id_tbl',p_from_line_location_id_tbl);
370   PO_LOG.proc_begin(d_mod,'p_from_line_id_tbl',p_from_line_id_tbl);
371   PO_LOG.proc_begin(d_mod,'p_multiplier_tbl',p_multiplier_tbl);
372   PO_LOG.proc_begin(d_mod,'p_price_type_tbl',p_price_type_tbl);
373   PO_LOG.proc_begin(d_mod,'x_result_set_id',x_result_set_id);
374 END IF;
375 
376 IF (x_result_set_id IS NULL) THEN
377   x_result_set_id := PO_VALIDATIONS.next_result_set_id();
378 END IF;
379 
380 FORALL i IN 1 .. p_price_differential_id_tbl.COUNT
381 INSERT INTO PO_VALIDATION_RESULTS_GT
382 ( result_set_id
383 , entity_type
384 , entity_id
385 , column_name
386 , column_val
387 , message_name
388 --<Begin Bug 5415284> TOKENS IN PRICE DIFFERNTIAL VALIDATION MESSAGE ARE NOT REPLACED
389 , token1_name
390 , token1_value
391 , token2_name
392 , token2_value
393 --<End Bug 5415284>
394 )
395 SELECT
396   x_result_set_id
397 , c_entity_type_PRICE_DIFF
398 , p_price_differential_id_tbl(i)
399 , c_MULTIPLIER
400 , p_multiplier_tbl(i)
401 , PO_MESSAGE_S.PO_SVC_MULTIPLIER_BTWN_MIN_MAX
402 --<Begin Bug 5415284> Removed the EXISTS statement from the WHERE clause
403 , c_MIN
404 , SRC_PRICE_DIFF.min_multiplier
405 , c_MAX
406 , SRC_PRICE_DIFF.max_multiplier
407 FROM PO_PRICE_DIFFERENTIALS SRC_PRICE_DIFF
408 WHERE
409     p_entity_type_tbl(i) = c_PO_LINE
410 AND
411     SRC_PRICE_DIFF.entity_id =
412         NVL(p_from_line_location_id_tbl(i),p_from_line_id_tbl(i))
413 AND SRC_PRICE_DIFF.entity_type =
414         NVL2(p_from_line_location_id_tbl(i),c_PRICE_BREAK,c_BLANKET_LINE)
415 --Bug 5415284 - Added this filter to insure we retreive a unique price differential.
416 AND SRC_PRICE_DIFF.price_type = p_price_type_tbl(i)
417 AND SRC_PRICE_DIFF.max_multiplier IS NOT NULL
418 AND ( p_multiplier_tbl(i) < SRC_PRICE_DIFF.min_multiplier
419     OR  p_multiplier_tbl(i) > SRC_PRICE_DIFF.max_multiplier
420     );
421 
422 IF (SQL%ROWCOUNT > 0) THEN
423   x_result_type := PO_VALIDATIONS.c_result_type_FAILURE;
424 ELSE
425   x_result_type := PO_VALIDATIONS.c_result_type_SUCCESS;
426 END IF;
427 
428 IF PO_LOG.d_proc THEN
429   PO_VALIDATIONS.log_validation_results_gt(d_mod,9,x_result_set_id);
430   PO_LOG.proc_end(d_mod,'x_result_type',x_result_type);
431   PO_LOG.proc_end(d_mod,'x_result_set_id',x_result_set_id);
432 END IF;
433 
434 EXCEPTION
435 WHEN OTHERS THEN
436   IF PO_LOG.d_exc THEN
437     PO_LOG.exc(d_mod,0,NULL);
438   END IF;
439   RAISE;
440 
441 END spo_mul_btwn_min_max;
442 
443 -------------------------------------------------------------------------------
444 --  This procedure determines if the multiplier on a SPO line is no less than
445 --  the min multiplier specified on the price differential of the referenced
446 --  BPA line or price break (when the max multiplier is null).
447 --  If not, return a failure.
448 -------------------------------------------------------------------------------
449 PROCEDURE spo_mul_ge_min(
450   p_price_differential_id_tbl   IN  PO_TBL_NUMBER
451 , p_entity_type_tbl             IN  PO_TBL_VARCHAR30
452 , p_from_line_location_id_tbl   IN  PO_TBL_NUMBER
453 , p_from_line_id_tbl            IN  PO_TBL_NUMBER
454 , p_multiplier_tbl              IN  PO_TBL_NUMBER
455 , p_price_type_tbl              IN  PO_TBL_VARCHAR30 --Bug 5415284
456 , x_result_set_id     IN OUT NOCOPY NUMBER
457 , x_result_type       OUT NOCOPY    VARCHAR2
458 )
459 IS
460 d_mod CONSTANT VARCHAR2(100) := D_spo_mul_ge_min;
461 BEGIN
462 
463 IF PO_LOG.d_proc THEN
464   PO_LOG.proc_begin(d_mod,'p_price_differential_id_tbl',p_price_differential_id_tbl);
465   PO_LOG.proc_begin(d_mod,'p_entity_type_tbl',p_entity_type_tbl);
466   PO_LOG.proc_begin(d_mod,'p_from_line_location_id_tbl',p_from_line_location_id_tbl);
467   PO_LOG.proc_begin(d_mod,'p_from_line_id_tbl',p_from_line_id_tbl);
468   PO_LOG.proc_begin(d_mod,'p_multiplier_tbl',p_multiplier_tbl);
469   PO_LOG.proc_begin(d_mod,'p_price_type_tbl',p_price_type_tbl);
470   PO_LOG.proc_begin(d_mod,'x_result_set_id',x_result_set_id);
471 END IF;
472 
473 IF (x_result_set_id IS NULL) THEN
474   x_result_set_id := PO_VALIDATIONS.next_result_set_id();
475 END IF;
476 
477 FORALL i IN 1 .. p_price_differential_id_tbl.COUNT
478 INSERT INTO PO_VALIDATION_RESULTS_GT
479 ( result_set_id
480 , entity_type
481 , entity_id
482 , column_name
483 , column_val
484 , message_name
485 --<Begin Bug 5415284> TOKENS IN PRICE DIFFERNTIAL VALIDATION MESSAGE ARE NOT REPLACED
486 , token1_name
487 , token1_value
488 --<End Bug 5415284>
489 )
490 SELECT
491   x_result_set_id
492 , c_entity_type_PRICE_DIFF
493 , p_price_differential_id_tbl(i)
494 , c_MULTIPLIER
495 , p_multiplier_tbl(i)
496 , PO_MESSAGE_S.PO_SVC_MULTIPLIER_GT_MIN
497 --<Begin Bug 5415284> Removed the EXISTS statement from the WHERE clause
498 , c_MIN
499 , SRC_PRICE_DIFF.min_multiplier
500 FROM PO_PRICE_DIFFERENTIALS SRC_PRICE_DIFF
501 WHERE
502     p_entity_type_tbl(i) = c_PO_LINE
503 AND SRC_PRICE_DIFF.entity_id =
504       NVL(p_from_line_location_id_tbl(i),p_from_line_id_tbl(i))
505 AND SRC_PRICE_DIFF.entity_type =
506       NVL2(p_from_line_location_id_tbl(i),c_PRICE_BREAK,c_BLANKET_LINE)
507 --Bug 5415284 - Added this filter to insure we retreive a unique price differential.
508 AND SRC_PRICE_DIFF.price_type = p_price_type_tbl(i)
509 AND SRC_PRICE_DIFF.max_multiplier IS NULL
510 AND p_multiplier_tbl(i) < SRC_PRICE_DIFF.min_multiplier;
511 --<End Bug 5415284>
512 
513 IF (SQL%ROWCOUNT > 0) THEN
514   x_result_type := PO_VALIDATIONS.c_result_type_FAILURE;
515 ELSE
516   x_result_type := PO_VALIDATIONS.c_result_type_SUCCESS;
517 END IF;
518 
519 IF PO_LOG.d_proc THEN
520   PO_VALIDATIONS.log_validation_results_gt(d_mod,9,x_result_set_id);
521   PO_LOG.proc_end(d_mod,'x_result_type',x_result_type);
522   PO_LOG.proc_end(d_mod,'x_result_set_id',x_result_set_id);
523 END IF;
524 
525 EXCEPTION
526 WHEN OTHERS THEN
527   IF PO_LOG.d_exc THEN
528     PO_LOG.exc(d_mod,0,NULL);
529   END IF;
530   RAISE;
531 
532 END spo_mul_ge_min;
533 
534 
535 END PO_VAL_PRICE_DIFFS;