diff --git a/Apollo/api/application/config/routes.php b/Apollo/api/application/config/routes.php
index 2b30e564..e0821fab 100755
--- a/Apollo/api/application/config/routes.php
+++ b/Apollo/api/application/config/routes.php
@@ -176,6 +176,18 @@ $route['deleteSetFeesDetails'] = 'Fees_Status_Controller/deleteSetFeesDetails';
/*update fees details for student*/
$route['updateFeesDetails'] = 'Fees_Status_Controller/updateFeesDetails';
$route['getUniversityCourseForFees'] = 'Fees_Status_Controller/getUniversityCourseForFees';
+
+
+/*account type*/
+$route['getAccounttypes'] = 'DayBook_Controller/getAccounttypes';
+$route['addAccountnameDetails'] = 'DayBook_Controller/addAccountnameDetails';
+$route['IncomeExpenseDetails'] = 'DayBook_Controller/getIncomeExpenseDetails';
+$route['ViewFullIncomeDetails'] = 'DayBook_Controller/ViewFullIncomeDetails';
+$route['GetSubTypes'] = 'DayBook_Controller/GetSubTypes';
+
+
+
+
/*
* get default activity details
* */
diff --git a/Apollo/api/application/controllers/DayBook_Controller.php b/Apollo/api/application/controllers/DayBook_Controller.php
index b7f3fc13..818009c5 100755
--- a/Apollo/api/application/controllers/DayBook_Controller.php
+++ b/Apollo/api/application/controllers/DayBook_Controller.php
@@ -30,8 +30,61 @@ class DayBook_Controller extends REST_Controller {
parent::__construct();
// load the university model
$this->load->model('DayBook_model', 'daybook_model');
+
+
+ $this->methods['addAccountnameDetails_get']['limit'] = 500; // 500 requests per hour per user/key
+ $this->methods['addAccountnameDetails_post']['limit'] = 100; // 100 requests per hour per user/key
+ $this->methods['addAccountnameDetails_delete']['limit'] = 50; // 50 requests per hour per user/key
+ $this->load->model('Status_model', 'status_model');
+
+ $this->methods['GetSubTypes']['limit'] = 500;
}
+
+
+
+ public function addAccountnameDetails_post()
+ {
+
+
+ $now = new DateTime();
+ $now->setTimezone(new DateTimezone('Asia/Kolkata'));
+ $details['ListName'] = $this->post('statusName');
+ $details['ListGroup'] = "10";
+ $details['CreatedBy'] = $this->post('createdBy');
+ $details['IsActive'] = $this->post('status');
+ $details['BranchCode'] = $this->post('branch');
+ $details['CreatedOn'] = $now->format('Y-m-d H:i:s');
+ $statusDetails = $this->status_model->addstatus($details);// Check if the users data store contains users (in case the database result returns NULL)
+ if ($statusDetails)
+ {
+ $statusDetails['status'] = REST_Controller::HTTP_OK;
+ // Set the response and exit
+ $this->response($statusDetails, REST_Controller::HTTP_OK); // OK (200) being the HTTP response code
+ }
+ else
+ {
+ // Set the response and exit
+ $this->response([
+ 'message' => 'Something went wrong.please try again!',
+ 'status' => REST_Controller::HTTP_NOT_FOUND
+ ], REST_Controller::HTTP_NOT_FOUND); // NOT_FOUND (404) being the HTTP response code
+ }
+
+
+ }
+
+
+
+
+
+
+
+
+
+
+
+
//get income expese type, name details
public function getIncomeExpenseTypeState_post() {
$reqData = $this->post('localReqDetails');
@@ -293,5 +346,108 @@ class DayBook_Controller extends REST_Controller {
], REST_Controller::HTTP_NOT_FOUND); // NOT_FOUND (404) being the HTTP response code
}
}
+
+
+
+
+ public function getAccounttypes_post()
+ {
+ $requestedBy = $this->post('requestedBy');
+ $requestedBranch = $this->post('requestBranch');
+ //echo $requestedBy;
+ $getStatus = $this->daybook_model->getAccounttype($requestedBy,$requestedBranch);
+// print_r($getStatus);
+// die();
+ if ($getStatus)
+ {
+ $getStatus['status'] = REST_Controller::HTTP_OK;
+ // Set the response and exit
+ $this->response($getStatus, REST_Controller::HTTP_OK); // OK (200) being the HTTP response code
+ }
+ else
+ {
+ // Set the response and exit
+ $this->response([
+ 'message' => 'No records found!',
+ 'status' => REST_Controller::HTTP_NOT_FOUND
+ ], REST_Controller::HTTP_NOT_FOUND); // NOT_FOUND (404) being the HTTP response code
+ }
+
+
+ }
+
+ public function ViewFullIncomeDetails_post()
+ {
+ $from = $this->post('from');
+ $to = $this->post('to');
+ $incid = 'I002';
+
+ $getincomedetails = $this->daybook_model->getIncome_Details($from,$to,$incid);
+
+ // print_r($getincomedetails);
+ // die();
+ if ($getincomedetails)
+ {
+ $getincomedetails['status'] = REST_Controller::HTTP_OK;
+ // Set the response and exit
+ $this->response($getincomedetails, REST_Controller::HTTP_OK); // OK (200) being the HTTP response code
+ }
+
+
+ }
+
+
+
+ public function getIncomeExpenseDetails_post()
+ {
+ $from = $this->post('from');
+ $to = $this->post('to');
+ $br = $this->post('branch');
+ // echo $from.'from';
+ // echo $to.'to';
+ $getStatus = $this->daybook_model->Income_expense($from,$to,$br);
+ //print_r($getStatus);
+ if ($getStatus)
+ {
+ $getStatus['status'] = REST_Controller::HTTP_OK;
+ // Set the response and exit
+ $this->response($getStatus, REST_Controller::HTTP_OK); // OK (200) being the HTTP response code
+ }
+ else
+ {
+ // Set the response and exit
+ $this->response([
+ 'message' => 'No records found!',
+ 'status' => REST_Controller::HTTP_NOT_FOUND
+ ], REST_Controller::HTTP_NOT_FOUND); // NOT_FOUND (404) being the HTTP response code
+ }
+
+ }
+
+
+ public function GetSubTypes_post()
+ {
+//echo 'in';
+
+ $getsubtypes = $this->daybook_model->Income_expenseSubtype();
+
+ // print_r($getsubtypes);
+ // die();
+
+ if($getsubtypes)
+ {
+
+ $getsubtypes['status'] = REST_Controller::HTTP_OK;
+ // Set the response and exit
+ $this->response($getsubtypes, REST_Controller::HTTP_OK); // OK (200) being the HTTP response code
+ }
+ else
+ {
+ $this->response([
+ 'message' => 'No records found!',
+ 'status' => REST_Controller::HTTP_NOT_FOUND
+ ], REST_Controller::HTTP_NOT_FOUND);
+ }
+ }
}
diff --git a/Apollo/api/application/models/DayBook_model.php b/Apollo/api/application/models/DayBook_model.php
index 26a2b1ec..f1c08f6b 100755
--- a/Apollo/api/application/models/DayBook_model.php
+++ b/Apollo/api/application/models/DayBook_model.php
@@ -626,4 +626,117 @@ class DayBook_model extends CI_Model
$results['dayBookListDetails'] = $dayBookDetailsList;
return $results;
}
+
+
+ public function getAccounttype($requestedBy,$requestedBranch)
+ {
+ $this->db->select('ListCode,ListName,IsActive');
+ $this->db->where('ListGroup','10');
+ //$this->db->where('BranchCode', $reqBranch);
+ $this->db->order_by('ListCode','DESC');
+ $statusDetails = $this->db->get(PICK_LIST_DETAILS);
+ if($statusDetails->result()){
+
+ $result['Status'] = true;
+ $result['details'] = $statusDetails->result();
+ }
+ else {
+ $result['Status'] = false;
+ $result['message'] = "No records found!";
+ }
+
+ return $result;
+ }
+
+
+ public function Income_expense($from,$to,$br)
+ {
+ $incomecode='I002';
+ $expensecode='I001';
+
+ $fromd= date("d-m-Y",strtotime($from));
+ $tod=date("d-m-Y",strtotime($to));
+
+ $subQuery= 'SELECT
+ DISTINCT(p.Name) AS TID,ListName,
+ SUM(IF(p.Name=?,Amount,0)) AS Income,
+ SUM(IF(p.Name=?,Amount,0)) AS Expense,
+ SUM( CASE Name
+ WHEN ? THEN Amount
+ WHEN ? THEN Amount
+ END) AS Total
+ FROM
+ T_DayBookMaster AS p
+ join T_PickListDetails on T_PickListDetails.ListCode = p.name
+ where Date>=? and Date<=? and p.IsActive=? and (p.Name=? or p.Name=?)
+ GROUP BY p.`Name`';
+ $query = $this->db->query($subQuery,array($incomecode,$expensecode,$incomecode,$expensecode,$fromd,$tod,'1','I001','I002'));
+ $expense = $query->result();
+
+ if(count($query)>0)
+ {
+ $results['expense_data'] = $expense;
+ }
+
+ return $results;
+
+ }
+
+
+ public function getIncome_Details($from,$to,$incid)
+ {
+ $fromd= date("d-m-Y",strtotime($from));
+ $tod=date("d-m-Y",strtotime($to));
+ $expid = 'I001';
+
+ // $subQuery = 'select T_DayBookMaster.ID,TypeName,Amount,T_DayBookMaster.Date,Reason,Description from T_DayBookMaster
+ // join T_Income_Outcome_Master on T_Income_Outcome_Master.TypeID=T_DayBookMaster.Name and
+ // T_Income_Outcome_Master.ID = T_DayBookMaster.Type where Name=? and date>=? and date<=?';
+
+ $subQuery = 'select Name,T_DayBookMaster.ID,T_Income_Outcome_Master.TypeID as OrgType,T_Income_Outcome_Master.TypeName,Amount,T_DayBookMaster.Date,Reason,T_DayBookMaster.Description,ListName from T_DayBookMaster left join T_Income_Outcome_Master on
+ T_Income_Outcome_Master.ID = T_DayBookMaster.Type
+ join T_PickListDetails on T_PickListDetails.ListCode = T_Income_Outcome_Master.TypeID
+ where Name in (?,?) and date>=? and date<=?';
+
+ $query = $this->db->query($subQuery,array($incid,$expid,$fromd,$tod));
+
+
+ // print_r( $this->db->last_query());
+ // die();
+
+ $expense = $query->result();
+
+ if(count($query)>0)
+ {
+ $results['fullexpense_detail'] = $expense;
+ }
+
+ return $results;
+
+ //return $query->result_array();
+
+
+ }
+
+
+ public function Income_expenseSubtype()
+ {
+ $this->db->select('ListCode,ListName,IsActive');
+ $this->db->where('ListGroup','10');
+
+ $this->db->order_by('ListCode','DESC');
+ $statusDetails = $this->db->get(PICK_LIST_DETAILS);
+ if($statusDetails->result()){
+
+ $result['Status'] = true;
+ $result['details'] = $statusDetails->result();
+ }
+ else {
+ $result['Status'] = false;
+ $result['message'] = "No records found!";
+ }
+
+ return $result;
+
+ }
}
\ No newline at end of file
diff --git a/Apollo/assets/i18n/en.json b/Apollo/assets/i18n/en.json
index 35f88782..548b628a 100755
--- a/Apollo/assets/i18n/en.json
+++ b/Apollo/assets/i18n/en.json
@@ -75,7 +75,8 @@
"SESSIONMASTER":"SESSION DETAILS",
"SESSIONSCHEDULE": "SESSION SCHEDULE",
"HALLTICKET": "GENERATE HALLTICKET",
- "REREGISTRATION":"RE REGISTRATION"
+ "REREGISTRATION":"RE REGISTRATION",
+ "ACCOUNTTYPE":"ACCOUNT TYPE"
},
"report": {
"TITLE": "REPORTS",
@@ -136,7 +137,8 @@
"DAYBOOK": "DAY BOOK ",
"APPROVAL": "APPROVE EXPENSE",
"DAYBOOKDETAILS": "DAYBOOK DETAILS",
- "DAYBOOKAPPROVAL": "DAYBOOK APPROVAL"
+ "DAYBOOKAPPROVAL": "DAYBOOK APPROVAL",
+ "INCOMEEXPENSEREPORT" : "INCOME EXPENSE REPORT"
},
"mydetails": {
"MAIN": "MY DETAILS"
diff --git a/Apollo/assets/js/config.constant.js b/Apollo/assets/js/config.constant.js
index 13c8a568..16a9188a 100755
--- a/Apollo/assets/js/config.constant.js
+++ b/Apollo/assets/js/config.constant.js
@@ -122,6 +122,22 @@ app.constant('JS_REQUIRES', {
* */
'statusCtrl': 'assets/js/controllers/statusCtrl.js',
/*
+
+
+ * status
+ * */
+ 'incomeCtrl': 'assets/js/controllers/incomeCtrl.js',
+ /*
+
+ * */
+ 'income_reportCtrl': 'assets/js/controllers/income_reportCtrl.js',
+ /*
+
+
+
+
+
+
* student status updation
* */
'studyMaterialStatusCtrl': 'assets/js/controllers/studyMaterialStatusCtrl.js',
diff --git a/Apollo/assets/js/config.router.js b/Apollo/assets/js/config.router.js
index bbcf3cb5..02c96bfa 100755
--- a/Apollo/assets/js/config.router.js
+++ b/Apollo/assets/js/config.router.js
@@ -154,6 +154,14 @@ app.config(['$stateProvider', '$urlRouterProvider', '$controllerProvider', '$com
label: 'Course'
},
// resolve: loadSequence('iconsCtrl')
+ }).state('app.master.accounttype', {
+ url: '/accounttype',
+ templateUrl: "assets/views/add_income_expense.html",
+ resolve: loadSequence('incomeCtrl','ngTable', 'ladda', 'angular-ladda'),
+ title: 'income_expense',
+ ncyBreadcrumb: {
+ label: 'income_expense'
+ },
}).state('app.master.status', {
url: '/status',
templateUrl: "assets/views/status.html",
@@ -162,6 +170,14 @@ app.config(['$stateProvider', '$urlRouterProvider', '$controllerProvider', '$com
ncyBreadcrumb: {
label: 'Status'
},
+ }).state('app.master.incomeexpensereport', {
+ url: '/incomeexpensereport',
+ templateUrl: "assets/views/income_expense_report.html",
+ resolve: loadSequence('income_reportCtrl','ngTable', 'ladda', 'angular-ladda'),
+ title: 'IncomeExpense',
+ ncyBreadcrumb: {
+ label: 'income_expense'
+ },
}).state('app.master.studentStatusUpdate', {
url: '/default activity',
templateUrl: "assets/views/studentStatusUpdate.html",
diff --git a/Apollo/assets/js/controllers/incomeCtrl.js b/Apollo/assets/js/controllers/incomeCtrl.js
new file mode 100644
index 00000000..b6dd89c8
--- /dev/null
+++ b/Apollo/assets/js/controllers/incomeCtrl.js
@@ -0,0 +1,269 @@
+'use strict';
+/**
+ * controllers for ng-table
+ * Simple table with sorting and filtering on AngularJS
+ */
+// var helloApp = angular.module("helloApp", []);
+app.controller("incomeCtrl", ["$scope", "toaster", "$filter", "API_POINTS", "$localStorage", "$http", "$state", 'ipCookie', function ($scope, toaster, $filter, apiPoint, $localStorage, $http, $state, ipCookie) {
+
+ $scope.myModel = {
+ "StatusName": "",
+ "switchsetting": true
+ };
+
+ // get local client details
+ var localDetail = JSON.parse(localStorage.getItem('localObj'));
+ var localDetails = ipCookie('cookiechk');
+
+ $scope.initHead = function() {
+ // alert();
+ const LOCALTYPE = localDetail.localType;
+ if (localDetail != null && (LOCALTYPE == 'R003' || LOCALTYPE == 'R004' )) {
+ }else {
+ if(localDetail != null) {
+ $state.go('app.dashboard');
+ } else {
+ ipCookie.remove('cookiechk');
+ $window.localStorage.clear();
+ $state.go('login.signin');
+ }
+ }
+ }
+
+ /*
+ * edit status details
+ * created by Surendiran
+ * */
+ $scope.editId = -1;
+ $scope.setEditId = function (pid) {
+ $scope.editId = pid;
+ $scope.viewId = -1;
+ };
+
+ /*
+ * cancel edit div
+ * created by Surendiran
+ * */
+ $scope.cancel = function () {
+ $scope.init();
+ $scope.editId = -1;
+
+ };
+
+ // sorting function for table params
+ $scope.sort = function (keyname) {
+ $scope.sortKey = keyname; //set the sortKey to the param passed
+ $scope.reverse = !$scope.reverse; //if true make it false and vice versa
+ }
+
+
+ $scope.statusForm = {
+ submit: function (form, myModel, loading) {
+ var firstError = null;
+ if (form.$invalid) {
+ var field = null, firstError = null;
+ for (field in form) {
+ if (field[0] != '$') {
+ if (firstError === null && !form[field].$valid) {
+ firstError = form[field].$name;
+ }
+ if (form[field].$pristine) {
+ form[field].$dirty = true;
+ }
+ }
+ }
+ angular.element('.ng-invalid[name=' + firstError + ']').focus();
+ // swal("The form cannot be submitted because it contains validation errors!", "Errors are marked with a red, dashed border!", "error");
+ } else {
+
+ $scope.ldloading1 = {};
+
+ $scope.ldloading1[loading.replace('-', '_')] = true;
+
+
+ var addstatus = {
+ method: 'POST',
+ url: apiPoint.url + 'addAccountnameDetails/',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ data: {
+ statusName: myModel.StatusName,
+ status: myModel.switchsetting,
+ createdBy: JSON.parse(localStorage.getItem('localObj')).localUserID,
+ branch : localDetail.localBranchID
+ }
+ };
+
+ $http(addstatus).then(function (response) {
+ if (response.data.status == 200 && response.data.Status) {
+ $scope.ldloading1[loading.replace('-', '_')] = false;
+ $scope.init();
+ swal(" ", "Status added successfully.", "success");
+ $state.go($state.current, {}, { reload: true });
+ } else {
+ $scope.ldloading1[loading.replace('-', '_')] = false;
+ swal("", response.data.message, "error");
+ }
+ });
+
+
+ }
+ },
+
+ reset: function (form) {
+
+ $scope.myModel = angular.copy($scope.master);
+ form.$setPristine(true);
+ $scope.myModel = {
+ "StatusName": "",
+ "switchsetting": true
+ };
+
+ }
+ };
+ /*
+ *get status details when page loading called from view file
+ *
+ *
+ * created by Surendiran
+ * */
+ $scope.loader = '';
+ $scope.emptyData = '';
+ $scope.init = function () {
+
+ var getStatus = {
+ method: 'POST',
+ url: apiPoint.url + 'getAccounttypes/',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ data: {
+ requestBranch: localDetail.localBranchID,
+ requestedBy: JSON.parse(localStorage.getItem('localObj')).localUserID
+ }
+ };
+
+ $http(getStatus).then(function (response) {
+ if (response.data.status == 200 && response.data.Status) {
+
+ // console.log(response.data.details);
+ $scope.emptyData = true;
+ $scope.loader = true;
+
+ $scope.statusInfo = response.data.details;
+ //console.log($scope.statusInfo);
+
+ } else {
+ $scope.emptyData = false;
+ $scope.loader = true;
+
+ $scope.statusInfo = '';
+
+ }
+ });
+
+ // var getBranchList = {
+ // method: 'POST',
+ // url: apiPoint.url + 'getBranchListStatusUpdate/',
+ // headers: {
+ // 'Content-Type': 'application/json'
+ // },
+ // data: {
+ // requestedBy: JSON.parse(localStorage.getItem('localObj')).localUserID
+ // }
+ // };
+
+ // $http(getBranchList).then(function (response) {
+ // if (response.data.branchListStatus == true) {
+ // $scope.branchList = response.data.branch_list_details;
+ // } else {
+ // $scope.branchListMessage = response.data.message;
+ // }
+ // });
+
+ };
+
+ /*
+ * update the status details
+ * created by Surendiran
+ * */
+ $scope.updatestatus = function (myModel, form, loading) {
+
+ var firstError = null;
+ if (form.$invalid) {
+ var field = null, firstError = null;
+ for (field in form) {
+ if (field[0] != '$') {
+ if (firstError === null && !form[field].$valid) {
+ firstError = form[field].$stop_name;
+ }
+
+ if (form[field].$pristine) {
+ form[field].$dirty = true;
+ }
+ }
+ }
+ angular.element('.ng-invalid[name=' + firstError + ']').focus();
+ } else {
+ $scope.ldloading = {};
+
+ $scope.ldloading[loading.replace('-', '_')] = true;
+
+
+ var update = {
+ method: 'POST',
+ url: apiPoint.url + 'updateStatusDetails/',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ data: {
+ ListCode: myModel.ListCode,
+ ListName: myModel.ListName,
+ status: myModel.IsActive,
+ requestBranch: localDetail.localBranchID,
+ updatedBy: JSON.parse(localStorage.getItem('localObj')).localUserID
+ }
+ };
+ $http(update).then(function (response) {
+ if (response.data.Status) {
+ $scope.ldloading[loading.replace('-', '_')] = false;
+ swal("", "Updated Successfully", "success");
+ $scope.editId = -1;
+ $scope.init();
+ } else {
+ $scope.ldloading[loading.replace('-', '_')] = false;
+ $scope.init();
+ swal("", response.data.message, "error");
+ }
+ });
+ }
+ };
+
+ $scope.localBranchDetails = '';
+
+ $scope.selectBranch = function(branchCode) {
+ // alert(branchCode);
+
+ var getBranchStatusList = {
+ method: 'POST',
+ url: apiPoint.url + 'getBranchStatusList/',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ data: {
+ requestedBy: localDetail,
+ branchCode: branchCode
+ }
+ };
+
+ $http(getBranchStatusList).then(function (response) {
+ if (response.data.branchListStatus == true) {
+ $scope.branchList = response.data.branch_list_details;
+ } else {
+ $scope.branchListMessage = response.data.message;
+ }
+ });
+
+ }
+}]);
\ No newline at end of file
diff --git a/Apollo/assets/js/controllers/income_reportCtrl.js b/Apollo/assets/js/controllers/income_reportCtrl.js
new file mode 100644
index 00000000..bd7831c9
--- /dev/null
+++ b/Apollo/assets/js/controllers/income_reportCtrl.js
@@ -0,0 +1,432 @@
+'use strict';
+/*** controller***/
+app.controller('income_reportCtrl', ["$scope","$rootScope","toaster", "$filter", "ngTableParams", "API_POINTS", "$localStorage", "$http", "$state","$modal","$log",
+ function ($scope,$rootScope,toaster, $filter, ngTableParams, apiPoint, $localStorage, $http, $state,$modal,$log){
+
+ //function ($scope, apiPoint, $http, SweetAlert, $state,$modal, md5, ipCookie, $window, dateListDescService) {
+
+ // DataTables configurable options
+
+
+ $scope.filters = {
+
+ "from_date": "",
+ "to_date": "",
+
+ };
+
+ // $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.onSubmit = function () {
+
+
+ //alert($scope.batch.name);
+ $scope.expense_data = '';
+ $scope.message = '';
+ $scope.incomedetail = '';
+ $scope.Subtypes = '';
+
+ var response_data = {
+ method: 'POST',
+ url: apiPoint.url + 'IncomeExpenseDetails/',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ data: {
+ branch: JSON.parse(localStorage.getItem('localObj')).localBranchID,
+ from : $scope.filters.from_date,
+ to : $scope.filters.to_date
+ }
+
+ };
+
+ $http(response_data).then(function (response) {
+ //console.log(response.data);
+ if (response.data.status == '200') {
+
+ $scope.expense_data = response.data.expense_data;
+ //console.log($scope.expense_data)
+
+
+ } else {
+ $scope.message = response.data.message;
+ }
+
+ });
+
+
+
+ var income_data = {
+ method: 'POST',
+ url: apiPoint.url + 'ViewFullIncomeDetails/',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ data: {
+ branch: JSON.parse(localStorage.getItem('localObj')).localBranchID,
+ from : $scope.filters.from_date,
+ to : $scope.filters.to_date
+ }
+
+ };
+
+
+ $http(income_data).then(function (response) {
+ //console.log(response.data);
+ if (response.data.status == '200')
+ {
+ $scope.incomedetail = response.data;
+ $scope.fullincomedetail = response.data.fullexpense_detail;
+ //console.log($scope.fullincomedetail);
+
+
+ }
+ else
+ {
+ $scope.message = response.data.message;
+ }
+
+ });
+
+
+
+
+ var getsubdivision = {
+ method: 'POST',
+ url: apiPoint.url + 'GetSubTypes/',
+ headers: {
+ 'Content-Type': 'application/json'
+
+ },
+ data: {
+ branch: JSON.parse(localStorage.getItem('localObj')).localBranchID,
+ from : $scope.filters.from_date,
+ to : $scope.filters.to_date
+ }
+
+
+ };
+
+
+ $http(getsubdivision).then(function (response) {
+ // console.log(response.data);
+ if (response.data.status == '200')
+ {
+ $scope.Subtypes = response.data.details;
+
+ // console.log($scope.Subtypes);
+
+ }
+ else
+ {
+ $scope.message = response.data.message;
+ }
+
+ });
+
+
+ }
+
+
+
+
+ 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 ()
+ {
+ //alert()
+
+ angular.forEach(($scope.fullincomedetail),function(fullincomedetail,key)
+ {
+ //console.log($scope.fullincomedetail[key].TypeName);
+ if($scope.fullincomedetail[key].Name == 'I001')
+ {
+ $scope.fullincomedetail[key]['Type'] = 'Expense';
+
+ }
+
+ else if($scope.fullincomedetail[key].Name == 'I002')
+ {
+ $scope.fullincomedetail[key]['Type'] = 'Income';
+ }
+
+
+ //console.log($scope.fullincomedetail);
+
+ // alasql('SELECT Type,ListName,TypeName,Date,Amount INTO XLS("Income_Expense_report.xls",?) FROM ?',[mystyle,$scope.fullincomedetail]);
+
+
+ });
+
+//console.log($scope.fullincomedetail);
+ alasql('SELECT Type,ListName,TypeName,Date,Amount INTO XLS("Income Expense report.xls",?) FROM ?',[mystyle,$scope.fullincomedetail]);
+
+ };
+
+
+ $scope.OpenWindowStatus = false;
+ $scope.editId = -1;
+ $scope.setEditId = function (P)
+ {
+ //alert(P);
+ $scope.editId = P;
+
+ }
+
+ $scope.close = function ()
+ {
+
+ $scope.editId = -1;
+
+ }
+
+$scope.fdate ='';
+$scope.tdate ='';
+//$scope.Subtypes = '';
+
+
+ $scope.changeSem = function()
+ {
+
+ $scope.open($scope.fullincomedetail,$scope.expense_data,$scope.Subtypes);
+ }
+
+
+var fm_date= '';
+var Total_inc = 0;
+var Total_exp = 0;
+ $scope.open = function(incomeexpensedetails,incomeexpenselist,Subtypes)
+ {
+
+ //Total_inc === incomeexpenselist[1].Total
+ if(incomeexpenselist[1] == 'undefined' || incomeexpenselist[1] == null)
+ {
+ Total_exp=0;
+ }
+ else
+ {
+ Total_exp = incomeexpenselist[1].Total;
+ }
+
+ if(incomeexpenselist[0] == 'undefined' || incomeexpenselist[0] == null)
+ {
+ Total_inc=0;
+ }
+ else
+ {
+ Total_inc = incomeexpenselist[0].Total;
+ }
+ //console.log(incomeexpenselist[1]);
+
+//
+ var formate = "dd-MM-yyyy";
+
+ $scope.fdate = $filter('date')(new Date($scope.filters.from_date), formate);
+ $scope.tdate = $filter('date')(new Date($scope.filters.to_date), formate);
+
+ // fm_date = $scope.fdate;
+ // console.log(fm_date);
+
+ incomeexpensedetails['fdate'] = $scope.fdate;
+ incomeexpensedetails['tdate'] = $scope.tdate;
+ // console.log(incomeexpensedetails);
+ // console.log(Subtypes);
+
+ $rootScope.income_expendelist = incomeexpenselist;
+ $rootScope.income_expensedetails = incomeexpensedetails;
+ $rootScope.listdetails = Subtypes;
+ $rootScope.fdate = $scope.fdate;
+ $rootScope.tdate = $scope.tdate
+ //$rootScope.sum = incomeexpenselist[1].Total - incomeexpenselist[0].Total;
+
+ $rootScope.sum = Total_inc -Total_exp;
+ //console.log($rootScope.sum);
+ //console.log($rootScope.listdetails);
+
+ var modalInstance = $modal.open({
+ templateUrl: 'assets/views/income_expense_report_pdf.html',
+ controller: 'income_reportCtrl',
+ // size: size,
+ resolve: {
+ pdfitems: function () {
+ //return $scope.FeesName;
+ return incomeexpensedetails;
+ }
+ }
+ });
+
+
+
+ modalInstance.result.then(function (selectedItem) {
+ $scope.selected = selectedItem;
+ }, function () {
+ $log.info('Modal dismissed at: ' + new Date());
+ });
+
+
+
+ };
+
+
+
+
+
+
+ $scope.generatePDF = function()
+ {
+
+
+ kendo.drawing.drawDOM($("#income_expensepdf")).then(function(group) {
+ kendo.drawing.pdf.saveAs(group, "income_expensepdf"+".pdf");
+ });
+
+
+ }
+
+ // alert('in');
+ // //console.log($scope.income_expensedetails.fdate);
+ // // return false;
+
+ // var doc = new jsPDF('A4');
+ // var canvas = document.createElement("canvas");
+ // canvas.width = 100;
+ // canvas.height = 100;
+ // var ctx = canvas.getContext("2d");
+ // doc.line(10,240,200,240);
+ // doc.setFontSize(20);
+ // doc.text(70,32,"Apollo Distance Education");
+ // doc.setFontSize(15);
+ // doc.text(85,40,"Profit and Loss Report");
+ // doc.setFontSize(12);
+ // doc.text(83,48,"From "+$scope.income_expensedetails.fdate+" to "+$scope.income_expensedetails.tdate );
+ // doc.setFontSize(10);
+ // // doc.text(11,55,"Income");
+
+ // var TypeName= '';
+ // var row=15;
+ // var column=60;
+ // var columnam='';
+ // var rowam=60;
+
+ // doc.rect(10, 10, 190, 280);
+ // var col = 45;
+
+ // // var elem = document.getElementById('myCanvas');
+ // // var two = new Two({
+ // // type: Two.Types.canvas,
+ // // fullscreen: true
+ // // }).appendTo(elem);
+ // // two.update();
+
+ // var line = two.makeLine(450, 140, 900, 140);
+ // line.linewidth = 5;
+ // line.stroke = "blue";
+ // // doc.rect(col,57,5,5);
+ // //console.log(JSON.parse($scope.income_expensedetails).length);return false;
+ // angular.forEach(($scope.income_expensedetails),function(income_expensedetails,key)
+ // {
+ // //console.log(income_expensedetails.TypeName);
+ // TypeName = income_expensedetails.TypeName;
+ // //console.log(income_expensedetails.Amount);
+ // row= row+10;
+ // // column= column+10;
+ // rowam=rowam+10;
+ // columnam = columnam+10;
+ // if(income_expensedetails.Name == 'I002')
+ // {
+
+ // doc.setFontSize(11);
+ // doc.text(11,55,"Income");
+ // doc.setFontSize(8);
+ // column= column+15;
+ // console.log(income_expensedetails.TypeName)
+
+ // doc.text(row,column,income_expensedetails.TypeName);
+ // doc.text(rowam,column,income_expensedetails.Amount);
+ // }
+
+ // });
+
+
+
+ // angular.forEach(($scope.income_expensedetails),function(income_expensedetails,key)
+ // {
+ // //console.log(income_expensedetails.TypeName);
+ // TypeName = income_expensedetails.TypeName;
+ // //console.log(income_expensedetails.Amount);
+ // row= row+10;
+ // // column= column+10;
+ // rowam=rowam+10;
+ // columnam = columnam+10;
+ // if(income_expensedetails.Name == 'I001')
+ // {
+ // doc.setFontSize(10);
+ // doc.text(11,105,"Expense");
+ // doc.setFontSize(8);
+ // column= column+15;
+ // console.log(income_expensedetails.TypeName)
+
+ // doc.text(row,column,income_expensedetails.TypeName);
+ // doc.text(rowam,column,income_expensedetails.Amount);
+ // }
+
+ // });
+
+
+ // doc.save('sample.pdf');
+
+
+ }]);
+
+
+
+
diff --git a/Apollo/assets/views/add_income_expense.html b/Apollo/assets/views/add_income_expense.html
new file mode 100644
index 00000000..464e8e3e
--- /dev/null
+++ b/Apollo/assets/views/add_income_expense.html
@@ -0,0 +1,96 @@
+
+
| Status ID + + | +Status Name + + | +Status | ++ | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{p.ListCode}} | +{{p.ListName}} | +Active In-Active | ++ + + | +||||||||
| + | |||||||||||