From efcd9f2c097af6ce6104e1ceb65ae49af8e4f5da Mon Sep 17 00:00:00 2001 From: Theo Weijmer Date: Wed, 2 Jan 2019 16:57:41 +0100 Subject: [PATCH] Wijzigingen nav opmerking Peter 24-12-2018 --- .../projects/EmployeeHoursController.php | 8 ++++ .../controllers/projects/OffersController.php | 10 ++++- .../projects/ProjectsController.php | 13 +++++-- application/core/MY_Controller.php | 2 +- .../reports/invoice/MonthForecast.php | 2 +- application/models/eloquent/Offer.php | 11 ++++-- application/models/eloquent/Project.php | 10 ++++- application/models/eloquent/User.php | 5 ++- .../eloquent/queries/EmployeehoursMonthly.php | 5 ++- .../views/pages/employeehours_view.php | 2 +- application/views/pages/offers_view.php | 37 ++++++++++++++----- application/views/pages/projects_view.php | 31 ++++++++++++++-- .../js/lib/dataservices/offerDataservice.js | 4 +- .../lib/dataservices/projectsDataservice.js | 4 +- public/js/lib/helpers.js | 8 ++-- .../modules/projects/employeehoursModule.js | 10 ++--- .../js/lib/modules/projects/offersModule.js | 21 +++++++++++ .../js/lib/modules/projects/projectsModule.js | 37 ++++++++++++++++++- public/js/lib/services/offersService.js | 25 ++++++++++++- 19 files changed, 201 insertions(+), 44 deletions(-) diff --git a/application/controllers/projects/EmployeeHoursController.php b/application/controllers/projects/EmployeeHoursController.php index 769377a..8115590 100644 --- a/application/controllers/projects/EmployeeHoursController.php +++ b/application/controllers/projects/EmployeeHoursController.php @@ -68,11 +68,19 @@ class EmployeeHoursController extends MY_Controller { $employeehourID = Projecthour::saveProjecthour( $employeehourID, $data ); } + elseif ( $hourType == 'OFFERS' ) + { + 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/OffersController.php b/application/controllers/projects/OffersController.php index 928aab6..df5f73f 100644 --- a/application/controllers/projects/OffersController.php +++ b/application/controllers/projects/OffersController.php @@ -27,9 +27,15 @@ class OffersController extends MY_Controller { } - public function getAllOffers( $projectID, $archive = 'F' ) + public function getAllOffers() { - $offers = Offer::getAllOffers( $projectID, $archive ); + $projectID = $this->clean_input( 'projectID' ); + $archive = $this->clean_input( 'archive' ); + $search = $this->clean_input( 'search' ); + $order = $this->clean_input( 'order' ); + $direction = $this->clean_input( 'direction' ); + + $offers = Offer::getAllOffers( $projectID, $archive, $search, $order, $direction ); $this->json( $offers ); } diff --git a/application/controllers/projects/ProjectsController.php b/application/controllers/projects/ProjectsController.php index c7748f5..701288e 100644 --- a/application/controllers/projects/ProjectsController.php +++ b/application/controllers/projects/ProjectsController.php @@ -27,9 +27,14 @@ class ProjectsController extends MY_Controller { } - public function getAllProjects( $archive = 'F' ) + public function getAllProjects( ) { - $projects = Project::getAllProjects( $archive ); + $archive = $this->clean_input( 'archive' ); + $search = $this->clean_input( 'search' ); + $order = $this->clean_input( 'order' ); + $direction = $this->clean_input( 'direction' ); + + $projects = Project::getAllProjects( $archive, $search, $order, $direction ); $this->json( $projects ); } @@ -359,4 +364,6 @@ class ProjectsController extends MY_Controller { $this->json( ['result' => TRUE] ); } -} \ No newline at end of file +} + + diff --git a/application/core/MY_Controller.php b/application/core/MY_Controller.php index 2eb6184..b3712b6 100644 --- a/application/core/MY_Controller.php +++ b/application/core/MY_Controller.php @@ -16,7 +16,7 @@ class MY_Controller extends CI_Controller { { parent::__construct(); - $this->version = '0.02.01'; + $this->version = '1.00.00'; $this->load->library( 'beheer/session/RetrieveUserSession' ); diff --git a/application/libraries/reports/invoice/MonthForecast.php b/application/libraries/reports/invoice/MonthForecast.php index 8fa6f8c..8ab326f 100644 --- a/application/libraries/reports/invoice/MonthForecast.php +++ b/application/libraries/reports/invoice/MonthForecast.php @@ -56,7 +56,7 @@ class MonthForecast { private function setInitialsForecastMonths() { - for ( $i = 1; $i <= 12; $i ++ ) + for ( $i = 0; $i <= 12; $i ++ ) { $this->forecastMonths[ $i ] = ['forecastamount' => 0]; } diff --git a/application/models/eloquent/Offer.php b/application/models/eloquent/Offer.php index 5e77a87..f247f76 100644 --- a/application/models/eloquent/Offer.php +++ b/application/models/eloquent/Offer.php @@ -26,15 +26,18 @@ class Offer extends BaseModel { return $this->belongsTo( 'Customer' ); } - public static function getAllOffers( $projectID, $archive = 'F' ) + public static function getAllOffers( $projectID, $archive = 'F', $search, $order, $direction ) { - $offers = Offer::orderBy( 'startdate' ) + $offers = Offer::selectRAW('offers.*') + ->join('customers AS CUS', 'CUS.id', '=', 'offers.customer_id') ->with( 'customer' ) - ->with( 'project' ); + ->with( 'project' ) + ->where('offernumber', 'LIKE', "%{$search}%") + ->orderBy($order, $direction); if ( $projectID ) $offers = $offers->whereProjectId( $projectID ); - if ( $archive == 'F' ) $offers = $offers->whereArchive( 'F' ); + if ( $archive == 'F' ) $offers = $offers->where( 'offers.archive', '=', 'F' ); $offers = $offers->get(); diff --git a/application/models/eloquent/Project.php b/application/models/eloquent/Project.php index 86bd800..020f1c2 100644 --- a/application/models/eloquent/Project.php +++ b/application/models/eloquent/Project.php @@ -61,11 +61,17 @@ class Project extends BaseModel { return $this->belongsTo( 'Customer' ); } - public static function getAllProjects( $archive = 'F' ) + public static function getAllProjects( $archive, $search, $order, $direction ) { $projects = Project::getBaseProject(); - if ( $archive == 'F' ) $projects = $projects->whereArchive( 'F' ); + $projects = $projects->selectRaw('projects.*') + ->join('customers AS CUS', 'CUS.id', '=', 'projects.customer_id') + ->join('users AS USR', 'USR.id', '=', 'projects.projectleader_id') + ->where('projects.projectnumber', 'LIKE', "%{$search}%") + ->orderBy($order, $direction); + + if ( $archive == 'F' ) $projects = $projects->where( 'projects.archive', '=', 'F' ); $projects = $projects->get(); diff --git a/application/models/eloquent/User.php b/application/models/eloquent/User.php index d9853ff..51a4714 100644 --- a/application/models/eloquent/User.php +++ b/application/models/eloquent/User.php @@ -54,7 +54,10 @@ class User extends BaseModel { { $usersWithProjects = User::selectRaw( "users.id, CONCAT(users.firstname, ' ', users.middlename, ' ', users.lastname) AS fullname" ) - ->with( 'projectemployees.project' ) + ->with( [ + 'projectemployees.project' => function ( $q ) { + $q->whereArchive( 'F' ); + }] ) ->get(); return $usersWithProjects; diff --git a/application/models/eloquent/queries/EmployeehoursMonthly.php b/application/models/eloquent/queries/EmployeehoursMonthly.php index fc1ba10..e1933ff 100644 --- a/application/models/eloquent/queries/EmployeehoursMonthly.php +++ b/application/models/eloquent/queries/EmployeehoursMonthly.php @@ -35,7 +35,10 @@ class EmployeehoursMonthly { USR.id AS employee_id, hours, DATE_FORMAT(hourdate, '%d-%m-%Y') AS hourdate, - PEM.project_id + CASE + WHEN hourtype_id = 3 THEN offer_id + ELSE PEM.project_id + END AS project_id FROM projecthours PRH JOIN projectemployees PEM ON PEM.id = PRH.projectemployee_id diff --git a/application/views/pages/employeehours_view.php b/application/views/pages/employeehours_view.php index c319bb9..ae97e9a 100644 --- a/application/views/pages/employeehours_view.php +++ b/application/views/pages/employeehours_view.php @@ -84,7 +84,7 @@ event:{change:$root.saveEmployeehours}"> - + + + + + + + - - - - - - - - + + + + + + + + @@ -20,7 +39,7 @@
nummerklantprojectdatumkansgeaccepteerdafgewezen nummerklantoffertenaamdatumkansgeaccepteerdafgewezen 
- + diff --git a/application/views/pages/projects_view.php b/application/views/pages/projects_view.php index 89a9162..db59227 100644 --- a/application/views/pages/projects_view.php +++ b/application/views/pages/projects_view.php @@ -1,10 +1,33 @@ +
+
+
+
+ + + + +
+
+
+
- - - - + + + + diff --git a/public/js/lib/dataservices/offerDataservice.js b/public/js/lib/dataservices/offerDataservice.js index 0005981..83aa9b0 100644 --- a/public/js/lib/dataservices/offerDataservice.js +++ b/public/js/lib/dataservices/offerDataservice.js @@ -7,8 +7,8 @@ dbo.offerDataService = { - getAllOffers: function ( projectID, archive = 'F', callback ) { - $.getJSON( 'index.php/projects/offersController/getAllOffers/' + projectID + '/' + archive ) + getAllOffers: function ( offersObject, callback ) { + $.post( 'index.php/projects/offersController/getAllOffers', offersObject, 'json' ) .done( function ( data ) { callback( data ); } ); diff --git a/public/js/lib/dataservices/projectsDataservice.js b/public/js/lib/dataservices/projectsDataservice.js index d20a1ae..1000f0a 100644 --- a/public/js/lib/dataservices/projectsDataservice.js +++ b/public/js/lib/dataservices/projectsDataservice.js @@ -7,8 +7,8 @@ dbo.projectDataService = { - getAllProjects: function ( archive = 'F', callback ) { - $.getJSON( 'index.php/projects/projectsController/getAllProjects/' + archive ) + getAllProjects: function ( projectsObject, callback ) { + $.post( 'index.php/projects/projectsController/getAllProjects', projectsObject, 'json' ) .done( function ( data ) { callback( data ); } ); diff --git a/public/js/lib/helpers.js b/public/js/lib/helpers.js index c9fb3a4..5ab55af 100644 --- a/public/js/lib/helpers.js +++ b/public/js/lib/helpers.js @@ -56,10 +56,10 @@ dbo.helpers = { }, findArrayElement: function ( toFind, element, value, array ) { -// console.log( toFind ); // het element in de array -// console.log( element ); -// console.log( value ); -// console.log( array ); + console.log( toFind ); // het element in de array + console.log( element ); + console.log( value ); + console.log( array ); if ( !Array.isArray( array ) ) return null; var foundValue = null diff --git a/public/js/lib/modules/projects/employeehoursModule.js b/public/js/lib/modules/projects/employeehoursModule.js index dda04be..b07e27d 100644 --- a/public/js/lib/modules/projects/employeehoursModule.js +++ b/public/js/lib/modules/projects/employeehoursModule.js @@ -182,12 +182,12 @@ dbo.employeehoursInit = function () { self.projecten = ko.observableArray( [] ); _.each( data.projectemployees, function ( p ) { - self.projecten.push( new vm.Project( p ) ); - } ); - _.each( vm.offersWithoutProject(), function ( p ) { - console.log( p ); - self.projecten.push( new vm.Offer( p, self.id ) ); + if ( p.project ) + self.projecten.push( new vm.Project( p ) ); } ); +// _.each( vm.offersWithoutProject(), function ( p ) { +// self.projecten.push( new vm.Offer( p, self.id ) ); +// } ); }, Project: function ( data ) { diff --git a/public/js/lib/modules/projects/offersModule.js b/public/js/lib/modules/projects/offersModule.js index ecf4e30..0e5601c 100644 --- a/public/js/lib/modules/projects/offersModule.js +++ b/public/js/lib/modules/projects/offersModule.js @@ -7,6 +7,7 @@ dbo.offersInit = function () { + var timeout; if ( dbo.offersModel !== undefined ) { @@ -21,6 +22,9 @@ dbo.offersInit = function () { documents : ko.observableArray( [] ), selectedRowID: ko.observable(), projectID : 0, + search : ko.observable(''), + order : ko.observable('offernumber'), + direction : ko.observable(), init: function () { var service = dbo.offersService; @@ -29,6 +33,23 @@ dbo.offersInit = function () { service.refreshOffers(); }, + searchOffers: function () { + var service = dbo.offersService; + if ( timeout ) { + clearTimeout( timeout ); + timeout = null; + } + timeout = setTimeout( function () { + service.refreshOffers(); + }, 700 ); + }, + + directionOrderOffers : function(field){ + var service = dbo.offersService; + + service.directionOrderOffers(field); + }, + newOffer: function () { var service = dbo.offersService; service.vm = dbo.offersModel; diff --git a/public/js/lib/modules/projects/projectsModule.js b/public/js/lib/modules/projects/projectsModule.js index 48581e9..024347f 100644 --- a/public/js/lib/modules/projects/projectsModule.js +++ b/public/js/lib/modules/projects/projectsModule.js @@ -7,6 +7,7 @@ dbo.projectsInit = function () { + var timeout; if ( dbo.projectsModel !== undefined ) { dbo.projectsModel.refreshProjects(); @@ -18,6 +19,9 @@ dbo.projectsInit = function () { archive : ko.observable( false ), selectedRowID: ko.observable(), busy : false, + search : ko.observable(), + order : ko.observable( 'projectnumber' ), + direction : ko.observable(), init: function () { var vm = dbo.projectsModel; @@ -25,6 +29,31 @@ dbo.projectsInit = function () { vm.refreshProjects(); }, + searchProjects: function () { + var vm = dbo.projectsModel; + if ( timeout ) { + clearTimeout( timeout ); + timeout = null; + } + timeout = setTimeout( function () { + vm.refreshProjects(); + }, 700 ); + }, + + directionOrderProjects: function ( field ) { + var vm = dbo.projectsModel; + + if ( field == vm.order() ) { + vm.direction( !vm.direction() ); + } else { + vm.direction( true ); + } + + vm.order( field ); + + vm.refreshProjects(); + }, + newProject: function () { var vm = dbo.projectsModel; dbo.editProjectModal.addProject( function () { @@ -103,8 +132,14 @@ dbo.projectsInit = function () { refreshProjects: function () { var vm = dbo.projectsModel; + var projectsObject = { + archive : vm.archive() ? 'T' : 'F', + search : vm.search(), + order : vm.order(), + direction: vm.direction() ? 'ASC' : 'DESC' + } - dbo.projectDataService.getAllProjects( vm.archive() ? 'T' : 'F', function ( data ) { + dbo.projectDataService.getAllProjects( projectsObject, function ( data ) { vm.projects.removeAll(); $.each( data, function ( i, p ) { vm.projects.push( new vm.Project( p ) ); diff --git a/public/js/lib/services/offersService.js b/public/js/lib/services/offersService.js index b746922..79d5a01 100644 --- a/public/js/lib/services/offersService.js +++ b/public/js/lib/services/offersService.js @@ -78,11 +78,34 @@ dbo.offersService = { } ); }, + directionOrderOffers: function ( field ) { + var vm = dbo.offersModel; + var self = dbo.offersService; + + if ( field == vm.order() ) { + vm.direction( !vm.direction() ); + } else { + vm.direction( true ); + } + + vm.order( field ); + + self.refreshOffers(); + }, + refreshOffers: function () { var vm = dbo.offersService.vm; var self = dbo.offersService; - dbo.offerDataService.getAllOffers( vm.projectID , vm.archive() ? 'T' : 'F', function ( data ) { + var offersObject = { + projectID: vm.projectID, + archive : vm.archive() ? 'T' : 'F', + search : vm.search(), + order : vm.order(), + direction: vm.direction() ? 'ASC' : 'DESC' + } + + dbo.offerDataService.getAllOffers( offersObject, function ( data ) { vm.offers.removeAll(); $.each( data, function ( i, p ) { vm.offers.push( new self.Offer( p ) );
nummerprojectleiderklantstartnummerprojectleiderklantstart eigen tarief omzet overige kosten Kosten derden