PageSourceSearch

https://rekrutacja.pedagogium.pl/pdg-irk-app/content/script/irk/pages/platnosci/platnosciController.js

js pedagogium.pl collected 2026-10-04 13:35:09 UTC 16,901 bytes, 446 lines download raw bytes

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.