DBA Data[Home] [Help]

PACKAGE BODY: APPS.CS_EST_APPLY_CONTRACT_PKG

Source


1 package body CS_Est_Apply_Contract_PKG  as
2 /* $Header: csxchcob.pls 120.2 2005/08/18 16:48:38 mviswana noship $ */
3 /*******************************************************************************
4 	--
5 	--Private global variables and functions
6 	--
7 *******************************************************************************/
8 
9 
10 PROCEDURE Apply_Contract (
11   p_coverage_id	  IN  NUMBER,
12   p_coverage_txn_group_id IN  NUMBER,
13   p_txn_billing_type_id   IN  NUMBER,
14   p_business_process_id   IN  NUMBER,
15   p_request_date          IN  DATE,
16   p_amount                IN  NUMBER,
17   p_discount_amount       OUT NOCOPY     NUMBER,
18   X_RETURN_STATUS         OUT NOCOPY     VARCHAR2,
19   X_MSG_COUNT             OUT NOCOPY     NUMBER,
20   X_MSG_DATA              OUT NOCOPY     VARCHAR2) IS
21 
22   l_contracts_in_tbl    OKS_CON_COVERAGE_PUB.ser_tbl_type ;
23   l_contracts_out_tbl   OKS_CON_COVERAGE_PUB.cov_tbl_type ;
24 
25   j 			NUMBER := 0;
26 
27   l_return_status      VARCHAR2(1);
28   l_msg_data           VARCHAR2(2000) ;
29   l_msg_count          NUMBER ;
30 
31   x_discount_price    NUMBER;
32   e_contracts_warning  EXCEPTION;
33 
34 
35 BEGIN
36 
37      l_contracts_in_tbl(1).contract_line_id    := P_coverage_id;
38      l_contracts_in_tbl(1).txn_group_id        := null;
39      l_contracts_in_tbl(1).billing_type_id     := P_txn_billing_type_id;
40      l_contracts_in_tbl(1).business_process_id := P_business_process_id;
41      l_contracts_in_tbl(1).request_date        := P_request_date;
42      l_contracts_in_tbl(1).charge_amount       := P_Amount;
43 
44     IF  l_contracts_in_tbl(1).contract_line_id IS NOT NULL
45     and l_contracts_in_tbl(1).billing_type_id IS NOT NULL
46     and l_contracts_in_tbl(1).business_process_id IS NOT NULL
47     and l_contracts_in_tbl(1).request_date IS NOT NULL
48     and l_contracts_in_tbl(1).charge_amount IS NOT NULL THEN
49 
50 	OKS_CON_COVERAGE_PUB.APPLY_CONTRACT_COVERAGE (
51                         P_API_VERSION             =>  1.0,
52                         P_INIT_MSG_LIST           =>  'T',
53                         P_EST_amt_TBL             =>  l_contracts_in_tbl,
54                         X_RETURN_STATUS           =>  l_return_status,
55                         X_MSG_COUNT               =>  l_msg_count,
56                         X_MSG_DATA                =>  l_msg_data,
57                         X_est_DISCounted_amt_TBL  =>  l_contracts_out_tbl);
58 
59         IF  l_return_status = FND_API.G_RET_STS_SUCCESS THEN
60 
61 	    FOR k in 1..l_contracts_out_tbl.count LOOP
62 
63 		IF l_contracts_out_tbl(1).discounted_amount IS NULL THEN
64 		p_discount_amount := l_contracts_in_tbl(1).charge_amount;
65 		ELSE
66                 p_discount_amount := l_contracts_out_tbl(1).discounted_amount;
67 
68                 x_return_status := l_return_status;
69                 END IF;
70             END LOOP;
71 
72 
73        ELSIF  l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
74               x_msg_data  := l_msg_data;
75               x_msg_count := l_msg_count;
76               x_return_status  := l_return_status;
77 
78       END IF;
79 
80 END IF;
81 
82       EXCEPTION
83 
84         WHEN e_contracts_warning THEN
85             -- x_result_flag := 'F' ;
86             FND_MESSAGE.Set_Name('CS', 'CS_CHG_APPLY_CONTRACT_WARNING');
87             FND_MESSAGE.Set_Token('REASON', l_msg_data);
88             app_exception.raise_exception ;
89 
90         WHEN OTHERS  THEN
91             -- x_result_flag := 'F' ;
92             FND_MESSAGE.Set_Name('CS', 'CS_CHG_APPLY_CONTRACT_WARNING');
93             FND_MESSAGE.Set_Token('REASON', 'Apply Contracts Failed.');
94             app_exception.raise_exception ;
95 
96 END Apply_Contract ;
97 --
98 --
99 PROCEDURE Update_Estimate_Details (
100 		  p_Estimate_Detail_Id  IN  NUMBER,
101 		  p_discount_price      IN  NUMBER) IS
102 																	BEGIN
103 	  	 UPDATE CS_ESTIMATE_DETAILS
104 		 SET    after_warranty_cost  = p_discount_price
105 	      WHERE Estimate_Detail_Id = p_estimate_detail_id;
106 
107 	 EXCEPTION
108       WHEN NO_DATA_FOUND THEN
109       Raise  No_Data_Found;
110 
111 END  Update_Estimate_Details;
112 --
113 --
114 PROCEDURE GET_CONTRACT_LINES(
115    P_API_VERSION		IN      NUMBER ,
116    P_INIT_MSG_LIST		IN      VARCHAR2,
117    P_CUSTOMER_ID		IN      NUMBER,
118    P_CUSTOMER_ACCOUNT_ID	IN	   NUMBER,
119    P_SERVICE_LINE_ID		IN	   NUMBER DEFAULT NULL,
120    P_CUSTOMER_PRODUCT_ID	IN      NUMBER DEFAULT NULL,
121    p_system_id			IN  number default null, -- Fix bug 3040124
122    p_inventory_item_id		IN  number default null, -- Fix bug 3040124
123    P_REQUEST_DATE		IN      DATE,
124    P_BUSINESS_PROCESS_ID	IN      NUMBER DEFAULT NULL,
125    P_CALC_RESPTIME_FLAG		IN      VARCHAR2 DEFAULT NULL,
126    P_VALIDATE_FLAG		IN      VARCHAR2,
127    X_ENT_CONTRACTS		OUT NOCOPY     ENT_CONTRACT_TAB,
128    -- X_ENT_COVERAGE		OUT NOCOPY     CONTTAB,
129    X_RETURN_STATUS		OUT NOCOPY     VARCHAR2,
130    X_MSG_COUNT			OUT NOCOPY     NUMBER,
131    X_MSG_DATA			OUT NOCOPY     VARCHAR2) IS
132 
133    l_return_status      varchar2(1);
134    l_api_name           varchar2(30) := 'GET_CONTRACT_LINES';
135    l_inp_rec            OKS_ENTITLEMENTS_PUB.get_contin_rec;
136    G_PKG_NAME           CONSTANT VARCHAR2(30) := 'CS_Est_Apply_Contract_PKG';
137 
138    L_CONTTAB CONTTAB;
139    l_rec_count  number;
140    i  number := 0;
141    j  number := 0;
142 
143 BEGIN
144 
145    SAVEPOINT Get_contract_lines;
146 
147    -- Since the Entitlements API expects input parameters as a record
148    -- copy all the input parameter values into a record before passing
149    -- it to the API
150 
151    l_inp_rec.party_id := p_customer_id;
152    l_inp_rec.cust_acct_id := p_customer_account_id;
153    l_inp_rec.service_line_id := p_service_line_id;
154    l_inp_rec.system_id := p_system_id;  -- Fix bug 3040124
155    l_inp_rec.item_id := p_inventory_item_id;  -- Fix bug 3040124
156    l_inp_rec.product_id := p_customer_product_id;
157    l_inp_rec.request_date := p_request_date;
158    l_inp_rec.business_process_id := p_business_process_id;
159    l_inp_rec.calc_resptime_flag := p_calc_resptime_flag;
160    l_inp_rec.validate_flag := p_validate_flag;
161 
162    --If Validate_flag is 'Y' then only the valid contracts as of
163    -- 'request_date' are returned. If the validate_flag is 'N' then
164    -- all the contract lines - valid and invalid- are returned.
165    -- Charges is passing validate flag as 'Y'.
166 
167    OKS_ENTITLEMENTS_PUB.GET_CONTRACTS(
168       p_api_version => p_api_version,
169       p_init_msg_list => p_init_msg_list,
170       p_inp_rec => l_inp_rec,
171       x_return_status => l_return_status,
172       x_msg_count => x_msg_count,
173       x_msg_data => x_msg_data,
174       x_ent_contracts => x_ent_contracts);
175 
176    IF (l_return_status = FND_API.G_RET_STS_ERROR ) THEN
177       RAISE FND_API.G_EXC_ERROR ;
178    ELSIF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
179       RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
180    END IF ;
181    x_return_status := l_return_status;
182 
183    EXCEPTION
184       WHEN FND_API.G_EXC_ERROR THEN
185          ROLLBACK TO  Get_contract_lines;
186          x_return_status := FND_API.G_RET_STS_ERROR ;
187          FND_MSG_PUB.COUNT_AND_GET (p_count =>x_msg_count ,
188                                     p_data => x_msg_data ,
189                                     p_encoded => fnd_api.g_false );
190 
191       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
192          ROLLBACK TO  Get_contract_lines;
193          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
194          FND_MSG_PUB.COUNT_AND_GET (p_count =>x_msg_count ,
195                                     p_data => x_msg_data ,
196                                     p_encoded => fnd_api.g_false );
197 
198       WHEN OTHERS THEN
199          ROLLBACK TO  Get_contract_lines;
200          x_return_status := FND_API.G_RET_STS_unexp_error ;
201          IF fnd_msg_pub.check_msg_level ( fnd_msg_pub.g_msg_lvl_unexp_error ) THEN
202             fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name ) ;
203          END IF;
204          fnd_msg_pub.count_and_get ( p_count =>x_msg_count ,p_data => x_msg_data ,p_encoded => fnd_api.g_false );
205 
206 END Get_Contract_Lines;
207 
208 END  CS_Est_Apply_Contract_PKG;