app.controller('InvoicesCtrl', function($scope, $http) { //get al invoices statuses $scope.getAllstatuses = function(){ var req = { method: 'GET', url: '/invoice_status/getAll', } $http(req).then(function(response) { if (response.status && response.data.status) { $scope.allInvoiceStatuses = response.data.data; } }); } //set status filter $scope.changeFilter = function(name){ $scope.invoices.updatePredefinedFilters('status_name', name); } $scope.getAllstatuses(); //Inovices $scope.invoices = { name: 'Facturen', controller: 'invoice', function: 'getForOverview', //Panel class panelClass: 'panel-trainingskampen', showFilters: true, showRowCount: true, pageLimit: 20, readOnly: !($scope.user && $scope.user.role.id > 1), fields: [ 'date', 'invoice_number', 'customer_name', 'payment_reference', 'total_amount', 'sent', 'last_sent_at', 'exact_id' ], fieldDetails: { 'date': { 'label': 'Datum', 'sortAsc': false, }, 'invoice_number': { 'label': 'Nummer', }, 'customer_name': { 'label': 'Klant', }, 'payment_reference': { 'label': 'Referentie', }, 'total_amount': { 'label': 'Bedrag', 'currency': '€', 'type' : 'number', }, 'sent': { 'label': 'Verzonden', }, 'last_sent_at': { 'label': 'Laatste keer verzonden' }, 'exact_id': { 'hideList': true, 'hideEdit': true, } }, buttons: { 'C':{ 'id': 'c', 'header': false, 'inline': false, }, 'R': { 'id': 'r', 'name': 'Factuur log', 'label': 'Log', 'cancelName': 'Annuleer', 'confirmName': 'Log', 'confirmClass': 'info', 'inline': true, 'header': false, 'icon': 'fa-list', 'action': 'toInvoiceLog', 'parentScope': true, }, 'S': { 'id': 's', 'name': 'Verstuur factuur', 'label': 'Verzenden', 'cancelName': 'Annuleer', 'confirmName': 'Stuur', 'confirmClass': 'info', 'inline': true, 'header': false, 'icon': 'fa-envelope', 'action': 'sendInvoice', 'parentScope': true, }, 'DL': { 'id': 'dl', 'name': 'Download factuur', 'label': 'Downloaden', 'cancelName': 'Annuleer', 'confirmName': 'Download', 'confirmClass': 'info', 'inline': true, 'header': false, 'icon': 'fa-download', 'action': 'downloadInvoice', 'parentScope': true, }, 'SI': { 'id': 'si', 'name': 'Verwerk factuur naar exact', 'label': 'Verwerk factuur naar exact', 'cancelName': 'Annuleer', 'confirmName': 'Verwerk factuur naar exact', 'confirmClass': 'info', 'inline': true, 'header': false, 'icon': 'fa-refresh', 'action': 'sendInvoiceToExact', 'parentScope': true, 'whereField': 'exact_id', 'where': { '==': '', }, }, 'U':{ 'id': 'u', 'header': false, 'inline': false, }, 'D':{ 'id': 'd', 'header': false, 'inline': false, }, } } //Inovices $scope.invoiceLogs = { name: 'Facturen log', controller: 'invoice_log', function: '', //Panel class panelClass: 'panel-trainingskampen', showFilters: true, showRowCount: true, pageLimit: 20, readOnly: true, fields: [ 'created_at', 'message', ], fieldDetails: { 'created_at': { 'label': 'Datum', 'sortAsc': false, }, 'message': { 'label': 'Bericht' } }, buttons: { 'C':{ 'id': 'c', 'header': false, 'inline': false, }, 'R': { 'id': 'r', 'inline': true, 'header': false, }, 'U':{ 'id': 'u', 'header': false, 'inline': false, }, 'D':{ 'id': 'd', 'header': false, 'inline': false, }, } } $scope.toInvoiceLog = function(btn, row, blnSubmit) { $scope.invoiceLogs.function = '/getByInvoice/' + row.id; $scope.invoiceLogs.call('initiate'); $('#logInvoiceModal').modal('show'); } //bekijk factuur $scope.toInvoice = function(btn, row, blnSubmit) { var req = { method: 'POST', url: '/invoice/getPdfInvoice/' + row['id'], } $http(req).then(function(response) { if (response.status && response.data.status == undefined) { window.open('/invoice/getPdfInvoice/' + row['id'], '_blank'); }else if(response.data.message == 'invoice_number.not.recognized'){ swal('Mislukt', 'Het factuur nummer werd helaas niet herkend, probeer het opnieuw', 'error'); }else{ swal('Mislukt', 'De factuur kon helaas niet worden opgehaald, probeer het opnieuw', 'error'); } }, function(error) { swal('Mislukt', 'De factuur kon helaas niet worden opgehaald, gelieve contact op te nemen met SBA', 'error'); }); } //verstuur factuur $scope.sendInvoice = function(btn, row, blnSubmit) { var req = { method: 'POST', url: '/invoice/sendInvoice/' + row['id'], } $http(req).then(function(response) { if (response.status && response.data.status) { if (response.data.data.sent == '1') { row['sent'] = 1; } swal('E-mail verstuurd','De e-mail is met succes verstuurd naar ' + response.data.data.email, 'success'); } else { swal('E-mail niet verstuurd', 'De e-mail kon helaas niet worden verzonden, probeer het opnieuw', 'error') } }, function(error) { swal('E-mail niet verstuurd', 'De e-mail kon helaas niet worden verzonden, gelieve contact op te nemen met SBA', 'error'); }); // window.open('/invoice/sendInvoice/' + row['id'], '_blank'); } //verwerk factuur naar exact $scope.sendInvoiceToExact = function(btn, row, blnSubmit) { var loader = document.createElement("i"); loader.classList.add("fa"); loader.classList.add("fa-spinner"); loader.classList.add("fa-5x"); loader.classList.add("fa-spin"); //show loading swal({ title: "Loading", content: loader, buttons: false, }); var req = { method: 'GET', url: '/invoice/sendInvoiceToExact/' + row['id'], } $http(req).then(function(response) { swal.close(); if (response.status && response.data.status) { //reload table $scope.invoices.call('initiate'); swal('Factuur is verwerkt naar exact','De factuur is met succes verwerkt naar exact.', 'success'); } else { swal('Mislukt', 'De factuur is niet verwerkt naar exact, probeer het opnieuw', 'error') } }, function(error) { swal.close(); swal('Mislukt', 'De factuur is niet verwerkt naar exact, gelieve contact op te nemen met SBA', 'error'); }); // window.open('/invoice/sendInvoice/' + row['id'], '_blank'); } //download factuur $scope.downloadInvoice = function(btn, row, blnSubmit) { var req = { method: 'GET', url: '/invoice/checkExistence/' + row['id'], } $http(req).then(function(response) { if (response.status && response.data.status) { window.open('/invoice/downloadPdfInvoice/' + row['id'], '_blank'); } else if (response.data.message == 'fetch.exact.failed') { swal('Fout', 'De factuur bestaat niet in het administratie pakket.', 'error'); } else { swal('Fout', 'De factuur kon helaas niet worden gedownload', 'error'); } }, function(error) { swal('Fout', 'De factuur kon helaas niet worden gedownload, gelieve contact op te nemen met SBA', 'error'); }); } $scope.tableReady = function (tableName) { if (tableName === 'Facturen') { $scope.invoices.labels = { 'of': 'van', 'rows': 'rijen', 'lastUpdated': 'Laatste wijziging', 'showNotSelectedRows': 'Toon niet geselecteerde rijen', 'showSelectedRows': 'Toon geselecteerde rijen', 'selectAllRows': 'Selecteer alle rijen', 'deSelectAllRows': 'De-selecteer alle rijen', 'selectFilteredRows': 'Selecteer gefilterde rijen', 'deSelectFilteredRows': 'De-selecteer gefilterde rijen', 'false': 'Mislukt', 'true': 'Gelukt', 'statistics': 'Statistieken', 'deleteAllRowsMessage': 'Let op! Je staat op het punt alle geselecteerde rijen te verwijderen', 'ready' : 'Klaar', 'processSubFields' : 'Verwerk subvelden', 'alreadyLoaded' : 'al ingeladen in data.', 'errorInFetching' : 'Error in ophalen', 'dataAvailable' : 'Data al beschikbaar', 'loading' : 'Laden...', }; } } });