OpenXE/classes/Modules/FiskalyApi/www/js/fiskaly.js

381 lines
17 KiB
JavaScript
Raw Normal View History

2021-05-21 08:49:41 +02:00
fiskaly = (function ($) {
self = {
selector: {
tseSelect: 'select[name=\'tse\']',
clientSelect: 'select[name=\'client\']',
organizationSelect: 'select[name=\'organization\']',
trainingButton: '#training',
createCashRegisterDiv: '#createcashregisterdiv',
trCashRegister: '#tr-cash-register',
tseForm: '#tseform',
buttonNewOrg: '#create-org',
popupNewOrg: '#popup-new-org',
trSmaEndPoint: '#trsmaendpoint',
tableOrg: '#fiskaly_organisation',
formSetting: '#form-setting'
},
'hookTable': function () {
let table = $('#fiskaly_pos_mapping').get(0);
let observer = new MutationObserver(function (mutations) {
self.hookButtons();
});
observer.observe(table, {attributes: true, childList: true, characterData: true});
},
'hookButtons': function () {
var deleteButtons = document.getElementsByClassName('button-delete');
console.log(deleteButtons);
for (let button of deleteButtons) {
button.addEventListener('click', function () {
if(!confirm('Zuordnung wirklich löschen?')) {
return;
}
let location = document.location;
let path = 'index.php?module=fiskaly&action=delete_tse';
let id = button.id.substr(7);
let request = new XMLHttpRequest();
request.open('POST', path, true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.onreadystatechange = function () {
if (this.readyState !== 4) {
return;
}
if (this.status === 200) {
document.location.reload();
} else {
alert('Beim löschen ist ein Fehler passiert.');
}
};
request.send('id=' + id);
});
}
},
'initExport': function () {
let path = 'index.php?module=fiskaly&action=transaction_export&cmd=update_export';
let request = new XMLHttpRequest();
request.open('POST', path, true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.send();
},
'initPosList': function () {
$(self.selector.trainingButton).on('change', function () {
if ($(self.selector.trainingButton).prop('checked')) {
if (!confirm('Training Modus wirklich starten?')) {
$(self.selector.trainingButton).prop('checked', false);
return;
}
let path = 'index.php?module=pos&action=list&cmd=activate_training_modus';
let request = new XMLHttpRequest();
request.open('POST', path, true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.onreadystatechange = function () {
if (this.readyState !== 4) {
return;
}
if (this.status === 200) {
document.location.reload();
} else {
alert('Fehler beim aktivieren des Training-modus.');
}
};
request.send();
}
});
},
'initTseOption': function () {
$(self.selector.tseSelect).on('change', function () {
if ($(self.selector.tseSelect).find('option:selected').filter(function () {
return $(this).data('status') === 'UNINITIALIZED';
}).length > 0) {
$('#initialtse').toggleClass('hidden', false);
$('#createtse').toggleClass('hidden', true);
$('#createclient').toggleClass('hidden', true);
} else {
$('#initialtse').toggleClass('hidden', true);
$('#createtse').toggleClass('hidden', false);
if ($(self.selector.tseSelect).find('option:selected').filter(function () {
return $(this).data('hasclient') == '0';
}).length > 0) {
$('#createclient').toggleClass('hidden', false);
} else {
$('#createclient').toggleClass('hidden', true);
}
var $clientsWithTssId = $(self.selector.clientSelect).find('option').filter(function () {
return $(this).data('tssid') === $(self.selector.tseSelect).val();
});
if ($clientsWithTssId.length === 1) {
$(self.selector.clientSelect).val($clientsWithTssId.val());
}
}
$(self.selector.clientSelect).find('option').each(function () {
if (
$(this).data('tssid') + '' !== ''
&& $(this).data('tssid') !== $(self.selector.tseSelect).val()
) {
$(this).hide();
if ($(self.selector.clientSelect).val() === $(this).val()) {
$(self.selector.clientSelect).val('');
$(self.selector.clientSelect).trigger('change');
}
} else {
$(this).show();
}
});
});
$(self.selector.clientSelect).on('change', function () {
if ($(this).find('option:selected').data('cashregisterid') + '' !== '') {
$(self.selector.createCashRegisterDiv).hide();
$(self.selector.trCashRegister).hide();
return;
}
if ($(this).val() + '' === '') {
$(self.selector.createCashRegisterDiv).hide();
$(self.selector.trCashRegister).hide();
return;
}
$(self.selector.createCashRegisterDiv).show();
$(self.selector.trCashRegister).show();
$(self.selector.createCashRegisterDiv).data('clientid', $(this).val());
});
$(self.selector.tseSelect).trigger('change');
$(self.selector.clientSelect).trigger('change');
$('#create-cashregister').on('click', function () {
if (!confirm('Kasse wirklich Registrieren')) {
return;
}
$('#tabs').loadingOverlay('show');
$.ajax({
url: 'index.php?module=fiskaly&action=settings_tse&cmd=createcashregister&id='
+ $(self.selector.tseForm).data('tseid'),
type: 'POST',
dataType: 'json',
data: {
client_id: $(self.selector.createCashRegisterDiv).data('clientid')
},
success: function (data) {
if (data.status == 1) {
window.location.href = window.location.href.split('#')[0];
} else {
$('#tabs').loadingOverlay('remove');
alert(data.error);
}
},
error: function (event) {
$('#tabs').loadingOverlay('remove');
alert(event.responseJSON.error);
},
beforeSend: function () {
}
});
});
$('#createtse').on('click', function (){
if (!confirm('TSE wirklich erstellen?')) {
return;
}
$('#tabs').loadingOverlay('show');
$.ajax({
url: 'index.php?module=fiskaly&action=settings_tse&cmd=createtse&id='
+ $(self.selector.tseForm).data('tseid'),
type: 'POST',
dataType: 'json',
data: {
organization: $(self.selector.organizationSelect).val(),
project: $('#project').val()
},
success: function (data) {
if (data.status == 1) {
if(typeof data.url != 'undefined') {
window.location.href = data.url;
return;
}
window.location.href = window.location.href.split('#')[0];
} else {
$('#tabs').loadingOverlay('remove');
alert(data.error);
}
},
error: function (event) {
$('#tabs').loadingOverlay('remove');
alert(event.responseJSON.error);
},
beforeSend: function () {
}
});
});
$('#initialtse').on('click', function () {
if (!confirm('TSE wirklich initialisieren?')) {
return;
}
$('#tabs').loadingOverlay('show');
$.ajax({
url: 'index.php?module=fiskaly&action=settings_tse&cmd=initialtse&id='
+ $(self.selector.tseForm).data('tseid'),
type: 'POST',
dataType: 'json',
data: {
tse_id: $(self.selector.tseSelect).val()
},
success: function (data) {
if (data.status == 1) {
window.location.href = window.location.href.split('#')[0];
} else {
$('#tabs').loadingOverlay('remove');
alert(data.error);
}
},
error: function (event) {
$('#tabs').loadingOverlay('remove');
alert(event.responseJSON.error);
},
beforeSend: function () {
}
});
});
$('#createclient').on('click', function () {
if (!confirm('Client wirklich erstellen?')) {
return;
}
$('#tabs').loadingOverlay('show');
$.ajax({
url: 'index.php?module=fiskaly&action=settings_tse&cmd=createclient&id='
+ $(self.selector.tseForm).data('tseid'),
type: 'POST',
dataType: 'json',
data: {
tse_id: $(self.selector.tseSelect).val()
},
success: function (data) {
if (data.status == 1) {
window.location.href = window.location.href.split('#')[0];
} else {
$('#tabs').loadingOverlay('remove');
alert(data.error);
}
},
error: function (event) {
$('#tabs').loadingOverlay('remove');
alert(event.responseJSON.error);
},
beforeSend: function () {
}
});
});
},
'editOrg': function (id) {
$('#tabs').loadingOverlay('show');
$.ajax({
url: 'index.php?module=fiskaly&action=settings&cmd=getorg',
type: 'POST',
dataType: 'json',
data: {
id: id
},
success: function (data) {
$('#org-id').val(data.id);
$('#org-name').val(data.name);
$('#org-display-name').val(data.display_name);
$('#org-address-line1').val(data.address_line1);
$('#org-address-line2').val(data.address_line2);
$('#org-zip').val(data.zip);
$('#org-town').val(data.town);
$('#org-state').val(data.state);
$('#org-vat-id').val(data.vat_id);
$('#org-tax-number').val(data.tax_number);
$('#org-economy-id').val(data.economy_id);
$('#org-country-code').val(data.country_code);
$('#tabs').loadingOverlay('remove');
$(self.selector.popupNewOrg).dialog('open');
},
error: function (event) {
$('#tabs').loadingOverlay('remove');
alert(event.responseJSON.error);
}
});
},
'initSettings': function () {
$(self.selector.tableOrg).on('afterreload',function (){
$(self.selector.tableOrg).find('img.edit').on('click', function (){
self.editOrg($(this).data('id'));
});
});
$(self.selector.buttonNewOrg).on('click', function (){
self.editOrg(0);
});
$(self.selector.popupNewOrg).dialog(
{
modal: true,
autoOpen: false,
minWidth: 940,
title:'',
buttons: {
'ABBRECHEN': function() {
$(this).dialog('close');
},
'ANLEGEN / SPEICHERN': function()
{
if(!confirm('Wirklich Anlegen / Erstellen?')) {
return;
}
$(self.selector.popupNewOrg).loadingOverlay('show');
$.ajax({
url: 'index.php?module=fiskaly&action=settings&cmd=createorg',
type: 'POST',
dataType: 'json',
data: {
id: $('#org-id').val(),
name: $('#org-name').val(),
display_name: $('#org-display-name').val(),
address_line1: $('#org-address-line1').val(),
address_line2: $('#org-address-line2').val(),
zip: $('#org-zip').val(),
town: $('#org-town').val(),
state: $('#org-state').val(),
vat_id: $('#org-vat-id').val(),
tax_number: $('#org-tax-number').val(),
economy_id: $('#org-economy-id').val(),
country_code: $('#org-country-code').val(),
},
success: function() {
window.location.href = window.location.href.split('#')[ 0 ];
},
error: function (event) {
$(self.selector.popupNewOrg).loadingOverlay('remove');
alert(event.responseJSON.error);
}
});
},
},
close: function(event, ui){
}
});
$(self.selector.tableOrg).trigger('afterreload');
},
'init': function () {
$(document).ready(self.hookTable);
if ($(self.selector.tseSelect).length) {
self.initTseOption();
}
if ($(self.selector.trainingButton).length) {
self.initPosList();
}
if ($('#fiskaly_transaction_export').length) {
self.initExport();
}
if($(self.selector.popupNewOrg).length) {
self.initSettings();
}
}
};
return {
'init': self.init
};
})($);
fiskaly.init();