1(function() { 2 'use strict'; 3 4 angular 5 .module("irk") 6 .controller("PlatnosciController", PlatnosciController) 7 8 function PlatnosciController($templateCache, $controller, $scope, $http, 9 $modal, i18n, toaster, $rootScope, $resource, $injector, zarzadcaModulow, slownik, SIDEBAR_MENU_EVENTS) { 10 angular.extend(this, $controller('IntakeControllerMixin', {$scope: $scope})); 11 $templateCache.remove('irk.auth.platnosci.Platnosci'); 12 13 $scope.blokady = {}; 14 $scope.wartosciSlownikowe = {}; 15 $scope.groups = {}; 16 $scope.dostepneModuly = {}; 17 18 $scope.daneKandydata = undefined; 19 $scope.wykazOplat = undefined; 20 $scope.planyRatalneProcesow = undefined; 21 $scope.tlumaczenia = {}; 22 23 var zmienionoPlatnosci = false; 24 25 /** 26 * Aktualizacja danych kandydata w widoku. 27 */ 28 $scope.updateDaneKandydata = function() { 29 return $http.get('REST/platnosci', {}) 30 .then(function(daneKandydata) { 31 $scope.daneKandydata = daneKandydata.data; 32 }); 33 }; 34 35 /** 36 * Aktualizacja wykazu opÅat w widoku. 37 */ 38 $scope.updateWykazOplat = function() { 39 return $http.get('REST/wykazOplat', {}) 40 .then(function (wykazOplat) { 41 for(var kampaniaRekrutacyjna of wykazOplat.data.oplatyKampaniiRekrutacyjnejList) { 42 for(var wydzial of kampaniaRekrutacyjna.oplatyNaWydzialeList) { 43 for(var etapStudiow of wydzial.oplatyEtapuStudiowList) { 44 for(var proces of etapStudiow.oplatyNaKierunkuList) { 45 $scope.aktualizujRachunki(proces); 46 } 47 } 48 } 49 } 50 $scope.wykazOplat = wykazOplat.data; 51 }); 52 }; 53 54 /** 55 * Otworzenie dialogu z opisem danych do przelewu. 56 */ 57 $scope.openDanePrzelewu = function(wydzial, etapStudiow, proces, rachunek, kwotaPlatnosci) { 58 if(zmienionoPlatnosci) { 59 pokazPrzedPlatnosciaZapiszZmiany(); 60 return; 61 } 62 $scope.aktualizujRachunki(proces); 63 $modal.open({ 64 animation : true, 65 templateUrl: 'danePrzelewu.html', 66 controller: 'DanePrzelewuController', 67 resolve: { 68 wydzial: function() { 69 return wydzial; 70 }, 71 etapStudiow: function() { 72 return etapStudiow; 73 }, 74 proces: function() { 75 return proces; 76 }, 77 rachunek: function() { 78 return rachunek; 79 }, 80 kwotaPlatnosci: function() { 81 return kwotaPlatnosci 82 } 83 } 84 }); 85 }; 86 87 /** 88 * Otworzenie dialogu z pÅatnoÅciÄ online. 89 */ 90 $scope.openPlatnoscOnline = function(wydzial, etapStudiow, proces, rachunek, kwotaPlatnosci) { 91 if(zmienionoPlatnosci) { 92 pokazPrzedPlatnosciaZapiszZmiany(); 93 return; 94 } 95 $scope.aktualizujRachunki(proces); 96 var oswiadczeniaPlatnosciOnline = $scope.wykazOplat.oswiadczeniaPlatnosciOnline; 97 $modal.open({ 98 animation : true, 99 templateUrl: 'platnoscOnline.html', 100 controller: 'PlatnoscOnlineController', 101 resolve: { 102 wydzial: function() { 103 return wydzial; 104 }, 105 etapStudiow: function() { 106 return etapStudiow; 107 }, 108 proces: function() { 109 return proces; 110 }, 111 rachunek: function() { 112 return rachunek; 113 }, 114 kwotaPlatnosci: function() { 115 return kwotaPlatnosci; 116 }, 117 oswiadczeniaPlatnosciOnline: function() { 118 return oswiadczeniaPlatnosciOnline; 119 }, 120 parentScope: function() { 121 return $scope; 122 } 123 } 124 }); 125 }; 126 127 var pokazPrzedPlatnosciaZapiszZmiany = function() { 128 i18n.get('interfejs.irk.komponent.Platnosci.PrzedPlatnosciaZapiszFormularz').then(function(komunikat) { 129 toaster.pop({ 130 type: 'error', 131 title: komunikat, 132 body: "", 133 bodyOutputType: 'trustedHtml' 134 }); 135 }); 136 }; 137 138 /** 139 * Aktualizacja planów ratalnych w widoku. 140 */ 141 $scope.updatePlanyRatalneProcesow = function() { 142 return $http.get('REST/planyRatalneProcesow', {}) 143 .then(function(planyRatalneProcesow) { 144 $scope.planyRatalneProcesow = planyRatalneProcesow.data; 145 }); 146 }; 147 148 /** 149 * Zapisanie wykazu opÅat. 150 */ 151 $scope.zapiszWykazOplat = function() { 152 return $http.post('REST/wykazOplat', $scope.wykazOplat) 153 .then(function(res) { 154 if(onZapiszComplete(res)) { 155 zmienionoPlatnosci = false;
156 } 157 }); 158 }; 159 160 /** 161 * Zapisanie planów ratalnych. 162 */ 163 $scope.zapiszPlanyRatalneProcesow = function() { 164 return $http.post('REST/planyRatalneProcesow', $scope.planyRatalneProcesow) 165 .then(onZapiszComplete); 166 }; 167 168 /** 169 * WyÅwietlenie komunikatu po zakoÅczeniu operacji zapisu. 170 */ 171 var onZapiszComplete = function(res) { 172 if(res.data.errorList.length > 1) { 173 i18n.get('interfejs.irk.shared.error.SaveError').then(function(komunikat) { 174 var body = res.data.errorList.map(function(err){ 175 return '<li>' + err + '</li>'; 176 }).join(""); 177 body = '<ul>' + body + '</ul>'; 178 toaster.pop({ 179 type: 'error', 180 title: komunikat, 181 body: body, 182 bodyOutputType: 'trustedHtml' 183 }); 184 }); 185 return false; 186 } 187 else if(res.data.errorList.length > 0) { 188 i18n.get('interfejs.irk.shared.error.SaveError').then(function(komunikat) { 189 toaster.pop('error', komunikat, res.data.errorList[0]); 190 }); 191 return false; 192 } 193 else { 194 i18n.get('interfejs.irk.shared.ZapisanoFormularz').then(function(komunikat) { 195 toaster.pop('success', komunikat); 196 }); 197 $rootScope.$broadcast(SIDEBAR_MENU_EVENTS.zmianaLiczbyNieprzeczytanychWiadomosci); 198 return true; 199 } 200 }; 201 202 /** 203 * Zsumowanie opÅat w rachunkach procesu do wyÅwietlenia podsumowania 204 * rachunku. 205 */ 206 $scope.aktualizujRachunki = function(proces) { 207 var walutaMap = {}; 208 for(var oplata of proces.oplaty) { 209 if(oplata.aktywna && oplata.nierozliczona) { 210 for(var kwota of oplata.dostepneKwoty) { 211 var waluta = kwota.currency; 212 if(waluta == oplata.wybranaWaluta) { 213 if(walutaMap[waluta]) { 214 walutaMap[waluta] += kwota.amount; 215 } 216 else { 217 walutaMap[waluta] = kwota.amount; 218 } 219 } 220 } 221 } 222 } 223 var kwotaZobowiazaniaWalutaMap = {}; 224 for(var zobowiazanie of proces.zobowiazania) { 225 if(zobowiazanie.nierozliczone) { 226 var kwota = zobowiazanie.kwota 227 var waluta = kwota.currency; 228 if(kwotaZobowiazaniaWalutaMap[waluta]) { 229 kwotaZobowiazaniaWalutaMap[waluta] += kwota.amount; 230 } 231 else { 232 kwotaZobowiazaniaWalutaMap[waluta] = kwota.amount; 233 } 234 } 235 } 236 for(var rachunek of proces.rachunki) { 237 var amount = Math.max(walutaMap[rachunek.waluta] || 0, 0); 238 rachunek.kwotaOplatyRekrutacyjnej = { 239 amount: amount, 240 currency: rachunek.waluta, 241 positive: amount > 0, 242 zero: amount == 0, 243 negative: amount < 0 244 }; 245 var kwotaZobowiazan = Math.max(kwotaZobowiazaniaWalutaMap[rachunek.waluta] || 0, 0); 246 rachunek.kwotaZobowiazan = { 247 amount: kwotaZobowiazan, 248 currency: rachunek.waluta, 249 positive: kwotaZobowiazan > 0, 250 zero: kwotaZobowiazan == 0, 251 negative: kwotaZobowiazan < 0 252 }; 253 } 254 }; 255 256 /** 257 * Po modyfikacji zaznaczenia opÅaty należy zablokowaÄ możliwoÅÄ 258 * pÅatnoÅci, zaktualizowaÄ zaznaczenie kwoty tej opÅaty i zaktualizowaÄ 259 * rachunki. 260 */ 261 $scope.onZmianaOplaty = function(proces, oplata) { 262 zmienionoPlatnosci = true; 263 if(!oplata.aktywna) { 264 oplata.wybranaWaluta = null; 265 } 266 else if(!oplata.wybranaWaluta) { 267 oplata.wybranaWaluta = oplata.dostepneKwoty[0].currency; 268 } 269 $scope.aktualizujRachunki(proces); 270 }; 271 272 /** 273 * Po modyfikacji zaznaczenia kwoty opÅaty należy zablokowaÄ możliwoÅÄ 274 * pÅatnoÅci i zaktualizowaÄ rachunki. 275 */ 276 $scope.onZmianaKwoty = function(proces) { 277 zmienionoPlatnosci = true; 278 $scope.aktualizujRachunki(proces); 279 }; 280 281 /** 282 * Sprawdzenie czy kandydat może edytowaÄ wykaz opÅat. 283 */ 284 $scope.isMozeEdytowacWykazOplat = function() { 285 return $scope.wykazOplat.oplatyKampaniiRekrutacyjnejList.some(function(kampaniaRekrutacyjna) { 286 return kampaniaRekrutacyjna.oplatyNaWydzialeList.some(function(wydzial) { 287 return wydzial.oplatyEtapuStudiowList.some(function(etapStudiow) { 288 return etapStudiow.oplatyNaKierunkuList.some(function(proces) { 289 return proces.oplaty.some(function(oplata) { 290 return $scope.getBledyWyboruOplaty(oplata) == null 291 || $scope.getBledyWyboruWalutyOplaty(oplata) == null; 292 }); 293 }); 294 }); 295 }); 296 }); 297 }; 298 299 /** 300 * Sprawdzenie czy kandydat może widzeÄ wykaz opÅat. 301 */ 302 $scope.isMozeWidziecWykazOplat = function(proces) { 303 return proces.oplaty.some(function(oplata) { 304 return oplata.nierozliczona; 305 }); 306 }; 307 308 /** 309 * Sprawdzenie czy kandydat może widzeÄ zobowiÄ zania niepowiÄ zane 310 * z opÅatami rekrutacyjnymi. 311 */ 312 $scope.isMozeWidziecZobowiazaniaBezOplat = function(proces) { 313 return proces.zobowiazania.some(function(zobowiazanie) { 314 return zobowiazanie.nierozliczone; 315 }); 316 }; 317 318 /** 319 * Pobranie komunikatu bÅÄdu wyboru opÅaty. 320 */ 321 $scope.getBledyWyboruOplaty = function(oplata) { 322 if(oplata.obowiazkowa) { 323 return $scope.tlumaczenia.OplataObowiazkowa; 324 } 325 return $scope.getBledyWyboruWalutyOplaty(oplata); 326 }; 327 328 /** 329 * Pobranie komunikatu bÅÄdu wyboru waluty opÅaty. 330 */ 331 $scope.getBledyWyboruWalutyOplaty = function(oplata) { 332 if(oplata.bladEdytowaniaRozliczenie) { 333 return $scope.tlumaczenia.OplataRozliczona; 334 } 335 if(oplata.bladEdytowaniaNieznany) { 336 return $scope.tlumaczenia.OplataNiemodyfikowalna; 337 } 338 return null; 339 }; 340 341 var intakeResource = $resource('REST/platnosci/intake'); 342 343 $scope.zapisz = function() {
344 $scope.saveGroup($scope.gidGroupMap); 345 }; 346 347 $scope.saveGroup = function(group) { 348 var groupCopy = angular.copy(group); 349 beforeSave(groupCopy); 350 intakeResource.save({gidGroupMap: groupCopy}, function(groupDefinition) { 351 $scope.updateAllGroups(groupDefinition); 352 if(groupDefinition.valid) { 353 i18n.get('interfejs.irk.shared.ZapisanoFormularz').then(function(komunikat) { 354 toaster.pop('success', komunikat); 355 $rootScope.$broadcast(SIDEBAR_MENU_EVENTS.zmianaLiczbyNieprzeczytanychWiadomosci); 356 }); 357 } 358 }); 359 }; 360 361 var beforeSave = function(groupCopy) { 362 for(var key in groupCopy.modulfakturav1intake) 363 { 364 var group = groupCopy.modulfakturav1intake[key].fieldMap; 365 wyczyscNadmiaroweDane(group); 366 } 367 }; 368 369 var wyczyscNadmiaroweDane = function(group) { 370 var chceFaktury = group.ChceOtrzymywacFaktury.value; 371 if(chceFaktury !== 'true') 372 { 373 for(var fieldName in group) { 374 group[fieldName].value = null; 375 } 376 group.ChceOtrzymywacFaktury.value = chceFaktury; 377 return; 378 } 379 var rodzajPlatnika = group.RodzajPlatnika.value; 380 if(rodzajPlatnika === 'FIRMA') { 381 group.Imie.value = null; 382 group.ImiePozostale.value = null; 383 group.Nazwisko.value = null; 384 group.Pesel.value = null; 385 group.NrDowodu.value = null; 386 group.NrPaszportu.value = null; 387 group.IdKrajuWydaniaDokumentuTozsamosci.value = null; 388 } 389 if(rodzajPlatnika === 'OSOBA_FIZYCZNA') { 390 group.NazwaFirmy.value = null; 391 group.Nip.value = null; 392 group.Regon.value = null; 393 } 394 }; 395 396 $scope.loadGroup = function() { 397 intakeResource.get(function (groupDefinition) { 398 $scope.updateAllGroups(groupDefinition); 399 }); 400 }; 401 402 $scope.updateAllGroups = function(gidGroupMap) { 403 $scope.updateGroup(gidGroupMap); 404 zarzadcaModulow.getModulyDoWyswietlenia().then(function(moduly) { 405 angular.forEach(moduly, function(modul) { 406 var modulDoUruchomienia = $injector.get(modul); 407 modulDoUruchomienia.updateGroup($scope, gidGroupMap); 408 }); 409 }); 410 }; 411 412 $scope.updateSlowniki = function() { 413 var slowniki = [ 414 'Kraj', 415 'RodzajPlatnika' 416 ]; 417 418 zarzadcaModulow.getModulyDoWyswietlenia().then(function(moduly) { 419 angular.forEach(moduly, function(modul) { 420 var modulDoUruchomienia = $injector.get(modul); 421 slowniki = slowniki.concat(modulDoUruchomienia.getNazwyUzywanychSlownikow()); 422 }); 423 424 angular.forEach(slowniki, function(nazwaSlownika) { 425 $scope.wartosciSlownikowe[nazwaSlownika] = slownik.get(nazwaSlownika); 426 }); 427 }); 428 }; 429 430 zarzadcaModulow.getModulyDoWyswietlenia().then(function(moduly) { 431 angular.forEach(moduly, function(modul) { 432 var modulDoUruchomienia = $injector.get(modul); 433 modulDoUruchomienia.process($scope); 434 }); 435 }); 436 437 $scope.updateSlowniki(); 438 439 $scope.updateDaneKandydata(); 440 $scope.updateWykazOplat(); 441 $scope.updatePlanyRatalneProcesow(); 442 443 $scope.loadGroup(); 444 445 } 446})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.