/// <summary> /// Zet de gegeven <paramref name="persoonsVerzekering"/> over naar Kipadmin. /// </summary> /// <param name="persoonsVerzekering">Over te zetten persoonsverzekering</param> /// <param name="gwj">Bepaalt werkJaar en groep die factuur zal krijgen</param> public void Bewaren(PersoonsVerzekering persoonsVerzekering, GroepsWerkJaar gwj) { Debug.Assert(persoonsVerzekering.Persoon.InSync); if (persoonsVerzekering.Persoon.AdNummer.HasValue) { bool gratis = persoonsVerzekering.Persoon.GelieerdePersoon.Any( gp => gp.Lid.Any(l => l.GroepsWerkJaar.ID == gwj.ID && _ledenManager.GratisAansluiting(l))); ServiceHelper.CallService <ISyncPersoonService>(svc => svc.LoonVerliesVerzekeren( persoonsVerzekering.Persoon.AdNummer.Value, gwj.Groep.Code, gwj.WerkJaar, gratis)); } else { // Verzekeren op basis van details. // Een verzekering loonverlies (de enige die we voorlopig ondersteunen) is // alleen mogelijk voor leden. Sinds gap 1.x ergens in het verleden, krijgen // probeerleden ook al een AD-nr. Dus mogen we ervanuit gaan dat het AD-nummer // al in aanvraag is. // Niet dat dat nog relevant is eigenlijk. var gelieerdePersoon = (from gp in persoonsVerzekering.Persoon.GelieerdePersoon where Equals(gp.Groep, gwj.Groep) select gp).Single(); bool gratis = gelieerdePersoon.Lid.Any(l => l.GroepsWerkJaar.ID == gwj.ID && _ledenManager.GratisAansluiting(l)); ServiceHelper.CallService <ISyncPersoonService>( svc => svc.LoonVerliesVerzekerenAdOnbekend(MappingHelper.Map <GelieerdePersoon, PersoonDetails>(gelieerdePersoon), gwj.Groep.Code, gwj.WerkJaar, gratis)); } }
/// <summary> /// Verzekert een lid /// </summary> /// <param name="l"> /// Te verzekeren lid, met daaraan gekoppeld alle verzekeringen /// </param> /// <param name="verz"> /// Type van de verzekering /// </param> /// <param name="beginDatum"> /// Begindatum van de verzekering; moet in de toekomst liggen. /// </param> /// <param name="eindDatum"> /// Einddatum van de verzekering /// </param> /// <returns> /// Het gecreeerde PersoonsVerzekringsobject. /// </returns> public PersoonsVerzekering Verzekeren(Lid l, VerzekeringsType verz, DateTime beginDatum, DateTime eindDatum) { if (!_autorisatieMgr.IsGav(l)) { throw new GeenGavException(); } if (beginDatum > eindDatum) { throw new FoutNummerException(FoutNummer.ChronologieFout, Resources.FouteDatumVolgorde); } if (beginDatum > DateTime.Now) { throw new FoutNummerException(FoutNummer.ChronologieFout, Resources.VerzekeringInVerleden); } if (verz.TotEindeWerkJaar && eindDatum != _groepsWerkJaarManager.EindDatum(l.GroepsWerkJaar)) { throw new FoutNummerException( FoutNummer.ValidatieFout, Resources.OngeldigeEindDatumVerzekering); } // Onderstaande controle op 'al bestaande' verzekering, gebeurt niet door de database, omdat // dit meer inhoudt dan een unique index/unique constraint. var query = from v in l.GelieerdePersoon.Persoon.PersoonsVerzekering where v.VerzekeringsType.ID == verz.ID && ((verz.TotEindeWerkJaar && v.Tot == eindDatum) // Een verzekering tot het einde van het jaar mag wat overlappen (met vorig jaar) zolang je er nog geen hebt voor dat jaar. || (!verz.TotEindeWerkJaar && (v.Tot > beginDatum && beginDatum >= v.Van || v.Van < eindDatum && eindDatum <= v.Tot))) // Anders laten we geen overlap toe. select v; var bestaande = query.FirstOrDefault(); if (bestaande != null) { throw new BlokkerendeObjectenException <PersoonsVerzekering>( bestaande, Resources.OverlappendeVerzekering); } var pv = new PersoonsVerzekering { Van = beginDatum, Tot = eindDatum, Persoon = l.GelieerdePersoon.Persoon, VerzekeringsType = verz }; l.GelieerdePersoon.Persoon.PersoonsVerzekering.Add(pv); verz.PersoonsVerzekering.Add(pv); return(pv); }
public void BewarenTest() { // ARRANGE var groepsWerkJaar = new GroepsWerkJaar { Groep = new ChiroGroep() }; var gelieerdePersoon = new GelieerdePersoon { Groep = groepsWerkJaar.Groep, Persoon = new Persoon { AdNummer = null, InSync = true, } }; gelieerdePersoon.Persoon.GelieerdePersoon.Add(gelieerdePersoon); groepsWerkJaar.Groep.GelieerdePersoon.Add(gelieerdePersoon); var persoonsVerzekering = new PersoonsVerzekering { Persoon = gelieerdePersoon.Persoon }; var kipSyncMock = new Mock <ISyncPersoonService>(); kipSyncMock.Setup( src => src.LoonVerliesVerzekerenAdOnbekend(It.IsAny <PersoonDetails>(), It.IsAny <string>(), It.IsAny <int>(), It.IsAny <bool>())).Verifiable(); Factory.InstantieRegistreren(kipSyncMock.Object); // ACT var target = Factory.Maak <VerzekeringenSync>(); target.Bewaren(persoonsVerzekering, groepsWerkJaar); // ASSERT kipSyncMock.VerifyAll(); }
public void Bewaren(PersoonsVerzekering persoonsVerzekering, GroepsWerkJaar gwj) { }