@@ -268,21 +268,22 @@ BEGIN
268268 UPDATE tblClaimItems SET tblClaimItems .RejectionReason = 2
269269 FROM dbo .tblClaimItems
270270 LEFT OUTER JOIN
271- (SELECT tblPLItemsDetail .ItemID
272- FROM tblHF INNER JOIN
273- tblPLItems ON tblHF .PLItemID = tblPLItems .PLItemID INNER JOIN
274- tblPLItemsDetail ON tblPLItems . PLItemID = tblPLItemsDetail .PLItemID
275- WHERE ( tblHF .HfID = @HFID) AND ( tblPLItems . ValidityTo IS NULL ) AND ( tblPLItemsDetail . ValidityTo IS NULL ) ) PLItems
271+ (SELECT tblPLItemsDetail .ItemID
272+ FROM tblHF
273+ INNER JOIN tblPLItemsDetail ON tblHF .PLItemID = tblPLItemsDetail .PLItemID
274+ AND @TargetDate BETWEEN tblPLItemsDetail . ValidityFrom AND ISNULL ( tblPLItemsDetail .ValidityTo , GETDATE ())
275+ WHERE tblHF .HFID = @HFID) PLItems
276276 ON tblClaimItems .ItemID = PLItems .ItemID
277277 WHERE tblClaimItems .ClaimID = @ClaimID AND tblClaimItems .ValidityTo IS NULL AND PLItems .ItemID IS NULL
278278
279279 UPDATE tblClaimServices SET tblClaimServices .RejectionReason = 2
280280 FROM dbo .tblClaimServices
281281 LEFT OUTER JOIN
282- (SELECT tblPLServicesDetail .ServiceID
283- FROM tblHF INNER JOIN
284- tblPLServicesDetail ON tblHF .PLServiceID = tblPLServicesDetail .PLServiceID
285- WHERE (tblHF .HfID = @HFID) AND (tblPLServicesDetail .ValidityTo IS NULL ) AND (tblPLServicesDetail .ValidityTo IS NULL )) PLServices
282+ (SELECT tblPLServicesDetail .ServiceID
283+ FROM tblHF
284+ INNER JOIN tblPLServicesDetail ON tblHF .PLServiceID = tblPLServicesDetail .PLServiceID
285+ AND @TargetDate BETWEEN tblPLServicesDetail .ValidityFrom AND ISNULL (tblPLServicesDetail .ValidityTo , GETDATE ())
286+ WHERE tblHF .HfID = @HFID) PLServices
286287 ON tblClaimServices .ServiceID = PLServices .ServiceID
287288 WHERE tblClaimServices .ClaimID = @ClaimID AND tblClaimServices .ValidityTo IS NULL AND PLServices .ServiceID IS NULL
288289
@@ -333,28 +334,44 @@ BEGIN
333334 IF @Adult = 1
334335 DECLARE PRODSERVICELOOP CURSOR LOCAL FORWARD_ONLY FOR
335336 SELECT TblProduct .ProdID , tblProductServices .ProdServiceID , tblInsureePolicy .EffectiveDate , tblPolicy .EffectiveDate , tblInsureePolicy .ExpiryDate , tblPolicy .PolicyStage
336- FROM tblFamilies INNER JOIN
337- tblPolicy ON tblFamilies .FamilyID = tblPolicy .FamilyID INNER JOIN
338- tblProduct ON tblPolicy .ProdID = tblProduct .ProdID INNER JOIN
339- tblProductServices ON tblProduct .ProdID = tblProductServices .ProdID INNER JOIN
340- tblInsureePolicy ON tblPolicy .PolicyID = tblInsureePolicy .PolicyId
341- WHERE (tblPolicy .EffectiveDate <= @TargetDate) AND (tblPolicy .ExpiryDate >= @TargetDate) AND (tblPolicy .ValidityTo IS NULL ) AND (tblProductServices .ValidityTo IS NULL ) AND
342- (tblPolicy .PolicyStatus = 2 OR tblPolicy .PolicyStatus = 8 ) AND (tblProductServices .ServiceID = @ServiceID) AND (tblFamilies .FamilyID = @FamilyID) AND (tblProduct .ValidityTo IS NULL ) AND
343- (tblInsureePolicy .EffectiveDate <= @TargetDate) AND (tblInsureePolicy .ExpiryDate >= @TargetDate) AND (tblInsureePolicy .InsureeId = @InsureeID) AND
344- (tblInsureePolicy .ValidityTo IS NULL )
337+ FROM tblFamilies
338+ INNER JOIN tblPolicy ON tblFamilies .FamilyID = tblPolicy .FamilyID
339+ INNER JOIN tblProduct ON tblPolicy .ProdID = tblProduct .ProdID
340+ INNER JOIN tblProductServices ON tblProduct .ProdID = tblProductServices .ProdID
341+ AND @TargetDate BETWEEN tblProductServices .ValidityFrom AND ISNULL (tblProductServices .ValidityTo , GETDATE ())
342+ INNER JOIN tblInsureePolicy ON tblPolicy .PolicyID = tblInsureePolicy .PolicyId
343+ WHERE tblPolicy .EffectiveDate <= @TargetDate
344+ AND tblPolicy .ExpiryDate >= @TargetDate
345+ AND tblPolicy .ValidityTo IS NULL
346+ AND (tblPolicy .PolicyStatus = 2 OR tblPolicy .PolicyStatus = 8 )
347+ AND tblProductServices .ServiceID = @ServiceID
348+ AND tblFamilies .FamilyID = @FamilyID
349+ AND tblProduct .ValidityTo IS NULL
350+ AND tblInsureePolicy .EffectiveDate <= @TargetDate
351+ AND tblInsureePolicy .ExpiryDate >= @TargetDate
352+ AND tblInsureePolicy .InsureeId = @InsureeID
353+ AND tblInsureePolicy .ValidityTo IS NULL
345354 ORDER BY DATEADD (m,ISNULL (tblProductServices .WaitingPeriodAdult , 0 ), tblInsureePolicy .EffectiveDate )
346355 ELSE
347356 DECLARE PRODSERVICELOOP CURSOR LOCAL FORWARD_ONLY FOR
348357 SELECT TblProduct .ProdID , tblProductServices .ProdServiceID , tblInsureePolicy .EffectiveDate , tblPolicy .EffectiveDate , tblInsureePolicy .ExpiryDate , tblPolicy .PolicyStage
349- FROM tblFamilies INNER JOIN
350- tblPolicy ON tblFamilies .FamilyID = tblPolicy .FamilyID INNER JOIN
351- tblProduct ON tblPolicy .ProdID = tblProduct .ProdID INNER JOIN
352- tblProductServices ON tblProduct .ProdID = tblProductServices .ProdID INNER JOIN
353- tblInsureePolicy ON tblPolicy .PolicyID = tblInsureePolicy .PolicyId
354- WHERE (tblPolicy .EffectiveDate <= @TargetDate) AND (tblPolicy .ExpiryDate >= @TargetDate) AND (tblPolicy .ValidityTo IS NULL ) AND (tblProductServices .ValidityTo IS NULL ) AND
355- (tblPolicy .PolicyStatus = 2 OR tblPolicy .PolicyStatus = 8 ) AND (tblProductServices .ServiceID = @ServiceID) AND (tblFamilies .FamilyID = @FamilyID) AND (tblProduct .ValidityTo IS NULL ) AND
356- (tblInsureePolicy .EffectiveDate <= @TargetDate) AND (tblInsureePolicy .ExpiryDate >= @TargetDate) AND (tblInsureePolicy .InsureeId = @InsureeID) AND
357- (tblInsureePolicy .ValidityTo IS NULL )
358+ FROM tblFamilies
359+ INNER JOIN tblPolicy ON tblFamilies .FamilyID = tblPolicy .FamilyID
360+ INNER JOIN tblProduct ON tblPolicy .ProdID = tblProduct .ProdID
361+ INNER JOIN tblProductServices ON tblProduct .ProdID = tblProductServices .ProdID
362+ AND @TargetDate BETWEEN tblProductServices .ValidityFrom AND ISNULL (tblProductServices .ValidityTo , GETDATE ())
363+ INNER JOIN tblInsureePolicy ON tblPolicy .PolicyID = tblInsureePolicy .PolicyId
364+ WHERE tblPolicy .EffectiveDate <= @TargetDate
365+ AND tblPolicy .ExpiryDate >= @TargetDate
366+ AND tblPolicy .ValidityTo IS NULL
367+ AND (tblPolicy .PolicyStatus = 2 OR tblPolicy .PolicyStatus = 8 )
368+ AND tblProductServices .ServiceID = @ServiceID
369+ AND tblFamilies .FamilyID = @FamilyID
370+ AND tblProduct .ValidityTo IS NULL
371+ AND tblInsureePolicy .EffectiveDate <= @TargetDate
372+ AND tblInsureePolicy .ExpiryDate >= @TargetDate
373+ AND tblInsureePolicy .InsureeId = @InsureeID
374+ AND tblInsureePolicy .ValidityTo IS NULL
358375 ORDER BY DATEADD (m,ISNULL (tblProductServices .WaitingPeriodChild , 0 ), tblInsureePolicy .EffectiveDate )
359376
360377
@@ -703,28 +720,45 @@ BEGIN
703720 IF @Adult = 1
704721 DECLARE PRODITEMLOOP CURSOR LOCAL FORWARD_ONLY FOR
705722 SELECT TblProduct .ProdID , tblProductItems .ProdItemID , tblInsureePolicy .EffectiveDate , tblPolicy .EffectiveDate , tblInsureePolicy .ExpiryDate , tblPolicy .PolicyStage
706- FROM tblFamilies INNER JOIN
707- tblPolicy ON tblFamilies .FamilyID = tblPolicy .FamilyID INNER JOIN
708- tblProduct ON tblPolicy .ProdID = tblProduct .ProdID INNER JOIN
709- tblProductItems ON tblProduct .ProdID = tblProductItems .ProdID INNER JOIN
710- tblInsureePolicy ON tblPolicy .PolicyID = tblInsureePolicy .PolicyId
711- WHERE (tblPolicy .EffectiveDate <= @TargetDate) AND (tblPolicy .ExpiryDate >= @TargetDate) AND (tblPolicy .ValidityTo IS NULL ) AND (tblProductItems .ValidityTo IS NULL ) AND
712- (tblPolicy .PolicyStatus = 2 OR tblPolicy .PolicyStatus = 8 ) AND (tblProductItems .ItemID = @ItemID) AND (tblFamilies .FamilyID = @FamilyID) AND (tblProduct .ValidityTo IS NULL ) AND
713- (tblInsureePolicy .EffectiveDate <= @TargetDate) AND (tblInsureePolicy .ExpiryDate >= @TargetDate) AND (tblInsureePolicy .InsureeId = @InsureeID) AND
714- (tblInsureePolicy .ValidityTo IS NULL )
723+ FROM tblFamilies
724+ INNER JOIN tblPolicy ON tblFamilies .FamilyID = tblPolicy .FamilyID
725+ INNER JOIN tblProduct ON tblPolicy .ProdID = tblProduct .ProdID
726+ INNER JOIN tblProductItems ON tblProduct .ProdID = tblProductItems .ProdID
727+ AND @TargetDate BETWEEN tblProductItems .ValidityFrom AND ISNULL (tblProductItems .ValidityTo , GETDATE ())
728+ INNER JOIN tblInsureePolicy ON tblPolicy .PolicyID = tblInsureePolicy .PolicyId
729+ WHERE tblPolicy .EffectiveDate <= @TargetDate
730+ AND tblPolicy .ExpiryDate >= @TargetDate
731+ AND tblPolicy .ValidityTo IS NULL
732+ -- AND tblProductItems.ValidityTo IS NULL
733+ AND (tblPolicy .PolicyStatus = 2 OR tblPolicy .PolicyStatus = 8 )
734+ AND tblProductItems .ItemID = @ItemID
735+ AND tblFamilies .FamilyID = @FamilyID
736+ AND tblProduct .ValidityTo IS NULL
737+ AND tblInsureePolicy .EffectiveDate <= @TargetDate
738+ AND tblInsureePolicy .ExpiryDate >= @TargetDate
739+ AND tblInsureePolicy .InsureeId = @InsureeID
740+ AND tblInsureePolicy .ValidityTo IS NULL
715741 ORDER BY DATEADD (m,ISNULL (tblProductItems .WaitingPeriodAdult , 0 ), tblInsureePolicy .EffectiveDate )
716742 ELSE
717743 DECLARE PRODITEMLOOP CURSOR LOCAL FORWARD_ONLY FOR
718744 SELECT TblProduct .ProdID , tblProductItems .ProdItemID , tblInsureePolicy .EffectiveDate , tblPolicy .EffectiveDate , tblInsureePolicy .ExpiryDate , tblPolicy .PolicyStage
719- FROM tblFamilies INNER JOIN
720- tblPolicy ON tblFamilies .FamilyID = tblPolicy .FamilyID INNER JOIN
721- tblProduct ON tblPolicy .ProdID = tblProduct .ProdID INNER JOIN
722- tblProductItems ON tblProduct .ProdID = tblProductItems .ProdID INNER JOIN
723- tblInsureePolicy ON tblPolicy .PolicyID = tblInsureePolicy .PolicyId
724- WHERE (tblPolicy .EffectiveDate <= @TargetDate) AND (tblPolicy .ExpiryDate >= @TargetDate) AND (tblPolicy .ValidityTo IS NULL ) AND (tblProductItems .ValidityTo IS NULL ) AND
725- (tblPolicy .PolicyStatus = 2 OR tblPolicy .PolicyStatus = 8 ) AND (tblProductItems .ItemID = @ItemID) AND (tblFamilies .FamilyID = @FamilyID) AND (tblProduct .ValidityTo IS NULL ) AND
726- (tblInsureePolicy .EffectiveDate <= @TargetDate) AND (tblInsureePolicy .ExpiryDate >= @TargetDate) AND (tblInsureePolicy .InsureeId = @InsureeID) AND
727- (tblInsureePolicy .ValidityTo IS NULL )
745+ FROM tblFamilies
746+ INNER JOIN tblPolicy ON tblFamilies .FamilyID = tblPolicy .FamilyID
747+ INNER JOIN tblProduct ON tblPolicy .ProdID = tblProduct .ProdID
748+ INNER JOIN tblProductItems ON tblProduct .ProdID = tblProductItems .ProdID
749+ AND @TargetDate BETWEEN tblProductItems .ValidityFrom AND ISNULL (tblProductItems .ValidityTo , GETDATE ())
750+ INNER JOIN tblInsureePolicy ON tblPolicy .PolicyID = tblInsureePolicy .PolicyId
751+ WHERE tblPolicy .EffectiveDate <= @TargetDate
752+ AND tblPolicy .ExpiryDate >= @TargetDate
753+ AND tblPolicy .ValidityTo IS NULL
754+ AND (tblPolicy .PolicyStatus = 2 OR tblPolicy .PolicyStatus = 8 )
755+ AND tblProductItems .ItemID = @ItemID
756+ AND tblFamilies .FamilyID = @FamilyID
757+ AND (tblProduct .ValidityTo IS NULL )
758+ AND tblInsureePolicy .EffectiveDate <= @TargetDate
759+ AND tblInsureePolicy .ExpiryDate >= @TargetDate
760+ AND tblInsureePolicy .InsureeId = @InsureeID
761+ AND tblInsureePolicy .ValidityTo IS NULL
728762 ORDER BY DATEADD (m,ISNULL (tblProductItems .WaitingPeriodChild , 0 ), tblInsureePolicy .EffectiveDate )
729763
730764
0 commit comments