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
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+
237243NextProdItems:
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
0 commit comments