app.controller('PaymentsCtrl', function($scope, $http, $location) { $scope.paymentOverview = { name: 'Betalingsoverzicht', controller: 'payment', function: 'getForOverview', // Panel class panelClass: 'panel-trainingskampen', showFilters: false, pageLimit: 15, fields:[ 'id', 'customer_id', 'invoice_id', 'payment_id', 'description', 'amount', 'paid_at', 'cancelled_at', 'failed_at', 'status', 'hidden', ], 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...', }, subQueries: { 'customer': { 'lfield': 'customer_id', 'ffield': 'id', 'controller': 'customer', 'function': 'getAll', }, }, fieldDetails: { 'id': { 'label': '#', }, 'customer_id': { 'label' : 'Klant', 'changeTo': ['customer.id', ' - ', 'customer.company_name'], }, 'invoice_id': { 'label' : 'Order', }, 'payment_id': { 'label': 'Betaling ID', 'hideList': true, }, 'description':{ 'label': 'Beschrijving', }, 'amount':{ 'label': 'Bedrag [€]', }, 'paid_at':{ 'label': 'Betaald op', 'hideList': true, }, 'cancelled_at':{ 'label': 'Teruggedraaid op', 'hideList': true, }, 'failed_at':{ 'label': 'Mislukt op', 'hideList': true, }, 'hidden':{ 'label': 'Verborgen voor klant', 'hideList': !($scope.user['rights'] !== undefined && $scope.user['rights']['payment'] && $scope.user['rights']['payment']['hidepayment'] !== undefined && $scope.user['rights']['payment']['hidepayment']), }, }, style: { cell: { 'success': { 'status': '==' + 'Betaald', }, 'warning': { 'status': '==' + 'Openstaand', }, 'danger': { 'status': '==' + 'Mislukt', }, }, }, buttons: { 'C': { 'id': 'c', 'inline': false, 'header': false, }, 'R': { 'id': 'r', 'name': 'Bekijk betaling', 'label': 'Bekijk betaling', 'cancelName': 'Annuleren', 'confirmName': 'Bekijk', 'confirmClass': 'info', 'inline': true, 'header': false, 'icon': 'fa-arrow-right', 'action': 'read', }, 'U': { 'id': 'u', 'inline': false, 'header': false, }, 'D': { 'id': 'd', 'inline': false, 'header': false, }, // 'P': { // 'id': 'p', // 'name': 'Betaling terugdraaien', // 'label': 'Betaling terugdraaien', // 'cancelName': 'Annuleren', // 'confirmName': 'Terugdraaien', // 'confirmClass': 'info', // 'inline': true, // 'header': false, // 'icon': 'fa-times', // 'action': 'cancelPayment', // 'parentScope': true, // }, 'M': { 'id': 'M', 'name': 'Handmatig openzetten draaiboek', 'label': 'Handmatig openzetten draaiboek', 'cancelName': 'Annuleren', 'confirmName': 'manualEnable', 'confirmClass': 'info', 'inline': $scope.user['rights'] !== undefined && $scope.user['rights']['scenario'] && $scope.user['rights']['scenario']['manualenable'] !== undefined && $scope.user['rights']['scenario']['manualenable'], 'header': false, 'icon': 'fa-lock', 'action': 'manualEnable', 'parentScope': true, }, 'BV': { 'id': 'DB', 'name': 'Betaallink verwijderen', 'label': 'Betaallink verwijderen', 'cancelName': 'Annuleren', 'confirmClass': 'info', 'inline': $scope.user['rights'] !== undefined && $scope.user['rights']['payment'] && $scope.user['rights']['payment']['removepaymentlink'] !== undefined && $scope.user['rights']['payment']['removepaymentlink'], 'header': false, 'icon': 'fa-trash', 'action': 'removePaymentLink', 'parentScope': true, }, 'VB': { 'id': 'VB', 'name': 'Verberg betaling', 'label': 'Verberg betaling', 'cancelName': 'Annuleren', 'confirmName': 'hidePayment', 'confirmClass': 'info', 'inline': $scope.user['rights'] !== undefined && $scope.user['rights']['payment'] && $scope.user['rights']['payment']['hidepayment'] !== undefined && $scope.user['rights']['payment']['hidepayment'], 'whereField': 'hidden', 'where': { '==': 0, }, 'header': false, 'icon': 'fa-eye', 'action': 'hidePayment', 'parentScope': true, }, 'TB': { 'id': 'TB', 'name': 'Toon betaling', 'label': 'Toon betaling', 'cancelName': 'Annuleren', 'confirmName': 'unhidePayment', 'confirmClass': 'info', 'inline': $scope.user['rights'] !== undefined && $scope.user['rights']['payment'] && $scope.user['rights']['payment']['hidepayment'] !== undefined && $scope.user['rights']['payment']['hidepayment'], 'whereField': 'hidden', 'where': { '==': 1, }, 'header': false, 'icon': 'fa-eye', 'action': 'unhidePayment', 'parentScope': true, }, } } // Translate table $scope.tableReady = function (tableName) { if (tableName === 'Betalingsoverzicht') { $scope.paymentOverview.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...', }; } } $scope.payment = { amount: null, description: '', } $scope.removePaymentLink = function(btn, row, blnSubmit) { var req = { method: 'GET', url: '/payment/removePaymentLink/' + row['id'], } $http(req).then((response) => { if (response.status && response.data.status) { // delete row from overview const index = $scope.paymentOverview.data.rows.findIndex(item => item.id === row['id']); $scope.paymentOverview.data.rows.splice(index, 1); swal({ title: 'Betaallink verwijderd', text: response.data.message, icon: 'success' }); } else { // error swal({ title: 'Error', text: response.data.message, icon: 'warning', }); } }); } $scope.manualEnable = function(btn, row, blnSubmit) { var req = { method: 'GET', url: '/scenario/manualEnable/' + row['scenario_id'], } $http(req).then((response) => { if (response.status && response.data.status) { // Payment Manually processed swal({ title: 'Handmatig openzetten draaiboek verwerkt', icon: 'success', }); } else { // Error swal({ title: 'Handmatig openzetten draaiboek mislukt', icon: 'warning', }); } }); } $scope.unhidePayment = function(btn, row, blnSubmit) { $scope.hidePayment(btn, row, blnSubmit, true); } $scope.hidePayment = function(btn, row, blnSubmit, unhide) { if (unhide !== undefined && unhide) { var req = { method: 'GET', url: '/payment/hidePayment/' + row['id'] + '/true', } } else { var req = { method: 'GET', url: '/payment/hidePayment/' + row['id'], } } $http(req).then((response) => { if (response.status && response.data.status) { // Update row status row['hidden'] = response.data.data.hidden; //Payment adjusted swal({ title: 'Zichtbaarheid aangepast', text: response.data.message, icon: 'success', }); } else { // Error swal({ title: 'Error', text: response.data.message, icon: 'warning', }); } }); } $scope.cancelPayment = function(btn, row, blnSubmit) { // Cancel the payment var req = { method: 'GET', url: '/payment/cancelPayment/' + row['id'] + '/' + row['payment_id'], } $http(req).then(function(response) { if (response.status && response.data.status && response.data.message == 'payment.cancelled.success') { row['status'] = 'gecancelled'; swal({ title: 'OK', text: 'Betaling gecancelled', icon: 'success', }); } else if (response.status && response.data.status) { // Response swal({ title: 'OK', text: 'Betaling gecancelled', icon: 'success', }); } else if (response.data.message) { // Error swal({ title: 'Error', text: response.data.message, icon: 'warning', }); } }); } $scope.insertPayment = function(type) { // Post the payment var req = { method: 'POST', url: '/payment/insertPayment', data: $scope.payment, } $http(req).then(function(response) { if (response.status && response.data.status && response.data.data.id) { $scope.doPayment(response.data.data.id, type); } else { swal({ title: 'Error', text: 'Controleer dat alle velden zijn ingevuld', icon: 'error', }) } }); } $scope.doPayment = function(rowId, type) { var req = { method: 'GET', url: '/payment/getPaymentLink/' + rowId, data: $scope.payment, } $http(req).then(function(response) { if (response.status && response.data.status && response.data.data.link) { if (type == 'direct') { // Follow the link window.location.replace(response.data.data.link); } else { // Show the link swal({ title: 'Link', text: 'Your payment link is: ' + response.data.data.link, icon: 'success', }); } }else{ //unable to process } }); } });