@@ -648,6 +648,56 @@ CREATE PROCEDURE [dbo].[uspConsumeEnrollments](
648648 AND PR .PolicyID = TPR .NewPolicyId
649649 WHERE PR .ValidityTo IS NULL
650650 AND TP .isOffline = 0
651+
652+
653+ /* *******************************************************************************************************
654+ CHECK IF SOME INSUREE ARE ABOUT TO DELETE FROM FAMILY
655+ ********************************************************************************************************/
656+
657+ -- get the family id to process from online database
658+ DECLARE @familyIdToProcess TABLE (FamilyId INT )
659+ INSERT INTO @familyIdToProcess(FamilyId)
660+ SELECT I .FamilyId
661+ FROM @tblInsuree TI
662+ INNER JOIN tblInsuree I ON TI .CHFID = I .CHFID
663+ WHERE I .ValidityTo IS NULL AND TI .isOffline = 1
664+ GROUP BY I .FamilyID
665+
666+ -- get to compare the structure of families (list of insuree) from online database
667+ DECLARE @insureeToProcess TABLE (CHFID NVARCHAR (12 ), FamilyID INT )
668+ INSERT INTO @insureeToProcess(CHFID, FamilyID)
669+ SELECT I .CHFID , F .FamilyID FROM tblInsuree I
670+ LEFT JOIN tblFamilies F ON I .FamilyID = F .FamilyID
671+ WHERE F .FamilyID IN (SELECT * FROM @familyIdToProcess) AND I .ValidityTo is NULL
672+ GROUP BY I .CHFID , F .FamilyID
673+
674+ -- select the insuree to delete based on received XML payload
675+ -- get the insuree which are not included in "insureeToProcess"
676+ DECLARE @insureeToDelete TABLE (CHFID NVARCHAR (12 ))
677+ INSERT INTO @insureeToDelete(CHFID)
678+ SELECT IP .CHFID FROM @insureeToProcess IP
679+ LEFT JOIN @tblInsuree I ON I .CHFID = IP .CHFID
680+ WHERE I .CHFID is NULL
681+
682+ -- iterate through insuree to delete - process them to remove from existing family
683+ -- use SP uspAPIDeleteMemberFamily and 'delete' InsureePolicy also like in webapp
684+ IF EXISTS (SELECT 1 FROM @insureeToDelete)
685+ BEGIN
686+ DECLARE @CurInsureeCHFID NVARCHAR (12 )
687+ DECLARE CurInsuree CURSOR FOR SELECT CHFID FROM @insureeToDelete
688+ OPEN CurInsuree
689+ FETCH NEXT FROM CurInsuree INTO @CurInsureeCHFID;
690+ WHILE @@FETCH_STATUS = 0
691+ BEGIN
692+ DECLARE @currentInsureeId INT
693+ SET @currentInsureeId = (SELECT InsureeID FROM tblInsuree WHERE CHFID= @CurInsureeCHFID AND ValidityTo is NULL )
694+ EXEC uspAPIDeleteMemberFamily - 2 , @CurInsureeCHFID
695+ UPDATE tblInsureePolicy SET ValidityTo = GETDATE () WHERE InsureeId = @currentInsureeId
696+ FETCH NEXT FROM CurInsuree INTO @CurInsureeCHFID;
697+ END
698+ CLOSE CurInsuree
699+ DEALLOCATE CurInsuree;
700+ END
651701
652702
653703 /* *******************************************************************************************************
0 commit comments