Compare commits

...

65 Commits

Author SHA1 Message Date
OpenXE
3efbcb82d9 db_schema.json changed order of fibu_objekte_view and fibu_buchungen_alle_view 2023-04-24 16:54:30 +02:00
OpenXE
f0f468c94e mustal bugfix create table key type 2023-04-24 16:49:34 +02:00
OpenXE
b82d17d6f4 Merge branch 'prerelease.1.9' 2023-04-24 16:23:37 +02:00
OpenXE
9db337ce95 release 1.9 2023-04-24 16:23:21 +02:00
OpenXE
62f6df1aeb fibu_buchungen added error when startdate is not set 2023-04-23 17:18:51 +02:00
OpenXE
828c1b1a75 Kontoauszuege removed "new" button. 2023-04-23 16:54:52 +02:00
OpenXE
7de88ca3b5 gutschrift freigabe with our without offsettung against rechnung, with offsetting creates fibu_buchung 2023-04-21 14:59:02 +02:00
OpenXE
5794301826 fibu_buchungen db_schema changed views, removed gutschrift vs. rechnung, fibu_objekte independent from zahlungsstatus 2023-04-21 14:52:48 +02:00
OpenXE
1a28b5d75b Prerelease 1.9, added EGPL 2023-04-18 19:14:59 +02:00
OpenXE
df292c9c02 db_schema.json revert changes from 95d26d5c6e database upgrade to utf8mb4
reverted change from varchar(255) to text for many columns, due to utf8mb4 problems
2023-04-18 11:54:12 +02:00
OpenXE
f0a24b7e5b ticket system improved logging on invalid date 2023-04-17 18:21:43 +02:00
OpenXE
50df55e35e bugfix auftrag offene status <> 'storniert' 2023-04-17 13:45:34 +02:00
OpenXE
4720cc8e94 fibu_buchungen einzelzuordnen multifilter 2023-04-15 18:45:09 +02:00
OpenXE
64d6b90312 fibu_buchungen usability improvements 2023-04-15 10:48:47 +02:00
OpenXE
17bdb1c5e1 auftrag set vorkasse_ok according to fibu_buchungen 2023-04-13 21:58:11 +02:00
OpenXE
c4eaaa966a removed fints-hbci, white-cup-filled-by-coffee.jpg 2023-04-12 22:16:52 +02:00
OpenXE
a43ac720b6 fibu_buchungen single with sachkonto 2023-04-11 19:52:58 +02:00
OpenXE
170a33687f fibu_buchungen views fixed empty date on kontorahmen 2023-04-11 16:41:20 +02:00
OpenXE
ea6a6a5dda rechnung removed all updates of ist, except from fibu_buchungen 2023-04-11 15:40:23 +02:00
OpenXE
69172672b2 fibu_buchhaltung belege zuordnen multi option 2023-04-11 15:20:40 +02:00
OpenXE
667b70eaf5 fibu_buchungen booking to kontorahmen 2023-04-08 17:48:39 +02:00
OpenXE
44af8f3b3d Bugfix erpapi lagernummern typo 2023-04-07 18:17:57 +02:00
OpenXE
82fc367405 fibu_buchungen einzelzuordnung 2023-04-06 15:33:53 +02:00
OpenXE
828af9ab50 fibu_buchungen check saldo for vorschlag 2023-04-05 20:38:31 +02:00
OpenXE
e79f2839e2 fibu_objekte_view added sachkonto and is_beleg filter 2023-04-05 12:52:50 +02:00
OpenXE
7aab51a390 fibu_buchungen vorschlag now includes saldo info 2023-04-05 12:32:10 +02:00
OpenXE
3dfba163df fibu_buchungen zuordnen with tablesearch instead of easytable 2023-04-05 11:07:12 +02:00
OpenXE
4a4b1f8320 bugfix import kontoauszuege importfehler 2023-04-05 11:02:06 +02:00
OpenXE
03f0f7217b rechnung & gutschrift set zahlungsstatus according to saldo 2023-04-05 11:01:16 +02:00
OpenXE
c6a4cf0d23 Usability improvement kontoauszuege and buchungen 2023-04-04 14:15:01 +02:00
OpenXE
92f016d06b bugfix kontoauszuege import decimals and sum display 2023-04-04 13:48:40 +02:00
OpenXE
222b0ac239 importvorlage kontoauszuege 2.betrag 2023-04-04 11:59:53 +02:00
OpenXE
1e59009862 gutschrift mark as offen or bezahlt rework 2023-04-04 11:34:07 +02:00
OpenXE
76740aee02 db_schema changed reference in fibu_buchungen_view from fibu_objekte to fibu_objekte_view 2023-04-04 10:59:49 +02:00
OpenXE
06bc38e66a fibu_buchungen improved cache refresh 2023-04-03 21:17:59 +02:00
OpenXE
ad4599e381 fibu_buchungen_alle converted to cached view for better performance 2023-04-03 20:25:00 +02:00
OpenXE
b1349afb6b fibu_buchungen bugfix search with multiple results 2023-04-03 16:47:44 +02:00
OpenXE
820dc9fec6 kontoauszuege bugfix importer date and filter import errors 2023-04-03 16:23:00 +02:00
OpenXE
46f9e0728d fibu_buchungen add date limit (firmendaten) 2023-04-03 16:10:28 +02:00
OpenXE
8bdedcb72f Develop version 1.8.1 2023-04-02 17:44:11 +02:00
OpenXE
ebd50b4f28 fibu_buchungen document auto assign 2023-04-02 12:23:51 +02:00
OpenXE
85094921a0 bugfix inverted UNIQUE parameter in db_schema and mustal 2023-04-02 11:46:17 +02:00
OpenXE
d97f41e293 db_schema adjustments mainly utf8mb3 2023-04-02 10:23:07 +02:00
OpenXE
b701a880a4 Merge remote-tracking branch 'github/master' into develop.1.8.1 2023-04-01 22:39:15 +02:00
OpenXE
2b573268fa fibu buchungen 2023-04-01 20:42:37 +02:00
OpenXE
689fdb0490 Kontoauszuege konto overview and saldo 2023-03-30 19:29:46 +02:00
OpenXE
c223e7c956 mustal improvement view handling 2023-03-30 15:21:33 +02:00
OpenXE
a15d7b0b41 database utf8 rework 2023-03-30 15:21:09 +02:00
OpenXE
3715c2f205 firmendaten hotfix freifelder 2023-03-30 12:33:38 +02:00
OpenXE
95d26d5c6e database upgrade to utf8mb4 2023-03-30 11:24:14 +02:00
OpenXE
5bc7a64c8c mustal improvement on collation handling 2023-03-30 11:19:46 +02:00
OpenXE
b7153c423c fibu_buchungen added, rework of zahlungen auftrag, rechnung, gutschrift 2023-03-28 12:30:57 +02:00
OpenXE
1637bf965a bugfix mustal default values forced lower case 2023-03-28 12:18:41 +02:00
OpenXE
9a6ed1ae75 fibu_buchungen_alle with type and id of editable item 2023-03-27 16:31:30 +02:00
OpenXE
49dfd255e4 Bugfix briefpapier freitexte width 2023-03-26 13:26:49 +02:00
OpenXE
791a12b731 Bugfix user avatar 2023-03-26 13:23:15 +02:00
OpenXE
62e16cfcc1 fibu_buchungen database definitions 2023-03-25 21:23:20 +01:00
OpenXE
c220639e82 Zahlungsstatus Rechnung Gutschrift reworked with fibu_buchungen 2023-03-25 17:50:04 +01:00
OpenXE
6a566a99af Kontoauszuege module & importer 2023-03-22 20:37:17 +01:00
OpenXE
e356051f5a Zahlungen improvements 2023-03-22 14:33:34 +01:00
OpenXE
1f52278758 mustal added handling of UNIQUE keys 2023-03-21 20:20:44 +01:00
OpenXE
ab91715c20 Zahlungen minidetail and collation of relevant documents as tree 2023-03-16 11:49:45 +01:00
OpenXE
8dd78dfa55 Bugfix lager wert calculation of prices added geloescht != 1 and date range 2023-03-14 13:40:14 +01:00
OpenXE
71883d34ae Zahlungseingang Minidetail hacked rechnung, gutschrift 2023-03-13 17:12:38 +01:00
OpenXE
73dbbb061a Geschaeftskonto module restored (basic variant) 2023-03-13 14:22:39 +01:00
41 changed files with 15754 additions and 9253 deletions

View File

@ -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;
}

View File

@ -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
$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()]);
return(false);
} else {
$timestamp = $date->getTimestamp();
$frommd5 = md5($from . $subject . $timestamp);
try {
$date = $message->getDate();
}
catch (exception $e) {
$this->logger->debug('Invalid date',['exc-message' => $e->getMessage(),'subject' => $message->getSubject(), $message->getHeader('date')->getValue()]);
return(false);
}
$timestamp = $date->getTimestamp();
$frommd5 = md5($from . $subject . $timestamp);
$empfang = $date->format('Y-m-d H:i:s');
$sql = "SELECT COUNT(id)
FROM `emailbackup_mails`

View File

@ -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&uuml;'
'Zahlweise', 'Betrag (brutto)', 'Zahlstatus','Differenz','RE-Nr.', 'Status','Monitor' ,'Men&uuml;'
);
$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,
r.belegnr,
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
$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,
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,
".$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,
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
$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=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

View File

@ -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);

View File

@ -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'];
$query_result = mysqli_query($mysqli, $sql);
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_differences[] = $compare_difference;
// }
$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] = $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];
}
}
@ -562,13 +586,13 @@ function mustal_calculate_db_upgrade(array $compare_def, array $db_def, array &$
$keystring = "PRIMARY KEY ";
} else {
if(array_key_exists('Index_type', $key)) {
$index_type = $key['Index_type'];
} else {
// if(array_key_exists('Index_type', $key)) {
// $index_type = $key['Index_type'];
// } else {
$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);
}

View File

@ -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).")";

View File

@ -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&uuml;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))

View File

@ -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;

View File

@ -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&auml;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&uuml;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');

View File

@ -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>

View 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&auml;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>

View 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&uuml;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" />&nbsp;Mit Abweichung buchen&nbsp;</td>
</tr>
<tr>
<td><input type="checkbox" value="1" id="autoalle" />&nbsp;alle markieren&nbsp;
<select id="sel_aktion" name="sel_aktion">
<option value="buchen">{|auf Ausgew&auml;hlte buchen|}</option>
<option value="buchen_diff_sachkonto">{|auf Ausgew&auml;hlte buchen, Gegenbeleg auf Sachkonto ausgleichen|}</option>
</select>&nbsp;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>

View 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&uuml;bersicht. Salden m&uuml;ssen &uuml;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>

View 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&auml;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" />&nbsp;alle markieren&nbsp;
<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>&nbsp;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>

View File

@ -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>

View File

@ -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>

View File

@ -45,8 +45,8 @@
<input type="checkbox" id="auswahlalle" onchange="alleauswaehlen();" />&nbsp;{|alle markieren|}&nbsp;
<select id="sel_aktion" name="sel_aktion">
<option value="">{|bitte w&auml;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>

View File

@ -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&auml;hrung</td>
<td>Muss in den W&auml;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>

View File

@ -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">&nbsp;</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>

View File

@ -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>
<td width="150">
{|Kurzbezeichnung|}:
</td>
<td>
<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 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>{|Typ|}:</td>
<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>
<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&ouml;nnen deaktiviert werden.|}</i>
<td>
{|Aktiv|}:
</td>
<td>
<input type="checkbox" name="aktiv" id="aktiv" value="1"
[AKTIV]><i>{|Aktiv. Nicht mehr verwendete Konten k&ouml;nnen deaktiviert werden.|}</i>
</td>
</tr>
<tr>
<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&uuml;ckt werden muss diese Option gesetzt werden.|}</i>
<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&uuml;ckt werden muss diese Option gesetzt werden.|}</i>
</td>
</tr>
<tr>
<td>{|&Auml;nderungen erlauben|}:</td>
<td><input type="checkbox" name="schreibbar" id="schreibbar" value="1"
<td>
{|&Auml;nderungen erlauben|}:
</td>
<td>
<input type="checkbox" name="schreibbar" id="schreibbar" value="1"
[SCHREIBBAR]><i>&nbsp;{|Es d&uuml;rfen nachtr&auml;glich Kontobuchungen ver&auml;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&auml;ubiger ID|}:</td>
<td><input type="text" name="glaeubiger" id="glaeubiger" size="40" value="[GLAEUBIGER]"></td>
<td>
{|Gl&auml;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]">&nbsp;
<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]">&nbsp;
<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]">
&nbsp;{|Eingabeformat|}:&nbsp;<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>
<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>
<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"
<td width="150">{|Buchungstext|}:
</td>
<td>
<input type="text" name="importfeldbuchungstext" id="importfeldbuchungstext" size="15"
value="[IMPORTFELDBUCHUNGSTEXT]">&nbsp;<i> {|Mit + mehre Spalten zusammenf&uuml;gen (aus dem Inhalt wird eine Pr&uuml;fsumme berechnet, daher so eindeutig wie m&ouml;glich machen.)|}</i>
</td>
</tr>
<tr>
<td width="150">{|W&auml;hrung|}:</td>
<td><input type="text" name="importfeldwaehrung" id="importfeldwaehrung" size="15"
value="[IMPORTFELDWAEHRUNG]">&nbsp;<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]">&nbsp;<i>{|Extra Spalte in der steht was der Betrag ist.|}</i>
<td width="150">{|W&auml;hrung|}:
</td>
</tr>
<tr>
<td width="150"></td>
<td>
<input type="text" name="importfeldwaehrung" id="importfeldwaehrung" size="15"
value="[IMPORTFELDWAEHRUNG]">&nbsp;<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]">&nbsp;<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]">&nbsp;<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]">&nbsp;<i>{|z.B. H oder +|}</i>
</td>
</tr>
<tr>
<td>{|Markierung Ausgang|}:&nbsp;</td>
<td><input type="text" name="importfeldkennungsoll" id="importfeldkennungsoll" size="15"
value="[IMPORTFELDKENNUNGSOLL]">&nbsp;<i>{|z.B. S oder -|}</i></td>
<td>
{|Markierung Ausgang|}:&nbsp;
</td>
<td>
<input type="text" name="importfeldkennungsoll" id="importfeldkennungsoll" size="15"
value="[IMPORTFELDKENNUNGSOLL]">&nbsp;<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&auml;nge automatisch abholen|}:</td>
<td><input type="checkbox" name="cronjobaktiv" id="cronjobaktiv" value="1" [CRONJOBAKTIV]></td>
<td>
{|Zahlungseing&auml;nge automatisch abholen|}:
</td>
<td>
<input type="checkbox" name="cronjobaktiv" id="cronjobaktiv" value="1" [CRONJOBAKTIV]>
</td>
</tr>
<tr>
<td>{|Zahlungseing&auml;nge automatisch verbuchen|}:</td>
<td><input type="checkbox" name="cronjobverbuchen" id="cronjobverbuchen" value="1"
[CRONJOBVERBUCHEN]></td>
<td>
{|Zahlungseing&auml;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>

View 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&auml;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>

View 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&uuml;ge bitte &uuml;ber Importzentrale importieren.</legend>
[TAB1]
</form>
</div>
</div>

View 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" />&nbsp;alle markieren&nbsp;</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>

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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;
}

View File

@ -620,6 +620,8 @@ class Gutschrift extends GenGutschrift
$tmp3->DisplayNew('PDFARCHIV','Men&uuml;','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,102 +659,37 @@ 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"
);
$waehrung = empty($gutschriftArr)?'EUR':$gutschriftArr[0]['waehrung'];
if(!$waehrung) {
$waehrung = 'EUR';
}
$zahlungen = $this->app->erp->GetZahlungen($id,'gutschrift');
if (!empty($zahlungen)) {
$et = new EasyTable($this->app);
$rechnungid = empty($gutschriftArr)?0: $gutschriftArr[0]['rechnungid'];
$et->headings = array('Datum','Beleg','Betrag','W&auml;hrung');
$auftragid = $rechnungid <= 0?0:$this->app->DB->Select(
sprintf(
'SELECT `auftragid` FROM `rechnung` WHERE `id` = %d LIMIT 1',
$rechnungid
)
);
$eingang ="<tr><td colspan=\"3\"><b>Zahlungen</b></td></tr>";
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);
}
$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'];
}
$eingang .="<tr><td class=auftrag_cell>".$eingangArr[$i]['datum']
."</td><td class=auftrag_cell>".$eingangArr[$i]['konto']
."&nbsp;(<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']."&nbsp;(<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>";
}
$salden = $this->app->erp->GetSaldenDokument($id,'gutschrift');
foreach ($salden as $saldo) {
$row = array(
'',
'<b>Saldo</b>',
"<b>".$saldo['betrag']."</b>",
"<b>".$saldo['waehrung']."</b>"
);
$et->AddRow($row);
}
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($allowedFrm && $freigabe==$id) {
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;
}
@ -797,15 +750,17 @@ class Gutschrift extends GenGutschrift
$msg = $this->app->erp->base64_url_encode("<div class=\"error\">Die Gutschrift war bereits freigegeben!</div>");
$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($showDefault){
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")
$this->app->erp->CommonReadonly();
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'))

View File

@ -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&ouml;ffnet werden. Eventuell ist die Datei zu gro&szlig; oder die Schreibrechte stimmen nicht!</div> ");
$msg = $this->app->erp->base64_url_encode("<div class=\"error\">Die Datei '".$stueckliste_csv."' konnte nicht ge&ouml;ffnet werden. Eventuell ist die Datei zu gro&szlig; 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);
@ -5106,20 +5192,22 @@ class Importvorlage extends GenImportvorlage {
if(empty($importMasterData) || $importMasterData['status'] === 'cancelled') {
break;
}
}
} // Loop
if($return) {
if($returnids) {
return $ids;
}
return $number_of_rows;
}
if($return) {
if($returnids) {
return $ids;
}
return $number_of_rows;
}
if($ziel==='zeiterfassung' || $ziel==='wiedervorlage' || $ziel==='notizen') {
$msg=$this->app->erp->base64_url_encode("<div class=\"info\">Import durchgef&uuml;hrt.</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&uuml;hrt.</div>");
$this->app->Location->execute("index.php?module=importvorlage&action=import&id=$id&msg=$msg");
if (empty($msg)) {
$msg=$this->app->erp->base64_url_encode("<div class=\"info\">Import durchgef&uuml;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");
}
}
/**

349
www/pages/konten.php Normal file
View 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&uuml;');
$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>&nbsp;<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", "&Uuml;bersicht");
$this->app->erp->MenuEintrag("index.php?module=konten&action=create", "Neu anlegen");
$this->app->erp->MenuEintrag("index.php", "Zur&uuml;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&uuml;ck zur &Uuml;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 &uuml;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
View 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&uuml;');
// $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&uuml;');
$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>&nbsp;<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&uuml;');
$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>&nbsp;<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", "&Uuml;bersicht");
// $this->app->erp->MenuEintrag("index.php?module=kontoauszuege&action=create", "Neu anlegen");
$this->app->erp->MenuEintrag("index.php", "Zur&uuml;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&auml;ge wurden als Importfehler markiert.</div>");
}
}
}
$this->app->erp->MenuEintrag("index.php?module=kontoauszuege&action=list", "&Uuml;bersicht");
// $this->app->erp->MenuEintrag("index.php?module=kontoauszuege&action=create", "Neu anlegen");
$this->app->erp->MenuEintrag("index.php", "Zur&uuml;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&uuml;ck zur &Uuml;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 &uuml;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']);
}
}

View File

@ -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'"
);
@ -887,29 +887,8 @@ class Rechnung extends GenRechnung
$this->app->Tpl->Set('ANGEBOTFARBE',"grey");
$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&uuml;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,17 +1825,16 @@ 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
' &uuml;berein <input type="submit" name="resetextsoll" value="Festgeschriebene Summe zur&uuml;cksetzen" /></div></form>'
);
}
parent::RechnungEdit();
if($id > 0 && $this->app->DB->Select(
sprintf(
@ -2076,7 +2062,8 @@ class Rechnung extends GenRechnung
public function RechnungList()
{
$this->app->DB->Update("UPDATE rechnung SET zahlungsstatus='offen' WHERE zahlungsstatus=''");
$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&auml;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',""));
}
}
}

View File

@ -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>&copy; 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&nbsp;ERP&nbsp;Software&nbsp;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&uuml;rfen nicht entfernt werden.</div><br>&copy; 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&nbsp;ERP&nbsp;Software&nbsp;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&uuml;rfen nicht entfernt werden.</div><br>&copy; Copyright by OpenXE project & Xentral ERP Software GmbH Augsburg');
}
if($this->app->erp->isIoncube() && method_exists($this->app->erp, 'IoncubeProperty'))

View File

@ -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&nbsp;ERP&nbsp;Software&nbsp;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&nbsp;ERP&nbsp;Software&nbsp;GmbH.</p></div>
</div></body></html>";
}

View File

@ -39,7 +39,7 @@
<div id="login-footer">
<div class="copyright">
&copy; [YEAR] by OpenXE-org & Xentral&nbsp;ERP&nbsp;Software&nbsp;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>

View File

@ -1,300 +1,307 @@
<?php
/*
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
*
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
*
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
* to obtain the text of the corresponding license version.
*
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
/*
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
*
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
*
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
* to obtain the text of the corresponding license version.
*
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*/
?>
<?php
class WidgetGengutschrift
{
private $app; //application object
public $form; //store form object
protected $parsetarget; //target for content
public function __construct($app,$parsetarget)
{
$this->app = $app;
$this->parsetarget = $parsetarget;
$this->Form();
}
public function gutschriftDelete()
{
$this->form->Execute("gutschrift","delete");
$this->gutschriftList();
}
function Edit()
{
$this->form->Edit();
}
function Copy()
{
$this->form->Copy();
}
public function Create()
{
$this->form->Create();
}
public function Search()
{
$this->app->Tpl->Set($this->parsetarget,"SUUUCHEEE");
}
public function Summary()
{
$this->app->Tpl->Set($this->parsetarget,"grosse Tabelle");
}
function Form()
{
$this->form = $this->app->FormHandler->CreateNew("gutschrift");
$this->form->UseTable("gutschrift");
$this->form->UseTemplate("gutschrift.tpl",$this->parsetarget);
$field = new HTMLInput("lieferid","hidden","","","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("ansprechpartnerid","hidden","","","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("adresse","text","","20","","","","","","","pflicht","0","","");
$this->form->NewField($field);
$field = new HTMLInput("aktion","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("projekt","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rechnungid","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kundennummer_buchhaltung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("ihrebestellnummer","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("internebezeichnung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("lieferdatum","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("datum","text","","","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLCheckbox("stornorechnung","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("schreibschutz","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("nicht_umsatzmindernd","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLInput("manuell_vorabbezahlt","text","","","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLTextarea("manuell_vorabbezahlt_hinweis",5,30,"","","","","0");
$this->form->NewField($field);
$field = new HTMLSelect("typ",0,"typ","","","0");
$field->AddOption('Firma','firma');
$field->AddOption('Herr','herr');
$field->AddOption('Frau','frau');
$this->form->NewField($field);
$field = new HTMLInput("name","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$this->form->AddMandatory("name","notempty","Pflichfeld!","MSGNAME");
$field = new HTMLInput("titel","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("ansprechpartner","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("abteilung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("unterabteilung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("adresszusatz","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("strasse","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("plz","text","","5","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("ort","text","","19","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("gln","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("telefon","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("telefax","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("email","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("anschreiben","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLTextarea("freitext",5,110,"","","","","0");
$this->form->NewField($field);
$field = new HTMLTextarea("bodyzusatz",5,110,"","","","","0");
$this->form->NewField($field);
$field = new HTMLSelect("zahlungsweise",0,"zahlungsweise","","","0");
$field->AddOption('Kreditkarte','kreditkarte');
$field->AddOption('&Uuml;berweisung','ueberweisung');
$field->AddOption('Bar','bar');
$field->AddOption('PayPal','paypal');
$this->form->NewField($field);
$field = new HTMLInput("lieferbedingung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bearbeiter","text","","","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("vertrieb","text","","40","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bearbeiter","text","","40","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLCheckbox("ohne_briefpapier","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("ohne_artikeltext","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLInput("bank_inhaber","text","","35","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bank_institut","text","","35","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bank_blz","text","","35","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bank_konto","text","","35","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("paypalaccount","text","","35","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLSelect("kreditkarte_typ",0,"kreditkarte_typ","","","0");
$this->form->NewField($field);
$field = new HTMLInput("kreditkarte_inhaber","text","","35","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kreditkarte_nummer","text","","35","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kreditkarte_pruefnummer","text","","5","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLSelect("kreditkarte_monat",0,"kreditkarte_monat","","","0");
$this->form->NewField($field);
$field = new HTMLSelect("kreditkarte_jahr",0,"kreditkarte_jahr","","","0");
$this->form->NewField($field);
$field = new HTMLInput("zahlungszielskonto","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt1","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt2","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt3","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt4","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt5","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLTextarea("internebemerkung",2,110,"","","","","0");
$this->form->NewField($field);
$field = new HTMLInput("ustid","text","","","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLSelect("ust_befreit",0,"ust_befreit","","","0");
$field->AddOption('{|Inland|}','0');
$field->AddOption('{|EU-Lieferung / Lieferschwelle|}','1');
$field->AddOption('{|Export|}','2');
$field->AddOption('{|Steuerfrei Inland|}','3');
$this->form->NewField($field);
$field = new HTMLCheckbox("keinsteuersatz","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("ustbrief","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("ustbrief_eingang","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLInput("ustbrief_eingang_am","text","","35","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLSelect("anzeigesteuer",0,"anzeigesteuer","","","0");
$field->AddOption('automatisch','0');
$field->AddOption('netto','3');
$field->AddOption('brutto','4');
$this->form->NewField($field);
$field = new HTMLInput("waehrung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("sprache","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kurs","text","","15","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kostenstelle","text","","15","","","","","","","","0","","");
$this->form->NewField($field);
}
}
?>
<?php
class WidgetGengutschrift
{
private $app; //application object
public $form; //store form object
protected $parsetarget; //target for content
public function __construct($app,$parsetarget)
{
$this->app = $app;
$this->parsetarget = $parsetarget;
$this->Form();
}
public function gutschriftDelete()
{
$this->form->Execute("gutschrift","delete");
$this->gutschriftList();
}
function Edit()
{
$this->form->Edit();
}
function Copy()
{
$this->form->Copy();
}
public function Create()
{
$this->form->Create();
}
public function Search()
{
$this->app->Tpl->Set($this->parsetarget,"SUUUCHEEE");
}
public function Summary()
{
$this->app->Tpl->Set($this->parsetarget,"grosse Tabelle");
}
function Form()
{
$this->form = $this->app->FormHandler->CreateNew("gutschrift");
$this->form->UseTable("gutschrift");
$this->form->UseTemplate("gutschrift.tpl",$this->parsetarget);
$field = new HTMLInput("lieferid","hidden","","","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("ansprechpartnerid","hidden","","","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("adresse","text","","20","","","","","","","pflicht","0","","");
$this->form->NewField($field);
$field = new HTMLInput("aktion","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("projekt","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rechnungid","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kundennummer_buchhaltung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("ihrebestellnummer","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("internebezeichnung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("lieferdatum","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("datum","text","","","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLCheckbox("stornorechnung","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("schreibschutz","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("nicht_umsatzmindernd","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLInput("manuell_vorabbezahlt","text","","","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLTextarea("manuell_vorabbezahlt_hinweis",5,30,"","","","","0");
$this->form->NewField($field);
$field = new HTMLSelect("typ",0,"typ","","","0");
$field->AddOption('Firma','firma');
$field->AddOption('Herr','herr');
$field->AddOption('Frau','frau');
$this->form->NewField($field);
$field = new HTMLInput("name","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$this->form->AddMandatory("name","notempty","Pflichfeld!","MSGNAME");
$field = new HTMLInput("titel","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("ansprechpartner","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("abteilung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("unterabteilung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("adresszusatz","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("strasse","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("plz","text","","5","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("ort","text","","19","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("gln","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("telefon","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("telefax","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("email","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("anschreiben","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLTextarea("freitext",5,110,"","","","","0");
$this->form->NewField($field);
$field = new HTMLTextarea("bodyzusatz",5,110,"","","","","0");
$this->form->NewField($field);
$field = new HTMLSelect("zahlungsweise",0,"zahlungsweise","","","0");
$field->AddOption('Kreditkarte','kreditkarte');
$field->AddOption('&Uuml;berweisung','ueberweisung');
$field->AddOption('Bar','bar');
$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);
$field = new HTMLInput("bearbeiter","text","","","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("vertrieb","text","","40","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bearbeiter","text","","40","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLCheckbox("ohne_briefpapier","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("ohne_artikeltext","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLInput("bank_inhaber","text","","35","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bank_institut","text","","35","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bank_blz","text","","35","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bank_konto","text","","35","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("paypalaccount","text","","35","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLSelect("kreditkarte_typ",0,"kreditkarte_typ","","","0");
$this->form->NewField($field);
$field = new HTMLInput("kreditkarte_inhaber","text","","35","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kreditkarte_nummer","text","","35","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kreditkarte_pruefnummer","text","","5","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLSelect("kreditkarte_monat",0,"kreditkarte_monat","","","0");
$this->form->NewField($field);
$field = new HTMLSelect("kreditkarte_jahr",0,"kreditkarte_jahr","","","0");
$this->form->NewField($field);
$field = new HTMLInput("zahlungszielskonto","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt1","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt2","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt3","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt4","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt5","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLTextarea("internebemerkung",2,110,"","","","","0");
$this->form->NewField($field);
$field = new HTMLInput("ustid","text","","","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLSelect("ust_befreit",0,"ust_befreit","","","0");
$field->AddOption('{|Inland|}','0');
$field->AddOption('{|EU-Lieferung / Lieferschwelle|}','1');
$field->AddOption('{|Export|}','2');
$field->AddOption('{|Steuerfrei Inland|}','3');
$this->form->NewField($field);
$field = new HTMLCheckbox("keinsteuersatz","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("ustbrief","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("ustbrief_eingang","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLInput("ustbrief_eingang_am","text","","35","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLSelect("anzeigesteuer",0,"anzeigesteuer","","","0");
$field->AddOption('automatisch','0');
$field->AddOption('netto','3');
$field->AddOption('brutto','4');
$this->form->NewField($field);
$field = new HTMLInput("waehrung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("sprache","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kurs","text","","15","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kostenstelle","text","","15","","","","","","","","0","","");
$this->form->NewField($field);
}
}
?>

View File

@ -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","","");

View File

@ -1,344 +1,344 @@
<?php
/*
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
*
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
*
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
* to obtain the text of the corresponding license version.
*
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
/*
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
*
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
*
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
* to obtain the text of the corresponding license version.
*
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*/
?>
<?php
class WidgetGenrechnung
{
private $app; //application object
public $form; //store form object
protected $parsetarget; //target for content
public function __construct($app,$parsetarget)
{
$this->app = $app;
$this->parsetarget = $parsetarget;
$this->Form();
}
public function rechnungDelete()
{
$this->form->Execute("rechnung","delete");
$this->rechnungList();
}
function Edit()
{
$this->form->Edit();
}
function Copy()
{
$this->form->Copy();
}
public function Create()
{
$this->form->Create();
}
public function Search()
{
$this->app->Tpl->Set($this->parsetarget,"SUUUCHEEE");
}
public function Summary()
{
$this->app->Tpl->Set($this->parsetarget,"grosse Tabelle");
}
function Form()
{
$this->form = $this->app->FormHandler->CreateNew("rechnung");
$this->form->UseTable("rechnung");
$this->form->UseTemplate("rechnung.tpl",$this->parsetarget);
$field = new HTMLInput("lieferid","hidden","","","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("ansprechpartnerid","hidden","","","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("adresse","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("projekt","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("aktion","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("auftragid","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kundennummer_buchhaltung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("ihrebestellnummer","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("internebezeichnung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("lieferdatum","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("lieferschein","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("datum","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLCheckbox("doppel","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("schreibschutz","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("abweichendebezeichnung","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("mahnwesenfestsetzen","","","1","0","0");
$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("bezahlt_am","text","","10","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("ist","text","","10","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("skonto_gegeben","text","","10","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLSelect("mahnwesen",0,"mahnwesen","","","0");
$field->AddOption('','');
$field->AddOption('Zahlungserinnerung','zahlungserinnerung');
$field->AddOption('Mahnung 1','mahnung1');
$field->AddOption('Mahnung 2','mahnung2');
$field->AddOption('Mahnung 3','mahnung3');
$field->AddOption('Inkasso','inkasso');
$field->AddOption('Forderungsverlust','forderungsverlust');
$this->form->NewField($field);
$field = new HTMLInput("mahnwesen_datum","text","","10","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLCheckbox("mahnwesen_gesperrt","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLTextarea("mahnwesen_internebemerkung",4,60,"","","","","0");
$this->form->NewField($field);
$field = new HTMLSelect("typ",0,"typ","","","0");
$field->AddOption('Firma','firma');
$field->AddOption('Herr','herr');
$field->AddOption('Frau','frau');
$this->form->NewField($field);
$field = new HTMLInput("name","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$this->form->AddMandatory("name","notempty","Pflichfeld!","MSGNAME");
$field = new HTMLInput("titel","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("ansprechpartner","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("abteilung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("unterabteilung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("adresszusatz","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("strasse","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("plz","text","","5","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("ort","text","","19","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("telefon","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("telefax","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("email","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("anschreiben","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLTextarea("freitext",5,110,"","","","","0");
$this->form->NewField($field);
$field = new HTMLTextarea("bodyzusatz",5,110,"","","","","0");
$this->form->NewField($field);
$field = new HTMLSelect("zahlungsweise",0,"zahlungsweise","","","0");
$field->AddOption('Rechnung','rechnung');
$field->AddOption('Vorkasse','vorkasse');
$field->AddOption('Nachnahme','nachnahme');
$field->AddOption('Kreditkarte','kreditkarte');
$field->AddOption('Einzugsermaechtigung','einzugsermaechtigung');
$field->AddOption('Bar','bar');
$field->AddOption('PayPal','paypal');
$this->form->NewField($field);
$field = new HTMLInput("lieferbedingung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("buchhaltung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("vertrieb","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bearbeiter","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLCheckbox("ohne_briefpapier","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("ohne_artikeltext","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLInput("gln","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("zahlungszieltage","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("zahlungszieltageskonto","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("einzugsdatum","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bank_inhaber","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bank_institut","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bank_blz","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bank_konto","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLSelect("kreditkarte_typ",0,"kreditkarte_typ","","","0");
$this->form->NewField($field);
$field = new HTMLInput("kreditkarte_inhaber","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kreditkarte_nummer","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kreditkarte_pruefnummer","text","","5","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLSelect("kreditkarte_monat",0,"kreditkarte_monat","","","0");
$this->form->NewField($field);
$field = new HTMLSelect("kreditkarte_jahr",0,"kreditkarte_jahr","","","0");
$this->form->NewField($field);
$field = new HTMLInput("zahlungszielskonto","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt1","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt2","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt3","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt4","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt5","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLTextarea("internebemerkung",2,110,"","","","","0");
$this->form->NewField($field);
$field = new HTMLInput("ustid","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLSelect("ust_befreit",0,"ust_befreit","","","0");
$field->AddOption('{|Inland|}','0');
$field->AddOption('{|EU-Lieferung / Lieferschwelle|}','1');
$field->AddOption('{|Export|}','2');
$field->AddOption('{|Steuerfrei Inland|}','3');
$this->form->NewField($field);
$field = new HTMLCheckbox("keinsteuersatz","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("ustbrief","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("ustbrief_eingang","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLInput("ustbrief_eingang_am","text","","","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLSelect("anzeigesteuer",0,"anzeigesteuer","","","0");
$field->AddOption('automatisch','0');
$field->AddOption('netto','3');
$field->AddOption('brutto','4');
$this->form->NewField($field);
$field = new HTMLInput("waehrung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("sprache","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kurs","text","","15","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kostenstelle","text","","15","","","","","","","","0","","");
$this->form->NewField($field);
}
}
?>
<?php
class WidgetGenrechnung
{
private $app; //application object
public $form; //store form object
protected $parsetarget; //target for content
public function __construct($app,$parsetarget)
{
$this->app = $app;
$this->parsetarget = $parsetarget;
$this->Form();
}
public function rechnungDelete()
{
$this->form->Execute("rechnung","delete");
$this->rechnungList();
}
function Edit()
{
$this->form->Edit();
}
function Copy()
{
$this->form->Copy();
}
public function Create()
{
$this->form->Create();
}
public function Search()
{
$this->app->Tpl->Set($this->parsetarget,"SUUUCHEEE");
}
public function Summary()
{
$this->app->Tpl->Set($this->parsetarget,"grosse Tabelle");
}
function Form()
{
$this->form = $this->app->FormHandler->CreateNew("rechnung");
$this->form->UseTable("rechnung");
$this->form->UseTemplate("rechnung.tpl",$this->parsetarget);
$field = new HTMLInput("lieferid","hidden","","","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("ansprechpartnerid","hidden","","","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("adresse","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("projekt","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("aktion","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("auftragid","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kundennummer_buchhaltung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("ihrebestellnummer","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("internebezeichnung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("lieferdatum","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("lieferschein","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("datum","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLCheckbox("doppel","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("schreibschutz","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("abweichendebezeichnung","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("mahnwesenfestsetzen","","","1","0","0");
$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("bezahlt_am","text","","10","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("ist","text","","10","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("skonto_gegeben","text","","10","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLSelect("mahnwesen",0,"mahnwesen","","","0");
$field->AddOption('','');
$field->AddOption('Zahlungserinnerung','zahlungserinnerung');
$field->AddOption('Mahnung 1','mahnung1');
$field->AddOption('Mahnung 2','mahnung2');
$field->AddOption('Mahnung 3','mahnung3');
$field->AddOption('Inkasso','inkasso');
$field->AddOption('Forderungsverlust','forderungsverlust');
$this->form->NewField($field);
$field = new HTMLInput("mahnwesen_datum","text","","10","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLCheckbox("mahnwesen_gesperrt","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLTextarea("mahnwesen_internebemerkung",4,60,"","","","","0");
$this->form->NewField($field);
$field = new HTMLSelect("typ",0,"typ","","","0");
$field->AddOption('Firma','firma');
$field->AddOption('Herr','herr');
$field->AddOption('Frau','frau');
$this->form->NewField($field);
$field = new HTMLInput("name","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$this->form->AddMandatory("name","notempty","Pflichfeld!","MSGNAME");
$field = new HTMLInput("titel","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("ansprechpartner","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("abteilung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("unterabteilung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("adresszusatz","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("strasse","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("plz","text","","5","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("ort","text","","19","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("telefon","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("telefax","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("email","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("anschreiben","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLTextarea("freitext",5,110,"","","","","0");
$this->form->NewField($field);
$field = new HTMLTextarea("bodyzusatz",5,110,"","","","","0");
$this->form->NewField($field);
$field = new HTMLSelect("zahlungsweise",0,"zahlungsweise","","","0");
$field->AddOption('Rechnung','rechnung');
$field->AddOption('Vorkasse','vorkasse');
$field->AddOption('Nachnahme','nachnahme');
$field->AddOption('Kreditkarte','kreditkarte');
$field->AddOption('Einzugsermaechtigung','einzugsermaechtigung');
$field->AddOption('Bar','bar');
$field->AddOption('PayPal','paypal');
$this->form->NewField($field);
$field = new HTMLInput("lieferbedingung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("buchhaltung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("vertrieb","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bearbeiter","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLCheckbox("ohne_briefpapier","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("ohne_artikeltext","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLInput("gln","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("zahlungszieltage","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("zahlungszieltageskonto","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("einzugsdatum","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bank_inhaber","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bank_institut","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bank_blz","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("bank_konto","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLSelect("kreditkarte_typ",0,"kreditkarte_typ","","","0");
$this->form->NewField($field);
$field = new HTMLInput("kreditkarte_inhaber","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kreditkarte_nummer","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kreditkarte_pruefnummer","text","","5","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLSelect("kreditkarte_monat",0,"kreditkarte_monat","","","0");
$this->form->NewField($field);
$field = new HTMLSelect("kreditkarte_jahr",0,"kreditkarte_jahr","","","0");
$this->form->NewField($field);
$field = new HTMLInput("zahlungszielskonto","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt1","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt2","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt3","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt4","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("rabatt5","text","","4","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLTextarea("internebemerkung",2,110,"","","","","0");
$this->form->NewField($field);
$field = new HTMLInput("ustid","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLSelect("ust_befreit",0,"ust_befreit","","","0");
$field->AddOption('{|Inland|}','0');
$field->AddOption('{|EU-Lieferung / Lieferschwelle|}','1');
$field->AddOption('{|Export|}','2');
$field->AddOption('{|Steuerfrei Inland|}','3');
$this->form->NewField($field);
$field = new HTMLCheckbox("keinsteuersatz","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("ustbrief","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLCheckbox("ustbrief_eingang","","","1","0","0");
$this->form->NewField($field);
$field = new HTMLInput("ustbrief_eingang_am","text","","","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLSelect("anzeigesteuer",0,"anzeigesteuer","","","0");
$field->AddOption('automatisch','0');
$field->AddOption('netto','3');
$field->AddOption('brutto','4');
$this->form->NewField($field);
$field = new HTMLInput("waehrung","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("sprache","text","","30","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kurs","text","","15","","","","","","","","0","","");
$this->form->NewField($field);
$field = new HTMLInput("kostenstelle","text","","15","","","","","","","","0","","");
$this->form->NewField($field);
}
}
?>

View File

@ -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]&nbsp;</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>

View File

@ -1,433 +1,564 @@
<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">
<ul>
<li><a href="#tabs-1">Rechnung</a></li>
<li><a href="#tabs-2" onclick="callCursor();">Positionen</a></li>
<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>&nbsp;<b style="font-size: 14pt">Rechnung <font color="blue">[NUMMER]</font></b>[KUNDE][RABATTANZEIGE]</td>
<td></td>
<td align="right" nowrap>[ICONMENU]&nbsp;[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]&nbsp;
[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]&nbsp;</td></tr>
<tr><td>{|Schreibschutz|}:</td><td>[SCHREIBSCHUTZ][MSGSCHREIBSCHUTZ]&nbsp;</td></tr>
<tr><td>[ABWEICHENDEBEZEICHNUNGBESCHRIFTUNG]:</td><td>[ABWEICHENDEBEZEICHNUNG][MSGABWEICHENDEBEZEICHNUNG]&nbsp;</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:&nbsp;[MAHNWESENFESTSETZEN][MSGMAHNWESENFESTSETZEN]&nbsp;</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]&nbsp;<i>(manuelle Eingabe)</i></td></tr>
<tr class="istberechnet"><td>{|IST|}:</td><td>
[LIVEIST]&nbsp;</td></tr>
<tr><td>{|Skonto gegeben|}:</td><td>[SKONTO_GEGEBEN][MSGSKONTO_GEGEBEN]&nbsp;<img src="./themes/new/images/add.png" onclick=skonto() title="Skonto berechnen">&nbsp;<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]&nbsp;(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&szlig;e|}:</td><td>[STRASSE][MSGSTRASSE]</td></tr>
<tr><td>{|PLZ/Ort|}:</td><td>[PLZ][MSGPLZ]&nbsp;[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]&nbsp;[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>
<ul>
<li><a href="#tabs-1">Rechnung</a></li>
<li><a href="#tabs-2" onclick="callCursor();">Positionen</a></li>
<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>&nbsp;<b style="font-size: 14pt">Rechnung <font color="blue">[NUMMER]</font></b>[KUNDE][RABATTANZEIGE]</td>
<td></td>
<td align="right" nowrap>[ICONMENU]&nbsp;[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]&nbsp;
[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]&nbsp;</td>
</tr>
<tr>
<td>{|Schreibschutz|}:</td>
<td>[SCHREIBSCHUTZ][MSGSCHREIBSCHUTZ]&nbsp;</td>
</tr>
<tr>
<td>[ABWEICHENDEBEZEICHNUNGBESCHRIFTUNG]:</td>
<td>[ABWEICHENDEBEZEICHNUNG][MSGABWEICHENDEBEZEICHNUNG]&nbsp;</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>{|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]&nbsp;(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&szlig;e|}:</td>
<td>[STRASSE][MSGSTRASSE]</td>
</tr>
<tr>
<td>{|PLZ/Ort|}:</td>
<td>[PLZ][MSGPLZ]&nbsp;[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]&nbsp;[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]&nbsp;[VERTRIEBBUTTON]</td>
</tr>
<tr>
<td>{|Bearbeiter|}:</td>
<td>[BEARBEITER][MSGBEARBEITER]&nbsp;[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";
document.getElementById('rechnung').style.display="none";
document.getElementById('kreditkarte').style.display="none";
document.getElementById('einzugsermaechtigung').style.display="none";
document.getElementById('paypal').style.display="none";
document.getElementById(cmd).style.display="";
}
function versand(cmd)
{
document.getElementById('packstation').style.display="none";
document.getElementById(cmd).style.display="";
}
function abweichend(cmd)
{
document.getElementById('abweichendelieferadressestyle').style.display="none";
if(document.getElementById('abweichendelieferadresse').checked)
document.getElementById('abweichendelieferadressestyle').style.display="";
}
//-->
</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&auml;chtigung</legend>
<table width="100%">
<tr>
<td width="200">{|Einzugsdatum (fr&uuml;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>
<tr>
<td>{|Karteninhaber|}:</td>
<td>[KREDITKARTE_INHABER][MSGKREDITKARTE_INHABER]</td>
</tr>
<tr>
<td>{|Kreditkartennummer|}:</td>
<td>[KREDITKARTE_NUMMER][MSGKREDITKARTE_NUMMER]</td>
</tr>
<tr>
<td>{|Pr&uuml;fnummer|}:</td>
<td>[KREDITKARTE_PRUEFNUMMER][MSGKREDITKARTE_PRUEFNUMMER]</td>
</tr>
<tr>
<td>{|G&uuml;ltig bis|}:</td>
<td>
[KREDITKARTE_MONAT][MSGKREDITKARTE_MONAT]&nbsp;
[KREDITKARTE_JAHR][MSGKREDITKARTE_JAHR]&nbsp;
</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>
<td>[RABATT][MSGRABATT]</td>
<td>[RABATT1][MSGRABATT1]</td>
<td>[RABATT2][MSGRABATT2]</td>
<td>[RABATT3][MSGRABATT3]</td>
<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&uuml;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]&nbsp;[KEINSTEUERSATZ][MSGKEINSTEUERSATZ]&nbsp;{|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 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]&nbsp;[VERTRIEBBUTTON]</td></tr>
<tr><td>{|Bearbeiter|}:</td><td>[BEARBEITER][MSGBEARBEITER]&nbsp;[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";
document.getElementById('rechnung').style.display="none";
document.getElementById('kreditkarte').style.display="none";
document.getElementById('einzugsermaechtigung').style.display="none";
document.getElementById('paypal').style.display="none";
document.getElementById(cmd).style.display="";
}
function versand(cmd)
{
document.getElementById('packstation').style.display="none";
document.getElementById(cmd).style.display="";
}
function abweichend(cmd)
{
document.getElementById('abweichendelieferadressestyle').style.display="none";
if(document.getElementById('abweichendelieferadresse').checked)
document.getElementById('abweichendelieferadressestyle').style.display="";
}
//-->
</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&auml;chtigung</legend>
<table width="100%">
<tr><td width="200">{|Einzugsdatum (fr&uuml;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>
<tr><td>{|Karteninhaber|}:</td><td>[KREDITKARTE_INHABER][MSGKREDITKARTE_INHABER]</td>
</tr>
<tr><td>{|Kreditkartennummer|}:</td><td>[KREDITKARTE_NUMMER][MSGKREDITKARTE_NUMMER]</td>
</tr>
<tr><td>{|Pr&uuml;fnummer|}:</td><td>[KREDITKARTE_PRUEFNUMMER][MSGKREDITKARTE_PRUEFNUMMER]</td>
</tr>
<tr><td>{|G&uuml;ltig bis|}:</td><td>
[KREDITKARTE_MONAT][MSGKREDITKARTE_MONAT]&nbsp;
[KREDITKARTE_JAHR][MSGKREDITKARTE_JAHR]&nbsp;
</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>
<td>[RABATT][MSGRABATT]</td>
<td>[RABATT1][MSGRABATT1]</td>
<td>[RABATT2][MSGRABATT2]</td>
<td>[RABATT3][MSGRABATT3]</td>
<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&uuml;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]&nbsp;[KEINSTEUERSATZ][MSGKEINSTEUERSATZ]&nbsp;{|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]
<!-- tab view schließen -->
</div>
<div id="tabs-3"></div>
[FURTHERTABSDIV]
<!-- tab view schließen -->
</div>

View File

@ -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)) {