apollodec/Apollo/assets/js/controllers/report_expenseCtrl.js

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
}]);