DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSE_RCVTXN_PKG

Source


1 PACKAGE BODY cse_rcvtxn_pkg AS
2 /* $Header: CSEPOEXB.pls 120.1 2006/06/07 21:15:16 brmanesh noship $  */
3 
4   l_debug varchar2(1) := NVL(fnd_profile.value('CSE_DEBUG_OPTION'),'N');
5 
6   PROCEDURE debug(
7     p_message IN varchar2)
8   IS
9   BEGIN
10     IF l_debug = 'Y' THEN
11       cse_debug_pub.add(p_message);
12       IF nvl(fnd_global.conc_request_id, -1) <> -1 THEN
13         fnd_file.put_line(fnd_file.log, p_message);
14       END IF;
15     END IF;
16   EXCEPTION
17     WHEN others THEN
18       null;
19   END debug;
20 
21   PROCEDURE PostTransaction_Exit(
22     p_transaction_id    IN NUMBER,
23     p_interface_trx_id  IN NUMBER,
24     p_return_status        OUT NOCOPY VARCHAR2)
25   IS
26     l_eib_installed       VARCHAR2(1) := 'N';
27     l_ib_tracked_flag     VARCHAR2(1);
28     l_message_id          NuMBER ;
29     l_error_code          NUMBER;
30     l_error_message       VARCHAR2(2000);
31     l_return_status       VARCHAR2(100);
32     l_file                VARCHAR2(500);
33     l_api_version         NUMBER  DEFAULT 1.0;
34     l_commit              VARCHAR2(1) DEFAULT fnd_api.g_false;
35     l_init_msg_list       VARCHAR2(1) DEFAULT fnd_api.g_true;
36     l_msg_count           NUMBER;
37     l_msg_data            VARCHAR2(2000);
38     l_trx_error_rec       csi_datastructures_pub.transaction_error_rec;
39     l_Validation_Level    NUMBER   := fnd_api.g_valid_level_full;
40     l_Txn_Error_Id        NUMBER;
41     l_xml_string          VARCHAR2(2000);
42 
43     CURSOR rcv_txn_cur IS
44       SELECT rt.transaction_id,
45              pla.item_id,
46              pda.project_id,
47              rt.organization_id,
48              rt.transaction_type,
49              rt.destination_type_code
50       FROM   rcv_transactions     rt ,
51              po_lines_all         pla ,
52              po_distributions_all pda
53       WHERE  rt.transaction_id      = p_transaction_id
54       AND    pda.po_distribution_id = rt.po_distribution_id
55       AND    pla.po_line_id         = rt.po_line_id;
56 
57   BEGIN
58 
59     savepoint rcv_hook;
60 
61     p_return_status := fnd_api.g_ret_sts_success;
62     l_eib_installed := cse_util_pkg.is_eib_installed;
63 
64     IF l_eib_installed = 'Y'  THEN
65 
66       cse_util_pkg.build_error_string(l_xml_string,'RCV_TRANSACTION_ID',p_transaction_id);
67 
68       cse_util_pkg.set_debug;
69 
70       debug('Inside cse_rcvtxn_pkg.posttransaction_exit');
71       debug('  transaction_id         : '||p_transaction_id);
72 
73       FOR rcv_txn_rec IN rcv_txn_cur
74       LOOP
75 
76         debug('  transaction_type       : '||rcv_txn_rec.transaction_type);
77         debug('  destination_type_code  : '||rcv_txn_rec.destination_type_code);
78         debug('  item_id                : '||rcv_txn_rec.item_id);
79         debug('  project_id             : '||rcv_txn_rec.project_id);
80 
81         IF rcv_txn_rec.transaction_type = 'DELIVER'
82            AND
83            rcv_txn_rec.destination_type_code = 'EXPENSE'
84            AND
85            rcv_txn_rec.project_id is not null
86            AND
87            rcv_txn_rec.item_id is not null
88         THEN
89 
90           SELECT nvl(comms_nl_trackable_flag, 'N')
91           INTO   l_ib_tracked_flag
92           FROM   mtl_system_items
93           WHERE  inventory_item_id = rcv_txn_rec.item_id
94           AND    organization_id   = rcv_txn_rec.organization_id;
95 
96           debug('  ib_tracked_flag        : '||l_ib_tracked_flag);
97 
98           IF l_ib_tracked_flag = 'Y' THEN
99 
100             IF NOT cse_util_pkg.bypass_event_queue THEN
101 
102               xnp_cseporcv_u.publish(
103                 xnp$rcv_transaction_id => p_transaction_id ,
104                 x_message_id           => l_message_id ,
105                 x_error_code           => l_error_code ,
106                 x_error_message        => l_error_message);
107 
108               IF l_error_code <> 0 THEN
109                 RAISE fnd_api.g_exc_error;
110               END IF;
111 
112             ELSE
113               cse_po_noqueue_pvt.process_noqueue_txn(
114                 p_ref_id        => p_transaction_id,
115                 p_txn_type      => 'PO_RECEIPT_INTO_PROJECT',
116                 x_return_status => l_return_Status,
117                 x_msg_count     => l_msg_count,
118                 x_msg_data      => l_msg_data);
119 
120               IF l_return_status <> fnd_api.g_ret_sts_success THEN
121                 l_error_message := l_msg_data;
122                 RAISE fnd_api.g_exc_error;
123               END IF;
124 
125             END IF; -- bypass/publish
126           END IF; -- ib tracked
127         END IF; -- deliver expense item into project
128       END LOOP;
129 
130     END IF; -- eib installed
131 
132   EXCEPTION
133     WHEN OTHERS THEN
134       ROLLBACK TO rcv_hook;
135       p_return_Status := fnd_api.g_ret_sts_unexp_error;
136       l_error_Message := nvl(l_error_message, sqlerrm);
137       IF l_eib_installed = 'Y' THEN
138         l_trx_error_rec.error_text    := l_error_message;
139         l_trx_error_rec.source_type   := 'CSEPORCV';
140         l_trx_error_rec.source_id     := p_transaction_id;
141         l_Trx_Error_Rec.Transaction_Type_ID   := 102;
142         l_Trx_Error_Rec.message_string := l_xml_string;
143         l_Trx_Error_Rec.error_stage   := cse_datastructures_pub.g_ib_update;
144         csi_transactions_pvt.create_txn_error(
145           l_api_version,l_init_msg_list,l_commit,1,l_trx_error_rec,
146           l_return_status,l_msg_count,l_msg_data,l_txn_error_id);
147       END IF;
148   END PostTransaction_Exit;
149 
150 END cse_rcvtxn_pkg;