income expense report
This commit is contained in:
parent
11350812b0
commit
abd5049db0
@ -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
|
||||
* */
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
@ -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"
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -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",
|
||||
|
||||
269
Apollo/assets/js/controllers/incomeCtrl.js
Normal file
269
Apollo/assets/js/controllers/incomeCtrl.js
Normal file
@ -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;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}]);
|
||||
432
Apollo/assets/js/controllers/income_reportCtrl.js
Normal file
432
Apollo/assets/js/controllers/income_reportCtrl.js
Normal file
@ -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');
|
||||
|
||||
|
||||
}]);
|
||||
|
||||
|
||||
|
||||
|
||||
96
Apollo/assets/views/add_income_expense.html
Normal file
96
Apollo/assets/views/add_income_expense.html
Normal file
@ -0,0 +1,96 @@
|
||||
<style>
|
||||
b.fa {
|
||||
display: inline-block;
|
||||
border-radius: 60px;
|
||||
box-shadow: 0px 0px 2px #007AFF;
|
||||
padding: 0.5em 0.6em;
|
||||
}
|
||||
</style>
|
||||
<section id="page-title">
|
||||
<div class="row">
|
||||
<div class="col-sm-8">
|
||||
<h1 class="mainTitle" translate="ACCOUNT TYPE"></h1>
|
||||
|
||||
<span class="mainDescription">Add New Income Expense Types. </span>
|
||||
|
||||
</div>
|
||||
<div ncy-breadcrumb></div>
|
||||
</div>
|
||||
</section>
|
||||
<div class="container-fluid container-fullw bg-white">
|
||||
<div ng-controller="incomeCtrl" ng-init="initHead()">
|
||||
<tabset class="tabbable">
|
||||
<tab heading="Add " id="statuAddNew">
|
||||
<form name="Form" id="form" novalidate ng-submit="statusForm.submit(Form, myModel, 'zoom-in')" method="post">
|
||||
<fieldset>
|
||||
<legend>Add New</legend>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="row">
|
||||
<div class="col-md-4 form-group" ng-class="{'has-error':Form.StatusName.$dirty && Form.StatusName.$invalid, 'has-success':Form.StatusName.$valid}">
|
||||
<label>
|
||||
Account Name <span class="symbol required"></span>
|
||||
</label>
|
||||
<input type="text" placeholder="Enter Status Name" tabindex="1" class="form-control" name="StatusName" ng-model="myModel.StatusName"
|
||||
ng-pattern="/^[a-zA-Z0-9.\s]*$/" capitalize required/>
|
||||
<span class="error text-small block" ng-if="Form.StatusName.$dirty && Form.StatusName.$error.required">Account Name is required</span>
|
||||
<span class="error text-small block" ng-if="Form.StatusName.$dirty && Form.StatusName.$error.pattern">Invalid Account Name </span>
|
||||
</div>
|
||||
<div class="col-md-2" style="padding-top: 2.3%;">
|
||||
<div class="pull-right">
|
||||
<button type="submit" ladda="ldloading1.zoom_in" tabindex="2" class="btn btn-wide btn-success" data-style="zoom-in">
|
||||
Add
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<script>
|
||||
$(function () {
|
||||
$("#search").focus();
|
||||
});
|
||||
</script>
|
||||
<input class="form-control" type="text" ng-model="search" id="search" autofocus tabindex="5" placeholder="Search" /><br><br>
|
||||
</div>
|
||||
</div>
|
||||
<table class="table table-hover" ng-init="init();">
|
||||
<thead>
|
||||
<tr>
|
||||
<th ng-click="sort('ListCode')">Status ID
|
||||
<span class="glyphicon sort-icon" ng-show="sortKey=='ListCode'" ng-class="{'glyphicon-chevron-up':reverse,'glyphicon-chevron-down':!reverse}"> </span>
|
||||
</th>
|
||||
<th ng-click="sort('ListName')">Status Name
|
||||
<span class="glyphicon sort-icon" ng-show="sortKey=='ListName'" ng-class="{'glyphicon-chevron-up':reverse,'glyphicon-chevron-down':!reverse}"> </span>
|
||||
</th>
|
||||
<th>Status</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<!-- {{statusInfo}} -->
|
||||
<tbody dir-paginate="p in statusInfo|orderBy:sortKey:reverse|filter:search:strict|itemsPerPage:10">
|
||||
<tr>
|
||||
<td>{{p.ListCode}}</td>
|
||||
<td>{{p.ListName}}</td>
|
||||
<td><span ng-if="p.IsActive == 1"> Active </span><span ng-if="p.IsActive == 0">In-Active</span></td>
|
||||
<td>
|
||||
<a class="text-azure" id="editRowBtn{{p.ListCode}}" ng-click="setEditId(p.ListCode);"><b class="fa fa-hover fa-pencil " aria-hidden="true"></b>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="editId === p.ListCode" ng-if="editId === p.ListCode">
|
||||
<td colspan="12" ng-include src="'assets/views/editStatusDetails.html'"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<dir-pagination-controls max-size="10" direction-links="true" boundary-links="true">
|
||||
</dir-pagination-controls>
|
||||
</tab>
|
||||
|
||||
</tabset>
|
||||
</div>
|
||||
</div>
|
||||
@ -313,6 +313,7 @@
|
||||
<span class="error text-small block" ng-if="Form.addDate.$error.maxlength">Enter a Valid Date </span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 form-group" ng-class="{'has-error':Form.addName.$dirty && Form.addName.$invalid , 'has-success':Form.addName.$valid}">
|
||||
<label for="form-field-select-2">
|
||||
Income/Expense <span class="symbol required"></span>
|
||||
@ -321,10 +322,14 @@
|
||||
<select class="form-control" tabindex="2" class="cs-select cs-skin-elastic" name="addName" ng-model="myModelAdd.name" ng-change="getType(myModelAdd.name)"
|
||||
required>
|
||||
<option value="" disabled selected>Select</option>
|
||||
<option ng-repeat="typeName in incomeExpenseName" value="{{typeName.ListCode}}">{{typeName.ListName}}</option>
|
||||
<!-- <option ng-repeat="typeName in incomeExpenseName" value="{{typeName.ListCode}}">{{typeName.ListName}}</option> -->
|
||||
|
||||
<option value="I001">EXPENSE</option>
|
||||
<option value="I002">INCOME</option>
|
||||
</select>
|
||||
<span class="error text-small block" ng-if="Form.addName.$dirty && Form.addName.$error.required">Type is Required</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-4 form-group" ng-class="{'has-error':Form.voucherNumber.$dirty && Form.voucherNumber.$invalid , 'has-success':Form.voucherNumber.$valid}">
|
||||
@ -359,17 +364,25 @@
|
||||
|
||||
</div>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-4" ng-class="{'has-error':Form.addType.$dirty && Form.addType.$invalid, 'has-success':Form.addType.$valid}">
|
||||
<label for="form-field-select-2">
|
||||
Type <span class="symbol required"></span>
|
||||
</label>
|
||||
<select class="form-control" tabindex="1" class="cs-select cs-skin-elastic" name="addType" ng-model="myModelAdd.type" required>
|
||||
<option value="" disabled selected>Select Type</option>
|
||||
<option ng-repeat="typeItem in getTypes" value="{{typeItem.ID}}">{{typeItem.TypeName}}</option>
|
||||
|
||||
|
||||
<optgroup ng-repeat="typeName in incomeExpenseName" label="{{typeName.ListName}}">
|
||||
<option ng-repeat="incexpType in incomeExpenseType" ng-if="typeName.ListCode == incexpType.TypeID" value="{{incexpType.ID}}">{{incexpType.TypeName}}</option>
|
||||
|
||||
</optgroup>
|
||||
<!-- <option value="" disabled selected>Select Type</option>
|
||||
<option ng-repeat="typeItem in getTypes" value="{{typeItem.ID}}">{{typeItem.TypeName}}</option> -->
|
||||
</select>
|
||||
<span class="error text-small block" ng-if="Form.addType.$dirty && Form.addType.$error.required">Type is Required</span>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-md-4" ng-class="{'has-error':Form.addAmount.$dirty && Form.addAmount.$invalid, 'has-success':Form.addAmount.$valid}">
|
||||
<label>
|
||||
Amount <span class="symbol required"></span>
|
||||
|
||||
232
Apollo/assets/views/income_expense_report.html
Normal file
232
Apollo/assets/views/income_expense_report.html
Normal file
@ -0,0 +1,232 @@
|
||||
|
||||
|
||||
<style type="text/css">
|
||||
.pad {
|
||||
background-color: #eee;
|
||||
padding: 4px;
|
||||
}
|
||||
.fif {
|
||||
/* background-color: #ddd;*/
|
||||
display: inline-block;
|
||||
margin: 0 175px 0 0;
|
||||
padding: 8px 8px;
|
||||
text-align: left;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
|
||||
.right {
|
||||
/* background-color: #ddd;*/
|
||||
display: inline-block;
|
||||
/*margin: 0 25px 0 0;*/
|
||||
padding: 1px 1px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
|
||||
.rightac {
|
||||
/* background-color: #ddd;*/
|
||||
display: inline-block;
|
||||
margin: 0 175px 0 0;
|
||||
padding: 8px 8px;
|
||||
text-align: left;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.a {
|
||||
word-spacing: 9cm;
|
||||
}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<section id="page-title">
|
||||
<div class="row">
|
||||
<div class="col-sm-8">
|
||||
<h1 class="mainTitle">Income-Expense Report</h1>
|
||||
</div>
|
||||
<!-- <div ncy-breadcrumb></div> -->
|
||||
</div>
|
||||
</section>
|
||||
<style>
|
||||
/* .sort-icon {
|
||||
font-size: 9px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
th {
|
||||
cursor: pointer;
|
||||
} */
|
||||
</style>
|
||||
<script type="text/javascript" src="bower_components/ng-table-excel-export/ng-table-excel-export.min.js">
|
||||
|
||||
|
||||
</script>
|
||||
<div class="container-fluid container-fullw bg-white">
|
||||
<div ng-controller="income_reportCtrl">
|
||||
<form name="Form" id="form" novalidate ng-submit="onSubmit()" method="post">
|
||||
<fieldset>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<!--<pre>{{searchData.date}}</pre>-->
|
||||
<div data-ng-controller="DatepickerDemoCtrl">
|
||||
<label>
|
||||
From Date
|
||||
</label>
|
||||
<input type="text" tabindex="1" class="form-control " ng-click="startOpen = !startOpen" datepicker-popup="dd-MM-yyyy" ng-model="filters.from_date"
|
||||
is-open="startOpen" ng-init="startOpen = false" name="addDate" datepicker-options="dateOptions"
|
||||
placeholder="Select Date" close-text="Close" required="required" ng-change="changeDate()"
|
||||
show-button-bar="true" />
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<!--<pre>{{searchData.date}}</pre>-->
|
||||
<div data-ng-controller="DatepickerDemoCtrl">
|
||||
<label>
|
||||
To Date
|
||||
</label>
|
||||
<input type="text" tabindex="1" class="form-control " ng-click="startOpen = !startOpen" datepicker-popup="dd-MM-yyyy" ng-model="filters.to_date"
|
||||
is-open="startOpen" ng-init="startOpen = false" name="addDate" datepicker-options="dateOptions"
|
||||
placeholder="Select Date" close-text="Close" required="required" ng-change="changeToDate()"
|
||||
show-button-bar="true" />
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-md-2" style="padding-top: 2.3%;">
|
||||
<div class="pull-right">
|
||||
|
||||
<button type="submit" class="btn btn-success btn-o" tabindex="8">
|
||||
Submit
|
||||
</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</form>
|
||||
<!-- <pre>{{statusr | json}}</pre> -->
|
||||
<div class="row" style="text-align: right;">
|
||||
<div class="col-md-4">
|
||||
<input class="form-control" type="text" ng-model="search" id="searchIn" autofocus tabindex="2" placeholder="Search" />
|
||||
</div>
|
||||
<button class="btn btn-success btn-o" ng-click="exportData()">Export to Excel</button>
|
||||
|
||||
<button type="button" ladda="ldloading1.zoom_in" tabindex="5" class="btn btn-success btn-o" data-style="zoom-in" ng-click="changeSem(myModel.universityName,myModel.courseName);">Generate PDF</button>
|
||||
|
||||
<!-- <button class="btn btn-success" id="print" ng-click="generatePDF();">Print</button></div> -->
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div ng-if="expense_data.length>0">
|
||||
|
||||
<!-- Income Part -->
|
||||
<div class="col-md-12">
|
||||
<div class="col-md-3"><b>
|
||||
<label style="color: black; font-size: 20px">Income</label></b>
|
||||
</div>
|
||||
|
||||
|
||||
<div ng-repeat="list in Subtypes">
|
||||
<!-- {{list}} -->
|
||||
<div class="col-md-12" ng-repeat="li in fullincomedetail " ng-if="li.Name=='I002' && list.ListCode == li.OrgType">
|
||||
{{li.ListName }}
|
||||
<div id="test" class="pad">
|
||||
<div id="a" class="fif">{{li.TypeName}}</div>
|
||||
<div id="b" class="right">{{li.Amount}}</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="col-md-6"><b>
|
||||
<label style="color: black; font-size: 17px">Total Income</label></b>
|
||||
</div>
|
||||
<div class="col-md-offset-10" style="color: black; font-size: 17px" ng-repeat="de in expense_data" ng-if="de.TID=='I002'" >
|
||||
{{de.Total}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!--- income part completed-->
|
||||
|
||||
|
||||
|
||||
<!--Expense Part -->
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="col-md-3"><b>
|
||||
<label style="color: black; font-size: 20px">Expense</label></b>
|
||||
</div>
|
||||
|
||||
|
||||
<div ng-repeat="list in Subtypes">
|
||||
<!-- {{list}} -->
|
||||
<div class="col-md-12" ng-repeat="li in fullincomedetail " ng-if="li.Name=='I001' && list.ListCode == li.OrgType">
|
||||
{{li.ListName }}
|
||||
<div id="test" class="pad">
|
||||
<div id="a" class="fif">{{li.TypeName}}</div>
|
||||
<div id="b" class="right">{{li.Amount}}</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="col-md-6"><b>
|
||||
<label style="color: black; font-size: 17px">Total Expense</label></b>
|
||||
</div>
|
||||
<div class="col-md-offset-10" style="color: black; font-size: 17px" ng-repeat="de in expense_data" ng-if="de.TID=='I001'" >
|
||||
{{de.Total}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Expense Completed-->
|
||||
|
||||
|
||||
<!--Net Profit start -->
|
||||
<div class="col-md-12">
|
||||
<div class="col-md-6"><b>
|
||||
<label style="color: black; font-size: 17px">Net Profit/Loss</label></b>
|
||||
</div>
|
||||
<div class="col-md-offset-10" style="color: black; font-size: 17px"><b>
|
||||
{{expense_data[0].Total - expense_data[1].Total}}
|
||||
|
||||
</b></div>
|
||||
|
||||
</div>
|
||||
|
||||
<!--Net profit Completed -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<dir-pagination-controls direction-links="true" boundary-links="true">
|
||||
</dir-pagination-controls>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
159
Apollo/assets/views/income_expense_report_pdf.html
Normal file
159
Apollo/assets/views/income_expense_report_pdf.html
Normal file
@ -0,0 +1,159 @@
|
||||
|
||||
<style type="text/css">
|
||||
.pad {
|
||||
background-color: #eee;
|
||||
padding: 4px;
|
||||
}
|
||||
.fif {
|
||||
/* background-color: #ddd;*/
|
||||
display: inline-block;
|
||||
margin: 0 175px 0 0;
|
||||
padding: 8px 8px;
|
||||
text-align: left;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
|
||||
.right {
|
||||
/* background-color: #ddd;*/
|
||||
display: inline-block;
|
||||
/*margin: 0 25px 0 0;*/
|
||||
padding: 1px 1px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
|
||||
.rightac {
|
||||
/* background-color: #ddd;*/
|
||||
display: inline-block;
|
||||
margin: 0 175px 0 0;
|
||||
padding: 8px 8px;
|
||||
text-align: left;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.a {
|
||||
word-spacing: 9cm;
|
||||
}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="container-fluid container-fullw bg-white" ng-controller="income_reportCtrl">
|
||||
<div class="col-md-offset-10 col-md-1">
|
||||
<button class="btn btn-success" id="print"ng-click="generatePDF();">Print</button></div>
|
||||
<div id="income_expensepdf">
|
||||
<h1 align="center" style="color:black;"><strong>Apollo Distance Education</strong></h1>
|
||||
<p align="center" style="color: black">Profit and Loss Report</p>
|
||||
<p align="center" style="color: black">From: {{income_expensedetails.fdate}} to {{income_expensedetails.tdate}}</p>
|
||||
<br/>
|
||||
<div class="col-md-12" style="background-color: #D3D3D3;font-size: 15px; height: 40px">
|
||||
<!-- <p class="a" style="background-color: #D3D3D3;font-size: 15px;"><b>Account Amount</b></p> -->
|
||||
|
||||
</div>
|
||||
<!-- Income part -->
|
||||
<div class="col-md-12">
|
||||
<div class="col-md-3"><b>
|
||||
<label style="color: black; font-size: 20px">Income</label></b>
|
||||
</div>
|
||||
<!-- {{}} -->
|
||||
|
||||
<div ng-repeat="list in listdetails">
|
||||
<!-- {{list}} -->
|
||||
<div class="col-md-12" ng-repeat="li in income_expensedetails " ng-if="li.Name=='I002' && list.ListCode == li.OrgType">
|
||||
{{li.ListName }}
|
||||
<div id="test" class="pad">
|
||||
<div id="a" class="fif">{{li.TypeName}}</div>
|
||||
<div id="b" class="right">{{li.Amount}}</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="col-md-6"><b>
|
||||
<label style="color: black; font-size: 17px">Total Income</label></b>
|
||||
</div>
|
||||
<div class="col-md-offset-10" style="color: black; font-size: 17px" ng-repeat="de in income_expendelist" ng-if="de.TID=='I002'" >
|
||||
{{de.Total}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- {{listdetails}} -->
|
||||
|
||||
<!---Expense Part -->
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="col-md-3"><b>
|
||||
<label style="color: black; font-size: 20px">Expense</label></b>
|
||||
</div>
|
||||
|
||||
<div ng-repeat="list in listdetails">
|
||||
<div class="col-md-12" ng-repeat="li in income_expensedetails" ng-if="li.Name=='I001' && list.ListCode == li.OrgType">
|
||||
|
||||
{{li.ListName}}
|
||||
<div id="test" class="pad">
|
||||
<div id="a" class="fif">{{li.TypeName}}</div>
|
||||
<div id="b" class="right">{{li.Amount}}</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="col-md-6"><b>
|
||||
<label style="color: black; font-size: 17px">Total Expense</label></b>
|
||||
</div>
|
||||
<div class="col-md-offset-10" style="color: black; font-size: 17px" ng-repeat="de in income_expendelist" ng-if="de.TID=='I001'" >
|
||||
{{de.Total}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<p>
|
||||
</p>
|
||||
<p>
|
||||
</p>
|
||||
<p>
|
||||
</p>
|
||||
<div class="col-md-12">
|
||||
<div class="col-md-6"><b>
|
||||
<label style="color: black; font-size: 17px">Net Profit/Loss</label></b>
|
||||
</div>
|
||||
<div class="col-md-offset-10" style="color: black; font-size: 17px"><b>
|
||||
{{sum}}
|
||||
|
||||
</b></div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- {{income_expensedetails}}
|
||||
--> <div class="col-md-12">
|
||||
<div class="col-md-3">
|
||||
<!-- <label style="color: black; font-size: 20">Operating Expense</label> -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- {{listdetails}} -->
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
<div></div>
|
||||
</div>
|
||||
</div>
|
||||
@ -76,6 +76,15 @@
|
||||
<span class="title" translate="sidebar.nav.master.CERTIFICATETYPE"> CERTIFICATETYPE</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li ui-sref-active="active">
|
||||
<a ui-sref="app.master.accounttype" ng-click="checkSuperAdmin()">
|
||||
<span class="title" translate="sidebar.nav.master.ACCOUNTTYPE">Account Type </span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li ui-sref-active="active">
|
||||
<a ui-sref="app.master.dayBookMaster" ng-click="checkSuperAdmin()">
|
||||
<span class="title" translate="sidebar.nav.master.DAYBOOKMASTER"> DAY BOOK DETAILS </span>
|
||||
@ -283,6 +292,15 @@
|
||||
<span class="title" translate="sidebar.nav.daybook.DAYBOOKAPPROVAL"> DAY BOOK</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li ui-sref-active="active">
|
||||
<a ui-sref="app.master.incomeexpensereport" ng-click="checkSuperAdmin()">
|
||||
<span class="title" translate="sidebar.nav.daybook.INCOMEEXPENSEREPORT"> DAY BOOK INCOME EXPENSE REPORT</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
<li ng-class="{'active open':$state.includes('app.broadCast')}">
|
||||
@ -726,6 +744,16 @@
|
||||
<span class="title" translate="sidebar.nav.daybook.DAYBOOKAPPROVAL"> DAY BOOK</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li ui-sref-active="active">
|
||||
<a ui-sref="app.daybooksuperadmin.incomeexpensereport" ng-click="checkAdmin()">
|
||||
<span class="title" translate="sidebar.nav.daybook.INCOMEEXPENSEREPORT"> DAY BOOK INCOME EXPENSE REPORT</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@ -1061,6 +1089,12 @@
|
||||
<span class="title" translate="sidebar.nav.daybook.DAYBOOKAPPROVAL"> DAY BOOK</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li ui-sref-active="active">
|
||||
<a ui-sref="app.daybooksuperadmin.incomeexpensereport" ng-click="checkStaff()">
|
||||
<span class="title" translate="sidebar.nav.daybook.INCOMEEXPENSEREPORT"> DAY BOOK INCOME EXPENSE REPORT</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@ -1311,6 +1345,12 @@
|
||||
<span class="title" translate="sidebar.nav.daybook.DAYBOOKAPPROVAL"> DAY BOOK</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li ui-sref-active="active">
|
||||
<a ui-sref="app.daybooksuperadmin.incomeexpensereport" ng-click="checkStaff()">
|
||||
<span class="title" translate="sidebar.nav.daybook.INCOMEEXPENSEREPORT"> DAY BOOK INCOME EXPENSE REPORT</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user