strat projects
This commit is contained in:
@@ -16,23 +16,28 @@ class Project extends BaseModel {
|
|||||||
return $this->hasMany( 'Offer' );
|
return $this->hasMany( 'Offer' );
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function saveProject( $offerID, $offer )
|
public function projectleader()
|
||||||
{
|
{
|
||||||
$offer = (array) $offer;
|
return $this->belongsTo( 'User', 'projectleader_id' );
|
||||||
|
}
|
||||||
|
|
||||||
$offer['startdate'] = date2mysql( $offer['startdate'] );
|
public function customer()
|
||||||
$offer['accepteddate'] = date2mysql( $offer['accepteddate'] );
|
{
|
||||||
$offer['rejectdate'] = date2mysql( $offer['rejectdate'] );
|
return $this->belongsTo( 'Customer' );
|
||||||
|
}
|
||||||
|
|
||||||
if ( $offerID == 0 )
|
public static function getAllProjects( $archive = 'F' )
|
||||||
{
|
{
|
||||||
$offer = Offer::create( $offer );
|
$projects = Project::with( [
|
||||||
}
|
'projectleader' => function ( $q ) {
|
||||||
else
|
$q->selectRaw( "id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" );
|
||||||
{
|
}] )
|
||||||
$offer = Offer::whereId( $offerID )->update( $offer );
|
->with( 'customer' );
|
||||||
}
|
|
||||||
|
|
||||||
return $offer['id'];
|
if($archive == 'F') $projects = $projects->whereArchive('F');
|
||||||
|
|
||||||
|
$projects = $projects->get();
|
||||||
|
|
||||||
|
return $projects;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -18,7 +18,8 @@ class User extends BaseModel {
|
|||||||
|
|
||||||
public static function getAllUsers( $archive )
|
public static function getAllUsers( $archive )
|
||||||
{
|
{
|
||||||
$users = User::orderBy( 'lastname' );
|
$users = User::selectRaw("*, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname")
|
||||||
|
->orderBy( 'lastname' );
|
||||||
|
|
||||||
if ( $archive == 'F' ) $users = $users->whereArchive( 'F' );
|
if ( $archive == 'F' ) $users = $users->whereArchive( 'F' );
|
||||||
|
|
||||||
@@ -47,23 +48,23 @@ class User extends BaseModel {
|
|||||||
|
|
||||||
public static function saveUser( $userID, $user )
|
public static function saveUser( $userID, $user )
|
||||||
{
|
{
|
||||||
$user = (array)$user;
|
$user = (array) $user;
|
||||||
|
|
||||||
if( $userID == 0)
|
if ( $userID == 0 )
|
||||||
{
|
{
|
||||||
$user = User::create($user);
|
$user = User::create( $user );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$user = User::whereId($userID)->update($user);
|
$user = User::whereId( $userID )->update( $user );
|
||||||
}
|
}
|
||||||
|
|
||||||
return $user['id'];
|
return $user['id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function removeUser($userID)
|
public static function removeUser( $userID )
|
||||||
{
|
{
|
||||||
User::whereId($userID)->delete();
|
User::whereId( $userID )->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,49 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xl-12">
|
<div class="col-xl-12">
|
||||||
<div role="form" class="form-horizontal">
|
<div role="form" class="form-horizontal">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-xl-3 form-control-label">
|
||||||
|
offerte nummer
|
||||||
|
</label>
|
||||||
|
<div class="col-xl-5">
|
||||||
|
<div class="input-group input-group-icon">
|
||||||
|
<span class="input-group-addon">
|
||||||
|
<i class="icon fa-asterisk"></i>
|
||||||
|
</span>
|
||||||
|
<input type="text"
|
||||||
|
placeholder="offerte nummer"
|
||||||
|
class="form-control"
|
||||||
|
data-bind="textInput:offernumber">
|
||||||
|
</div>
|
||||||
|
<small class="invalid-feedback"
|
||||||
|
data-bind="style:{display: ! offernumber() ? 'block' : 'none'}">
|
||||||
|
voer een offerte nummer in
|
||||||
|
</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-xl-3 form-control-label">
|
||||||
|
offerte leider
|
||||||
|
</label>
|
||||||
|
<div class="col-xl-8">
|
||||||
|
<div class="input-group input-group-icon">
|
||||||
|
<select class="form-control"
|
||||||
|
data-bind="options:users,
|
||||||
|
optionsValue:'id',
|
||||||
|
optionsText:'fullname',
|
||||||
|
value:offerleader_id,
|
||||||
|
optionsCaption:'selecteer offerteleider'">
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<small class="invalid-feedback"
|
||||||
|
data-bind="style:{display: ! offerleader_id() ? 'block' : 'none'}">
|
||||||
|
selecteer een offerteleider
|
||||||
|
</small>
|
||||||
|
</div>
|
||||||
|
<div class="col-xl-1">
|
||||||
|
<i class="icon fa-plus-square greenish pointer" data-bind="click:addUser"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label class="col-xl-3 form-control-label">
|
<label class="col-xl-3 form-control-label">
|
||||||
klant
|
klant
|
||||||
@@ -76,10 +119,10 @@
|
|||||||
<label class="col-xl-3 form-control-label">
|
<label class="col-xl-3 form-control-label">
|
||||||
kans
|
kans
|
||||||
</label>
|
</label>
|
||||||
<div class="col-xl-5">
|
<div class="col-xl-4">
|
||||||
<div class="input-group input-group-icon">
|
<div class="input-group input-group-icon">
|
||||||
<span class="input-group-addon">
|
<span class="input-group-addon">
|
||||||
<i class="icon fa-question"></i>
|
<i class="icon fa-percent"></i>
|
||||||
</span>
|
</span>
|
||||||
<input type="text"
|
<input type="text"
|
||||||
placeholder="kans"
|
placeholder="kans"
|
||||||
@@ -90,6 +133,41 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-xl-3 form-control-label">
|
||||||
|
omzet
|
||||||
|
</label>
|
||||||
|
<div class="col-xl-4">
|
||||||
|
<div class="input-group input-group-icon">
|
||||||
|
<span class="input-group-addon">
|
||||||
|
<i class="icon fa-euro"></i>
|
||||||
|
</span>
|
||||||
|
<input type="text"
|
||||||
|
placeholder="eigen omzet"
|
||||||
|
class="form-control align-right"
|
||||||
|
data-bind="textInput:own_revenue,
|
||||||
|
event:{keyup:validateNumber}">
|
||||||
|
</div>
|
||||||
|
<small>
|
||||||
|
eigen omzet
|
||||||
|
</small>
|
||||||
|
</div>
|
||||||
|
<div class="col-xl-4">
|
||||||
|
<div class="input-group input-group-icon">
|
||||||
|
<span class="input-group-addon">
|
||||||
|
<i class="icon fa-euro"></i>
|
||||||
|
</span>
|
||||||
|
<input type="text"
|
||||||
|
placeholder="overige omzet"
|
||||||
|
class="form-control align-right"
|
||||||
|
data-bind="textInput:other_revenue,
|
||||||
|
event:{keyup:validateNumber}">
|
||||||
|
</div>
|
||||||
|
<small>
|
||||||
|
overige omzet
|
||||||
|
</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label class="col-xl-3 form-control-label">
|
<label class="col-xl-3 form-control-label">
|
||||||
acceptatie datum
|
acceptatie datum
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<div class="modal modal-fade-in-scale-up modal-primary" tabindex="-1" id="project-modal">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">toevoegen / wijzigen project</h5>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xl-12">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
<table class="table table-sm">
|
<table class="table table-sm">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
<th class="table-tealish-header">nummer</th>
|
||||||
<th class="table-tealish-header">klant</th>
|
<th class="table-tealish-header">klant</th>
|
||||||
<th class="table-tealish-header">project</th>
|
<th class="table-tealish-header">project</th>
|
||||||
<th class="table-tealish-header">datum</th>
|
<th class="table-tealish-header">datum</th>
|
||||||
@@ -15,6 +16,9 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody data-bind="foreach:offers">
|
<tbody data-bind="foreach:offers">
|
||||||
<tr data-bind="css:{'table-info':$root.selectedRowID() == id}">
|
<tr data-bind="css:{'table-info':$root.selectedRowID() == id}">
|
||||||
|
<td data-bind="click:$root.selectOffer" class="pointer">
|
||||||
|
<span data-bind="text:offernumber"></span>
|
||||||
|
</td>
|
||||||
<td data-bind="click:$root.selectOffer" class="pointer">
|
<td data-bind="click:$root.selectOffer" class="pointer">
|
||||||
<span data-bind="text:customerName"></span>
|
<span data-bind="text:customerName"></span>
|
||||||
</td>
|
</td>
|
||||||
@@ -50,12 +54,12 @@
|
|||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="4" class="">
|
<td colspan="5" class="">
|
||||||
<button class="btn btn-primary btn-round btn-sm" data-bind="click:newOffer">
|
<button class="btn btn-primary btn-round btn-sm" data-bind="click:newOffer">
|
||||||
nieuwe offerte
|
nieuwe offerte
|
||||||
</button>
|
</button>
|
||||||
</td>
|
</td>
|
||||||
<td colspan="2" class="">
|
<td colspan="3" class="">
|
||||||
<div class="row form-horizontal">
|
<div class="row form-horizontal">
|
||||||
<label class="col-md-4 form-control-label">archief</label>
|
<label class="col-md-4 form-control-label">archief</label>
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
|
|||||||
@@ -1 +1,90 @@
|
|||||||
<h1>projects</h1>
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xl-12">
|
||||||
|
<table class="table table-sm">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="table-tealish-header">nummer</th>
|
||||||
|
<th class="table-tealish-header">projectleider</th>
|
||||||
|
<th class="table-tealish-header">klant</th>
|
||||||
|
<th class="table-tealish-header">start</th>
|
||||||
|
<th class="table-tealish-header">eind</th>
|
||||||
|
<th class="table-tealish-header">gefactureerd</th>
|
||||||
|
<th class="table-tealish-header">te factureren</th>
|
||||||
|
<th class="table-tealish-header">totaal factuur</th>
|
||||||
|
<th class="table-tealish-header"> </th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody data-bind="foreach:projects">
|
||||||
|
<tr data-bind="css:{'table-info':$root.selectedRowID() == id}">
|
||||||
|
<td data-bind="click:$root.selectProject" class="pointer">
|
||||||
|
<span data-bind="text:projectnumber"></span>
|
||||||
|
</td>
|
||||||
|
<td data-bind="click:$root.selectPoject" class="pointer">
|
||||||
|
<span data-bind="text:projectleader"></span>
|
||||||
|
</td>
|
||||||
|
<td data-bind="click:$root.selectPoject" class="pointer">
|
||||||
|
<span data-bind="text:customer"></span>
|
||||||
|
</td>
|
||||||
|
<td data-bind="click:$root.selectPoject" class="pointer">
|
||||||
|
<span data-bind="text:startdate"></span>
|
||||||
|
</td>
|
||||||
|
<td data-bind="click:$root.selectPoject" class="pointer">
|
||||||
|
<span data-bind="text:enddate"></span>
|
||||||
|
</td>
|
||||||
|
<td data-bind="click:$root.selectPoject" class="pointer">
|
||||||
|
<span data-bind="text:billed"></span>
|
||||||
|
</td>
|
||||||
|
<td data-bind="click:$root.selectPoject" class="pointer">
|
||||||
|
<span data-bind="text:toBillings"></span>
|
||||||
|
</td>
|
||||||
|
<td data-bind="click:$root.selectPoject" class="pointer">
|
||||||
|
<span data-bind="text:billings"></span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<i class="icon fa-edit pointer" title="wijzig" data-bind="click:$root.editOffer"></i>
|
||||||
|
<!-- ko if:archive == 'F' -->
|
||||||
|
<i class="icon fa-archive pointer" title="archiveer"
|
||||||
|
data-bind="click:$root.archiveOffer"></i>
|
||||||
|
<!-- /ko -->
|
||||||
|
<!-- ko if:archive != 'F' -->
|
||||||
|
<i class="icon fa-minus-circle redish pointer" title="archiveer"
|
||||||
|
data-bind="click:$root.archiveOffer"></i>
|
||||||
|
<!-- /ko -->
|
||||||
|
<i class="icon fa-trash redish pointer" title="verwijder"
|
||||||
|
data-bind="click:$root.removeOffer, css:{'whiteish':$root.selectedRowID() == id}"></i>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
<tfoot>
|
||||||
|
<tr>
|
||||||
|
<td colspan="6" class="">
|
||||||
|
<button class="btn btn-primary btn-round btn-sm" data-bind="click:newProject">
|
||||||
|
nieuw project
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
<td colspan="3" class="">
|
||||||
|
<div class="row form-horizontal">
|
||||||
|
<label class="col-md-4 form-control-label">archief</label>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<div class="onoffswitch" data-bind="click:toggleArchive">
|
||||||
|
<input type="checkbox"
|
||||||
|
name="onoffswitch"
|
||||||
|
class="onoffswitch-checkbox"
|
||||||
|
data-bind="checked:archive"
|
||||||
|
id="myonoffswitch">
|
||||||
|
<label class="onoffswitch-label" for="myonoffswitch">
|
||||||
|
<span class="onoffswitch-inner"></span>
|
||||||
|
<span class="onoffswitch-switch"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tfoot>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -65,10 +65,12 @@
|
|||||||
<script src="js/lib/modules/beheer/customersModule.js"></script>
|
<script src="js/lib/modules/beheer/customersModule.js"></script>
|
||||||
<script src="js/lib/modules/beheer/externalsModule.js"></script>
|
<script src="js/lib/modules/beheer/externalsModule.js"></script>
|
||||||
<script src="js/lib/modules/projects/offersModule.js"></script>
|
<script src="js/lib/modules/projects/offersModule.js"></script>
|
||||||
|
<script src="js/lib/modules/projects/projectsModule.js"></script>
|
||||||
<script src="js/lib/modules/modals/userModal.js"></script>
|
<script src="js/lib/modules/modals/userModal.js"></script>
|
||||||
<script src="js/lib/modules/modals/customerModal.js"></script>
|
<script src="js/lib/modules/modals/customerModal.js"></script>
|
||||||
<script src="js/lib/modules/modals/externalModal.js"></script>
|
<script src="js/lib/modules/modals/externalModal.js"></script>
|
||||||
<script src="js/lib/modules/modals/offerModal.js"></script>
|
<script src="js/lib/modules/modals/offerModal.js"></script>
|
||||||
|
<script src="js/lib/modules/modals/projectModal.js"></script>
|
||||||
<script src="js/lib/modules/modals/commentModal.js"></script>
|
<script src="js/lib/modules/modals/commentModal.js"></script>
|
||||||
|
|
||||||
<!---->
|
<!---->
|
||||||
@@ -80,4 +82,5 @@
|
|||||||
<script src="js/lib/dataservices/offerDataservice.js"></script>
|
<script src="js/lib/dataservices/offerDataservice.js"></script>
|
||||||
<script src="js/lib/dataservices/commentsDataservice.js"></script>
|
<script src="js/lib/dataservices/commentsDataservice.js"></script>
|
||||||
<script src="js/lib/dataservices/documentsDataservice.js"></script>
|
<script src="js/lib/dataservices/documentsDataservice.js"></script>
|
||||||
|
<script src="js/lib/dataservices/projectsDataservice.js"></script>
|
||||||
<script src="js/lib/helpers.js"></script>
|
<script src="js/lib/helpers.js"></script>
|
||||||
@@ -4,6 +4,7 @@ $this->load->view('modals/user_modal');
|
|||||||
$this->load->view('modals/customer_modal');
|
$this->load->view('modals/customer_modal');
|
||||||
$this->load->view('modals/external_modal');
|
$this->load->view('modals/external_modal');
|
||||||
$this->load->view('modals/offer_modal');
|
$this->load->view('modals/offer_modal');
|
||||||
|
$this->load->view('modals/project_modal');
|
||||||
$this->load->view('modals/comment_modal');
|
$this->load->view('modals/comment_modal');
|
||||||
|
|
||||||
$this->load->view('specials/tellme_modal');
|
$this->load->view('specials/tellme_modal');
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
/**
|
||||||
|
* Created by Pensare Software.
|
||||||
|
* Project: Theo Weijmer
|
||||||
|
* Date: 25/12/2017
|
||||||
|
* Time: 09:50
|
||||||
|
*/
|
||||||
|
|
||||||
|
dbo.projectDataService = {
|
||||||
|
|
||||||
|
getAllProjects: function ( archive = 'F', callback ) {
|
||||||
|
$.getJSON( 'index.php/projects/projectsController/getAllProjects/' + archive )
|
||||||
|
.done( function ( data ) {
|
||||||
|
callback( data );
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
getProject: function ( userID, callback ) {
|
||||||
|
$.getJSON( 'index.php/projects/projectsController/getProject/' + userID )
|
||||||
|
.done( function ( data ) {
|
||||||
|
callback( data );
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
saveProject: function ( submitDATA, callback ) {
|
||||||
|
$.post( 'index.php/projects/projectsController/saveProject', submitDATA, function () {
|
||||||
|
}, 'json' )
|
||||||
|
.done( function ( data ) {
|
||||||
|
callback( data );
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
archiveProject: function ( userID, status, callback ) {
|
||||||
|
$.get( 'index.php/projects/projectsController/archiveProject/' + userID + '/' + status )
|
||||||
|
.done( function () {
|
||||||
|
callback();
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
removeProject: function ( userID, callback ) {
|
||||||
|
$.getJSON( 'index.php/projects/projectsController/removeProject/' + userID )
|
||||||
|
.done( function ( data ) {
|
||||||
|
callback( data );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -10,17 +10,24 @@ $( function () {
|
|||||||
id : null,
|
id : null,
|
||||||
projects : ko.observableArray( [] ),
|
projects : ko.observableArray( [] ),
|
||||||
customers : ko.observableArray( [] ),
|
customers : ko.observableArray( [] ),
|
||||||
|
users : ko.observableArray( [] ),
|
||||||
startdate : ko.observable(),
|
startdate : ko.observable(),
|
||||||
acceptance_chance: ko.observable(),
|
acceptance_chance: ko.observable(),
|
||||||
accepteddate : ko.observable(),
|
accepteddate : ko.observable(),
|
||||||
rejectdate : ko.observable(),
|
rejectdate : ko.observable(),
|
||||||
customer_id : ko.observable(),
|
customer_id : ko.observable(),
|
||||||
project_id : ko.observable(),
|
project_id : ko.observable(),
|
||||||
|
offernumber : ko.observable(),
|
||||||
|
offerleader_id : ko.observable(),
|
||||||
|
own_revenue : ko.observable(),
|
||||||
|
other_revenue : ko.observable(),
|
||||||
|
|
||||||
init: function () {
|
init: function () {
|
||||||
var vm = dbo.editOfferModal;
|
var vm = dbo.editOfferModal;
|
||||||
|
|
||||||
dbo.editOfferModal.refreshCustomers();
|
dbo.editOfferModal.refreshCustomers();
|
||||||
|
|
||||||
|
dbo.editOfferModal.refreshUsers();
|
||||||
},
|
},
|
||||||
|
|
||||||
newEditOffer: function ( offer, callback ) {
|
newEditOffer: function ( offer, callback ) {
|
||||||
@@ -45,6 +52,10 @@ $( function () {
|
|||||||
id : vm.id,
|
id : vm.id,
|
||||||
project_id : vm.project_id(),
|
project_id : vm.project_id(),
|
||||||
customer_id : vm.customer_id(),
|
customer_id : vm.customer_id(),
|
||||||
|
offerleader_id : vm.offerleader_id(),
|
||||||
|
offernumber : vm.offernumber(),
|
||||||
|
own_revenue : vm.own_revenue(),
|
||||||
|
other_revenue : vm.other_revenue(),
|
||||||
startdate : vm.startdate(),
|
startdate : vm.startdate(),
|
||||||
acceptance_chance: vm.acceptance_chance(),
|
acceptance_chance: vm.acceptance_chance(),
|
||||||
accepteddate : vm.accepteddate(),
|
accepteddate : vm.accepteddate(),
|
||||||
@@ -87,10 +98,14 @@ $( function () {
|
|||||||
vm.id = offer.id || 0;
|
vm.id = offer.id || 0;
|
||||||
vm.customer_id( offer.customer_id || null );
|
vm.customer_id( offer.customer_id || null );
|
||||||
vm.project_id( offer.project_id || null );
|
vm.project_id( offer.project_id || null );
|
||||||
|
vm.offerleader_id( offer.offerleader_id || null );
|
||||||
|
vm.offernumber( offer.offernumber || null );
|
||||||
vm.startdate( offer.startdate || null );
|
vm.startdate( offer.startdate || null );
|
||||||
vm.acceptance_chance( offer.acceptance_chance || 0 );
|
vm.acceptance_chance( offer.acceptance_chance || 0 );
|
||||||
vm.accepteddate( offer.accepteddate || null );
|
vm.accepteddate( offer.accepteddate || null );
|
||||||
vm.rejectdate( offer.rejectdate || null );
|
vm.rejectdate( offer.rejectdate || null );
|
||||||
|
vm.own_revenue( offer.own_revenue || 0 );
|
||||||
|
vm.other_revenue( offer.other_revenue || 0 )
|
||||||
},
|
},
|
||||||
|
|
||||||
showOfferModal: function () {
|
showOfferModal: function () {
|
||||||
@@ -113,6 +128,14 @@ $( function () {
|
|||||||
} );
|
} );
|
||||||
},
|
},
|
||||||
|
|
||||||
|
addUser:function(){
|
||||||
|
var vm = dbo.editOfferModal;
|
||||||
|
dbo.editUserModal.newEditUser( false, function () {
|
||||||
|
vm.refreshUsers();
|
||||||
|
} );
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
refreshCustomers: function () {
|
refreshCustomers: function () {
|
||||||
var vm = dbo.editOfferModal;
|
var vm = dbo.editOfferModal;
|
||||||
dbo.customerDataService.getAllCustomers( 'F', function ( data ) {
|
dbo.customerDataService.getAllCustomers( 'F', function ( data ) {
|
||||||
@@ -120,6 +143,13 @@ $( function () {
|
|||||||
} );
|
} );
|
||||||
},
|
},
|
||||||
|
|
||||||
|
refreshUsers: function () {
|
||||||
|
var vm = dbo.editOfferModal;
|
||||||
|
dbo.userDataService.getAllUsers( 'F', function ( data ) {
|
||||||
|
vm.users( data );
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
resetDate: function ( field ) {
|
resetDate: function ( field ) {
|
||||||
var vm = dbo.editOfferModal;
|
var vm = dbo.editOfferModal;
|
||||||
|
|
||||||
@@ -142,7 +172,9 @@ $( function () {
|
|||||||
}, dbo.editOfferModal );
|
}, dbo.editOfferModal );
|
||||||
|
|
||||||
dbo.editOfferModal.formValid = ko.pureComputed( function () {
|
dbo.editOfferModal.formValid = ko.pureComputed( function () {
|
||||||
|
if ( !this.offernumber() ) return false;
|
||||||
if ( !this.customer_id() ) return false;
|
if ( !this.customer_id() ) return false;
|
||||||
|
if ( !this.offerleader_id() ) return false;
|
||||||
if ( !this.offerDateValid() ) return false;
|
if ( !this.offerDateValid() ) return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* Created by Pensare Software.
|
||||||
|
* Offer: Theo Weijmer
|
||||||
|
* Date: 25/12/2017
|
||||||
|
* Time: 17:32
|
||||||
|
*/
|
||||||
|
|
||||||
|
$( function () {
|
||||||
|
dbo.editOfferModal = {
|
||||||
|
};
|
||||||
|
|
||||||
|
ko.applyBindings( dbo.editOfferModal, document.getElementById( 'project-modal' ) );
|
||||||
|
|
||||||
|
} );
|
||||||
@@ -207,6 +207,7 @@ dbo.offersInit = function () {
|
|||||||
|
|
||||||
Offer: function ( data ) {
|
Offer: function ( data ) {
|
||||||
this.id = data.id;
|
this.id = data.id;
|
||||||
|
this.offernumber = data.offernumber;
|
||||||
this.acceptance_chance = data.acceptance_chance;
|
this.acceptance_chance = data.acceptance_chance;
|
||||||
this.projectNumber = data.project ? data.project.projectnumber : null;
|
this.projectNumber = data.project ? data.project.projectnumber : null;
|
||||||
this.customerName = data.customer ? data.customer.name : null;
|
this.customerName = data.customer ? data.customer.name : null;
|
||||||
|
|||||||
@@ -0,0 +1,129 @@
|
|||||||
|
/**
|
||||||
|
* Created by Pensare Software.
|
||||||
|
* User: Theo Weijmer
|
||||||
|
* Date: 05/01/2018
|
||||||
|
* Time: 15:54
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
dbo.projectsInit = function () {
|
||||||
|
|
||||||
|
if ( dbo.projectsModel !== undefined ) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
dbo.projectsModel = {
|
||||||
|
|
||||||
|
projects : ko.observableArray( [] ),
|
||||||
|
project : ko.observable(),
|
||||||
|
archive : ko.observable( false ),
|
||||||
|
selectedRowID: ko.observable(),
|
||||||
|
|
||||||
|
init: function () {
|
||||||
|
var vm = dbo.projectsModel;
|
||||||
|
|
||||||
|
vm.refreshProjects();
|
||||||
|
},
|
||||||
|
|
||||||
|
newProject: function () {
|
||||||
|
var vm = dbo.projectsModel;
|
||||||
|
dbo.editProjectModal.newEditProject( false, function () {
|
||||||
|
vm.refreshProjects();
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
toggleArchive: function () {
|
||||||
|
var vm = dbo.projectsModel;
|
||||||
|
|
||||||
|
vm.archive( !vm.archive() );
|
||||||
|
|
||||||
|
vm.refreshProjects();
|
||||||
|
},
|
||||||
|
|
||||||
|
editProject: function () {
|
||||||
|
var project = this;
|
||||||
|
var vm = dbo.projectsModel;
|
||||||
|
|
||||||
|
dbo.editProjectModal.newEditProject( project, function () {
|
||||||
|
vm.refreshProjects();
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
selectProject: function () {
|
||||||
|
var vm = dbo.projectsModel;
|
||||||
|
|
||||||
|
vm.selectedRowID( this.id );
|
||||||
|
},
|
||||||
|
|
||||||
|
archiveProject: function () {
|
||||||
|
var vm = dbo.projectsModel;
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
var status = self.archive == 'F' ? 'T' : 'F';
|
||||||
|
|
||||||
|
dbo.projectDataService.archiveProject( self.id, status, function () {
|
||||||
|
vm.refreshProjects();
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
removeProject: function () {
|
||||||
|
var vm = dbo.projectsModel;
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
tellMe( {
|
||||||
|
title : 'verwijderen projecte',
|
||||||
|
message : 'weet u zeker dat u de project wilt verwijderen, dit kan niet ongedaan worden gemaakt',
|
||||||
|
notify : true,
|
||||||
|
noText : 'nee verwijder de project niet',
|
||||||
|
yesText : 'ja verwijder de project',
|
||||||
|
modalClass: 'modal-warning'
|
||||||
|
}, function ( response ) {
|
||||||
|
console.log( response );
|
||||||
|
if ( response ) {
|
||||||
|
dbo.projectDataService.removeProject( self.id, function ( data ) {
|
||||||
|
if ( data.result ) {
|
||||||
|
tellMe( {
|
||||||
|
title : 'project verwijderd',
|
||||||
|
message : 'de project is succesvol verwijderd',
|
||||||
|
modalClass: 'modal-success'
|
||||||
|
}, function () {
|
||||||
|
vm.refreshProjects();
|
||||||
|
} );
|
||||||
|
} else {
|
||||||
|
tellMe( {
|
||||||
|
title : 'fout bij verwijderen project',
|
||||||
|
message : 'de project kan niet worden verwijderd',
|
||||||
|
modalClass: 'modal-danger'
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
refreshProjects: function () {
|
||||||
|
var vm = dbo.projectsModel;
|
||||||
|
|
||||||
|
dbo.projectDataService.getAllProjects( vm.archive() ? 'T' : 'F', function ( data ) {
|
||||||
|
vm.projects.removeAll();
|
||||||
|
$.each( data, function ( i, p ) {
|
||||||
|
vm.projects.push( new vm.Project( p ) );
|
||||||
|
} )
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
Project: function ( data ) {
|
||||||
|
this.id = data.id;
|
||||||
|
this.projectnumber = data.projectnumber;
|
||||||
|
this.projectleader = data.projectleader.fullname;
|
||||||
|
this.customer = data.customer.name;
|
||||||
|
this.startdate = data.startdate;
|
||||||
|
this.enddate = data.enddate;
|
||||||
|
this.archive = data.archive;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
dbo.projectsModel.init();
|
||||||
|
|
||||||
|
ko.applyBindings( dbo.projectsModel, document.getElementById( 'PROJECTS' ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user