incassiSDDEsteriCtrl.js 15 KB

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