Files
2024-11-08 15:43:24 +01:00

145 lines
4.0 KiB
JavaScript

/**
* Created by Pensare Software.
* User: Theo Weijmer
* Date: 17/01/2018
* Time: 09:31
*/
dbo.offersService = {
vm: null,
newOffer: function ( projectID = false, customerID = false ) {
var service = dbo.offersService;
dbo.editOfferModal.newEditOffer( false, projectID, customerID, true, function () {
service.refreshOffers();
} );
},
toggleArchive: function () {
var service = dbo.offersService;
var vm = dbo.offersService.vm;
vm.archive( !vm.archive() );
service.refreshOffers();
},
editOffer: function ( that, projectID = false, custormerID = false, hasProject = false ) {
var offer = that;
dbo.editOfferModal.newEditOffer( offer, projectID, custormerID, hasProject, function () {
dbo.offersService.refreshOffers();
} );
},
archiveOffer: function ( that ) {
var service = dbo.offersService;
var status = that.archive == 'F' ? 'T' : 'F';
dbo.offerDataService.archiveOffer( that.id, status, function () {
service.refreshOffers();
} );
},
removeOffer: function ( that ) {
var service = dbo.offersService;
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 ) {
if ( response ) {
dbo.offerDataService.removeOffer( that.id, function ( data ) {
if ( data.result ) {
tellMe( {
title : 'offerte verwijderd',
message : 'de offerte is succesvol verwijderd',
modalClass: 'modal-success'
}, function () {
service.refreshOffers();
} );
} else {
tellMe( {
title : 'fout bij verwijderen offerte',
message : 'de offerte kan niet worden verwijderd, verwijder eerst het gerelateerde project',
modalClass: 'modal-danger'
} );
}
} );
}
} );
},
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;
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();
vm.totalOwnRevenue( 0 );
vm.totalChanceOwnRevenue( 0 );
$.each( data, function ( i, p ) {
vm.offers.push( new self.Offer( p ) );
} );
} );
},
Offer: function ( data ) {
var vm = dbo.offersModel;
this.id = data.id;
this.offernumber = data.offernumber;
this.offername = data.offername;
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;
this.customer_id = data.customer_id;
this.deadline = data.deadline ? dbo.helpers.mysql2date( data.deadline ) : null
this.startdate = data.startdate ? dbo.helpers.mysql2date( data.startdate ) : null;
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.other_revenue = data.other_revenue;
this.own_revenue = data.own_revenue;
this.chanceOwnRevenue = Math.round( (Number( data.own_revenue ) * data.acceptance_chance) / 100 );
this.costs = data.costs;
this.archive = data.archive;
vm.totalOwnRevenue( Number( vm.totalOwnRevenue() ) + Number( this.own_revenue ) );
vm.totalChanceOwnRevenue( Number( vm.totalChanceOwnRevenue() ) + Number( this.chanceOwnRevenue ) );
}
};