'use strict'; /*** controller***/ app.controller('report_expenseCtrl', ["$scope", "API_POINTS", "$http", "SweetAlert", "$state", 'md5', 'ipCookie', '$window', "dateListDescService", "$filter", function ($scope, apiPoint, $http, SweetAlert, $state, md5, ipCookie, $window, dateListDescService, $filter) { // DataTables configurable options $scope.filters = { "from_date": "", "to_date": "", // "fout_year": "", }; $scope.date = new Date(); // $scope.fyear = ""; var localDetail = JSON.parse(sessionStorage.getItem('localObj')); $scope.isTblShow = false; $scope.isLoader = false; $scope.isLoaderShow = false; $scope.isLoaderShow1 =false; $scope.isLoaderTxt = "Loading..."; $scope.isLoaderTxt1 ="Selected Date Range is wrong"; $scope.generateButtonTxt = "GENERATE"; $scope.generateButtonStatus = false; $scope.currentPage = 1; const LOCALTYPE = localDetail.localType; //console.log(LOCALTYPE) if (localDetail != null && (LOCALTYPE == 'R003' || LOCALTYPE == 'R004')) { } else { if ((localDetail != null) && (LOCALTYPE != 'R001')) { $state.go('app.dashboard'); } else { //ipCookie.remove('cookiechk'); window.sessionStorage.clear(); $state.go('login.signin'); } } $scope.filters = function () { var filterlist = { method: 'POST', url: apiPoint.url + 'report_filters/', headers: { 'Content-Type': 'application/json' }, data: { branch: JSON.parse(sessionStorage.getItem('localObj')).localBranchID } }; $http(filterlist).then(function (response) { if (response.data) { $scope.batch = []; $scope.batchlist = response.data.batch; $scope.university = response.data.university; // $scope.fyear = response.data.fyear; //Desc order Batchlist angular.forEach($scope.batchlist, function (values, key) { var parts = values.BatchDate.split("-"); $scope.batch.push({ "batchcode": values.batchcode, "batch": values.batch + '(' + values.batchcode + ')', "BatchDate": values.BatchDate, "givenDateObject": new Date(parts[2], parts[1] - 1, parts[0]) }) }); // call service for make a list in desc order based on date $scope.batch = dateListDescService.getOrderByList($scope.batch); //console.log($scope.branch); } else { } }); } $scope.expense_data = ''; $scope.expense = ''; $scope.totArray = ''; $scope.show = false; $scope.Total = 0; $scope.onSubmit = function (form) { $scope.isLoaderShow1 =true; var firstError = null; if (form.$invalid) { var field = null, firstError = null; $scope.show = true; for (field in form) { if (field[0] != '$') { if (firstError === null && !form[field].$valid) { firstError = form[field].$addDate; firstError = form[field].$toDate; } if (form[field].$pristine) { form[field].$dirty = true; } } } angular.element('.ng-invalid[toDate=' + firstError + ']').focus(); } else { //alert($scope.batch.name); $scope.message = ''; var response_data = { method: 'POST', url: apiPoint.url + 'report_expense/', headers: { 'Content-Type': 'application/json' }, data: { branch: JSON.parse(sessionStorage.getItem('localObj')).localBranchID, from: $scope.filters.from_date, to: $scope.filters.to_date } }; if($scope.filters.from_date > $scope.filters.to_date){ $scope.isLoaderShow =true; }else{ $scope.isLoaderShow =false; } $http(response_data).then(function (response) { if (response.data.expenseList == true) { $scope.isLoaderShow1 =false; $scope.expense_data = response.data.expense_data; for (var i = 0; i < $scope.expense_data.length; i++) $scope.expense_data[i].SL_NO = i + 1; } else { $scope.isLoaderShow1 =false; $scope.message = response.data.message; } }); $scope.getTotal = function () { var total = 0; for (var i = 0; i < $scope.expense_data.length; i++) { var item = $scope.expense_data[i]; total += parseFloat(item.total); } $scope.Total = total; $scope.totArray = { Expense_name:"Grand Total", total: $scope.Total } // console.log($scope.Total); $scope.expense = $scope.expense_data.concat($scope.totArray); // console.log($scope.expense_data); // console.log($scope.totArray); // console.log($scope.expense); return total; } } }; var mystyle = { sheetid: 'EXPENSE REPORT', headers: true, caption: { title: 'EXPENSE REPORT', width: '300px', style: 'font-size:50px;' }, // style:'background:#00FF00', column: { style: 'font-size:10px' }, }; $scope.exportData = function () { alasql('SELECT CAST(SL_NO AS NUMBER) as SLNO,Expense_name as ExpenseName,CAST(January as NUMBER) as January,CAST(February as NUMBER) as February,CAST(March as NUMBER) as March,CAST(April as NUMBER) as April,CAST(May as NUMBER) as May,CAST(June as NUMBER) as June,CAST(July as NUMBER) as July,CAST(August as NUMBER) as August,CAST(September as NUMBER) as September,CAST(October as NUMBER) as October,CAST(November as NUMBER) as November,CAST(December as NUMBER) as December,CAST(total as NUMBER) as Amount INTO XLS("Expense_report.xls",?) FROM ?',[mystyle,$scope.expense]); }; //pdf var rows1 = 0; $scope.generatePFD = function (datas) { $scope.loadStaring = true; var o = {}; var intDataSNo = 1; var intDate = 0; for (var i = 0; i <= datas.length - 1; ++i) { var element = datas[i]; //var element = datas[i-1]; console.log(datas); var value = {}; value['SL_NO'] = element.SL_NO || ''; value['Expense_name'] = element.Expense_name || '-'; value['January'] = element.January || ''; value['February'] =element. February || ''; value['March'] = element.March || ''; value['April'] = element.April || ''; value['May'] = element.May || ''; value['June'] = element.June || ''; value['July'] = element.July || ''; value['August'] = element.August || ''; value['September'] = element.September || ''; value['October'] = element.October || ''; value['November'] = element.November || ''; value['December'] = element.December || ''; value['total'] = element.total || 0; o[intDate] = value; intDate++; intDataSNo++; } rows1 = o; var headers = { fila_1: { col_1: { text: 'SLNO', style: 'tableHeader', alignment: 'center', bold: true }, col_2: { text: 'Description', style: 'tableHeader', alignment: 'center', bold: true }, col_3: { text: 'January', style: 'tableHeader', alignment: 'center', bold: true }, col_4: { text: 'February', style: 'tableHeader', alignment: 'center', bold: true }, col_5: { text: 'March', style: 'tableHeader', alignment: 'center', bold: true }, col_6: { text: 'April', style: 'tableHeader', alignment: 'center', bold: true }, col_7: { text: 'May', style: 'tableHeader', alignment: 'center', bold: true }, col_8: { text: 'June', style: 'tableHeader', alignment: 'center', bold: true }, col_9: { text: 'July', style: 'tableHeader', alignment: 'center', bold: true }, col_10: { text: 'August', style: 'tableHeader', alignment: 'center', bold: true }, col_11: { text: 'September', style: 'tableHeader', alignment: 'center', bold: true }, col_12: { text: 'October', style: 'tableHeader', alignment: 'center', bold: true }, col_13: { text: 'November', style: 'tableHeader', alignment: 'center', bold: true }, col_14: { text: 'December', style: 'tableHeader', alignment: 'center', bold: true }, col_15: { text: 'Total Amount', style: 'tableHeader', alignment: 'center', bold: true }, } } var body = []; for (var key in headers) { if (headers.hasOwnProperty(key)) { var header = headers[key]; var row = new Array(); row.push(header.col_1); row.push(header.col_2); row.push(header.col_3); row.push(header.col_4); row.push(header.col_5); row.push(header.col_6); row.push(header.col_7); row.push(header.col_8); row.push(header.col_9); row.push(header.col_10); row.push(header.col_11); row.push(header.col_12); row.push(header.col_13); row.push(header.col_14); row.push(header.col_15); body.push(row); } } console.log(rows1); for (var key in rows1) { if (rows1.hasOwnProperty(key)) { var data = rows1[key]; var row = new Array(); row.push(data.SL_NO.toString()); row.push(data.Expense_name.toString()); row.push(data.January.toString()); row.push(data.February.toString()); row.push(data.March.toString()); row.push(data.April.toString()); row.push(data.May.toString()); row.push(data.June.toString()); row.push(data.July.toString()); row.push(data.August.toString()); row.push(data.September.toString()); row.push(data.October.toString()); row.push(data.November.toString()); row.push(data.December.toString()); row.push(data.total.toString()); body.push(row); } } var f_date = $filter('date')(new Date($scope.filters.from_date), 'dd-MM-yyyy'); var t_date = $filter('date')(new Date($scope.filters.to_date), 'dd-MM-yyyy'); var docDefinition = { pageMargins: [20, 85, 20, 50], pageOrientation: 'landscape', header: function () { return { margin: 0, columns: [ { text: ['Expense Report ' + f_date + ' to ' + t_date], alignment: 'left', bold: true, margin: [20, 30, 0, 0], fontSize: 18 } ] } }, footer: function (currentPage, pageCount) { if (currentPage === pageCount) { return { columns: [ { text: [''], alignment: 'left', margin: [10, 0, 0, 0], fontSize: 8 }, { text: ['\n Page ' + currentPage.toString() + ' of ' + pageCount], alignment: 'right', margin: [0, 10, 10, 0], fontSize: 10 } ] }; } else { return { text: 'Page ' + currentPage.toString() + ' of ' + pageCount, alignment: 'right', margin: [0, 10, 10, 0], fontSize: 10 }; } }, content: [ { // layout: 'lightHorizontalLines', // optional table: { headerRows: 1, keepWithHeaderRows: 0, body: body }, layout: { hLineWidth: function (i, node) { return 0.5; }, vLineWidth: function (i, node) { // return (i === 0 || i === node.table.widths.length) ? 0 : 40; return 0.5; }, hLineColor: function (i, node) { return '#2D4D81'; }, vLineColor: function (i, node) { return '#2D4D81'; }, } } ], styles: { header: { fontSize: 12, bold: true }, subheader: { fontSize: 12, bold: true }, quote: { italics: true }, small: { fontSize: 6 }, sta: { fontSize: 8, bold: false, alignment: 'justify' } } }; pdfMake.createPdf(docDefinition).download('Expense Report).pdf', function (res) { if (res === 'success') { $scope.$apply(function () { $scope.loadStaring = false; }); } else { $scope.$apply(function () { $scope.loadStaring = false; }); } }); } //end of pdf }]);