mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-25 06:00:28 +01:00
Merge branch 'prerelease.1.9'
This commit is contained in:
commit
b82d17d6f4
@ -309,6 +309,7 @@ final class MailMessageData implements MailMessageInterface, JsonSerializable
|
||||
}
|
||||
$dateTime = date_create($date->getValue());
|
||||
if ($dateTime === false) {
|
||||
throw new InvalidArgumentException('Invalid date: '.$date->getValue());
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -511,7 +511,10 @@ class TicketImportHelper
|
||||
continue;
|
||||
}
|
||||
} catch (Throwable $e) {
|
||||
$this->logger->error('Error during email import '.$messageNumber, ['message' => substr(print_r($message,true),0,1000)]);
|
||||
|
||||
$exception_message = $e->getMessage();
|
||||
|
||||
$this->logger->error('Error during email import '.$messageNumber, ['exc-message' => $exception_message ,'message2' => substr(print_r($message,true),0,1000)]);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@ -573,14 +576,17 @@ class TicketImportHelper
|
||||
$this->logger->debug('Text (converted)',['plain' => $action, 'html' => $action_html]);
|
||||
|
||||
// Import database emailbackup
|
||||
try {
|
||||
$date = $message->getDate();
|
||||
if (is_null($date)) { // This should not be happening -> Todo check getDate function
|
||||
$this->logger->debug('Null date',['subject' => $message->getSubject(), $message->getHeader('date')->getValue()]);
|
||||
}
|
||||
catch (exception $e) {
|
||||
$this->logger->debug('Invalid date',['exc-message' => $e->getMessage(),'subject' => $message->getSubject(), $message->getHeader('date')->getValue()]);
|
||||
return(false);
|
||||
} else {
|
||||
}
|
||||
|
||||
$timestamp = $date->getTimestamp();
|
||||
$frommd5 = md5($from . $subject . $timestamp);
|
||||
}
|
||||
|
||||
$empfang = $date->format('Y-m-d H:i:s');
|
||||
$sql = "SELECT COUNT(id)
|
||||
FROM `emailbackup_mails`
|
||||
|
@ -6081,11 +6081,11 @@ r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise,
|
||||
|
||||
|
||||
$heading = array('', '', 'Gutschrift', 'Vom', 'Kd-Nr.', 'Kunde', 'Land', 'Projekt',
|
||||
'Zahlweise', 'Betrag (brutto)', 'bezahlt','RE-Nr.', 'Status','Monitor' ,'Menü'
|
||||
'Zahlweise', 'Betrag (brutto)', 'Zahlstatus','Differenz','RE-Nr.', 'Status','Monitor' ,'Menü'
|
||||
);
|
||||
|
||||
$width = array('1%', '1%', '10%', '10%', '10%', '25%', '5%', '1%', '1%', '1%', '1%', '1%','5%', '1%','1%', '1%');
|
||||
$findcols = array('open', 'r.belegnr', 'r.belegnr', 'r.datum', 'adr.kundennummer', 'r.name', 'r.land', 'p.abkuerzung', 'r.zahlungsweise', 'r.soll','re.belegnr', 'r.zahlungsstatus', 'r.status', 'pt.payement_status' ,'id');
|
||||
$width = array('1%', '1%', '10%', '10%', '10%', '25%', '5%', '1%', '1%', '1%', '1%', '1%', '1%','5%', '1%','1%', '1%');
|
||||
$findcols = array('open', 'r.belegnr', 'r.belegnr', 'r.datum', 'adr.kundennummer', 'r.name', 'r.land', 'p.abkuerzung', 'r.zahlungsweise', 'r.soll', 'r.zahlungsstatus','r.soll-r.ist', 're.belegnr', 'r.status', 'id');
|
||||
$searchsql = array('DATE_FORMAT(r.datum,\'%d.%m.%Y\')', 'r.belegnr', 'adr.kundennummer', 'r.name', 'r.land', 'p.abkuerzung','re.belegnr', 'r.status', "FORMAT(r.soll,2{$extended_mysql55})", 'adr.freifeld1', 'r.ihrebestellnummer','r.internebezeichnung','au.internet');
|
||||
$defaultorder = 13; //Optional wenn andere Reihenfolge gewuenscht
|
||||
|
||||
@ -6127,20 +6127,31 @@ r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise,
|
||||
$menu .= "</table>";
|
||||
|
||||
|
||||
$menucol = 14;
|
||||
$menucol = 15;
|
||||
|
||||
$parameter = $this->app->User->GetParameter('table_filter_gutschrift');
|
||||
$parameter = base64_decode($parameter);
|
||||
$parameter = json_decode($parameter, true);
|
||||
|
||||
// SQL statement
|
||||
$sql = "SELECT SQL_CALC_FOUND_ROWS r.id,'<img src=./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, concat('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',r.id,'\" />')as auswahl,
|
||||
$sql = "SELECT SQL_CALC_FOUND_ROWS
|
||||
r.id,
|
||||
'<img src=./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open,
|
||||
concat('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',r.id,'\" />')as auswahl,
|
||||
r.belegnr,
|
||||
DATE_FORMAT(r.datum,'%d.%m.%Y') as vom, adr.kundennummer as kundennummer,
|
||||
DATE_FORMAT(r.datum,'%d.%m.%Y') as vom,
|
||||
adr.kundennummer as kundennummer,
|
||||
CONCAT(" . $this->app->erp->MarkerUseredit("r.name", "r.useredittimestamp") . ", if(r.internebezeichnung!='',CONCAT('<br><i style=color:#999>',r.internebezeichnung,'</i>'),'')) as kunde,
|
||||
r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise,
|
||||
FORMAT(r.soll,2{$extended_mysql55}) as soll, r.zahlungsstatus as zahlung, re.belegnr as rechnung, UPPER(r.status) as status,
|
||||
".$this->IconsSQLReturnOrder()." ,r.id
|
||||
r.land as land,
|
||||
p.abkuerzung as projekt,
|
||||
r.zahlungsweise as zahlungsweise,
|
||||
".$this->app->erp->FormatMenge('r.soll',2)." as soll,
|
||||
r.zahlungsstatus as zahlung,
|
||||
".$this->app->erp->FormatMenge('r.soll-r.ist',2)." as differenz,
|
||||
re.belegnr as rechnung,
|
||||
UPPER(r.status) as status,
|
||||
".$this->IconsSQLReturnOrder().",
|
||||
r.id
|
||||
FROM gutschrift r
|
||||
LEFT JOIN rechnung re ON re.id=r.rechnungid
|
||||
LEFT JOIN projekt p ON p.id=r.projekt
|
||||
@ -6551,13 +6562,24 @@ r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise,
|
||||
// $columnfilter = true;
|
||||
|
||||
// SQL statement
|
||||
$sql = "SELECT SQL_CALC_FOUND_ROWS r.id,'<img src=./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open,concat('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',r.id,'\" />')as auswahl, r.belegnr, DATE_FORMAT(r.datum,'%d.%m.%Y') as vom,
|
||||
$sql = "SELECT SQL_CALC_FOUND_ROWS
|
||||
r.id,
|
||||
'<img src=./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open,
|
||||
concat('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',r.id,'\" />') as auswahl,
|
||||
r.belegnr,
|
||||
DATE_FORMAT(r.datum,'%d.%m.%Y') as vom,
|
||||
if(r.kundennummer <> '',r.kundennummer,adr.kundennummer),
|
||||
|
||||
CONCAT(" . $this->app->erp->MarkerUseredit("r.name", "r.useredittimestamp") . ", if(r.internebezeichnung!='',CONCAT('<br><i style=color:#999>',r.internebezeichnung,'</i>'),'')) as kunde,
|
||||
r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise, FORMAT(r.soll,2{$extended_mysql55} ) as soll, ifnull(r.waehrung,'EUR'),
|
||||
if(r.soll-r.ist+r.skonto_gegeben!=0 AND r.ist > 0 AND r.zahlungsstatus!='bezahlt','teilbezahlt',r.zahlungsstatus) as zahlung,
|
||||
if(r.soll-r.ist+r.skonto_gegeben!=0 AND r.ist > 0,FORMAT(r.ist-r.soll+r.skonto_gegeben,2{$extended_mysql55}),FORMAT((r.soll-r.ist+r.skonto_gegeben)*-1,2{$extended_mysql55})) as fehlt, if(r.status = 'storniert' AND r.teilstorno = 1,'TEILSTORNO',UPPER(r.status)) as status, ".(!empty($zusatzcols)?implode(', ',$zusatzcols).',':'')." r.id
|
||||
r.land as land,
|
||||
p.abkuerzung as projekt,
|
||||
r.zahlungsweise as zahlungsweise,
|
||||
FORMAT(r.soll,2{$extended_mysql55} ) as soll,
|
||||
ifnull(r.waehrung,'EUR'),
|
||||
if(r.soll-r.ist=0 AND r.ist > 0 AND r.zahlungsstatus!='bezahlt','teilbezahlt',r.zahlungsstatus) as zahlung,
|
||||
if(r.soll-r.ist!=0 AND r.ist > 0,FORMAT(r.ist-r.soll,2{$extended_mysql55}),FORMAT((r.soll-r.ist)*-1,2{$extended_mysql55})) as fehlt,
|
||||
if(r.status = 'storniert' AND r.teilstorno = 1,'TEILSTORNO',UPPER(r.status)) as status,
|
||||
".(!empty($zusatzcols)?implode(', ',$zusatzcols).',':'')."
|
||||
r.id
|
||||
FROM rechnung r LEFT JOIN projekt p ON p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id LEFT JOIN auftrag au ON au.id = r.auftragid ";
|
||||
if(isset($parameter['artikel']) && !empty($parameter['artikel'])) {
|
||||
$artikelid = $this->app->DB->Select("SELECT id FROM artikel where geloescht != 1 AND nummer != 'DEL' AND nummer != '' AND nummer = '".$this->app->DB->real_escape_string(reset(explode(' ',trim($parameter['artikel']))))."' LIMIT 1");
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -415,6 +415,10 @@ function upgrade_main(string $directory,bool $verbose, bool $check_git, bool $do
|
||||
$counter++;
|
||||
echo_out("\rUpgrade step $counter of $number_of_statements... ");
|
||||
|
||||
if ($verbose) {
|
||||
echo_out("\n".$sql."\n");
|
||||
}
|
||||
|
||||
$query_result = mysqli_query($mysqli, $sql);
|
||||
if (!$query_result) {
|
||||
$error = " not ok: ". mysqli_error($mysqli);
|
||||
|
71
vendor/mustal/mustal_mysql_upgrade_tool.php
vendored
71
vendor/mustal/mustal_mysql_upgrade_tool.php
vendored
@ -79,20 +79,22 @@ function mustal_load_tables_from_db(string $host, string $schema, string $user,
|
||||
}
|
||||
|
||||
// Get db_def and views
|
||||
$sql = "SHOW FULL tables WHERE Table_type = 'BASE TABLE'";
|
||||
$sql = "SHOW TABLE STATUS WHERE engine IS NOT NULL";
|
||||
$query_result = mysqli_query($mysqli, $sql);
|
||||
if (!$query_result) {
|
||||
return(array());
|
||||
}
|
||||
while ($row = mysqli_fetch_assoc($query_result)) {
|
||||
$table = array();
|
||||
$table['name'] = $row['Tables_in_'.$schema];
|
||||
$table['type'] = $row['Table_type'];
|
||||
$table['name'] = $row['Name'];
|
||||
$table['collation'] = $row['Collation'];
|
||||
$table['type'] = 'BASE TABLE';
|
||||
$tables[] = $table; // Add table to list of tables
|
||||
}
|
||||
|
||||
// Get and add columns of the table
|
||||
foreach ($tables as &$table) {
|
||||
|
||||
$sql = "SHOW FULL COLUMNS FROM ".$table['name'];
|
||||
$query_result = mysqli_query($mysqli, $sql);
|
||||
|
||||
@ -109,6 +111,10 @@ function mustal_load_tables_from_db(string $host, string $schema, string $user,
|
||||
$column['Default'] = mustal_mysql_put_text_type_in_quotes($column['Type'],$column['Default']);
|
||||
}
|
||||
|
||||
if (empty($column['Collation']) && mustal_is_string_type($column['Type'])) {
|
||||
$column['Collation'] = $table['collation'];
|
||||
}
|
||||
|
||||
$columns[] = $column; // Add column to list of columns
|
||||
}
|
||||
$table['columns'] = $columns;
|
||||
@ -135,6 +141,13 @@ function mustal_load_tables_from_db(string $host, string $schema, string $user,
|
||||
$composed_key['Key_name'] = $key['Key_name'];
|
||||
$composed_key['Index_type'] = $key['Index_type'];
|
||||
$composed_key['columns'][] = $key['Column_name'];
|
||||
|
||||
if ($key['Key_name'] != 'PRIMARY') {
|
||||
$composed_key['Non_unique'] = ($key['Non_unique'] == 1)?'':'UNIQUE';
|
||||
} else {
|
||||
$composed_key['Non_unique'] = '';
|
||||
}
|
||||
|
||||
$composed_keys[] = $composed_key;
|
||||
} else {
|
||||
// Given key, add column
|
||||
@ -161,9 +174,16 @@ function mustal_load_tables_from_db(string $host, string $schema, string $user,
|
||||
|
||||
foreach ($views as &$view) {
|
||||
$sql = "SHOW CREATE VIEW ".$view['name'];
|
||||
|
||||
try {
|
||||
$query_result = mysqli_query($mysqli, $sql);
|
||||
}
|
||||
catch (exception $e) {
|
||||
$query_result = false; // VIEW is erroneous
|
||||
}
|
||||
if (!$query_result) {
|
||||
return(array());
|
||||
$view['Create'] = '';
|
||||
continue;
|
||||
}
|
||||
$viewdef = mysqli_fetch_assoc($query_result);
|
||||
|
||||
@ -330,19 +350,19 @@ function mustal_compare_table_array(array $nominal, string $nominal_name, array
|
||||
// Compare the properties of the sql_indexs
|
||||
if ($check_column_definitions) {
|
||||
$found_sql_index = $found_table['keys'][$sql_index_key];
|
||||
|
||||
foreach ($sql_index as $key => $value) {
|
||||
if ($found_sql_index[$key] != $value) {
|
||||
|
||||
// if ($key != 'permissions') {
|
||||
$compare_difference = array();
|
||||
$compare_difference['type'] = "Key definition";
|
||||
$compare_difference['table'] = $database_table['name'];
|
||||
$compare_difference['key'] = $sql_index['Key_name'];
|
||||
$compare_difference['property'] = $key;
|
||||
$compare_difference[$nominal_name] = implode(',',$value);
|
||||
$compare_difference[$actual_name] = implode(',',$found_sql_index[$key]);
|
||||
/* $compare_difference[$nominal_name] = implode(',',$value);
|
||||
$compare_difference[$actual_name] = implode(',',$found_sql_index[$key]);*/
|
||||
$compare_difference[$nominal_name] = $value;
|
||||
$compare_difference[$actual_name] = $found_sql_index[$key];
|
||||
$compare_differences[] = $compare_difference;
|
||||
// }
|
||||
}
|
||||
}
|
||||
unset($value);
|
||||
@ -401,9 +421,11 @@ function mustal_compare_table_array(array $nominal, string $nominal_name, array
|
||||
// Generate SQL to create or modify column
|
||||
function mustal_column_sql_definition(string $table_name, array $column, array $reserved_words_without_quote) : string {
|
||||
|
||||
$column_is_string_type = mustal_is_string_type($column['Type']);
|
||||
|
||||
foreach($column as $key => &$value) {
|
||||
$value = (string) $value;
|
||||
$value = mustal_column_sql_create_property_definition($key,$value,$reserved_words_without_quote);
|
||||
$value = mustal_column_sql_create_property_definition($key,$value,$reserved_words_without_quote,$column_is_string_type);
|
||||
}
|
||||
|
||||
// Default handling here
|
||||
@ -422,7 +444,7 @@ function mustal_column_sql_definition(string $table_name, array $column, array $
|
||||
}
|
||||
|
||||
// Generate SQL to modify a single column property
|
||||
function mustal_column_sql_create_property_definition(string $property, string $property_value, array $reserved_words_without_quote) : string {
|
||||
function mustal_column_sql_create_property_definition(string $property, string $property_value, array $reserved_words_without_quote, $column_is_string_type) : string {
|
||||
|
||||
switch ($property) {
|
||||
case 'Type':
|
||||
@ -453,8 +475,10 @@ function mustal_column_sql_create_property_definition(string $property, string $
|
||||
}
|
||||
break;
|
||||
case 'Collation':
|
||||
if ($property_value != '') {
|
||||
if ($property_value != '' && $column_is_string_type) {
|
||||
$property_value = " COLLATE ".$property_value;
|
||||
} else {
|
||||
$property_value = "";
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -468,9 +492,9 @@ function mustal_column_sql_create_property_definition(string $property, string $
|
||||
// Replaces different variants of the same function mustal_to allow comparison
|
||||
function mustal_sql_replace_reserved_functions(array &$column, array $replacers) {
|
||||
|
||||
$result = strtolower($column['Default']);
|
||||
$result = $column['Default'];
|
||||
foreach ($replacers as $replace) {
|
||||
if ($result == $replace[0]) {
|
||||
if (strtolower($column['Default']) == $replace[0]) {
|
||||
$result = $replace[1];
|
||||
}
|
||||
}
|
||||
@ -568,7 +592,7 @@ function mustal_calculate_db_upgrade(array $compare_def, array $db_def, array &$
|
||||
$index_type = "";
|
||||
}
|
||||
|
||||
$keystring = $index_type." KEY `".$key['Key_name']."` ";
|
||||
$keystring = $index_type." ".$key['Non_unique']." KEY `".$key['Key_name']."` ";
|
||||
}
|
||||
$sql .= $comma.$keystring."(`".implode("`,`",$key['columns'])."`) ";
|
||||
}
|
||||
@ -652,7 +676,7 @@ function mustal_calculate_db_upgrade(array $compare_def, array $db_def, array &$
|
||||
if ($key_key !== false) {
|
||||
$key = $table['keys'][$key_key];
|
||||
|
||||
$sql = "ALTER TABLE `$table_name` ADD KEY `".$key_name."` ";
|
||||
$sql = "ALTER TABLE `$table_name` ADD ".$key['Non_unique']." KEY `".$key_name."` ";
|
||||
$sql .= "(`".implode("`,`",$key['columns'])."`)";
|
||||
$sql .= ";";
|
||||
$upgrade_sql[] = $sql;
|
||||
@ -682,7 +706,7 @@ function mustal_calculate_db_upgrade(array $compare_def, array $db_def, array &$
|
||||
$sql = "ALTER TABLE `$table_name` DROP KEY `".$key_name."`;";
|
||||
$upgrade_sql[] = $sql;
|
||||
|
||||
$sql = "ALTER TABLE `$table_name` ADD KEY `".$key_name."` ";
|
||||
$sql = "ALTER TABLE `$table_name` ADD ".$key['Non_unique']." KEY `".$key_name."` ";
|
||||
$sql .= "(`".implode("`,`",$key['columns'])."`)";
|
||||
$sql .= ";";
|
||||
$upgrade_sql[] = $sql;
|
||||
@ -743,6 +767,17 @@ function mustal_calculate_db_upgrade(array $compare_def, array $db_def, array &$
|
||||
array_unshift($upgrade_sql,"SET SQL_MODE='ALLOW_INVALID_DATES';","SET SESSION innodb_strict_mode=OFF;");
|
||||
}
|
||||
|
||||
|
||||
return($result);
|
||||
}
|
||||
|
||||
// Check if given type is a string, relevant for collation
|
||||
function mustal_is_string_type(string $type) {
|
||||
$mustal_string_types = array('varchar','char','text','tinytext','mediumtext','longtext');
|
||||
foreach($mustal_string_types as $string_type) {
|
||||
if (stripos($type,$string_type) === 0) {
|
||||
return(true);
|
||||
}
|
||||
}
|
||||
return(false);
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
$version="OSS";
|
||||
$version_revision="1.8";
|
||||
$version_revision="1.9";
|
||||
$githash = file_get_contents("../githash.txt");
|
||||
if (!empty($githash)) {
|
||||
$version_revision .= " (".substr($githash,0,8).")";
|
||||
|
@ -1517,6 +1517,11 @@ public function NavigationHooks(&$menu)
|
||||
// return "replace(trim($spalte)+0,'.',',')";
|
||||
}
|
||||
|
||||
function FormatUCfirst($spalte)
|
||||
{
|
||||
return ('CONCAT(UCASE(LEFT('.$spalte.', 1)),SUBSTRING('.$spalte.', 2))');
|
||||
}
|
||||
|
||||
static function add_alias(string $text, $alias = false) {
|
||||
if (empty($alias)) {
|
||||
return($text);
|
||||
@ -2642,6 +2647,24 @@ public function NavigationHooks(&$menu)
|
||||
return "if(" . $fieldstroke . ",CONCAT('<s>'," . $field . ",'</s>')," . $field . ")";
|
||||
}
|
||||
|
||||
// @refactor DbHelper Komponente
|
||||
// creates a CONCAT sql statement with strings or sql expressions
|
||||
// Use like this: ConcatSQL('<a href=index.php?id=',['sql'] => 'id','>','click here</a>');
|
||||
function ConcatSQL(array $fields) {
|
||||
$result = "CONCAT(";
|
||||
$comma = "";
|
||||
foreach ($fields as $field) {
|
||||
if (gettype($field) == 'array') {
|
||||
$result .= $comma.$field['sql'];
|
||||
} else {
|
||||
$result .= $comma."'".$field."'";
|
||||
}
|
||||
$comma = ",";
|
||||
}
|
||||
$result .= ")";
|
||||
return($result);
|
||||
}
|
||||
|
||||
// @refactor Formater Komponente
|
||||
function Dateinamen($text) {
|
||||
$text = $this->UmlauteEntfernen($text);
|
||||
@ -7095,6 +7118,8 @@ title: 'Abschicken',
|
||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Arbeitsnachweis','arbeitsnachweis','list');
|
||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Gutschrift / '.$this->Firmendaten("bezeichnungstornorechnung"),'gutschrift','list');
|
||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Proformarechnung','proformarechnung','list');
|
||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Kontoauszüge','kontoauszuege','list');
|
||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Buchungen','fibu_buchungen','list');
|
||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Abolauf','rechnungslauf','list');
|
||||
$navarray['menu']['admin'][$menu]['sec'][] = array('Mahnwesen','mahnwesen','list');
|
||||
|
||||
@ -12673,6 +12698,10 @@ function SendPaypalFromAuftrag($auftrag, $test = false)
|
||||
//TODO zahlungsweisemodul
|
||||
$zahlungsweise = strtolower($zahlungsweise);
|
||||
|
||||
/*
|
||||
|
||||
OLD CODE REPLACED BY FUNCTION IN auftrag.php / fibu_buchungen
|
||||
|
||||
if($zahlungsweisenmodule = $this->app->DB->SelectArr("SELECT id, modul, verhalten FROM zahlungsweisen WHERE type = '".$this->app->DB->real_escape_string($zahlungsweise)."' AND
|
||||
(projekt = '$projekt' OR projekt = 0) ORDER BY projekt = '$projekt' DESC LIMIT 1
|
||||
"))
|
||||
@ -12700,6 +12729,9 @@ function SendPaypalFromAuftrag($auftrag, $test = false)
|
||||
$this->app->DB->Update("UPDATE auftrag SET vorkasse_ok='0' WHERE id='$auftrag' LIMIT 1");
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
//nachnahme gebuehr check!!!!
|
||||
//$nachnahme = $this->app->DB->Select("SELECT id FROM auftrag_position WHERE auftrag='$auftrag' AND nummer='200001' LIMIT 1");
|
||||
$nachnahme = $this->app->DB->Select("SELECT COUNT(ap.id) FROM auftrag_position ap, artikel a WHERE ap.auftrag='$auftrag' AND ap.artikel=a.id AND a.porto=1 AND ap.preis >= 0
|
||||
@ -22193,8 +22225,8 @@ function ChargenMHDAuslagern($artikel, $menge, $lagerplatztyp, $lpid,$typ,$wert,
|
||||
$this->app->DB->Delete("DELETE lager_charge FROM lager_charge INNER JOIN lager_platz ON lager_platz.id=lager_charge.lager_platz
|
||||
WHERE lager_platz.verbrauchslager='1' AND lager_platz.id = '$regal'");
|
||||
|
||||
$this->app->DB->Delete("DELETE lager_seriennummer FROM lager_seriennummer
|
||||
INNER JOIN lager_platz ON lager_platz.id=lager_seriennummer.lager_platz
|
||||
$this->app->DB->Delete("DELETE FROM lager_seriennummern
|
||||
INNER JOIN lager_platz ON lager_platz.id=lager_seriennummern.lager_platz
|
||||
WHERE lager_platz.verbrauchslager='1' AND lager_platz.id = '$regal'");
|
||||
|
||||
$this->app->DB->Delete("DELETE lager_mindesthaltbarkeitsdatum FROM lager_mindesthaltbarkeitsdatum
|
||||
@ -22212,8 +22244,8 @@ function ChargenMHDAuslagern($artikel, $menge, $lagerplatztyp, $lpid,$typ,$wert,
|
||||
$this->app->DB->Delete("DELETE lager_charge FROM lager_charge INNER JOIN lager_platz ON lager_platz.id=lager_charge.lager_platz
|
||||
WHERE lager_platz.verbrauchslager='1'");
|
||||
|
||||
$this->app->DB->Delete("DELETE lager_seriennummer FROM lager_seriennummer
|
||||
INNER JOIN lager_platz ON lager_platz.id=lager_seriennummer.lager_platz
|
||||
$this->app->DB->Delete("DELETE FROM lager_seriennummern
|
||||
INNER JOIN lager_platz ON lager_platz.id=lager_seriennummern.lager_platz
|
||||
WHERE lager_platz.verbrauchslager='1'");
|
||||
|
||||
$this->app->DB->Delete("DELETE lager_mindesthaltbarkeitsdatum FROM lager_mindesthaltbarkeitsdatum
|
||||
@ -34500,7 +34532,7 @@ function Firmendaten($field,$projekt="")
|
||||
$this->CopyBelegZwischenpositionen('rechnung',$id,'gutschrift',$newid);
|
||||
$this->app->DB->Update("UPDATE gutschrift SET stornorechnung='$stornorechnung', ohne_briefpapier='".$ohnebriefpapier."' WHERE id='$newid,' LIMIT 1");
|
||||
|
||||
$this->app->DB->Update("UPDATE rechnung SET schreibschutz='1',status='storniert',zahlungsstatus='bezahlt' WHERE id='$id' LIMIT 1");
|
||||
$this->app->DB->Update("UPDATE rechnung SET schreibschutz='1',status='storniert' WHERE id='$id' LIMIT 1");
|
||||
$this->RechnungProtokoll($id, $grund);
|
||||
$this->SchnellFreigabe("gutschrift",$newid);
|
||||
return $newid;
|
||||
@ -35641,7 +35673,7 @@ function Firmendaten($field,$projekt="")
|
||||
$rechnungid = $this->app->DB->Select("SELECT rechnungid FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||
if($rechnungid > 0 && $this->Firmendaten("mahnwesenmitkontoabgleich")=="1")
|
||||
{
|
||||
$this->app->DB->Update("UPDATE rechnung SET ist=0, zahlungsstatus='offen' WHERE id='$rechnungid' AND mahnwesenfestsetzen!=1 LIMIT 1");
|
||||
$this->app->DB->Update("UPDATE rechnung SET zahlungsstatus='offen' WHERE id='$rechnungid' AND mahnwesenfestsetzen!=1 LIMIT 1");
|
||||
$this->RechnungNeuberechnen($rechnungid);
|
||||
}
|
||||
}
|
||||
@ -35819,6 +35851,213 @@ function Firmendaten($field,$projekt="")
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Retrieve the associated documents regarding payments
|
||||
* Gutschrift -> Rechnung -> Auftrag OR Verbindlichkeit
|
||||
* Results array of ids, types, belegnr
|
||||
*/
|
||||
public function GetZahlungenAssociatedDocuments(int $id, string $type, string $lastlevel = 'auftrag') : array {
|
||||
|
||||
$assocs = array(
|
||||
array(
|
||||
'type' => 'auftrag',
|
||||
'below' => 'rechnung',
|
||||
),
|
||||
array(
|
||||
'above' => 'auftrag',
|
||||
'type' => 'rechnung',
|
||||
'below' => 'gutschrift'
|
||||
),
|
||||
array(
|
||||
'above' => 'rechnung',
|
||||
'type' => 'gutschrift'
|
||||
),
|
||||
array(
|
||||
'type' => 'verbindlichkeit'
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
if ($id <= 0) {
|
||||
throw new exception('no id provided');
|
||||
}
|
||||
|
||||
if (!in_array($type, array('rechnung','gutschrift','auftrag','verbindlichkeit'))) {
|
||||
throw new exception('invalid type '.$type);
|
||||
}
|
||||
|
||||
$id = $this->app->Secure->GetGET('id');
|
||||
|
||||
// Go to highest level
|
||||
$above = $assocs[array_search($type,array_column($assocs,'type'))]['above'];
|
||||
while ($above) {
|
||||
|
||||
if ($type == $lastlevel) {
|
||||
break;
|
||||
}
|
||||
|
||||
$sql = "SELECT ".$above."id as id FROM ".$type." WHERE id = ".$id;
|
||||
$above_id = $this->app->DB->SelectArr($sql)[0];
|
||||
if (!empty($above)) {
|
||||
$type = $above;
|
||||
$id = $above_id['id'];
|
||||
}
|
||||
$above = $assocs[array_search($type,array_column($assocs,'type'))]['above'];
|
||||
}
|
||||
|
||||
// Cascade down and retrieve all documents
|
||||
$result_documents = array();
|
||||
$ids = array($id);
|
||||
$ref = 'id';
|
||||
do {
|
||||
$sql = "SELECT id, '".$type."' AS type, belegnr FROM ".$type." WHERE ".$ref." IN (".implode(",",$ids).")";
|
||||
$result = $this->app->DB->SelectArr($sql);
|
||||
if (!empty($result)) {
|
||||
$result_documents = array_merge($result_documents, $result);
|
||||
$ids = array_column($result,'id');
|
||||
$ref = $type."id";
|
||||
$type = $assocs[array_search($type,array_column($assocs,'type'))]['below'];
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
} while ($type);
|
||||
|
||||
return($result_documents);
|
||||
}
|
||||
|
||||
/*
|
||||
* Calculate the payments of a document (rechnung, gutschrift, auftrag, verbindlichkeit)
|
||||
* Results array of payments (datum, doc_type, doc_id, doc_inof, betrag, waehrung)
|
||||
* Gutschrift -> Rechnungid, Rechnung -> Auftragid
|
||||
*/
|
||||
|
||||
public function GetZahlungen(int $id, string $type, string $cascadelevel = '') : array {
|
||||
|
||||
if ($cascadelevel != '') {
|
||||
$documents = $this->GetZahlungenAssociatedDocuments($id, $type, $cascadelevel);
|
||||
} else {
|
||||
$documents = array(array('id' => $id, 'type' => $type));
|
||||
}
|
||||
|
||||
if (empty($documents)) {
|
||||
return(array());
|
||||
}
|
||||
|
||||
$ids = array();
|
||||
|
||||
foreach ($documents as $document) {
|
||||
$ids[] = $document['type'].$document['id'];
|
||||
}
|
||||
|
||||
$sql = "
|
||||
SELECT
|
||||
typ,
|
||||
id,
|
||||
".$this->app->erp->FormatDate('datum')." as datum,
|
||||
doc_typ,
|
||||
doc_id,
|
||||
doc_info,
|
||||
".$this->app->erp->FormatMenge('betrag',2)." as betrag,
|
||||
waehrung
|
||||
FROM
|
||||
fibu_buchungen_alle
|
||||
WHERE
|
||||
CONCAT(typ,id) IN ('".implode("','",$ids)."')
|
||||
ORDER BY
|
||||
(SELECT datum) ASC
|
||||
";
|
||||
|
||||
$result = $this->app->DB->SelectArr($sql);
|
||||
|
||||
if (empty($result)) {
|
||||
return(array());
|
||||
}
|
||||
return($result);
|
||||
}
|
||||
|
||||
/*
|
||||
* Calculate the payment saldo information of a document
|
||||
* Auftrag: gesamtsumme, rechnung: soll, gutschrift: soll verbindlichkeit: betrag
|
||||
* returns array(array(betrag, waehrung)) one line per waehrung
|
||||
*/
|
||||
public function GetSaldenDokument(int $id, string $type, string $cascadelevel = '') : array {
|
||||
|
||||
if ($cascadelevel != '') {
|
||||
$documents = $this->GetZahlungenAssociatedDocuments($id, $type, $cascadelevel);
|
||||
} else {
|
||||
$documents = array(array('id' => $id, 'type' => $type));
|
||||
}
|
||||
|
||||
if (empty($documents)) {
|
||||
return(array());
|
||||
}
|
||||
|
||||
$ids = array();
|
||||
|
||||
foreach ($documents as $document) {
|
||||
$ids[] = $document['type'].$document['id'];
|
||||
}
|
||||
|
||||
$sql = "
|
||||
SELECT
|
||||
".$this->app->erp->FormatMenge('SUM(betrag)',2)." as betrag,
|
||||
waehrung
|
||||
FROM
|
||||
fibu_buchungen_alle
|
||||
WHERE
|
||||
CONCAT(typ,id) IN ('".implode("','",$ids)."')
|
||||
GROUP BY
|
||||
waehrung";
|
||||
|
||||
$result = $this->app->DB->SelectArr($sql);
|
||||
|
||||
if (!empty($result)) {
|
||||
return($result);
|
||||
}
|
||||
return(array());
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Calculate the payment amount of a document
|
||||
* Auftrag: gesamtsumme, rechnung: soll, gutschrift: soll verbindlichkeit: betrag
|
||||
* returns array(betrag, waehrung) or empty array if multiple
|
||||
*/
|
||||
public function GetSaldoDokument(int $id, string $type) : array {
|
||||
|
||||
$sql = "
|
||||
SELECT
|
||||
SUM(betrag) as betrag,
|
||||
waehrung
|
||||
FROM
|
||||
fibu_buchungen_alle
|
||||
WHERE
|
||||
typ = '".$type."' AND id = ".$id."
|
||||
GROUP BY
|
||||
waehrung";
|
||||
|
||||
$result = $this->app->DB->SelectArr($sql);
|
||||
|
||||
if (!empty($result)) {
|
||||
if (count($result) == 1) {
|
||||
return($result[0]);
|
||||
}
|
||||
}
|
||||
return(array());
|
||||
}
|
||||
|
||||
/*
|
||||
* Create a fibu buchung
|
||||
* using module fibu_buchungen
|
||||
*/
|
||||
public function fibu_buchungen_buchen(string $von_typ, int $von_id, string $nach_typ, int $nach_id, $betrag, string $waehrung, $datum, string $internebemerkung) {
|
||||
$fibu_buchungen = $this->app->loadModule('fibu_buchungen', false);
|
||||
if($fibu_buchungen !== null && method_exists($fibu_buchungen, 'fibu_buchungen_buchen')) {
|
||||
return $fibu_buchungen->fibu_buchungen_buchen($von_typ, $von_id, $nach_typ, $nach_id, $betrag, $waehrung, $datum, $internebemerkung);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function ANABREGSNeuberechnen($id,$art,$force=false)
|
||||
{
|
||||
if($id <= 0 || empty($art))
|
||||
|
@ -2072,6 +2072,20 @@ select a.kundennummer, (SELECT name FROM adresse a2 WHERE a2.kundennummer = a.ku
|
||||
$newarr[] = $arr[$i]['name'];
|
||||
break;
|
||||
|
||||
case "fibu_objekte":
|
||||
$arr = $this->app->DB->SelectArr("SELECT CONCAT(".$this->app->erp->FormatUCfirst('typ').",'-',id,'-',info) as objekt FROM fibu_objekte WHERE info LIKE '%$term%' LIMIT 20");
|
||||
$carr = !empty($arr)?count($arr):0;
|
||||
for($i = 0; $i < $carr; $i++)
|
||||
$newarr[] = $arr[$i]['objekt'];
|
||||
break;
|
||||
|
||||
case "fibu_belege":
|
||||
$arr = $this->app->DB->SelectArr("SELECT CONCAT(".$this->app->erp->FormatUCfirst('typ').",'-',id,'-',info) as objekt FROM fibu_objekte WHERE info LIKE '%$term%' AND typ IN ('auftrag','rechnung','gutschrift','verbindlichkeit') LIMIT 20");
|
||||
$carr = !empty($arr)?count($arr):0;
|
||||
for($i = 0; $i < $carr; $i++)
|
||||
$newarr[] = $arr[$i]['objekt'];
|
||||
break;
|
||||
|
||||
case "vpeartikel":
|
||||
$arr = $this->app->DB->SelectArr("SELECT DISTINCT vpe FROM verkaufspreise WHERE geloescht=0 AND vpe LIKE '%$term%' ORDER by vpe");
|
||||
$carr = !empty($arr)?count($arr):0;
|
||||
|
@ -848,7 +848,7 @@ class Auftrag extends GenAuftrag
|
||||
FROM auftrag auf
|
||||
INNER JOIN auftrag_position ON auf.id = auftrag_position.auftrag
|
||||
INNER JOIN artikel ON auftrag_position.artikel = artikel.id
|
||||
WHERE auf.status <> 'abgeschlossen' AND auf.belegnr <> ''
|
||||
WHERE auf.status NOT IN ('abgeschlossen','storniert') AND auf.belegnr <> ''
|
||||
ORDER BY urspruengliches_lieferdatum ASC, auf.belegnr ASC, auftrag_position.sort ASC
|
||||
) a";
|
||||
|
||||
@ -3182,6 +3182,11 @@ class Auftrag extends GenAuftrag
|
||||
);
|
||||
}
|
||||
|
||||
$this->app->Tpl->Add(
|
||||
'ZAHLUNGEN',
|
||||
$this->AuftragZahlung(true)
|
||||
);
|
||||
|
||||
// schaue ob es eine GS zu diesem Auftrag gibt
|
||||
// schaue ob es eine GS zu diesem Auftrag gibt
|
||||
//$gutschriftid = $this->app->DB->Select("SELECT id FROM gutschrift WHERE rechnungid='$rechnungid' LIMIT 1");
|
||||
@ -3409,7 +3414,47 @@ class Auftrag extends GenAuftrag
|
||||
<tr><td><b>Lieferadresse:</b><br><br>$lieferadresse</td></tr></table>";
|
||||
}
|
||||
|
||||
/* Build the html output for minidetail containing the payments
|
||||
* @param bool $return
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function AuftragZahlung($return=false)
|
||||
{
|
||||
$id = $this->app->Secure->GetGET('id');
|
||||
|
||||
$zahlungen = $this->app->erp->GetZahlungen($id,'auftrag',true);
|
||||
if (!empty($zahlungen)) {
|
||||
$et = new EasyTable($this->app);
|
||||
|
||||
$et->headings = array('Datum','Beleg','Betrag','Währung');
|
||||
|
||||
foreach ($zahlungen as $zahlung) {
|
||||
$row = array(
|
||||
$zahlung['datum'],
|
||||
"<a href=\"index.php?module=".$zahlung['doc_typ']."&action=edit&id=".$zahlung['doc_id']."\">
|
||||
".ucfirst($zahlung['doc_typ'])."
|
||||
".$zahlung['doc_info']."
|
||||
</a>",
|
||||
$zahlung['betrag'],
|
||||
$zahlung['waehrung']
|
||||
);
|
||||
$et->AddRow($row);
|
||||
}
|
||||
|
||||
$salden = $this->app->erp->GetSaldenDokument($id,'auftrag',true);
|
||||
foreach ($salden as $saldo) {
|
||||
$row = array(
|
||||
'',
|
||||
'<b>Saldo</b>',
|
||||
"<b>".$saldo['betrag']."</b>",
|
||||
"<b>".$saldo['waehrung']."</b>"
|
||||
);
|
||||
$et->AddRow($row);
|
||||
}
|
||||
return($et->DisplayNew('return',""));
|
||||
}
|
||||
}
|
||||
|
||||
function AuftragZahlungsmail()
|
||||
{
|
||||
@ -6666,6 +6711,29 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
||||
|
||||
public function AuftragList()
|
||||
{
|
||||
|
||||
// refresh all open items
|
||||
$openids = $this->app->DB->SelectArr("SELECT id, gesamtsumme, waehrung from auftrag WHERE status <> 'abgeschlossen'");
|
||||
|
||||
foreach ($openids as $openid) {
|
||||
$saldo = $this->app->erp->GetSaldoDokument($openid['id'],'auftrag');
|
||||
if (!empty($saldo)) {
|
||||
if ($saldo['waehrung'] == $openid['waehrung'] && $saldo['betrag'] >= $openid['gesamtsumme']) {
|
||||
$sql = "UPDATE
|
||||
auftrag
|
||||
SET
|
||||
vorkasse_ok = 1
|
||||
WHERE id=".$openid['id'];
|
||||
$this->app->DB->Update($sql);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$this->app->DB->Update("UPDATE auftrag SET vorkasse_ok = 0 WHERE id=".$openid['id']);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($this->app->Secure->GetPOST('ausfuehren') && $this->app->erp->RechteVorhanden('auftrag', 'edit'))
|
||||
{
|
||||
$drucker = $this->app->Secure->GetPOST('seldrucker');
|
||||
|
@ -87,7 +87,7 @@
|
||||
-->
|
||||
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">{|Zahlungseingang|}</h2>
|
||||
<h2 class="greyh2">{|Zahlungen|}</h2>
|
||||
<div style="padding:10px">
|
||||
[ZAHLUNGEN]
|
||||
</div>
|
||||
|
204
www/pages/content/fibu_buchungen_edit.tpl
Normal file
204
www/pages/content/fibu_buchungen_edit.tpl
Normal file
@ -0,0 +1,204 @@
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1"></a></li>
|
||||
</ul>
|
||||
<!-- Example for multiple tabs
|
||||
<ul hidden">
|
||||
<li><a href="#tabs-1">First Tab</a></li>
|
||||
<li><a href="#tabs-2">Second Tab</a></li>
|
||||
</ul>
|
||||
-->
|
||||
<div id="tabs-1">
|
||||
[MESSAGE]
|
||||
<form action="" method="post">
|
||||
[FORMHANDLEREVENT]
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Einzelbuchung bearbeiten.|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Von|}:
|
||||
</td>
|
||||
<td>
|
||||
<a href="index.php?module=[VON_TYP]&id=[VON_ID]&action=edit">[VON]</a>
|
||||
<input hidden type="text" name="von_typ" id="von_typ" value="[VON_TYP]" size="20">
|
||||
<input hidden type="text" name="von_id" id="von_id" value="[VON_ID]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Nach|}:
|
||||
</td>
|
||||
<td>
|
||||
<a href="index.php?module=[NACH_TYP]&id=[NACH_ID]&action=edit">[NACH]</a>
|
||||
<input hidden type="text" name="nach_typ" id="nach_typ" value="[NACH_TYP]" size="20">
|
||||
<input hidden type="text" name="nach_id" id="nach_id" value="[NACH_ID]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Betrag|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="numeric" name="betrag" id="betrag" value="[BETRAG]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Währung|}:
|
||||
</td>
|
||||
<td>
|
||||
<select name="waehrung">[WAEHRUNG]</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Benutzer|}:
|
||||
</td>
|
||||
<td>
|
||||
[BENUTZER]
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Datum|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="datum" id="datum" value="[DATUM]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Internebemerkung|}:
|
||||
</td>
|
||||
<td>
|
||||
<textarea type="text" name="internebemerkung" id="internebemerkung" size="20">[INTERNEBEMERKUNG]</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<input type="submit" name="submit" value="Speichern" style="float:right"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
[TAB1]
|
||||
<!-- Example for 2nd row
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Another legend|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<td>
|
||||
{|Von_typ|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="von_typ" id="von_typ" value="[VON_TYP]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Von_id|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="von_id" id="von_id" value="[VON_ID]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Nach_typ|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="nach_typ" id="nach_typ" value="[NACH_TYP]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Nach_id|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="nach_id" id="nach_id" value="[NACH_ID]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Betrag|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="betrag" id="betrag" value="[BETRAG]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Waehrung|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="waehrung" id="waehrung" value="[WAEHRUNG]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Benutzer|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="benutzer" id="benutzer" value="[BENUTZER]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Zeit|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="zeit" id="zeit" value="[ZEIT]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Internebemerkung|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="internebemerkung" id="internebemerkung" value="[INTERNEBEMERKUNG]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</form>
|
||||
</div>
|
||||
<!-- Example for 2nd tab
|
||||
<div id="tabs-2">
|
||||
[MESSAGE]
|
||||
<form action="" method="post">
|
||||
[FORMHANDLEREVENT]
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|...|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
...
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input type="submit" name="submit" value="Speichern" style="float:right"/>
|
||||
</form>
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
|
105
www/pages/content/fibu_buchungen_einzelzuordnen.tpl
Normal file
105
www/pages/content/fibu_buchungen_einzelzuordnen.tpl
Normal file
@ -0,0 +1,105 @@
|
||||
<form action="" method="post" id="buchungenform">
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1"><!--[TABTEXT]--></a></li>
|
||||
</ul>
|
||||
<div id="tabs-1">
|
||||
[MESSAGE]
|
||||
[FORMHANDLEREVENT]
|
||||
<legend>{|Einzelsaldo zuordnen und auf mehrere Gegenbelege oder Sachkonto verbuchen.|}</legend>
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-6 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
"[DOC_ZUORDNUNG]"
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Saldo: <u>[DOC_SALDO]</u>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-6 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
Multifilter für "Info" (Trennzeichen ',; ')
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<textarea type="text" name="multifilter" id="multifilter" style="width:100%;">[MULTIFILTER]</textarea>
|
||||
</td>
|
||||
<td>
|
||||
<button name="submit" value="multifilter" class="ui-button-icon">{|Filtern|}</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
[TAB1]
|
||||
<fieldset>
|
||||
<table>
|
||||
<legend>Stapelverarbeitung</legend>
|
||||
<tr>
|
||||
<td><input type="checkbox" value="1" name="override" form="buchungenform" /> Mit Abweichung buchen </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox" value="1" id="autoalle" /> alle markieren
|
||||
<select id="sel_aktion" name="sel_aktion">
|
||||
<option value="buchen">{|auf Ausgewählte buchen|}</option>
|
||||
<option value="buchen_diff_sachkonto">{|auf Ausgewählte buchen, Gegenbeleg auf Sachkonto ausgleichen|}</option>
|
||||
</select> Sachkonto:
|
||||
<input type="text" id="sachkonto" name="sachkonto" value="">
|
||||
<button name="submit" value="BUCHEN" class="ui-button-icon">{|BUCHEN|}</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="number" name="abschlag" id="abschlag" value=[ABSCHLAG] />% Abschlag auf Buchungsbetrag</td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<button name="submit" value="neuberechnen" class="ui-button-icon" style="width:100%;">
|
||||
{|Buchungen neu berechnen|}
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<script>
|
||||
|
||||
$('#autoalle').on('change',function(){
|
||||
var wert = $(this).prop('checked');
|
||||
$('#fibu_buchungen_einzelzuordnen').find('input[type="checkbox"]').prop('checked',wert);
|
||||
$('#fibu_buchungen_einzelzuordnen').find('input[type="checkbox"]').first().trigger('change');
|
||||
});
|
||||
|
||||
</script>
|
62
www/pages/content/fibu_buchungen_list.tpl
Normal file
62
www/pages/content/fibu_buchungen_list.tpl
Normal file
@ -0,0 +1,62 @@
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1">Salden</a></li>
|
||||
<li><a href="#tabs-2">Buchungen</a></li>
|
||||
</ul>
|
||||
<div id="tabs-1">
|
||||
<legend>Saldenübersicht. Salden müssen über Gegenbuchungen ausgeglichen werden.<br><br></legend>
|
||||
<form action="" enctype="multipart/form-data" method="POST">
|
||||
[MESSAGE]
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-10 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
[TAB1]
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-2 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<legend>{|Aktionen|}</legend>
|
||||
<td><button name="submit" value="neuberechnen" class="ui-button-icon" style="width:100%;">Buchungen neu berechnen</button></td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
[TAB1NEXT]
|
||||
</div>
|
||||
<div id="tabs-2">
|
||||
<form action="#tabs-2" enctype="multipart/form-data" method="POST">
|
||||
[MESSAGE]
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-10 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Einzelbuchungen|}</legend>
|
||||
[TAB2]
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-2 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<legend>{|Aktionen|}</legend>
|
||||
<td><button name="submit" value="neuberechnen" class="ui-button-icon" style="width:100%;">Buchungen neu berechnen</button></td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
[TAB2NEXT]
|
||||
</div>
|
||||
</div>
|
79
www/pages/content/fibu_buchungen_zuordnen.tpl
Normal file
79
www/pages/content/fibu_buchungen_zuordnen.tpl
Normal file
@ -0,0 +1,79 @@
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1"><!--[TABTEXT]--></a></li>
|
||||
</ul>
|
||||
<div id="tabs-1">
|
||||
[MESSAGE]
|
||||
[FORMHANDLEREVENT]
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Einzelsalden zuordnen und auf Gegenbelege oder Sachkonto verbuchen.|}</legend>
|
||||
<div class="filter-box filter-usersave">
|
||||
<div class="filter-block filter-inline">
|
||||
<div class="filter-title">{|Filter|}</div>
|
||||
<ul class="filter-list">
|
||||
<li class="filter-item">
|
||||
<label for="vorschlagfilter" class="switch">
|
||||
<input type="checkbox" id="vorschlagfilter">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="vorschlagfilter">{|Vorschläge|}</label>
|
||||
</li>
|
||||
<li class="filter-item">
|
||||
<label for="checkedfilter" class="switch">
|
||||
<input type="checkbox" id="checkedfilter">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="checkedfilter">{|Betrag korrekt|}</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<form action="" method="post" id="buchungenform">
|
||||
[TAB1]
|
||||
</form>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<table>
|
||||
<legend>Stapelverarbeitung</legend>
|
||||
<tr>
|
||||
<td><input type="checkbox" value="1" id="autoalle" /> alle markieren
|
||||
<select form="buchungenform" id="sel_aktion" name="sel_aktion">
|
||||
<option value="vorschlag">{|auf Vorschlag buchen|}</option>
|
||||
<option value="vorschlag_diff_sachkonto">{|auf Vorschlag buchen, Gegenbeleg auf Sachkonto ausgleichen|}</option>
|
||||
<option value="sachkonto">{|auf Sachkonto buchen|}</option>
|
||||
</select> Sachkonto:
|
||||
<input type="text" form="buchungenform" id="sachkonto" name="sachkonto" value="">
|
||||
<button name="submit" form="buchungenform" value="BUCHEN" class="ui-button-icon">{|BUCHEN|}</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<form action="" method="post">
|
||||
<td>
|
||||
<button name="submit" value="neuberechnen" class="ui-button-icon" style="width:100%;">
|
||||
{|Buchungen neu berechnen|}
|
||||
</button>
|
||||
</td>
|
||||
</form>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
$('#autoalle').on('change',function(){
|
||||
var wert = $(this).prop('checked');
|
||||
$('#fibu_buchungen_zuordnen').find('input[type="checkbox"]').prop('checked',wert);
|
||||
$('#fibu_buchungen_zuordnen').find('input[type="checkbox"]').first().trigger('change');
|
||||
});
|
||||
|
||||
</script>
|
@ -1101,6 +1101,23 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-6 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Finanzbuchhaltung Einstellungen|}</legend>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="300">Buchungen erzeugen ab Datum:</td><td colspan="3"><input type="text" id= "fibu_buchungen_startdatum" name="fibu_buchungen_startdatum" size="10" value="[FIBU_BUCHUNGEN_STARTDATUM]"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
<fieldset><legend>Finanzbuchhaltung Export Kontenrahmen - Weitere Kostenarten</legend>
|
||||
<table>
|
||||
|
@ -39,7 +39,7 @@
|
||||
</div>
|
||||
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">{|Zahlungseingang|}</h2>
|
||||
<h2 class="greyh2">Buchungen</h2>
|
||||
<div style="padding:10px">
|
||||
[ZAHLUNGEN]
|
||||
</div>
|
||||
@ -58,12 +58,6 @@
|
||||
</div>
|
||||
</div>
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">Deckungsbeitrag</h2>
|
||||
<div style="padding:10px">
|
||||
|
||||
<div class="info">Dieses Modul ist erst ab Version Professional verfügbar</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
@ -45,8 +45,8 @@
|
||||
<input type="checkbox" id="auswahlalle" onchange="alleauswaehlen();" /> {|alle markieren|}
|
||||
<select id="sel_aktion" name="sel_aktion">
|
||||
<option value="">{|bitte wählen|} ...</option>
|
||||
<option value="erledigtam">{|als erledigt markieren|}</option>
|
||||
<option value="offen">{|erledigt Markierung entfernen|}</option>
|
||||
[ALSBEZAHLTMARKIEREN]
|
||||
<option value="offen">{|als offen markieren|}</option>
|
||||
<option value="mail">{|per Mail versenden|}</option>
|
||||
<option value="versendet">{|als versendet markieren|}</option>
|
||||
<option value="pdf">{|Sammel-PDF|}</option>
|
||||
|
@ -6,7 +6,8 @@
|
||||
<li><a href="#tabs-3">{|Zeiterfassung|}</a></li>
|
||||
<li><a href="#tabs-4">{|Wiedervorlagen|}</a></li>
|
||||
<li><a href="#tabs-5">{|Notizen|}</a></li>
|
||||
<li><a href="#tabs-6">{|Kontorahmen|}</a></li>
|
||||
<li><a href="#tabs-6">{|Kontenrahmen|}</a></li>
|
||||
<li><a href="#tabs-7">{|Kontoauszug|}</a></li>
|
||||
</ul>
|
||||
|
||||
<div id="tabs-1">
|
||||
@ -508,7 +509,7 @@
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-1 col-sm-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset><legend>{|Kontorahmen|}</legend>
|
||||
<fieldset><legend>{|Kontenrahmen|}</legend>
|
||||
<table class="mkTable">
|
||||
<tr>
|
||||
<th>Variable</th>
|
||||
@ -551,4 +552,66 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="tabs-7">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-1 col-sm-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset><legend>{|Kontoauszug|}</legend>
|
||||
<table class="mkTable">
|
||||
<tr>
|
||||
<th>Variable</th>
|
||||
<th>Beschreibung</th>
|
||||
<th>Kommentar</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>konto</td>
|
||||
<td>Konto-Kurzbezeichnung</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>buchung</td>
|
||||
<td>Buchungsdatum</td>
|
||||
<td>Im Format DD.MM.YYYY</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>betrag</td>
|
||||
<td>Betrag</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>betrag2</td>
|
||||
<td>Betrag (wenn z.B. Soll / Haben getrennt)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>waehrung</td>
|
||||
<td>Währung</td>
|
||||
<td>Muss in den Währungen vorhanden sein</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>buchungstext</td>
|
||||
<td>Buchungstext</td>
|
||||
<td>Wird für die Zuordnung verwendet</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>buchungstext2</td>
|
||||
<td>Buchungstext</td>
|
||||
<td>Wird für die Zuordnung verwendet</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>buchungstext3</td>
|
||||
<td>Buchungstext</td>
|
||||
<td>Wird für die Zuordnung verwendet</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>buchungstext4</td>
|
||||
<td>Buchungstext</td>
|
||||
<td>Wird für die Zuordnung verwendet</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -8,7 +8,7 @@
|
||||
<!--<td width="25%"><a href="index.php?module=shopexport&action=list"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_20.gif" border="0" width="30%"></a></td>-->
|
||||
</tr>
|
||||
<tr align="center">
|
||||
<td><a href="index.php?module=importvorlage&action=list">{|Stammdaten|} <br>{|Import|}</a></td>
|
||||
<td><a href="index.php?module=importvorlage&action=list">{|Daten|} <br>{|Import|}</a></td>
|
||||
<td><a href="index.php?module=exportvorlage&action=list">{|Stammdaten|} <br>{|Export|}</a></td>
|
||||
<!--<td><a href="index.php?module=adresse_import&action=list">{|Intranet|}</a></td>-->
|
||||
<td><a href="index.php?module=shopimport&action=list">{|Import|}<br>({|Online-Shop|})</a></td>
|
||||
@ -17,7 +17,7 @@
|
||||
<tr><td colspan="99"> </td></tr>
|
||||
<tr align="center">
|
||||
<td width="25%"><a href="index.php?module=exportbelegepositionen&action=export"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_1.gif" border="0" width="30%"></a></td>
|
||||
<td width="25%"><a href="index.php?module=exportbuchhaltung&action=export"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_1.gif" border="0" width="30%"></a></td>
|
||||
<td width="25%"><a href="index.php?module=exportbuchhaltung&action=export"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_19.gif" border="0" width="30%"></a></td>
|
||||
<td width="25%">[BELEGEIMPORTSTART]<a href="index.php?module=belegeimport&action=list"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_1.gif" border="0" width="30%"></a>[BELEGEIMPORTEND]</td>
|
||||
<!--<td width="25%"><a href="index.php?module=shopexport&action=list"><img src="./themes/[THEME]/images/einstellungen/Icons_dunkel_20.gif" border="0" width="30%"></a></td>-->
|
||||
</tr>
|
||||
|
@ -18,37 +18,66 @@
|
||||
<legend>{|Einstellungen|}</legend>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="150">{|Bezeichnung|}:</td>
|
||||
<td><input type="text" name="bezeichnung" id="bezeichnung" size="40" rule="notempty"
|
||||
msg="Pflichfeld!" tabindex="2" value="[BEZEICHNUNG]"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Typ|}:</td>
|
||||
<td width="150">
|
||||
{|Kurzbezeichnung|}:
|
||||
</td>
|
||||
<td>
|
||||
<select name="type" id="type">
|
||||
[TYPE]
|
||||
</select>
|
||||
<input type="text" name="kurzbezeichnung" id="kurzbezeichnung" size="40" rule="notempty" msg="Pflichfeld!" tabindex="2" value="[KURZBEZEICHNUNG]" required><i>{|Muss eindeutig sein.|}</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Projekt|}:</td>
|
||||
<td><input type="text" size="30" name="projekt" id="projekt" value="[PROJEKT]"></td>
|
||||
<td width="150">
|
||||
{|Bezeichnung|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="bezeichnung" id="bezeichnung" size="40" rule="notempty" msg="Pflichfeld!" tabindex="2" value="[BEZEICHNUNG]" required>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Aktiv|}:</td>
|
||||
<td><input type="checkbox" name="aktiv" id="aktiv" value="1"
|
||||
<td>
|
||||
{|Typ|}:
|
||||
</td>
|
||||
<td>
|
||||
<!--
|
||||
<select name="type" id="type">
|
||||
[TYPE]
|
||||
</select>
|
||||
-->
|
||||
<input type="text" name="type" id="type" size="40" value="konto" required readonly>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Projekt|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" size="30" name="projekt" id="projekt" value="[PROJEKT]">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Aktiv|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" name="aktiv" id="aktiv" value="1"
|
||||
[AKTIV]><i>{|Aktiv. Nicht mehr verwendete Konten können deaktiviert werden.|}</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Keine E-Mail|}:</td>
|
||||
<td><input type="checkbox" name="keineemail" id="keineemail" value="1"
|
||||
<td>
|
||||
{|Keine E-Mail|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" name="keineemail" id="keineemail" value="1"
|
||||
[KEINEEMAIL]><i>{|Normalerweise wird beim Zahlungseingang eine Mail an den Kunden gesendet. Soll dies unterdrückt werden muss diese Option gesetzt werden.|}</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Änderungen erlauben|}:</td>
|
||||
<td><input type="checkbox" name="schreibbar" id="schreibbar" value="1"
|
||||
<td>
|
||||
{|Änderungen erlauben|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" name="schreibbar" id="schreibbar" value="1"
|
||||
[SCHREIBBAR]><i> {|Es dürfen nachträglich Kontobuchungen verändert werden|}</i>
|
||||
</td>
|
||||
</tr>
|
||||
@ -66,38 +95,71 @@
|
||||
<legend>{|Bankverbindung (bei Typ Bank)|}</legend>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="150">{|Inhaber|}:</td>
|
||||
<td><input type="text" name="inhaber" id="inhaber" size="40" value="[INHABER]"></td>
|
||||
<td width="150">{|Inhaber|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="inhaber" id="inhaber" size="40" value="[INHABER]">
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|BIC|}:</td>
|
||||
<td><input type="text" name="swift" id="swift" size="40" value="[SWIFT]"></td>
|
||||
<td>
|
||||
{|BIC|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="swift" id="swift" size="40" value="[SWIFT]">
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|IBAN|}:</td>
|
||||
<td><input type="text" name="iban" id="iban" size="40" value="[IBAN]"></td>
|
||||
<td>
|
||||
{|IBAN|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="iban" id="iban" size="40" value="[IBAN]">
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|BLZ|}:</td>
|
||||
<td><input type="text" name="blz" id="blz" size="40" value="[BLZ]"></td>
|
||||
<td>
|
||||
{|BLZ|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="blz" id="blz" size="40" value="[BLZ]">
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Konto|}:</td>
|
||||
<td><input type="text" name="konto" id="konto" size="40" value="[KONTO]"></td>
|
||||
<td>
|
||||
{|Konto|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="konto" id="konto" size="40" value="[KONTO]">
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Gläubiger ID|}:</td>
|
||||
<td><input type="text" name="glaeubiger" id="glaeubiger" size="40" value="[GLAEUBIGER]"></td>
|
||||
<td>
|
||||
{|Gläubiger ID|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="glaeubiger" id="glaeubiger" size="40" value="[GLAEUBIGER]">
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Lastschrift|}:</td>
|
||||
<td><input type="checkbox" name="lastschrift" id="lastschrift" value="1" [LASTSCHRIFT]></td>
|
||||
<td>
|
||||
{|Lastschrift|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" name="lastschrift" id="lastschrift" value="1" [LASTSCHRIFT]>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
@ -113,9 +175,13 @@
|
||||
<legend>{|DATEV|}</legend>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="150">{|Konto|}:</td>
|
||||
<td><input type="text" name="datevkonto" id="datevkonto" size="40" value="[DATEVKONTO]"></td>
|
||||
<td width="150">{|Konto|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="datevkonto" id="datevkonto" size="40" value="[DATEVKONTO]">
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
@ -123,6 +189,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-12 col-md-height">
|
||||
@ -131,46 +198,68 @@
|
||||
<legend>{|CSV-Import|}</legend>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="150">{|Erste Datenzeile|}:</td>
|
||||
<td><input type="text" name="importerstezeilenummer" id="importerstezeilenummer" size="15"
|
||||
value="[IMPORTERSTEZEILENUMMER]">
|
||||
<i>{|Zeilennummer in der echte Daten stehen (Erste Zeile: 1)|}</i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Kodierung|}:</td>
|
||||
<td><select name="codierung" id="codierung">[CODIERUNG]</select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Trennzeichen|}:</td>
|
||||
<td><select name="importtrennzeichen" id="importtrennzeichen">[IMPORTTRENNZEICHEN]</select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Maskierung|}:</td>
|
||||
<td width="150">{|Erste Datenzeile|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="importerstezeilenummer" id="importerstezeilenummer" size="15"
|
||||
value="[IMPORTERSTEZEILENUMMER]">
|
||||
<i>{|Zeilennummer in der echte Daten stehen (Erste Zeile: 1)|}</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Kodierung|}:
|
||||
</td>
|
||||
<td>
|
||||
<select name="codierung" id="codierung">[CODIERUNG]</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Trennzeichen|}:
|
||||
</td>
|
||||
<td>
|
||||
<select name="importtrennzeichen" id="importtrennzeichen">[IMPORTTRENNZEICHEN]</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Maskierung|}:
|
||||
</td>
|
||||
<td>
|
||||
|
||||
<select name="importdatenmaskierung" id="importdatenmaskierung">
|
||||
[IMPORTDATENMASKIERUNG]
|
||||
</select>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Nullbytes entfernen|}:</td>
|
||||
<td><input type="checkbox" name="importnullbytes" id="importnullbytes" value="1" [IMPORTNULLBYTES]>
|
||||
<td width="150">{|Nullbytes entfernen|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" name="importnullbytes" id="importnullbytes" value="1" [IMPORTNULLBYTES]>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Letzte Zeilen ignorieren|}:</td>
|
||||
<td><input type="text" size="15" name="importletztenzeilenignorieren"
|
||||
id="importletztenzeilenignorieren" value="[IMPORTLETZTENZEILENIGNORIEREN]"></td>
|
||||
<td width="150">{|Letzte Zeilen ignorieren|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" size="15" name="importletztenzeilenignorieren"
|
||||
id="importletztenzeilenignorieren" value="[IMPORTLETZTENZEILENIGNORIEREN]">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<table>
|
||||
<tr>
|
||||
<td width="150">{|Spalte in CSV|}</td>
|
||||
<td>{|Spalten 1 bis n (Spaltennummer in CSV).|}</tr>
|
||||
<td width="150">{|Spalte in CSV|}
|
||||
</td>
|
||||
<td>
|
||||
{|Spalten 1 bis n (Spaltennummer in CSV).|}</tr>
|
||||
<tr>
|
||||
<td width="150">{|Datum|}:</td>
|
||||
<td><input type="text" name="importfelddatum" id="importfelddatum" size="15"
|
||||
<td width="150">{|Datum|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="importfelddatum" id="importfelddatum" size="15"
|
||||
value="[IMPORTFELDDATUM]">
|
||||
{|Eingabeformat|}: <input type="text" name="importfelddatumformat"
|
||||
id="importfelddatumformat" size="20"
|
||||
@ -179,67 +268,103 @@
|
||||
id="importfelddatumformatausgabe" size="20"
|
||||
value="[IMPORTFELDDATUMFORMATAUSGABE]">
|
||||
<br><i>{|Bsp. 24.12.2016 in CSV entspricht Eingabeformat %1.%2.%3 und Ausgabeformat %3-%2-%1 (Ausgabe muss immer auf diese Format gebracht werden YYYY-MM-DD)|}</i>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Betrag|}:</td>
|
||||
<td><input type="text" name="importfeldbetrag" id="importfeldbetrag" size="15"
|
||||
value="[IMPORTFELDBETRAG]"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Extra Haben u. Soll|}:</td>
|
||||
<td><input type="checkbox" name="importextrahabensoll" id="importextrahabensoll" value="1" size="15"
|
||||
[IMPORTEXTRAHABENSOLL] /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td width="150">{|Betrag|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="importfeldbetrag" id="importfeldbetrag" size="15"
|
||||
value="[IMPORTFELDBETRAG]">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Extra Haben u. Soll|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" name="importextrahabensoll" id="importextrahabensoll" value="1" size="15"
|
||||
[IMPORTEXTRAHABENSOLL] />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
|
||||
</td>
|
||||
<td>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td width="150">{|Haben|}:</td>
|
||||
<td><input type="text" name="importfeldhaben" id="importfeldhaben" size="15"
|
||||
value="[IMPORTFELDHABEN]"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Soll|}:</td>
|
||||
<td><input type="text" name="importfeldsoll" id="importfeldsoll" size="15"
|
||||
value="[IMPORTFELDSOLL]"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<td width="150">{|Haben|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="importfeldhaben" id="importfeldhaben" size="15"
|
||||
value="[IMPORTFELDHABEN]">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Buchungstext|}:</td>
|
||||
<td><input type="text" name="importfeldbuchungstext" id="importfeldbuchungstext" size="15"
|
||||
<td width="150">{|Soll|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="importfeldsoll" id="importfeldsoll" size="15"
|
||||
value="[IMPORTFELDSOLL]">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Buchungstext|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="importfeldbuchungstext" id="importfeldbuchungstext" size="15"
|
||||
value="[IMPORTFELDBUCHUNGSTEXT]"> <i> {|Mit + mehre Spalten zusammenfügen (aus dem Inhalt wird eine Prüfsumme berechnet, daher so eindeutig wie möglich machen.)|}</i>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Währung|}:</td>
|
||||
<td><input type="text" name="importfeldwaehrung" id="importfeldwaehrung" size="15"
|
||||
value="[IMPORTFELDWAEHRUNG]"> <i>{|Ziel: EUR, USD|}</i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Haben/Soll Kennung|}:</td>
|
||||
<td><input type="text" name="importfeldhabensollkennung" id="importfeldhabensollkennung" size="15"
|
||||
value="[IMPORTFELDHABENSOLLKENNUNG]"> <i>{|Extra Spalte in der steht was der Betrag ist.|}</i>
|
||||
<td width="150">{|Währung|}:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150"></td>
|
||||
<td>
|
||||
<input type="text" name="importfeldwaehrung" id="importfeldwaehrung" size="15"
|
||||
value="[IMPORTFELDWAEHRUNG]"> <i>{|Ziel: EUR, USD|}</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Haben/Soll Kennung|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="importfeldhabensollkennung" id="importfeldhabensollkennung" size="15"
|
||||
value="[IMPORTFELDHABENSOLLKENNUNG]"> <i>{|Extra Spalte in der steht was der Betrag ist.|}</i>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">
|
||||
</td>
|
||||
<td>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td width="150">{|Markierung Eingang|}:</td>
|
||||
<td><input type="text" name="importfeldkennunghaben" id="importfeldkennunghaben" size="15"
|
||||
value="[IMPORTFELDKENNUNGHABEN]"> <i>{|z.B. H oder +|}</i></td>
|
||||
<td width="150">{|Markierung Eingang|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="importfeldkennunghaben" id="importfeldkennunghaben" size="15"
|
||||
value="[IMPORTFELDKENNUNGHABEN]"> <i>{|z.B. H oder +|}</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Markierung Ausgang|}: </td>
|
||||
<td><input type="text" name="importfeldkennungsoll" id="importfeldkennungsoll" size="15"
|
||||
value="[IMPORTFELDKENNUNGSOLL]"> <i>{|z.B. S oder -|}</i></td>
|
||||
<td>
|
||||
{|Markierung Ausgang|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="importfeldkennungsoll" id="importfeldkennungsoll" size="15"
|
||||
value="[IMPORTFELDKENNUNGSOLL]"> <i>{|z.B. S oder -|}</i>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -256,37 +381,56 @@
|
||||
<legend>{|Live-Import|}</legend>
|
||||
<table id="liveimport-table">
|
||||
<tr>
|
||||
<td>{|Live-Import aktiv|}:</td>
|
||||
<td><input type="checkbox" name="liveimport_online" id="liveimport_online" value="1"
|
||||
[LIVEIMPORT_ONLINE]></td>
|
||||
<td>
|
||||
{|Live-Import aktiv|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" name="liveimport_online" id="liveimport_online" value="1"
|
||||
[LIVEIMPORT_ONLINE]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Zeitraum|}:</td>
|
||||
<td>
|
||||
{|Zeitraum|}:
|
||||
</td>
|
||||
<td>
|
||||
|
||||
<select name="importperiode_in_hours" id="importperiode_in_hours">
|
||||
[IMPORTPERIODE_IN_HOURS]
|
||||
</select> {|Stunden|}
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
|
||||
{|zu Zeiten|}:
|
||||
|
||||
</td>
|
||||
<td>
|
||||
|
||||
[SCHEDULER]
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
[BEFORELIVEIMPORT]
|
||||
<tr>
|
||||
<td width="150">{|Zugangsdaten|}:</td>
|
||||
<td><textarea rows="5" cols="100" name="liveimport" id="liveimport">[LIVEIMPORT]</textarea></td>
|
||||
<td width="150">{|Zugangsdaten|}:
|
||||
</td>
|
||||
<td>
|
||||
<textarea rows="5" cols="100" name="liveimport" id="liveimport">[LIVEIMPORT]</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
[AFTERLIVEIMPORT]
|
||||
<tr>
|
||||
<td>{|Passwort Tresor|}:</td>
|
||||
<td><input type="button" value="{|Passwort setzen|}"
|
||||
<td>
|
||||
{|Passwort Tresor|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="button" value="{|Passwort setzen|}"
|
||||
id="setpassword"/>
|
||||
<i>{|Der Inhalt des Passwort-Tresors kann in der Datenstruktur der Zugangsdaten über die Variable {PASSWORT} genutzt werden.|}</i>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -316,13 +460,21 @@
|
||||
<legend>{|Prozessstarter|}</legend>
|
||||
<table>
|
||||
<tr>
|
||||
<td>{|Zahlungseingänge automatisch abholen|}:</td>
|
||||
<td><input type="checkbox" name="cronjobaktiv" id="cronjobaktiv" value="1" [CRONJOBAKTIV]></td>
|
||||
<td>
|
||||
{|Zahlungseingänge automatisch abholen|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" name="cronjobaktiv" id="cronjobaktiv" value="1" [CRONJOBAKTIV]>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Zahlungseingänge automatisch verbuchen|}:</td>
|
||||
<td><input type="checkbox" name="cronjobverbuchen" id="cronjobverbuchen" value="1"
|
||||
[CRONJOBVERBUCHEN]></td>
|
||||
<td>
|
||||
{|Zahlungseingänge automatisch verbuchen|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" name="cronjobverbuchen" id="cronjobverbuchen" value="1"
|
||||
[CRONJOBVERBUCHEN]>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
@ -330,6 +482,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-12 col-md-height">
|
||||
@ -338,20 +491,32 @@
|
||||
<legend>{|Startwert für Konto|}</legend>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="150">{|Summieren|}:</td>
|
||||
<td><input type="checkbox" name="saldo_summieren" id="saldo_summieren" value="1" [SALDO_SUMMIEREN]>
|
||||
<td width="150">{|Summieren|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" name="saldo_summieren" id="saldo_summieren" value="1" [SALDO_SUMMIEREN]>
|
||||
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Datum Saldo|}:</td>
|
||||
<td><input type="text" name="saldo_datum" id="saldo_datum" size="40" value="[SALDO_DATUM]"></td>
|
||||
<td width="150">{|Datum Saldo|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="saldo_datum" id="saldo_datum" size="40" value="[SALDO_DATUM]">
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="150">{|Betrag Saldo|}:</td>
|
||||
<td><input type="text" name="saldo_betrag" id="saldo_betrag" size="40" value="[SALDO_BETRAG]"></td>
|
||||
<td width="150">{|Betrag Saldo|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="saldo_betrag" id="saldo_betrag" size="40" value="[SALDO_BETRAG]">
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
@ -359,8 +524,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="save" value="1" />
|
||||
<input type="submit" value="{|Speichern|}" style="float:right"/>
|
||||
<input type="submit" name="submit" value="Speichern" style="float:right"/>
|
||||
</form>
|
||||
</div>
|
||||
<!-- tab view schließen -->
|
||||
@ -372,8 +536,11 @@
|
||||
<input type="hidden" id="e_id" value="[ID]"/>
|
||||
<table width="" cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td width="110"><label for="e_passwort">{|Passwort|}:</label></td>
|
||||
<td><input type="password" id="e_passwort" name="e_passwort" size="40"/></td>
|
||||
<td width="110"><label for="e_passwort">{|Passwort|}:</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="password" id="e_passwort" name="e_passwort" size="40"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
151
www/pages/content/kontoauszuege_edit.tpl
Normal file
151
www/pages/content/kontoauszuege_edit.tpl
Normal file
@ -0,0 +1,151 @@
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1"></a></li>
|
||||
</ul>
|
||||
<!-- Example for multiple tabs
|
||||
<ul hidden">
|
||||
<li><a href="#tabs-1">First Tab</a></li>
|
||||
<li><a href="#tabs-2">Second Tab</a></li>
|
||||
</ul>
|
||||
-->
|
||||
<div id="tabs-1">
|
||||
[MESSAGE]
|
||||
<form action="" method="post">
|
||||
[FORMHANDLEREVENT]
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Kontoauszug Eintrag|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<td>
|
||||
{|Konto|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="konto" id="konto" value="[KONTO]" size="20" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Datum|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="buchung" id="buchung" value="[BUCHUNG]" size="20" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Betrag|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="soll" id="soll" value="[SOLL]" size="20" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Währung|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="waehrung" id="waehrung" value="[WAEHRUNG]" size="20" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Fertig|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="fertig" id="fertig" value="[FERTIG]" size="20" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Datev_abgeschlossen|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="datev_abgeschlossen" id="datev_abgeschlossen" value="[DATEV_ABGESCHLOSSEN]" size="20" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Buchungstext|}:
|
||||
</td>
|
||||
<td>
|
||||
<Textarea type="text" name="buchungstext" id="buchungstext" size="20" disabled>[BUCHUNGSTEXT]</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Bearbeiter|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="bearbeiter" id="bearbeiter" value="[BEARBEITER]" size="20" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Internebemerkung|}:
|
||||
</td>
|
||||
<td>
|
||||
<textarea type="text" name="internebemerkung" id="internebemerkung" size="20">[INTERNEBEMERKUNG]</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Importfehler|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="importfehler" id="importfehler" value="[IMPORTFEHLER]" size="20" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Klaerfall|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="klaerfall" id="klaerfall" value="[KLAERFALL]" size="20" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|Klaergrund|}:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="klaergrund" id="klaergrund" value="[KLAERGRUND]" size="20" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input type="submit" name="submit" value="Speichern" style="float:right"/>
|
||||
</form>
|
||||
</div>
|
||||
<!-- Example for 2nd tab
|
||||
<div id="tabs-2">
|
||||
[MESSAGE]
|
||||
<form action="" method="post">
|
||||
[FORMHANDLEREVENT]
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|...|}</legend>
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
...
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input type="submit" name="submit" value="Speichern" style="float:right"/>
|
||||
</form>
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
|
14
www/pages/content/kontoauszuege_konto_list.tpl
Normal file
14
www/pages/content/kontoauszuege_konto_list.tpl
Normal file
@ -0,0 +1,14 @@
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||
</ul>
|
||||
<div id="tabs-1">
|
||||
<form action="#tabs-1" id="frmauto" name="frmauto" method="post">
|
||||
[MESSAGE]
|
||||
<legend>Kontoauszüge bitte über Importzentrale importieren.</legend>
|
||||
[TAB1]
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
46
www/pages/content/kontoauszuege_list.tpl
Normal file
46
www/pages/content/kontoauszuege_list.tpl
Normal file
@ -0,0 +1,46 @@
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||
</ul>
|
||||
<div id="tabs-1">
|
||||
<form action="#tabs-1" id="frmauto" name="frmauto" method="post">
|
||||
[MESSAGE]
|
||||
<legend>[INFO]</legend>
|
||||
<div class="filter-box filter-usersave">
|
||||
<div class="filter-block filter-inline">
|
||||
<div class="filter-title">{|Filter|}</div>
|
||||
<ul class="filter-list">
|
||||
[STATUSFILTER]
|
||||
<li class="filter-item">
|
||||
<label for="importfehler" class="switch">
|
||||
<input type="checkbox" id="importfehler" />
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
<label for="meinetickets">{|Inkl. Importfehler|}</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
[TAB1]
|
||||
<fieldset>
|
||||
<table>
|
||||
<legend>Stapelverarbeitung</legend>
|
||||
<tr>
|
||||
<td><input type="checkbox" value="1" id="autoalle" /> alle markieren </td>
|
||||
<td><input type="submit" class="btnBlue" name="ausfuehren" value="{|Importfehler|}" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
$('#autoalle').on('change',function(){
|
||||
var wert = $(this).prop('checked');
|
||||
$('#kontoauszuege_list').find('input[type="checkbox"]').prop('checked',wert);
|
||||
$('#kontoauszuege_list').find('input[type="checkbox"]').first().trigger('change');
|
||||
});
|
||||
|
||||
</script>
|
@ -44,7 +44,7 @@
|
||||
</div>
|
||||
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">Zahlungseingang</h2>
|
||||
<h2 class="greyh2">Buchungen</h2>
|
||||
<div style="padding:10px">
|
||||
[ZAHLUNGEN]
|
||||
</div>
|
||||
@ -69,15 +69,12 @@
|
||||
[PDFARCHIV]
|
||||
</div>
|
||||
</div>
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">Deckungsbeitrag</h2>
|
||||
<div style="padding:10px">
|
||||
|
||||
|
||||
<div class="info">Dieses Modul ist erst ab Version Professional verfügbar</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!--
|
||||
<div style="background-color:white">
|
||||
<h2 class="greyh2">Deckungsbeitrag</h2>
|
||||
<div style="padding:10px">
|
||||
<div class="info">Dieses Modul ist erst ab Version Professional verfügbar</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
|
1070
www/pages/fibu_buchungen.php
Normal file
1070
www/pages/fibu_buchungen.php
Normal file
File diff suppressed because it is too large
Load Diff
@ -1043,7 +1043,7 @@ class Firmendaten {
|
||||
'arbeitsnachweis_header','arbeitsnachweis_footer','provisionsgutschrift_header','provisionsgutschrift_footer','proformarechnung_header','proformarechnung_footer','eu_lieferung_vermerk','export_lieferung_vermerk'
|
||||
,'wareneingang_kamera_waage','layout_iconbar','passwort','host','port','mailssl','signatur','email','absendername','bcc1','bcc2','bcc3'
|
||||
,'firmenfarbe','name','strasse','plz','ort','steuernummer','projekt','steuer_positionen_export','tabsnavigationfarbe','tabsnavigationfarbeschrift'
|
||||
,"buchhaltung_berater","buchhaltung_mandant","buchhaltung_wj_beginn","buchhaltung_sachkontenlaenge"
|
||||
,"buchhaltung_berater","buchhaltung_mandant","buchhaltung_wj_beginn","buchhaltung_sachkontenlaenge", "fibu_buchungen_startdatum"
|
||||
);
|
||||
|
||||
if(isset($sql2a)){
|
||||
@ -1379,6 +1379,10 @@ class Firmendaten {
|
||||
}
|
||||
$this->app->YUI->AutoComplete('steuersatz_normal','steuersatz',1);
|
||||
$this->app->YUI->AutoComplete('steuersatz_ermaessigt','steuersatz',1);
|
||||
|
||||
|
||||
$this->app->YUI->DatePicker('fibu_buchungen_startdatum');
|
||||
|
||||
$this->app->Tpl->Parse('PAGE','firmendaten.tpl');
|
||||
}
|
||||
|
||||
@ -1842,6 +1846,11 @@ class Firmendaten {
|
||||
if(!empty($data[0]['taxfromdoctypesettings'])) {
|
||||
$this->app->Tpl->Set('OPTIONTAXFROMDOCTYPESETTINGS', ' selected="selected" ');
|
||||
}
|
||||
|
||||
// Fibu
|
||||
$this->app->Tpl->Set('FIBU_BUCHUNGEN_STARTDATUM', $this->app->erp->ReplaceDatum(false,$data[0]['fibu_buchungen_startdatum'],false));
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -2282,6 +2291,8 @@ class Firmendaten {
|
||||
$data['buchhaltung_wj_beginn'] = ($this->app->Secure->POST["buchhaltung_wj_beginn"]);
|
||||
$data['buchhaltung_sachkontenlaenge'] = ($this->app->Secure->POST["buchhaltung_sachkontenlaenge"]);
|
||||
|
||||
$data['fibu_buchungen_startdatum'] = $this->app->erp->ReplaceDatum(true,$this->app->Secure->POST["fibu_buchungen_startdatum"],false);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
@ -620,6 +620,8 @@ class Gutschrift extends GenGutschrift
|
||||
$tmp3->DisplayNew('PDFARCHIV','Menü','noAction');
|
||||
}
|
||||
|
||||
$this->app->Tpl->Add('ZAHLUNGEN',$this->GutschriftZahlung(true));
|
||||
|
||||
if($parsetarget=='') {
|
||||
$this->app->Tpl->Output('gutschrift_minidetail.tpl');
|
||||
$this->app->ExitXentral();
|
||||
@ -648,6 +650,7 @@ class Gutschrift extends GenGutschrift
|
||||
|
||||
|
||||
/**
|
||||
* Build the html output for minidetail containing the payments
|
||||
* @param bool $return
|
||||
*
|
||||
* @return string
|
||||
@ -656,101 +659,36 @@ class Gutschrift extends GenGutschrift
|
||||
{
|
||||
$id = $this->app->Secure->GetGET('id');
|
||||
|
||||
$gutschriftArr = $this->app->DB->SelectArr(
|
||||
"SELECT DATE_FORMAT(datum,'%d.%m.%Y') as datum, belegnr, soll, waehrung, rechnungid
|
||||
FROM gutschrift WHERE id='$id' LIMIT 1"
|
||||
$zahlungen = $this->app->erp->GetZahlungen($id,'gutschrift');
|
||||
if (!empty($zahlungen)) {
|
||||
$et = new EasyTable($this->app);
|
||||
|
||||
$et->headings = array('Datum','Beleg','Betrag','Währung');
|
||||
|
||||
foreach ($zahlungen as $zahlung) {
|
||||
$row = array(
|
||||
$zahlung['datum'],
|
||||
"<a href=\"index.php?module=".$zahlung['doc_typ']."&action=edit&id=".$zahlung['doc_id']."\">
|
||||
".ucfirst($zahlung['doc_typ'])."
|
||||
".$zahlung['doc_info']."
|
||||
</a>",
|
||||
$zahlung['betrag'],
|
||||
$zahlung['waehrung']
|
||||
);
|
||||
$waehrung = empty($gutschriftArr)?'EUR':$gutschriftArr[0]['waehrung'];
|
||||
if(!$waehrung) {
|
||||
$waehrung = 'EUR';
|
||||
$et->AddRow($row);
|
||||
}
|
||||
|
||||
$rechnungid = empty($gutschriftArr)?0: $gutschriftArr[0]['rechnungid'];
|
||||
|
||||
$auftragid = $rechnungid <= 0?0:$this->app->DB->Select(
|
||||
sprintf(
|
||||
'SELECT `auftragid` FROM `rechnung` WHERE `id` = %d LIMIT 1',
|
||||
$rechnungid
|
||||
)
|
||||
$salden = $this->app->erp->GetSaldenDokument($id,'gutschrift');
|
||||
foreach ($salden as $saldo) {
|
||||
$row = array(
|
||||
'',
|
||||
'<b>Saldo</b>',
|
||||
"<b>".$saldo['betrag']."</b>",
|
||||
"<b>".$saldo['waehrung']."</b>"
|
||||
);
|
||||
$eingang ="<tr><td colspan=\"3\"><b>Zahlungen</b></td></tr>";
|
||||
|
||||
|
||||
$eingang .="<tr><td class=auftrag_cell>".$gutschriftArr[0]['datum']
|
||||
."</td><td class=auftrag_cell>GS ".$gutschriftArr[0]['belegnr']
|
||||
."</td><td class=auftrag_cell align=right>".$this->app->erp->EUR($gutschriftArr[0]['soll'])
|
||||
." $waehrung</td></tr>";
|
||||
|
||||
$eingangArr = $this->app->DB->SelectArr(
|
||||
"SELECT ko.bezeichnung as konto, DATE_FORMAT(ke.datum,'%d.%m.%Y') as datum, k.id as kontoauszuege,
|
||||
ke.betrag as betrag, k.id as zeile,k.waehrung
|
||||
FROM kontoauszuege_zahlungseingang ke
|
||||
LEFT JOIN kontoauszuege k ON ke.kontoauszuege=k.id
|
||||
LEFT JOIN konten ko ON k.konto=ko.id
|
||||
WHERE (ke.objekt='gutschrift' AND ke.parameter='$id')
|
||||
OR (ke.objekt='auftrag' AND ke.parameter='$auftragid' AND ke.parameter>0)
|
||||
OR (ke.objekt='rechnung' AND ke.parameter='$rechnungid' AND ke.parameter>0)"
|
||||
);
|
||||
$ceingangArr = empty($eingangArr)?0:(!empty($eingangArr)?count($eingangArr):0);
|
||||
|
||||
for($i=0;$i<$ceingangArr;$i++) {
|
||||
$waehrung = 'EUR';
|
||||
if($eingangArr[$i]['waehrung']) {
|
||||
$waehrung = $eingangArr[$i]['waehrung'];
|
||||
$et->AddRow($row);
|
||||
}
|
||||
$eingang .="<tr><td class=auftrag_cell>".$eingangArr[$i]['datum']
|
||||
."</td><td class=auftrag_cell>".$eingangArr[$i]['konto']
|
||||
." (<a href=\"index.php?module=zahlungseingang&action=editzeile&id="
|
||||
.$eingangArr[$i]['zeile']."\">zur Buchung</a>)</td><td class=auftrag_cell align=right>"
|
||||
.$this->app->erp->EUR($eingangArr[$i]['betrag'])
|
||||
." $waehrung</td></tr>";
|
||||
}
|
||||
// gutschriften zu dieser rechnung anzeigen
|
||||
/*
|
||||
$gutschriften = $this->app->DB->SelectArr("SELECT belegnr, DATE_FORMAT(datum,'%d.%m.%Y') as datum,soll FROM gutschrift WHERE rechnungid='$id'");
|
||||
|
||||
for($i=0;$i<(!empty($gutschriften)?count($gutschriften):0);$i++)
|
||||
$eingang .="<tr><td class=auftrag_cell>".$gutschriften[$i]['datum']."</td><td class=auftrag_cell>GS ".$gutschriften[$i]['belegnr']."</td><td class=auftrag_cell align=right>".$this->app->erp->EUR($gutschriften[$i]['soll'])." EUR</td></tr>";
|
||||
|
||||
*/
|
||||
|
||||
$ausgang = '';
|
||||
$ausgangArr = $this->app->DB->SelectArr(
|
||||
"SELECT ko.bezeichnung as konto, DATE_FORMAT(ke.datum,'%d.%m.%Y') as datum, ke.betrag as betrag,
|
||||
k.id as zeile,k.waehrung
|
||||
FROM kontoauszuege_zahlungsausgang ke
|
||||
LEFT JOIN kontoauszuege k ON ke.kontoauszuege=k.id
|
||||
LEFT JOIN konten ko ON k.konto=ko.id
|
||||
WHERE (ke.objekt='gutschrift' AND ke.parameter='$id')
|
||||
OR (ke.objekt='rechnung' AND ke.parameter='$rechnungid' AND ke.parameter>0)
|
||||
OR (ke.objekt='auftrag' AND ke.parameter='$auftragid' AND ke.parameter>0)"
|
||||
);
|
||||
$cAusgangArr = empty($ausgangArr)?0:(!empty($ausgangArr)?count($ausgangArr):0);
|
||||
for($i=0;$i<$cAusgangArr;$i++) {
|
||||
$waehrung = 'EUR';
|
||||
if($ausgangArr[$i]['waehrung']) {
|
||||
$waehrung = $ausgangArr[$i]['waehrung'];
|
||||
}
|
||||
$ausgang .="<tr><td class=auftrag_cell>".$ausgangArr[$i]['datum']."</td><td class=auftrag_cell>"
|
||||
.$ausgangArr[$i]['konto']." (<a href=\"index.php?module=zahlungseingang&action=editzeile&id="
|
||||
.$ausgangArr[$i]['zeile']."\">zur Buchung</a>)</td><td class=auftrag_cell align=right>"
|
||||
.$this->app->erp->EUR($ausgangArr[$i]['betrag'])
|
||||
." $waehrung</td></tr>";
|
||||
}
|
||||
|
||||
$saldo = $this->app->erp->EUR($this->app->erp->GutschriftSaldo($id));
|
||||
|
||||
if($saldo < 0) {
|
||||
$saldo = "<b style=\"color:red\">$saldo</b>";
|
||||
}
|
||||
$waehrung = $this->app->DB->Select("SELECT waehrung FROM gutschrift WHERE id = '$id' LIMIT 1");
|
||||
if(!$waehrung) {
|
||||
$waehrung = 'EUR';
|
||||
}
|
||||
$ausgang .="<tr><td class=auftrag_cell></td><td class=auftrag_cell align=right>Saldo</td><td class=auftrag_cell align=right>$saldo $waehrung</td></tr>";
|
||||
|
||||
if($return) {
|
||||
return "<table width=100% border=0 class=auftrag_cell cellpadding=0 cellspacing=0>".$eingang." ".$ausgang."</table>";
|
||||
return($et->DisplayNew('return',""));
|
||||
}
|
||||
}
|
||||
|
||||
@ -774,17 +712,32 @@ class Gutschrift extends GenGutschrift
|
||||
$showDefault = true;
|
||||
$this->app->Tpl->Set('TABTEXT','Freigabe');
|
||||
$this->app->erp->GutschriftNeuberechnen($id);
|
||||
|
||||
$this->app->erp->CheckVertrieb($id,'gutschrift');
|
||||
$this->app->erp->CheckBearbeiter($id,'gutschrift');
|
||||
$doctype = 'gutschrift';
|
||||
|
||||
$sql = "SELECT belegnr, rechnungid FROM gutschrift WHERE id='$id' LIMIT 1";
|
||||
$result = $this->app->DB->SelectArr($sql);
|
||||
$belegnr = $result[0]['belegnr'];
|
||||
$rechnungid = $result[0]['rechnungid'];
|
||||
$name = $this->app->DB->Select("SELECT a.name FROM gutschrift b LEFT JOIN adresse a ON a.id=b.adresse WHERE b.id='$id' LIMIT 1");
|
||||
$summe = $this->app->DB->Select("SELECT soll FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||
$waehrung = $this->app->DB->Select("SELECT waehrung FROM gutschrift_position WHERE gutschrift='$id' LIMIT 1");
|
||||
|
||||
if(empty($intern)){
|
||||
$this->app->erp->RunHook('beleg_freigabe', 4, $doctype, $id, $allowedFrm, $showDefault);
|
||||
}
|
||||
if($allowedFrm && $freigabe==$id) {
|
||||
$belegnr = $this->app->DB->Select("SELECT belegnr FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||
|
||||
if($belegnr=='') {
|
||||
$this->app->erp->BelegFreigabe('gutschrift',$id);
|
||||
|
||||
// Create fibu_buchung
|
||||
$gegen_rechnung = $this->app->Secure->GetGET('gegen_rechnung');
|
||||
if ($gegen_rechnung && $rechnungid > 0) {
|
||||
$this->app->erp->fibu_buchungen_buchen('gutschrift', $id, 'rechnung', $rechnungid, -$summe, $waehrung, date("Y-m-d"), 'Verrechnung');
|
||||
}
|
||||
|
||||
if($intern) {
|
||||
return 1;
|
||||
}
|
||||
@ -798,14 +751,16 @@ class Gutschrift extends GenGutschrift
|
||||
$this->app->Location->execute("index.php?module=gutschrift&action=edit&id=$id&msg=$msg");
|
||||
}
|
||||
if($showDefault){
|
||||
$name = $this->app->DB->Select("SELECT a.name FROM gutschrift b LEFT JOIN adresse a ON a.id=b.adresse WHERE b.id='$id' LIMIT 1");
|
||||
$summe = $this->app->DB->Select("SELECT soll FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||
$waehrung = $this->app->DB->Select("SELECT waehrung FROM gutschrift_position
|
||||
WHERE gutschrift='$id' LIMIT 1");
|
||||
|
||||
if ($rechnungid > 0) {
|
||||
$input_html = "<input type=\"button\" value=\"Freigabe ohne Rechnung\" onclick=\"window.location.href='index.php?module=gutschrift&action=freigabe&id=$id&freigabe=$id&gegen_rechnung=0'\">"
|
||||
."<input type=\"button\" value=\"Freigabe gegen Rechnung\" onclick=\"window.location.href='index.php?module=gutschrift&action=freigabe&id=$id&freigabe=$id&gegen_rechnung=1'\">";
|
||||
} else {
|
||||
$input_html = "<input type=\"button\" value=\"Freigabe Rechnung\" onclick=\"window.location.href='index.php?module=gutschrift&action=freigabe&id=$id&freigabe=$id'\">";
|
||||
}
|
||||
$this->app->Tpl->Set('TAB1', "<div class=\"info\">Soll die Gutschrift an <b>$name</b> im Wert von <b>$summe $waehrung</b>
|
||||
jetzt freigegeben werden? <input type=\"button\" value=\"Freigabe\" onclick=\"window.location.href='index.php?module=gutschrift&action=freigabe&id=$id&freigabe=$id'\">
|
||||
</div>");
|
||||
jetzt freigegeben werden? ".
|
||||
$input_html.
|
||||
"</div>");
|
||||
}
|
||||
$this->GutschriftMenu();
|
||||
$this->app->Tpl->Parse('PAGE','tabview.tpl');
|
||||
@ -1176,7 +1131,6 @@ class Gutschrift extends GenGutschrift
|
||||
$this->app->erp->CheckBearbeiter($id,"gutschrift");
|
||||
$this->app->erp->CheckBuchhaltung($id,"gutschrift");
|
||||
|
||||
|
||||
$this->app->erp->GutschriftNeuberechnen($id);
|
||||
|
||||
$this->app->erp->DisableVerband();
|
||||
@ -1185,14 +1139,11 @@ class Gutschrift extends GenGutschrift
|
||||
$this->app->Tpl->Set('ICONMENU',$this->GutschriftIconMenu($id));
|
||||
$this->app->Tpl->Set('ICONMENU2',$this->GutschriftIconMenu($id,2));
|
||||
|
||||
|
||||
$belegnr = $this->app->DB->Select("SELECT belegnr FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||
$nummer = $this->app->DB->Select("SELECT belegnr FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||
$kundennummer = $this->app->DB->Select("SELECT kundennummer FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||
$adresse = $this->app->DB->Select("SELECT adresse FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||
|
||||
|
||||
|
||||
$status= $this->app->DB->Select("SELECT status FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||
$schreibschutz= $this->app->DB->Select("SELECT schreibschutz FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||
if($status !== 'angelegt' && $status !== 'angelegta' && $status !== 'a')
|
||||
@ -1241,7 +1192,12 @@ class Gutschrift extends GenGutschrift
|
||||
if($zahlungsweise=="einzugsermaechtigung" || $zahlungsweise=="lastschrift") $this->app->Tpl->Set('EINZUGSERMAECHTIGUNG',"");
|
||||
if($zahlungsweise=="vorkasse" || $zahlungsweise=="kreditkarte" || $zahlungsweise=="paypal" || $zahlungsweise=="bar") $this->app->Tpl->Set('VORKASSE',"");
|
||||
|
||||
$zahlungsinfo = $this->app->DB->SelectArr("SELECT zahlungsstatus, ".$this->app->erp->FormatMenge('soll*(-1)',2)." as betrag FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||
$this->app->Tpl->Set('ZAHLUNGSSTATUS_DB',$zahlungsinfo[0]['zahlungsstatus']);
|
||||
$this->app->Tpl->Set('SOLL',$zahlungsinfo[0]['betrag']);
|
||||
|
||||
$ist = $this->app->erp->EUR($this->app->erp->GetSaldoDokument($id,'gutschrift')['betrag']);
|
||||
$this->app->Tpl->Set('ISTDB',$ist);
|
||||
|
||||
if($schreibschutz=="1" && $this->app->erp->RechteVorhanden("gutschrift","schreibschutz"))
|
||||
{
|
||||
@ -1249,11 +1205,24 @@ class Gutschrift extends GenGutschrift
|
||||
// $this->app->erp->CommonReadonly();
|
||||
}
|
||||
|
||||
if($schreibschutz=="1")
|
||||
if($schreibschutz=="1") {
|
||||
$this->app->erp->CommonReadonly();
|
||||
}
|
||||
|
||||
if($schreibschutz=='1' && $this->app->erp->RechteVorhanden('gutschrift','edit'))
|
||||
{
|
||||
$this->app->erp->RemoveReadonly('zahlungsstatus');
|
||||
|
||||
if ($aktion = $this->app->Secure->GetPOST('speichern') == 'Speichern') {
|
||||
$zahlungsstatus = $this->app->Secure->GetPOST('zahlungsstatus');
|
||||
$this->app->DB->Update("UPDATE gutschrift SET zahlungsstatus='".$zahlungsstatus."' WHERE id='$id' LIMIT 1");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$rechnungid = $this->app->DB->Select("SELECT rechnungid FROM gutschrift WHERE id='$id' LIMIT 1");
|
||||
$rechnungid = $this->app->DB->Select("SELECT id FROM rechnung WHERE id='$rechnungid' AND belegnr!='' LIMIT 1");
|
||||
|
||||
$alle_gutschriften = $this->app->DB->SelectArr("SELECT id,belegnr FROM gutschrift WHERE rechnungid='$rechnungid' AND rechnungid>0");
|
||||
|
||||
if (!is_null($alle_gutschriften)) {
|
||||
@ -1445,6 +1414,8 @@ class Gutschrift extends GenGutschrift
|
||||
{
|
||||
$this->app->Tpl->Set('UEBERSCHRIFT', 'Gutschriften');
|
||||
|
||||
$this->app->DB->Update("UPDATE gutschrift SET zahlungsstatus='offen' WHERE zahlungsstatus=''");
|
||||
|
||||
if($this->app->Secure->GetPOST('ausfuehren') && $this->app->erp->RechteVorhanden('gutschrift', 'edit')) {
|
||||
$drucker = $this->app->Secure->GetPOST('seldrucker');
|
||||
$aktion = $this->app->Secure->GetPOST('sel_aktion');
|
||||
@ -1463,7 +1434,13 @@ class Gutschrift extends GenGutschrift
|
||||
$ids = array_unique($ids);
|
||||
|
||||
switch($aktion) {
|
||||
case 'erledigtam':
|
||||
case 'bezahlt':
|
||||
$this->app->DB->Update("UPDATE gutschrift SET zahlungsstatus='bezahlt' WHERE id IN (".implode(', ',$ids).')');
|
||||
break;
|
||||
case 'offen':
|
||||
$this->app->DB->Update("UPDATE gutschrift SET zahlungsstatus='offen' WHERE id IN (".implode(', ',$ids).')');
|
||||
break;
|
||||
/* case 'erledigtam':
|
||||
if(!empty($ids)){
|
||||
$this->app->DB->Update(
|
||||
sprintf(
|
||||
@ -1488,7 +1465,7 @@ class Gutschrift extends GenGutschrift
|
||||
)
|
||||
);
|
||||
}
|
||||
break;
|
||||
break;*/
|
||||
case 'mail':
|
||||
$returnOrders = empty($ids)?[]:$this->app->DB->SelectArr(
|
||||
sprintf(
|
||||
@ -1682,6 +1659,28 @@ class Gutschrift extends GenGutschrift
|
||||
}
|
||||
}
|
||||
|
||||
// refresh all open items
|
||||
$openids = $this->app->DB->SelectArr("SELECT id, waehrung from gutschrift WHERE zahlungsstatus != 'bezahlt'");
|
||||
|
||||
foreach ($openids as $openid) {
|
||||
$saldo = $this->app->erp->GetSaldoDokument($openid['id'],'gutschrift');
|
||||
|
||||
if (!empty($saldo)) {
|
||||
if ($saldo['waehrung'] == $openid['waehrung']) {
|
||||
$sql = "UPDATE
|
||||
gutschrift
|
||||
SET
|
||||
ist = ".$saldo['betrag']."+soll,
|
||||
zahlungsstatus = IF(".$saldo['betrag']." = 0,'bezahlt','offen')
|
||||
WHERE id=".$openid['id'];
|
||||
$this->app->DB->Update($sql);
|
||||
}
|
||||
}
|
||||
else {
|
||||
$this->app->DB->Update("UPDATE gutschrift SET ist = null WHERE id=".$openid['id']);
|
||||
}
|
||||
}
|
||||
|
||||
$backurl = $this->app->Secure->GetGET('backurl');
|
||||
$backurl = $this->app->erp->base64_url_decode($backurl);
|
||||
|
||||
@ -1770,6 +1769,10 @@ class Gutschrift extends GenGutschrift
|
||||
$this->app->YUI->TableSearch('TAB1','gutschriften');
|
||||
$this->app->YUI->TableSearch('TAB3','gutschrifteninbearbeitung');
|
||||
|
||||
if($this->app->erp->RechteVorhanden('rechnung', 'manuellbezahltmarkiert')){
|
||||
$this->app->Tpl->Set('ALSBEZAHLTMARKIEREN', '<option value="bezahlt">{|als bezahlt markieren|}</option>');
|
||||
}
|
||||
|
||||
$this->app->Tpl->Set(
|
||||
'SELDRUCKER',
|
||||
$this->app->erp->GetSelectDrucker($this->app->User->GetParameter('rechnung_list_drucker'))
|
||||
|
@ -1030,7 +1030,7 @@ class Importvorlage extends GenImportvorlage {
|
||||
|
||||
if (!move_uploaded_file($_FILES['userfile']['tmp_name'], $stueckliste_csv)) {
|
||||
//$importfilename = $_FILES['userfile']['name'];
|
||||
$msg = $this->app->erp->base64_url_encode("<div class=\"error\">Die Datei konnte nicht geöffnet werden. Eventuell ist die Datei zu groß oder die Schreibrechte stimmen nicht!</div> ");
|
||||
$msg = $this->app->erp->base64_url_encode("<div class=\"error\">Die Datei '".$stueckliste_csv."' konnte nicht geöffnet werden. Eventuell ist die Datei zu groß oder die Schreibrechte stimmen nicht!</div> ");
|
||||
$this->app->Location->execute("index.php?module=importvorlage&action=import&id=$id&msg=$msg");
|
||||
}
|
||||
|
||||
@ -1419,7 +1419,7 @@ class Importvorlage extends GenImportvorlage {
|
||||
$zeitstempel = time();
|
||||
|
||||
$number_of_rows = empty($tmp['cmd'])?0:count($tmp['cmd']);
|
||||
$number_of_rows = $number_of_rows + 2;
|
||||
// $number_of_rows = $number_of_rows + 2; // ?!?!
|
||||
|
||||
if($isCronjob) {
|
||||
$this->app->DB->Update(
|
||||
@ -5079,6 +5079,92 @@ class Importvorlage extends GenImportvorlage {
|
||||
}
|
||||
|
||||
break;
|
||||
case 'kontoauszug':
|
||||
|
||||
$allowed_fields = array('konto','buchung','betrag','betrag2','waehrung','buchungstext','buchungstext2','buchungstext3','buchungstext4');
|
||||
|
||||
$error = false;
|
||||
|
||||
// Create a row dataset (without checked and cmd)
|
||||
$update_sql = "";
|
||||
$row = array();
|
||||
$comma = "";
|
||||
foreach ($tmp as $key => $value) {
|
||||
if ($key != 'cmd' && $key != 'checked') {
|
||||
if (in_array($key,$allowed_fields)) {
|
||||
$row[$key] = $value[$i];
|
||||
$comma = ", ";
|
||||
} else {
|
||||
$msg .= "Feld nicht korrekt: ".$key.".<br>";
|
||||
$error = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$error) {
|
||||
// Collect texts
|
||||
$buchungstext = "";
|
||||
$comma = "";
|
||||
foreach ($row as $key => $value) {
|
||||
if (str_starts_with($key,'buchungstext')) {
|
||||
if (!empty($value)) {
|
||||
$buchungstext .= $comma.$value;
|
||||
$comma = ", ";
|
||||
}
|
||||
unset($row[$key]);
|
||||
}
|
||||
}
|
||||
$row['buchungstext'] = $buchungstext;
|
||||
|
||||
$row['soll'] = $row['betrag'];
|
||||
unset($row['betrag']);
|
||||
|
||||
if (empty($row['soll'])) {
|
||||
$row['soll'] = $row['betrag2'];
|
||||
}
|
||||
unset($row['betrag2']);
|
||||
|
||||
$row['soll'] = $this->app->erp->ReplaceBetrag(true,$row['soll']);
|
||||
|
||||
$row['buchung'] = $this->app->erp->ReplaceDatum(true,$row['buchung'],false);
|
||||
|
||||
// Calculate hash
|
||||
$hash_fields = array('buchung','soll','waehrung','buchungstext');
|
||||
$hash_text = "";
|
||||
|
||||
foreach($hash_fields as $hash_field) {
|
||||
$hash_text .= $row[$hash_field];
|
||||
}
|
||||
$row['pruefsumme'] = md5($hash_text);
|
||||
|
||||
$sql = "SELECT id FROM konten WHERE kurzbezeichnung ='".$row['konto']."' LIMIT 1";
|
||||
$kontoid = $this->app->DB->SelectArr($sql);
|
||||
|
||||
if (!empty($kontoid)) {
|
||||
|
||||
$row['konto'] = $kontoid[0]['id'];
|
||||
$row['importdatum'] = date("Y-m-d H:i:s");
|
||||
|
||||
$sql = "SELECT pruefsumme FROM kontoauszuege WHERE pruefsumme='".$row['pruefsumme']."' AND konto ='".$row['konto']."' AND importfehler IS NULL";
|
||||
$result = $this->app->DB->SelectArr($sql);
|
||||
|
||||
if (!empty($result)) {
|
||||
$msg .= "Doppelter Eintrag (nicht importiert): ".$row['buchungstext']."<br>";
|
||||
} else {
|
||||
$sql = "INSERT INTO kontoauszuege (".
|
||||
implode(", ",array_keys($row)).
|
||||
") VALUES ('".
|
||||
implode("', '",array_values($row)).
|
||||
"')";
|
||||
|
||||
$result = $this->app->DB->Update($sql);
|
||||
}
|
||||
} else {
|
||||
$msg .= "Konto nicht gefunden: ".$row['konto'].".<br>";
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
// HERE END OF PROCESSING THE ROWS switch($ziel);
|
||||
@ -5107,19 +5193,21 @@ class Importvorlage extends GenImportvorlage {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} // Loop
|
||||
if($return) {
|
||||
if($returnids) {
|
||||
return $ids;
|
||||
}
|
||||
return $number_of_rows;
|
||||
}
|
||||
if($ziel==='zeiterfassung' || $ziel==='wiedervorlage' || $ziel==='notizen') {
|
||||
|
||||
if (empty($msg)) {
|
||||
$msg=$this->app->erp->base64_url_encode("<div class=\"info\">Import durchgeführt.</div>");
|
||||
$this->app->Location->execute("index.php?module=importvorlage&action=import&id=$id&msg=$msg");
|
||||
} else {
|
||||
$msg=$this->app->erp->base64_url_encode("<div class=\"error\">".$msg."</div>");
|
||||
$this->app->Location->execute("index.php?module=importvorlage&action=import&id=$id&msg=$msg");
|
||||
}
|
||||
$msg=$this->app->erp->base64_url_encode("<div class=\"info\">Import durchgeführt.</div>");
|
||||
$this->app->Location->execute("index.php?module=importvorlage&action=import&id=$id&msg=$msg");
|
||||
}
|
||||
|
||||
/**
|
||||
|
349
www/pages/konten.php
Normal file
349
www/pages/konten.php
Normal file
@ -0,0 +1,349 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* Copyright (c) 2022 OpenXE project
|
||||
*/
|
||||
|
||||
use Xentral\Components\Database\Exception\QueryFailureException;
|
||||
|
||||
class Konten {
|
||||
|
||||
function __construct($app, $intern = false) {
|
||||
$this->app = $app;
|
||||
if ($intern)
|
||||
return;
|
||||
|
||||
$this->app->ActionHandlerInit($this);
|
||||
$this->app->ActionHandler("list", "konten_list");
|
||||
$this->app->ActionHandler("create", "konten_edit"); // This automatically adds a "New" button
|
||||
$this->app->ActionHandler("edit", "konten_edit");
|
||||
$this->app->ActionHandler("delete", "konten_delete");
|
||||
$this->app->DefaultActionHandler("list");
|
||||
$this->app->ActionHandlerListen($app);
|
||||
}
|
||||
|
||||
public function Install() {
|
||||
/* Fill out manually later */
|
||||
}
|
||||
|
||||
static function TableSearch(&$app, $name, $erlaubtevars) {
|
||||
switch ($name) {
|
||||
case "konten_list":
|
||||
$allowed['konten_list'] = array('list');
|
||||
$heading = array('','','Bezeichnung', 'Kurzbezeichnung', 'Typ', 'Projekt', 'Aktiv','Menü');
|
||||
$width = array('1%','1%','10%'); // Fill out manually later
|
||||
|
||||
// columns that are aligned right (numbers etc)
|
||||
// $alignright = array(4,5,6,7,8);
|
||||
|
||||
$findcols = array('k.id','k.id','k.bezeichnung', 'k.kurzbezeichnung', 'k.type', 'p.abkuerzung', ' k.aktiv','k.id');
|
||||
$searchsql = array('k.bezeichnung', 'k.kurzbezeichnung', 'k.datevkonto', 'k.blz', 'k.konto', 'k.swift', 'k.iban', 'k.inhaber', 'k.firma','p.abkuerzung');
|
||||
|
||||
$defaultorder = 1;
|
||||
$defaultorderdesc = 0;
|
||||
|
||||
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',k.id,'\" />') AS `auswahl`";
|
||||
|
||||
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap>" . "<a href=\"index.php?module=konten&action=edit&id=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a> <a href=\"#\" onclick=DeleteDialog(\"index.php?module=konten&action=delete&id=%value%\");>" . "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" . "</td></tr></table>";
|
||||
|
||||
$sql = "SELECT SQL_CALC_FOUND_ROWS
|
||||
k.id,
|
||||
$dropnbox,
|
||||
k.bezeichnung,
|
||||
k.kurzbezeichnung,
|
||||
k.type,
|
||||
p.abkuerzung,
|
||||
k.aktiv,
|
||||
k.id
|
||||
FROM
|
||||
konten k
|
||||
LEFT JOIN
|
||||
projekt p
|
||||
ON
|
||||
p.id = k.projekt ";
|
||||
|
||||
$where = " k.aktiv = 1 ";
|
||||
|
||||
// Toggle filters
|
||||
$app->Tpl->Add('JQUERYREADY', "$('#archiv').click( function() { fnFilterColumn1( 0 ); } );");
|
||||
|
||||
for ($r = 1;$r <= 1;$r++) {
|
||||
$app->Tpl->Add('JAVASCRIPT', '
|
||||
function fnFilterColumn' . $r . ' ( i )
|
||||
{
|
||||
if(oMoreData' . $r . $name . '==1)
|
||||
oMoreData' . $r . $name . ' = 0;
|
||||
else
|
||||
oMoreData' . $r . $name . ' = 1;
|
||||
|
||||
$(\'#' . $name . '\').dataTable().fnFilter(
|
||||
\'\',
|
||||
i,
|
||||
0,0
|
||||
);
|
||||
}
|
||||
');
|
||||
}
|
||||
|
||||
|
||||
$more_data1 = $app->Secure->GetGET("more_data1");
|
||||
if ($more_data1 == 1) {
|
||||
$where .= " OR k.aktiv <> 1";
|
||||
} else {
|
||||
}
|
||||
|
||||
|
||||
$count = "SELECT count(DISTINCT id) FROM konten k WHERE $where";
|
||||
// $groupby = "";
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
$erg = false;
|
||||
|
||||
foreach ($erlaubtevars as $k => $v) {
|
||||
if (isset($$v)) {
|
||||
$erg[$v] = $$v;
|
||||
}
|
||||
}
|
||||
return $erg;
|
||||
}
|
||||
|
||||
function konten_list() {
|
||||
$this->app->erp->MenuEintrag("index.php?module=konten&action=list", "Übersicht");
|
||||
$this->app->erp->MenuEintrag("index.php?module=konten&action=create", "Neu anlegen");
|
||||
|
||||
$this->app->erp->MenuEintrag("index.php", "Zurück");
|
||||
|
||||
$this->app->YUI->TableSearch('TAB1', 'konten_list', "show", "", "", basename(__FILE__), __CLASS__);
|
||||
$this->app->Tpl->Parse('PAGE', "konten_list.tpl");
|
||||
}
|
||||
|
||||
public function konten_delete() {
|
||||
$id = (int) $this->app->Secure->GetGET('id');
|
||||
|
||||
$this->app->DB->Delete("UPDATE `konten` SET `aktiv` = 0 WHERE `id` = '{$id}'");
|
||||
$this->app->Tpl->Set('MESSAGE', "<div class=\"info\">Der Eintrag wurde deaktiviert.</div>");
|
||||
|
||||
$this->konten_list();
|
||||
}
|
||||
|
||||
/*
|
||||
* Edit konten item
|
||||
* If id is empty, create a new one
|
||||
*/
|
||||
|
||||
function konten_edit() {
|
||||
$id = $this->app->Secure->GetGET('id');
|
||||
|
||||
// Check if other users are editing this id
|
||||
if($this->app->erp->DisableModul('artikel',$id))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$this->app->Tpl->Set('ID', $id);
|
||||
|
||||
$this->app->erp->MenuEintrag("index.php?module=konten&action=edit&id=$id", "Details");
|
||||
$this->app->erp->MenuEintrag("index.php?module=konten&action=list", "Zurück zur Übersicht");
|
||||
$id = $this->app->Secure->GetGET('id');
|
||||
$input = $this->GetInput();
|
||||
$submit = $this->app->Secure->GetPOST('submit');
|
||||
|
||||
if (empty($id)) {
|
||||
// New item
|
||||
$id = 'NULL';
|
||||
}
|
||||
|
||||
if ($submit != '')
|
||||
{
|
||||
|
||||
// Write to database
|
||||
|
||||
// Add checks here
|
||||
$input['projekt'] = $this->app->erp->ReplaceProjekt(true,$input['projekt'],true);
|
||||
|
||||
$columns = "id, ";
|
||||
$values = "$id, ";
|
||||
$update = "";
|
||||
|
||||
$fix = "";
|
||||
|
||||
foreach ($input as $key => $value) {
|
||||
$columns = $columns.$fix.$key;
|
||||
$values = $values.$fix."'".$value."'";
|
||||
$update = $update.$fix.$key." = '$value'";
|
||||
|
||||
$fix = ", ";
|
||||
}
|
||||
|
||||
// echo($columns."<br>");
|
||||
// echo($values."<br>");
|
||||
// echo($update."<br>");
|
||||
|
||||
$sql = "INSERT INTO konten (".$columns.") VALUES (".$values.") ON DUPLICATE KEY UPDATE ".$update;
|
||||
|
||||
// echo($sql);
|
||||
|
||||
$this->app->DB->Update($sql);
|
||||
|
||||
if ($id == 'NULL') {
|
||||
$msg = $this->app->erp->base64_url_encode("<div class=\"success\">Das Element wurde erfolgreich angelegt.</div>");
|
||||
header("Location: index.php?module=konten&action=list&msg=$msg");
|
||||
} else {
|
||||
$this->app->Tpl->Set('MESSAGE', "<div class=\"success\">Die Einstellungen wurden erfolgreich übernommen.</div>");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Load values again from database
|
||||
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',k.id,'\" />') AS `auswahl`";
|
||||
$result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS k.id, $dropnbox, k.bezeichnung, k.kurzbezeichnung, k.type, k.erstezeile, k.datevkonto, k.blz, k.konto, k.swift, k.iban, k.lastschrift, k.hbci, k.hbcikennung, k.inhaber, k.aktiv, k.keineemail, k.firma, k.schreibbar, k.importletztenzeilenignorieren, k.liveimport, k.liveimport_passwort, k.liveimport_online, k.importtrennzeichen, k.codierung, k.importerstezeilenummer, k.importdatenmaskierung, k.importnullbytes, k.glaeubiger, k.geloescht, k.projekt, k.saldo_summieren, k.saldo_betrag, k.saldo_datum, k.importfelddatum, k.importfelddatumformat, k.importfelddatumformatausgabe, k.importfeldbetrag, k.importfeldbetragformat, k.importfeldbuchungstext, k.importfeldbuchungstextformat, k.importfeldwaehrung, k.importfeldwaehrungformat, k.importfeldhabensollkennung, k.importfeldkennunghaben, k.importfeldkennungsoll, k.importextrahabensoll, k.importfeldhaben, k.importfeldsoll, k.cronjobaktiv, k.cronjobverbuchen, k.last_import, k.importperiode_in_hours, k.id FROM konten k"." WHERE id=$id");
|
||||
|
||||
foreach ($result[0] as $key => $value) {
|
||||
$this->app->Tpl->Set(strtoupper($key), $value);
|
||||
}
|
||||
|
||||
/*
|
||||
* Add displayed items later
|
||||
*
|
||||
|
||||
$this->app->Tpl->Add('KURZUEBERSCHRIFT2', $email);
|
||||
$this->app->Tpl->Add('EMAIL', $email);
|
||||
$this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
|
||||
*/
|
||||
|
||||
$this->app->YUI->AutoComplete('projekt','projektname',1);
|
||||
$this->app->Tpl->Set('PROJEKT',$this->app->erp->ReplaceProjekt(false,$result[0]['projekt'],false));
|
||||
|
||||
$this->app->Tpl->Set('AKTIV',$result[0]['aktiv']==1?'checked':'');
|
||||
$this->app->Tpl->Set('KEINEEMAIL',$result[0]['keineemail']==1?'checked':'');
|
||||
$this->app->Tpl->Set('SCHREIBBAR',$result[0]['schreibbar']==1?'checked':'');
|
||||
$this->app->Tpl->Set('LASTSCHRIFT',$result[0]['lastschrift']==1?'checked':'');
|
||||
$this->app->Tpl->Set('SALDO_SUMMIEREN',$result[0]['saldo_summieren']==1?'checked':'');
|
||||
|
||||
$this->app->Tpl->Parse('PAGE', "konten_edit.tpl");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all paramters from html form and save into $input
|
||||
*/
|
||||
public function GetInput(): array {
|
||||
$input = array();
|
||||
//$input['EMAIL'] = $this->app->Secure->GetPOST('email');
|
||||
|
||||
$input['bezeichnung'] = $this->app->Secure->GetPOST('bezeichnung');
|
||||
$input['kurzbezeichnung'] = $this->app->Secure->GetPOST('kurzbezeichnung');
|
||||
$input['type'] = $this->app->Secure->GetPOST('type');
|
||||
$input['erstezeile'] = $this->app->Secure->GetPOST('erstezeile');
|
||||
$input['datevkonto'] = $this->app->Secure->GetPOST('datevkonto');
|
||||
$input['blz'] = $this->app->Secure->GetPOST('blz');
|
||||
$input['konto'] = $this->app->Secure->GetPOST('konto');
|
||||
$input['swift'] = $this->app->Secure->GetPOST('swift');
|
||||
$input['iban'] = $this->app->Secure->GetPOST('iban');
|
||||
$input['lastschrift'] = $this->app->Secure->GetPOST('lastschrift');
|
||||
$input['hbci'] = $this->app->Secure->GetPOST('hbci');
|
||||
$input['hbcikennung'] = $this->app->Secure->GetPOST('hbcikennung');
|
||||
$input['inhaber'] = $this->app->Secure->GetPOST('inhaber');
|
||||
$input['aktiv'] = $this->app->Secure->GetPOST('aktiv');
|
||||
$input['keineemail'] = $this->app->Secure->GetPOST('keineemail');
|
||||
$input['firma'] = $this->app->Secure->GetPOST('firma');
|
||||
$input['schreibbar'] = $this->app->Secure->GetPOST('schreibbar');
|
||||
$input['importletztenzeilenignorieren'] = $this->app->Secure->GetPOST('importletztenzeilenignorieren');
|
||||
$input['liveimport'] = $this->app->Secure->GetPOST('liveimport');
|
||||
$input['liveimport_passwort'] = $this->app->Secure->GetPOST('liveimport_passwort');
|
||||
$input['liveimport_online'] = $this->app->Secure->GetPOST('liveimport_online');
|
||||
$input['importtrennzeichen'] = $this->app->Secure->GetPOST('importtrennzeichen');
|
||||
$input['codierung'] = $this->app->Secure->GetPOST('codierung');
|
||||
$input['importerstezeilenummer'] = $this->app->Secure->GetPOST('importerstezeilenummer');
|
||||
$input['importdatenmaskierung'] = $this->app->Secure->GetPOST('importdatenmaskierung');
|
||||
$input['importnullbytes'] = $this->app->Secure->GetPOST('importnullbytes');
|
||||
$input['glaeubiger'] = $this->app->Secure->GetPOST('glaeubiger');
|
||||
$input['geloescht'] = $this->app->Secure->GetPOST('geloescht');
|
||||
$input['projekt'] = $this->app->Secure->GetPOST('projekt');
|
||||
$input['saldo_summieren'] = $this->app->Secure->GetPOST('saldo_summieren');
|
||||
$input['saldo_betrag'] = $this->app->Secure->GetPOST('saldo_betrag');
|
||||
$input['saldo_datum'] = $this->app->Secure->GetPOST('saldo_datum');
|
||||
$input['importfelddatum'] = $this->app->Secure->GetPOST('importfelddatum');
|
||||
$input['importfelddatumformat'] = $this->app->Secure->GetPOST('importfelddatumformat');
|
||||
$input['importfelddatumformatausgabe'] = $this->app->Secure->GetPOST('importfelddatumformatausgabe');
|
||||
$input['importfeldbetrag'] = $this->app->Secure->GetPOST('importfeldbetrag');
|
||||
$input['importfeldbetragformat'] = $this->app->Secure->GetPOST('importfeldbetragformat');
|
||||
$input['importfeldbuchungstext'] = $this->app->Secure->GetPOST('importfeldbuchungstext');
|
||||
$input['importfeldbuchungstextformat'] = $this->app->Secure->GetPOST('importfeldbuchungstextformat');
|
||||
$input['importfeldwaehrung'] = $this->app->Secure->GetPOST('importfeldwaehrung');
|
||||
$input['importfeldwaehrungformat'] = $this->app->Secure->GetPOST('importfeldwaehrungformat');
|
||||
$input['importfeldhabensollkennung'] = $this->app->Secure->GetPOST('importfeldhabensollkennung');
|
||||
$input['importfeldkennunghaben'] = $this->app->Secure->GetPOST('importfeldkennunghaben');
|
||||
$input['importfeldkennungsoll'] = $this->app->Secure->GetPOST('importfeldkennungsoll');
|
||||
$input['importextrahabensoll'] = $this->app->Secure->GetPOST('importextrahabensoll');
|
||||
$input['importfeldhaben'] = $this->app->Secure->GetPOST('importfeldhaben');
|
||||
$input['importfeldsoll'] = $this->app->Secure->GetPOST('importfeldsoll');
|
||||
$input['cronjobaktiv'] = $this->app->Secure->GetPOST('cronjobaktiv');
|
||||
$input['cronjobverbuchen'] = $this->app->Secure->GetPOST('cronjobverbuchen');
|
||||
$input['last_import'] = $this->app->Secure->GetPOST('last_import');
|
||||
$input['importperiode_in_hours'] = $this->app->Secure->GetPOST('importperiode_in_hours');
|
||||
return $input;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set all fields in the page corresponding to $input
|
||||
*/
|
||||
function SetInput($input) {
|
||||
// $this->app->Tpl->Set('EMAIL', $input['email']);
|
||||
|
||||
$this->app->Tpl->Set('BEZEICHNUNG', $input['bezeichnung']);
|
||||
$this->app->Tpl->Set('KURZBEZEICHNUNG', $input['kurzbezeichnung']);
|
||||
$this->app->Tpl->Set('TYPE', $input['type']);
|
||||
$this->app->Tpl->Set('ERSTEZEILE', $input['erstezeile']);
|
||||
$this->app->Tpl->Set('DATEVKONTO', $input['datevkonto']);
|
||||
$this->app->Tpl->Set('BLZ', $input['blz']);
|
||||
$this->app->Tpl->Set('KONTO', $input['konto']);
|
||||
$this->app->Tpl->Set('SWIFT', $input['swift']);
|
||||
$this->app->Tpl->Set('IBAN', $input['iban']);
|
||||
$this->app->Tpl->Set('LASTSCHRIFT', $input['lastschrift']);
|
||||
$this->app->Tpl->Set('HBCI', $input['hbci']);
|
||||
$this->app->Tpl->Set('HBCIKENNUNG', $input['hbcikennung']);
|
||||
$this->app->Tpl->Set('INHABER', $input['inhaber']);
|
||||
$this->app->Tpl->Set('AKTIV', $input['aktiv']);
|
||||
$this->app->Tpl->Set('KEINEEMAIL', $input['keineemail']);
|
||||
$this->app->Tpl->Set('FIRMA', $input['firma']);
|
||||
$this->app->Tpl->Set('SCHREIBBAR', $input['schreibbar']);
|
||||
$this->app->Tpl->Set('IMPORTLETZTENZEILENIGNORIEREN', $input['importletztenzeilenignorieren']);
|
||||
$this->app->Tpl->Set('LIVEIMPORT', $input['liveimport']);
|
||||
$this->app->Tpl->Set('LIVEIMPORT_PASSWORT', $input['liveimport_passwort']);
|
||||
$this->app->Tpl->Set('LIVEIMPORT_ONLINE', $input['liveimport_online']);
|
||||
$this->app->Tpl->Set('IMPORTTRENNZEICHEN', $input['importtrennzeichen']);
|
||||
$this->app->Tpl->Set('CODIERUNG', $input['codierung']);
|
||||
$this->app->Tpl->Set('IMPORTERSTEZEILENUMMER', $input['importerstezeilenummer']);
|
||||
$this->app->Tpl->Set('IMPORTDATENMASKIERUNG', $input['importdatenmaskierung']);
|
||||
$this->app->Tpl->Set('IMPORTNULLBYTES', $input['importnullbytes']);
|
||||
$this->app->Tpl->Set('GLAEUBIGER', $input['glaeubiger']);
|
||||
$this->app->Tpl->Set('GELOESCHT', $input['geloescht']);
|
||||
$this->app->Tpl->Set('PROJEKT', $input['projekt']);
|
||||
$this->app->Tpl->Set('SALDO_SUMMIEREN', $input['saldo_summieren']);
|
||||
$this->app->Tpl->Set('SALDO_BETRAG', $input['saldo_betrag']);
|
||||
$this->app->Tpl->Set('SALDO_DATUM', $input['saldo_datum']);
|
||||
$this->app->Tpl->Set('IMPORTFELDDATUM', $input['importfelddatum']);
|
||||
$this->app->Tpl->Set('IMPORTFELDDATUMFORMAT', $input['importfelddatumformat']);
|
||||
$this->app->Tpl->Set('IMPORTFELDDATUMFORMATAUSGABE', $input['importfelddatumformatausgabe']);
|
||||
$this->app->Tpl->Set('IMPORTFELDBETRAG', $input['importfeldbetrag']);
|
||||
$this->app->Tpl->Set('IMPORTFELDBETRAGFORMAT', $input['importfeldbetragformat']);
|
||||
$this->app->Tpl->Set('IMPORTFELDBUCHUNGSTEXT', $input['importfeldbuchungstext']);
|
||||
$this->app->Tpl->Set('IMPORTFELDBUCHUNGSTEXTFORMAT', $input['importfeldbuchungstextformat']);
|
||||
$this->app->Tpl->Set('IMPORTFELDWAEHRUNG', $input['importfeldwaehrung']);
|
||||
$this->app->Tpl->Set('IMPORTFELDWAEHRUNGFORMAT', $input['importfeldwaehrungformat']);
|
||||
$this->app->Tpl->Set('IMPORTFELDHABENSOLLKENNUNG', $input['importfeldhabensollkennung']);
|
||||
$this->app->Tpl->Set('IMPORTFELDKENNUNGHABEN', $input['importfeldkennunghaben']);
|
||||
$this->app->Tpl->Set('IMPORTFELDKENNUNGSOLL', $input['importfeldkennungsoll']);
|
||||
$this->app->Tpl->Set('IMPORTEXTRAHABENSOLL', $input['importextrahabensoll']);
|
||||
$this->app->Tpl->Set('IMPORTFELDHABEN', $input['importfeldhaben']);
|
||||
$this->app->Tpl->Set('IMPORTFELDSOLL', $input['importfeldsoll']);
|
||||
$this->app->Tpl->Set('CRONJOBAKTIV', $input['cronjobaktiv']);
|
||||
$this->app->Tpl->Set('CRONJOBVERBUCHEN', $input['cronjobverbuchen']);
|
||||
$this->app->Tpl->Set('LAST_IMPORT', $input['last_import']);
|
||||
$this->app->Tpl->Set('IMPORTPERIODE_IN_HOURS', $input['importperiode_in_hours']);
|
||||
|
||||
}
|
||||
|
||||
}
|
539
www/pages/kontoauszuege.php
Normal file
539
www/pages/kontoauszuege.php
Normal file
@ -0,0 +1,539 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* Copyright (c) 2022 OpenXE project
|
||||
*/
|
||||
|
||||
use Xentral\Components\Database\Exception\QueryFailureException;
|
||||
|
||||
class Kontoauszuege {
|
||||
|
||||
function __construct($app, $intern = false) {
|
||||
$this->app = $app;
|
||||
if ($intern)
|
||||
return;
|
||||
|
||||
$this->app->ActionHandlerInit($this);
|
||||
$this->app->ActionHandler("list", "kontoauszuege_konto_list");
|
||||
$this->app->ActionHandler("listentries", "kontoauszuege_list");
|
||||
// $this->app->ActionHandler("create", "kontoauszuege_edit"); // This automatically adds a "New" button
|
||||
$this->app->ActionHandler("edit", "kontoauszuege_edit");
|
||||
$this->app->ActionHandler("delete", "kontoauszuege_delete");
|
||||
$this->app->DefaultActionHandler("list");
|
||||
$this->app->ActionHandlerListen($app);
|
||||
}
|
||||
|
||||
public function Install() {
|
||||
/* Fill out manually later */
|
||||
}
|
||||
|
||||
function TableSearch(&$app, $name, $erlaubtevars) {
|
||||
switch ($name) {
|
||||
case "kontoauszuege_konto_list":
|
||||
|
||||
$allowed['konten_list'] = array('list');
|
||||
$heading = array('Bezeichnung', 'Kurzbezeichnung', 'Typ', 'Kontostand','Letzter Import', 'Menü');
|
||||
// $width = array('1%','1%','10%'); // Fill out manually later
|
||||
|
||||
// columns that are aligned right (numbers etc)
|
||||
// $alignright = array(4,5,6,7,8); sdds
|
||||
|
||||
$findcols = array('k.bezeichnung', 'k.kurzbezeichnung', 'k.type', 'k.kontostand','ka.datum', 'k.id');
|
||||
$searchsql = array('k.bezeichnung', 'k.kurzbezeichnung', 'k.datevkonto', 'k.blz', 'k.konto', 'k.swift', 'k.iban', 'k.inhaber', 'k.firma','p.abkuerzung');
|
||||
|
||||
$defaultorder = 1;
|
||||
$defaultorderdesc = 0;
|
||||
|
||||
// $sumcol = array(5);
|
||||
|
||||
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',k.id,'\" />') AS `auswahl`";
|
||||
|
||||
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap>" . "<a href=\"index.php?module=kontoauszuege&action=listentries&kid=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a></td></tr></table>";
|
||||
|
||||
$saldolink = array (
|
||||
'<a href=\"index.php?module=fibu_buchungen&action=zuordnen&typ=kontoauszuege',
|
||||
'">',
|
||||
['sql' => $this->app->erp->FormatMenge('SUM(COALESCE(fb.betrag,0))',2)],
|
||||
'</a>'
|
||||
);
|
||||
|
||||
$sql = "SELECT
|
||||
k.id,
|
||||
k.bezeichnung,
|
||||
k.kurzbezeichnung,
|
||||
".$this->app->erp->FormatUCfirst('k.type').",
|
||||
".$this->app->erp->FormatMenge('SUM(COALESCE(ka.soll,0))+k.saldo_betrag',2)." AS kontostand,
|
||||
".$this->app->erp->FormatDatetime("MIN(ka.importdatum)")." AS datum,
|
||||
k.id
|
||||
FROM
|
||||
konten k
|
||||
LEFT JOIN kontoauszuege ka ON
|
||||
k.id = ka.konto";
|
||||
|
||||
$where = " k.aktiv = 1 AND ka.importfehler IS NULL ";
|
||||
|
||||
// Toggle filters
|
||||
$app->Tpl->Add('JQUERYREADY', "$('#archiv').click( function() { fnFilterColumn1( 0 ); } );");
|
||||
|
||||
for ($r = 1;$r <= 1;$r++) {
|
||||
$app->Tpl->Add('JAVASCRIPT', '
|
||||
function fnFilterColumn' . $r . ' ( i )
|
||||
{
|
||||
if(oMoreData' . $r . $name . '==1)
|
||||
oMoreData' . $r . $name . ' = 0;
|
||||
else
|
||||
oMoreData' . $r . $name . ' = 1;
|
||||
|
||||
$(\'#' . $name . '\').dataTable().fnFilter(
|
||||
\'\',
|
||||
i,
|
||||
0,0
|
||||
);
|
||||
}
|
||||
');
|
||||
}
|
||||
|
||||
|
||||
$more_data1 = $app->Secure->GetGET("more_data1");
|
||||
if ($more_data1 == 1) {
|
||||
$where .= " OR k.aktiv <> 1";
|
||||
} else {
|
||||
}
|
||||
|
||||
// echo($sql);
|
||||
|
||||
// $count = "SELECT count(DISTINCT id) FROM konten k WHERE $where";
|
||||
$groupby = " GROUP BY k.id";
|
||||
|
||||
break;
|
||||
case "kontoauszuege_list":
|
||||
$allowed['kontoauszuege_list'] = array('list');
|
||||
|
||||
$kontoid = $this->app->User->getParameter('kontoauszuege_konto_id');
|
||||
$onlysaldo = $this->app->User->getParameter('kontoauszuege_only_saldo');
|
||||
|
||||
$heading = array('','', 'Importdatum', 'Konto', 'Datum', 'Betrag', 'Waehrung', 'Buchungstext','Interne Bemerkung', 'Saldo', 'Menü');
|
||||
$width = array('1%','1%', '1%', '10%', '1%', '1%', '1%', '20%', '20%', '1%', '1%'); // Fill out manually later
|
||||
|
||||
// columns that are aligned right (numbers etc)
|
||||
$alignright = array(6);
|
||||
|
||||
$sumcol = array(10);
|
||||
|
||||
$findcols = array('q.id','q.id','q.kurzbezeichnung', 'q.importdatum', 'q.buchung', 'q.soll', 'q.waehrung', 'q.buchungstext','q.internebemerkung','q.saldo');
|
||||
$searchsql = array('q.kurzbezeichnung', 'q.buchung', 'q.soll', 'q.buchungstext','q.internebemerkung');
|
||||
|
||||
$defaultorder = 1;
|
||||
$defaultorderdesc = 0;
|
||||
|
||||
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',k.id,'\" />') AS `auswahl`";
|
||||
|
||||
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap>" . "<a href=\"index.php?module=kontoauszuege&action=edit&id=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a> <a href=\"#\" onclick=DeleteDialog(\"index.php?module=kontoauszuege&action=delete&kid=".$kontoid."&onlysaldo=".$onlysaldo."&id=%value%\");>" . "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" . "</td></tr></table>";
|
||||
|
||||
// Toggle filters
|
||||
$app->Tpl->Add('JQUERYREADY', "$('#importfehler').click( function() { fnFilterColumn1( 0 ); } );");
|
||||
|
||||
for ($r = 1;$r <= 4;$r++) {
|
||||
$app->Tpl->Add('JAVASCRIPT', '
|
||||
function fnFilterColumn' . $r . ' ( i )
|
||||
{
|
||||
if(oMoreData' . $r . $name . '==1)
|
||||
oMoreData' . $r . $name . ' = 0;
|
||||
else
|
||||
oMoreData' . $r . $name . ' = 1;
|
||||
|
||||
$(\'#' . $name . '\').dataTable().fnFilter(
|
||||
\'\',
|
||||
i,
|
||||
0,0
|
||||
);
|
||||
}
|
||||
');
|
||||
}
|
||||
|
||||
|
||||
$more_data1 = $app->Secure->GetGET("more_data1");
|
||||
if ($more_data1 == 1) {
|
||||
$subwhere .= "";
|
||||
} else {
|
||||
$subwhere .= " AND k.importfehler IS NULL ";
|
||||
}
|
||||
// END Toggle filters
|
||||
|
||||
$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM ( SELECT
|
||||
k.id,
|
||||
$dropnbox,
|
||||
".$app->erp->FormatDateTimeShort('k.importdatum')." AS importdatum,
|
||||
(SELECT kurzbezeichnung FROM konten WHERE konten.id = k.konto) as kurzbezeichnung,
|
||||
".$app->erp->FormatDate('k.buchung')." as buchung,
|
||||
IF(
|
||||
k.importfehler,
|
||||
CONCAT(
|
||||
'<del>',
|
||||
".$app->erp->FormatMenge('(k.soll)',2).",
|
||||
'</del>'
|
||||
),
|
||||
".$app->erp->FormatMenge('(k.soll)',2)."),
|
||||
k.waehrung,
|
||||
k.buchungstext,
|
||||
k.internebemerkung,
|
||||
".$app->erp->FormatMenge('SUM(fb.betrag)',2)." AS saldo,
|
||||
k.id as menuid,
|
||||
SUM(fb.betrag) AS saldonum
|
||||
FROM kontoauszuege k
|
||||
LEFT JOIN fibu_buchungen_alle fb ON
|
||||
fb.id = k.id AND fb.typ = 'kontoauszuege'
|
||||
WHERE k.konto = ".$kontoid.$subwhere."
|
||||
GROUP BY k.id ) AS q
|
||||
";
|
||||
|
||||
$where = "1";
|
||||
if ($onlysaldo) {
|
||||
$where .= " AND saldonum != 0";
|
||||
}
|
||||
|
||||
// $count = "SELECT count(DISTINCT id) FROM kontoauszuege k WHERE $where";
|
||||
// $groupby = "";
|
||||
|
||||
// echo($sql." WHERE ".$where." ".$groupby);
|
||||
|
||||
break;
|
||||
case "kontoauszuege_salden":
|
||||
$allowed['kontoauszuege_list'] = array('list');
|
||||
|
||||
$kontoid = $this->app->User->getParameter('kontoauszuege_konto_id');
|
||||
$onlysaldo = $this->app->User->getParameter('kontoauszuege_only_saldo');
|
||||
|
||||
$heading = array('','', 'Buchungstext', 'Betrag', 'Waehrung', 'Betrag zuordnen', 'Beleg', 'ID','Beleg-Nr.','', 'Menü');
|
||||
$width = array('1%','1%', '20%', '1%', '1%', '1%', '1%', '1%','1%', '1%','1%');
|
||||
|
||||
// columns that are aligned right (numbers etc)
|
||||
$alignright = array(6);
|
||||
|
||||
$sumcol = array(10);
|
||||
|
||||
$findcols = array('q.id','q.id','q.konto', 'q.importdatum', 'q.buchung', 'q.soll', 'q.waehrung', 'q.buchungstext','q.internebemerkung','q.saldo');
|
||||
$searchsql = array('q.konto', 'q.buchung', 'q.soll', 'q.buchungstext','q.internebemerkung');
|
||||
|
||||
$defaultorder = 1;
|
||||
$defaultorderdesc = 0;
|
||||
|
||||
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',q.id,'\"',if(b.doc_belegnr IS NOT NULL,'checked',''),' />') AS `auswahl`";
|
||||
|
||||
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap>" . "<a href=\"index.php?module=kontoauszuege&action=edit&id=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a> <a href=\"#\" onclick=DeleteDialog(\"index.php?module=kontoauszuege&action=delete&kid=".$kontoid."&onlysaldo=".$onlysaldo."&id=%value%\");>" . "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" . "</td></tr></table>";
|
||||
|
||||
|
||||
$sql = "SELECT
|
||||
".$this->app->erp->FormatUCfirst('typ')."
|
||||
SUM(betrag)
|
||||
FROM `fibu_buchungen_alle`
|
||||
";
|
||||
|
||||
$where = "1";
|
||||
if ($onlysaldo) {
|
||||
$where .= " AND q.saldonum != 0";
|
||||
}
|
||||
|
||||
// $count = "SELECT count(DISTINCT id) FROM kontoauszuege k WHERE $where";
|
||||
$groupby = "GROUP BY typ";
|
||||
|
||||
// echo($sql." WHERE ".$where." ".$groupby);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
$erg = false;
|
||||
|
||||
foreach ($erlaubtevars as $k => $v) {
|
||||
if (isset($$v)) {
|
||||
$erg[$v] = $$v;
|
||||
}
|
||||
}
|
||||
return $erg;
|
||||
}
|
||||
|
||||
function kontoauszuege_konto_list() {
|
||||
|
||||
$this->app->erp->MenuEintrag("index.php?module=kontoauszuege&action=list", "Übersicht");
|
||||
// $this->app->erp->MenuEintrag("index.php?module=kontoauszuege&action=create", "Neu anlegen");
|
||||
|
||||
$this->app->erp->MenuEintrag("index.php", "Zurück");
|
||||
|
||||
$this->app->YUI->TableSearch('TAB1', 'kontoauszuege_konto_list', "show", "", "", basename(__FILE__), __CLASS__);
|
||||
$this->app->Tpl->Parse('PAGE', "kontoauszuege_konto_list.tpl");
|
||||
}
|
||||
|
||||
function kontoauszuege_mark_as_error(int $id) : ?string {
|
||||
$sql = "SELECT id FROM fibu_buchungen_alle WHERE CONCAT(doc_typ,doc_id) <> CONCAT('kontoauszuege','".$id."') AND typ = 'kontoauszuege' AND id = ".$id;
|
||||
$result = $this->app->DB->SelectArr($sql);
|
||||
|
||||
if (!empty($result)) {
|
||||
return("Es existieren Buchungen, Eintrag wurde nicht als Importfehler markiert!");
|
||||
} else {
|
||||
$this->app->DB->Delete("UPDATE `kontoauszuege` SET importfehler = 1 WHERE `id` = '{$id}'");
|
||||
return("Der Eintrag wurde als Importfehler markiert.");
|
||||
}
|
||||
|
||||
return(null);
|
||||
|
||||
}
|
||||
|
||||
function kontoauszuege_list() {
|
||||
|
||||
// Process multi action
|
||||
$auswahl = $this->app->Secure->GetPOST('auswahl');
|
||||
$selectedIds = [];
|
||||
if(!empty($auswahl)) {
|
||||
foreach($auswahl as $selectedId) {
|
||||
$selectedId = (int)$selectedId;
|
||||
if($selectedId > 0) {
|
||||
$selectedIds[] = $selectedId;
|
||||
}
|
||||
}
|
||||
|
||||
$submit = $this->app->Secure->GetPOST('ausfuehren');
|
||||
|
||||
if ($submit == 'Importfehler') {
|
||||
|
||||
$message = "";
|
||||
|
||||
foreach ($selectedIds as $selectedId) {
|
||||
$result = $this->kontoauszuege_mark_as_error($selectedId);
|
||||
if ($result) {
|
||||
$message = $result;
|
||||
}
|
||||
}
|
||||
|
||||
if ($message) {
|
||||
$this->app->Tpl->Set('MESSAGE', "<div class=\"error\">".$message."</div>");
|
||||
} else {
|
||||
$this->app->Tpl->Set('MESSAGE', "<div class=\"warning\">Einträge wurden als Importfehler markiert.</div>");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->app->erp->MenuEintrag("index.php?module=kontoauszuege&action=list", "Übersicht");
|
||||
// $this->app->erp->MenuEintrag("index.php?module=kontoauszuege&action=create", "Neu anlegen");
|
||||
|
||||
$this->app->erp->MenuEintrag("index.php", "Zurück");
|
||||
|
||||
$kontoid = $this->app->Secure->GetGET('kid');
|
||||
$this->app->User->SetParameter('kontoauszuege_konto_id', $kontoid);
|
||||
$onlysaldo = $this->app->Secure->GetGET('onlysaldo');
|
||||
$this->app->User->SetParameter('kontoauszuege_only_saldo', $onlysaldo);
|
||||
|
||||
if ($onlysaldo) {
|
||||
$this->app->Tpl->Set('INFO','Nicht zugeordnete Posten');
|
||||
}
|
||||
|
||||
$this->app->YUI->TableSearch('TAB1', 'kontoauszuege_list', "show", "", "", basename(__FILE__), __CLASS__);
|
||||
$this->app->Tpl->Parse('PAGE', "kontoauszuege_list.tpl");
|
||||
|
||||
}
|
||||
|
||||
public function kontoauszuege_delete() {
|
||||
$id = (int) $this->app->Secure->GetGET('id');
|
||||
|
||||
$result = $this->kontoauszuege_mark_as_error($id);
|
||||
|
||||
if ($result) {
|
||||
$this->app->Tpl->Set('MESSAGE', "<div class=\"error\">".$result."</div>");
|
||||
} else {
|
||||
$this->app->Tpl->Set('MESSAGE', "<div class=\"warning\">Der Eintrag wurde als Importfehler markiert.</div>");
|
||||
}
|
||||
|
||||
$this->kontoauszuege_list();
|
||||
}
|
||||
|
||||
/*
|
||||
* Edit kontoauszuege item
|
||||
* If id is empty, create a new one
|
||||
*/
|
||||
|
||||
function kontoauszuege_edit() {
|
||||
$id = $this->app->Secure->GetGET('id');
|
||||
|
||||
// Check if other users are editing this id
|
||||
if($this->app->erp->DisableModul('artikel',$id))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$this->app->Tpl->Set('ID', $id);
|
||||
|
||||
$this->app->erp->MenuEintrag("index.php?module=kontoauszuege&action=edit&id=$id", "Details");
|
||||
$this->app->erp->MenuEintrag("index.php?module=kontoauszuege&action=list", "Zurück zur Übersicht");
|
||||
$id = $this->app->Secure->GetGET('id');
|
||||
$input = $this->GetInput();
|
||||
$submit = $this->app->Secure->GetPOST('submit');
|
||||
|
||||
/* if (empty($id)) {
|
||||
// New item
|
||||
$id = 'NULL';
|
||||
} */
|
||||
|
||||
if ($submit != '')
|
||||
{
|
||||
|
||||
// Write to database
|
||||
|
||||
// Add checks here
|
||||
|
||||
$columns = "id, ";
|
||||
$values = "$id, ";
|
||||
$update = "";
|
||||
|
||||
$fix = "";
|
||||
|
||||
foreach ($input as $key => $value) {
|
||||
$columns = $columns.$fix.$key;
|
||||
$values = $values.$fix."'".$value."'";
|
||||
$update = $update.$fix.$key." = '$value'";
|
||||
|
||||
$fix = ", ";
|
||||
}
|
||||
|
||||
// echo($columns."<br>");
|
||||
// echo($values."<br>");
|
||||
// echo($update."<br>");
|
||||
|
||||
$sql = "INSERT INTO kontoauszuege (".$columns.") VALUES (".$values.") ON DUPLICATE KEY UPDATE ".$update;
|
||||
|
||||
// echo($sql);
|
||||
|
||||
$this->app->DB->Update($sql);
|
||||
|
||||
if ($id == 'NULL') {
|
||||
$msg = $this->app->erp->base64_url_encode("<div class=\"success\">Das Element wurde erfolgreich angelegt.</div>");
|
||||
header("Location: index.php?module=kontoauszuege&action=list&msg=$msg");
|
||||
} else {
|
||||
$this->app->Tpl->Set('MESSAGE', "<div class=\"success\">Die Einstellungen wurden erfolgreich übernommen.</div>");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Load values again from database
|
||||
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',k.id,'\" />') AS `auswahl`";
|
||||
$result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS k.id, $dropnbox, k.konto, k.buchung, k.originalbuchung, k.vorgang, k.originalvorgang, k.soll, k.originalsoll, k.haben, k.originalhaben, k.gebuehr, k.originalgebuehr, k.waehrung, k.originalwaehrung, k.fertig, k.datev_abgeschlossen, k.buchungstext, k.gegenkonto, k.belegfeld1, k.bearbeiter, k.mailbenachrichtigung, k.pruefsumme, k.kostenstelle, k.importgroup, k.diff, k.diffangelegt, k.internebemerkung, k.importfehler, k.parent, k.sort, k.doctype, k.doctypeid, k.vorauswahltyp, k.vorauswahlparameter, k.klaerfall, k.klaergrund, k.bezugtyp, k.bezugparameter, k.vorauswahlvorschlag, k.id FROM kontoauszuege k"." WHERE id=$id");
|
||||
|
||||
foreach ($result[0] as $key => $value) {
|
||||
$this->app->Tpl->Set(strtoupper($key), $value);
|
||||
}
|
||||
|
||||
/*
|
||||
* Add displayed items later
|
||||
*
|
||||
|
||||
$this->app->Tpl->Add('KURZUEBERSCHRIFT2', $email);
|
||||
$this->app->Tpl->Add('EMAIL', $email);
|
||||
$this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
|
||||
*/
|
||||
|
||||
$sql = "SELECT kurzbezeichnung FROM konten WHERE id=".$result[0]['konto'];
|
||||
$konto = $this->app->DB->Select($sql);
|
||||
$this->app->Tpl->Set('KONTO', $konto);
|
||||
|
||||
$this->app->Tpl->Set('BUCHUNG', $this->app->erp->ReplaceDatum(false,$result[0]['buchung'],false));
|
||||
$this->app->Tpl->Set('SOLL', $this->app->erp->ReplaceBetrag(false,$result[0]['soll'],false));
|
||||
|
||||
$this->app->Tpl->Parse('PAGE', "kontoauszuege_edit.tpl");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all paramters from html form and save into $input
|
||||
*/
|
||||
public function GetInput(): array {
|
||||
$input = array();
|
||||
//$input['EMAIL'] = $this->app->Secure->GetPOST('email');
|
||||
|
||||
/* $input['konto'] = $this->app->Secure->GetPOST('konto');
|
||||
$input['buchung'] = $this->app->Secure->GetPOST('buchung');
|
||||
$input['originalbuchung'] = $this->app->Secure->GetPOST('originalbuchung');
|
||||
$input['vorgang'] = $this->app->Secure->GetPOST('vorgang');
|
||||
$input['originalvorgang'] = $this->app->Secure->GetPOST('originalvorgang');
|
||||
$input['soll'] = $this->app->Secure->GetPOST('soll');
|
||||
$input['originalsoll'] = $this->app->Secure->GetPOST('originalsoll');
|
||||
$input['haben'] = $this->app->Secure->GetPOST('haben');
|
||||
$input['originalhaben'] = $this->app->Secure->GetPOST('originalhaben');
|
||||
$input['gebuehr'] = $this->app->Secure->GetPOST('gebuehr');
|
||||
$input['originalgebuehr'] = $this->app->Secure->GetPOST('originalgebuehr');
|
||||
$input['waehrung'] = $this->app->Secure->GetPOST('waehrung');
|
||||
$input['originalwaehrung'] = $this->app->Secure->GetPOST('originalwaehrung');
|
||||
$input['fertig'] = $this->app->Secure->GetPOST('fertig');
|
||||
$input['datev_abgeschlossen'] = $this->app->Secure->GetPOST('datev_abgeschlossen');
|
||||
$input['buchungstext'] = $this->app->Secure->GetPOST('buchungstext');
|
||||
$input['gegenkonto'] = $this->app->Secure->GetPOST('gegenkonto');
|
||||
$input['belegfeld1'] = $this->app->Secure->GetPOST('belegfeld1');
|
||||
$input['bearbeiter'] = $this->app->Secure->GetPOST('bearbeiter');
|
||||
$input['mailbenachrichtigung'] = $this->app->Secure->GetPOST('mailbenachrichtigung');
|
||||
$input['pruefsumme'] = $this->app->Secure->GetPOST('pruefsumme');
|
||||
$input['kostenstelle'] = $this->app->Secure->GetPOST('kostenstelle');
|
||||
$input['importgroup'] = $this->app->Secure->GetPOST('importgroup');
|
||||
$input['diff'] = $this->app->Secure->GetPOST('diff');
|
||||
$input['diffangelegt'] = $this->app->Secure->GetPOST('diffangelegt');
|
||||
*/ $input['internebemerkung'] = $this->app->Secure->GetPOST('internebemerkung');
|
||||
/* $input['importfehler'] = $this->app->Secure->GetPOST('importfehler');
|
||||
$input['parent'] = $this->app->Secure->GetPOST('parent');
|
||||
$input['sort'] = $this->app->Secure->GetPOST('sort');
|
||||
$input['doctype'] = $this->app->Secure->GetPOST('doctype');
|
||||
$input['doctypeid'] = $this->app->Secure->GetPOST('doctypeid');
|
||||
$input['vorauswahltyp'] = $this->app->Secure->GetPOST('vorauswahltyp');
|
||||
$input['vorauswahlparameter'] = $this->app->Secure->GetPOST('vorauswahlparameter');
|
||||
$input['klaerfall'] = $this->app->Secure->GetPOST('klaerfall');
|
||||
$input['klaergrund'] = $this->app->Secure->GetPOST('klaergrund');
|
||||
$input['bezugtyp'] = $this->app->Secure->GetPOST('bezugtyp');
|
||||
$input['bezugparameter'] = $this->app->Secure->GetPOST('bezugparameter');
|
||||
$input['vorauswahlvorschlag'] = $this->app->Secure->GetPOST('vorauswahlvorschlag');*/
|
||||
|
||||
|
||||
return $input;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set all fields in the page corresponding to $input
|
||||
*/
|
||||
function SetInput($input) {
|
||||
// $this->app->Tpl->Set('EMAIL', $input['email']);
|
||||
|
||||
$this->app->Tpl->Set('KONTO', $input['konto']);
|
||||
$this->app->Tpl->Set('BUCHUNG', $input['buchung']);
|
||||
$this->app->Tpl->Set('ORIGINALBUCHUNG', $input['originalbuchung']);
|
||||
$this->app->Tpl->Set('VORGANG', $input['vorgang']);
|
||||
$this->app->Tpl->Set('ORIGINALVORGANG', $input['originalvorgang']);
|
||||
$this->app->Tpl->Set('SOLL', $input['soll']);
|
||||
$this->app->Tpl->Set('ORIGINALSOLL', $input['originalsoll']);
|
||||
$this->app->Tpl->Set('HABEN', $input['haben']);
|
||||
$this->app->Tpl->Set('ORIGINALHABEN', $input['originalhaben']);
|
||||
$this->app->Tpl->Set('GEBUEHR', $input['gebuehr']);
|
||||
$this->app->Tpl->Set('ORIGINALGEBUEHR', $input['originalgebuehr']);
|
||||
$this->app->Tpl->Set('WAEHRUNG', $input['waehrung']);
|
||||
$this->app->Tpl->Set('ORIGINALWAEHRUNG', $input['originalwaehrung']);
|
||||
$this->app->Tpl->Set('FERTIG', $input['fertig']);
|
||||
$this->app->Tpl->Set('DATEV_ABGESCHLOSSEN', $input['datev_abgeschlossen']);
|
||||
$this->app->Tpl->Set('BUCHUNGSTEXT', $input['buchungstext']);
|
||||
$this->app->Tpl->Set('GEGENKONTO', $input['gegenkonto']);
|
||||
$this->app->Tpl->Set('BELEGFELD1', $input['belegfeld1']);
|
||||
$this->app->Tpl->Set('BEARBEITER', $input['bearbeiter']);
|
||||
$this->app->Tpl->Set('MAILBENACHRICHTIGUNG', $input['mailbenachrichtigung']);
|
||||
$this->app->Tpl->Set('PRUEFSUMME', $input['pruefsumme']);
|
||||
$this->app->Tpl->Set('KOSTENSTELLE', $input['kostenstelle']);
|
||||
$this->app->Tpl->Set('IMPORTGROUP', $input['importgroup']);
|
||||
$this->app->Tpl->Set('DIFF', $input['diff']);
|
||||
$this->app->Tpl->Set('DIFFANGELEGT', $input['diffangelegt']);
|
||||
$this->app->Tpl->Set('INTERNEBEMERKUNG', $input['internebemerkung']);
|
||||
$this->app->Tpl->Set('IMPORTFEHLER', $input['importfehler']);
|
||||
$this->app->Tpl->Set('PARENT', $input['parent']);
|
||||
$this->app->Tpl->Set('SORT', $input['sort']);
|
||||
$this->app->Tpl->Set('DOCTYPE', $input['doctype']);
|
||||
$this->app->Tpl->Set('DOCTYPEID', $input['doctypeid']);
|
||||
$this->app->Tpl->Set('VORAUSWAHLTYP', $input['vorauswahltyp']);
|
||||
$this->app->Tpl->Set('VORAUSWAHLPARAMETER', $input['vorauswahlparameter']);
|
||||
$this->app->Tpl->Set('KLAERFALL', $input['klaerfall']);
|
||||
$this->app->Tpl->Set('KLAERGRUND', $input['klaergrund']);
|
||||
$this->app->Tpl->Set('BEZUGTYP', $input['bezugtyp']);
|
||||
$this->app->Tpl->Set('BEZUGPARAMETER', $input['bezugparameter']);
|
||||
$this->app->Tpl->Set('VORAUSWAHLVORSCHLAG', $input['vorauswahlvorschlag']);
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -283,7 +283,7 @@ class Rechnung extends GenRechnung
|
||||
$this->app->erp->RechnungProtokoll($invoiceId,'Rechnung manuell als bezahlt entfernt');
|
||||
$this->app->DB->Update(
|
||||
"UPDATE rechnung
|
||||
SET zahlungsstatus='offen',bezahlt_am = NULL, ist='0',
|
||||
SET zahlungsstatus='offen',bezahlt_am = NULL,
|
||||
mahnwesen_internebemerkung=CONCAT(mahnwesen_internebemerkung,'\r\n','Manuell als bezahlt entfernt am ".date('d.m.Y')."')
|
||||
WHERE id='$invoiceId'"
|
||||
);
|
||||
@ -305,7 +305,7 @@ class Rechnung extends GenRechnung
|
||||
$id = $this->app->Secure->GetGET('id');
|
||||
$this->app->erp->RechnungProtokoll($id,'Rechnung Stornierung rückgängig gemacht');
|
||||
|
||||
$this->app->DB->Update("UPDATE rechnung SET status='freigegeben',zahlungsstatus='offen',schreibschutz=0,bezahlt_am = NULL, ist='0',mahnwesen_internebemerkung=CONCAT(mahnwesen_internebemerkung,'\r\n','Rechnung Stornierung rückgängig gemacht ".date('d.m.Y')."') WHERE id='$id'");
|
||||
$this->app->DB->Update("UPDATE rechnung SET status='freigegeben',zahlungsstatus='offen',schreibschutz=0,bezahlt_am = NULL, mahnwesen_internebemerkung=CONCAT(mahnwesen_internebemerkung,'\r\n','Rechnung Stornierung rückgängig gemacht ".date('d.m.Y')."') WHERE id='$id'");
|
||||
|
||||
$this->app->Location->execute("index.php?module=rechnung&action=edit&id=$id");
|
||||
}
|
||||
@ -324,7 +324,7 @@ class Rechnung extends GenRechnung
|
||||
|
||||
$this->app->DB->Update(
|
||||
"UPDATE rechnung
|
||||
SET zahlungsstatus='bezahlt',bezahlt_am = now(), ist=soll,mahnwesenfestsetzen='1',
|
||||
SET zahlungsstatus='bezahlt',bezahlt_am = now(), mahnwesenfestsetzen='1',
|
||||
mahnwesen_internebemerkung=CONCAT(mahnwesen_internebemerkung,'\r\n','Manuell als bezahlt markiert am ".date('d.m.Y')."')
|
||||
WHERE id='$invoiceId'"
|
||||
);
|
||||
@ -888,28 +888,7 @@ class Rechnung extends GenRechnung
|
||||
$this->app->Tpl->Set('ANGEBOTTEXT',"Das Angebot wird bearbeitet und wurde noch nicht freigegeben und abgesendet!");
|
||||
}
|
||||
|
||||
|
||||
$this->app->Tpl->Set('ZAHLUNGEN',"<table width=100% border=0 class=auftrag_cell cellpadding=0 cellspacing=0>Erst ab Version Enterprise verfügbar</table>");
|
||||
|
||||
if (!is_null($gutschrift)) {
|
||||
|
||||
if((!empty($gutschrift)?count($gutschrift):0) > 0)
|
||||
$this->app->Tpl->Add('ZAHLUNGEN',"<div class=\"info\">Zu dieser Rechnung existiert eine Gutschrift!</div>");
|
||||
else {
|
||||
|
||||
if($auftragArr[0]['zahlungsstatus']!="bezahlt")
|
||||
$this->app->Tpl->Add('ZAHLUNGEN',"<div class=\"warning\">Diese Rechnung ist noch nicht komplett bezahlt!</div>");
|
||||
else
|
||||
{
|
||||
if(!empty($auftragArr[0]['bezahlt_am']) && $auftragArr[0]['bezahlt_am'] != '0000-00-00')
|
||||
{
|
||||
$this->app->Tpl->Add('ZAHLUNGEN',"<div class=\"success\">Diese Rechnung wurde am ".$this->app->String->Convert($auftragArr[0]['bezahlt_am'],"%1-%2-%3","%3.%2.%1")." bezahlt.</div>");
|
||||
}else{
|
||||
$this->app->Tpl->Add('ZAHLUNGEN',"<div class=\"success\">Diese Rechnung ist bezahlt.</div>");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->app->Tpl->Set('ZAHLUNGEN',$this->RechnungZahlung(true));
|
||||
|
||||
$this->app->Tpl->Set('RECHNUNGADRESSE',$this->Rechnungsadresse($auftragArr[0]['id']));
|
||||
|
||||
@ -1582,6 +1561,9 @@ class Rechnung extends GenRechnung
|
||||
$this->app->erp->RechnungNeuberechnen($id);
|
||||
}
|
||||
|
||||
// ALWAYS
|
||||
$this->app->erp->RechnungNeuberechnen($id);
|
||||
|
||||
if($cmd === 'dadown')
|
||||
{
|
||||
$erg['status'] = 0;
|
||||
@ -1766,9 +1748,8 @@ class Rechnung extends GenRechnung
|
||||
$this->app->Tpl->Set('VORKASSE','');
|
||||
}
|
||||
|
||||
|
||||
$saldo=$this->app->DB->Select("SELECT ist-skonto_gegeben FROM rechnung WHERE id='$id'");
|
||||
$this->app->Tpl->Set('LIVEIST',"$saldo");
|
||||
$ist = $this->app->erp->EUR($this->app->erp->GetSaldoDokument($id,'rechnung')['betrag']);
|
||||
$this->app->Tpl->Set('ISTDB',$ist);
|
||||
|
||||
if($schreibschutz=="1" && $this->app->erp->RechteVorhanden('rechnung','schreibschutz'))
|
||||
{
|
||||
@ -1788,10 +1769,13 @@ class Rechnung extends GenRechnung
|
||||
$this->app->erp->RemoveReadonly('mahnwesenfestsetzen');
|
||||
$this->app->erp->RemoveReadonly('mahnwesen');
|
||||
$this->app->erp->RemoveReadonly('bezahlt_am');
|
||||
/*
|
||||
'ist' should not be edited manually
|
||||
|
||||
$this->app->erp->RemoveReadonly('ist');
|
||||
|
||||
if($this->app->erp->Firmendaten('mahnwesenmitkontoabgleich')!='1' || $this->app->DB->Select("SELECT mahnwesenfestsetzen FROM rechnung WHERE id='$id' LIMIT 1")==1)
|
||||
$this->app->erp->RemoveReadonly('ist');
|
||||
$this->app->erp->RemoveReadonly('ist');*/
|
||||
|
||||
//$auftrag= $this->app->DB->Select("SELECT auftrag FROM rechnung WHERE id='$id' LIMIT 1");
|
||||
|
||||
@ -1812,8 +1796,10 @@ class Rechnung extends GenRechnung
|
||||
}
|
||||
|
||||
$speichern = $this->app->Secure->GetPOST('speichern');
|
||||
|
||||
if($speichern!='' && $this->app->erp->RechteVorhanden('rechnung','mahnwesen'))
|
||||
{
|
||||
|
||||
$mahnwesen_datum = $this->app->Secure->GetPOST('mahnwesen_datum');
|
||||
$bezahlt_am = $this->app->Secure->GetPOST('bezahlt_am');
|
||||
$mahnwesen_gesperrt = $this->app->Secure->GetPOST('mahnwesen_gesperrt');
|
||||
@ -1839,16 +1825,15 @@ class Rechnung extends GenRechnung
|
||||
$alte_mahnstufe = $this->app->DB->Select("SELECT mahnwesen FROM rechnung WHERE id='$id' LIMIT 1");
|
||||
if($alte_mahnstufe!=$mahnwesen) $versendet=0; else $versendet=1;
|
||||
|
||||
if($mahnwesenfestsetzen=='1')
|
||||
{
|
||||
/* if($mahnwesenfestsetzen=='1')
|
||||
{*/
|
||||
$this->app->DB->Update("UPDATE rechnung SET mahnwesen_internebemerkung='$mahnwesen_internebemerkung',zahlungsstatus='$zahlungsstatus',versendet_mahnwesen='$versendet',
|
||||
mahnwesen_gesperrt='$mahnwesen_gesperrt',mahnwesen_datum='$mahnwesen_datum', mahnwesenfestsetzen='$mahnwesenfestsetzen',internebemerkung='$internebemerkung',
|
||||
mahnwesen='$mahnwesen',ist='$ist',skonto_gegeben='$skonto_gegeben',bezahlt_am='$bezahlt_am' WHERE id='$id' LIMIT 1");
|
||||
} else {
|
||||
mahnwesen='$mahnwesen',skonto_gegeben='$skonto_gegeben',bezahlt_am='$bezahlt_am' WHERE id='$id' LIMIT 1");
|
||||
/* } else {
|
||||
$this->app->DB->Update("UPDATE rechnung SET mahnwesen='$mahnwesen', mahnwesenfestsetzen='$mahnwesenfestsetzen', mahnwesen_internebemerkung='$mahnwesen_internebemerkung', mahnwesen_gesperrt='$mahnwesen_gesperrt',mahnwesen_datum='$mahnwesen_datum' WHERE id='$id' LIMIT 1");
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($status=='')
|
||||
$this->app->DB->Update("UPDATE rechnung SET status='angelegt' WHERE id='$id' LIMIT 1");
|
||||
@ -1962,6 +1947,7 @@ class Rechnung extends GenRechnung
|
||||
' überein <input type="submit" name="resetextsoll" value="Festgeschriebene Summe zurücksetzen" /></div></form>'
|
||||
);
|
||||
}
|
||||
|
||||
parent::RechnungEdit();
|
||||
if($id > 0 && $this->app->DB->Select(
|
||||
sprintf(
|
||||
@ -2076,6 +2062,7 @@ class Rechnung extends GenRechnung
|
||||
|
||||
public function RechnungList()
|
||||
{
|
||||
|
||||
$this->app->DB->Update("UPDATE rechnung SET zahlungsstatus='offen' WHERE zahlungsstatus=''");
|
||||
|
||||
if($this->app->Secure->GetPOST('ausfuehren') && $this->app->erp->RechteVorhanden('rechnung', 'edit'))
|
||||
@ -2098,10 +2085,10 @@ class Rechnung extends GenRechnung
|
||||
switch($aktion)
|
||||
{
|
||||
case 'bezahlt':
|
||||
$this->app->DB->Update("UPDATE rechnung SET zahlungsstatus='bezahlt', bezahlt_am = now(), ist=soll,mahnwesenfestsetzen='1',mahnwesen_internebemerkung=CONCAT(mahnwesen_internebemerkung,'\r\n','Manuell als bezahlt markiert am ".date('d.m.Y')."') WHERE id IN (".implode(', ',$auswahl).')');
|
||||
$this->app->DB->Update("UPDATE rechnung SET zahlungsstatus='bezahlt', bezahlt_am = now(), mahnwesenfestsetzen='1',mahnwesen_internebemerkung=CONCAT(mahnwesen_internebemerkung,'\r\n','Manuell als bezahlt markiert am ".date('d.m.Y')."') WHERE id IN (".implode(', ',$auswahl).')');
|
||||
break;
|
||||
case 'offen':
|
||||
$this->app->DB->Update("UPDATE rechnung SET zahlungsstatus='offen',bezahlt_am = NULL, ist='0',mahnwesen_internebemerkung=CONCAT(mahnwesen_internebemerkung,'\r\n','Manuell als bezahlt entfernt am ".date('d.m.Y')."') WHERE id IN (".implode(', ',$auswahl).')');
|
||||
$this->app->DB->Update("UPDATE rechnung SET zahlungsstatus='offen',bezahlt_am = NULL, mahnwesen_internebemerkung=CONCAT(mahnwesen_internebemerkung,'\r\n','Manuell als bezahlt entfernt am ".date('d.m.Y')."') WHERE id IN (".implode(', ',$auswahl).')');
|
||||
break;
|
||||
case 'mail':
|
||||
$auswahl = $this->app->DB->SelectFirstCols(
|
||||
@ -2258,6 +2245,28 @@ class Rechnung extends GenRechnung
|
||||
}
|
||||
}
|
||||
|
||||
// refresh all open items
|
||||
$openids = $this->app->DB->SelectArr("SELECT id, waehrung from rechnung WHERE zahlungsstatus = 'offen'");
|
||||
|
||||
foreach ($openids as $openid) {
|
||||
$saldo = $this->app->erp->GetSaldoDokument($openid['id'],'rechnung');
|
||||
|
||||
if (!empty($saldo)) {
|
||||
if ($saldo['waehrung'] == $openid['waehrung']) {
|
||||
$sql = "UPDATE
|
||||
rechnung
|
||||
SET
|
||||
ist = ".$saldo['betrag']."+soll,
|
||||
zahlungsstatus = IF(".$saldo['betrag']." = 0,'bezahlt','offen')
|
||||
WHERE id=".$openid['id'];
|
||||
$this->app->DB->Update($sql);
|
||||
}
|
||||
}
|
||||
else {
|
||||
$this->app->DB->Update("UPDATE rechnung SET ist = null WHERE id=".$openid['id']);
|
||||
}
|
||||
}
|
||||
|
||||
$this->app->Tpl->Set('UEBERSCHRIFT','Rechnungen');
|
||||
|
||||
$backurl = $this->app->Secure->GetGET('backurl');
|
||||
@ -2712,4 +2721,48 @@ class Rechnung extends GenRechnung
|
||||
|
||||
return $this->app->DB->GetInsertID();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Build the html output for minidetail containing the payments
|
||||
* @param bool $return
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function RechnungZahlung($return=false)
|
||||
{
|
||||
$id = $this->app->Secure->GetGET('id');
|
||||
|
||||
$zahlungen = $this->app->erp->GetZahlungen($id,'rechnung');
|
||||
if (!empty($zahlungen)) {
|
||||
$et = new EasyTable($this->app);
|
||||
|
||||
$et->headings = array('Datum','Beleg','Betrag','Währung');
|
||||
|
||||
foreach ($zahlungen as $zahlung) {
|
||||
$row = array(
|
||||
$zahlung['datum'],
|
||||
"<a href=\"index.php?module=".$zahlung['doc_typ']."&action=edit&id=".$zahlung['doc_id']."\">
|
||||
".ucfirst($zahlung['doc_typ'])."
|
||||
".$zahlung['doc_info']."
|
||||
</a>",
|
||||
$zahlung['betrag'],
|
||||
$zahlung['waehrung']
|
||||
);
|
||||
$et->AddRow($row);
|
||||
}
|
||||
|
||||
$salden = $this->app->erp->GetSaldenDokument($id,'rechnung');
|
||||
foreach ($salden as $saldo) {
|
||||
$row = array(
|
||||
'',
|
||||
'<b>Saldo</b>',
|
||||
"<b>".$saldo['betrag']."</b>",
|
||||
"<b>".$saldo['waehrung']."</b>"
|
||||
);
|
||||
$et->AddRow($row);
|
||||
}
|
||||
return($et->DisplayNew('return',""));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2241,7 +2241,7 @@ $this->app->Tpl->Add('TODOFORUSER',"<tr><td width=\"90%\">".$tmp[$i]['aufgabe'].
|
||||
$this->app->Tpl->Add('TAB1',"Sie benutzen die kommerzielle Version von Xentral. Alle Rechte vorbehalten. Beachten Sie die Nutzungsbedinungen.<br><br>© Copyright by Xentral ERP Software GmbH Augsburg");
|
||||
}
|
||||
else {
|
||||
$this->app->Tpl->Add('TAB1','OpenXE is free open source software under AGPL-3.0 license, based on <a href="https://xentral.com" target="_blank">Xentral®</a> by Xentral ERP Software GmbH.<br><br><div class="info"><img src="themes/new/images/Xentral_ERP_Logo-200.png"><br>Das Logo und der Link zur Homepage <a href="https://xentral.biz" target=\_blank\>https://xentral.biz</a> dürfen nicht entfernt werden.</div><br>© Copyright by OpenXE project & Xentral ERP Software GmbH Augsburg');
|
||||
$this->app->Tpl->Add('TAB1','OpenXE is free open source software under AGPL/EGPL license, based on <a href="https://xentral.com" target="_blank">Xentral®</a> by Xentral ERP Software GmbH.<br><br><div class="info"><img src="themes/new/images/Xentral_ERP_Logo-200.png"><br>Das Logo und der Link zur Homepage <a href="https://xentral.biz" target=\_blank\>https://xentral.biz</a> dürfen nicht entfernt werden.</div><br>© Copyright by OpenXE project & Xentral ERP Software GmbH Augsburg');
|
||||
}
|
||||
|
||||
if($this->app->erp->isIoncube() && method_exists($this->app->erp, 'IoncubeProperty'))
|
||||
|
@ -371,7 +371,7 @@
|
||||
<div class=\"footer\"><p>Nutzen Sie unseren <a href=\"https://shop.xentral.biz/sonstige/1-jahr-zugang-updateserver-open-source-version.html?c=164?c=164\" target=\"_blank\">Update-Server</a> um auch mit der Open-Source Version mit Updates versorgt zu sein.</p></div>
|
||||
--!>
|
||||
<div class=\"footer\"><p>
|
||||
OpenXE is free open source software under AGPL-3.0 license, based on <a href=\"https://xentral.com\" target=\"_blank\">Xentral®</a> by Xentral ERP Software GmbH.</p></div>
|
||||
OpenXE is free open source software under AGPL/EGPL license, based on <a href=\"https://xentral.com\" target=\"_blank\">Xentral®</a> by Xentral ERP Software GmbH.</p></div>
|
||||
</div></body></html>";
|
||||
}
|
||||
|
||||
|
@ -39,7 +39,7 @@
|
||||
<div id="login-footer">
|
||||
<div class="copyright">
|
||||
© [YEAR] by OpenXE-org & Xentral ERP Software GmbH.<br>
|
||||
OpenXE is free open source software under AGPL-3.0 license, based on <a href="https://xentral.com" target="_blank">Xentral®</a>.<br>
|
||||
OpenXE is free open source software under AGPL/EGPL license, based on <a href="https://xentral.com" target="_blank">Xentral®</a>.<br>
|
||||
[XENTRALVERSION]
|
||||
</div>
|
||||
</div>
|
||||
|
@ -177,6 +177,13 @@ class WidgetGengutschrift
|
||||
$field->AddOption('PayPal','paypal');
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLSelect("zahlungsstatus",0,"zahlungsstatus","","","0");
|
||||
$field->AddOption('offen','offen');
|
||||
$field->AddOption('bezahlt','bezahlt');
|
||||
// $field->AddOption('forderungsverlust','forderungsverlust');
|
||||
// $field->AddOption('abgebucht (bei Lastschrift)','abgebucht');
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("lieferbedingung","text","","30","","","","","","","","0","","");
|
||||
$this->form->NewField($field);
|
||||
|
||||
|
@ -79,6 +79,7 @@ class WidgetGenimportvorlage
|
||||
$field->AddOption('Wiedervorlagen (min. Angabe: datum_faellig, kundennummer,mitarbeiternummer,betreff)','wiedervorlagen');
|
||||
$field->AddOption('Notizen (min. Angabe: datum,kundennummer,mitarbeiternummer,betreff)','notizen');
|
||||
$field->AddOption('Kontenrahmen (min. Angabe: sachkonto,beschriftung,art)','kontorahmen');
|
||||
$field->AddOption('Kontoauszug','kontoauszug');
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("importerstezeilenummer","text","","15","","","","","","","","0","","");
|
||||
|
@ -118,8 +118,8 @@ class WidgetGenrechnung
|
||||
$field = new HTMLSelect("zahlungsstatus",0,"zahlungsstatus","","","0");
|
||||
$field->AddOption('offen','offen');
|
||||
$field->AddOption('bezahlt','bezahlt');
|
||||
$field->AddOption('forderungsverlust','forderungsverlust');
|
||||
$field->AddOption('abgebucht (bei Lastschrift)','abgebucht');
|
||||
// $field->AddOption('forderungsverlust','forderungsverlust');
|
||||
// $field->AddOption('abgebucht (bei Lastschrift)','abgebucht');
|
||||
$this->form->NewField($field);
|
||||
|
||||
$field = new HTMLInput("bezahlt_am","text","","10","","","","","","","","0","","");
|
||||
|
@ -61,7 +61,7 @@
|
||||
<div class="col-xs-12 col-sm-6 col-sm-height">
|
||||
<div class="inside inside-full-height">
|
||||
|
||||
|
||||
<!--
|
||||
<fieldset><legend>{|Forderung|}</legend>
|
||||
<table width="100%" height="240">
|
||||
<tr><td width="200">{|erledigt am|}:</td><td>[MANUELL_VORABBEZAHLT][MSGMANUELL_VORABBEZAHLT] </td></tr>
|
||||
@ -70,6 +70,41 @@
|
||||
<tr><td></td><td>[HINWEISAVIS]</td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
-->
|
||||
|
||||
<fieldset>
|
||||
<legend>{|Zahlungsstatus|}</legend>
|
||||
<table class="tablemahnwesenfestsetzen">
|
||||
<tr>
|
||||
<td width="200">{|Zahlungsstatus|}:</td>
|
||||
<td width="70%">[ZAHLUNGSSTATUS][MSGZAHLUNGSSTATUS]
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="1">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
{|SOLL|}:
|
||||
</td>
|
||||
<td>
|
||||
[SOLL]
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|FEHLT|}:
|
||||
</td>
|
||||
<td id="istdb">
|
||||
[ISTDB]
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,43 +1,3 @@
|
||||
<script type="text/javascript"><!--
|
||||
|
||||
jQuery(document).ready(function() {
|
||||
mahnwesenfest();
|
||||
});
|
||||
|
||||
function skonto()
|
||||
{
|
||||
var ist = $('#ist').val();
|
||||
ist = ist.replace(',', '.');
|
||||
$('#skonto_gegeben').val(($('#soll_tmp').val() - ist).toFixed(2));
|
||||
}
|
||||
|
||||
function mahnwesenfest(cmd)
|
||||
{
|
||||
var inp = 'in'+'put';
|
||||
var sel = 'sel'+'ect';
|
||||
jQuery('table.tablemahnwesenfestsetzen').find(inp).prop('disabled', true); jQuery('table.tablemahnwesenfestsetzen').find(sel).prop('disabled', true);
|
||||
jQuery('table.tablemahnwesenfestsetzen').find(sel).css('background', '#ececec');
|
||||
jQuery('table.tablemahnwesenfestsetzen').find(inp).css('background', '#ececec');
|
||||
jQuery('table.tablemahnwesenfestsetzen').find(inp).first().prop('disabled', false);
|
||||
if(document.getElementById('mahnwesenfestsetzen').checked)
|
||||
{
|
||||
jQuery('table.tablemahnwesenfestsetzen').find(inp).prop('disabled', false);
|
||||
jQuery('table.tablemahnwesenfestsetzen').find(sel).prop('disabled', false);
|
||||
|
||||
jQuery('table.tablemahnwesenfestsetzen').find(inp).css('background', '#fff');
|
||||
jQuery('table.tablemahnwesenfestsetzen').find(sel).css('background', '#fff');
|
||||
|
||||
|
||||
$('.ist').show();
|
||||
$('.istberechnet').hide();
|
||||
} else {
|
||||
$('.ist').hide();
|
||||
$('.istberechnet').show();
|
||||
}
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
|
||||
[SAVEPAGEREALLY]
|
||||
<!-- gehort zu tabview -->
|
||||
<div id="tabs">
|
||||
@ -47,172 +7,300 @@
|
||||
<li><a href="index.php?module=rechnung&action=inlinepdf&id=[ID]&frame=true#tabs-3">Vorschau</a></li>
|
||||
[FURTHERTABS]
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<div id="tabs-1">
|
||||
[MESSAGE]
|
||||
<form action="" method="post" name="eprooform" id="eprooform">
|
||||
[LIEFERID][MSGLIEFERID]
|
||||
[ANSPRECHPARTNERID][MSGANSPRECHPARTNERID]
|
||||
[FORMHANDLEREVENT]
|
||||
|
||||
<!-- // rate anfang -->
|
||||
|
||||
<div class="row"><div class="row-height"><div class="col-xs-12 col-sm-height"><div class="inside inside-full-height">
|
||||
<!-- // ende anfang -->
|
||||
<table width="100%" align="center">
|
||||
<tr>
|
||||
<td> <b style="font-size: 14pt">Rechnung <font color="blue">[NUMMER]</font></b>[KUNDE][RABATTANZEIGE]</td>
|
||||
<td></td>
|
||||
<td align="right" nowrap>[ICONMENU] [SAVEBUTTON]</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div></div></div></div>
|
||||
|
||||
|
||||
<div class="row"><div class="row-height">
|
||||
<div class="col-xs-12 col-md-6 col-sm-height"><div class="inside inside-full-height">
|
||||
<fieldset><legend>{|Allgemein|}</legend>
|
||||
<table class="mkTableFormular">
|
||||
<tr><td width="200">{|Kunde|}:</td><td>[ADRESSE][MSGADRESSE]
|
||||
[BUTTON_UEBERNEHMEN]
|
||||
</td></tr> <tr><td>{|Projekt|}:</td><td>[PROJEKTAUTOSTART][PROJEKT][MSGPROJEKT][PROJEKTAUTOEND]</td></tr>
|
||||
<tr><td>[BEZEICHNUNGAKTIONSCODE]:</td><td>[AKTION][MSGAKTION]</td></tr>
|
||||
<tr><td>{|Status|}:</td><td>[STATUS]</td></tr>
|
||||
[INTERNET]
|
||||
<tr><td>{|Auftrag|}:</td><td>[AUFTRAGID][MSGAUFTRAGID]</td></tr>
|
||||
<tr><td>{|Debitorennummer|}:</td><td>[KUNDENNUMMER_BUCHHALTUNG][MSGKUNDENNUMMER_BUCHHALTUNG]</td></tr>
|
||||
<tr><td>{|Ihre Bestellnummer|}:</td><td>[IHREBESTELLNUMMER][MSGIHREBESTELLNUMMER]</td></tr>
|
||||
<tr><td>{|Interne Bezeichnung|}:</td><td>[INTERNEBEZEICHNUNG][MSGINTERNEBEZEICHNUNG]</td></tr>
|
||||
<tr><td>{|Lieferdatum|}:</td><td>[LIEFERDATUM][MSGLIEFERDATUM]</td></tr>
|
||||
<tr><td>{|Lieferschein|}:</td><td>[LIEFERSCHEINAUTOSTART][LIEFERSCHEIN][MSGLIEFERSCHEIN][LIEFERSCHEINAUTOEND]</td></tr>
|
||||
<tr><td>{|Datum|}:</td><td>[DATUM][MSGDATUM]</td></tr>
|
||||
<tr><td>{|Rechnungskopie|}:</td><td>[DOPPEL][MSGDOPPEL] </td></tr>
|
||||
<tr><td>{|Schreibschutz|}:</td><td>[SCHREIBSCHUTZ][MSGSCHREIBSCHUTZ] </td></tr>
|
||||
<tr><td>[ABWEICHENDEBEZEICHNUNGBESCHRIFTUNG]:</td><td>[ABWEICHENDEBEZEICHNUNG][MSGABWEICHENDEBEZEICHNUNG] </td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div></div>
|
||||
|
||||
|
||||
|
||||
<div class="col-xs-12 col-md-6 col-sm-height"><div class="inside inside-full-height">
|
||||
[MAHNWESENIF]
|
||||
<fieldset><legend>{|Mahnwesen|}</legend>
|
||||
<table class="tablemahnwesenfestsetzen">
|
||||
<tr><td colspan="2">Alle Einstellungen manuell festsetzen: [MAHNWESENFESTSETZEN][MSGMAHNWESENFESTSETZEN] </td></tr>
|
||||
<tr><td></td><td><br></td></tr>
|
||||
<tr><td width="200">{|Zahlungsstatus|}:</td><td width="70%">[ZAHLUNGSSTATUS][MSGZAHLUNGSSTATUS] Bezahlt am: [BEZAHLT_AM][MSGBEZAHLT_AM]
|
||||
</td></tr>
|
||||
<tr><td></td><td colspan="1">
|
||||
<table>
|
||||
<tr><td>{|SOLL|}:</td><td>[SOLL]</td></tr>
|
||||
<tr class="ist"><td>{|IST|}:</td><td>[IST][MSGIST] <i>(manuelle Eingabe)</i></td></tr>
|
||||
<tr class="istberechnet"><td>{|IST|}:</td><td>
|
||||
[LIVEIST] </td></tr>
|
||||
<tr><td>{|Skonto gegeben|}:</td><td>[SKONTO_GEGEBEN][MSGSKONTO_GEGEBEN] <img src="./themes/new/images/add.png" onclick=skonto() title="Skonto berechnen"> <i>(als Geldbetrag)</i></td></tr>
|
||||
</table></td></tr>
|
||||
</table>
|
||||
<table>
|
||||
<tr><td width="200">{|Mahnstufe|}:</td><td width="70%">[MAHNWESEN][MSGMAHNWESEN]
|
||||
</td></tr>
|
||||
<tr><td>{|Mahndatum|}:</td><td>[MAHNWESEN_DATUM][MSGMAHNWESEN_DATUM]</td></tr>
|
||||
<tr><td>{|Sperre|}:</td><td>[MAHNWESEN_GESPERRT][MSGMAHNWESEN_GESPERRT] (nicht im Mahnwesen)</td></tr>
|
||||
<tr><td>{|Bemerkung|}:</td><td>[MAHNWESEN_INTERNEBEMERKUNG][MSGMAHNWESEN_INTERNEBEMERKUNG]</td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
[MAHNWESENELSE]
|
||||
[MAHNWESENENDIF]
|
||||
|
||||
|
||||
</div></div>
|
||||
</div></div>
|
||||
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
|
||||
<fieldset><legend>{|Stammdaten|}</legend>
|
||||
<table border="0" class="mkTableFormular">
|
||||
<tr><td width="200">{|Typ|}:</td><td width="200">[TYP][MSGTYP]</td></tr>
|
||||
<tr><td>{|Name|}:</td><td>[NAME][MSGNAME]</td></tr>
|
||||
<tr><td>{|Titel|}:</td><td>[TITEL][MSGTITEL]</td></tr>
|
||||
<tr><td>{|Ansprechpartner|}:</td><td>[ANSPRECHPARTNER][MSGANSPRECHPARTNER]</td></tr> <tr><td>{|Abteilung|}:</td><td>[ABTEILUNG][MSGABTEILUNG]</td></tr>
|
||||
<tr><td>{|Unterabteilung|}:</td><td>[UNTERABTEILUNG][MSGUNTERABTEILUNG]</td></tr>
|
||||
<tr><td>{|Adresszusatz|}:</td><td>[ADRESSZUSATZ][MSGADRESSZUSATZ]</td></tr>
|
||||
<tr><td>{|Straße|}:</td><td>[STRASSE][MSGSTRASSE]</td></tr>
|
||||
<tr><td>{|PLZ/Ort|}:</td><td>[PLZ][MSGPLZ] [ORT][MSGORT]</td></tr>
|
||||
[VORBUNDESSTAAT]<tr valign="top"><td><label for="bundesstaat">{|Bundesstaat|}:</label></td><td colspan="2">[EPROO_SELECT_BUNDESSTAAT]</td></tr>[NACHBUNDESSTAAT]
|
||||
<tr><td>{|Land|}:</td><td>[EPROO_SELECT_LAND]</td></tr>
|
||||
<div id="tabs-1">
|
||||
[MESSAGE]
|
||||
<form action="" method="post" name="eprooform" id="eprooform">
|
||||
[LIEFERID][MSGLIEFERID]
|
||||
[ANSPRECHPARTNERID][MSGANSPRECHPARTNERID]
|
||||
[FORMHANDLEREVENT]
|
||||
<!-- // rate anfang -->
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-sm-height">
|
||||
<div class="inside inside-full-height">
|
||||
<!-- // ende anfang -->
|
||||
<table width="100%" align="center">
|
||||
<tr>
|
||||
<td> <b style="font-size: 14pt">Rechnung <font color="blue">[NUMMER]</font></b>[KUNDE][RABATTANZEIGE]</td>
|
||||
<td></td>
|
||||
<td align="right" nowrap>[ICONMENU] [SAVEBUTTON]</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table class="mkTableFormular">
|
||||
<tr><td>{|Telefon|}:</td><td>[TELEFON][MSGTELEFON]</td></tr>
|
||||
<tr><td>{|Telefax|}:</td><td>[TELEFAX][MSGTELEFAX]</td></tr>
|
||||
<tr><td>{|E-Mail|}:</td><td>[EMAIL][MSGEMAIL]</td></tr>
|
||||
<tr><td>Anschreiben</td><td>[ANSCHREIBEN][MSGANSCHREIBEN]</td></tr>
|
||||
<tr><td></td><td>[LIEFERADRESSEPOPUP] [ANSPRECHPARTNERPOPUP]</td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-6 col-sm-height">
|
||||
<div class="inside inside-full-height">
|
||||
|
||||
<fieldset><legend>{|Freitext|}</legend>
|
||||
[FREITEXT][MSGFREITEXT]
|
||||
<fieldset>
|
||||
<legend>{|Allgemein|}</legend>
|
||||
<table class="mkTableFormular">
|
||||
<tr>
|
||||
<td width="200">{|Kunde|}:</td>
|
||||
<td>[ADRESSE][MSGADRESSE]
|
||||
[BUTTON_UEBERNEHMEN]
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Projekt|}:</td>
|
||||
<td>[PROJEKTAUTOSTART][PROJEKT][MSGPROJEKT][PROJEKTAUTOEND]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>[BEZEICHNUNGAKTIONSCODE]:</td>
|
||||
<td>[AKTION][MSGAKTION]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Status|}:</td>
|
||||
<td>[STATUS]</td>
|
||||
</tr>
|
||||
[INTERNET]
|
||||
<tr>
|
||||
<td>{|Auftrag|}:</td>
|
||||
<td>[AUFTRAGID][MSGAUFTRAGID]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Debitorennummer|}:</td>
|
||||
<td>[KUNDENNUMMER_BUCHHALTUNG][MSGKUNDENNUMMER_BUCHHALTUNG]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Ihre Bestellnummer|}:</td>
|
||||
<td>[IHREBESTELLNUMMER][MSGIHREBESTELLNUMMER]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Interne Bezeichnung|}:</td>
|
||||
<td>[INTERNEBEZEICHNUNG][MSGINTERNEBEZEICHNUNG]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Lieferdatum|}:</td>
|
||||
<td>[LIEFERDATUM][MSGLIEFERDATUM]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Lieferschein|}:</td>
|
||||
<td>[LIEFERSCHEINAUTOSTART][LIEFERSCHEIN][MSGLIEFERSCHEIN][LIEFERSCHEINAUTOEND]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Datum|}:</td>
|
||||
<td>[DATUM][MSGDATUM]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Rechnungskopie|}:</td>
|
||||
<td>[DOPPEL][MSGDOPPEL] </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Schreibschutz|}:</td>
|
||||
<td>[SCHREIBSCHUTZ][MSGSCHREIBSCHUTZ] </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>[ABWEICHENDEBEZEICHNUNGBESCHRIFTUNG]:</td>
|
||||
<td>[ABWEICHENDEBEZEICHNUNG][MSGABWEICHENDEBEZEICHNUNG] </td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-xs-12 col-md-6 col-sm-height">
|
||||
<div class="inside inside-full-height">
|
||||
|
||||
<fieldset><legend>{|Kopftext|}</legend>
|
||||
[MAHNWESENIF]
|
||||
<fieldset>
|
||||
<legend>{|Zahlungsstatus|}</legend>
|
||||
<table class="tablemahnwesenfestsetzen">
|
||||
<tr>
|
||||
<td width="200">{|Zahlungsstatus|}:</td>
|
||||
<td width="70%">[ZAHLUNGSSTATUS][MSGZAHLUNGSSTATUS]
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="1">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
{|SOLL|}:
|
||||
</td>
|
||||
<td>
|
||||
[SOLL]
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{|FEHLT|}:
|
||||
</td>
|
||||
<td id="istdb">
|
||||
[ISTDB]
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table>
|
||||
<tr>
|
||||
<td width="200">{|Mahnstufe|}:</td>
|
||||
<td width="70%">[MAHNWESEN][MSGMAHNWESEN]
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Mahndatum|}:</td>
|
||||
<td>[MAHNWESEN_DATUM][MSGMAHNWESEN_DATUM]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Sperre|}:</td>
|
||||
<td>[MAHNWESEN_GESPERRT][MSGMAHNWESEN_GESPERRT] (nicht im Mahnwesen)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Bemerkung|}:</td>
|
||||
<td>[MAHNWESEN_INTERNEBEMERKUNG][MSGMAHNWESEN_INTERNEBEMERKUNG]</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
[MAHNWESENELSE]
|
||||
[MAHNWESENENDIF]
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Stammdaten|}</legend>
|
||||
<table border="0" class="mkTableFormular">
|
||||
<tr>
|
||||
<td width="200">{|Typ|}:</td>
|
||||
<td width="200">[TYP][MSGTYP]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Name|}:</td>
|
||||
<td>[NAME][MSGNAME]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Titel|}:</td>
|
||||
<td>[TITEL][MSGTITEL]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Ansprechpartner|}:</td>
|
||||
<td>[ANSPRECHPARTNER][MSGANSPRECHPARTNER]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Abteilung|}:</td>
|
||||
<td>[ABTEILUNG][MSGABTEILUNG]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Unterabteilung|}:</td>
|
||||
<td>[UNTERABTEILUNG][MSGUNTERABTEILUNG]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Adresszusatz|}:</td>
|
||||
<td>[ADRESSZUSATZ][MSGADRESSZUSATZ]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Straße|}:</td>
|
||||
<td>[STRASSE][MSGSTRASSE]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|PLZ/Ort|}:</td>
|
||||
<td>[PLZ][MSGPLZ] [ORT][MSGORT]</td>
|
||||
</tr>
|
||||
[VORBUNDESSTAAT]
|
||||
<tr valign="top">
|
||||
<td><label for="bundesstaat">{|Bundesstaat|}:</label></td>
|
||||
<td colspan="2">[EPROO_SELECT_BUNDESSTAAT]</td>
|
||||
</tr>
|
||||
[NACHBUNDESSTAAT]
|
||||
<tr>
|
||||
<td>{|Land|}:</td>
|
||||
<td>[EPROO_SELECT_LAND]</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="mkTableFormular">
|
||||
<tr>
|
||||
<td>{|Telefon|}:</td>
|
||||
<td>[TELEFON][MSGTELEFON]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Telefax|}:</td>
|
||||
<td>[TELEFAX][MSGTELEFAX]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|E-Mail|}:</td>
|
||||
<td>[EMAIL][MSGEMAIL]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Anschreiben</td>
|
||||
<td>[ANSCHREIBEN][MSGANSCHREIBEN]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>[LIEFERADRESSEPOPUP] [ANSPRECHPARTNERPOPUP]</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-6 col-sm-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Freitext|}</legend>
|
||||
[FREITEXT][MSGFREITEXT]
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-6 col-sm-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Kopftext|}</legend>
|
||||
[BODYZUSATZ][MSGBODYZUSATZ]
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
</div> </div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-6 col-sm-height">
|
||||
<div class="inside inside-full-height">
|
||||
|
||||
<fieldset><legend>{|Rechnung|}</legend>
|
||||
<table width="100%">
|
||||
<tr><td width="200">{|Zahlungsweise|}:</td><td>[ZAHLUNGSWEISE][MSGZAHLUNGSWEISE]</td></tr>
|
||||
<tr><td><label for="lieferbedingung">{|Lieferbedingung|}:</label></td><td>[LIEFERBEDINGUNG][MSGLIEFERBEDINGUNG]</td></tr>
|
||||
<!--<tr><td>{|Buchhaltung|}:</td><td>[BUCHHALTUNG][MSGBUCHHALTUNG]</td></tr>-->
|
||||
<tr><td>{|Vertrieb|}:</td><td>[VERTRIEB][MSGVERTRIEB] [VERTRIEBBUTTON]</td></tr>
|
||||
<tr><td>{|Bearbeiter|}:</td><td>[BEARBEITER][MSGBEARBEITER] [INNENDIENSTBUTTON]</td></tr>
|
||||
<tr><td>{|Kein Briefpapier und Logo|}:</td><td>[OHNE_BRIEFPAPIER][MSGOHNE_BRIEFPAPIER]</td></tr>
|
||||
<tr><td>{|Artikeltexte ausblenden|}:</td><td>[OHNE_ARTIKELTEXT][MSGOHNE_ARTIKELTEXT]</td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-12 col-md-6 col-sm-height">
|
||||
<div class="inside inside-full-height">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-6 col-sm-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Rechnung|}</legend>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="200">{|Zahlungsweise|}:</td>
|
||||
<td>[ZAHLUNGSWEISE][MSGZAHLUNGSWEISE]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="lieferbedingung">{|Lieferbedingung|}:</label></td>
|
||||
<td>[LIEFERBEDINGUNG][MSGLIEFERBEDINGUNG]</td>
|
||||
</tr>
|
||||
<!--<tr><td>{|Buchhaltung|}:</td><td>[BUCHHALTUNG][MSGBUCHHALTUNG]</td></tr>-->
|
||||
<tr>
|
||||
<td>{|Vertrieb|}:</td>
|
||||
<td>[VERTRIEB][MSGVERTRIEB] [VERTRIEBBUTTON]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Bearbeiter|}:</td>
|
||||
<td>[BEARBEITER][MSGBEARBEITER] [INNENDIENSTBUTTON]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Kein Briefpapier und Logo|}:</td>
|
||||
<td>[OHNE_BRIEFPAPIER][MSGOHNE_BRIEFPAPIER]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Artikeltexte ausblenden|}:</td>
|
||||
<td>[OHNE_ARTIKELTEXT][MSGOHNE_ARTIKELTEXT]</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-6 col-sm-height">
|
||||
<div class="inside inside-full-height">
|
||||
<script type="text/javascript"><!--
|
||||
|
||||
function aktion_buchen(cmd)
|
||||
{
|
||||
if(cmd=="lastschrift") cmd="einzugsermaechtigung";
|
||||
@ -241,77 +329,111 @@
|
||||
|
||||
//-->
|
||||
</script>
|
||||
|
||||
<fieldset><legend>{|Sonstiges|}</legend>
|
||||
<table class="mkTableFormular"><tr><td>{|GLN|}:</td><td>[GLN][MSGGLN]</td></tr></table>
|
||||
</fieldset>
|
||||
|
||||
|
||||
<div id="rechnung" style="display:[RECHNUNG]">
|
||||
<fieldset><legend>{|Rechnung|}</legend>
|
||||
<table width="100%">
|
||||
<tr><td width="200">{|Zahlungsziel (in Tagen)|}:</td><td>[ZAHLUNGSZIELTAGE][MSGZAHLUNGSZIELTAGE]</td></tr>
|
||||
<tr><td nowrap>{|Zahlungsziel Skonto (in Tagen)|}:</td><td>[ZAHLUNGSZIELTAGESKONTO][MSGZAHLUNGSZIELTAGESKONTO]</td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="display:[EINZUGSERMAECHTIGUNG]" id="einzugsermaechtigung">
|
||||
<fieldset><legend>Einzugsermächtigung</legend>
|
||||
<table width="100%">
|
||||
<tr><td width="200">{|Einzugsdatum (frühestens)|}:</td><td>[EINZUGSDATUM][MSGEINZUGSDATUM]</td></tr>
|
||||
<!--
|
||||
<tr><td>{|Inhaber|}:</td><td>[BANK_INHABER][MSGBANK_INHABER]</td></tr>
|
||||
<tr><td>{|Institut|}:</td><td>[BANK_INSTITUT][MSGBANK_INSTITUT]</td></tr>
|
||||
<tr><td>{|BLZ|}:</td><td>[BANK_BLZ][MSGBANK_BLZ]</td></tr>
|
||||
<tr><td>{|Konto|}:</td><td>[BANK_KONTO][MSGBANK_KONTO]</td></tr>
|
||||
-->
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="display:[PAYPAL]" id="paypal">
|
||||
</div>
|
||||
|
||||
<div style="display:[KREDITKARTE]" id="kreditkarte">
|
||||
<fieldset><legend>{|Kreditkarte|}</legend>
|
||||
<fieldset>
|
||||
<legend>{|Sonstiges|}</legend>
|
||||
<table class="mkTableFormular">
|
||||
<tr>
|
||||
<td>{|GLN|}:</td>
|
||||
<td>[GLN][MSGGLN]</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<div id="rechnung" style="display:[RECHNUNG]">
|
||||
<fieldset>
|
||||
<legend>{|Rechnung|}</legend>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="200">{|Zahlungsziel (in Tagen)|}:</td>
|
||||
<td>[ZAHLUNGSZIELTAGE][MSGZAHLUNGSZIELTAGE]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap>{|Zahlungsziel Skonto (in Tagen)|}:</td>
|
||||
<td>[ZAHLUNGSZIELTAGESKONTO][MSGZAHLUNGSZIELTAGESKONTO]</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div style="display:[EINZUGSERMAECHTIGUNG]" id="einzugsermaechtigung">
|
||||
<fieldset>
|
||||
<legend>Einzugsermächtigung</legend>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="200">{|Einzugsdatum (frühestens)|}:</td>
|
||||
<td>[EINZUGSDATUM][MSGEINZUGSDATUM]</td>
|
||||
</tr>
|
||||
<!--
|
||||
<tr><td>{|Inhaber|}:</td><td>[BANK_INHABER][MSGBANK_INHABER]</td></tr>
|
||||
<tr><td>{|Institut|}:</td><td>[BANK_INSTITUT][MSGBANK_INSTITUT]</td></tr>
|
||||
<tr><td>{|BLZ|}:</td><td>[BANK_BLZ][MSGBANK_BLZ]</td></tr>
|
||||
<tr><td>{|Konto|}:</td><td>[BANK_KONTO][MSGBANK_KONTO]</td></tr>
|
||||
-->
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div style="display:[PAYPAL]" id="paypal"></div>
|
||||
<div style="display:[KREDITKARTE]" id="kreditkarte">
|
||||
<fieldset>
|
||||
<legend>{|Kreditkarte|}</legend>
|
||||
<table>
|
||||
<tr><td width="200">{|Kreditkarte|}:</td><td>[KREDITKARTE_TYP][MSGKREDITKARTE_TYP]</td>
|
||||
<tr>
|
||||
<td width="200">{|Kreditkarte|}:</td>
|
||||
<td>[KREDITKARTE_TYP][MSGKREDITKARTE_TYP]</td>
|
||||
</tr>
|
||||
<tr><td>{|Karteninhaber|}:</td><td>[KREDITKARTE_INHABER][MSGKREDITKARTE_INHABER]</td>
|
||||
<tr>
|
||||
<td>{|Karteninhaber|}:</td>
|
||||
<td>[KREDITKARTE_INHABER][MSGKREDITKARTE_INHABER]</td>
|
||||
</tr>
|
||||
<tr><td>{|Kreditkartennummer|}:</td><td>[KREDITKARTE_NUMMER][MSGKREDITKARTE_NUMMER]</td>
|
||||
<tr>
|
||||
<td>{|Kreditkartennummer|}:</td>
|
||||
<td>[KREDITKARTE_NUMMER][MSGKREDITKARTE_NUMMER]</td>
|
||||
</tr>
|
||||
<tr><td>{|Prüfnummer|}:</td><td>[KREDITKARTE_PRUEFNUMMER][MSGKREDITKARTE_PRUEFNUMMER]</td>
|
||||
<tr>
|
||||
<td>{|Prüfnummer|}:</td>
|
||||
<td>[KREDITKARTE_PRUEFNUMMER][MSGKREDITKARTE_PRUEFNUMMER]</td>
|
||||
</tr>
|
||||
<tr><td>{|Gültig bis|}:</td><td>
|
||||
<tr>
|
||||
<td>{|Gültig bis|}:</td>
|
||||
<td>
|
||||
[KREDITKARTE_MONAT][MSGKREDITKARTE_MONAT]
|
||||
[KREDITKARTE_JAHR][MSGKREDITKARTE_JAHR]
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
|
||||
<div>
|
||||
<fieldset><legend>{|Skonto (nur bei Rechnung und Lastschrift)|}</legend>
|
||||
<table width="100%">
|
||||
<tr><td width="200">{|Skonto|}:</td><td>[ZAHLUNGSZIELSKONTO][MSGZAHLUNGSZIELSKONTO]</td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
|
||||
[STARTDISABLEVERBAND]
|
||||
<div style="">
|
||||
<fieldset><legend>{|Verband|}</legend>
|
||||
<table width="100%">
|
||||
[VERBANDINFOSTART]<tr><td width="200">{|Verband / Gruppe|}:</td><td colspan="6">[VERBAND]</td></tr>[VERBANDINFOENDE]<tr><td>{|Rabatt|}:</td><td>Grund %</td><td>1 in %</td><td>2 in %</td><td>3 in %</td><td>4 in %</td><td>5 in %</td></tr>
|
||||
<tr><td></td>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div>
|
||||
<fieldset>
|
||||
<legend>{|Skonto (nur bei Rechnung und Lastschrift)|}</legend>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="200">{|Skonto|}:</td>
|
||||
<td>[ZAHLUNGSZIELSKONTO][MSGZAHLUNGSZIELSKONTO]</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
[STARTDISABLEVERBAND]
|
||||
<div style="">
|
||||
<fieldset>
|
||||
<legend>{|Verband|}</legend>
|
||||
<table width="100%">
|
||||
[VERBANDINFOSTART]
|
||||
<tr>
|
||||
<td width="200">{|Verband / Gruppe|}:</td>
|
||||
<td colspan="6">[VERBAND]</td>
|
||||
</tr>
|
||||
[VERBANDINFOENDE]
|
||||
<tr>
|
||||
<td>{|Rabatt|}:</td>
|
||||
<td>Grund %</td>
|
||||
<td>1 in %</td>
|
||||
<td>2 in %</td>
|
||||
<td>3 in %</td>
|
||||
<td>4 in %</td>
|
||||
<td>5 in %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>[RABATT][MSGRABATT]</td>
|
||||
<td>[RABATT1][MSGRABATT1]</td>
|
||||
<td>[RABATT2][MSGRABATT2]</td>
|
||||
@ -319,115 +441,124 @@
|
||||
<td>[RABATT4][MSGRABATT4]</td>
|
||||
<td>[RABATT5][MSGRABATT5]</td>
|
||||
</tr>
|
||||
<tr><td colspan="7">Information:<br>[VERBANDINFO]</td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
[ENDEDISABLEVERBAND]
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-sm-height">
|
||||
<div class="inside inside-full-height">
|
||||
|
||||
|
||||
<fieldset><legend>{|Interne Bemerkung|}</legend>
|
||||
[INTERNEBEMERKUNG][MSGINTERNEBEMERKUNG]
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-sm-6 col-sm-height">
|
||||
<div class="inside inside-full-height">
|
||||
|
||||
|
||||
<fieldset><legend>UST-Prüfung</legend>
|
||||
<table width="100%">
|
||||
<tr><td width="200">{|UST ID|}:</td><td>[USTID][MSGUSTID]</td></tr>
|
||||
|
||||
<tr><td>{|Besteuerung|}:</td><td>[UST_BEFREIT][MSGUST_BEFREIT] [KEINSTEUERSATZ][MSGKEINSTEUERSATZ] {|ohne Hinweis bei EU oder Export|}</td></tr>
|
||||
<tr><td>{|Brief bestellt|}:</td><td>[USTBRIEF][MSGUSTBRIEF]</td></tr>
|
||||
<tr><td>{|Brief Eingang|}:</td><td>[USTBRIEF_EINGANG][MSGUSTBRIEF_EINGANG]</td></tr>
|
||||
<tr><td>{|Brief Eingang am|}:</td><td>[USTBRIEF_EINGANG_AM][MSGUSTBRIEF_EINGANG_AM]</td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-12 col-sm-6 col-sm-height">
|
||||
<div class="inside inside-full-height">
|
||||
|
||||
<fieldset><legend>{|Einstellung|}</legend>
|
||||
<table width="100%">
|
||||
<tr><td width="200">{|Anzeige Steuer|}:</td><td>[ANZEIGESTEUER][MSGANZEIGESTEUER]</td></tr>
|
||||
<tr><td>{|Währung|}:</td><td>[WAEHRUNG][MSGWAEHRUNG]</td></tr>
|
||||
<tr><td>{|Sprache|}:</td><td>[SPRACHE][MSGSPRACHE]</td></tr>
|
||||
<tr><td>{|Wechselkurs|}:</td><td>[KURS][MSGKURS]</td></tr>
|
||||
<tr><td>{|Kostenstelle|}:</td><td>[KOSTENSTELLE][MSGKOSTENSTELLE]</td></tr>
|
||||
</table>
|
||||
|
||||
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<br><br>
|
||||
<table width="100%">
|
||||
<tr><td align="right">
|
||||
<tr>
|
||||
<td colspan="7">Information:<br>[VERBANDINFO]</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
[ENDEDISABLEVERBAND]
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-sm-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Interne Bemerkung|}</legend>
|
||||
[INTERNEBEMERKUNG][MSGINTERNEBEMERKUNG]
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-sm-6 col-sm-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>UST-Prüfung</legend>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="200">{|UST ID|}:</td>
|
||||
<td>[USTID][MSGUSTID]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Besteuerung|}:</td>
|
||||
<td>[UST_BEFREIT][MSGUST_BEFREIT] [KEINSTEUERSATZ][MSGKEINSTEUERSATZ] {|ohne Hinweis bei EU oder Export|}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Brief bestellt|}:</td>
|
||||
<td>[USTBRIEF][MSGUSTBRIEF]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Brief Eingang|}:</td>
|
||||
<td>[USTBRIEF_EINGANG][MSGUSTBRIEF_EINGANG]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Brief Eingang am|}:</td>
|
||||
<td>[USTBRIEF_EINGANG_AM][MSGUSTBRIEF_EINGANG_AM]</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6 col-sm-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Einstellung|}</legend>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="200">{|Anzeige Steuer|}:</td>
|
||||
<td>[ANZEIGESTEUER][MSGANZEIGESTEUER]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Währung|}:</td>
|
||||
<td>[WAEHRUNG][MSGWAEHRUNG]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Sprache|}:</td>
|
||||
<td>[SPRACHE][MSGSPRACHE]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Wechselkurs|}:</td>
|
||||
<td>[KURS][MSGKURS]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{|Kostenstelle|}:</td>
|
||||
<td>[KOSTENSTELLE][MSGKOSTENSTELLE]</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br><br>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td align="right">
|
||||
<input type="submit" name="speichern"
|
||||
value="Speichern" />
|
||||
</td></tr></table>
|
||||
</div>
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
<div id="tabs-2">
|
||||
<div class="overflow-scroll">
|
||||
|
||||
<!-- // rate anfang -->
|
||||
<table width="100%" cellpadding="0" cellspacing="5" border="0" align="center">
|
||||
<tr><td>
|
||||
|
||||
|
||||
<!-- // ende anfang -->
|
||||
<table width="100%" style="" align="center">
|
||||
<tr>
|
||||
<td width="33%"></td>
|
||||
<td align="center"><b style="font-size: 14pt">Rechnung <font color="blue">[NUMMER]</font></b>[KUNDE][RABATTANZEIGE]</td>
|
||||
<td width="33%" align="right">[ICONMENU2]</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
[POS]
|
||||
|
||||
</td></tr></table>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div id="tabs-3">
|
||||
</div>
|
||||
|
||||
[FURTHERTABSDIV]
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
<div id="tabs-2">
|
||||
<div class="overflow-scroll">
|
||||
<!-- // rate anfang -->
|
||||
<table width="100%" cellpadding="0" cellspacing="5" border="0" align="center">
|
||||
<tr>
|
||||
<td>
|
||||
<!-- // ende anfang -->
|
||||
<table width="100%" style="" align="center">
|
||||
<tr>
|
||||
<td width="33%"></td>
|
||||
<td align="center"><b style="font-size: 14pt">Rechnung <font color="blue">[NUMMER]</font></b>[KUNDE][RABATTANZEIGE]</td>
|
||||
<td width="33%" align="right">[ICONMENU2]</td>
|
||||
</tr>
|
||||
</table>
|
||||
[POS]
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div id="tabs-3"></div>
|
||||
[FURTHERTABSDIV]
|
||||
<!-- tab view schließen -->
|
||||
</div>
|
||||
|
||||
|
@ -130,7 +130,6 @@ class WidgetRechnung extends WidgetGenRechnung
|
||||
|
||||
$status = $this->app->erp->GetStatusRechnung();
|
||||
|
||||
|
||||
$zahlungsweisenmodule = $this->app->DB->SelectArr("SELECT id, modul, type FROM zahlungsweisen WHERE verhalten = 'rechnung'");
|
||||
|
||||
if (!is_null($zahlungsweisenmodule)) {
|
||||
|
Loading…
Reference in New Issue
Block a user