Skip to content

Commit 27ea421

Browse files
committed
RFC-120
1 parent 514824c commit 27ea421

4 files changed

Lines changed: 56 additions & 38 deletions

File tree

sql/stored_procedures/uspInsertIndexMonthly.sql

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,40 +23,52 @@ BEGIN TRY
2323
DECLARE @ClaimValueItems as decimal(18,2)
2424
DECLARE @ClaimValueservices as decimal(18,2)
2525
DECLARE @CI as varchar(1)
26-
SELECT @CI = ISNULL(CeilingInterpretation,'H') FROM tblProduct WHERE ProdID = @ProductID
26+
DECLARE @Level1 Char(1), @SubLevel1 Char(1), @Level2 Char(1), @SubLevel2 Char(1), @Level3 Char(1), @SubLevel3 Char(1), @Level4 Char(1), @SubLevel4 Char(1)
27+
28+
SELECT @CI = ISNULL(CeilingInterpretation,'H'), @Level1 = Level1 , @SubLevel1 = SubLevel1 , @Level2 = Level2 , @SubLevel2 = SubLevel2 , @Level3 = Level3 , @SubLevel3 = SubLevel3 , @Level4 = Level4 , @SubLevel4 = SubLevel4 FROM tblProduct WHERE ProdID = @ProductID
2729
DECLARE @RtnStatus int = 1
2830
SELECT @DistrPerc = ISNULL(DistrPerc,1) FROM dbo.tblRelDistr WHERE ProdID = @ProductID AND Period = @Period AND DistrType = @RelType AND DistrCareType = @Type AND ValidityTo IS NULL
2931

3032
-- sum of item value
3133
SELECT @ClaimValueItems = SUM(ISNULL(d.PriceValuated,0) )
3234
FROM tblClaimItems d
3335
INNER JOIN tblClaim c ON c.ClaimID = d.ClaimID AND (c.ValidityTo IS NULL)
34-
INNER JOIN tblHF ON c.HFID = tblHF.HfID
36+
INNER JOIN tblHF HF ON c.HFID = HF.HfID
3537
WHERE (d.ClaimItemStatus = 1) and d.PriceOrigin = 'R'
3638
AND (d.ValidityTo IS NULL) and ClaimStatus = 8
3739
AND (d.ProdID = @ProductID)
3840
AND(
3941
(@TYPE = 'B' and (c.ProcessStamp BETWEEN @startDate AND @endDate) )
4042
OR (@TYPE = 'I' and (c.ProcessStamp BETWEEN @startDate AND @endDate) AND
41-
CASE WHEN @CI='H' THEN tblHF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END = 'H')
43+
CASE WHEN @CI='H' THEN HF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END = 'H')
4244
OR (@TYPE = 'O' and (c.ProcessStamp BETWEEN @startDate AND @endDate) AND
43-
CASE WHEN @CI='H' THEN tblHF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END <> 'H')
44-
)
45+
CASE WHEN @CI='H' THEN HF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END <> 'H')
46+
)AND NOT (
47+
((HF.HFLevel = @Level1) AND (HF.HFSublevel = @SubLevel1 OR @SubLevel1 IS NULL))
48+
OR ((HF.HFLevel = @Level2 ) AND (HF.HFSublevel = @SubLevel2 OR @SubLevel2 IS NULL))
49+
OR ((HF.HFLevel = @Level3) AND (HF.HFSublevel = @SubLevel3 OR @SubLevel3 IS NULL))
50+
OR ((HF.HFLevel = @Level4) AND (HF.HFSublevel = @SubLevel4 OR @SubLevel4 IS NULL))
51+
)
4552
-- sum of service value
4653
SELECT @ClaimValueservices = SUM(ISNULL(d.PriceValuated,0) )
4754
FROM tblClaimServices d
4855
INNER JOIN tblClaim c ON c.ClaimID = d.ClaimID AND (c.ValidityTo IS NULL)
49-
INNER JOIN tblHF ON c.HFID = tblHF.HfID
56+
INNER JOIN tblHF HF ON c.HFID = HF.HfID
5057
WHERE (d.ClaimServiceStatus = 1) and d.PriceOrigin = 'R'
5158
AND (d.ValidityTo IS NULL) and ClaimStatus = 8
5259
AND (d.ProdID = @ProductID)
5360
AND(
5461
(@TYPE = 'B' and (c.ProcessStamp BETWEEN @startDate AND @endDate) )
5562
OR (@TYPE = 'I' and (c.ProcessStamp BETWEEN @startDate AND @endDate) AND
56-
CASE WHEN @CI='H' THEN tblHF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END = 'H')
63+
CASE WHEN @CI='H' THEN HF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END = 'H')
5764
OR (@TYPE = 'O' and (c.ProcessStamp BETWEEN @startDate AND @endDate) AND
58-
CASE WHEN @CI='H' THEN tblHF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END <> 'H')
59-
)
65+
CASE WHEN @CI='H' THEN HF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END <> 'H')
66+
)AND NOT (
67+
((HF.HFLevel = @Level1) AND (HF.HFSublevel = @SubLevel1 OR @SubLevel1 IS NULL))
68+
OR ((HF.HFLevel = @Level2 ) AND (HF.HFSublevel = @SubLevel2 OR @SubLevel2 IS NULL))
69+
OR ((HF.HFLevel = @Level3) AND (HF.HFSublevel = @SubLevel3 OR @SubLevel3 IS NULL))
70+
OR ((HF.HFLevel = @Level4) AND (HF.HFSublevel = @SubLevel4 OR @SubLevel4 IS NULL))
71+
)
6072

6173
SET @ClaimValueItems =ISNULL(@ClaimValueItems,0)
6274
SET @ClaimValueservices =ISNULL( @ClaimValueservices,0)

sql/stored_procedures/uspProcessbatch.sql

Lines changed: 33 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ BEGIN
4747
DECLARE @Index as decimal(18,4)
4848
DECLARE @IndexIP as decimal(18,4)
4949

50+
DECLARE @Level1 Char(1), @SubLevel1 Char(1), @Level2 Char(1), @SubLevel2 Char(1), @Level3 Char(1), @SubLevel3 Char(1), @Level4 Char(1), @SubLevel4 Char(1)
5051

5152
DECLARE @tblClaimIDs TABLE(ClaimID INT)
5253
DECLARE @Months TABLE(monthnbr INT)
@@ -57,12 +58,12 @@ BEGIN
5758
DECLARE @endDate date = EOMONTH(@startDateMonth)
5859

5960

60-
if @endDate > GETDATE()
61-
BEGIN
62-
SELECT 'End report date must be before today'
63-
SET @oReturnValue = 2
64-
RETURN @oReturnValue
65-
END
61+
-- if @endDate > GETDATE()
62+
-- BEGIN
63+
-- SELECT 'End report date must be before today'
64+
-- SET @oReturnValue = 2
65+
-- RETURN @oReturnValue
66+
-- END
6667
-- check if already run
6768
SELECT @RP_Period = RunMonth FROM tblBatchRun WHERE RunYear = @Year AND RunMonth = @Period AND ISNULL(LocationId,-1) = ISNULL(@LocationId,-1) AND ValidityTo IS NULL
6869
IF ISNULL(@RP_Period,0) <> 0
@@ -83,9 +84,9 @@ BEGIN
8384

8485
-- loop all product for that location
8586
DECLARE PRODUCTLOOPITEMS CURSOR LOCAL FORWARD_ONLY FOR
86-
SELECT prodID, PeriodRelPrices , PeriodRelPricesOP, PeriodRelPricesIP, CeilingInterpretation FROM tblProduct WHERE ValidityTo is NULL AND ISNULL(tblProduct.LocationId,-1) = ISNULL(@LocationId,-1)
87+
SELECT prodID, PeriodRelPrices , PeriodRelPricesOP, PeriodRelPricesIP, CeilingInterpretation, Level1 , SubLevel1 , Level2 , SubLevel2 , Level3 , SubLevel3 , Level4 , SubLevel4 FROM tblProduct WHERE ValidityTo is NULL AND ISNULL(tblProduct.LocationId,-1) = ISNULL(@LocationId,-1)
8788
OPEN PRODUCTLOOPITEMS
88-
FETCH NEXT FROM PRODUCTLOOPITEMS INTO @ProdID,@RP_G,@RP_OP,@RP_IP,@CI
89+
FETCH NEXT FROM PRODUCTLOOPITEMS INTO @ProdID,@RP_G,@RP_OP,@RP_IP,@CI, @Level1 , @SubLevel1 , @Level2 , @SubLevel2 , @Level3 , @SubLevel3 , @Level4 , @SubLevel4
8990
WHILE @@FETCH_STATUS = 0
9091
BEGIN
9192
-- calculate the diferent start/stop dates
@@ -152,42 +153,52 @@ BEGIN
152153
BEGIN
153154
UPDATE d SET RemuneratedAmount = CAST(
154155
CASE WHEN d.PriceOrigin <> 'R' THEN 1.0
155-
WHEN (CASE WHEN @CI='H' THEN tblHF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END) <>'H' THEN @Index
156+
WHEN (CASE WHEN @CI='H' THEN HF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END) <>'H' THEN @Index
156157
ELSE @IndexIP END
157158
as decimal(18, 4)) * isnull(d.PriceValuated, ISNULL(PriceApproved, PriceAdjusted) * isnull(QtyApproved,QtyProvided))
158159
FROM tblClaimItems d
159160
INNER JOIN tblClaim c ON c.ClaimID = d.ClaimID AND (c.ValidityTo IS NULL)
160-
INNER JOIN tblHF ON c.HFID = tblHF.HfID
161+
INNER JOIN tblHF HF ON c.HFID = HF.HfID
161162
WHERE (d.ClaimItemStatus = 1)
162163
AND (d.ValidityTo IS NULL)
163164
AND (d.ProdID = @ProdID)
164165
AND(
165166
(@startDate is not NULL and (c.ProcessStamp BETWEEN @startDate AND @endDate) )
166167
OR (@startDateIP is not NULL and (c.ProcessStamp BETWEEN @startDateIP AND @endDate) AND
167-
CASE WHEN @CI='H' THEN tblHF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END = 'H')
168+
CASE WHEN @CI='H' THEN HF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END = 'H')
168169
OR (@startDateOP is not NULL and (c.ProcessStamp BETWEEN @startDateOP AND @endDate) AND
169-
CASE WHEN @CI='H' THEN tblHF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END <> 'H')
170-
)
170+
CASE WHEN @CI='H' THEN HF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END <> 'H')
171+
)AND NOT (
172+
((HF.HFLevel = @Level1) AND (HF.HFSublevel = @SubLevel1 OR @SubLevel1 IS NULL))
173+
OR ((HF.HFLevel = @Level2 ) AND (HF.HFSublevel = @SubLevel2 OR @SubLevel2 IS NULL))
174+
OR ((HF.HFLevel = @Level3) AND (HF.HFSublevel = @SubLevel3 OR @SubLevel3 IS NULL))
175+
OR ((HF.HFLevel = @Level4) AND (HF.HFSublevel = @SubLevel4 OR @SubLevel4 IS NULL))
176+
)
171177

172178

173179
UPDATE d SET RemuneratedAmount = CAST(
174180
CASE WHEN d.PriceOrigin <> 'R' THEN 1.0
175-
WHEN (CASE WHEN @CI='H' THEN tblHF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END) <>'H' THEN @Index
181+
WHEN (CASE WHEN @CI='H' THEN HF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END) <>'H' THEN @Index
176182
ELSE @IndexIP END
177183
as decimal(18, 4)) * isnull(d.PriceValuated, ISNULL(PriceApproved, PriceAdjusted) * isnull(QtyApproved,QtyProvided))
178184
FROM tblClaimServices d
179185
INNER JOIN tblClaim c ON c.ClaimID = d.ClaimID AND (c.ValidityTo IS NULL)
180-
INNER JOIN tblHF ON c.HFID = tblHF.HfID
186+
INNER JOIN tblHF HF ON c.HFID = HF.HfID
181187
WHERE (d.ClaimServiceStatus = 1)
182188
AND (d.ValidityTo IS NULL)
183189
AND (d.ProdID = @ProdID)
184190
AND(
185191
(@startDate is not NULL and (c.ProcessStamp BETWEEN @startDate AND @endDate) )
186192
OR (@startDateIP is not NULL and (c.ProcessStamp BETWEEN @startDateIP AND @endDate) AND
187-
CASE WHEN @CI='H' THEN tblHF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END = 'H')
193+
CASE WHEN @CI='H' THEN HF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END = 'H')
188194
OR (@startDateOP is not NULL and (c.ProcessStamp BETWEEN @startDateOP AND @endDate) AND
189-
CASE WHEN @CI='H' THEN tblHF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END <> 'H')
190-
)
195+
CASE WHEN @CI='H' THEN HF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END <> 'H')
196+
)AND NOT (
197+
((HF.HFLevel = @Level1) AND (HF.HFSublevel = @SubLevel1 OR @SubLevel1 IS NULL))
198+
OR ((HF.HFLevel = @Level2 ) AND (HF.HFSublevel = @SubLevel2 OR @SubLevel2 IS NULL))
199+
OR ((HF.HFLevel = @Level3) AND (HF.HFSublevel = @SubLevel3 OR @SubLevel3 IS NULL))
200+
OR ((HF.HFLevel = @Level4) AND (HF.HFSublevel = @SubLevel4 OR @SubLevel4 IS NULL))
201+
)
191202

192203

193204
END
@@ -210,7 +221,7 @@ BEGIN
210221
CASE WHEN @CI='H' THEN tblHF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END = 'H')
211222
OR (@startDateOP is not NULL and (c.ProcessStamp BETWEEN @startDateOP AND @endDate) AND
212223
CASE WHEN @CI='H' THEN tblHF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END <> 'H')
213-
)
224+
)
214225
UNION ALL
215226
SELECT c.ClaimID, ISNULL(RemuneratedAmount,0) RemuneratedAmount
216227
FROM tblClaimItems d
@@ -225,17 +236,12 @@ BEGIN
225236
CASE WHEN @CI='H' THEN tblHF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END = 'H')
226237
OR (@startDateOP is not NULL and (c.ProcessStamp BETWEEN @startDateOP AND @endDate) AND
227238
CASE WHEN @CI='H' THEN tblHF.HFLevel WHEN DATEDIFF(d,c.DateFrom,ISNULL(c.DateTo,c.DateFrom))<1 THEN 'D' ELSE 'H' END <> 'H')
228-
)
239+
)
229240
) as tolal GROUP BY claimID
230241
) as CDetails on c.ClaimID = CDetails.ClaimID
231-
232-
233-
234-
235-
236-
242+
237243
NextProdItems:
238-
FETCH NEXT FROM PRODUCTLOOPITEMS INTO @ProdID,@RP_G,@RP_OP,@RP_IP,@CI
244+
FETCH NEXT FROM PRODUCTLOOPITEMS INTO @ProdID,@RP_G,@RP_OP,@RP_IP,@CI, @Level1 , @SubLevel1 , @Level2 , @SubLevel2 , @Level3 , @SubLevel3 , @Level4 , @SubLevel4
239245
END
240246
CLOSE PRODUCTLOOPITEMS
241247
DEALLOCATE PRODUCTLOOPITEMS

sql/stored_procedures/uspSSRSProcessBatch.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ CREATE PROCEDURE [dbo].[uspSSRSProcessBatch]
7373
FROM (values ('H'), ('C'), ('D')) v(HFLevel)
7474
JOIN tblHFSublevel on 1=1
7575
INNER JOIN tblProduct Prod on prodid = @ProdID
76-
AND (
76+
AND NOT (
7777
((HF.HFLevel = prod.Level1) AND (HF.HFSublevel = Prod.SubLevel1 OR Prod.SubLevel1 IS NULL))
7878
OR ((HF.HFLevel = Prod.Level2 ) AND (HF.HFSublevel = Prod.SubLevel2 OR Prod.SubLevel2 IS NULL))
7979
OR ((HF.HFLevel = Prod.Level3) AND (HF.HFSublevel = Prod.SubLevel3 OR Prod.SubLevel3 IS NULL))

sql/stored_procedures/uspSSRSProcessBatchWithClaim.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ CREATE PROCEDURE [dbo].[uspSSRSProcessBatchWithClaim]
7676
FROM (values ('H'), ('C'), ('D')) v(HFLevel)
7777
JOIN tblHFSublevel on 1=1
7878
INNER JOIN tblProduct Prod on prodid = @ProdID
79-
and (
79+
and NOT (
8080
((HF.HFLevel = prod.Level1) AND (HF.HFSublevel = Prod.SubLevel1 OR Prod.SubLevel1 IS NULL))
8181
OR ((HF.HFLevel = Prod.Level2 ) AND (HF.HFSublevel = Prod.SubLevel2 OR Prod.SubLevel2 IS NULL))
8282
OR ((HF.HFLevel = Prod.Level3) AND (HF.HFSublevel = Prod.SubLevel3 OR Prod.SubLevel3 IS NULL))

0 commit comments

Comments
 (0)