Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision bd34eaea

Von Udo Spallek vor fast 18 Jahren hinzugefügt

  • ID bd34eaeac9e09277148172dc634c0cd71bff91a8
  • Vorgänger 2fda509c
  • Nachfolger 770515d9

System->Konteneinstellungen ueberarbeitet:

  • Alles auf das Templatesystem umgestellt
  • Kontenliste
    - Klick auf Beschreibung zeigt Details an
    (Ajax template list_account_details)
    - Klick auf Kontonummer öffnet Einstellungen (wie gehabt)
    - Ueberschriften werden per css (accountlistheader) formatiert
    - Gegenueberstellung von allen Konten mit allen Details
    - Uebersetzungn
  • Konteneinstellungen
    - Steuerautomatik und USTVA Positionen sind einstellbar/loeschbar
    (max. 10 Steuerkonten)
    - Folgekonto: Sortierung nach chart.accno
    - Validierung:
    + Wenn Kontentyp Ueberschrift, alle anderen Einstellungen entfernen
    (js/FormManager.js)
    + Must have: Kontonummer, Beschreibung, Kontentyp, (Kontenart)
    + Taxkeys: Gueltig, wenn Startdate und mindestens ein Merkmal aus:
    Steuerverknuepfung oder USTVA Position
    - Beim loeschen eines Kontos werden alle abhaengigen taxkeys geloescht
    - Uebersetzungen

Unterschiede anzeigen:

SL/AM.pm
# connect to database
my $dbh = $form->dbconnect($myconfig);
my $query =
qq!SELECT c.accno, c.description, c.charttype, c.category,! .
qq! c.link, c.pos_bilanz, c.pos_eur, c.new_chart_id, c.valid_from, ! .
qq! c.pos_bwa, ! .
qq! tk.taxkey_id, tk.pos_ustva, tk.tax_id, ! .
qq! tk.tax_id || '--' || tk.taxkey_id AS tax, tk.startdate ! .
qq!FROM chart c ! .
qq!LEFT JOIN taxkeys tk ! .
qq!ON (c.id=tk.chart_id AND tk.id = ! .
qq! (SELECT id FROM taxkeys ! .
qq! WHERE taxkeys.chart_id = c.id AND startdate <= current_date ! .
qq! ORDER BY startdate DESC LIMIT 1)) ! .
qq!WHERE c.id = ?!;
my $query = qq{
SELECT c.accno, c.description, c.charttype, c.category,
c.link, c.pos_bilanz, c.pos_eur, c.new_chart_id, c.valid_from,
c.pos_bwa, datevautomatik,
tk.taxkey_id, tk.pos_ustva, tk.tax_id,
tk.tax_id || '--' || tk.taxkey_id AS tax, tk.startdate
FROM chart c
LEFT JOIN taxkeys tk
ON (c.id=tk.chart_id AND tk.id =
(SELECT id FROM taxkeys
WHERE taxkeys.chart_id = c.id AND startdate <= current_date
ORDER BY startdate DESC LIMIT 1))
WHERE c.id = ?
};
$main::lxdebug->message(LXDebug::QUERY, "\$query=\n $query");
my $sth = $dbh->prepare($query);
$sth->execute($form->{id}) || $form->dberror($query . " ($form->{id})");
......
# get default accounts
$query = qq|SELECT inventory_accno_id, income_accno_id, expense_accno_id
FROM defaults|;
$main::lxdebug->message(LXDebug::QUERY, "\$query=\n $query");
$sth = $dbh->prepare($query);
$sth->execute || $form->dberror($query);
......
$sth->finish;
# get taxkeys and description
$query = qq?SELECT id, taxkey,id||'--'||taxkey AS tax, taxdescription
FROM tax ORDER BY taxkey?;
$query = qq{
SELECT
id,
(SELECT accno FROM chart WHERE id=tax.chart_id) AS chart_accno,
taxkey,
id||'--'||taxkey AS tax,
taxdescription,
rate
FROM tax ORDER BY taxkey
};
$main::lxdebug->message(LXDebug::QUERY, "\$query=\n $query");
$sth = $dbh->prepare($query);
$sth->execute || $form->dberror($query);
......
if ($form->{id}) {
# get new accounts
$query = qq|SELECT id, accno,description
FROM chart WHERE link = ?|;
FROM chart
WHERE link = ?
ORDER BY accno|;
$main::lxdebug->message(LXDebug::QUERY, "\$query=\n $query");
$sth = $dbh->prepare($query);
$sth->execute($form->{link}) || $form->dberror($query . " ($form->{link})");
......
}
$sth->finish;
# get the taxkeys of account
$query = qq{
SELECT
tk.id,
tk.chart_id,
c.accno,
tk.tax_id,
t.taxdescription,
t.rate,
tk.taxkey_id,
tk.pos_ustva,
tk.startdate
FROM taxkeys tk
LEFT JOIN tax t ON (t.id = tk.tax_id)
LEFT JOIN chart c ON (c.id = t.chart_id)
WHERE tk.chart_id = ?
ORDER BY startdate DESC
};
$main::lxdebug->message(LXDebug::QUERY, "\$query=\n $query");
$sth = $dbh->prepare($query);
$sth->execute($form->{id}) || $form->dberror($query . " ($form->{id})");
$form->{ACCOUNT_TAXKEYS} = [];
while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
push @{ $form->{ACCOUNT_TAXKEYS} }, $ref;
}
$sth->finish;
}
# check if we have any transactions
$query = qq|SELECT a.trans_id FROM acc_trans a
WHERE a.chart_id = ?|;
$main::lxdebug->message(LXDebug::QUERY, "\$query=\n $query");
$sth = $dbh->prepare($query);
$sth->execute($form->{id}) || $form->dberror($query . " ($form->{id})");
......
if ($form->{new_chart_id}) {
$query = qq|SELECT current_date-valid_from FROM chart
WHERE id = ?|;
$main::lxdebug->message(LXDebug::QUERY, "\$query=\n $query");
my ($count) = selectrow_query($form, $dbh, $query, $form->{id});
if ($count >=0) {
$form->{new_chart_valid} = 1;
......
my @values;
my ($tax_id, $taxkey) = split(/--/, $form->{tax});
my $startdate = $form->{startdate} ? $form->{startdate} : "1970-01-01";
if ($form->{id}) {
$query = qq|UPDATE chart SET
accno = ?, description = ?, charttype = ?,
category = ?, link = ?,
taxkey_id = ?,
pos_ustva = ?, pos_bwa = ?, pos_bilanz = ?,
pos_eur = ?, new_chart_id = ?, valid_from = ?
accno = ?,
description = ?,
charttype = ?,
category = ?,
link = ?,
pos_bwa = ?,
pos_bilanz = ?,
pos_eur = ?,
new_chart_id = ?,
valid_from = ?,
datevautomatik = ?
WHERE id = ?|;
@values = ($form->{accno}, $form->{description}, $form->{charttype},
$form->{category}, $form->{link},
conv_i($taxkey),
conv_i($form->{pos_ustva}), conv_i($form->{pos_bwa}),
conv_i($form->{pos_bilanz}), conv_i($form->{pos_eur}),
conv_i($form->{new_chart_id}),
conv_date($form->{valid_from}),
$form->{id});
} elsif ($form->{id} && !$form->{new_chart_valid}) {
$query = qq|UPDATE chart SET new_chart_id = ?, valid_from = ?
WHERE id = ?|;
@values = (conv_i($form->{new_chart_id}), conv_date($form->{valid_from}),
$form->{id});
} else {
$query = qq|INSERT INTO chart
(accno, description, charttype,
category, link, taxkey_id,
pos_ustva, pos_bwa, pos_bilanz, pos_eur,
new_chart_id, valid_from)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)|;
@values = ($form->{accno}, $form->{description}, $form->{charttype},
$form->{category}, $form->{link}, conv_i($taxkey),
conv_i($form->{pos_ustva}), conv_i($form->{pos_bwa}),
conv_i($form->{pos_bilanz}), conv_i($form->{pos_eur}),
conv_i($form->{new_chart_id}),
conv_date($form->{valid_from}));
@values = (
$form->{accno},
$form->{description},
$form->{charttype},
$form->{category},
$form->{link},
conv_i($form->{pos_bwa}),
conv_i($form->{pos_bilanz}),
conv_i($form->{pos_eur}),
conv_i($form->{new_chart_id}),
conv_date($form->{valid_from}),
($form->{datevautomatik} eq 'T') ? 'true':'false',
$form->{id},
);
}
elsif ($form->{id} && !$form->{new_chart_valid}) {
$query = qq|
UPDATE chart
SET new_chart_id = ?,
valid_from = ?
WHERE id = ?
|;
@values = (
conv_i($form->{new_chart_id}),
conv_date($form->{valid_from}),
$form->{id}
);
}
else {
$query = qq|
INSERT INTO chart (
accno,
description,
charttype,
category,
link,
pos_bwa,
pos_bilanz,
pos_eur,
new_chart_id,
valid_from,
datevautomatik )
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|;
@values = (
$form->{accno},
$form->{description},
$form->{charttype},
$form->{category}, $form->{link},
conv_i($form->{pos_bwa}),
conv_i($form->{pos_bilanz}), conv_i($form->{pos_eur}),
conv_i($form->{new_chart_id}),
conv_date($form->{valid_from}),
($form->{datevautomatik} eq 'T') ? 'true':'false',
);
}
do_query($form, $dbh, $query, @values);
#Save Taxes
if (!$form->{id}) {
$query =
qq|INSERT INTO taxkeys | .
qq|(chart_id, tax_id, taxkey_id, pos_ustva, startdate) | .
qq|VALUES ((SELECT id FROM chart WHERE accno = ?), ?, ?, ?, ?)|;
do_query($form, $dbh, $query,
$form->{accno}, conv_i($tax_id), conv_i($taxkey),
conv_i($form->{pos_ustva}), conv_date($startdate));
#Save Taxkeys
my @taxkeys = ();
my $MAX_TRIES = 10; # Maximum count of taxkeys in form
my $tk_count;
READTAXKEYS:
for $tk_count (0 .. $MAX_TRIES) {
# Loop control
# Check if the account already exists, else cancel
last READTAXKEYS if ( $form->{'id'} == 0);
# check if there is a startdate
if ( $form->{"taxkey_startdate_$tk_count"} eq '' ) {
$tk_count++;
next READTAXKEYS;
}
} else {
$query = qq|DELETE FROM taxkeys WHERE chart_id = ? AND tax_id = ?|;
do_query($form, $dbh, $query, $form->{id}, conv_i($tax_id));
# check if there is at least one relation to pos_ustva or tax_id
if ( $form->{"taxkey_pos_ustva_$tk_count"} eq '' && $form->{"taxkey_tax_$tk_count"} == 0 ) {
$tk_count++;
next READTAXKEYS;
}
$query =
qq|INSERT INTO taxkeys | .
qq|(chart_id, tax_id, taxkey_id, pos_ustva, startdate) | .
qq|VALUES (?, ?, ?, ?, ?)|;
do_query($form, $dbh, $query,
$form->{id}, conv_i($tax_id), conv_i($taxkey),
conv_i($form->{pos_ustva}), conv_date($startdate));
# Add valid taxkeys into the array
push @taxkeys ,
{
id => ($form->{"taxkey_id_$tk_count"} eq 'NEW') ? conv_i('') : conv_i($form->{"taxkey_id_$tk_count"}),
tax_id => conv_i($form->{"taxkey_tax_$tk_count"}),
startdate => conv_date($form->{"taxkey_startdate_$tk_count"}),
chart_id => conv_i($form->{"id"}),
pos_ustva => conv_i($form->{"taxkey_pos_ustva_$tk_count"}),
delete => ( $form->{"taxkey_del_$tk_count"} eq 'delete' ) ? '1' : '',
};
$tk_count++;
}
TAXKEY:
for my $j (0 .. $#taxkeys){
if ( defined $taxkeys[$j]{'id'} ){
# delete Taxkey?
if ($taxkeys[$j]{'delete'}){
$query = qq{
DELETE FROM taxkeys WHERE id = ?
};
@values = ($taxkeys[$j]{'id'});
do_query($form, $dbh, $query, @values);
next TAXKEY;
}
# UPDATE Taxkey
$query = qq{
UPDATE taxkeys
SET taxkey_id = (SELECT taxkey FROM tax WHERE tax.id = ?),
chart_id = ?,
tax_id = ?,
pos_ustva = ?,
startdate = ?
WHERE id = ?
};
@values = (
$taxkeys[$j]{'tax_id'},
$taxkeys[$j]{'chart_id'},
$taxkeys[$j]{'tax_id'},
$taxkeys[$j]{'pos_ustva'},
$taxkeys[$j]{'startdate'},
$taxkeys[$j]{'id'},
);
do_query($form, $dbh, $query, @values);
}
else {
# INSERT Taxkey
$query = qq{
INSERT INTO taxkeys (
taxkey_id,
chart_id,
tax_id,
pos_ustva,
startdate
)
VALUES ((SELECT taxkey FROM tax WHERE tax.id = ?), ?, ?, ?, ?)
};
@values = (
$taxkeys[$j]{'tax_id'},
$taxkeys[$j]{'chart_id'},
$taxkeys[$j]{'tax_id'},
$taxkeys[$j]{'pos_ustva'},
$taxkeys[$j]{'startdate'},
);
do_query($form, $dbh, $query, @values);
}
}
# commit
......
WHERE id = ?|;
do_query($form, $dbh, $query, $form->{id});
# delete account taxkeys
$query = qq|DELETE FROM taxkeys
WHERE chart_id = ?|;
do_query($form, $dbh, $query, $form->{id});
# commit and redirect
my $rc = $dbh->commit;
$dbh->disconnect;
SL/CA.pm
sub all_accounts {
$main::lxdebug->enter_sub();
my ($self, $myconfig, $form) = @_;
my ($self, $myconfig, $form, $chart_id) = @_;
my %amount;
......
}
$sth->finish;
$query =
qq!SELECT c.accno, c.id, c.description, c.charttype, c.category, ! .
qq! c.link, c.pos_bwa, c.pos_bilanz, c.pos_eur, c.valid_from, ! .
qq! c.datevautomatik, comma(tk.startdate) AS startdate, ! .
qq! comma(tk.taxkey_id) AS taxkey, ! .
qq! comma(tx.taxdescription || to_char (tx.rate, '99V99' ) || '%') ! .
qq! AS taxdescription, ! .
qq! comma(tx.taxnumber) AS taxaccount, comma(tk.pos_ustva) ! .
qq! AS tk_ustva, ! .
qq! ( SELECT accno FROM chart c2 WHERE c2.id = c.id ) AS new_account ! .
qq!FROM chart c ! .
qq!LEFT JOIN taxkeys tk ON (c.id = tk.chart_id) ! .
qq!LEFT JOIN tax tx ON (tk.tax_id = tx.id) ! .
qq!GROUP BY c.accno, c.id, c.description, c.charttype, ! .
qq! c.category, c.link, c.pos_bwa, c.pos_bilanz, c.pos_eur, ! .
qq! c.valid_from, c.datevautomatik ! .
qq!ORDER BY c.accno!;
my $where = "AND c.id = $chart_id" if ($chart_id ne '');
$query = qq{
SELECT
c.accno,
c.id,
c.description,
c.charttype,
c.category,
c.link,
c.pos_bwa,
c.pos_bilanz,
c.pos_eur,
c.valid_from,
c.datevautomatik,
comma(tk.startdate) AS startdate,
comma(tk.taxkey_id) AS taxkey,
comma(tx.taxdescription || to_char (tx.rate, '99V99' ) || '%') AS taxdescription,
comma(tx.taxnumber) AS taxaccount,
comma(tk.pos_ustva) AS tk_ustva,
( SELECT accno
FROM chart c2
WHERE c2.id = c.id
) AS new_account
FROM chart c
LEFT JOIN taxkeys tk ON (c.id = tk.chart_id)
LEFT JOIN tax tx ON (tk.tax_id = tx.id)
WHERE 1=1
$where
GROUP BY c.accno, c.id, c.description, c.charttype, c.gifi_accno,
c.category, c.link, c.pos_bwa, c.pos_bilanz, c.pos_eur, c.valid_from,
c.datevautomatik
ORDER BY c.accno
};
my $sth = prepare_execute_query($form, $dbh, $query);
$form->{CA} = [];
while (my $ca = $sth->fetchrow_hashref(NAME_lc)) {
$ca->{amount} = $amount{ $ca->{accno} };
if ($ca->{amount} < 0) {
bin/mozilla/am.pl
use SL::CA;
use SL::Form;
use SL::User;
use SL::USTVA;
use CGI::Ajax;
use CGI;
use Data::Dumper;
......
sub account_header {
$lxdebug->enter_sub();
if ( $form->{action} eq 'edit_account') {
$form->{account_exists} = '1';
}
$form->{title} = $locale->text("$form->{title} Account");
$checked{ $form->{charttype} } = "checked";
$checked{"$form->{category}_"} = "checked";
$checked{CT_tax} = ($form->{CT_tax}) ? "" : "checked";
$form->{"$form->{charttype}_checked"} = "checked";
$form->{"$form->{category}_checked"} = "checked";
$form->{description} =~ s/\"/&quot;/g;
$form->{select_tax} = "";
my @tax_report_pos = USTVA->report_variables({
myconfig => \%myconfig,
form => $form,
type => '',
attribute => 'position',
calc => '',
});
if (@{ $form->{TAXKEY} }) {
foreach my $item (@{ $form->{TAXKEY} }) {
$item->{rate} = $item->{rate} * 100 . '%';
}
if ($item->{tax} == $form->{tax}) {
$form->{selecttaxkey} .=
"<option value=$item->{tax} selected>$item->{taxdescription} ($item->{rate})\n";
} else {
$form->{selecttaxkey} .=
"<option value=$item->{tax}>$item->{taxdescription} ($item->{rate})\n";
}
# Fill in empty row for new Taxkey
$newtaxkey_ref = {
id => '',
chart_id => '',
accno => '',
tax_id => '',
taxdescription => '',
rate => '',
taxkey_id => '',
pos_ustva => '',
startdate => '',
};
push @{ $form->{ACCOUNT_TAXKEYS} }, $newtaxkey_ref;
my $i = 0;
foreach my $taxkey_used (@{ $form->{ACCOUNT_TAXKEYS} } ) {
# Fill in a runningnumber
$form->{ACCOUNT_TAXKEYS}[$i]{runningnumber} = $i;
# Fill in the Taxkeys as select options
foreach my $item (@{ $form->{TAXKEY} }) {
if ($item->{id} == $taxkey_used->{tax_id}) {
$form->{ACCOUNT_TAXKEYS}[$i]{selecttaxkey} .=
qq|<option value="$item->{id}" selected="selected">|
. sprintf("%.2d", $item->{taxkey})
. qq|. $item->{taxdescription} ($item->{rate}) |
. $locale->text('Tax-o-matic Account: ')
. qq|$item->{chart_accno}\n|;
}
else {
$form->{ACCOUNT_TAXKEYS}[$i]{selecttaxkey} .=
qq|<option value="$item->{id}">|
. sprintf("%.2d", $item->{taxkey})
. qq|. $item->{taxdescription} ($item->{rate}) |
. $locale->text('Tax-o-matic Account: ')
. qq|$item->{chart_accno}\n|;
}
}
# Fill in the USTVA Numbers as select options
foreach my $item ( '', sort({ $a cmp $b } @tax_report_pos) ) {
if ($item eq ''){
$form->{ACCOUNT_TAXKEYS}[$i]{select_tax} .= qq|<option value="" selected="selected">-\n|;
}
elsif ( $item == $taxkey_used->{pos_ustva} ) {
$form->{ACCOUNT_TAXKEYS}[$i]{select_tax} .= qq|<option value="$item" selected="selected">$item\n|;
}
else {
$form->{ACCOUNT_TAXKEYS}[$i]{select_tax} .= qq|<option value="$item">$item\n|;
}
}
$i++;
}
}
$taxkey = qq|
<tr>
<th align=right>| . $locale->text('Steuersatz') . qq|</th>
<td><select name=tax>$form->{selecttaxkey}</select></td>
<th align=right>| . $locale->text('G?ltig ab') . qq|</th>
<td><input name=startdate value="$form->{startdate}"></td>
</tr>|;
# Newaccount Folgekonto
if (@{ $form->{NEWACCOUNT} }) {
if (!$form->{new_chart_valid}) {
$form->{selectnewaccount} = "<option value=></option>";
$form->{selectnewaccount} = qq|<option value=""> |. $locale->text('None') .q|</option>|;
}
foreach $item (@{ $form->{NEWACCOUNT} }) {
if ($item->{id} == $form->{new_chart_id}) {
$form->{selectnewaccount} .=
"<option value=$item->{id} selected>$item->{accno}--$item->{description}</option>";
qq|<option value="$item->{id}" selected>$item->{accno}--$item->{description}</option>|;
} elsif (!$form->{new_chart_valid}) {
$form->{selectnewaccount} .=
"<option value=$item->{id}>$item->{accno}--$item->{description}</option>";
qq|<option value="$item->{id}">$item->{accno}--$item->{description}</option>|;
}
}
}
$newaccount = qq|
<tr>
<td colspan=2>
<table>
<tr>
<th align=right>| . $locale->text('Folgekonto') . qq|</th>
<td><select name=new_chart_id>$form->{selectnewaccount}</select></td>
<th align=right>| . $locale->text('G?ltig ab') . qq|</th>
<td><input name=valid_from value="$form->{valid_from}"></td>
</tr>
</table>
</td>
</tr>|;
$form->{selectustva} = "<option>\n";
%ustva = (35 => $locale->text('UStVA-Nr. 35'),
36 => $locale->text('UStVA-Nr. 36'),
39 => $locale->text('UStVA-Nr. 39'),
41 => $locale->text('UStVA-Nr. 41'),
42 => $locale->text('UStVA-Nr. 42'),
43 => $locale->text('UStVA-Nr. 43'),
44 => $locale->text('UStVA-Nr. 44'),
45 => $locale->text('UStVA-Nr. 45'),
48 => $locale->text('UStVA-Nr. 48'),
49 => $locale->text('UStVA-Nr. 49'),
51 => $locale->text('UStVA-Nr. 51 left'),
511 => $locale->text('UStVA-Nr. 51 right'),
52 => $locale->text('UStVA-Nr. 52'),
53 => $locale->text('UStVA-Nr. 53'),
59 => $locale->text('UStVA-Nr. 59'),
60 => $locale->text('UStVA-Nr. 60'),
61 => $locale->text('UStVA-Nr. 61'),
62 => $locale->text('UStVA-Nr. 62'),
63 => $locale->text('UStVA-Nr. 63'),
64 => $locale->text('UStVA-Nr. 64'),
65 => $locale->text('UStVA-Nr. 65'),
66 => $locale->text('UStVA-Nr. 66'),
67 => $locale->text('UStVA-Nr. 67'),
69 => $locale->text('UStVA-Nr. 69'),
73 => $locale->text('UStVA-Nr. 73'),
74 => $locale->text('UStVA-Nr. 74'),
76 => $locale->text('UStVA-Nr. 76'),
77 => $locale->text('UStVA-Nr. 77'),
80 => $locale->text('UStVA-Nr. 80'),
81 => $locale->text('UStVA-Nr. 81 left'),
811 => $locale->text('UStVA-Nr. 81 right'),
84 => $locale->text('UStVA-Nr. 84'),
85 => $locale->text('UStVA-Nr. 85'),
86 => $locale->text('UStVA-Nr. 86 left'),
861 => $locale->text('UStVA-Nr. 86 right'),
89 => $locale->text('UStVA-Nr. 89 left'),
891 => $locale->text('UStVA-Nr. 89 right'),
91 => $locale->text('UStVA-Nr. 91'),
93 => $locale->text('UStVA-Nr. 93 left'),
931 => $locale->text('UStVA-Nr. 93 right'),
94 => $locale->text('UStVA-Nr. 94'),
95 => $locale->text('UStVA-Nr. 95'),
96 => $locale->text('UStVA-Nr. 96'),
97 => $locale->text('UStVA-Nr. 97 links'),
971 => $locale->text('UStVA-Nr. 97 rechts'),
98 => $locale->text('UStVA-Nr. 98'));
foreach $item (sort({ $a cmp $b } keys %ustva)) {
if ($item == $form->{pos_ustva}) {
$form->{selectustva} .= "<option value=$item selected>$ustva{$item}\n";
} else {
$form->{selectustva} .= "<option value=$item>$ustva{$item}\n";
}
}
$ustva = qq|
<tr>
<th align=right>| . $locale->text('Umsatzsteuervoranmeldung') . qq|</th>
<td><select name=pos_ustva>$form->{selectustva}</select></td>
<input type=hidden name=selectustva value="$form->{selectustva}">
</tr>|;
$form->{selecteur} = "<option>\n";
$select_eur = q|<option value=""> |. $locale->text('None') .q|</option>\n|;
%eur = (1 => "Umsatzerl?se",
2 => "sonstige Erl?se",
3 => "Privatanteile",
......
31 => "Betriebliche Steuern");
foreach $item (sort({ $a <=> $b } keys(%eur))) {
if ($item == $form->{pos_eur}) {
$form->{selecteur} .= "<option value=$item selected>$eur{$item}\n";
$select_eur .= qq|<option value=$item selected>|. sprintf("%.2d", $item) .qq|. $eur{$item}</option>\n|;
} else {
$form->{selecteur} .= "<option value=$item>$eur{$item}\n";
$select_eur .= qq|<option value=$item>|. sprintf("%.2d", $item) .qq|. $eur{$item}</option>\n|;
}
}
$eur = qq|
<tr>
<th align=right>| . $locale->text('EUER') . qq|</th>
<td><select name=pos_eur>$form->{selecteur}</select></td>
<input type=hidden name=selecteur value="$form->{selecteur}">
</tr>|;
$form->{selectbwa} = "<option>\n";
$select_bwa = q|<option value=""> |. $locale->text('None') .q|</option>\n|;
%bwapos = (1 => 'Umsatzerl?se',
2 => 'Best.Verdg.FE/UE',
......
35 => 'Steuern Eink.u.Ertr.');
foreach $item (sort({ $a <=> $b } keys %bwapos)) {
if ($item == $form->{pos_bwa}) {
$form->{selectbwa} .= "<option value=$item selected>$bwapos{$item}\n";
$select_bwa .= qq|<option value="$item" selected>|. sprintf("%.2d", $item) .qq|. $bwapos{$item}\n|;
} else {
$form->{selectbwa} .= "<option value=$item>$bwapos{$item}\n";
$select_bwa .= qq|<option value="$item">|. sprintf("%.2d", $item) .qq|. $bwapos{$item}\n|;
}
}
$bwa = qq|
<tr>
<th align=right>| . $locale->text('BWA') . qq|</th>
<td><select name=pos_bwa>$form->{selectbwa}</select></td>
<input type=hidden name=selectbwa value="$form->{selectbwa}">
</tr>|;
# Wieder hinzugef?gt zu evaluationszwecken (us) 09.03.2007
$select_bilanz = q|<option value=""> |. $locale->text('None') .q|</option>\n|;
foreach $item ((1, 2, 3, 4)) {
if ($item == $form->{pos_bilanz}) {
$select_bilanz .= qq|<option value=$item selected>|. sprintf("%.2d", $item) .qq|.\n|;
} else {
$select_bilanz .= qq|<option value=$item>|. sprintf("%.2d", $item) .qq|.\n|;
}
# Entfernt bis es ordentlich umgesetzt wird (hli) 30.03.2006
# $form->{selectbilanz} = "<option>\n";
# foreach $item ((1, 2, 3, 4)) {
# if ($item == $form->{pos_bilanz}) {
# $form->{selectbilanz} .= "<option value=$item selected>$item\n";
# } else {
# $form->{selectbilanz} .= "<option value=$item>$item\n";
# }
#
# }
#
# $bilanz = qq|
# <tr>
# <th align=right>| . $locale->text('Bilanz') . qq|</th>
# <td><select name=pos_bilanz>$form->{selectbilanz}</select></td>
# <input type=hidden name=selectbilanz value="$form->{selectbilanz}">
# </tr>|;
# this is for our parser only!
}
# this is for our parser only! Do not remove.
# type=submit $locale->text('Add Account')
# type=submit $locale->text('Edit Account')
$form->{type} = "account";
$form->header;
print qq|
<body>
<form method=post action=$form->{script}>
# preselections category
$select_category = q|<option value=""> |. $locale->text('None') .q|</option>\n|;
%category = (
'A' => $locale->text('Asset'),
'L' => $locale->text('Liability'),
'Q' => $locale->text('Equity'),
'I' => $locale->text('Revenue'),
'E' => $locale->text('Expense'),
'C' => $locale->text('Costs'),
);
foreach $item ( sort({ $a <=> $b } keys %category) ) {
if ($item eq $form->{category}) {
$select_category .= qq|<option value="$item" selected="selected">$category{$item} (|. sprintf("%s", $item) .qq|)\n|;
} else {
$select_category .= qq|<option value="$item">$category{$item} (|. sprintf("%s", $item) .qq|)\n|;
}
<input type=hidden name=id value=$form->{id}>
<input type=hidden name=type value=account>
<input type=hidden name=orphaned value=$form->{orphaned}>
<input type=hidden name=new_chart_valid value=$form->{new_chart_valid}>
}
# preselection chart type
my $select_charttype = q{};
<input type=hidden name=inventory_accno_id value=$form->{inventory_accno_id}>
<input type=hidden name=income_accno_id value=$form->{income_accno_id}>
<input type=hidden name=expense_accno_id value=$form->{expense_accno_id}>
<input type=hidden name=fxgain_accno_id value=$form->{fxgain_accno_id}>
<input type=hidden name=fxloss_accno_id value=$form->{fxloss_accno_id}>
my %charttype = (
'A' => $locale->text('Account'),
'H' => $locale->text('Header'),
);
foreach $item ( sort({ $a <=> $b } keys %charttype) ) {
if ($item eq $form->{charttype}) {
$select_charttype .= qq|<option value="$item" selected="selected">$charttype{$item}\n|;
<table border=0 width=100%>
<tr>
<th class=listtop>$form->{title}</th>
</tr>
<tr height="5"></tr>
<tr valign=top>
<td>
<table>
<tr>
<th align=right>| . $locale->text('Account Number') . qq|</th>
<td><input name=accno size=20 value=$form->{accno}></td>
</tr>
<tr>
<th align=right>| . $locale->text('Description') . qq|</th>
<td><input name=description size=40 value="$form->{description}"></td>
</tr>
<tr>
<th align=right>| . $locale->text('Account Type') . qq|</th>
<td>
<table>
<tr valign=top>
<td><input name=category type=radio class=radio value=A $checked{A_}>&nbsp;|
. $locale->text('Asset') . qq|\n<br>
<input name=category type=radio class=radio value=L $checked{L_}>&nbsp;|
. $locale->text('Liability') . qq|\n<br>
<input name=category type=radio class=radio value=Q $checked{Q_}>&nbsp;|
. $locale->text('Equity') . qq|\n<br>
<input name=category type=radio class=radio value=I $checked{I_}>&nbsp;|
. $locale->text('Revenue') . qq|\n<br>
<input name=category type=radio class=radio value=E $checked{E_}>&nbsp;|
. $locale->text('Expense') . qq|<br>
<input name=category type=radio class=radio value=C $checked{C_}>&nbsp;|
. $locale->text('Costs') . qq|</td>
<td width=50>&nbsp;</td>
<td>
<input name=charttype type=radio class=radio value="H" $checked{H}>&nbsp;|
. $locale->text('Heading') . qq|<br>
<input name=charttype type=radio class=radio value="A" $checked{A}>&nbsp;|
. $locale->text('Account') . qq|</td>
</tr>
</table>
</td>
</tr>
|;
} else {
$select_charttype .= qq|<option value="$item">$charttype{$item}\n|;
}
if ($form->{charttype} eq "A") {
print qq|
<tr>
<td colspan=2>
<table>
<tr>
<th align=left>|
. $locale->text('Is this a summary account to record') . qq|</th>
<td>
<input name=AR type=checkbox class=checkbox value=AR $form->{AR}>&nbsp;|
. $locale->text('AR')
. qq|&nbsp;<input name=AP type=checkbox class=checkbox value=AP $form->{AP}>&nbsp;|
. $locale->text('AP')
. qq|&nbsp;<input name=IC type=checkbox class=checkbox value=IC $form->{IC}>&nbsp;|
. $locale->text('Inventory')
. qq|</td>
</tr>
</table>
</td>
</tr>
<tr>
<th colspan=2>| . $locale->text('Include in drop-down menus') . qq|</th>
</tr>
<tr valign=top>
<td colspan=2>
<table width=100%>
<tr>
<th align=left>| . $locale->text('Receivables') . qq|</th>
<th align=left>| . $locale->text('Payables') . qq|</th>
<th align=left>| . $locale->text('Parts Inventory') . qq|</th>
<th align=left>| . $locale->text('Service Items') . qq|</th>
</tr>
<tr>
<td>
<input name=AR_amount type=checkbox class=checkbox value=AR_amount $form->{AR_amount}>&nbsp;|
. $locale->text('Revenue') . qq|\n<br>
<input name=AR_paid type=checkbox class=checkbox value=AR_paid $form->{AR_paid}>&nbsp;|
. $locale->text('Receipt') . qq|\n<br>
<input name=AR_tax type=checkbox class=checkbox value=AR_tax $form->{AR_tax}>&nbsp;|
. $locale->text('Tax') . qq|
</td>
<td>
<input name=AP_amount type=checkbox class=checkbox value=AP_amount $form->{AP_amount}>&nbsp;|
. $locale->text('Expense/Asset') . qq|\n<br>
<input name=AP_paid type=checkbox class=checkbox value=AP_paid $form->{AP_paid}>&nbsp;|
. $locale->text('Payment') . qq|\n<br>
<input name=AP_tax type=checkbox class=checkbox value=AP_tax $form->{AP_tax}>&nbsp;|
. $locale->text('Tax') . qq|
</td>
<td>
<input name=IC_sale type=checkbox class=checkbox value=IC_sale $form->{IC_sale}>&nbsp;|
. $locale->text('Revenue') . qq|\n<br>
<input name=IC_cogs type=checkbox class=checkbox value=IC_cogs $form->{IC_cogs}>&nbsp;|
. $locale->text('Expense') . qq|\n<br>
<input name=IC_taxpart type=checkbox class=checkbox value=IC_taxpart $form->{IC_taxpart}>&nbsp;|
. $locale->text('Tax') . qq|
</td>
<td>
<input name=IC_income type=checkbox class=checkbox value=IC_income $form->{IC_income}>&nbsp;|
. $locale->text('Revenue') . qq|\n<br>
<input name=IC_expense type=checkbox class=checkbox value=IC_expense $form->{IC_expense}>&nbsp;|
. $locale->text('Expense') . qq|\n<br>
<input name=IC_taxservice type=checkbox class=checkbox value=IC_taxservice $form->{IC_taxservice}>&nbsp;|
. $locale->text('Tax') . qq|
</td>
</tr>
</table>
</td>
</tr>
|;
}
print qq|
$taxkey
$ustva
$eur
$bwa
$bilanz
</table>
</td>
</tr>
$newaccount
<tr>
<td><hr size=3 noshade></td>
</tr>
</table>
|;
my $ChartTypeIsAccount = ($form->{charttype} eq "A") ? "1":"";
$form->header();
my $parameters_ref = {
ChartTypeIsAccount => $ChartTypeIsAccount,
select_category => $select_category,
select_charttype => $select_charttype,
newaccount => $newaccount,
checked => $checked,
select_bwa => $select_bwa,
select_bilanz => $select_bilanz,
select_eur => $select_eur,
};
# Ausgabe des Templates
print($form->parse_html_template('am/edit_accounts', $parameters_ref));
$lxdebug->leave_sub();
}
......
sub save_account {
$lxdebug->enter_sub();
$form->isblank("accno", $locale->text('Account Number missing!'));
$form->isblank("category", $locale->text('Account Type missing!'));
$form->isblank("accno", $locale->text('Account Number missing!'));
$form->isblank("description", $locale->text('Account Description missing!'));
if ($form->{charttype} eq 'A'){
$form->isblank("category", $locale->text('Account Type missing!'));
}
$form->redirect($locale->text('Account saved!'))
if (AM->save_account(\%myconfig, \%$form));
......
$callback =
"$form->{script}?action=list_account&login=$form->{login}&password=$form->{password}";
# escape callback
$callback = $form->escape($callback);
foreach $ca (@{ $form->{CA} }) {
$ca->{debit} = "&nbsp;";
$ca->{credit} = "&nbsp;";
if ($ca->{amount} > 0) {
$ca->{credit} =
$form->format_amount(\%myconfig, $ca->{amount}, 2, "&nbsp;");
}
if ($ca->{amount} < 0) {
$ca->{debit} =
$form->format_amount(\%myconfig, -1 * $ca->{amount}, 2, "&nbsp;");
}
$ca->{heading} = ( $ca->{charttype} eq 'H' ) ? 1:'';
$ca->{link_edit_account} =
qq|$form->{script}?action=edit_account&id=$ca->{id}|
.qq|&path=$form->{path}&login=$form->{login}|
.qq|&password=$form->{password}&callback=$callback|;
}
# Ajax
my $list_account_details_url =
"$form->{script}?login=$form->{login}&path=$form->{path}"
."&password=$form->{password}&action=list_account_details&";
my $pjx = new CGI::Ajax(
'list_account_details' => $list_account_details_url
);
# Eneable AJAX debuging
#$pjx->DEBUG(1);
#$pjx->JSDEBUG(1);
push(@ { $form->{AJAX} }, $pjx);
$form->header;
my $parameters_ref = {
# hidden_variables => $_hidden_variables_ref,
};
# Ausgabe des Templates
print($form->parse_html_template('am/list_accounts', $parameters_ref));
$lxdebug->leave_sub();
}
sub list_account_details {
# Ajax Funktion aus list_account_details
$lxdebug->enter_sub();
my $chart_id = $form->{args};
CA->all_accounts(\%myconfig, \%$form, $chart_id);
$form->{title} = $locale->text('Chart of Accounts');
# construct callback
$callback =
"$form->{script}?action=list_account&path=$form->{path}&login=$form->{login}&password=$form->{password}";
$form->header;
# escape callback
......
}
if ($ca->{amount} < 0) {
$ca->{debit} =
$form->format_amount(\%myconfig, -$ca->{amount}, 2, "&nbsp;");
$form->format_amount(\%myconfig, -1 * $ca->{amount}, 2, "&nbsp;");
}
my @links = split( q{:}, $ca->{link});
......
: ( $link eq 'IC_income' ) ? $locale->text('Account Link IC_income')
: ( $link eq 'IC_expense' ) ? $locale->text('Account Link IC_expense')
: ( $link eq 'IC_taxservice' ) ? $locale->text('Account Link IC_taxservice')
: ( $link eq 'CT_tax' ) ? $locale->text('Account Link CT_tax')
# : ( $link eq 'CT_tax' ) ? $locale->text('Account Link CT_tax')
: $locale->text('Unknown Link') . ': ' . $link;
$ca->{link} .= qq|[| . $link . qq|]&nbsp;|;
$ca->{link} .= ($link ne '') ? "[$link] ":'';
}
$ca->{startdate} =~ s/,/<br>/og;
......
$ca->{taxkey} =~ s/,/<br>/og;
$ca->{taxaccount} =~ s/,/<br>/og;
$ca->{taxdescription} =~ s/,/<br>/og;
$ca->{datevautomatik} = ($ca->{datevautomatik}) ? $locale->text('On'):q{};
$ca->{datevautomatik} = ($ca->{datevautomatik}) ? $locale->text('On'):$locale->text('Off');
$ca->{category} = ($ca->{category} eq 'A') ? $locale->text('Account Category A')
: ($ca->{category} eq 'E') ? $locale->text('Account Category E')
......
.qq|&login=$form->{login}|
.qq|&password=$form->{password}&callback=$callback|;
}
my $parameters_ref = {
......
};
# Ausgabe des Templates
print($form->parse_html_template('am/list_accounts', $parameters_ref));
#my $q = CGI->new();
my $result = $form->parse_html_template('am/list_account_details', $parameters_ref);
print $result;
# print "chart_id:$chart_id, form->chartid:$form->{chart_id}, rest=$rest";
$lxdebug->leave_sub();
}
css/lx-office-erp.css
border-style:dotted;
border-width:thin;
}
.accountlistheading {
font-size: 10pt;
padding:3px;
color: white;
font-weight: bold;
text-align:left;
background-color:rgb(133,132,129);
}
.subsubheading {
color: black;
font-weight: bolder;
......
font-size: 14pt;
}
fieldset {
margin-top:15px;
color: black;
font-weight: bolder;
}
/* media stuff */
js/FormManager.js
/*
Form Manager: A simple method of constructing complex dynamic forms.
Written by Twey, http://www.twey.co.uk/.
Use, copying, and modification allowed, so long as credit
remains intact, under the terms of the GNU General Public License,
version 2 or later. See http://www.gnu.org/copyleft/gpl.html for details.
*/
var FORM_MANAGER_CONDITION_SEPARATOR = " AND ";
var FORM_MANAGER_POSSIBILITY_SEPARATOR = " OR ";
var FORM_MANAGER_NAME_VALUE_SEPARATOR = " BEING ";
var FORM_MANAGER_DEPENDS = "DEPENDS ON ";
var FORM_MANAGER_CONFLICTS = "CONFLICTS WITH ";
var FORM_MANAGER_EMPTY = "EMPTY";
function addEvent(el, ev, f) {
if(el.addEventListener)
el.addEventListener(ev, f, false);
else if(el.attachEvent) {
var t = function() {
f.apply(el);
};
addEvent.events.push({'element': el, 'event': ev, 'handler': f});
el.attachEvent("on" + ev, t);
} else
el['on' + ev] = f;
}
function addEvents(els, evs, f) {
for(var i = 0; i < els.length; ++i)
for(var j = 0; j < evs.length; ++j)
addEvent(els[i], evs[j], f);
}
addEvent.events = [];
if(typeof window.event !== "undefined")
addEvent(window, "unload", function() {
for(var i = 0, e = addEvent.events; i < e.length; ++i)
e[i].element.detachEvent("on" + e[i].event, e[i].handler);
}
);
function getRadioValue(el) {
if(!el.length) return null;
for(var i = 0; i < el.length; ++i)
if(el[i].checked) return el[i].value;
return null;
}
function getSelectValue(el) {
if(!el.tagName || el.tagName.toLowerCase() !== "select")
return null;
return el.options[el.selectedIndex].value;
}
function isElementValue(el, v) {
if(v === FORM_MANAGER_EMPTY) v = '';
return (
getRadioValue(el) == v ||
getSelectValue(el) == v ||
(
el.tagName &&
el.tagName.toLowerCase() !== "select" &&
el.value == v
)
);
}
function setupDependencies() {
var showEl = function() {
this.style.display = "";
if(this.parentNode.tagName.toLowerCase() == "label")
this.parentNode.style.display = "";
};
var hideEl = function() {
this.style.display = "none";
if(typeof this.checked !== "undefined") this.checked = false;
else this.value = "";
if(this.parentNode.tagName.toLowerCase() == "label")
this.parentNode.style.display = "none";
this.hidden = true;
};
var calcDeps = function() {
for(var i = 0, e = this.elements; i < e.length; ++i) {
e[i].hidden = false;
for(var j = 0, f = e[i].className.split(FORM_MANAGER_CONDITION_SEPARATOR); j < f.length; ++j)
if(f[j].indexOf(FORM_MANAGER_DEPENDS) === 0) {
for(var k = 0, g = f[j].substr(FORM_MANAGER_DEPENDS.length).split(FORM_MANAGER_POSSIBILITY_SEPARATOR); k < g.length; ++k)
if(g[k].indexOf(FORM_MANAGER_NAME_VALUE_SEPARATOR) === -1) {
if(e[g[k]] && e[g[k]].checked) break;
else if(k + 1 == g.length)
e[i].hide();
} else {
var n = g[k].split(FORM_MANAGER_NAME_VALUE_SEPARATOR),
v = n[1];
n = n[0];
if(e[n])
if(isElementValue(e[n], v)) break;
else if(k + 1 == g.length) e[i].hide();
}
} else if(f[j].indexOf(FORM_MANAGER_CONFLICTS) === 0) {
if(f[j].indexOf(FORM_MANAGER_NAME_VALUE_SEPARATOR) === -1) {
if(e[f[j].substr(FORM_MANAGER_CONFLICTS.length)] && e[f[j].substr(FORM_MANAGER_CONFLICTS.length)].checked) {
e[i].hide();
break;
}
} else {
var n = f[j].substr(FORM_MANAGER_CONFLICTS.length).split(FORM_MANAGER_NAME_VALUE_SEPARATOR),
v = n[1];
n = n[0];
if(e[n]) {
if(isElementValue(e[n], v)) {
e[i].hide();
break;
}
}
}
}
if(!e[i].hidden) e[i].show();
}
};
var changeHandler = function() {
this.form.calculateDependencies();
return true;
};
for(var i = 0; i < arguments.length; ++i) {
for(var j = 0, e = window.document.forms[arguments[i]].elements; j < e.length; ++j) {
addEvents([e[j]], ["change", "keyup", "focus", "click", "keydown"], changeHandler);
e[j].hide = hideEl;
e[j].show = showEl;
}
(e = window.document.forms[arguments[i]]).calculateDependencies = calcDeps;
e.calculateDependencies();
}
}
locale/de/all
'Account Category I' => 'Erl?skonto',
'Account Category L' => 'Passiva/Mittelherkunft',
'Account Category Q' => 'Passiva',
'Account ID' => 'Konto-ID',
'Account Description missing!' => 'Beschreibung fehlt!',
'Account Link AP' => 'Einkauf',
'Account Link AP_amount' => 'Verbindlichkeiten Aufwand/Anlagen',
'Account Link AP_paid' => 'Verbindlichkeiten Zahlungsausgang',
......
'Change Admin Password' => 'Administratorpasswort ?ndern',
'Change Password' => 'Passwort ?ndern',
'Character Set' => 'Zeichensatz',
'Chart Type' => 'Kontentyp',
'Chart of Accounts' => 'Konten?bersicht',
'Chart of accounts' => 'Kontenrahmen',
'Check' => '',
......
'Date Paid' => 'Zahlungsdatum',
'Date missing!' => 'Datum fehlt!',
'Datentr?gernummer' => 'Datentr?gernummer',
'Datev' => '',
'Datevautomatik' => 'Datevexport',
'Datum von' => 'Datum von',
'Debit' => 'Soll',
'Debit Account' => 'Sollkonto',
......
'Dependency loop detected:' => 'Schleife in den Abh&auml;ngigkeiten entdeckt:',
'Deposit' => 'Gutschrift',
'Description' => 'Beschreibung',
'Description (Click on Description for details)' => 'Beschreibung (Klick
?ffnet einzelne Kontendetails)',
'Description missing!' => 'Beschreibung fehlt.',
'Description must not be empty!' => 'Beschreibung darf nicht leer sein',
'Difference' => 'Differenz',
......
'G?ltig ab' => 'G?ltig ab',
'HTML' => 'HTML',
'HTML Templates' => 'HTML-Vorlagen',
'Header' => '?berschrift',
'Heading' => '?berschrift',
'Help' => 'Hilfe',
'Here\'s an example command line:' => 'Hier ist eine Kommandozeile, die als Beispiel dient:',
......
'Lieferantennummer' => 'Lieferantennummer',
'Lieferungen' => 'Lieferungen',
'Line Total' => 'Zeilensumme',
'Link' => 'Verkn?pfungen',
'List Accounts' => 'Konten anzeigen',
'List Businesses' => 'Kunden-/Lieferantentypen anzeigen',
'List Departments' => 'Abteilungen anzeigen',
......
'Lx-Office is about to update the database <b><TMPL_VAR dbname ESCAPE=HTML></b>. You should create a backup of the database before proceeding because the backup might not be reversible.' => 'Lx-Office wird gleich die Datenbank <b><TMPL_VAR dbname ESCAPE=HTML></b> aktualisieren. Sie sollten eine Sicherungskopie der Datenbank erstellen, bevor Sie fortfahren, da die Aktualisierung unter Umst&auml;nden nicht umkehrbar ist.',
'MAILED' => 'Gesendet',
'Mahnungsnummer' => 'Mahnungsnummer',
'Main Preferences' => 'Grundeinstellungen',
'Make' => 'Hersteller',
'Manager' => 'Manager',
'Mandantennummer' => 'Mandantennummer',
......
'No.' => 'Position',
'Non-taxable Purchases' => 'Nicht zu versteuernde Eink?ufe',
'Non-taxable Sales' => 'Nicht zu versteuernde Verk?ufe',
'None' => 'Kein',
'Not Discountable' => 'Nicht rabattierf?hig',
'Not delivered' => 'Nicht geliefert',
'Not obsolete' => 'G?ltig',
......
'Obsolete' => 'Ung?ltig',
'Oct' => 'Okt',
'October' => 'Oktober',
'Off' => 'Aus',
'Old (on the side)' => 'Alt (seitlich)',
'On' => 'An',
'On Hand' => 'Auf Lager',
......
'Post Payment' => 'Zahlung buchen',
'Post as new' => 'Neu buchen',
'Postscript' => 'Postscript',
'Posustva_coa' => 'USTVA Kennz.',
'Preferences' => 'Benutzereinstellungen',
'Preferences saved!' => 'Einstellungen gespeichert!',
'Preis' => 'Preis',
......
'Removed spoolfiles!' => 'Druckdateien entfernt!',
'Removing marked entries from queue ...' => 'Markierte Eintr?ge werden von der Warteschlange entfernt ...',
'Repeat the password' => 'Passwort wiederholen',
'Report Positions' => 'Berichte',
'Report and misc. Preferences' => 'Sonstige Einstellungen',
'Report for' => 'Bericht f?r',
'Reports' => 'Berichte',
'Reqdate' => 'Lieferdatum',
......
'Sat. Fax' => 'Sat. Fax',
'Sat. Phone' => 'Sat. Tel.',
'Save' => 'Speichern',
'Save account first to insert taxkeys' => 'Einstellungen sind nach
dem Speichern des Kontos verf?gbar...',
'Save and AP Transaction' => 'Speichern und Kreditorenbuchung erfassen',
'Save and AR Transaction' => 'Speichern und Debitorenbuchung erfassen',
'Save and Close' => 'Speichern und schlie?en',
......
'Source' => 'Beleg',
'Spoolfile' => 'Druckdatei',
'Start Dunning Process' => 'Mahnprozess starten',
'Startdate' => 'G?ltig ab',
'Startdate_coa' => 'G?ltig ab',
'Statement' => 'Sammelrechnung',
'Statement Balance' => 'Sammelrechnungsbilanz',
'Statement sent to' => 'Sammelrechnung verschickt an',
......
'Tax collected' => 'vereinnahmte Steuer',
'Tax number' => 'Steuernummer',
'Tax paid' => 'Vorsteuer',
'Taxaccount' => 'Steuer Konto',
'Tax-o-matic Account: ' => '',
'Taxaccount_coa' => 'Automatikkonto',
'Taxation' => 'Versteuerungs Verfahren',
'Taxdescription' => 'Steuerkonto<br />Beschreibung',
'Taxdescription_coa' => 'Steuer',
'Taxkey' => 'Steuerschl?ssel',
'Taxkey_coa' => 'Steuerschl?ssel',
'Taxkeys and Taxreport Preferences' => 'Steuerautomatik und UStVA',
'Taxlink_coa' => 'Steuerautomatik',
'Tel' => 'Tel',
'Tel.' => 'Telefon',
'Telephone' => 'Telefon',
......
'USt-IdNr.' => 'USt-IdNr.',
'UStVA' => 'UStVA',
'UStVA (PDF-Dokument)' => 'UStVa als PDF-Dokument',
'UStVA-Nr. 35' => 'Kz. 35',
'UStVA-Nr. 36' => 'Kz. 36',
'UStVA-Nr. 39' => 'Kz. 37',
'UStVA-Nr. 41' => 'Kz. 41',
'UStVA-Nr. 42' => 'Kz. 42',
'UStVA-Nr. 43' => 'Kz. 43',
'UStVA-Nr. 44' => 'Kz. 44',
'UStVA-Nr. 45' => 'Kz. 45',
'UStVA-Nr. 48' => 'Kz. 48',
'UStVA-Nr. 49' => 'Kz. 49',
'UStVA-Nr. 51 left' => 'Kz. 51 links',
'UStVA-Nr. 51 right' => 'Kz. 51 rechts',
'UStVA-Nr. 52' => 'Kz. 52',
'UStVA-Nr. 53' => 'Kz. 53',
'UStVA-Nr. 59' => 'Kz. 59',
'UStVA-Nr. 60' => 'Kz. 60',
'UStVA-Nr. 61' => 'Kz. 61',
'UStVA-Nr. 62' => 'Kz. 62',
'UStVA-Nr. 63' => 'Kz. 63',
'UStVA-Nr. 64' => 'Kz. 64',
'UStVA-Nr. 65' => 'Kz. 65',
'UStVA-Nr. 66' => 'Kz. 66',
'UStVA-Nr. 67' => 'Kz. 67',
'UStVA-Nr. 69' => 'Kz. 69',
'UStVA-Nr. 73' => 'Kz. 73',
'UStVA-Nr. 74' => 'Kz. 74',
'UStVA-Nr. 76' => 'Kz. 76',
'UStVA-Nr. 77' => 'Kz. 77',
... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.

Auch abrufbar als: Unified diff