@@ -648,6 +648,62 @@ 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 CHFID
679+ FROM (
680+ SELECT CHFID FROM @insureeToProcess
681+ UNION ALL
682+ SELECT CHFID FROM @tblInsuree TI
683+ ) tbl
684+ GROUP BY CHFID
685+ HAVING count (* ) = 1
686+ ORDER BY CHFID;
687+
688+ -- iterate through insuree to delete - process them to remove from existing family
689+ -- use SP uspAPIDeleteMemberFamily and 'delete' InsureePolicy also like in webapp
690+ IF EXISTS (SELECT 1 FROM @insureeToDelete)
691+ BEGIN
692+ DECLARE @CurInsureeCHFID NVARCHAR (12 )
693+ DECLARE CurInsuree CURSOR FOR SELECT CHFID FROM @insureeToDelete
694+ OPEN CurInsuree
695+ FETCH NEXT FROM CurInsuree INTO @CurInsureeCHFID;
696+ WHILE @@FETCH_STATUS = 0
697+ BEGIN
698+ DECLARE @currentInsureeId INT
699+ SET @currentInsureeId = (SELECT InsureeID FROM tblInsuree WHERE CHFID= @CurInsureeCHFID AND ValidityTo is NULL )
700+ EXEC uspAPIDeleteMemberFamily - 2 , @CurInsureeCHFID
701+ UPDATE tblInsureePolicy SET ValidityTo = GETDATE () WHERE InsureeId = @currentInsureeId
702+ FETCH NEXT FROM CurInsuree INTO @CurInsureeCHFID;
703+ END
704+ CLOSE CurInsuree
705+ DEALLOCATE CurInsuree;
706+ END
651707
652708
653709 /* *******************************************************************************************************
0 commit comments