angular.module('fasit') .controller('KonstantEkonomiCtrl', ['$scope', 'domainService', 'maeklarObjektLaanService', '$filter', '$timeout', '$window', 'budService', 'instaellningarService', 'provisionService', '$rootScope', 'medarbetareService', 'personService', 'maeklarObjektLaanOchPantbrevService', 'maeklarObjektVillkorService', 'globalTimerService', 'sideDrawerService', 'dokumentService', 'maeklarObjektService', function ( $scope: fb.IKonstantEkonomiCtrlScope, domainService: fb.IDomainService, maeklarObjektLaanService: fb.IMaeklarObjektLaanService, $filter: ng.IFilterService, $timeout: ng.ITimeoutService, $window: ng.IWindowService, budService: fb.IBudService, instaellningarService: fb.IInstaellningarService, provisionService: fb.IProvisionService, $rootScope: fb.IRootScope, medarbetareService: fb.IMedarbetareService, personService: fb.IPersonService, maeklarObjektLaanOchPantbrevService: fb.IMaeklarObjektLaanOchPantbrevService, maeklarObjektVillkorService: fb.IMaeklarObjektVillkorService, globalTimerService: fb.IGlobalTimerService, sideDrawerService: fb.ISideDrawerService, dokumentService: fb.IDokumentService, maeklarObjektService: fb.IMaeklarObjektService) { $scope.BRFPantsattStatus = [ { val: null, show: '' }, { val: true, show: $filter('translate')('EKONOMI.PANTSATT') }, { val: false, show: $filter('translate')('EKONOMI.EJ_PANTSATT') } ]; // Om instaellning 30 finns (Ränta på klientmedelskonto) if (instaellningarService.instaellningar && instaellningarService.instaellningar.instaellningar && instaellningarService.instaellningar.instaellningar[fb.InstaellningTyp.Raenta.id]) { $scope.raentaInstaellning = instaellningarService.instaellningar.instaellningar[fb.InstaellningTyp.Raenta.id]; $scope.$watch('raentaInstaellning.InstaellningVaerde.value', function () { var value = parseFloat(($scope.raentaInstaellning.InstaellningVaerde.value + '').replace(',', '.')); value = value || 0; // värdet är satt som procent och inte decimal-andel, gör om det till decimal value = value / 100.0; $scope.provision.handpenningRaenta = new fb.ChangeTrack(value); }); } var kontaktpersonerLaddatFoer = null; $scope.laanOchPantbrev = maeklarObjektLaanOchPantbrevService.get($scope.$parent.maeklarObjektId); $scope.$watch('laanOchPantbrev.Pantbrev', function () { if ($scope.laanOchPantbrev && $scope.laanOchPantbrev.Pantbrev) { $scope.saknasPantbrev = Object.keys($scope.laanOchPantbrev.Pantbrev).length === 0; } }); $scope.$on(fb.FasITDomain.GlobalEvents.LANTMAETERIDATA_KOPIERAT, function () { $scope.laanOchPantbrev = maeklarObjektLaanOchPantbrevService.get($scope.$parent.maeklarObjektId); }); $scope.setActivePantbrevId = function (id: number) { if ($scope.activePantbrevId === id) { $scope.activePantbrevId = null; return; } $scope.activePantbrevId = id; $scope.kontaktpersoner = []; $scope.kontaktperson = {}; }; $scope.setActiveLaanId = function (id: number) { if ($scope.activeLaanId === id) { $scope.activeLaanId = null; return; } $scope.activeLaanId = id; laddaKontaktpersoner($scope.laanOchPantbrev.Laan[id].LaangivareId.value); }; $scope.villkor = maeklarObjektVillkorService.get($scope.$parent.maeklarObjektId); $scope.villkor.$promise.then(() => { if ($scope.villkor.MaeklarObjektId.value === null) { $scope.villkor = new fb.MaeklarObjektVillkor({ MaeklarObjektId: $scope.$parent.maeklarObjektId, AerMedlemskapGodkaent: false, FinnsBesiktigad: false, FinnsLaan: false, FinnsOevrigaVillkor: false }); if (!$rootScope.InloggadAnvaendare.AerSupport) { $scope.villkor = maeklarObjektVillkorService.post($scope.villkor); } } $scope.$watch('villkor.MedlemskapDatum.value', function (newVal: string, oldVal: string) { if (newVal !== oldVal && oldVal !== undefined) { // När vi tömmer datepickerns fält så kan datumet sättas till hh:mm.ssZ istället för null if (newVal && newVal.indexOf('T') !== -1) { $scope.villkor.AerMedlemskapGodkaent.setValue(true); } else { $scope.villkor.AerMedlemskapGodkaent.setValue(false); } } }); /* * När villkoren går från att alla är sanna til att nåt inte är sant * eller från att alla inte är sanna till att alla är sanna, så ska * uppdragsstatusspecifikation kalkyleras om. */ const villkorArr = [ { aer: 'AerLaanVillkorUppfyllt', finns: 'FinnsLaan' }, { aer: 'AerBesiktigadVillkorUppfyllt', finns: 'FinnsBesiktigad' }, { aer: 'AerOevrigaVillkorUppfyllt', finns: 'FinnsOevrigaVillkor' } ]; villkorArr.forEach(villkorCurrent => $scope.$watch('villkor.' + villkorCurrent.aer + '.value', function (newVal, oldVal) { if (newVal !== oldVal && typeof oldVal !== 'undefined') { const previouslyAllTrue = villkorArr .filter(villkor => villkor !== villkorCurrent) .filter(villkor => $scope.villkor[villkor.finns].value) .every(villkor => $scope.villkor[villkor.aer].value) && oldVal; const currentlyAllTrue = villkorArr .filter(villkor => $scope.villkor[villkor.finns].value) .every(villkor => $scope.villkor[villkor.aer].value); if (previouslyAllTrue && !currentlyAllTrue || !previouslyAllTrue && currentlyAllTrue) { $timeout(function () { globalTimerService.globalSave(true).then(() => maeklarObjektService.updateUppdragStatusSpecifikationPaaAktuelltObjekt($scope.maeklarObjekt)); }, 100); } } }) ) }); $scope.medlemskapOptions = [ { namn: $filter('translate')('EKONOMI.VAENTAR_PAA_BESLUT'), val: false }, { namn: $filter('translate')('EKONOMI.GODKAENT'), val: true } ]; $scope.villkorFinnsOptions = [ { namn: $filter('translate')('EKONOMI.FINNS'), val: true }, { namn: $filter('translate')('EKONOMI.FINNS_EJ'), val: false } ]; $scope.villkorUppfylltOptions = [ { namn: $filter('translate')('EKONOMI.VILLKOR_EJ_UPPFYLLT'), val: false }, { namn: $filter('translate')('EKONOMI.VILLKOR_UPPFYLLT'), val: true } ]; $scope.aerMedlemskapGodkaentChanged = function () { if ($scope.villkor.MedlemskapDatum) { if ($scope.villkor.AerMedlemskapGodkaent.value && (!$scope.villkor.MedlemskapDatum.value || $scope.villkor.MedlemskapDatum.value.indexOf('T') === -1)) { // Formattera såsom fbFormDatepicker formatterar const date = new Date(); date.setHours(-date.getTimezoneOffset() / 60, 0, 0, 0); const result = date.toISOString().slice(0, -5) + 'Z'; $scope.villkor.MedlemskapDatum.setValue(result); } else if (!$scope.villkor.AerMedlemskapGodkaent.value) { $scope.villkor.MedlemskapDatum.setValue(null); } } }; $scope.finnsLaanChanged = function () { if (!$scope.villkor.FinnsLaan.value && $scope.villkor.LaanDatum) { $scope.villkor.LaanDatum.setValue(null); } }; $scope.finnsBesiktigadChanged = function () { if (!$scope.villkor.FinnsBesiktigad.value && $scope.villkor.BesiktigadDatum) { $scope.villkor.BesiktigadDatum.setValue(null); } }; $scope.finnsOevrigaVillkorChanged = function () { if (!$scope.villkor.FinnsOevrigaVillkor.value && $scope.villkor.OevrigaVillkorDatum) { $scope.villkor.OevrigaVillkorDatum.setValue(null); } }; $scope.belaanad = maeklarObjektLaanService.getCreateBelaanad($scope.$parent.maeklarObjektId); $scope.budgivning = budService.query($scope.$parent.maeklarObjektId); $scope.budgivning.$promise.then(function () { $scope.provision.hoegstaBud = new fb.ChangeTrack(_.reduce($scope.budgivning.Bud, function (maxBud, bud: fb.Bud) { if (bud) { return (bud.Bud && (bud.Bud.value > maxBud)) ? bud.Bud.value : maxBud; } return maxBud; }, 0)); }); $scope.belaanadOptions = [{ show: $filter('translate')('GLOBALS.VET_EJ'), val: null }, { show: $filter('translate')('GLOBALS.JA'), val: true }, { show: $filter('translate')('GLOBALS.NEJ'), val: false }]; $scope.pantTyper = domainService.pantTyp.query(); $scope.laanTyper = domainService.laanTyp.query(); $scope.amorteringsTyp = domainService.amorteringsTyp.query(); $scope.laangivare = personService.getLaangivarePerPersonKategori(fb.Environment.ObjektTypId.LAANGIVARE); $scope.$watch('belaanad.AerBelaanad.value', function (newVal, oldVal) { if (newVal !== oldVal && typeof oldVal !== 'undefined') { $scope.signatur = ''; $timeout(function () { globalTimerService.globalSave(true); }, 100); } }); var clearLaangivareKontaktperson = function (laan: fb.Laan) { if (laan) { laan.LaangivareKontaktpersonId.setValue(null); laan.LaangivareKontaktpersonNamn.setValue(null); laan.LaangivareKontaktpersonTelefonnummer.setValue(null); laan.LaangivareKontaktpersonMejlAdress.setValue(null); } }; $scope.laangivareChange = function (model) { if (!$scope.laangivare || !$scope.laangivare.$resolved) { return; } var laan: fb.Laan = (model).root; var id = null; var laanGivareIdchanged = false; for (var i = 0; i < $scope.laangivare.length; i++) { if ($scope.laangivare[i].Namn === laan.LaangivareNamn.value) { id = $scope.laangivare[i].PersonId; if (laan.LaangivareId.value !== id) { laanGivareIdchanged = true; } laan.LaangivareId.value = id; laan.LaangivareNamn.value = $scope.laangivare[i].Namn; laan.LaangivareTelefonnummer.value = $scope.laangivare[i].TelefonnummerVaexel; laan.LaangivareMejlAdress.value = $scope.laangivare[i].Mejladress; break; } } if (id === null) { laan.LaangivareId.value = null; //laan.LaangivareKontaktpersonId = null; } if (laanGivareIdchanged) { laan.LaangivareKontaktpersonId.setValue(null); } if (id !== null && laanGivareIdchanged) { //Id har helt rensats, töm allt på clearLaangivareKontaktperson(laan); laddaKontaktpersoner(id); } else { $scope.kontaktpersoner = []; } //laan.LaangivareNamn.value = null; //laan.LaangivareTelefonnummer.value = null; //laan.LaangivareAdress.value = null; //laan.LaangivareMejlAdress.value = null; //$scope.kontaktperson = {}; }; var laddaKontaktpersoner = function (personId) { if (!personId) { $scope.kontaktpersoner = []; return; } $scope.kontaktpersoner = personService.getAdministrativaKontaktpersonerList(personId); $scope.kontaktpersoner.$promise.then(function () { if ($scope.activeLaanId && $scope.laanOchPantbrev.Laan[$scope.activeLaanId] && $scope.laanOchPantbrev.Laan[$scope.activeLaanId].LaangivareId) { $scope.kontaktpersonChange($scope.laanOchPantbrev.Laan[$scope.activeLaanId].LaangivareNamn); } }); }; $scope.kontaktpersonChange = function (model) { if (!$scope.kontaktpersoner || !$scope.kontaktpersoner.$resolved) { return; } var laan: fb.Laan = (model).root; for (var i = 0; i < $scope.kontaktpersoner.length; i++) { if ($scope.kontaktpersoner[i].Namn === model.value) { laan.LaangivareKontaktpersonId.setValue($scope.kontaktpersoner[i].PersonId); laan.LaangivareKontaktpersonNamn.setValue($scope.kontaktpersoner[i].Namn); laan.LaangivareKontaktpersonTelefonnummer.setValue($scope.kontaktpersoner[i].TelefonnummerArbete); laan.LaangivareKontaktpersonMejlAdress.setValue($scope.kontaktpersoner[i].Mejladress); return; } } laan.LaangivareKontaktpersonId.setValue(null); //Framåtkompatibilitet..... }; $scope.sumPantbrevBelopp = function (laan?: fb.Laan) { if (!laan) { if (_.isUndefined($scope.laanOchPantbrev.Pantbrev)) { return undefined; } return _.reduce(_.values($scope.laanOchPantbrev.Pantbrev), function (sum: number, p: fb.Pantbrev) { return sum + p.Belopp.value; }, 0); } var sum = 0; angular.forEach($scope.laanOchPantbrev.LPMatrix[laan.MaeklarObjektLaanId.value], function (value: fb.ChangeTrack, key) { if (value.value) { sum += $scope.laanOchPantbrev.Pantbrev[key].Belopp.value; } }); return sum; }; $scope.sumPantbrevInom = function (laan: fb.Laan) { var maxSum = 0; angular.forEach($scope.laanOchPantbrev.LPMatrix[laan.MaeklarObjektLaanId.value], function (value : fb.ChangeTrack, key) { if (value.value) { if ($scope.laanOchPantbrev.Pantbrev[key].Inom > maxSum) { maxSum = $scope.laanOchPantbrev.Pantbrev[key].Inom; } } }); return maxSum; }; var setSignatur = function () { if ($scope.belaanad && $scope.belaanad.$resolved && $scope.belaanad.SparatAvPersonId && $scope.belaanad.SparatAvPersonId.value && $scope.belaanad.SparatAvPersonNamn && $scope.belaanad.SparatAvPersonNamn.value && $scope.belaanad.SparatDatum && $scope.belaanad.SparatDatum.value) { var splittedName = $scope.belaanad.SparatAvPersonNamn.value.split(' '); var signatur = splittedName[0][0] + splittedName[1][0]; $scope.signatur = signatur + ' ' + $filter('niceDate')($scope.belaanad.SparatDatum.value, true); } else { $scope.signatur = ''; } }; $scope.$watch('belaanad.SparatAvPersonId.value', setSignatur); $scope.$watch('belaanad.SparatAvPersonNamn.value', setSignatur); $scope.$watch('belaanad.SparatDatum.value', setSignatur); $scope.addLaan = function () { var laan = fb.Laan.newLaan($scope.$parent.maeklarObjektId); $scope.disableAddingLaan = true; maeklarObjektLaanService.add(laan).$promise.then(function (data) { $scope.laanOchPantbrev.Laan[laan.MaeklarObjektLaanId.value] = laan; $scope.setActiveLaanId(laan.MaeklarObjektLaanId.value); $scope.disableAddingLaan = false; $scope.laanOchPantbrev.LPMatrix[laan.MaeklarObjektLaanId.value] = {}; angular.forEach($scope.laanOchPantbrev.Pantbrev, function (value, key) { $scope.laanOchPantbrev.LPMatrix[laan.MaeklarObjektLaanId.value][key] = new fb.ChangeTrack(false, $scope.laanOchPantbrev); }); }); } $scope.removeLaan = function (laan: fb.Laan) { laan.dequeue(); if (laan.MaeklarObjektLaanId.value > 0) { maeklarObjektLaanService.remove(laan).$promise.then(function () { delete $scope.laanOchPantbrev.Laan[laan.MaeklarObjektLaanId.value]; delete $scope.laanOchPantbrev.LPMatrix[laan.MaeklarObjektLaanId.value]; }); } } $scope.addLoesenKostnad = function (laan) { if (!laan.Loesenkostnader) { laan.Loesenkostnader = []; } laan.addLoesenkostnad(); } $scope.removeLoesenKostnad = function (laan, index) { laan.Loesenkostnader.splice(index, 1); laan.enqueue(); } $scope.oeppnaKontaktkort = function (personId, personnamn) { sideDrawerService.setSideDrawer('Kontakt', { PersonId: personId, Personnamn: personnamn, callbackFn: function () { $scope.laangivare = personService.getLaangivarePerPersonKategori(fb.Environment.ObjektTypId.LAANGIVARE); } }); }; /* PROVISION START */ $scope.provision = { hoegstaBud: new fb.ChangeTrack(0), }; $scope.provisionBetalasAv = [ { k: 'säljaren', v: true }, { k: 'köparen', v: false } ]; //Sätt default-värden om de saknas. var isSweden = $scope.maeklarObjekt.LandId.value === fb.FasITDomain.Land.SVERIGE; if ($scope.maeklarObjekt.ProvisAerInklusiveMoms.missValue) { $scope.maeklarObjekt.ProvisAerInklusiveMoms.setValue(isSweden); $scope.maeklarObjekt.ExtraKostnInklMoms.setValue(isSweden); globalTimerService.globalSave(true); } $scope.provisionInkMoms = [ { k: 'Inklusive moms', v: true }, { k: 'Exklusive moms', v: false } ]; $scope.beraeknat = {} var calculateProvision = function (slutpris: number, provision: number, minimumprovision: number) { var beraeknad: number = slutpris * (provision / 100); if (beraeknad < minimumprovision) { beraeknad = minimumprovision; } return beraeknad; } var initProvis = function () { $scope.showProvisionFritextInfo = false; $scope.provisTyp = [ { val: fb.FasITDomain.ProvisTyp.FAST, show: $filter('translate')('EKONOMI.FAST') } ] if (!($scope.maeklarObjekt.isSkrivning() || $scope.maeklarObjekt.isVaerdering())) { $scope.provisTyp.push({ val: fb.FasITDomain.ProvisTyp.ROERLIGT, show: $filter('translate')('EKONOMI.ROERLIGT') }); $scope.provisTyp.push({ val: fb.FasITDomain.ProvisTyp.FRITEXT, show: $filter('translate')('EKONOMI.FRITEXT') }); } var setProvisTyp = function () { if ($scope.maeklarObjekt.isSkrivning() || $scope.maeklarObjekt.isVaerdering()) { $scope.provision.valdProvisTyp = new fb.ChangeTrack(fb.FasITDomain.ProvisTyp.FAST); } else { if ($scope.maeklarObjekt.ProvisText.value) { $scope.provision.valdProvisTyp = new fb.ChangeTrack(fb.FasITDomain.ProvisTyp.FRITEXT); $scope.showProvisionFritextInfo = true; } else if ($scope.maeklarObjekt.ProvisProc.value) { $scope.provision.valdProvisTyp = new fb.ChangeTrack(fb.FasITDomain.ProvisTyp.ROERLIGT); } else if ($scope.maeklarObjekt.ProvisFast.value) { $scope.provision.valdProvisTyp = new fb.ChangeTrack(fb.FasITDomain.ProvisTyp.FAST); } else { //Fast provision är defaultvärde $scope.provision.valdProvisTyp = new fb.ChangeTrack(fb.FasITDomain.ProvisTyp.FAST); } } } setProvisTyp(); } $scope.$watch('maeklarObjekt.UppdragTyp.value', function (newV, oldV) { if (newV !== oldV) { initProvis(); } }); $scope.maeklarObjekt.$promise.then(function () { initProvis(); var resetViewValues = function (newVal, oldVal) { if (angular.isDefined(newVal) && newVal !== null && oldVal !== newVal) { $scope.maeklarObjekt.ProvisProc.setValue(null); $scope.maeklarObjekt.ProvisText.setValue(null); $scope.maeklarObjekt.ProvisFast.setValue(null); if (newVal === fb.FasITDomain.ProvisTyp.FRITEXT) { $scope.maeklarObjekt.ProvisText.setValue($filter('translate')('EKONOMI.PROVISION_FRITEXT_DEFAULT')); $scope.showProvisionFritextInfo = true; } else { $scope.showProvisionFritextInfo = false; } } } $scope.beraeknaRoerlig = function () { var pris = $scope.maeklarObjekt.SlutPris.value ? $scope.maeklarObjekt.SlutPris.value : $scope.maeklarObjekt.StartPris.value; var provision = $scope.maeklarObjekt.ProvisProc.value; var laegst = $scope.maeklarObjekt.ProvisFast.value; $scope.beraeknat.provision = calculateProvision(pris, provision, laegst); } $scope.beraeknaFast = function () { $scope.beraeknat.provision = $scope.maeklarObjekt.ProvisFast.value; } $scope.beraeknaFritext = function () { $scope.beraeknat.provision = $scope.maeklarObjekt.ProvisFast.value; } $scope.beraeknaArvodeMoms = function () { var provisionUtraeknad = $scope.beraeknat.provision;// - $filter('sum')($scope.provision.avgaar, 'belopp.value'); if ($scope.maeklarObjekt.ProvisAerInklusiveMoms.value) { $scope.provision.arvode = provisionUtraeknad * (1 / $scope.maeklarObjekt.Momssats.value); $scope.provision.moms = provisionUtraeknad - $scope.provision.arvode; } else { $scope.provision.arvode = provisionUtraeknad; $scope.provision.moms = provisionUtraeknad * ($scope.maeklarObjekt.Momssats.value - 1); } $scope.beraeknat.provisionMoms = $scope.provision.moms + $scope.provision.arvode; } var beraekna = function () { if (!$scope.provision || !$scope.provision.valdProvisTyp) { return; } if ($scope.provision.valdProvisTyp.value === fb.FasITDomain.ProvisTyp.ROERLIGT) { $scope.beraeknaRoerlig(); } else if ($scope.provision.valdProvisTyp.value === fb.FasITDomain.ProvisTyp.FAST) { $scope.beraeknaFast(); } else if ($scope.provision.valdProvisTyp.value === fb.FasITDomain.ProvisTyp.FRITEXT) { $scope.beraeknaFritext(); } $scope.beraeknaArvodeMoms(); beraeknaExtraKostnader(); } var kollaArvodet = function () { if ($scope.provision.valdProvisTyp.value === fb.FasITDomain.ProvisTyp.FAST) { if ($scope.maeklarObjekt.ProvisAerInklusiveMoms.value) { $scope.beraeknat.kollaArvordet = $scope.maeklarObjekt.ProvisFast.value * (1 / $scope.maeklarObjekt.Momssats.value); } else { $scope.beraeknat.kollaArvordet = $scope.maeklarObjekt.ProvisFast.value; } } else { var provision = calculateProvision($scope.provision.hoegstaBud.value, $scope.maeklarObjekt.ProvisProc.value, $scope.maeklarObjekt.ProvisFast.value); if ($scope.maeklarObjekt.ProvisAerInklusiveMoms.value) { $scope.beraeknat.kollaArvordet = provision * (1 / $scope.maeklarObjekt.Momssats.value); } else { $scope.beraeknat.kollaArvordet = provision; } if ($scope.beraeknat.kollaArvordet < $scope.maeklarObjekt.ProvisFast.value) { $scope.beraeknat.kollaArvordet = $scope.maeklarObjekt.ProvisFast.value; } } } var beraeknaExtraKostnader = function () { $scope.beraeknat.extraKostnader = $scope.maeklarObjekt.ExtraKostn1.value + $scope.maeklarObjekt.ExtraKostn2.value; } $scope.$watch('provision.valdProvisTyp.value', resetViewValues); $scope.$watch('provision.hoegstaBud.value', kollaArvodet); $scope.$watch('maeklarObjekt.ProvisProc.value', kollaArvodet); $scope.$watch('maeklarObjekt.ProvisFast.value', kollaArvodet); $scope.$watch('maeklarObjekt.ProvisAerInklusiveMoms.value', kollaArvodet); $scope.$watch('maeklarObjekt.ProvisProc.value', beraekna); $scope.$watch('maeklarObjekt.ProvisFast.value', beraekna); $scope.$watch('maeklarObjekt.SlutPris.value', beraekna); $scope.$watch('maeklarObjekt.StartPris.value', beraekna); $scope.$watch('maeklarObjekt.ProvisAerInklusiveMoms.value', beraekna); $scope.$watch('maeklarObjekt.ExtraKostn1.value', beraekna); $scope.$watch('maeklarObjekt.ExtraKostn2.value', beraekna); $scope.$watch('maeklarObjekt.ExtraKostnInklMoms.value', beraeknaExtraKostnader); /* HANDPENNING */ $scope.handpenning = {} $scope.handpenning.days = function () { var days = moment($scope.maeklarObjekt.HandpenningRedovisadDatum.value).diff(moment($scope.maeklarObjekt.HandpenningErlagdDatum.value), 'days', true); if (days < 0 || _.isNaN(days)) { days = 0; } return days; } $scope.handpenning.beraeknad = function () { return $scope.maeklarObjekt.HandpenningBelopp.value * $scope.provision.handpenningRaenta.value * $scope.handpenning.days() / 365; } /* HANDPENNING END */ /*BESIKTNING OCH DOLDA FEL-FÖRSÄKRINGAR*/ $scope.foersaekringsPris = $scope.$parent.foersaekringsPris; $scope.besiktning = $scope.$parent.besiktning; $scope.foersaekringBelopp = $scope.$parent.foersaekringBelopp; $scope.bestaellningLagd = $scope.$parent.bestaellningLagd; $scope.besiktning.$promise.then(() => { $scope.$watch('besiktning.FoersaekringsProduktId.value', $scope.$parent.foersaekringAendrad); $scope.$watch('besiktning.OeverlaatelseFoersaekradFoerbesiktningsDatum.value', $scope.$parent.foersaekringAendrad); }); /* LIKVIDAVRÄKNING */ $scope.likvidavraekning = { typ: '' } $scope.likvidavraekning.filter = function (laan) { return _.indexOf([3, 2, 0], laan.LaanTyp.value) > -1; } $scope.likvidavraekning.total = function () { var toSum = _.filter($scope.laanOchPantbrev.Laan, $scope.likvidavraekning.filter); var total = 0; angular.forEach(toSum, function (laan) { total += $scope.likvidavraekning.subtotal(laan); }); if ($scope.maeklarObjekt.DellikvidBelopp && $scope.maeklarObjekt.DellikvidBelopp.value) { total += $scope.maeklarObjekt.DellikvidBelopp.value; } return $scope.likvidavraekning.pris() - $scope.likvidavraekning.avgaar() - total; }; $scope.likvidavraekning.subtotal = function (laan: fb.Laan) { var kapitalskuld = laan.Belopp.value; var subtotal = (!laan.Loesenkostnader) ? 0 : $filter('sum')(laan.Loesenkostnader, 'Belopp.value'); return kapitalskuld + subtotal; }; $scope.likvidavraekning.typ = function () { return $scope.maeklarObjekt.SlutPris.value > 0 ? 'slutpris' : 'utgångspris'; }; $scope.likvidavraekning.pris = function () { return $scope.maeklarObjekt.SlutPris.value > 0 ? $scope.maeklarObjekt.SlutPris.value : $scope.maeklarObjekt.StartPris.value; }; $scope.likvidavraekning.avgaarTyp = function () { return ($scope.maeklarObjekt.HandpenningBelopp.value === 0 || $scope.maeklarObjekt.HandpenningBelopp.value === null) ? '(beräknad 10% av köpeskilling)' : ''; }; $scope.likvidavraekning.avgaar = function () { return ($scope.maeklarObjekt.HandpenningBelopp.value === 0 || $scope.maeklarObjekt.HandpenningBelopp.value === null) ? $scope.likvidavraekning.pris() * 0.1 : $scope.maeklarObjekt.HandpenningBelopp.value; }; }); $scope.openPolicyFoerProvision = function () { $window.open(fb.Environment.policyFoerProvisionURL); }; }]);