395 lines
16 KiB
JavaScript
Executable File
395 lines
16 KiB
JavaScript
Executable File
'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": "",
|
|
|
|
};
|
|
|
|
$scope.date = new Date();
|
|
|
|
var localDetail = JSON.parse(localStorage.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.localStorage.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(localStorage.getItem('localObj')).localBranchID
|
|
|
|
}
|
|
|
|
};
|
|
$http(filterlist).then(function (response) {
|
|
if (response.data) {
|
|
$scope.batch = [];
|
|
$scope.batchlist = response.data.batch;
|
|
$scope.university = response.data.university;
|
|
//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(localStorage.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
|
|
|
|
|
|
}]);
|
|
|
|
|
|
|
|
|