fix for employeehours

This commit is contained in:
2019-09-13 16:22:05 +02:00
parent b49fb957a3
commit a3291f26e3
5 changed files with 64 additions and 18 deletions
+1
View File
@@ -71,6 +71,7 @@ class User extends BaseModel {
->join( 'projects AS PRJ', 'PRJ.id', '=', 'PRE.project_id' ) ->join( 'projects AS PRJ', 'PRJ.id', '=', 'PRE.project_id' )
->where( 'PRJ.archive', '=', 'F' ) ->where( 'PRJ.archive', '=', 'F' )
->where( 'users.id', '=', $userID ) ->where( 'users.id', '=', $userID )
->orderBy('projectnumber')
->get(); ->get();
return $usersActiveProjects; return $usersActiveProjects;
@@ -20,12 +20,15 @@ class EmployeehoursMonthly {
USR.id AS employee_id, USR.id AS employee_id,
hours, hours,
DATE_FORMAT(hourdate, '%d-%m-%Y') AS hourdate, DATE_FORMAT(hourdate, '%d-%m-%Y') AS hourdate,
NULL AS project_id NULL AS project_id,
NULL AS projectname,
'F' AS archive,
'OVERHEAD' AS type
FROM employeehours EMH FROM employeehours EMH
JOIN users USR JOIN users USR
ON USR.id = EMH.employee_id ON USR.id = EMH.employee_id
WHERE MONTH(hourdate) = {$month} WHERE MONTH(hourdate) = {$month}
AND YEAR(hourdate) = {$year} "; AND YEAR(hourdate) = {$year} ";
if( $employeeID != 0 ) $sql.="AND USR.id = {$employeeID} "; if( $employeeID != 0 ) $sql.="AND USR.id = {$employeeID} ";
$sql.=" $sql.="
UNION UNION
@@ -35,22 +38,45 @@ class EmployeehoursMonthly {
USR.id AS employee_id, USR.id AS employee_id,
hours, hours,
DATE_FORMAT(hourdate, '%d-%m-%Y') AS hourdate, DATE_FORMAT(hourdate, '%d-%m-%Y') AS hourdate,
CASE PEM.project_id,
WHEN hourtype_id = 3 THEN offer_id CONCAT( projectnumber, '-',PRJ.projectname),
ELSE PEM.project_id PRJ.archive,
END AS project_id 'PROJECTS' AS type
FROM projecthours PRH FROM projecthours PRH
JOIN projectemployees PEM JOIN projectemployees PEM
ON PEM.id = PRH.projectemployee_id ON PEM.id = PRH.projectemployee_id
JOIN projects PRJ
ON PRJ.id = PEM.project_id
JOIN users USR JOIN users USR
ON USR.id = PEM.user_id ON USR.id = PEM.user_id
WHERE MONTH(hourdate) = {$month} WHERE MONTH(hourdate) = {$month}
AND YEAR(hourdate) = {$year} "; AND YEAR(hourdate) = {$year}
AND offer_id IS NULL ";
if( $employeeID != 0 ) $sql.="AND USR.id = {$employeeID} "; if( $employeeID != 0 ) $sql.="AND USR.id = {$employeeID} ";
$sql.=" $sql.="
) Q1 UNION
SELECT CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname,
(hourtype_id + 8) AS hourtype_id,
PRH.id,
USR.id AS employee_id,
hours,
DATE_FORMAT(hourdate, '%d-%m-%Y') AS hourdate,
offer_id,
CONCAT(OFF.offernumber, '-',OFF.offername),
OFF.archive,
'OFFERS' AS type
FROM projecthours PRH
JOIN offers OFF
ON OFF.id = PRH.offer_id
JOIN users USR
ON USR.id = PRH.projectemployee_id
WHERE MONTH(hourdate) = 1
AND YEAR(hourdate) = 2019
AND offer_id IS NOT NULL ";
if( $employeeID != 0 ) $sql.="AND USR.id = {$employeeID} ";
$sql.=" ) Q1
ORDER BY fullname, hourdate "; ORDER BY fullname, hourdate ";
return $sql; return $sql;
} }
} }
@@ -40,8 +40,9 @@
<td data-bind="css:{'red-line': dirty}"> <td data-bind="css:{'red-line': dirty}">
<input class="form-control form-control-sm" <input class="form-control form-control-sm"
data-bind="datepicker:{dateFormat: 'dd-mm-yy' }, data-bind="datepicker:{dateFormat: 'dd-mm-yy' },
enable:archive() == 'F',
value:hourdate, value:hourdate,
event:{change:$root.saveEmployeehour}" event:{change:$root.saveEmployeehours}"
</td> </td>
<td data-bind="css:{'red-line': dirty}"> <td data-bind="css:{'red-line': dirty}">
<select class="form-control form-control-sm" <select class="form-control form-control-sm"
@@ -49,11 +50,15 @@
optionsText:'description', optionsText:'description',
optionsValue:'id', optionsValue:'id',
value:hourtype_id, value:hourtype_id,
enable:archive() == 'F',
optionsCaption:'selecteer...', optionsCaption:'selecteer...',
event:{change:$root.saveEmployeehours}"></select> event:{change:$root.saveEmployeehours}"></select>
</td> </td>
<td data-bind="css:{'red-line': dirty}"> <td data-bind="css:{'red-line': dirty}">
<!-- ko if: hourType() == 'PROJECTS' --> <!-- ko if: archive() == 'T' -->
<div data-bind="text:projectname" class="fake-input"></div>
<!-- /ko -->
<!-- ko if: hourType() == 'PROJECTS' && archive() == 'F' -->
<select class="form-control form-control-sm" <select class="form-control form-control-sm"
data-bind="options:$root.projects, data-bind="options:$root.projects,
optionsText:'projectFull', optionsText:'projectFull',
@@ -62,7 +67,7 @@
optionsCaption:'selecteer...', optionsCaption:'selecteer...',
event:{change:$root.saveEmployeehours}"></select> event:{change:$root.saveEmployeehours}"></select>
<!-- /ko --> <!-- /ko -->
<!-- ko if: hourType() == 'OFFERS' --> <!-- ko if: hourType() == 'OFFERS' && archive() == 'F' -->
<select class="form-control form-control-sm" <select class="form-control form-control-sm"
data-bind="options:$root.offersWithoutProject, data-bind="options:$root.offersWithoutProject,
optionsText:'offername', optionsText:'offername',
@@ -77,7 +82,7 @@
class="form-control form-control-sm align-right" class="form-control form-control-sm align-right"
paceholder="uren" paceholder="uren"
data-bind="textInput:hours, data-bind="textInput:hours,
enable:canFillInHours, enable:canFillInHours && archive() == 'F',
event:{keyup:$root.saveDelayedEmployeehours, event:{keyup:$root.saveDelayedEmployeehours,
change: $root.saveDelayedEmployeehours}"/> change: $root.saveDelayedEmployeehours}"/>
</td> </td>
+10 -1
View File
@@ -415,4 +415,13 @@ th.rotate > div > span {
.sub-page{ .sub-page{
margin-left:20px; margin-left:20px;
} }
.fake-input{
postition:relative;
top:6px;
border: 1px solid #d2d2d2;
padding:6px;
border-radius:5px;
background-color: #eee;
width:100%;
white-space:nowrap;
}
@@ -75,7 +75,8 @@ dbo.employeehoursInit = function () {
project_id : employeeHour ? employeeHour.projectID() : null, project_id : employeeHour ? employeeHour.projectID() : null,
hours : 0, hours : 0,
inEdit : true, inEdit : true,
dirty : true dirty : true,
archive : 'F'
}; };
vm.employeehours.push( new vm.Employeehour( employeehour ) ); vm.employeehours.push( new vm.Employeehour( employeehour ) );
@@ -103,6 +104,7 @@ dbo.employeehoursInit = function () {
}, },
saveEmployeehours: function ( self = false ) { saveEmployeehours: function ( self = false ) {
console.log( 'inside' );
self.dirty( true ); self.dirty( true );
if ( !self ) self = this; if ( !self ) self = this;
@@ -234,7 +236,10 @@ dbo.employeehoursInit = function () {
self.hours = ko.observable( data.hours ); self.hours = ko.observable( data.hours );
self.inEdit = ko.observable( data.inEdit || false ); self.inEdit = ko.observable( data.inEdit || false );
self.projectID = ko.observable( data.project_id ); self.projectID = ko.observable( data.project_id );
self.type = ko.observable( data.type );
self.archive = ko.observable( data.archive );
self.dirty = ko.observable( data.dirty || false ); self.dirty = ko.observable( data.dirty || false );
self.projectname = ko.observable( data.projectname );
self.hourType = ko.pureComputed( function () { self.hourType = ko.pureComputed( function () {
return dbo.helpers.findArrayElement( 'id', 'key', this.hourtype_id(), vm.hourtypes() ); return dbo.helpers.findArrayElement( 'id', 'key', this.hourtype_id(), vm.hourtypes() );
}, this ); }, this );
@@ -256,7 +261,7 @@ dbo.employeehoursInit = function () {
ko.applyBindings( dbo.employeehoursModel, document.getElementById( 'EMPLOYEEHOURS' ) ); ko.applyBindings( dbo.employeehoursModel, document.getElementById( 'EMPLOYEEHOURS' ) );
dbo.employeehoursModel.selectedEmployeeID.subscribe( function () { dbo.employeehoursModel.selectedEmployeeID.subscribe( function () {
dbo.userDataService.getUserActiveProjects( dbo.currentUser.id, function ( data ) { dbo.userDataService.getUserActiveProjects( dbo.employeehoursModel.selectedEmployeeID(), function ( data ) {
dbo.employeehoursModel.projects( data ); dbo.employeehoursModel.projects( data );
} ); } );
} ); } );