incassiSDDCtrl.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548
  1. app.controller('incassiSDDCtrl',
  2. function ($scope,$http,$cookies,$window, $location,$timeout, $mdDialog, $q, $routeParams, $cookies, utilsSvc, userService, UserManager,
  3. ComboManager, DisposizioniRid, DistinteBanca) {
  4. var vm=this;
  5. vm.filteredView = (typeof $routeParams.filter!="undefined");
  6. $location.search('filter', null).replace();
  7. vm.maxItems = 0;
  8. vm.itemsPerPage = 100;
  9. vm.records=[];
  10. vm.esitiRid=[];
  11. vm.selectedIndex=-1;
  12. vm.topIndex = 0;
  13. vm.filter = userService.getFiltroIncassiSDD();
  14. vm.allSelected=false;
  15. vm.tipologia = "SDD";
  16. vm.abilitaFirma = false;
  17. vm.initFilter = function() {
  18. return;
  19. if (vm.filter.tipoChiamata!="DistinteBanca" && vm.filter.tipoChiamata!="DistinteFlussiInput") {
  20. vm.filter.idDistintaBanca = 0;
  21. vm.filter.idDistintaFlusso = 0;
  22. vm.filter.codiceClienteDebitore='';
  23. userService.setFiltroIncassiSDD(vm.filter);
  24. }
  25. }
  26. vm.toggleSelectAll=function(){
  27. vm.allSelected=!vm.allSelected;
  28. vm.records.forEach(function(item) {
  29. item.selected = vm.allSelected
  30. });
  31. }
  32. vm.getSelectedIds = function(){
  33. var res = [];
  34. if (vm.allSelected)
  35. res.push(-1);
  36. else
  37. vm.records.forEach(function(item){
  38. if (item.selected)
  39. res.push(item.id)
  40. });
  41. return res;
  42. }
  43. vm.cancellaDisposizioni = function(ev){
  44. utilsSvc.showConfirm('Attenzione','Confermi la cancellazione delle disposizioni selezionate?',ev).then(function(){
  45. utilsSvc.showForever('Cancellazione in corso...');
  46. ids=vm.getSelectedIds();
  47. let filter = new Object();
  48. filter = vm.filter;
  49. filter.selectedIds=ids;
  50. DisposizioniRid.MassDelete({},filter).$promise.then(function(data){
  51. utilsSvc.cancelMessage();
  52. if (data.value)
  53. utilsSvc.showMessage('Cancellazione effettuata');
  54. else
  55. utilsSvc.showMessage('Cancellazione effettuata. Alcune distinte non erano in uno stato da permetterne la cancellazione');
  56. vm.getDisposizioni();
  57. }).catch(function(err){
  58. utilsSvc.cancelMessage();
  59. utilsSvc.showMessage('Si è verificato un errore durante la cancellazione');
  60. })
  61. });
  62. }
  63. $scope.largeScreen = function(){
  64. return utilsSvc.largeScreen();
  65. }
  66. vm.initFilter();
  67. vm.getGridItemHeight = function() {
  68. return utilsSvc.getGridHeight();
  69. }
  70. if (localStorage.getItem("filter")) {
  71. vm.filter = $scope.$eval(localStorage.getItem("filter"));
  72. localStorage.removeItem("filter");
  73. userService.hideMenu();
  74. }
  75. if (utilsSvc.largeScreen())
  76. vm.columnWidths=[
  77. 70, //0
  78. 90, //1
  79. 180, //2
  80. 120, //3
  81. 90, //4
  82. 120, //5this.listPromise
  83. 114, //6
  84. 114, //7
  85. 60, //8
  86. 220, //9
  87. 90, //10
  88. 80, //11
  89. 90, //12
  90. 70, //13
  91. 140, //14
  92. 290, //15
  93. 200 //16
  94. ];
  95. else
  96. vm.columnWidths=[
  97. 70, //0
  98. 90, //1
  99. 220, //2
  100. 120, //3
  101. 90, //4
  102. 70, //5
  103. 114, //6
  104. 114, //7
  105. 60, //8
  106. 220, //9
  107. 90, //10
  108. 90, //11
  109. 90, //12
  110. 70, //13
  111. 140, //14
  112. 290, //15
  113. 200 //16
  114. ];
  115. vm.getListHeight = function() {
  116. containerHeight = ($window.innerHeight - $('#container').position().top - $('#view').position().top);
  117. return {'height': containerHeight + 'px'};
  118. };
  119. $window.addEventListener('resize', onResize);
  120. function onResize() {
  121. $scope.$digest();
  122. }
  123. $scope.$on('$destroy', function() {
  124. $window.removeEventListener('resize', onResize);
  125. });
  126. $timeout(function() {
  127. var evt = $window.document.createEvent('UIEvents');
  128. evt.initUIEvent('resize', true, false, $window, 0);
  129. $window.dispatchEvent(evt);
  130. });
  131. vm.largeScreen =function(){
  132. return utilsSvc.largeScreen();
  133. }
  134. vm.openMenu = function($mdMenu, ev) {
  135. originatorEv = ev;
  136. $mdMenu.open(ev);
  137. };
  138. vm.getEsitoColor=function(esito){
  139. var color;
  140. if (esito==2)
  141. color = 'red';
  142. else if (esito==1)
  143. color = 'green';
  144. return {'color': color};
  145. }
  146. vm.getColumnWidth = // }
  147. // this.lastStartIdx = index;
  148. function(idx) {
  149. return {
  150. 'width': vm.columnWidths[idx] + 'px',
  151. 'min-width':vm.columnWidths[idx] + 'px',
  152. //'padding-left':'6px',
  153. //'padding-right':'6px',
  154. 'margin-left':'8px',
  155. 'margin-right':'8px'
  156. };
  157. }
  158. vm.cercaErrori = function(event){
  159. vm.getDisposizioni();
  160. }
  161. vm.stampaDisposizioni = function() {
  162. utilsSvc.showForever('Generazione in corso...');
  163. ids=vm.getSelectedIds();
  164. let filter = new Object();
  165. if (vm.filteredView)
  166. filter = userService.getFilter();
  167. else
  168. filter = vm.filter;
  169. filter.selectedIds=ids;
  170. if (vm.filteredView)
  171. DisposizioniRid.PrintFiltered({label:'Stampa Disposizioni SDD'},filter).$promise.then(function(data){
  172. utilsSvc.downloadFile('application/pdf',data.response,'DisposizioniRid.pdf');
  173. utilsSvc.cancelMessage();
  174. }).catch(function(err){
  175. if (err.status==404) {
  176. utilsSvc.cancelMessage();
  177. utilsSvc.showMessage('Nessuna distinta estratta');
  178. }
  179. })
  180. else
  181. DisposizioniRid.Print({label:'Stampa Disposizioni SDD'},filter).$promise.then(function(data){
  182. utilsSvc.downloadFile('application/pdf',data.response,'DisposizioniRid.pdf');
  183. utilsSvc.cancelMessage();
  184. }).catch(function(err){
  185. if (err.status==404) {
  186. utilsSvc.cancelMessage();
  187. utilsSvc.showMessage('Nessuna distinta estratta');
  188. }
  189. })
  190. }
  191. vm.esportaDisposizioni = function() {
  192. utilsSvc.showForever('Generazione in corso...');
  193. ids=vm.getSelectedIds();
  194. let filter = new Object();
  195. if (vm.filteredView)
  196. filter = userService.getFilter();
  197. else
  198. filter = vm.filter;
  199. filter.selectedIds=ids;
  200. if (vm.filteredView)
  201. DisposizioniRid.ExportFiltered({},filter).$promise.then(function(data){
  202. utilsSvc.downloadFile('attachment/csv',data.response,'export.csv');
  203. utilsSvc.cancelMessage();
  204. }).catch(function(err){
  205. if (err.status==404) {
  206. utilsSvc.cancelMessage();
  207. utilsSvc.showMessage('Nessuna distinta estratta');
  208. }
  209. })
  210. else
  211. DisposizioniRid.Export({},filter).$promise.then(function(data){
  212. utilsSvc.downloadFile('attachment/csv',data.response,'export.csv');
  213. utilsSvc.cancelMessage();
  214. }).catch(function(err){
  215. if (err.status==404) {
  216. utilsSvc.cancelMessage();
  217. utilsSvc.showMessage('Nessuna distinta estratta');
  218. }
  219. })
  220. }
  221. vm.getMaxListWidth = function() {
  222. var res=0;
  223. for (var i=0;i<vm.columnWidths.length;i++)
  224. res += vm.columnWidths[i]+6+8+10;
  225. $('#container').css('width',($('#header').width()+10)+'px');
  226. return {'width': res+ 'px!important;'}
  227. }
  228. vm.setOrderField = function(field) {
  229. if (vm.filter.orderField!=field)
  230. vm.filter.orderField = field;
  231. else
  232. vm.filter.orderField = "-" +field;
  233. vm.getDisposizioni();
  234. }
  235. vm.firmaDistinta = function() {
  236. if (userService.getFiltroIncassiSDD().importoDistinta < vm.appVariables.importoLimiteFirma
  237. && (userService.getFiltroIncassiSDD().userIdFirmatario1 == '' || userService
  238. .getFiltroIncassiSDD().userIdFirmatario1 == null)) {
  239. utilsSvc
  240. .showConfirm("Conferma",
  241. "Confermi la firma della distinta e l'emissione del flusso di pagamento?")
  242. .then(
  243. function(res) {
  244. vm
  245. .eseguiFirma(
  246. 1,
  247. 1,
  248. userService
  249. .getFiltroIncassiSDD().idDistintaBanca);
  250. });
  251. } else if (userService.getFiltroIncassiSDD().importoDistinta >= vm.appVariables.importoLimiteFirma
  252. && (userService.getFiltroIncassiSDD().userIdFirmatario1 == '' || userService
  253. .getFiltroIncassiSDD().userIdFirmatario1 == null)) {
  254. utilsSvc
  255. .showConfirm(
  256. "Conferma",
  257. "Confermi la firma della distinta e l'emissione del flusso di pagamento?<br>Per l'emissione del flusso di pagamento sarà richiesto il secondo firmatario")
  258. .then(
  259. function(res) {
  260. vm
  261. .eseguiFirma(
  262. 1,
  263. 0,
  264. userService
  265. .getFiltroIncassiSDD().idDistintaBanca);
  266. });
  267. } else if (userService.getFiltroIncassiSDD().userIdFirmatario1 != '') {
  268. utilsSvc
  269. .showConfirm("Conferma",
  270. "Confermi la firma della distinta e l'emissione del flusso di pagamento?")
  271. .then(
  272. function(res) {
  273. vm
  274. .eseguiFirma(
  275. 2,
  276. 1,
  277. userService
  278. .getFiltroIncassiSDD().idDistintaBanca);
  279. });
  280. }
  281. }
  282. vm.eseguiFirma = function(tipoFirma, generaFlusso, idDistintaBanca) {
  283. DistinteBanca.FirmaDistinta({
  284. tipoFirma : tipoFirma,
  285. generaFlusso : generaFlusso,
  286. idDistintaBanca : idDistintaBanca
  287. }).$promise
  288. .then(function(res) {
  289. if (res[0] == "0")
  290. utilsSvc
  291. .show("Firma distinta effettuata");
  292. else if (res[0] == "4")
  293. utilsSvc
  294. .show("Firma distinta non effettuata: Errore : ErrorConflict");
  295. else if (res[0] == "5")
  296. utilsSvc
  297. .show("Firma distinta non effettuata: Errore : ErrorConflictRecordDeleted");
  298. else if (res[0] == "6")
  299. utilsSvc
  300. .show("Firma distinta non effettuata, tutte le disposizioni sono state eliminate");
  301. else
  302. utilsSvc
  303. .show("Firma distinta non effettuata: Errore : "
  304. + res);
  305. $location.path('/distinteBanca');
  306. })
  307. }
  308. vm.infiniteItems = {
  309. numLoaded_: 0,
  310. toLoad_: 0,
  311. loading_:false,
  312. lastStartIdx:-1,
  313. listPromise:null,
  314. canceler: $q.defer(),
  315. // Required.vm.initFilter();
  316. getItemAtIndex: function(index) {
  317. if (vm.maxItems==0 || index>vm.maxItems)
  318. return null;
  319. if (!vm.infiniteItems.loading_)
  320. if (index > vm.records.length+vm.infiniteItems.toLoad_) {
  321. vm.infiniteItems.fetchMoreItems_(index);
  322. return null;
  323. }
  324. return vm.records [index];
  325. },
  326. // Required.
  327. // For infinite scroll behavior, we always return a slightly
  328. // higher
  329. // number than the previously loaded items.
  330. getLength: function() {
  331. return vm.maxItems;
  332. },
  333. fetchMoreItems_: function(index) {
  334. if (vm.infiniteItems.toLoad_ < index) {
  335. vm.infiniteItems.toLoad_ += vm.itemsPerPage;
  336. utilsSvc.showWaitMessage('Ricerca in corso...');
  337. vm.infiniteItems.loading_ = true;
  338. if ((vm.records.length+vm.itemsPerPage)<vm.selectedIndex)
  339. vm.itemsPerPage=vm.selectedIndex-vm.records.length+1;
  340. if (vm.filteredView) {
  341. var args = {filtroRicerca: userService.getFilter(), filtro:vm.filter};
  342. this.listPromise = DisposizioniRid.Filter({start: vm.records.length,size:vm.itemsPerPage,orderField:vm.filter.orderField},args).$promise;
  343. }
  344. else
  345. this.listPromise = DisposizioniRid.List({start: vm.records.length,size:vm.itemsPerPage},vm.filter).$promise;
  346. var mod=this;
  347. this.listPromise.then(
  348. function(data){
  349. vm.infiniteItems.loading_ = false;
  350. vm.infiniteItems.toLoad_=0;
  351. utilsSvc.cancelWaitMessage();
  352. vm.records = vm.records.concat(data);
  353. mod.numLoaded_ = vm.records.length;
  354. mod.lastStartIdx = vm.records.length;
  355. vm.topIndex = vm.selectedIndex;
  356. },
  357. function(error) {
  358. vm.infiniteItems.loading_ = false;
  359. vm.infiniteItems.toLoad_=0;
  360. utilsSvc.handleHttpError(error);
  361. }
  362. )
  363. }
  364. }
  365. }
  366. vm.getDisposizioni = function(){
  367. utilsSvc.showWaitMessage('Ricerca in corso...');
  368. vm.filter.selectedIds=[];
  369. if (vm.filteredView) {
  370. var args = {filtroRicerca: userService.getFilter(), filtro:vm.filter};
  371. DisposizioniRid.CountFiltered({},args,
  372. function(data){
  373. vm.records=[];
  374. vm.maxItems = data.value;
  375. vm.infiniteItems.numLoaded_ = 0;
  376. vm.infiniteItems.toLoad_ = 0;
  377. utilsSvc.cancelWaitMessage();
  378. if (data.value==0 && vm.filteredView) {
  379. utilsSvc.showMessage('Nessuna disposizione estratta');
  380. $window.history.back();
  381. }
  382. },
  383. function(error) {
  384. utilsSvc.cancelWaitMessage();
  385. utilsSvc.handleHttpError(error);
  386. }
  387. );
  388. }
  389. else
  390. DisposizioniRid.Count(vm.filter,
  391. function(data){
  392. vm.records=[];
  393. vm.maxItems = data.value;
  394. vm.infiniteItems.numLoaded_ = 0;
  395. vm.infiniteItems.toLoad_ = 0;
  396. utilsSvc.cancelWaitMessage();
  397. },
  398. function(error) {
  399. utilsSvc.cancelWaitMessage();
  400. utilsSvc.handleHttpError(error);
  401. }
  402. );
  403. }
  404. vm.decodeCircuitoSDD = function(cod){
  405. return utilsSvc.decodeCircuitoSDD(cod);
  406. }
  407. vm.getEsitoIcon = function(esito) {
  408. if (esito==='1')
  409. return "fa-clear";
  410. else if (esito==='2')
  411. return 'fa-times';
  412. }
  413. vm.ricercaDisposizioni = function(ev) {
  414. $mdDialog.show({
  415. templateUrl: 'templates/filtroDisposizioni.html',
  416. controller: 'filtroDisposizioniCtrl',
  417. targetEvent: ev,
  418. locals: {filter:vm.filter}
  419. })
  420. .then(function(args){
  421. //vm.filteredView = false;
  422. // dialog confirmed
  423. vm.filter = args;
  424. vm.getDisposizioni();
  425. },
  426. function(){
  427. }
  428. );
  429. }
  430. vm.mostraDisposizione = function(idx, ev) {
  431. if (typeof vm.records=="undefined" || typeof vm.records[idx]=="undefined")
  432. return
  433. vm.selectedIndex = idx;
  434. //var disposizione = angular.copy(vm.records[idx]);
  435. // if (disposizione.importo == null)
  436. // disposizione.importo = "0";
  437. // disposizione.importo = parseFloat(disposizione.importo.replace(",","."));
  438. DisposizioniRid.Get({id:vm.records[idx].id}).$promise.then(function(res){
  439. var disposizione = res;
  440. $mdDialog.show({
  441. templateUrl: 'templates/dettaglioDisposizione.html',
  442. controller: 'dettaglioDisposizioneCtrl',
  443. targetEvent: ev,
  444. locals: {label: 'SDD',disposizione:disposizione, appVariables: vm.appVariables}
  445. })
  446. .then(function(args){
  447. vm.getDisposizioni();
  448. },
  449. function(){
  450. }
  451. );
  452. }, function(err){
  453. utilsSvc.handleHttpError(err);
  454. }
  455. );
  456. }
  457. vm.key = function($event){
  458. if ($event.keyCode == 38)
  459. if (vm.selectedIndex>0)
  460. vm.selectedIndex--;
  461. else if ($event.keyCode == 40)
  462. if (vm.selectedIndex<vm.maxItems)
  463. vm.selectedIndex++;
  464. }
  465. vm.init = function() {
  466. vm.getDisposizioni();
  467. UserManager.AppVariables().$promise.then(function(data) {
  468. vm.appVariables = data;
  469. if (vm.filter.tipoChiamata == 'FiltroDisposizioni'
  470. || vm.filter.tipoChiamata == 'FiltroDisposizioniReadOnly'
  471. || vm.filter.tipoChiamata == 'DistinteBanca') {
  472. vm.abilitaFirma = vm.appVariables.profiloLocale == "DF";
  473. }
  474. });
  475. }
  476. $scope.$evalAsync(function() {
  477. vm.init();
  478. })
  479. }
  480. );