diff --git a/application/views/modals/partials/_hours.php b/application/views/modals/partials/_hours.php
new file mode 100644
index 0000000..cdd548e
--- /dev/null
+++ b/application/views/modals/partials/_hours.php
@@ -0,0 +1,75 @@
+
+
+
+ projecturen
+
+
+
+
+
+
+ medewerker
+
+
+ datum
+
+
+ uren
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ uur
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/views/modals/partials/_payments.php b/application/views/modals/partials/_payments.php
new file mode 100644
index 0000000..f71e5d4
--- /dev/null
+++ b/application/views/modals/partials/_payments.php
@@ -0,0 +1,75 @@
+
+
+
+ betalingen
+
+
+
+
+
+
+ offertenummer
+
+
+ datum
+
+
+ bedrag
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/views/modals/partials/_projectcomments.php b/application/views/modals/partials/_projectcomments.php
new file mode 100644
index 0000000..806d84b
--- /dev/null
+++ b/application/views/modals/partials/_projectcomments.php
@@ -0,0 +1,43 @@
+
+
+
+ opmerkingen
+
+
+
+
+
+
+
+ offerte opmerkingen
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ project opmerkingen
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/views/modals/partials/_projectcosts.php b/application/views/modals/partials/_projectcosts.php
new file mode 100644
index 0000000..8193ced
--- /dev/null
+++ b/application/views/modals/partials/_projectcosts.php
@@ -0,0 +1,89 @@
+
+
+
+ kosten
+
+
+
+
+
+
+ externe
+
+
+ omschrijving
+
+
+ datum
+
+
+ bedrag
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ uur
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/views/modals/partials/_projectemployees.php b/application/views/modals/partials/_projectemployees.php
index f1897e7..7b30a84 100644
--- a/application/views/modals/partials/_projectemployees.php
+++ b/application/views/modals/partials/_projectemployees.php
@@ -1,5 +1,4 @@
-
-
+
project medewerkers
@@ -23,36 +22,71 @@
eind
-
-
+
+
-
-
-
-
-
-
-
- uur
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+ uur
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/application/views/modals/partials/_projectfiles.php b/application/views/modals/partials/_projectfiles.php
new file mode 100644
index 0000000..f22ee0d
--- /dev/null
+++ b/application/views/modals/partials/_projectfiles.php
@@ -0,0 +1,43 @@
+
+
+
+ bestanden
+
+
+
+
+
+
+
+ offerte bestanden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ project bestanden
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/views/modals/partials/_projectoffers.php b/application/views/modals/partials/_projectoffers.php
index 9092cf0..b705ffe 100644
--- a/application/views/modals/partials/_projectoffers.php
+++ b/application/views/modals/partials/_projectoffers.php
@@ -1,4 +1,4 @@
-
+
offertes
@@ -40,10 +40,19 @@
+ data-bind="click:$root.removeOffer">
+
+
+
+
+ nieuwe offerte
+
+
+
+
\ No newline at end of file
diff --git a/application/views/modals/project_modal.php b/application/views/modals/project_modal.php
index 95e6893..4b5b7d3 100644
--- a/application/views/modals/project_modal.php
+++ b/application/views/modals/project_modal.php
@@ -1,10 +1,13 @@
\ No newline at end of file
diff --git a/application/views/pages/offers_view.php b/application/views/pages/offers_view.php
index f134b6c..199aded 100644
--- a/application/views/pages/offers_view.php
+++ b/application/views/pages/offers_view.php
@@ -1,6 +1,6 @@
-
+
@@ -82,38 +82,5 @@
-
-
- voeg bestand toe
-
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
- voeg commentaar toe
-
-
-
-
- |
-
-
-
-
-
-
\ No newline at end of file
diff --git a/application/views/pages/projects_view.php b/application/views/pages/projects_view.php
index 5251d65..474b165 100644
--- a/application/views/pages/projects_view.php
+++ b/application/views/pages/projects_view.php
@@ -38,7 +38,7 @@
-
+
diff --git a/public/js/lib/dataservices/offerDataservice.js b/public/js/lib/dataservices/offerDataservice.js
index 53c4344..0c50415 100644
--- a/public/js/lib/dataservices/offerDataservice.js
+++ b/public/js/lib/dataservices/offerDataservice.js
@@ -8,7 +8,7 @@
dbo.offerDataService = {
getAllOffers: function ( projectID, archive = 'F', callback ) {
- $.getJSON( 'index.php/projects/offersController/getAllOffers/' + archive )
+ $.getJSON( 'index.php/projects/offersController/getAllOffers/' + projectID + '/' + archive )
.done( function ( data ) {
callback( data );
} );
@@ -29,15 +29,15 @@ dbo.offerDataService = {
} );
},
- archiveOffer: function ( userID, status, callback ) {
- $.get( 'index.php/projects/offersController/archiveOffer/' + userID + '/' + status )
+ archiveOffer: function ( offerID, status, callback ) {
+ $.get( 'index.php/projects/offersController/archiveOffer/' + offerID + '/' + status )
.done( function () {
callback();
} );
},
- removeOffer: function ( userID, callback ) {
- $.getJSON( 'index.php/projects/offersController/removeOffer/' + userID )
+ removeOffer: function ( offerID, callback ) {
+ $.getJSON( 'index.php/projects/offersController/removeOffer/' + offerID )
.done( function ( data ) {
callback( data );
} );
diff --git a/public/js/lib/dataservices/projectsDataservice.js b/public/js/lib/dataservices/projectsDataservice.js
index 7247354..f69a738 100644
--- a/public/js/lib/dataservices/projectsDataservice.js
+++ b/public/js/lib/dataservices/projectsDataservice.js
@@ -21,6 +21,13 @@ dbo.projectDataService = {
} );
},
+ getpayMents: function ( projectID, callback ) {
+ $.getJSON( 'index.php/projects/projectsController/getP ayments/' + projectID )
+ .done( function ( data ) {
+ callback( data );
+ } );
+ },
+
addProject: function ( callback ) {
$.getJSON( 'index.php/projects/projectsController/addProject', function ( data ) {
callback( data );
@@ -33,15 +40,32 @@ dbo.projectDataService = {
} );
},
- addProjectEmployee: function ( projectID, callback ) {
- $.getJSON( 'index.php/projects/projectsController/addProjectemployee/' + projectID, function ( data ) {
- callback( data );
+ addProjectemployee: function ( projectID, callback ) {
+ $.get( 'index.php/projects/projectsController/addProjectemployee/' + projectID, function () {
+ callback();
} );
},
- saveProject: function ( submitDATA, callback ) {
- $.post( 'index.php/projects/projectsController/saveProject', submitDATA, function () {
- }, 'json' )
+ saveProject: function ( projectID, submitDATA, callback ) {
+ $.post( 'index.php/projects/projectsController/saveProject', submitDATA, 'json' )
+ .done( function ( data ) {
+ callback( data );
+ } );
+ },
+
+ saveProjectemployee: function ( submitDATA ) {
+ $.post( 'index.php/projects/projectsController/saveProjectemployee', submitDATA );
+ },
+
+ savePayment: function ( submitDATA, callback ) {
+ $.post( 'index.php/projects/projectsController/savePayment', submitDATA )
+ .done( function ( data ) {
+ callback( data );
+ } );
+ },
+
+ saveProjecthour: function ( submitDATA, callback ) {
+ $.post( 'index.php/projects/projectsController/saveProjecthour', submitDATA )
.done( function ( data ) {
callback( data );
} );
@@ -54,8 +78,29 @@ dbo.projectDataService = {
} );
},
- removeProject: function ( userID, callback ) {
- $.getJSON( 'index.php/projects/projectsController/removeProject/' + userID )
+ removeProject: function ( projectID, callback ) {
+ $.getJSON( 'index.php/projects/projectsController/removeProject/' + projectID )
+ .done( function ( data ) {
+ callback( data );
+ } );
+ },
+
+ removeProjectemployee: function ( projectemployeeID, callback ) {
+ $.getJSON( 'index.php/projects/projectsController/removeProjectemployee/' + projectemployeeID )
+ .done( function ( data ) {
+ callback( data );
+ } );
+ },
+
+ removePayment: function ( paymentID, callback ) {
+ $.getJSON( 'index.php/projects/projectsController/removePayment/' + paymentID )
+ .done( function ( data ) {
+ callback( data );
+ } );
+ },
+
+ removeProjecthour: function ( projecthourID, callback ) {
+ $.getJSON( 'index.php/projects/projectsController/removeProjecthour/' + projecthourID )
.done( function ( data ) {
callback( data );
} );
diff --git a/public/js/lib/helpers.js b/public/js/lib/helpers.js
index 4ce4e50..d435e2c 100644
--- a/public/js/lib/helpers.js
+++ b/public/js/lib/helpers.js
@@ -18,9 +18,9 @@ dbo.helpers = {
// convert to comma or point number
if ( point ) {
- input = input.replace( ',', '' );
+ input = input.toString().replace( ',', '' );
} else {
- input = input.replace( '.', '' );
+ input = input.toString().replace( '.', '' );
}
//remain only last comma or point and remove all non numbers
@@ -58,6 +58,7 @@ dbo.helpers = {
},
mysql2date : function(date){
+ if( ! date ) return null;
if( date.length != 10 ) return null;
var dateParts = date.split("-");
diff --git a/public/js/lib/modals/customerModal.js b/public/js/lib/modals/customerModal.js
index 4e14843..3832ce8 100644
--- a/public/js/lib/modals/customerModal.js
+++ b/public/js/lib/modals/customerModal.js
@@ -76,7 +76,7 @@ $( function () {
message : errorMessage,
modalClass: 'modal-danger'
} );
- } );
+ } );8
},
setCustomer: function ( customer ) {
diff --git a/public/js/lib/modals/offerModal.js b/public/js/lib/modals/offerModal.js
index 0b536a1..5de319f 100644
--- a/public/js/lib/modals/offerModal.js
+++ b/public/js/lib/modals/offerModal.js
@@ -21,22 +21,21 @@ $( function () {
offerleader_id : ko.observable(),
own_revenue : ko.observable(),
other_revenue : ko.observable(),
+ hasProject : ko.observable(),
init: function () {
- var vm = dbo.editOfferModal;
-
dbo.editOfferModal.refreshCustomers();
dbo.editOfferModal.refreshUsers();
},
- newEditOffer: function ( offer, callback ) {
+ newEditOffer: function ( offer, projectID = false, customerID = false, hasProject = false, callback ) {
var vm = dbo.editOfferModal;
vm.callback = typeof(callback) == 'function' ? callback : null;
vm.showOfferModal();
- vm.setOffer( offer );
+ vm.setOffer( offer, projectID, customerID, hasProject );
},
getCustomerProjects: function () {
@@ -92,12 +91,20 @@ $( function () {
} );
},
- setOffer: function ( offer ) {
+ setOffer: function ( offer, projectID, customerID, hasProject ) {
var vm = dbo.editOfferModal;
+ vm.hasProject( hasProject );
+
vm.id = offer.id || 0;
- vm.customer_id( offer.customer_id || null );
- vm.project_id( offer.project_id || null );
+
+ if ( projectID ) {
+ vm.project_id( projectID );
+ vm.customer_id( customerID );
+ } else {
+ vm.project_id( offer.project_id || null );
+ vm.customer_id( offer.customer_id || null );
+ }
vm.offerleader_id( offer.offerleader_id || null );
vm.offernumber( offer.offernumber || null );
vm.startdate( offer.startdate || null );
@@ -128,7 +135,7 @@ $( function () {
} );
},
- addUser:function(){
+ addUser: function () {
var vm = dbo.editOfferModal;
dbo.editUserModal.newEditUser( false, function () {
vm.refreshUsers();
diff --git a/public/js/lib/modals/projectModal.js b/public/js/lib/modals/projectModal.js
index 376acbf..1ff3adb 100644
--- a/public/js/lib/modals/projectModal.js
+++ b/public/js/lib/modals/projectModal.js
@@ -6,29 +6,120 @@
*/
$( function () {
+ var timeout;
dbo.editProjectModal = {
offers : ko.observableArray( [] ),
projectEmployees: ko.observableArray( [] ),
customers : ko.observableArray( [] ),
+ users : ko.observableArray( [] ),
+ payments : ko.observableArray( [] ),
+ projecthours : ko.observableArray( [] ),
+ offerFiles : ko.observableArray( [] ),
+ offerComments : ko.observableArray( [] ),
+ projectFiles : ko.observableArray( [] ),
+ projectComments : ko.observableArray( [] ),
showProject : ko.observable( false ),
projectID : null,
callback : null,
customerID : ko.observable( null ),
+ projectleaderID : ko.observable(),
archive : ko.observable( false ),
startdate : ko.observable( null ),
enddate : ko.observable( null ),
+ busy : false,
init: function () {
var vm = dbo.editProjectModal;
- vm.refreshProject();
-
dbo.customerDataService.getAllCustomers( 'F', function ( data ) {
vm.customers( data );
+ dbo.userDataService.getAllUsers( 'F', function ( data ) {
+ vm.users( data );
+ vm.refreshProject();
+ } );
} );
},
+ editProjectemployee: function () {
+ var self = this;
+ var vm = dbo.editProjectModal;
+ $.each( vm.projectEmployees(), function ( i, p ) {
+ if ( p.id == self.id ) {
+ p.inEdit( !p.inEdit() );
+ } else {
+ p.inEdit( false );
+ }
+ } );
+ },
+
+ editPayment: function () {
+ var self = this;
+ var vm = dbo.editProjectModal;
+ $.each( vm.payments(), function ( i, p ) {
+ if ( p.id == self.id ) {
+ p.inEdit( !p.inEdit() );
+ } else {
+ p.inEdit( false );
+ }
+ } );
+ },
+
+ editProjecthour: function () {
+ var self = this;
+ var vm = dbo.editProjectModal;
+ $.each( vm.projecthours(), function ( i, p ) {
+ if ( p.id == self.id ) {
+ p.inEdit( !p.inEdit() );
+ } else {
+ p.inEdit( false );
+ }
+ } );
+ },
+
+ newOffer: function () {
+ var vm = dbo.editProjectModal;
+ var service = dbo.offersService;
+ service.vm = dbo.editProjectModal;
+
+ service.newOffer( vm.projectID, vm.customerID() );
+ },
+
+ newPayment: function () {
+ var vm = dbo.editProjectModal;
+
+ var payment = {
+ id : 0,
+ offernumber : '',
+ paymentdate : null,
+ paymentamount: 0,
+ inEdit : true
+ };
+
+ vm.payments.push( new vm.Payment( payment ) );
+ },
+
+ newProjecthour: function () {
+ var vm = dbo.editProjectModal;
+
+ var projecthour = {
+ id : 0,
+ projectemployee_id: null,
+ hourdate : null,
+ hours : 0,
+ inEdit : true
+ };
+
+ vm.projecthours.push( new vm.Projecthour( projecthour ) );
+ },
+
+ editOffer: function () {
+ var service = dbo.offersService;
+ service.vm = dbo.editProjectModal;
+
+ service.editOffer( this, false, false, true );
+ },
+
addProject: function ( callback ) {
var vm = dbo.editProjectModal;
@@ -43,45 +134,289 @@ $( function () {
} );
},
- addProjectEmployee: function () {
+ addProjectemployee: function () {
var vm = dbo.editProjectModal;
- dbo.projectDataService.addProjectemployee( function ( projectID ) {
- vm.projectID = projectID;
-
+ dbo.projectDataService.addProjectemployee( vm.projectID, function () {
vm.refreshProject();
} );
},
- saveCustomerID: function () {
+ editProject: function ( projectID, callback ) {
+ var vm = dbo.editProjectModal;
+ vm.callback = callback;
+ vm.projectID = projectID;
+
+ vm.showProject( true );
+
+ vm.init();
+ },
+
+ saveProject: function () {
+ var vm = dbo.editProjectModal;
+
+ if ( vm.busy ) return;
+
+ var submitDATA = {
+ id : vm.projectID,
+ customer_id : vm.customerID(),
+ projectleader_id: vm.projectleaderID(),
+ startdate : vm.startdate(),
+ enddate : vm.enddate()
+ }
+
+ dbo.projectDataService.saveProject( vm.projectID, submitDATA, function ( data ) {
+ vm.projectID = data;
+ } );
+ },
+
+ saveProjectemployee: function () {
+ var vm = dbo.editProjectModal;
+ var self = this;
+
+ $.each( vm.users(), function ( i, p ) {
+ if ( self.employeeID == p.id ) self.fullname( p.fullname );
+ } );
+
+ if ( timeout ) {
+ clearTimeout( timeout );
+ timeout = null;
+ }
+ timeout = setTimeout( function () {
+ var submitDATA = {
+ id : self.id,
+ user_id : self.employeeID(),
+ tarif : self.tarif() ? self.tarif().toString().replace( ',', '.' ) : 0,
+ budget : self.budget() ? self.budget().toString().replace( ',', '.' ) : 0,
+ startdate: self.startdate()
+ }
+
+ dbo.projectDataService.saveProjectemployee( submitDATA );
+ }, 400 );
+ },
+
+ savePayment: function () {
+ var self = this;
+
+ if ( !self.offer_id() ) return;
+
+ var submitDATA = {
+ id : self.id,
+ offer_id : self.offer_id(),
+ paymentdate : self.paymentdate(),
+ paymentamount: self.paymentamount()
+ };
+
+ dbo.projectDataService.savePayment( submitDATA, function ( data ) {
+ if ( data.success ) self.id = data.paymentID;
+ } );
+ },
+
+ saveProjecthour: function () {
+ var self = this;
+
+ if ( !self.projectemployee_id() ) return;
+
+ var submitDATA = {
+ id : self.id,
+ projectemployee_id: self.projectemployee_id(),
+ hourdate : self.hourdate(),
+ hours : self.hours()
+ };
+
+ dbo.projectDataService.saveProjecthour( submitDATA, function ( data ) {
+ console.log( data );
+ if ( data.success ) self.id = data.projecthourID;
+ } );
+ },
+
+ removeProjectemployee: function () {
+ var vm = dbo.editProjectModal;
+ var self = this;
+
+ tellMe( {
+ title : 'verwijderen projectmedewerker',
+ message : 'weet u zeker dat u de projectmedewerker wilt verwijderen, dit kan niet ongedaan worden gemaakt',
+ notify : true,
+ noText : 'nee verwijder de projectmedewerker niet',
+ yesText : 'ja verwijder de projectmedewerker',
+ modalClass: 'modal-warning'
+ }, function ( response ) {
+ console.log( response );
+ if ( response ) {
+ dbo.projectDataService.removeProjectemployee( self.id, function ( data ) {
+ if ( data.result ) {
+ tellMe( {
+ title : 'projectmedewerker verwijderd',
+ message : 'de projectmedewerker is succesvol verwijderd',
+ modalClass: 'modal-success'
+ }, function () {
+ vm.refreshProject();
+ } );
+ } else {
+ tellMe( {
+ title : 'fout bij verwijderen projectmedewerker',
+ message : 'de projectmedewerker kan niet worden verwijderd',
+ modalClass: 'modal-danger'
+ } );
+ }
+ } );
+ }
+ } );
+ },
+
+ removeOffer: function () {
+ var vm = dbo.editProjectModal;
+ var self = this;
+
+ tellMe( {
+ title : 'verwijderen offerte',
+ message : 'weet u zeker dat u de offerte wilt verwijderen, dit kan niet ongedaan worden gemaakt',
+ notify : true,
+ noText : 'nee verwijder de offerte niet',
+ yesText : 'ja verwijder de offerte',
+ modalClass: 'modal-warning'
+ }, function ( response ) {
+ console.log( response );
+ if ( response ) {
+ dbo.offerDataService.removeOffer( self.id, function ( data ) {
+ if ( data.result ) {
+ tellMe( {
+ title : 'offerte verwijderd',
+ message : 'de offerte is succesvol verwijderd',
+ modalClass: 'modal-success'
+ }, function () {
+ vm.refreshProject();
+ } );
+ } else {
+ tellMe( {
+ title : 'fout bij verwijderen offerte',
+ message : 'de offerte kan niet worden verwijderd',
+ modalClass: 'modal-danger'
+ } );
+ }
+ } );
+ }
+ } );
+ },
+
+ removePayment: function () {
+ var vm = dbo.editProjectModal;
+ var self = this;
+
+ tellMe( {
+ title : 'verwijderen betaling',
+ message : 'weet u zeker dat u de betaling wilt verwijderen, dit kan niet ongedaan worden gemaakt',
+ notify : true,
+ noText : 'nee verwijder de betaling niet',
+ yesText : 'ja verwijder de betaling',
+ modalClass: 'modal-warning'
+ }, function ( response ) {
+ console.log( response );
+ if ( response ) {
+ dbo.projectDataService.removePayment( self.id, function ( data ) {
+ if ( data.result ) {
+ tellMe( {
+ title : 'betaling verwijderd',
+ message : 'de betaling is succesvol verwijderd',
+ modalClass: 'modal-success'
+ }, function () {
+ vm.refreshProject();
+ } );
+ } else {
+ tellMe( {
+ title : 'fout bij verwijderen betaling',
+ message : 'de betaling kan niet worden verwijderd',
+ modalClass: 'modal-danger'
+ } );
+ }
+ } );
+ }
+ } );
+ },
+
+ removeProjecthour: function () {
+ var vm = dbo.editProjectModal;
+ var self = this;
+
+ tellMe( {
+ title : 'verwijderen projectuur',
+ message : 'weet u zeker dat u de projectuur wilt verwijderen, dit kan niet ongedaan worden gemaakt',
+ notify : true,
+ noText : 'nee verwijder de projectuur niet',
+ yesText : 'ja verwijder de projectuur',
+ modalClass: 'modal-warning'
+ }, function ( response ) {
+ console.log( response );
+ if ( response ) {
+ dbo.projectDataService.removeProjecthour( self.id, function ( data ) {
+ if ( data.result ) {
+ tellMe( {
+ title : 'projectuur verwijderd',
+ message : 'de projectuur is succesvol verwijderd',
+ modalClass: 'modal-success'
+ }, function () {
+ vm.refreshProject();
+ } );
+ } else {
+ tellMe( {
+ title : 'fout bij verwijderen projectuur',
+ message : 'de projectuur kan niet worden verwijderd',
+ modalClass: 'modal-danger'
+ } );
+ }
+ } );
+ }
+ } );
},
closeProject: function () {
var vm = dbo.editProjectModal;
vm.showProject( false );
+
+ vm.callback();
+ },
+
+ validateNumber: function ( field ) {
+ this[field]( dbo.helpers.validateNumber( this[field](), false ) );
},
refreshProject: function () {
var vm = dbo.editProjectModal;
+ vm.busy = true;
dbo.projectDataService.getProject( vm.projectID, function ( data ) {
- vm.Project( data );
- } );
- },
+ vm.id = data.id
+ vm.projectleaderID( data.projectleader_id );
+ vm.customerID( data.customer_id );
+ vm.startdate( dbo.helpers.mysql2date( data.startdate ) );
+ vm.enddate( dbo.helpers.mysql2date( data.enddate ) );
- Project: function ( data ) {
- var vm = dbo.editProjectModal;
- var self = this;
+ vm.projectEmployees.removeAll();
+ vm.projecthours.removeAll();
+ $.each( data.projectemployees, function ( i, p ) {
+ vm.projectEmployees.push( new vm.Projectemployee( p ) );
+ } );
- vm.id = data.id;
- vm.customerID( data.customer_id );
- vm.startdate( data.startdate );
- vm.enddate( data.enddate );
+ $.each( data.projectemployees, function ( i, p ) {
+ var fullname = p.user ? p.user.fullname : '#NB';
+ $.each( p.projecthours, function ( b, q ) {
+ vm.projecthours.push( new vm.Projecthour( q, fullname ) );
+ } );
+ } );
- self.projectEmployees = ko.observableArray( [] );
- $.each( data.employees, function ( i, p ) {
- self.projectEmployees.push( new vm.Projectemployee( p ) );
+ vm.offers.removeAll();
+ vm.payments.removeAll();
+ $.each( data.offers, function ( i, p ) {
+ vm.offers.push( new dbo.offersService.Offer( p ) );
+
+ $.each( p.payments, function ( z, q ) {
+ vm.payments.push( new vm.Payment( q, p ) );
+ } );
+ } );
+
+ vm.busy = false;
} );
},
@@ -89,12 +424,36 @@ $( function () {
var self = this;
self.id = data.id;
- self.employee_id = data.employee_id;
- self.fullname = data.user ? data.user.fullname : '#NB';
- self.tarif = data.tarif;
- self.budget = data.budget;
- self.startdate = dbo.helpers.mysql2date( data.startdate );
- self.enddate = dbo.helpers.mysql2date( data.enddate );
+ self.employeeID = ko.observable( data.user_id );
+ self.fullname = ko.observable( data.user ? data.user.fullname : '#NB' );
+ self.tarif = ko.observable( data.tarif ? data.tarif.toString().replace( '.', ',' ) : 0 );
+ self.budget = ko.observable( data.budget ? data.budget.toString().replace( '.', ',' ) : 0 );
+ self.startdate = ko.observable( dbo.helpers.mysql2date( data.startdate ) );
+ self.inEdit = ko.observable( sessionStorage.editEmployee == data.id );
+ },
+
+ Payment: function ( data, offer = false ) {
+ var inEdit = sessionStorage.editPayment == data.id;
+ if ( !inEdit ) inEdit = data.inEdit || false;
+
+ this.id = data.id;
+ this.offer_id = ko.observable( data.offer_id );
+ this.offernumber = ko.observable( offer ? offer.offernumber : null );
+ this.paymentdate = ko.observable( dbo.helpers.mysql2date( data.paymentdate ) );
+ this.paymentamount = ko.observable( data.paymentamount );
+ this.inEdit = ko.observable( inEdit );
+ },
+
+ Projecthour: function ( data, fullname ) {
+ var inEdit = sessionStorage.editPayment == data.id;
+ if ( !inEdit ) inEdit = data.inEdit || false;
+
+ this.id = data.id;
+ this.fullname = ko.observable( fullname );
+ this.projectemployee_id = ko.observable( data.projectemployee_id );
+ this.hourdate = ko.observable( dbo.helpers.mysql2date( data.hourdate ) );
+ this.hours = ko.observable( data.hours );
+ this.inEdit = ko.observable( inEdit );
}
};
diff --git a/public/js/lib/modules/projects/offersModule.js b/public/js/lib/modules/projects/offersModule.js
index 01c4490..ecf4e30 100644
--- a/public/js/lib/modules/projects/offersModule.js
+++ b/public/js/lib/modules/projects/offersModule.js
@@ -20,6 +20,7 @@ dbo.offersInit = function () {
comments : ko.observableArray( [] ),
documents : ko.observableArray( [] ),
selectedRowID: ko.observable(),
+ projectID : 0,
init: function () {
var service = dbo.offersService;
@@ -46,7 +47,7 @@ dbo.offersInit = function () {
var service = dbo.offersService;
service.vm = dbo.offersModel;
- service.editOffer();
+ service.editOffer( this );
},
archiveOffer: function () {
diff --git a/public/js/lib/modules/projects/projectsModule.js b/public/js/lib/modules/projects/projectsModule.js
index ee8ff32..0350699 100644
--- a/public/js/lib/modules/projects/projectsModule.js
+++ b/public/js/lib/modules/projects/projectsModule.js
@@ -17,6 +17,7 @@ dbo.projectsInit = function () {
project : ko.observable(),
archive : ko.observable( false ),
selectedRowID: ko.observable(),
+ busy : false,
init: function () {
var vm = dbo.projectsModel;
@@ -26,7 +27,7 @@ dbo.projectsInit = function () {
newProject: function () {
var vm = dbo.projectsModel;
- dbo.editProjectModal.addProject( false, function () {
+ dbo.editProjectModal.addProject( function () {
vm.refreshProjects();
} );
},
@@ -43,7 +44,7 @@ dbo.projectsInit = function () {
var project = this;
var vm = dbo.projectsModel;
- dbo.editProjectModal.newEditProject( project, function () {
+ dbo.editProjectModal.editProject( project.id, function () {
vm.refreshProjects();
} );
},
@@ -125,41 +126,41 @@ dbo.projectsInit = function () {
self.totalOwnrevenue = 0;
self.totalOtherrevenue = 0;
- self.revenues = ko.observableArray([]);
- $.each(data.offers, function(i,p){
- if( p.accepteddate ){
+ self.revenues = ko.observableArray( [] );
+ $.each( data.offers, function ( i, p ) {
+ if ( p.accepteddate ) {
self.totalOwnrevenue += p.totalOwnrevenue;
self.totalOtherrevenue += p.totalOtherrevenue;
}
- self.revenues.push( new vm.Revenue(p));
- });
+ self.revenues.push( new vm.Revenue( p ) );
+ } );
},
- Revenue : function(data){
+ Revenue: function ( data ) {
var vm = dbo.projectsModel;
var self = this;
self.id = data.id;
self.offernumber = data.offernumber;
- self.startdate = dbo.helpers.mysql2date(self.startdate);
- self.accepteddate = dbo.helpers.mysql2date(self.accepteddate);
- self.rejectdate = dbo.helpers.mysql2date(self.rejectdate);
+ self.startdate = dbo.helpers.mysql2date( self.startdate );
+ self.accepteddate = dbo.helpers.mysql2date( self.accepteddate );
+ self.rejectdate = dbo.helpers.mysql2date( self.rejectdate );
self.own_revenue = data.own_revenue;
self.other_revenue = data.other_revenue;
self.acceptance_chance = data.acceptance_chance;
self.payed = 0;
- self.payments = ko.observableArray([]);
- $.each(data.payments, function(i, p){
- self.payed =+ p.paymentamount;
+ self.payments = ko.observableArray( [] );
+ $.each( data.payments, function ( i, p ) {
+ self.payed = +p.paymentamount;
- self.payments.push( new vm.Payment(p));
- });
+ self.payments.push( new vm.Payment( p ) );
+ } );
},
- Payment : function(data){
+ Payment: function ( data ) {
self.id = data.id;
- self.paymentdate = dbo.helpers.mysql2date(self.paymentdate);
+ self.paymentdate = dbo.helpers.mysql2date( self.paymentdate );
self.paymentamount = data.paymentamount;
}
};
diff --git a/public/js/lib/services/offersService.js b/public/js/lib/services/offersService.js
index d2f446f..137231b 100644
--- a/public/js/lib/services/offersService.js
+++ b/public/js/lib/services/offersService.js
@@ -10,16 +10,10 @@ dbo.offersService = {
vm: null,
- init: function () {
+ newOffer: function (projectID=false, customerID=false) {
var service = dbo.offersService;
- service.refreshOffers();
- },
-
- newOffer: function () {
- var service = dbo.offersService;
-
- dbo.editOfferModal.newEditOffer( false, function () {
+ dbo.editOfferModal.newEditOffer( false, projectID, customerID, function () {
service.refreshOffers();
} );
},
@@ -33,10 +27,10 @@ dbo.offersService = {
service.refreshOffers();
},
- editOffer: function ( that ) {
+ editOffer: function ( that, projectID=false, custormerID=false, hasProject=false ) {
var offer = that;
- dbo.editOfferModal.newEditOffer( offer, function () {
+ dbo.editOfferModal.newEditOffer( offer, projectID, custormerID, hasProject, function () {
dbo.offersService.refreshOffers();
} );
},
@@ -84,21 +78,23 @@ dbo.offersService = {
} );
},
- refreshOffers: function (projectID = false) {
+ refreshOffers: function () {
var vm = dbo.offersService.vm;
var self = dbo.offersService;
- dbo.offerDataService.getAllOffers( projectID, vm.archive() ? 'T' : 'F', function ( data ) {
+ dbo.offerDataService.getAllOffers( vm.projectID , vm.archive() ? 'T' : 'F', function ( data ) {
vm.offers.removeAll();
$.each( data, function ( i, p ) {
vm.offers.push( new self.Offer( p ) );
- } )
+ } );
} );
},
Offer: function ( data ) {
this.id = data.id;
this.offernumber = data.offernumber;
+ this.offerleader_id = data.offerleader_id;
+ this.project_id = data.project_id;
this.acceptance_chance = data.acceptance_chance;
this.projectNumber = data.project ? data.project.projectnumber : null;
this.customerName = data.customer ? data.customer.name : null;
@@ -107,6 +103,8 @@ dbo.offersService = {
this.rejectdate = data.rejectdate ? dbo.helpers.mysql2date( data.rejectdate ) : null;
this.accepteddate = data.accepteddate ? dbo.helpers.mysql2date( data.accepteddate ) : null;
this.acceptance_chance = data.acceptance_chance ? data.acceptance_chance : 0;
+ this.own_revenue = data.own_revenue;
+ this.other_revenue = data.other_revenue;
this.archive = data.archive;
}
};
\ No newline at end of file