Finanzen hinzugefügt

This commit is contained in:
aschwarz 2023-04-24 08:39:29 +02:00
parent 640323dbe3
commit ccfae236fc
7 changed files with 1124 additions and 4 deletions

View File

@ -0,0 +1,265 @@
<?php
require_once ("../config.inc.php");
$function = $_POST['function'];
if ($function == 'save_with_files')
{
if (isset($_POST) && $_SERVER['REQUEST_METHOD'] == "POST")
{
## Dieses Script wird für jede Datei einzeln aufgerufen durch vpb_uploader.js. Bei 3 Dateien, 3x
$form_datum = $_POST['datum'];
$datum_form = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $form_datum);
$beschreibung = $_POST['beschreibung'];
$firma = $_POST['firma'];
$art = $_POST['art'];
$betrag = $_POST['betrag'];
$bemerkung = $_POST['bemerkung'];
#fid gesetzt, wenn Finanzen bearbeitet wird
$fid_edit = $_POST['fid_edit'];
$datum_file = date("Ymd_His_");
#$vpb_file_name = strip_tags($_FILES['upload_file']['name']); //File Name
$vpb_file_name = str_replace(array(
"ä",
"ö",
"ü",
"ß",
"Ä",
"Ö",
"Ü",
" "
) , array(
"ae",
"oe",
"ue",
"ss",
"Ae",
"Oe",
"Ue",
"_"
) , $_FILES['upload_file']['name']);
$originalname = $_FILES['upload_file']['name'];
$vpb_file_name = $datum_file . $vpb_file_name;
$vpb_file_id = strip_tags($_POST['upload_file_ids']); // File id is gotten from the file name
$vpb_file_size = $_FILES['upload_file']['size']; // File Size
$vpb_uploaded_files_location = '../media/file_upload/finanzen/'; //This is the directory where uploaded files are saved on your server
$vpb_final_location = $vpb_uploaded_files_location . $vpb_file_name; //Directory to save file plus the file to be saved
//Without Validation and does not save filenames in the database
if (move_uploaded_file(strip_tags($_FILES['upload_file']['tmp_name']) , $vpb_final_location))
{
$result = $db->query("SELECT fid
FROM jumi_finanzen
WHERE datum = '$datum_form'
AND beschreibung = '$beschreibung'
AND firma = '$firma'
AND art = '$art'
AND betrag = '$betrag'
AND bemerkung = '$bemerkung'
");
$row = $result->fetch_array();
if ($row['fid'] == '' AND $fid_edit == '-1')
{
$sql1 = $db->query("INSERT INTO jumi_finanzen ( datum
, beschreibung
, firma
, art
, betrag
, bemerkung
)
VALUES
( '$datum_form'
, '$beschreibung'
, '$firma'
, '$art'
, '$betrag'
, '$bemerkung'
)
");
$fid = $db->insert_id;
}
elseif($fid_edit != '-1')
{
$sql1 = $db->query( "UPDATE jumi_finanzen
SET datum = '$datum_form'
,beschreibung = '$beschreibung'
,firma = '$firma'
,art = '$art'
,betrag = '$betrag'
,bemerkung = '$bemerkung'
WHERE fid = $fid_edit
" );
$fid = $fid_edit;
}
else
{
$fid = $row['fid'];
}
$datum = date("Y-m-d H:i:s");
$sql2 = $db->query("INSERT INTO jumi_finanzen_uploads ( fid
, filename
, originalname
, uid
, datum
)
VALUES
( $fid
, '$vpb_final_location'
, '$originalname'
, $uid
, '$datum'
)
");
//Display the file id
if ($sql2)
{
echo '<div class="alert alert-success"><i class="fa fa-fw fa-thumbs-up"></i> Betrag wurde erfasst!</div>|***|success|***|' . $vpb_file_id;
exit;
}
else
{
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Betrag wurde nicht erfasst: Insert Fehler Datenbank.</div>|***|error|***|' . $vpb_file_id;
exit;
}
}
else
{
//Display general system error
echo 'general_system_error';
}
}
}
if ($function == 'save_without_files')
{
$form_datum = $_POST['datum'];
$datum_form = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $form_datum);
$beschreibung = $_POST['beschreibung'];
$firma = $_POST['firma'];
$art = $_POST['art'];
$betrag = $_POST['betrag'];
$bemerkung = $_POST['bemerkung'];
#fid gesetzt, wenn Finanzen bearbeitet wird
$fid_edit = $_POST['fid_edit'];
$db = dbconnect();
# Wenn Verlag nicht vorhanden, dann neu anlegen
$datum = date("Y-m-d H:i:s");
if($fid_edit == '-1'){
$sql1 = $db->query("INSERT INTO jumi_finanzen ( datum
, beschreibung
, firma
, art
, betrag
, bemerkung
)
VALUES
( '$datum_form'
, '$beschreibung'
, '$firma'
, '$art'
, '$betrag'
, '$bemerkung'
)
");
if ($sql1)
{
echo '<div class="alert alert-success"><i class="fa fa-fw fa-thumbs-up"></i> Betrag wurde erfasst!</div>|***|success|***|';
exit;
}
else
{
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Betrag wurde nicht erfasst: Insert Fehler Datenbank.</div>|***|error';
exit;
}
}else{
$sql1 = $db->query( "UPDATE jumi_finanzen
SET datum = '$datum_form'
,beschreibung = '$beschreibung'
,firma = '$firma'
,art = '$art'
,betrag = '$betrag'
,bemerkung = '$bemerkung'
WHERE fid = $fid_edit
" );
if ($sql1)
{
echo '<div class="alert alert-success"><i class="fa fa-fw fa-thumbs-up"></i> Betrag wurde bearbeitet!</div>|***|success|***|';
exit;
}
else
{
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Betrag wurde nicht bearbeitet: Update Fehler Datenbank.</div>|***|error';
exit;
}
}
}
if ($function == 'delBelegFile') {
if (isset($_POST['id'])) {
$id = $_POST['id'];
}
$result0 = $db->query("SELECT filename, fid
FROM jumi_finanzen_uploads
WHERE id = $id;");
$row0 = $result0->fetch_array();
$stmt1 = $db->query("DELETE FROM jumi_finanzen_uploads WHERE id= $id");
$del = unlink($row0['filename']);
if ($stmt1 AND $del) {
echo '<div class="alert alert-success"><i class="fa fa-fw fa-thumbs-up"></i> Die Datei wurde gelöscht!</div>|***|success|***|'.$row0['fid'];
exit;
} else {
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Die Datei wurde nicht gelöscht: DELETE Fehler Datenbank.</div>|***|success|***|'.$row0['fid'];
exit;
}
}
if ($function == 'delBeleg') {
if (isset($_POST['fid'])) {
$fid = $_POST['fid'];
}
$query = "SELECT id, filename, originalname FROM jumi_finanzen_uploads WHERE fid='$fid' ORDER BY datum DESC";
$result = $db->query( $query)
or die ("Cannot execute query1");
while ($row = $result->fetch_array()){
$del = unlink($row['filename']);
}
$stmt1 = $db->query("DELETE FROM jumi_finanzen_uploads WHERE fid = $fid;");
$stmt2 = $db->query("DELETE FROM jumi_finanzen WHERE fid = $fid");
if ($stmt1 AND $stmt2) {
echo '<div class="alert alert-success"><i class="fa fa-fw fa-thumbs-up"></i> Beleg wurde gelöscht!</div>|***|success';
exit;
} else {
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Beleg wurde nicht gelöscht: DELETE Fehler Datenbank.</div>|***|success';
exit;
}
}
?>

117
dashboard/finanzen.php Normal file
View File

@ -0,0 +1,117 @@
<?php
## INDEX gegen DB
if (!isset($_SESSION))
{
session_start();
}
#$_SESSION['sessionid'] = session_id();
include_once '../classes/TestProjektSmarty.class_subdir.php';
require_once ("../config.inc.php");
$smarty = new SmartyAdmin();
if (!rechte('__noright__', $uid))
{
echo "<meta http-equiv=\"refresh\" content=\"0; URL=error.php\">";
exit;
}
$templatename = substr(basename($_SERVER['PHP_SELF']) , 0, -3) . "html";
require_once "../language/german.inc.php";
# Gespeicherte Werte
$result_sum = $db->query("SELECT sum(betrag) kontostand
FROM jumi_finanzen
");
$row_sum = $result_sum->fetch_array();
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::CURRENCY );
$kontostand = $fmt->formatCurrency($row_sum['kontostand'], "EUR");
$smarty->assign('kontostand', $kontostand);
$query = "SELECT fid, datum, date_format(datum, '%d.%m.%Y') datum_form, beschreibung, firma, art, betrag, bemerkung
FROM jumi_finanzen
ORDER BY datum DESC";
$result = $db->query($query) or die("Cannot execute query");
while ($row = $result->fetch_array())
{
$value2 = '';
unset($inner1);
$query2 = "SELECT id, filename, originalname
FROM jumi_finanzen_uploads
WHERE fid=$row[fid]
ORDER BY id ASC
";
$result2 = $db->query($query2) or die("Cannot execute query2");
$ln2 = 0;
while ($row2 = $result2->fetch_array())
{
$inner1[$ln2]['id'] = $row2['id'];
$inner1[$ln2]['filename'] = $row2['filename'];
$inner1[$ln2]['originalname'] = $row2['originalname'];
$dateiarray = explode(".",$row2['originalname']);
$endung = ".".$dateiarray[count($dateiarray)-1];
$datei_short = substr($row2['originalname'],0,8)."[...]".$endung;
$inner1[$ln2]['originalname_short'] = $datei_short;
$value2 = $inner1;
$ln2++;
}
#$fmt = new NumberFormatter( 'de_DE', NumberFormatter::CURRENCY );
$betrag = $fmt->formatCurrency($row['betrag'], "EUR");
$row['betrag_form'] = $betrag;
$row['inner'] = $value2;
$table_data[] = $row;
}
$smarty->assign('table_data', $table_data);
#echo "<pre>";
#print_r($table_data);
#echo "</pre>";
if (isset($_GET['editfid']) and $_GET['editfid'] != '')
{
# Aus externer Seite edit_user.php
#echo "<br><br><br><br><br><br><br><br>-----------------------------------------------hier";
$fid = $_GET['editfid'];
$smarty->assign('create_edit', $fid);
$result0 = $db->query("SELECT fid, date_format(datum, '%d.%m.%Y') datum, beschreibung, firma, art, betrag, bemerkung
FROM jumi_finanzen
WHERE fid = $fid
");
$row0 = $result0->fetch_array();
$smarty->assign('finanzen_datum', $row0['datum']);
$smarty->assign('finanzen_beschreibung', $row0['beschreibung']);
$smarty->assign('finanzen_firma', $row0['firma']);
$smarty->assign('finanzen_art', $row0['art']);
if($row0['art'] == 'A'){
$betrag = $row0['betrag'] * (-1);
}else{
$betrag = $row0['betrag'];
}
$smarty->assign('finanzen_betrag', $betrag);
$smarty->assign('finanzen_bemerkung', $row0['bemerkung']);
$query = "SELECT id, filename, originalname, date_format(datum, '%d.%m.%y - %H:%i') uploaddatum FROM jumi_finanzen_uploads WHERE fid='$fid' ORDER BY datum DESC";
$result = $db->query($query) or die("Cannot execute query1");
while ($row10 = $result->fetch_array())
{
$row10['orginalname_short'] = $datei_short;
$value[] = $row10;
}
$smarty->assign('table_data2', $value);
}
$smarty->assign('action', "$action");
$smarty->display("modern/dashboard/$templatename");
?>

View File

@ -14,9 +14,12 @@ if(!rechte('__noright__', $uid)){
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
require_once "../language/german.inc.php";
$row10['originalname'] = "Einwilligungserklaerung_personenbezogene_Daten.pdf";
$dateiarray = explode(".",$row10['originalname']);
$endung = ".".$dateiarray[count($dateiarray)-1];
$datei_short = substr($row10['originalname'],0,8)."[...]".$endung;
echo $datei_short;
$smarty->assign('action', "$action");
$smarty->display("modern/dashboard/$templatename");
#$smarty->assign('action', "$action");
#$smarty->display("modern/dashboard/$templatename");
?>

View File

@ -0,0 +1,433 @@
function vpb_multiple_file_uploader(vpb_configuration_settings) {
this.vpb_settings = vpb_configuration_settings;
this.vpb_files = "";
this.vpb_browsed_files = []
var self = this;
var vpb_msg = "Sorry, your browser does not support this application. Thank You!";
//Get all browsed file extensions
function vpb_file_ext(file) {
return (/[.]/.exec(file)) ? /[^.]+$/.exec(file.toLowerCase()) : '';
}
/* Display added files which are ready for upload */
//with their file types, names, size, date last modified along with an option to remove an unwanted file
vpb_multiple_file_uploader.prototype.vpb_show_added_files = function(vpb_value) {
this.vpb_files = vpb_value;
if (this.vpb_files.length > 0) {
var vpb_added_files_displayer = vpb_file_id = "";
for (var i = 0; i < this.vpb_files.length; i++) {
//Use the names of the files without their extensions as their ids
var files_name_without_extensions = this.vpb_files[i].name.substr(0, this.vpb_files[i].name.lastIndexOf('.')) || this.vpb_files[i].name;
vpb_file_id = files_name_without_extensions.replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '');
var vpb_file_to_add = vpb_file_ext(this.vpb_files[i].name);
var vpb_class = $("#added_class").val();
var vpb_file_icon;
//Check and display File Size
var vpb_fileSize = (this.vpb_files[i].size / 1024);
if (vpb_fileSize / 1024 > 1) {
if (((vpb_fileSize / 1024) / 1024) > 1) {
vpb_fileSize = (Math.round(((vpb_fileSize / 1024) / 1024) * 100) / 100);
var vpb_actual_fileSize = vpb_fileSize + " GB";
} else {
vpb_fileSize = (Math.round((vpb_fileSize / 1024) * 100) / 100)
var vpb_actual_fileSize = vpb_fileSize + " MB";
}
} else {
vpb_fileSize = (Math.round(vpb_fileSize * 100) / 100)
var vpb_actual_fileSize = vpb_fileSize + " KB";
}
//Check and display the date that files were last modified
var vpb_date_last_modified = new Date(this.vpb_files[i].lastModifiedDate);
var dd = vpb_date_last_modified.getDate();
var mm = vpb_date_last_modified.getMonth() + 1;
var yyyy = vpb_date_last_modified.getFullYear();
var vpb_date_last_modified_file = dd + '/' + mm + '/' + yyyy;
//File Display Classes
if (vpb_class == 'vpb_blue') {
var new_classc = 'vpb_white';
} else {
var new_classc = 'vpb_blue';
}
if (typeof this.vpb_files[i] != undefined && this.vpb_files[i].name != "") {
//Check for the type of file browsed so as to represent each file with the appropriate file icon
if (vpb_file_to_add == "jpg" || vpb_file_to_add == "JPG" || vpb_file_to_add == "jpeg" || vpb_file_to_add == "JPEG" || vpb_file_to_add == "gif" || vpb_file_to_add == "GIF" || vpb_file_to_add == "png" || vpb_file_to_add == "PNG") {
vpb_file_icon = '<img src="../media/file_upload_images/images_file.gif" align="absmiddle" border="0" alt="" />';
} else if (vpb_file_to_add == "doc" || vpb_file_to_add == "docx" || vpb_file_to_add == "rtf" || vpb_file_to_add == "DOC" || vpb_file_to_add == "DOCX") {
vpb_file_icon = '<img src="../media/file_upload_images/doc.gif" align="absmiddle" border="0" alt="" />';
} else if (vpb_file_to_add == "pdf" || vpb_file_to_add == "PDF") {
vpb_file_icon = '<img src="../media/file_upload_images/pdf.gif" align="absmiddle" border="0" alt="" />';
} else if (vpb_file_to_add == "txt" || vpb_file_to_add == "TXT" || vpb_file_to_add == "RTF") {
vpb_file_icon = '<img src="../media/file_upload_images/txt.png" align="absmiddle" border="0" alt="" />';
} else if (vpb_file_to_add == "php") {
vpb_file_icon = '<img src="../media/file_upload_images/php.png" align="absmiddle" border="0" alt="" />';
} else if (vpb_file_to_add == "css") {
vpb_file_icon = '<img src="../media/file_upload_images/general.png" align="absmiddle" border="0" alt="" />';
} else if (vpb_file_to_add == "js") {
vpb_file_icon = '<img src="../media/file_upload_images/general.png" align="absmiddle" border="0" alt="" />';
} else if (vpb_file_to_add == "html" || vpb_file_to_add == "HTML" || vpb_file_to_add == "htm" || vpb_file_to_add == "HTM") {
vpb_file_icon = '<img src="../media/file_upload_images/html.png" align="absmiddle" border="0" alt="" />';
} else if (vpb_file_to_add == "setup") {
vpb_file_icon = '<img src="../media/file_upload_images/setup.gif" align="absmiddle" border="0" alt="" />';
} else if (vpb_file_to_add == "video") {
vpb_file_icon = '<img src="../media/file_upload_images/video.gif" align="absmiddle" border="0" alt="" />';
} else if (vpb_file_to_add == "real") {
vpb_file_icon = '<img src="../media/file_upload_images/real.gif" align="absmiddle" border="0" alt="" />';
} else if (vpb_file_to_add == "psd") {
vpb_file_icon = '<img src="../media/file_upload_images/psd.gif" align="absmiddle" border="0" alt="" />';
} else if (vpb_file_to_add == "fla") {
vpb_file_icon = '<img src="../media/file_upload_images/fla.gif" align="absmiddle" border="0" alt="" />';
} else if (vpb_file_to_add == "xls" || vpb_file_to_add == "xlsx") {
vpb_file_icon = '<img src="../media/file_upload_images/xls.gif" align="absmiddle" border="0" alt="" />';
} else if (vpb_file_to_add == "swf") {
vpb_file_icon = '<img src="../media/file_upload_images/swf.gif" align="absmiddle" border="0" alt="" />';
} else if (vpb_file_to_add == "eps") {
vpb_file_icon = '<img src="../media/file_upload_images/eps.gif" align="absmiddle" border="0" alt="" />';
} else if (vpb_file_to_add == "exe") {
vpb_file_icon = '<img src="../media/file_upload_images/exe.gif" align="absmiddle" border="0" alt="" />';
} else if (vpb_file_to_add == "binary") {
vpb_file_icon = '<img src="../media/file_upload_images/binary.png" align="absmiddle" border="0" alt="" />';
} else if (vpb_file_to_add == "zip") {
vpb_file_icon = '<img src="../media/file_upload_images/archive.png" align="absmiddle" border="0" alt="" />';
} else {
vpb_file_icon = '<img src="../media/file_upload_images/general.png" align="absmiddle" border="0" alt="" />';
}
var split = this.vpb_files[i].name.split('.');
var filename = split[0];
var extension = split[1];
if (filename.length > 15) {
filename = filename.substring(0, 10) + '[...]';
}
var result = filename + '.' + extension;
//Assign browsed files to a variable so as to later display them below
vpb_added_files_displayer += '<tr id="add_fileID' + vpb_file_id + '" class="' + new_classc + '"><td><div align="left"><span style="font-family:Verdana, Geneva, sans-serif;font-size:11px;color:gray;">' + vpb_file_icon + '&nbsp;' + result + '</span></div></td><td><span id="uploading_' + vpb_file_id + '"><span style="font-family:Verdana, Geneva, sans-serif;font-size:11px;color:gray;">Uploadbereit</span></span></td><td><div align="right"><span style="font-family:Verdana, Geneva, sans-serif;font-size:11px;color:gray;">' + vpb_actual_fileSize + '</span></div></td><td><span id="remove' + vpb_file_id + '"><span class="vpb_files_remove_left_inner" style="font-family:Verdana, Geneva, sans-serif;font-size:11px;" onclick="vpb_remove_this_file(\'' + vpb_file_id + '\',\'' + this.vpb_files[i].name + '\');">Entfernen</span></span></td></tr></div>';
}
}
//Display browsed files on the screen to the user who wants to upload them
$("#add_files").append(vpb_added_files_displayer);
$("#added_class").val(new_classc);
}
}
//File Reader
vpb_multiple_file_uploader.prototype.vpb_read_file = function(vpb_e) {
if (vpb_e.target.files) {
self.vpb_show_added_files(vpb_e.target.files);
self.vpb_browsed_files.push(vpb_e.target.files);
} else {
alert('Sorry, a file you have specified could not be read at the moment. Thank You!');
}
}
function addEvent(type, el, fn) {
if (window.addEventListener) {
el.addEventListener(type, fn, false);
} else if (window.attachEvent) {
var f = function() {
fn.call(el, window.event);
};
el.attachEvent('on' + type, f)
}
}
//Get the ids of all added files and also start the upload when called
vpb_multiple_file_uploader.prototype.vpb_starter = function() {
if (window.File && window.FileReader && window.FileList && window.Blob) {
var vpb_browsed_file_ids = $("#" + this.vpb_settings.vpb_form_id).find("input[type='file']").eq(0).attr("id");
document.getElementById(vpb_browsed_file_ids).addEventListener("change", this.vpb_read_file, false);
document.getElementById(this.vpb_settings.vpb_form_id).addEventListener("submit", this.vpb_submit_added_files, true);
} else {
alert(vpb_msg);
}
}
//Call the uploading function when click on the upload button
vpb_multiple_file_uploader.prototype.vpb_submit_added_files = function() {
self.vpb_upload_bgin();
}
//Start uploads
vpb_multiple_file_uploader.prototype.vpb_upload_bgin = function() {
if (this.vpb_browsed_files.length > 0) {
for (var k = 0; k < this.vpb_browsed_files.length; k++) {
var file = this.vpb_browsed_files[k];
this.vasPLUS(file, 0);
}
} else {
// Else Zweig ergänzt A. Schwarz. Wenn keine Dateien zum hochladen sind, dann Insert mit den Daten machen
this.vasINSERT();
}
}
//Main file uploader
// A. Schwarz: Insert mit File
vpb_multiple_file_uploader.prototype.vasPLUS = function(file, file_counter) {
if (typeof file[file_counter] != undefined && file[file_counter] != '') {
//Use the file names without their extensions as their ids
var files_name_without_extensions = file[file_counter].name.substr(0, file[file_counter].name.lastIndexOf('.')) || file[file_counter].name;
var ids = files_name_without_extensions.replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '');
var vpb_browsed_file_ids = $("#" + this.vpb_settings.vpb_form_id).find("input[type='file']").eq(0).attr("id");
var removed_file = $("#" + ids).val();
if (removed_file != "" && removed_file != undefined && removed_file == ids) {
self.vasPLUS(file, file_counter + 1);
} else {
var dataString = new FormData();
dataString.append('upload_file', file[file_counter]);
dataString.append('upload_file_ids', ids);
var datum = document.getElementById("datum").value;
var beschreibung = document.getElementById("beschreibung").value;
var firma = document.getElementById("firma").value;
var art = $("#art").val();
var betrag = document.getElementById("betrag").value;
var bemerkung = document.getElementById("bemerkung").value;
if(art == 'A'){
betrag=betrag*(-1);
}
// fid beim Bearbeiten von Finanzen
var fid_edit = document.getElementById("fid").value;
dataString.append('datum', datum);
dataString.append('beschreibung', beschreibung);
dataString.append('firma', firma);
dataString.append('art', art);
dataString.append('betrag', betrag);
dataString.append('bemerkung', bemerkung);
dataString.append('fid_edit', fid_edit);
dataString.append('function', 'save_with_files');
$.ajax({
type: "POST",
url: this.vpb_settings.vpb_server_url,
data: dataString,
cache: false,
contentType: false,
processData: false,
beforeSend: function() {
$("#uploading_" + ids).html('<div align="left"><img src="../media/file_upload_images/loadings.gif" width="80" align="absmiddle" title="Upload...."/></div>');
$("#remove" + ids).html('<div align="center" style="font-family:Verdana, Geneva, sans-serif;font-size:11px;color:blue;">Uploading...</div>');
},
success: function(response) {
var a = response.split('|***|');
// Länge der Zeit berechnen, wie lange die Messagebox angezeigt wird. Jedes File wird zumindest optisch einzeln hochgeladen.
var waitempty_chk = ($('[id^=add_fileID]').length*2000)+3000;
if(waitempty_chk >5000 ){
var waitempty = waitempty_chk;
}else{
// Mindestens aber 5 Sekunden
var waitempty = 5000;
}
setTimeout(function() {
// document.getElementById("datum").value = "";
// document.getElementById("verlag").value = "";
// document.getElementById("anz_lizenzen").value = "";
// document.getElementById("vasplus_multiple_files").value = "";
// document.getElementById("streamlizenz").checked = false;
// var $el = $('#vasplus_multiple_files');
// $el.wrap('<form>').closest('form').get(0).reset();
// $el.unwrap();
//
// $("#add_files > tbody").empty();
// Alternativlösung. Felder leeren alleine bringt nichts. Wenn man eine File hochlädt und das nächste Mal ohne File, dann werden die letzten Files nochmals hochgeladen.
// Daher eine Weiterleitung auf sich selbst, damit der Prozess neu initiiert wird.
window.location = "?";
}, waitempty);
$('#msg').show().delay(waitempty).fadeOut(500);
$('#msg').html(a[0]);
var responseid = a[2];
setTimeout(function() {
var response_brought = responseid.indexOf(ids);
if (response_brought != -1) {
$("#uploading_" + ids).html('<div align="left" style="font-family:Verdana, Geneva, sans-serif;font-size:11px;color:blue;">Vollst&auml;ndig</div>');
$("#remove" + ids).html('<div align="center" style="font-family:Verdana, Geneva, sans-serif;font-size:11px;color:gray;">Hochgeladen</div>');
} else {
var fileType_response_brought = responseid.indexOf('file_type_error');
if (fileType_response_brought != -1) {
var filenamewithoutextension = responseid.replace('file_type_error&', '').substr(0, responseid.replace('file_type_error&', '').lastIndexOf('.')) || responseid.replace('file_type_error&', '');
var fileID = filenamewithoutextension.replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '');
$("#uploading_" + fileID).html('<div align="left" style="font-family:Verdana, Geneva, sans-serif;font-size:11px;color:red;">Invalid File</div>');
$("#remove" + fileID).html('<div align="center" style="font-family:Verdana, Geneva, sans-serif;font-size:11px;color:orange;">Abgebrochen</div>');
} else {
var filesize_response_brought = responseid.indexOf('file_size_error');
if (filesize_response_brought != -1) {
var filenamewithoutextensions = responseid.replace('file_size_error&', '').substr(0, responseid.replace('file_size_error&', '').lastIndexOf('.')) || responseid.replace('file_size_error&', '');
var fileID = filenamewithoutextensions.replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '');
$("#uploading_" + fileID).html('<div align="left" style="font-family:Verdana, Geneva, sans-serif;font-size:11px;color:red;">Exceeded Size</div>');
$("#remove" + fileID).html('<div align="center" style="font-family:Verdana, Geneva, sans-serif;font-size:11px;color:orange;">Abgebrochen</div>');
} else {
var general_response_brought = responseid.indexOf('general_system_error');
if (general_response_brought != -1) {
alert('Sorry, the file was not uploaded...');
} else {
/* Do nothing */ }
}
}
}
if (file_counter + 1 < file.length) {
self.vasPLUS(file, file_counter + 1);
} else {}
}, 2000);
}
});
}
} else {
alert('Sorry, this system could not verify the identity of the file you were trying to upload at the moment. Thank You!');
}
}
// By A. Schwarz: Insert ohne File
vpb_multiple_file_uploader.prototype.vasINSERT = function() {
var datum = document.getElementById("datum").value;
var beschreibung = document.getElementById("beschreibung").value;
var firma = document.getElementById("firma").value;
var art = $("#art").val();
var betrag = document.getElementById("betrag").value;
var bemerkung = document.getElementById("bemerkung").value;
if(art == 'A'){
betrag=betrag*(-1);
}
// fid beim Bearbeiten von Finanzen
var fid_edit = document.getElementById("fid").value;
$.ajax({
type: 'POST',
url: this.vpb_settings.vpb_server_url,
data: {
'function': 'save_without_files',
'datum': datum,
'beschreibung': beschreibung,
'firma': firma,
'art': art,
'betrag': betrag,
'bemerkung': bemerkung,
'fid_edit': fid_edit
},
success: function(response) { //we got the response
if (response != '') {
var a = response.split('|***|');
if (a[1] == "success") {
//document.getElementById("datum").value = "";
//document.getElementById("verlag").value = "";
//document.getElementById("anz_lizenzen").value = "";
//document.getElementById("vasplus_multiple_files").value = "";
//document.getElementById("streamlizenz").checked = false;
//if(fid_edit == '-1'){
setTimeout(function() {
window.location = "?";
}, 2000);
//}
}
$('#msg').show().delay(2000).fadeOut(500);
$('#msg').html(a[0]);
}
},
error: function(xhr, status, exception) {
console.log(xhr);
}
});
}
this.vpb_starter();
}
function vpb_remove_this_file(id, filename) {
if (confirm('If you are sure to remove the file: ' + filename + ' then click on OK otherwise, Cancel it.')) {
$("#vpb_removed_files").append('<input type="hidden" id="' + id + '" value="' + id + '">');
$("#add_fileID" + id).slideUp();
}
return false;
}
function delBelegFile(id) {
r = confirm('Dokument löschen?');
if (r) {
$.ajax({
type: 'POST',
url: '../controller/admin_finanzen.php',
data: {
'function': 'delBelegFile',
'id': id
},
success: function(result) { //we got the response
if(result!=''){
var a = result.split('|***|');
var fid = a[2];
if(a[1]=="success"){
$(document).ajaxStop(function(){
setTimeout(function() {
window.location = "?editfid="+fid;
}, 2000);
});
}
$('#msg').show().delay(10000).fadeOut(500);
$('#msg').html(a[0]);
}
},
error: function(xhr, status, exception) {
console.log(xhr);
}
});
}
}
function delBeleg(fid) {
r = confirm('Beleg löschen?');
if (r) {
$.ajax({
type: 'POST',
url: '../controller/admin_finanzen.php',
data: {
'function': 'delBeleg',
'fid': fid
},
success: function(result) { //we got the response
if(result!=''){
var a = result.split('|***|');
if(a[1]=="success"){
$(document).ajaxStop(function(){
setTimeout(function() {
window.location = "?";
}, 2000);
});
}
$('#msg').show().delay(10000).fadeOut(500);
$('#msg').html(a[0]);
}
},
error: function(xhr, status, exception) {
console.log(xhr);
}
});
}
}

View File

@ -0,0 +1,302 @@
{if $action == ''}
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
{if $create_edit == ''}
<title>JU & MI Finazen erfassen</title>
{else}
<title>JU & MI Finazen bearbeiten</title>
{/if}
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="../bootstrap/node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="../bootstrap/node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<!-- nochmals bootstrap.css mit Erweiterungen vom Dashboard -->
<link href="css/styles.css" rel="stylesheet" />
<!-- data Table: https://datatables.net/ -->
<script src="../bootstrap/data-table/jquery.min.js"></script>
<link rel="stylesheet" href="../bootstrap/data-table/dataTables.bootstrap5.min.css">
</style>
<link rel="stylesheet" href="../bootstrap/data-table/rowReorder.dataTables.min.css">
</style>
<script type="text/javascript" src="../bootstrap/data-table/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="../bootstrap/data-table/dataTables.rowReorder.min.js"></script>
<script type="text/javascript" src="../bootstrap/data-table/dataTables.bootstrap5.min.js"></script>
<!-- icons in nav-->
<script src="js/all.js" crossorigin="anonymous"></script>
<link rel="stylesheet" href="../bootstrap/node_modules/bootstrap-icons/font/bootstrap-icons.css">
<script src="../jquery/jquery-3.4.1.min.js"></script>
<!-- jQuery UI CSS
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>
-->
<link rel="stylesheet" href="../jquery/jquery-ui.css">
<script src="../jquery/jquery-ui.js"></script>
<!--<script type="text/javascript" charset="utf-8" language="javascript" src="../js/file_upload/DT_bootstrap.js"></script>-->
<script type="text/javascript">
$(function() {
$(".datepicker").datepicker({
prevText: '&#x3c; zur&uuml;ck', prevStatus: '',
prevJumpText: '&#x3c;&#x3c;', prevJumpStatus: '',
changeMonth: true,
changeYear: true,
nextText: 'Vor &#x3e;', nextStatus: '',
nextJumpText: '&#x3e;&#x3e;', nextJumpStatus: '',
currentText: 'Heute', currentStatus: '',
todayText: 'Heute', todayStatus: '',
clearText: '-', clearStatus: '',
closeText: 'schlie&szlig;en', closeStatus: '',
monthNames: ['Januar','Februar','M&auml;rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],
monthNamesShort: ['Jan','Feb','M&auml;r','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'],
dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
weekHeader: 'Wo',
weekStatus: 'Woche des Monats',
showMonthAfterYear: false,
showOn: 'focus',
firstDay: 1,
numberOfMonths : 1,
yearRange: "c-5:+5",
showButtonPanel : true,
altField : "#datepicker_input",
dateFormat : "dd.mm.yy",
showWeek: true
});
$.datepicker._gotoToday = function(id) {
$(id).datepicker('setDate', new Date()).datepicker('hide').blur();
}
});
</script>
<script type="text/javascript" src="../js/file_upload/vpb_uploader_finanzen.js"></script>
<script type="text/javascript">$(document).ready(function()
{
// Call the main function
new vpb_multiple_file_uploader
({
vpb_form_id: "form_id", // Form ID
autoSubmit: true,
vpb_server_url: "../controller/admin_finanzen.php"
});
});
</script>
<link href = "../jquery/jquery-ui-themes-1.13.2/jquery-ui.css" rel = "stylesheet">
<style>
body {
font-family:Verdana, Geneva, sans-serif;
}
span{
color:red;
cursor:pointer;
}
</style>
</head>
<!--<body onload="if(document.erfassen)document.erfassen.{$umfrageerf_focus}.focus();return false;">-->
<body class="sb-nav-fixed">
<div id="navtop"></div>
{literal}
<script>
$(function(){
// im Navbar muss der toggle in der Callbackfunktion definiert werden. Sonst findet jquery getelementbyID nicht
$("#navtop").load('navtop.php', null, function(){$.getScript('js/scripts.js');});
$("#navleft").load("nav.php");
$("#footer").load("footer.php");
});
</script>
{/literal}
<div id="layoutSidenav">
<!-- Navigation left -->
<div id="navleft"></div>
<div id="layoutSidenav_content">
<main>
<div class="container-fluid">
<form name="form_id" id="form_id" action="javascript:void(0);" enctype="multipart/form-data">
<div class="card">
<div class="card-header">
<i class="fas fa-edit me-1"></i>
{if $create_edit == ''}
Finanzen erfassen
{else}
Finanzen bearbeiten
{/if}
<div class="d-lg-none">
<font color="red">Querformat für Mobilgeräte</font>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="row mt-2 mb-2">
<div class="col-12 col-md-4">Datum:</div>
<div class="col-12 col-md-8">
<input type="text" class="datepicker form-control" name="datum" id="datum" value="{$finanzen_datum}" required>
</div>
</div>
<div class="row mt-2 mb-2">
<div class="col-12 col-md-4">Beschreibung:</div>
<div class="col-12 col-md-8">
<input type="text" id="beschreibung" class="form-control rounded-right" value="{$finanzen_beschreibung}" required>
</div>
</div>
<div class="row mt-2 mb-2">
<div class="col-12 col-md-4">Firma:</div>
<div class="col-12 col-md-8">
<input type="text" id="firma" class="form-control rounded-right" value="{$finanzen_firma}">
</div>
</div>
<div class="row mt-2 mb-2">
<div class="col-12 col-md-4">Art:</div>
<div class="col-12 col-md-8">
<select name="art"class="form-control" id="art">
<option value="E" {if $finanzen_art == "E"} selected {/if}>Einnahme</option>
<option value="A" {if $finanzen_art == "A"} selected {/if}>Ausgabe</option>
</select>
</div>
</div>
<div class="row mt-2 mb-2">
<div class="col-12 col-md-4">Betrag:</div>
<div class="col-12 col-md-8">
<input type="number" min="1" step="any" id="betrag" class="form-control rounded-right" value="{$finanzen_betrag}" required>
</div>
</div>
<div class="row mt-2 mb-2">
<div class="col-12 col-md-4">Bemerkung:</div>
<div class="col-12 col-md-8">
<input type="text" id="bemerkung" class="form-control rounded-right" value="{$finanzen_bemerkung}">
</div>
</div>
{if $create_edit != ''}
<div class="row mt-2 mb-2">
<div class="col-12 col-md-4">Dateien:</div>
<div class="col-12 col-md-8">
<div class="form-group">
<table class="table table-striped table-bordered" id="curdoks">
<thead>
<tr>
<th style="color:blue; text-align:center;">Datei</th>
<th class="d-none d-lg-table-cell" style="color:blue; text-align:center;">Uploaddatum</th>
<th style="color:blue; text-align:center;">Aktion</th>
<tr>
</thead>
<tbody>
{section name=table_data2 loop=$table_data2}
<tr>
<td><a href="{$table_data2[table_data2].filename}" target="_new">{$table_data2[table_data2].originalname}</a></td>
<td class="d-none d-lg-table-cell">{$table_data2[table_data2].uploaddatum}</td>
<td><a class="btn btn-danger btn-rounded btn-icon btn-sm" onclick="delBelegFile({$table_data2[table_data2].id})"><i class="fa fa-trash" style="width:18px;"></i></a></td>
</tr>
{/section}
</tbody>
</table>
</div>
</div>
</div>
{/if}
<div class="row mt-2 mb-2">
<label for="formFile" class="form-label">
<div class="col-12 col-md-4">Belege:</div>
<div class="col-12col-md-8">
<input class="form-control" type="file" name="vasplus_multiple_files" id="vasplus_multiple_files" multiple="multiple">
</div>
</label>
</div>
<table class="table table-striped table-bordered" id="add_files">
<thead>
<tr>
<th style="color:blue; text-align:center;">Datei</th>
<th style="color:blue; text-align:center;">Status</th>
<th style="color:blue; text-align:center;">Gr&ouml;&szlig;e</th>
<th style="color:blue; text-align:center;">Aktion</th>
<tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<p align='center'>
{if $create_edit != ''}
<input type="hidden" id="fid" value="{$create_edit}">
{else}
<input type="hidden" id="fid" value="-1">
{/if}
<button class="col-6 btn btn-primary btn-sm mt-3" id="save">Speichern</button>
</p>
</div>
</div>
</div>
<div id="msg"></div>
</form>
<br>
<div class="card">
<div class="card-header">
<i class="fas fa-table me-1"></i>
Kontostand: {if $kontostand < 0}<font color="red">{/if}<b>{$kontostand}</b>{if $kontostand < 0}</font>{/if}
<div class="d-lg-none">
<font color="red">Querformat für Mobilgeräte</font>
</div>
</div>
<div class="card-body">
<!-- https://datatables.net/download/release -->
<table id="myTable" class="table table-striped table-bordered table-hover" >
<thead>
<tr>
<th>Vorname</th>
<th>Beschreibung</th>
<th class="d-none d-lg-table-cell">Firma</th>
<th>Beleg</th>
<th>Betrag</th>
<th>Bemerkung</th>
<th>Aktion</th>
</tr>
</thead>
<tbody>
{section name=table_data loop=$table_data}
<tr>
<td>{$table_data[table_data].datum_form}</td>
<td>{$table_data[table_data].beschreibung}</td>
<td class="d-none d-lg-table-cell">{$table_data[table_data].firma}</td>
<td>
{section name=inner loop=$table_data[table_data].inner}
<a href="{$table_data[table_data].inner[inner].filename}" target="_new">
<div class="d-sm-block d-lg-none mt-0 mb-0">{$table_data[table_data].inner[inner].originalname_short}</div>
<div class="d-none d-lg-block mt-0 mb-0">{$table_data[table_data].inner[inner].originalname}</div>
</a>
{/section}
</td>
<td align="right">{$table_data[table_data].betrag_form}</td>
<td>{$table_data[table_data].bemerkung}</td>
<td>
<a href="?editfid={$table_data[table_data].fid}" class="settings" title="Edit Beleg" data-toggle="tooltip"><i class="fas fa fa-edit"></i></a>
&nbsp;
<a class="btn btn-danger btn-rounded btn-icon btn-sm" onclick="delBeleg({$table_data[table_data].fid})"><i class="fa fa-trash" style="width:18px;"></i></a>
</td>
</tr>
{/section}
</tbody>
</table>
</div>
</div>
</center>
</main>
<!-- Livesearchscript muss nach den Textfelder sitzen-->
<script src="../js/components/admin_notenupload.js"></script>
<!-- footer -->
<div id="footer"></div>
</div>
</div>
</body>
<script>
$(document).ready(function(){
var table = new DataTable('#myTable', {
rowReorder: true,
pageLength: 5,
order: [[1, 'desc']],
language: {
url: '//cdn.datatables.net/plug-ins/1.13.4/i18n/de-DE.json',
search: "",
lengthMenu: "_MENU_ Zeilen",
},
});
});
</script>
</html>
{/if}