From e89dc41e18de614589fae34dc040cc4939eca421 Mon Sep 17 00:00:00 2001 From: Theo Weijmer Date: Wed, 21 Mar 2018 17:23:58 +0100 Subject: [PATCH] diversen nav opmerkingen --- .../controllers/beheer/UsersController.php | 12 ++ .../projects/EmployeeHoursController.php | 32 +++- .../projects/ProjectsController.php | 5 +- application/models/eloquent/Employeehour.php | 15 +- application/models/eloquent/User.php | 10 ++ .../eloquent/queries/EmployeehoursMonthly.php | 53 ++++++ .../models/projects/Invoices_model.php | 16 ++ application/views/modals/offer_modal.php | 20 +++ .../views/modals/partials/_forecasts.php | 5 + .../modals/partials/_projectdashboard.php | 2 +- application/views/modals/project_modal.php | 12 +- .../views/pages/employeehours_view.php | 48 +++-- .../views/pages/monthlyemployeehours_view.php | 2 +- .../monthlyemployeehours/euro_view.php | 58 +++--- public/css/main.css | 3 + .../dataservices/employeehoursDataService.js | 4 +- public/js/lib/dataservices/userDataservice.js | 38 ++-- public/js/lib/helpers.js | 2 +- public/js/lib/modals/offerModal.js | 11 +- public/js/lib/modals/projectModal.js | 18 +- .../modules/projects/employeehoursModule.js | 170 +++++++++++------- .../reports/monthlyEmployeeHoursModule.js | 21 ++- public/js/lib/services/offersService.js | 1 + 23 files changed, 404 insertions(+), 154 deletions(-) create mode 100644 application/models/eloquent/queries/EmployeehoursMonthly.php diff --git a/application/controllers/beheer/UsersController.php b/application/controllers/beheer/UsersController.php index 0528990..420f822 100644 --- a/application/controllers/beheer/UsersController.php +++ b/application/controllers/beheer/UsersController.php @@ -41,6 +41,18 @@ class usersController extends MY_Controller { $this->json( $user ); } + public function getCurrentUser() + { + $this->json( $this->user ); + } + + public function getUserWithprojects() + { + $usersWithProjects = User::getUserWithprojects(); + + $this->json( $usersWithProjects ); + } + public function getUniqueprojectEmployees() { $projectEmployees = User::getUniqueProjectUsers(); diff --git a/application/controllers/projects/EmployeeHoursController.php b/application/controllers/projects/EmployeeHoursController.php index 7a28297..52df6d8 100644 --- a/application/controllers/projects/EmployeeHoursController.php +++ b/application/controllers/projects/EmployeeHoursController.php @@ -22,11 +22,15 @@ class EmployeeHoursController extends MY_Controller { $this->load->library( $libraries ); } - public function getEmployeehours( $month, $year ) + public function getEmployeehours( $month, $year, $employeeID ) { - $employeehours = Employeehour::getEmployeehours( $month, $year ); + $sql = EmployeehoursMonthly::fire( $month, $year, $employeeID ); - $this->json( $employeehours ); + $query = $this->db->query( $sql ); + + $result = $query->result(); + + $this->json( $result ); } public function getHourtypes() @@ -42,11 +46,31 @@ class EmployeeHoursController extends MY_Controller { $data = $this->input->post(); $employeehourID = $data['id']; + $hourType = $data['hourType']; + $projectID = $data['project_id']; unset( $data['id'] ); + unset( $data['hourType'] ); + unset( $data['project_id'] ); $data['hourdate'] = date2mysql( $data['hourdate'] ); - $employeehourID = Employeehour::saveEmployeehour( $employeehourID, $data ); + if ( $hourType == 'PROJECTS' ) + { + $projectemployee = Projectemployee::select( 'id' ) + ->whereUserId( $data['employee_id'] ) + ->whereprojectId( $projectID ) + ->first(); + $data['projectemployee_id'] = $projectemployee->id; + unset( $data['employee_id'] ); + + $data['hourtype_id'] = $data['hourtype_id'] - 8; + + $employeehourID = Projecthour::saveProjecthour( $employeehourID, $data ); + } + else + { + $employeehourID = Employeehour::saveEmployeehour( $employeehourID, $data ); + } $this->json( ['employeehourID' => $employeehourID] ); } diff --git a/application/controllers/projects/ProjectsController.php b/application/controllers/projects/ProjectsController.php index 0c90994..c553f25 100644 --- a/application/controllers/projects/ProjectsController.php +++ b/application/controllers/projects/ProjectsController.php @@ -15,7 +15,7 @@ class ProjectsController extends MY_Controller { if ( AUTHENTICATED == FALSE ) die( 'NO ACCESS' ); - $models = []; + $models = ['projects/Invoices_model']; $libraries = []; $this->load->model( $models ); @@ -38,6 +38,9 @@ class ProjectsController extends MY_Controller { { $project = Project::getProject( $projectID ); + $project->outstanding = + $this->Invoices_model->getOutstandingPerProject( $project->id ); + $this->json( $project ); } diff --git a/application/models/eloquent/Employeehour.php b/application/models/eloquent/Employeehour.php index 6ebcc25..b713fb3 100644 --- a/application/models/eloquent/Employeehour.php +++ b/application/models/eloquent/Employeehour.php @@ -23,15 +23,22 @@ class Employeehour extends BaseModel { public static function getEmployeehours( $month, $year ) { - $employeehours = Employeehour::whereRaw( "MONTH(hourdate) ={$month} AND YEAR(hourdate) = {$year}" ) + $employeehours = Employeehour::whereRaw( "MONTH(hourdate) = " . ( $month + 1 ) . " AND YEAR(hourdate) = {$year}" ) ->with( [ 'user' => function ( $q ) { $q->selectRaw( "id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" ); }] ) - ->with( 'hourtype' ) - ->get(); + ->with( 'hourtype' ); - return $employeehours; + $projecthours = Employeehour::whereRaw("MONTH(hourdate) = " . ( $month + 1 ) . " AND YEAR(hourdate) = {$year}" )->with( [ + 'user' => function ( $q ) { + $q->selectRaw( "id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" ); + }] ) + ->with( 'hourtype' ); + + $results = $employeehours->union($projecthours)->get(); + + return $results; } public static function saveEmployeehour( $employeehourID, $data ) diff --git a/application/models/eloquent/User.php b/application/models/eloquent/User.php index 9f461eb..166c5a0 100644 --- a/application/models/eloquent/User.php +++ b/application/models/eloquent/User.php @@ -45,6 +45,16 @@ class User extends BaseModel { return $userrole; } + public static function getUserWithprojects() + { + $usersWithProjects = + User::selectRaw( "users.id, CONCAT(users.firstname, ' ', users.middlename, ' ', users.lastname) AS fullname" ) + ->with( 'projectemployees.project' ) + ->get(); + + return $usersWithProjects; + } + public static function checkUsername( $username ) { $username = strtoupper( $username ); diff --git a/application/models/eloquent/queries/EmployeehoursMonthly.php b/application/models/eloquent/queries/EmployeehoursMonthly.php new file mode 100644 index 0000000..69060fe --- /dev/null +++ b/application/models/eloquent/queries/EmployeehoursMonthly.php @@ -0,0 +1,53 @@ +sql = " + SELECT (own_revenue + other_revenue) - SUM(INV.invoiceamount) AS outstanding + FROM invoices INV + JOIN projects PRJ + ON PRJ.id = INV.project_id + JOIN offers OFF + ON PRJ.id = OFF.project_id + WHERE PRJ.id = {$projectID} "; + + $invoiced = $this->get_query_row( 'outstanding' ); + + return $invoiced; + } } \ No newline at end of file diff --git a/application/views/modals/offer_modal.php b/application/views/modals/offer_modal.php index e752858..6dea40c 100644 --- a/application/views/modals/offer_modal.php +++ b/application/views/modals/offer_modal.php @@ -168,6 +168,26 @@ +
+ +
+
+ + + + +
+ + kosten derden (incl btw) + +
+
diff --git a/application/views/modals/partials/_projectdashboard.php b/application/views/modals/partials/_projectdashboard.php index b83a9fd..6fc8f27 100644 --- a/application/views/modals/partials/_projectdashboard.php +++ b/application/views/modals/partials/_projectdashboard.php @@ -86,7 +86,7 @@
-

eigenomzet: +

eigen omzet:

diff --git a/application/views/modals/project_modal.php b/application/views/modals/project_modal.php index 24155a5..d978197 100644 --- a/application/views/modals/project_modal.php +++ b/application/views/modals/project_modal.php @@ -55,19 +55,19 @@ load->view( 'modals/partials/_projectoffers' ); ?> -
+
load->view( 'modals/partials/_projectcosts' ); ?>
-
- load->view('modals/partials/_forecasts'); ?> +
+ load->view( 'modals/partials/_reservations' ); ?>
-
+
load->view( 'modals/partials/_invoices' ); ?>
-
- load->view( 'modals/partials/_reservations' ); ?> +
+ load->view('modals/partials/_forecasts'); ?>
diff --git a/application/views/pages/employeehours_view.php b/application/views/pages/employeehours_view.php index a7e69e8..756f85c 100644 --- a/application/views/pages/employeehours_view.php +++ b/application/views/pages/employeehours_view.php @@ -3,36 +3,45 @@
+
+ +

-
+
+ - - - + - - - - + + + + + + @@ -58,21 +58,21 @@ - + - - + + + + + + @@ -91,21 +91,21 @@ + - - - + + + + + + diff --git a/public/css/main.css b/public/css/main.css index a9f7440..d996169 100644 --- a/public/css/main.css +++ b/public/css/main.css @@ -104,6 +104,9 @@ th.focus-green{ border:0; font-weight: bold; } +.red-line{ + border-bottom: 1px solid red !important; +} /*********SWITCH************/ .onoffswitch { diff --git a/public/js/lib/dataservices/employeehoursDataService.js b/public/js/lib/dataservices/employeehoursDataService.js index a859a76..c805bec 100644 --- a/public/js/lib/dataservices/employeehoursDataService.js +++ b/public/js/lib/dataservices/employeehoursDataService.js @@ -7,8 +7,8 @@ dbo.employeehoursDataService = { - getEmployeehours: function ( $month, $year, callback ) { - $.getJSON( 'index.php/projects/employeeHoursController/getEmployeehours/' + $month + '/' + $year ) + getEmployeehours: function ( $month, $year, employeeID, callback ) { + $.getJSON( 'index.php/projects/employeeHoursController/getEmployeehours/' + $month + '/' + $year + '/' + employeeID ) .done( function ( data ) { callback( data ); } ); diff --git a/public/js/lib/dataservices/userDataservice.js b/public/js/lib/dataservices/userDataservice.js index 1a4d65d..2e7ebae 100644 --- a/public/js/lib/dataservices/userDataservice.js +++ b/public/js/lib/dataservices/userDataservice.js @@ -21,11 +21,25 @@ dbo.userDataService = { } ); }, - getUniqueProjectEmployees:function(callback){ - $.post('index.php/beheer/usersController/getUniqueprojectEmployees', 'json') - .done(function(data){ - callback(data); - }); + getCurrentUser: function ( callback ) { + $.getJSON( 'index.php/beheer/usersController/getCurrentUser' ) + .done( function ( data ) { + callback( data ); + } ); + }, + + getUserWithprojects: function ( callback ) { + $.getJSON( 'index.php/beheer/usersController/getUserWithprojects' ) + .done( function ( data ) { + callback( data ); + } ); + }, + + getUniqueProjectEmployees: function ( callback ) { + $.post( 'index.php/beheer/usersController/getUniqueprojectEmployees', 'json' ) + .done( function ( data ) { + callback( data ); + } ); }, checkUsername: function ( username, callback ) { @@ -44,11 +58,11 @@ dbo.userDataService = { } ); }, - archiveUser: function(userID, status, callback){ - $.get('index.php/beheer/usersController/archiveUser/' + userID + '/' + status) - .done(function(){ + archiveUser: function ( userID, status, callback ) { + $.get( 'index.php/beheer/usersController/archiveUser/' + userID + '/' + status ) + .done( function () { callback(); - }); + } ); }, removeUser: function ( userID, callback ) { @@ -57,6 +71,8 @@ dbo.userDataService = { callback( data ); } ); } +} - -} \ No newline at end of file +dbo.userDataService.getCurrentUser(function(data){ + dbo.currentUser = data; +}); \ No newline at end of file diff --git a/public/js/lib/helpers.js b/public/js/lib/helpers.js index aa949d0..34f8d72 100644 --- a/public/js/lib/helpers.js +++ b/public/js/lib/helpers.js @@ -56,7 +56,7 @@ dbo.helpers = { }, findArrayElement: function ( toFind, element, value, array ) { -// console.log( toFind ); +// console.log( toFind ); // het element in de array // console.log( element ); // console.log( value ); // console.log( array ); diff --git a/public/js/lib/modals/offerModal.js b/public/js/lib/modals/offerModal.js index 076bfe1..a669c79 100644 --- a/public/js/lib/modals/offerModal.js +++ b/public/js/lib/modals/offerModal.js @@ -21,6 +21,7 @@ $( function () { offerleader_id : ko.observable(), own_revenue : ko.observable(), other_revenue : ko.observable(), + costs : ko.observable(), hasProject : ko.observable(), init: function () { @@ -54,6 +55,7 @@ $( function () { offernumber : vm.offernumber(), own_revenue : vm.own_revenue(), other_revenue : vm.other_revenue(), + costs : vm.costs(), startdate : vm.startdate(), acceptance_chance: vm.acceptance_chance(), accepteddate : vm.accepteddate(), @@ -64,7 +66,7 @@ $( function () { if ( data.createProject ) { tellMe( { title : 'project aanmaken', - message : 'De offerte is goedgekeurt maar nog niet gekoppeld aan een project, wilt u een project aanmaken?', + message : 'De offerte is goedgekeurd maar nog niet gekoppeld aan een project, wilt u een project aanmaken?', notify : true, noText : 'Nee, maak geen project aan', yesText : 'Ja, maak een project aan', @@ -77,7 +79,7 @@ $( function () { title : 'project aangemaakt', message : 'er is een project aangemaakt met nummer: ' + data.projectnumber, modalClass: 'modal-success' - }, function(){ + }, function () { vm.hideOfferModal(); vm.callback(); } ); @@ -104,7 +106,7 @@ $( function () { message : errorMessage, modalClass: 'modal-danger' } ); - }else{ + } else { vm.hideOfferModal(); vm.callback(); } @@ -132,7 +134,8 @@ $( function () { vm.accepteddate( offer.accepteddate || null ); vm.rejectdate( offer.rejectdate || null ); vm.own_revenue( offer.own_revenue || 0 ); - vm.other_revenue( offer.other_revenue || 0 ) + vm.other_revenue( offer.other_revenue || 0 ); + vm.costs( offer.costs || 0 ); }, showOfferModal: function () { diff --git a/public/js/lib/modals/projectModal.js b/public/js/lib/modals/projectModal.js index 5c7b786..c006d4b 100644 --- a/public/js/lib/modals/projectModal.js +++ b/public/js/lib/modals/projectModal.js @@ -41,6 +41,9 @@ $( function () { projectname : ko.observable(), years : ko.observableArray( dbo.years ), months : ko.observableArray( dbo.monthArray ), + outstanding : ko.observable(), + toForecast : ko.observable(), + totalForecast : ko.observable(), init: function () { var vm = dbo.editProjectModal; @@ -700,14 +703,15 @@ $( function () { vm.enddate( dbo.helpers.mysql2date( data.enddate ) ); vm.projectnumber( data.projectnumber ); vm.projectname( data.projectname ); + vm.outstanding( data.outstanding ); vm.projectEmployees.removeAll(); vm.projecthours.removeAll(); - $.each( data.projectemployees, function ( i, p ) { + _.each( data.projectemployees, function ( p ) { vm.projectEmployees.push( new vm.Projectemployee( p ) ); } ); - $.each( data.projectemployees, function ( i, p ) { + _.each( data.projectemployees, function ( p ) { var fullname = p.user ? p.user.fullname : '#NB'; $.each( p.projecthours, function ( b, q ) { vm.projecthours.push( new vm.Projecthour( q, fullname ) ); @@ -715,12 +719,12 @@ $( function () { } ); vm.projectcosts.removeAll(); - $.each( data.projectcosts, function ( i, p ) { + _.each( data.projectcosts, function ( p ) { vm.projectcosts.push( new vm.Projectcost( p ) ); } ); vm.offers.removeAll(); - $.each( data.offers, function ( i, p ) { + _.each( data.offers, function ( p, i ) { if ( i == 0 ) { vm.ownRevenue( p.own_revenue ); vm.otherRevenue( p.other_revenue ); @@ -729,17 +733,17 @@ $( function () { } ); vm.invoices.removeAll(); - $.each( data.invoices, function ( i, p ) { + _.each( data.invoices, function ( p ) { vm.invoices.push( new vm.Invoice( p ) ); } ); vm.forecasts.removeAll(); - $.each( data.forecasts, function ( i, p ) { + _.each( data.forecasts, function ( p ) { vm.forecasts.push( new vm.Forecast( p ) ); } ); vm.reservations.removeAll(); - $.each( data.reservations, function ( i, p ) { + _.each( data.reservations, function ( p ) { vm.reservations.push( new vm.Reservation( p ) ); } ); diff --git a/public/js/lib/modules/projects/employeehoursModule.js b/public/js/lib/modules/projects/employeehoursModule.js index 184a31e..ee0333f 100644 --- a/public/js/lib/modules/projects/employeehoursModule.js +++ b/public/js/lib/modules/projects/employeehoursModule.js @@ -13,30 +13,34 @@ dbo.employeehoursInit = function () { } else { dbo.employeehoursModel = { - employeehours: ko.observableArray( [] ), - archive : ko.observable( false ), - months : ko.observableArray( [] ), - years : ko.observableArray( [] ), - hourtypes : ko.observableArray( [] ), - employees : ko.observableArray( [] ), - selectedYear : ko.observable(), - selectedMonth: ko.observable(), - busy : false, + employeehours : ko.observableArray( [] ), + archive : ko.observable( false ), + months : ko.observableArray( [] ), + years : ko.observableArray( [] ), + hourtypes : ko.observableArray( [] ), + employees : ko.observableArray( [] ), + selectedYear : ko.observable(), + selectedMonth : ko.observable(), + busy : false, + selectedEmployeeID: ko.observable(), init: function () { var vm = dbo.employeehoursModel; - vm.createMonths(); - vm.createYears(); + vm.months( dbo.monthArray ); + vm.years( dbo.years ); - var d = new Date(); - vm.selectedMonth( d.getMonth() + 1 ); - vm.selectedYear( d.getFullYear() ); + vm.selectedMonth( dbo.currentMonth ); + vm.selectedYear( dbo.currentYear ); dbo.employeehoursDataService.getHourtypes( function ( data ) { vm.hourtypes( data ); - dbo.userDataService.getAllUsers( 'F', function ( data ) { - vm.employees( data ); + dbo.userDataService.getUserWithprojects( function ( data ) { + vm.employees.removeAll(); + _.each( data, function ( p ) { + vm.employees.push( new vm.Employee( p ) ); + } ); + vm.selectedEmployeeID( dbo.currentUser.id ) vm.refreshEmployeehours(); } ); @@ -46,12 +50,22 @@ dbo.employeehoursInit = function () { newEmployeehour: function () { var vm = dbo.employeehoursModel; + var employeeHour = vm.employeehours()[vm.employeehours().length - 1]; + + var employeeID = null; + if ( !vm.selectedEmployeeID ) { + employeeID = employeeHour ? employeeHour.employee_id() : null; + } else { + employeeID = vm.selectedEmployeeID(); + } + var employeehour = { id : 0, - employee_id: null, - hourdate : null, - hourtype_id: null, - hours : 0, + employee_id: employeeID, + hourdate : employeeHour ? employeeHour.hourdate() : null, + hourtype_id: employeeHour ? employeeHour.hourtype_id() : 9, + project_id : employeeHour ? employeeHour.projectID() : null, + hours : employeeHour ? employeeHour.hours() : 0, inEdit : true }; @@ -66,30 +80,43 @@ dbo.employeehoursInit = function () { vm.refreshHours(); }, - saveEmployeehours: function () { - var self = this; + saveEmployeehours: function ( self = false ) { + if ( !self ) self = this; if ( !self.employee_id() ) return; if ( !self.hourtype_id() ) return; if ( !self.hourdate() ) return; + if ( self.hourType() == 'PROJECTS' && !self.projectID() ) return; var submitDATA = { - id : self.id, + id : self.id(), employee_id: self.employee_id(), hourdate : self.hourdate(), hourtype_id: self.hourtype_id(), - hours : self.hours() + hours : self.hours(), + hourType : self.hourType(), + project_id : self.projectID() }; dbo.employeehoursDataService.saveEmployeehour( submitDATA, function ( data ) { - self.id = data.employeehourID; + self.id( data.employeehourID ); } ); }, editEmployeehour: function () { + dbo.employeehoursModel.saveEmployeehours( this ); this.inEdit( !this.inEdit() ); }, + changeEmployee: function () { + var vm = dbo.employeehoursModel; + this.projects( vm.setEmployeeProjects( this ) ); + + this.projectID( null ); + + vm.saveEmployeehours( this ); + }, + removeEmployeehour: function () { var vm = dbo.employeehoursModel; var self = this; @@ -103,7 +130,7 @@ dbo.employeehoursInit = function () { modalClass: 'modal-warning' }, function ( response ) { if ( response ) { - dbo.employeehoursDataService.removeEmployeehour( self.id, function ( data ) { + dbo.employeehoursDataService.removeEmployeehour( self.id(), function ( data ) { if ( data.result ) { vm.refreshEmployeehours(); } else { @@ -118,58 +145,73 @@ dbo.employeehoursInit = function () { } ); }, - createMonths: function () { - var vm = dbo.employeehoursModel; - - var months = [ - {id: 1, monthName: 'januari'}, - {id: 2, monthName: 'februari'}, - {id: 3, monthName: 'maart'}, - {id: 4, monthName: 'april'}, - {id: 5, monthName: 'mei'}, - {id: 6, monthName: 'juni'}, - {id: 7, monthName: 'juli'}, - {id: 8, monthName: 'augustus'}, - {id: 9, monthName: 'september'}, - {id: 10, monthName: 'oktober'}, - {id: 11, monthName: 'november'}, - {id: 12, monthName: 'december'}, - ] - - vm.months( months ); - }, - - createYears: function () { - var vm = dbo.employeehoursModel; - var years = [{id: 2015}, {id: 2016}, {id: 2017}, {id: 2018}]; - - vm.years( years ); - }, - refreshEmployeehours: function () { var vm = dbo.employeehoursModel; + var employeeID = vm.selectedEmployeeID() || 0; + vm.employeehours.removeAll(); - dbo.employeehoursDataService.getEmployeehours( vm.selectedMonth(), vm.selectedYear(), function ( data ) { - $.each( data, function ( i, p ) { - vm.employeehours.push( new vm.Employeehour( p ) ); + dbo.employeehoursDataService.getEmployeehours( + vm.selectedMonth(), vm.selectedYear(), employeeID, function ( data ) { + $.each( data, function ( i, p ) { + vm.employeehours.push( new vm.Employeehour( p ) ); + } ); } ); - } ); }, validateNumber: function ( field ) { this[field]( dbo.helpers.validateNumber( this[field](), true ) ); }, + Employee: function ( data ) { + var vm = dbo.employeehoursModel; + var self = this; + + self.id = data.id; + self.fullname = data.fullname; + + self.projecten = ko.observableArray( [] ); + _.each( data.projectemployees, function ( p ) { + self.projecten.push( new vm.Project( p ) ); + } ); + }, + + Project: function ( data ) { + this.projectEmployeeID = data.id; + this.projectID = data.project.id; + this.project = data.project.projectnumber + ' - ' + data.project.projectname; + }, + Employeehour: function ( data ) { var vm = dbo.employeehoursModel; + var self = this; - this.id = data.id; - this.employee_id = ko.observable( data.employee_id ); - this.hourtype_id = ko.observable( data.hourtype_id ); - this.hourdate = ko.observable( data.hourdate ); - this.hours = ko.observable( data.hours ); - this.inEdit = ko.observable( data.inEdit || false ); + self.id = ko.observable( data.id ); + self.employee_id = ko.observable( data.employee_id ); + self.hourtype_id = ko.observable( data.hourtype_id ); + self.hourdate = ko.observable( data.hourdate ); + self.hours = ko.observable( data.hours ); + self.inEdit = ko.observable( data.inEdit || false ); + self.projectID = ko.observable( data.project_id ); + self.hourType = ko.pureComputed( function () { + return dbo.helpers.findArrayElement( 'id', 'key', this.hourtype_id(), vm.hourtypes() ); + }, this ); + + vm.setEmployeeProjects( self ); + }, + + setEmployeeProjects: function ( self ) { + var vm = dbo.employeehoursModel; + + var employeeProjects = + dbo.helpers.findArrayElement( 'id', 'projecten', self.employee_id(), vm.employees() )(); + self.projects = ko.observableArray( [] ); + _.each( employeeProjects, function ( p ) { + self.projects.push( { + projectID : p.projectID, + projectname: p.project + } ); + } ); } }; diff --git a/public/js/lib/modules/reports/monthlyEmployeeHoursModule.js b/public/js/lib/modules/reports/monthlyEmployeeHoursModule.js index 832d32f..6445adc 100644 --- a/public/js/lib/modules/reports/monthlyEmployeeHoursModule.js +++ b/public/js/lib/modules/reports/monthlyEmployeeHoursModule.js @@ -24,9 +24,11 @@ dbo.monthlyemployeehoursInit = function () { recap : ko.observableArray( [] ), totalPerEmployee : ko.observableArray( [] ), totalEmployeeRevenues : ko.observable(), + totalAvailableRevenues : ko.observable(), totalEmployeeHours : ko.observable(), totalEmployeeAvailableHours: ko.observable(), totalBudget : ko.observable(), + totalOwnRevenue : ko.observable(), totalCosts : ko.observable(), totalAvailableBudget : ko.observable(), totalSaldo : ko.observable(), @@ -37,12 +39,8 @@ dbo.monthlyemployeehoursInit = function () { var vm = dbo.monthlyEmployeeHoursModel; dbo.reportsDataService.getUsedYears( function ( data ) { - vm.years.removeAll(); - $.each( data, function ( i, p ) { - vm.years.push( {id: p.year, year: p.year} ); - } ); - - vm.selectedYear( (new Date()).getFullYear() ); + vm.years( dbo.years ) + vm.selectedYear( dbo.currentYear ); } ); vm.initModule(); @@ -51,11 +49,13 @@ dbo.monthlyemployeehoursInit = function () { initModule: function () { var vm = dbo.monthlyEmployeeHoursModel; vm.totalBudget( 0 ); + vm.totalOwnRevenue( 0 ); vm.totalCosts( 0 ); vm.totalAvailableBudget( 0 ); vm.totalSaldo( 0 ); vm.totalWorkInProgress( 0 ); vm.totalEmployeeRevenues( 0 ); + vm.totalAvailableRevenues(0) vm.totalEmployeeHours( 0 ); vm.totalEmployeeAvailableHours( 0 ); vm.totalPerEmployee.removeAll(); @@ -78,11 +78,13 @@ dbo.monthlyemployeehoursInit = function () { vm.recap.push( new vm.Project( p ) ) } ); vm.totalBudget( dbo.helpers.thousandSeparator( vm.totalBudget() ) ); + vm.totalOwnRevenue( dbo.helpers.thousandSeparator( vm.totalOwnRevenue() ) ); vm.totalCosts( dbo.helpers.thousandSeparator( vm.totalCosts() ) ); vm.totalAvailableBudget( dbo.helpers.thousandSeparator( vm.totalAvailableBudget() ) ); vm.totalSaldo( dbo.helpers.thousandSeparator( vm.totalSaldo() ) ); vm.totalWorkInProgress( dbo.helpers.thousandSeparator( vm.totalWorkInProgress() ) ); vm.totalEmployeeRevenues( dbo.helpers.thousandSeparator( vm.totalEmployeeRevenues() ) ); + vm.totalAvailableRevenues( dbo.helpers.thousandSeparator( vm.totalAvailableRevenues() ) ); vm.totalEmployeeHours( dbo.helpers.thousandSeparator( vm.totalEmployeeHours() ) ); _.each( vm.totalPerEmployee(), function ( p ) { p.totalRevenue( dbo.helpers.thousandSeparator( p.totalRevenue() ) ); @@ -286,8 +288,10 @@ dbo.monthlyemployeehoursInit = function () { self.revenues = dbo.helpers.thousandSeparator( data.budget ); self.hours = data.hours; self.totalEmpoloyeeRevenues = 0; + self.availableRevenue = data.own_revenue - data.projectEuros; self.externCosts = dbo.helpers.thousandSeparator( data.projectcosts ); self.budget = dbo.helpers.thousandSeparator( data.budget ); + self.ownRevenue = dbo.helpers.thousandSeparator( data.own_revenue ); self.budgetAvailable = dbo.helpers.thousandSeparator( data.budgetAvailable ); self.saldo = dbo.helpers.thousandSeparator( data.saldo ); @@ -300,10 +304,12 @@ dbo.monthlyemployeehoursInit = function () { self.totalEmployeeRevenues = data.projectEuros; self.totalEmployeeHours = data.projectHours; self.hoursAvailable = data.hoursAvailable; + vm.totalAvailableRevenues( vm.totalAvailableRevenues() + self.availableRevenue ); vm.totalEmployeeRevenues( vm.totalEmployeeRevenues() + Number( self.totalEmployeeRevenues ) ); vm.totalEmployeeHours( vm.totalEmployeeHours() + Number( self.totalEmployeeHours ) ); vm.totalEmployeeAvailableHours( vm.totalEmployeeAvailableHours() + Number( self.hoursAvailable ) ); self.totalEmployeeRevenues = dbo.helpers.thousandSeparator( self.totalEmployeeRevenues ); + self.availableRevenue = dbo.helpers.thousandSeparator( self.availableRevenue ); self.workInProgress = dbo.helpers.thousandSeparator( data.workInProgress ); self.hoursAvailable = data.hoursAvailable; @@ -319,8 +325,9 @@ dbo.monthlyemployeehoursInit = function () { var vm = dbo.monthlyEmployeeHoursModel; vm.totalBudget( vm.totalBudget() + Number( data.budget ) ); + vm.totalOwnRevenue( vm.totalOwnRevenue() + Number( data.own_revenue ) ); vm.totalCosts( vm.totalCosts() + Number( data.projectcosts ) ); - vm.totalAvailableBudget( vm.totalAvailableBudget() + Number( data.budgetAvailable ) ); + vm.totalAvailableBudget( vm.totalAvailableBudget() + Number( data.ownRevenueAvailable ) ); vm.totalSaldo( vm.totalSaldo() + Number( data.saldo ) ); vm.totalWorkInProgress( vm.totalWorkInProgress() + Number( data.workInProgress ) ); diff --git a/public/js/lib/services/offersService.js b/public/js/lib/services/offersService.js index 87ab39b..2b97622 100644 --- a/public/js/lib/services/offersService.js +++ b/public/js/lib/services/offersService.js @@ -105,6 +105,7 @@ dbo.offersService = { this.acceptance_chance = data.acceptance_chance ? data.acceptance_chance : 0; this.own_revenue = data.own_revenue; this.other_revenue = data.other_revenue; + this.costs = data.costs; this.archive = data.archive; } }; \ No newline at end of file
medewerker datum soort urenproject uren  
+ + enable: ! $root.selectedEmployeeID, + event:{change:$root.changeEmployee}"> + - + + + + + + + uur @@ -74,7 +98,7 @@ data-bind="textInput:hours, visible:inEdit, event:{change:$root.saveEmployeehours,keyup:$root.validateNumber.bind($data, 'hours')}"/> + @@ -83,7 +107,7 @@
+ diff --git a/application/views/pages/monthlyemployeehours_view.php b/application/views/pages/monthlyemployeehours_view.php index b82f387..5a96f43 100644 --- a/application/views/pages/monthlyemployeehours_view.php +++ b/application/views/pages/monthlyemployeehours_view.php @@ -7,7 +7,7 @@ diff --git a/application/views/reports/monthlyemployeehours/euro_view.php b/application/views/reports/monthlyemployeehours/euro_view.php index 6837639..a586e04 100644 --- a/application/views/reports/monthlyemployeehours/euro_view.php +++ b/application/views/reports/monthlyemployeehours/euro_view.php @@ -22,17 +22,17 @@ -
totaal
+
eigen budget beschikbaar (ex btw)
-
budget (ex btw)
-
-
derden (ex btw)
-
-
beschikbaar
+
totaal geschreven omzet
saldo
+ + + - - - - - - - - + + + - - - - - - - +