fix for employeehours
This commit is contained in:
@@ -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
@@ -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 );
|
||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
|
|||||||
Reference in New Issue
Block a user