DBA Data[Home] [Help]

PACKAGE BODY: APPS.ZX_CHECK_REQUIRED_PARAMS_PKG

Source


1 PACKAGE BODY zx_check_required_params_pkg AS
2 /* $Header: zxifreqparampkgb.pls 120.39 2006/09/22 19:38:11 ssakamur ship $ */
3 
4 /* ======================================================================*
5  | Global Data Types                                                     |
6  * ======================================================================*/
7 
8 G_PKG_NAME              CONSTANT VARCHAR2(30) := 'ZX_CHECK_REQUIRED_PARAMS_PKG';
9 G_CURRENT_RUNTIME_LEVEL CONSTANT NUMBER       := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
10 G_LEVEL_UNEXPECTED      CONSTANT NUMBER       := FND_LOG.LEVEL_UNEXPECTED;
11 G_LEVEL_ERROR           CONSTANT NUMBER       := FND_LOG.LEVEL_ERROR;
12 G_LEVEL_EXCEPTION       CONSTANT NUMBER       := FND_LOG.LEVEL_EXCEPTION;
13 G_LEVEL_EVENT           CONSTANT NUMBER       := FND_LOG.LEVEL_EVENT;
14 G_LEVEL_PROCEDURE       CONSTANT NUMBER       := FND_LOG.LEVEL_PROCEDURE;
15 G_LEVEL_STATEMENT       CONSTANT NUMBER       := FND_LOG.LEVEL_STATEMENT;
16 G_MODULE_NAME           CONSTANT VARCHAR2(80) := 'ZX.PLSQL.ZX_CHECK_REQUIRED_PARAMS_PKG.';
17 
18 
19 /*----------------------------------------------------------------------------*
20  |   PRIVATE FUNCTIONS/PROCEDURES                                             |
21  *----------------------------------------------------------------------------*/
22 
23 /*----------------------------------------------------------------------------*
24  |   PUBLIC  FUNCTIONS/PROCEDURES                                             |
25  *----------------------------------------------------------------------------*/
26 
27 /* ===========================================================================*
28  | PROCEDURE Check_trx_line_tbl : Checks the required elements of the         |
29  |                                transaction line                            |
30  | Called by:                                                                 |
31  |     zx_valid_init_params_pkg.calculate_tax (GTT version)                   |
32  |     zx_valid_init_params_pkg.import_document_with_tax                      |
33  * ===========================================================================*/
34 
35   PROCEDURE Check_trx_line_tbl
36   ( x_return_status             OUT NOCOPY  VARCHAR2,
37     p_event_class_rec           IN          ZX_API_PUB.event_class_rec_type
38   )
39   IS
40   l_api_name         CONSTANT VARCHAR2(30):= 'CHECK_TRX_LINE_TBL';
41   l_count            NUMBER;
42   l_context_info_rec ZX_API_PUB.context_info_rec_type;
43   l_message_locm     VARCHAR2(240);
44   l_message_unitp    VARCHAR2(240);
45 
46   l_log_msg   FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
47 
48   BEGIN
49     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
50       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
51     END IF;
52 
53     x_return_status := FND_API.G_RET_STS_SUCCESS;
54     l_count := 0;
55 
56        l_message_locm := fnd_message.get_string('ZX','ZX_LOCATION_MISSING');
57        l_message_unitp := fnd_message.get_string('ZX','ZX_UNIT_PRICE_REQD');
58        INSERT ALL
59         WHEN (ZX_LOCATION_MISSING = 'Y') THEN
60         INTO ZX_ERRORS_GT(
61                 application_id,
62                 entity_code,
63                 event_class_code,
64                 trx_id,
65                 trx_line_id,
66                 MESSAGE_TEXT,
67                 TRX_LEVEL_TYPE
68                 )
69         VALUES(
70                 application_id,
71                 entity_code,
72                 event_class_code,
73                 trx_id,
74                 trx_line_id,
75                 l_message_locm,
76                 trx_level_type
77                  )
78  /*  Bug 5516630: Unit price needs to be checked only for distribution lines
79          WHEN (ZX_UNIT_PRICE_MISSING = 'Y') THEN
80                 INTO ZX_ERRORS_GT(
81                 application_id,
82                 entity_code,
83                 event_class_code,
84                 trx_id,
85                 trx_line_id,
86                 MESSAGE_TEXT,
87                 TRX_LEVEL_TYPE
88                 )
89         VALUES(
90                 application_id,
91                 entity_code,
92                 event_class_code,
93                 trx_id,
94                 trx_line_id,
95                 l_message_unitp,
96                 trx_level_type
97                  )
98 */
99 
100             SELECT
101                 header.application_id,
102                 header.entity_code,
103                 header.event_class_code,
104                 header.trx_id,
105                 lines_gt.trx_line_id,
106                 lines_gt.trx_level_type,
107                 -- Check for existence of at least one location at line
108                 CASE WHEN (lines_gt.ship_from_location_id is not null OR
109                            lines_gt.ship_to_location_id is not NULL OR
110                            lines_gt.poa_location_id is not NULL OR
111                            lines_gt.poo_location_id is not NULL OR
112                            lines_gt.paying_location_id is not NULL OR
113                            lines_gt.own_hq_location_id is not NULL OR
114                            lines_gt.trading_hq_location_id is not NULL OR
115                            lines_gt.poc_location_id is not NULL OR
116                            lines_gt.poi_location_id is not NULL OR
117                            lines_gt.pod_location_id is not NULL OR
118                            lines_gt.bill_to_location_id is not NULL OR
119                            lines_gt.bill_from_location_id is not NULL OR
120                            lines_gt.title_transfer_location_id is not NULL)
121                       THEN NULL
122                       ELSE 'Y'
123                   END ZX_LOCATION_MISSING
124 /*,
125                  CASE WHEN (p_event_class_rec.tax_variance_calc_flag = 'Y'
126                            and lines_gt.unit_price is null
127                            and lines_gt.ref_doc_application_id IS NOT NULL
128                            and lines_gt.line_class <> 'AMOUNT_MATCHED')
129                      THEN  'Y'
130                      ELSE  NULL
131                 END ZX_UNIT_PRICE_MISSING
132 */
133              FROM ZX_TRX_HEADERS_GT header,
134                   ZX_TRANSACTION_LINES_GT       lines_gt
135              WHERE lines_gt.trx_id = header.trx_id
136                AND lines_gt.application_id = header.application_id
137                AND lines_gt.entity_code    = header.entity_code
138                AND lines_gt.event_class_code = header.event_class_code;
139 
140   END check_trx_line_tbl;
141 
142 
143 /* ===========================================================================*
144  | PROCEDURE Check_trx_lines : Checks the required elements of the            |
145  |                             transaction line in structure                  |
146  | Called by:                                                                 |
147  |     zx_valid_init_params_pkg.calculate_tax (PLS/WIN version)               |
148  |     zx_valid_init_params_pkg.insupd_line_det_factors                       |
149  * ===========================================================================*/
150 
151   PROCEDURE Check_trx_lines
152   ( x_return_status             OUT NOCOPY  VARCHAR2,
153     p_event_class_rec           IN          ZX_API_PUB.event_class_rec_type
154   )
155   IS
156   l_api_name           CONSTANT VARCHAR2(30):= 'CHECK_TRX_LINE';
157   l_count              NUMBER;
158   l_context_info_rec   ZX_API_PUB.context_info_rec_type;
159 
160   l_log_msg   FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
161 
162   BEGIN
163 
164     x_return_status := FND_API.G_RET_STS_SUCCESS;
165     l_count := 0;
166 
167     FOR l_trx_line_index IN 1 .. nvl(zx_global_structures_pkg.trx_line_dist_tbl.internal_organization_id.LAST,0)
168     LOOP
169       IF zx_global_structures_pkg.trx_line_dist_tbl.LINE_LEVEL_ACTION(l_trx_line_index) not in ('CANCEL','DELETE') THEN
170         IF    zx_global_structures_pkg.trx_line_dist_tbl.SHIP_TO_LOCATION_ID(l_trx_line_index) is NULL
171           AND zx_global_structures_pkg.trx_line_dist_tbl.SHIP_FROM_LOCATION_ID(l_trx_line_index) is NULL
172           AND zx_global_structures_pkg.trx_line_dist_tbl.POA_LOCATION_ID(l_trx_line_index) is NULL
173           AND zx_global_structures_pkg.trx_line_dist_tbl.poo_location_id(l_trx_line_index) is NULL
174           AND zx_global_structures_pkg.trx_line_dist_tbl.PAYING_LOCATION_ID(l_trx_line_index) is NULL
175           AND zx_global_structures_pkg.trx_line_dist_tbl.OWN_HQ_LOCATION_ID(l_trx_line_index) is NULL
176           AND zx_global_structures_pkg.trx_line_dist_tbl.TRADING_HQ_LOCATION_ID(l_trx_line_index) is NULL
177           AND zx_global_structures_pkg.trx_line_dist_tbl.POC_LOCATION_ID(l_trx_line_index) is NULL
178           AND zx_global_structures_pkg.trx_line_dist_tbl.POI_LOCATION_ID(l_trx_line_index) is NULL
179           AND zx_global_structures_pkg.trx_line_dist_tbl.POD_LOCATION_ID(l_trx_line_index) is NULL
180           AND zx_global_structures_pkg.trx_line_dist_tbl.BILL_TO_LOCATION_ID(l_trx_line_index) is NULL
181           AND zx_global_structures_pkg.trx_line_dist_tbl.BILL_FROM_LOCATION_ID(l_trx_line_index) is NULL
182           AND zx_global_structures_pkg.trx_line_dist_tbl.TITLE_TRANSFER_LOCATION_ID(l_trx_line_index) is NULL THEN
183             x_return_status := FND_API.G_RET_STS_ERROR;
184             FND_MESSAGE.SET_NAME('ZX','ZX_LOCATION_MISSING');
185             l_context_info_rec.APPLICATION_ID   := p_event_class_rec.APPLICATION_ID;
186             l_context_info_rec.ENTITY_CODE      := p_event_class_rec.ENTITY_CODE;
187             l_context_info_rec.EVENT_CLASS_CODE := p_event_class_rec.EVENT_CLASS_CODE;
188             l_context_info_rec.TRX_ID           := p_event_class_rec.TRX_ID;
189             ZX_API_PUB.add_msg( p_context_info_rec =>l_context_info_rec );
190             IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
191                FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'At least one location is required');
192             END IF;
193             EXIT;
194         END IF;
195       END IF;
196     END LOOP;
197 
198     FOR l_trx_line_index IN 1 .. nvl(zx_global_structures_pkg.trx_line_dist_tbl.internal_organization_id.LAST,0)
199     LOOP
200       IF p_event_class_rec.header_level_currency_flag is null THEN
201         IF zx_global_structures_pkg.trx_line_dist_tbl.LINE_LEVEL_ACTION(l_trx_line_index) not in ('CANCEL','DELETE') THEN
202           IF zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_CURRENCY_CODE(l_trx_line_index) is NULL and
203              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_PRECISION(l_trx_line_index) is NULL THEN
204              x_return_status := FND_API.G_RET_STS_ERROR;
205              FND_MESSAGE.SET_NAME('ZX','ZX_CURRENCY_INFO_REQD');
206              l_context_info_rec.APPLICATION_ID   := p_event_class_rec.APPLICATION_ID;
207              l_context_info_rec.ENTITY_CODE      := p_event_class_rec.ENTITY_CODE;
208              l_context_info_rec.EVENT_CLASS_CODE := p_event_class_rec.EVENT_CLASS_CODE;
209              l_context_info_rec.TRX_ID           := p_event_class_rec.TRX_ID;
210              ZX_API_PUB.add_msg( p_context_info_rec =>l_context_info_rec );
211              IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
212                FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Currency code and precision are required at line level');
213              END IF;
214              EXIT;
215            END IF;
216         END IF;
217       END IF;
218     END LOOP;
219 
220     IF p_event_class_rec.tax_variance_calc_flag = 'Y' THEN
221       IF ZX_API_PUB.G_PUB_SRVC = 'CALCULATE_TAX' THEN
222 	    FOR l_trx_line_index IN 1 .. nvl(zx_global_structures_pkg.trx_line_dist_tbl.INTERNAL_ORGANIZATION_ID.LAST,0)
223         LOOP
224           IF zx_global_structures_pkg.trx_line_dist_tbl.LINE_LEVEL_ACTION(l_trx_line_index) not in ('CANCEL','DELETE') AND
225              zx_global_structures_pkg.trx_line_dist_tbl.LINE_CLASS(l_trx_line_index) <> 'AMOUNT_MATCHED' AND
226              zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_APPLICATION_ID(l_trx_line_index) is not null THEN
227              IF zx_global_structures_pkg.trx_line_dist_tbl.UNIT_PRICE(l_trx_line_index) is NULL THEN
228                x_return_status := FND_API.G_RET_STS_ERROR;
229                FND_MESSAGE.SET_NAME('ZX','ZX_UNIT_PRICE_REQD');
230                l_context_info_rec.APPLICATION_ID   := p_event_class_rec.APPLICATION_ID;
231                l_context_info_rec.ENTITY_CODE      := p_event_class_rec.ENTITY_CODE;
232                l_context_info_rec.EVENT_CLASS_CODE := p_event_class_rec.EVENT_CLASS_CODE;
233                l_context_info_rec.TRX_ID           := p_event_class_rec.TRX_ID;
234                ZX_API_PUB.add_msg( p_context_info_rec =>l_context_info_rec );
235               IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
236                 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Unit price is required');
237               END IF;
238               EXIT;
239             END IF;
240           END IF;
241         END LOOP;
242       END IF; --g_pub_srvc
243     END IF; --tax_variance_calc_flag
244 
245     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
246       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name||'.END',
247         G_PKG_NAME||': '||l_api_name||'()-'||' RETURN_STATUS = ' || x_return_status);
248     END IF;
249 
250   END check_trx_lines;
251 
252 /* ===========================================================================*
253  | PROCEDURE Check_trx_headers_tbl : Checks the required elements of the      |
254  |                                   Transaction Header                       |
255  | Called by:                                                                 |
256  |     zx_valid_init_params_pkg.calculate_tax (GTT version)                   |
257  |     zx_valid_init_params_pkg.import_document_with_tax                      |
258  |     zx_valid_init_params_pkg.determine_recovery                            |
259  |     zx_valid_init_params_pkg.insupd_line_det_factors                       |
260  * ===========================================================================*/
261 
262   PROCEDURE Check_trx_headers_tbl
263   ( x_return_status                 OUT NOCOPY  VARCHAR2,
264     p_event_class_rec           IN  OUT NOCOPY  ZX_API_PUB.event_class_rec_type
265   )
266   IS
267   l_api_name         CONSTANT VARCHAR2(30):= 'CHECK_TRX_HEADERS_TBL';
268   l_func_curr_code   VARCHAR2(80);
269   l_count            NUMBER;
270   l_context_info_rec ZX_API_PUB.context_info_rec_type;
271   l_message_pty     VARCHAR2(240);
272   l_message_curr     VARCHAR2(240);
273 
274   BEGIN
275     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
276       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
277     END IF;
278 
279     x_return_status := FND_API.G_RET_STS_SUCCESS;
280     IF ZX_API_PUB.G_PUB_SRVC <> 'DETERMINE_RECOVERY' THEN
281        IF ZX_API_PUB.G_DATA_TRANSFER_MODE <> 'TAB' THEN
282 
283          IF (p_event_class_rec.rounding_ship_to_party_id is NULL)   AND
284             (p_event_class_rec.rounding_ship_from_party_id is NULL) AND
285             (p_event_class_rec.rounding_bill_to_party_id is NULL)   AND
286             (p_event_class_rec.rounding_bill_from_party_id is NULL) THEN
287               x_return_status := FND_API.G_RET_STS_ERROR;
288               FND_MESSAGE.SET_NAME('ZX','ZX_ROUND_PARTY_MISSING');
289               l_context_info_rec.APPLICATION_ID   := p_event_class_rec.APPLICATION_ID;
290               l_context_info_rec.ENTITY_CODE      := p_event_class_rec.ENTITY_CODE;
291               l_context_info_rec.EVENT_CLASS_CODE := p_event_class_rec.EVENT_CLASS_CODE;
292               l_context_info_rec.TRX_ID           := p_event_class_rec.TRX_ID;
293               ZX_API_PUB.add_msg( p_context_info_rec =>l_context_info_rec );
294               IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
295                 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'At least one rounding party is required');
296               END IF;
297          END IF;
298       ELSIF ZX_API_PUB.G_DATA_TRANSFER_MODE = 'TAB' THEN
299        l_message_pty := fnd_message.get_string('ZX','ZX_ROUND_PARTY_MISSING');
300        l_message_curr := fnd_message.get_string('ZX','ZX_CURRENCY_INFO_REQD');
301        INSERT ALL
302         WHEN (ZX_ROUND_PARTY_MISSING = 'Y')  THEN
303         INTO ZX_ERRORS_GT(
304                 application_id,
305                 entity_code,
306                 event_class_code,
307                 trx_id,
308                 trx_line_id,
309                 MESSAGE_TEXT,
310                 TRX_LEVEL_TYPE
311                 )
312         VALUES(
313                 application_id,
314                 entity_code,
315                 event_class_code,
316                 trx_id,
317                 NULL ,--trx_line_id,
318                 l_message_pty,
319                 NULL --interface_line_id
320                  )
321         WHEN (ZX_CURRENCY_INFO_REQD = 'Y')  THEN
322                 INTO ZX_ERRORS_GT(
323                 application_id,
324                 entity_code,
325                 event_class_code,
326                 trx_id,
327                 trx_line_id,
328                 MESSAGE_TEXT,
329                 TRX_LEVEL_TYPE
330                 )
331         VALUES(
332                 application_id,
333                 entity_code,
334                 event_class_code,
335                 trx_id,
336                 NULL ,--trx_line_id,
337                 l_message_curr,
338                 NULL --interface_line_id
339                  )
340         SELECT
341         header.application_id,
342         header.entity_code,
343         header.event_class_code,
344         header.trx_id,
345         -- Check for existence of at least one rounding party
346         CASE WHEN (header.rounding_ship_from_party_id is NULL AND
347                    header.rounding_ship_to_party_id is NULL AND
348                    header.rounding_bill_to_party_id is NULL AND
349                    header.rounding_bill_from_party_id is NULL )
350               THEN 'Y'
351               ELSE NULL
352          END  ZX_ROUND_PARTY_MISSING,
353        CASE WHEN (header.TRX_CURRENCY_CODE is NULL
354                    AND header.precision is NULL )
355                    AND EXISTS
356                    ( SELECT 1 FROM zx_transaction_lines_gt
357                        WHERE application_id = header.application_id
358                        AND   entity_code = header.entity_code
359                        AND   event_class_code = header.event_class_code
360                        AND   trx_id = header.trx_id
361                        AND   ( TRX_LINE_CURRENCY_CODE is NULL
362                              OR trx_line_precision is NULL)
363                     )
364              THEN 'Y'
365              ELSE NULL
366         END  ZX_CURRENCY_INFO_REQD
367 
368        FROM
369             ZX_TRX_HEADERS_GT             header
370        WHERE VALIDATION_CHECK_FLAG is null;
371 
372      END IF; -- ZX_API_PUB.G_DATA_TRANSFER_MODE <> 'TAB'
373 
374 /* Needs to be moved to service types package
375 
376       IF p_event_class_rec.trx_currency_code is not NULL   AND
377          p_event_class_rec.precision is not NULL THEN
378          p_event_class_rec.header_level_currency_flag := 'Y';
379       END IF;
380 */
381 
382     ELSIF ZX_API_PUB.G_PUB_SRVC = 'DETERMINE_RECOVERY' THEN
383       IF p_event_class_rec.tax_variance_calc_flag = 'Y' THEN
384        /* -----------------------------------------------------------------------------+
385         |    If tax_variance_calc_flag is 'Y' then trx_line_quantity cannot be null    |
386         + ----------------------------------------------------------------------------*/
387         --BUGFIX 4938906 - No need to check for trx_line_quantity
388         /*BEGIN
389           SELECT  /*+ INDEX (ZX_ITM_DISTRIBUTIONS_GT ZX_ITM_DISTRIBUTIONS_GT_U1)*/
390         /*         1
391             INTO l_count
392             FROM ZX_ITM_DISTRIBUTIONS_GT
393             WHERE application_id   = p_event_class_rec.application_id
394               AND entity_code      = p_event_class_rec.entity_code
395               AND event_class_code = p_event_class_rec.event_class_code
396               AND trx_id           = p_event_class_rec.trx_id
397       	      AND trx_line_quantity is null;
398 
399     	EXCEPTION
400           WHEN NO_DATA_FOUND THEN
401             l_count := 0;
402           WHEN OTHERS THEN
403             l_count := 1;
404         END;
405         IF l_count <> 0  THEN
406             x_return_status := FND_API.G_RET_STS_ERROR;
407             FND_MESSAGE.SET_NAME('ZX','ZX_TRX_LINE_QUANTITY_REQD');
408             l_context_info_rec.APPLICATION_ID   := p_event_class_rec.APPLICATION_ID;
409             l_context_info_rec.ENTITY_CODE      := p_event_class_rec.ENTITY_CODE;
410             l_context_info_rec.EVENT_CLASS_CODE := p_event_class_rec.EVENT_CLASS_CODE;
411             l_context_info_rec.TRX_ID           := p_event_class_rec.TRX_ID;
412             ZX_API_PUB.add_msg( p_context_info_rec =>l_context_info_rec );
413             IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
414               FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Transaction line quantity is required');
415             END IF;
416         END IF;
417         */
418        /* ---------------------------------------------------------------------+
419         |    If tax_variance_calc_flag is 'Y' then unit price cannot be null   |
420         + ---------------------------------------------------------------------*/
421         --BUGFIX 4779214 - No need to check for unit_price
422         /*
423         BEGIN
424           SELECT  /*+ INDEX (ZX_ITM_DISTRIBUTIONS_GT ZX_ITM_DISTRIBUTIONS_GT_U1)*/
425         /*         1
426            INTO l_count
427             FROM ZX_ITM_DISTRIBUTIONS_GT
428             WHERE application_id   = p_event_class_rec.application_id
429               AND entity_code      = p_event_class_rec.entity_code
430               AND event_class_code = p_event_class_rec.event_class_code
431               AND trx_id           = p_event_class_rec.trx_id
432       	      AND unit_price is null;
433 
434  	    EXCEPTION
435           WHEN NO_DATA_FOUND THEN
436             l_count := 0;
437           WHEN OTHERS THEN
438             l_count := 1;
439         END;
440         IF l_count <> 0  THEN
441             x_return_status := FND_API.G_RET_STS_ERROR;
442             FND_MESSAGE.SET_NAME('ZX','ZX_UNIT_PRICE_REQD');
443             l_context_info_rec.APPLICATION_ID   := p_event_class_rec.APPLICATION_ID;
444             l_context_info_rec.ENTITY_CODE      := p_event_class_rec.ENTITY_CODE;
445             l_context_info_rec.EVENT_CLASS_CODE := p_event_class_rec.EVENT_CLASS_CODE;
446             l_context_info_rec.TRX_ID           := p_event_class_rec.TRX_ID;
447             ZX_API_PUB.add_msg( p_context_info_rec =>l_context_info_rec );
448             IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
449               FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Unit Price is required');
450             END IF;
451         END IF;
452      */
453     /* ------------------------------------------------------------------------- -+
454     |    If tax_variance_calc_flag is 'Y' then trx line dist qty cannot be null   |
455     + ----------------------------------------------------------------------------*/
456         NULL;
457         -- moved this logic to ZX_API_PUB and execute it only once
458         -- BEGIN
459         --   SELECT  /*+ INDEX (ZX_ITM_DISTRIBUTIONS_GT ZX_ITM_DISTRIBUTIONS_GT_U1)*/
460         --          1
461         --     INTO l_count
462         --     FROM ZX_ITM_DISTRIBUTIONS_GT
463         --     WHERE application_id   = p_event_class_rec.application_id
464         --       AND entity_code      = p_event_class_rec.entity_code
465         --       AND event_class_code = p_event_class_rec.event_class_code
466         --       AND trx_id           = p_event_class_rec.trx_id
467         --       AND ref_doc_application_id is not null
468       	--       AND trx_line_dist_qty is null;
469   	--
470  	--     EXCEPTION
471         --   WHEN NO_DATA_FOUND THEN
472         --     l_count := 0;
473         --   WHEN OTHERS THEN
474         --     l_count := 1;
475         -- END;
476         -- IF l_count <> 0  THEN
477         --     x_return_status := FND_API.G_RET_STS_ERROR;
478         --     FND_MESSAGE.SET_NAME('ZX','ZX_TRX_LINE_DIST_QTY_REQD');
479         --     l_context_info_rec.APPLICATION_ID   := p_event_class_rec.APPLICATION_ID;
480         --     l_context_info_rec.ENTITY_CODE      := p_event_class_rec.ENTITY_CODE;
481         --     l_context_info_rec.EVENT_CLASS_CODE := p_event_class_rec.EVENT_CLASS_CODE;
482         --     l_context_info_rec.TRX_ID           := p_event_class_rec.TRX_ID;
483         --     ZX_API_PUB.add_msg( p_context_info_rec =>l_context_info_rec );
484         --     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
485         --       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Transaction line distribution quantity is required');
486         --     END IF;
487         -- END IF;
488       END IF; --tax_variance_calc_flag
489     END IF; -- g_pub_srvc
490 
491 
492     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
493       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name||'.END',
494         G_PKG_NAME||': '||l_api_name||'()-'||' RETURN_STATUS = ' || x_return_status);
495     END IF;
496 
497   END check_trx_headers_tbl;
498 
499 
500 /* ===========================================================================*
501  | PROCEDURE Check_trx_rec : Checks the required elements of the transaction  |
502  |                           record                                           |
503  | Called by:                                                                 |
504  |     zx_valid_init_params_pkg.override_tax                                  |
505  |     zx_valid_init_params_pkg.global_document_update                        |
506  |     zx_valid_init_params_pkg.override_recovery                             |
507  |     zx_valid_init_params_pkg.freeze_distribution_lines                     |
508  |     zx_valid_init_params_pkg.validate_document_for_tax                     |
509  |     zx_valid_init_params_pkg.discard_tax_only_lines                        |
510  * ===========================================================================*/
511 
512   PROCEDURE Check_trx_rec
513   ( x_return_status 	OUT  NOCOPY VARCHAR2,
514     p_trx_rec           IN          ZX_API_PUB.transaction_rec_type
515   )
516   IS
517   l_api_name            CONSTANT VARCHAR2(30):= 'CHECK_TRX_REC';
518   l_count               NUMBER;
519   l_context_info_rec    ZX_API_PUB.context_info_rec_type;
520 
521   BEGIN
522     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
523       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
524     END IF;
525 
526     l_count := 0;
527     x_return_status := FND_API.G_RET_STS_SUCCESS;
528 
529     /*Bugfix 3423297
530     IF p_trx_rec.internal_organization_id is NULL THEN
531 
532             x_return_status := FND_API.G_RET_STS_ERROR;
533             FND_MESSAGE.SET_NAME('ZX','ZX_ORG_ID_REQD');
534             FND_MSG_PUB.Add;
535 
536     END IF;
537     */
538     IF p_trx_rec.application_id is NULL THEN
539       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
540       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
541          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Application ID is required');
542       END IF;
543     END IF;
544 
545     IF p_trx_rec.entity_code is NULL THEN
546       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
547       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
548          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Entity code is required');
549       END IF;
550     END IF;
551 
552 
553     IF p_trx_rec.event_class_code is NULL THEN
554       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
555       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
556          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Event class code is required');
557       END IF;
558     END IF;
559 
560     IF p_trx_rec.event_type_code is NULL THEN
561       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
562       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
563          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Event type code is required');
564       END IF;
565     END IF;
566 
567     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
568       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name||'.END',
569         G_PKG_NAME||': '||l_api_name||'()-'||' RETURN_STATUS = ' || x_return_status);
570     END IF;
571 
572   END check_trx_rec;
573 
574 
575 /*==============================================================================*
576  | PROCEDURE Check_trx_line_rec : Checks the required elements of the specified |
577  |                                transaction line have values                  |
578  | Called by:                                                                   |
579  |     zx_valid_init_params_pkg.mark_tax_lines_deleted                          |
580  * ============================================================================*/
581 
582   PROCEDURE Check_trx_line_rec
583   ( x_return_status  OUT  NOCOPY   VARCHAR2,
584     p_trx_line_rec   IN            zx_api_pub.transaction_line_rec_type
585   ) IS
586   l_api_name           CONSTANT VARCHAR2(30) := 'CHECK_TRX_LINE_REC';
587   l_context_info_rec   ZX_API_PUB.context_info_rec_type;
588 
589   BEGIN
590     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
591       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
592     END IF;
593 
594     x_return_status := FND_API.G_RET_STS_SUCCESS;
595 
596     IF p_trx_line_rec.internal_organization_id is NULL THEN
597       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
598       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
599          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Org ID is required');
600       END IF;
601     END IF;
602 
603     IF p_trx_line_rec.application_id is NULL THEN
604       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
605       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
606          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Application ID is required');
607       END IF;
608     END IF;
609 
610     IF p_trx_line_rec.entity_code is NULL THEN
611       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
612       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
613          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Entity code is required');
614       END IF;
615     END IF;
616 
617     IF p_trx_line_rec.event_class_code is NULL THEN
618       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
619       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
620          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Event class code is required');
621       END IF;
622     END IF;
623 
624     IF p_trx_line_rec.trx_id is NULL THEN
625       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
626       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
627          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Transaction ID is required');
628       END IF;
629     END IF;
630 
631     IF p_trx_line_rec.trx_line_id is NULL THEN
632       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
633       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
634          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Transaction line ID is required');
635       END IF;
636     END IF;
637 
638     IF p_trx_line_rec.trx_level_type is NULL THEN
639       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
640       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
641          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Transaction line level type is required');
642       END IF;
643     END IF;
644 
645     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
646       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name||'.END',
647         G_PKG_NAME||': '||l_api_name||'()-'||' RETURN_STATUS = ' || x_return_status);
648     END IF;
649   END check_trx_line_rec ;
650 
651 END ZX_CHECK_REQUIRED_PARAMS_PKG;