X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=bin%2Fmozilla%2Fam.pl;h=e141696f80ab7f26c88f6da9572ef1b463436672;hb=e86e30de944c4bbe4b42f43d933e0a28a83408dd;hp=77b8e4d607742e4f9fecddfdd8fc6df9312e5c6f;hpb=fb6468fcbb2662efb5f7490867417b735feb4d8a;p=kivitendo-erp.git
diff --git a/bin/mozilla/am.pl b/bin/mozilla/am.pl
index 77b8e4d60..e141696f8 100644
--- a/bin/mozilla/am.pl
+++ b/bin/mozilla/am.pl
@@ -42,7 +42,9 @@ use SL::User;
use SL::USTVA;
use SL::Iconv;
use SL::TODO;
-use SL::Printer;
+use SL::DB::Printer;
+use SL::DB::Tax;
+use SL::DB::Language;
use CGI;
require "bin/mozilla/common.pl";
@@ -144,7 +146,7 @@ sub account_header {
rate => '',
taxkey_id => '',
pos_ustva => '',
- startdate => '',
+ startdate => $form->{account_exists} ? '' : DateTime->new(year => 1970, month => 1, day => 1)->to_lxoffice,
};
push @{ $form->{ACCOUNT_TAXKEYS} }, $newtaxkey_ref;
@@ -336,7 +338,7 @@ sub account_header {
# account where AR_tax or AP_tax is set are not orphaned if they are used as
# tax-o-matic account
- if ( $form->{id} && !$form->{orphaned} && ($form->{link} =~ m/(AP_tax|AR_tax)/) ) {
+ if ( $form->{id} && $form->{orphaned} && ($form->{link} =~ m/(AP_tax|AR_tax)/) ) {
if (SL::DB::Manager::Tax->find_by(chart_id => $form->{id})) {
$form->{orphaned} = 0;
}
@@ -394,6 +396,17 @@ sub save_account {
if ($form->{charttype} eq 'A'){
$form->isblank("category", $locale->text('Account Type missing!'));
+
+ my $found_valid_taxkey = 0;
+ foreach my $i (0 .. 10) { # 10 is maximum count of taxkeys in form
+ if ($form->{"taxkey_startdate_$i"} and !$form->{"taxkey_del_$i"}) {
+ $found_valid_taxkey = 1;
+ last;
+ }
+ }
+ if ($found_valid_taxkey == 0) {
+ $form->error($locale->text('A valid taxkey is missing!'));
+ }
}
$form->redirect($locale->text('Account saved!'))
@@ -426,10 +439,6 @@ sub save_as_new_account {
}
$form->{id} = 0;
- if ($form->{"original_accno"} &&
- ($form->{"accno"} eq $form->{"original_accno"})) {
- $form->error($locale->text('Account Number already used!'));
- }
$form->redirect($locale->text('Account saved!'))
if (AM->save_account(\%myconfig, \%$form));
$form->error($locale->text('Cannot save account!'));
@@ -466,7 +475,7 @@ sub list_account {
$ca->{link_edit_account} = $link_edit_account . '&id=' . E($ca->{id});
}
- $form->use_stylesheet("list_accounts.css");
+ $::request->{layout}->use_stylesheet("list_accounts.css");
$form->{title} = $locale->text('Chart of Accounts');
$form->header;
@@ -633,48 +642,17 @@ sub list_lead {
}
sub lead_header {
- $main::lxdebug->enter_sub();
-
- my $form = $main::form;
- my $locale = $main::locale;
-
- $main::auth->assert('config');
-
- $form->{title} = $locale->text("$form->{title} Lead");
+ $::lxdebug->enter_sub;
+ $::auth->assert('config');
# $locale->text('Add Lead')
# $locale->text('Edit Lead')
+ $::form->{title} = $::locale->text("$::form->{title} Lead");
- $form->{description} =~ s/\"/"/g;
-
- my $description =
- qq||;
-
- $form->header;
-
- print qq|
-
-
-
+ $::form->{callback} = "am.pl?action=list_buchungsgruppe";
+ $::form->{title} = $::locale->text('Buchungsgruppen');
+ $::form->header;
-
-
-|;
+ print $::form->parse_html_template('am/buchungsgruppe_list', {
+ swap_link => qq|am.pl?action=swap_buchungsgruppen&|,
+ });
- $main::lxdebug->leave_sub();
+ $::lxdebug->leave_sub;
}
sub buchungsgruppe_header {
- $main::lxdebug->enter_sub();
-
- my $form = $main::form;
- my $locale = $main::locale;
-
- $main::auth->assert('config');
-
- $form->{title} = $locale->text("$form->{title} Buchungsgruppe");
+ $::lxdebug->enter_sub;
+ $::auth->assert('config');
# $locale->text('Add Accounting Group')
# $locale->text('Edit Accounting Group')
+ $::form->{title} = $::locale->text("$::form->{title} Buchungsgruppe");
my ($acc_inventory, $acc_income, $acc_expense) = ({}, {}, {});
my %acc_type_map = (
- "IC" => $acc_inventory,
- "IC_income" => $acc_income,
- "IC_sale" => $acc_income,
- "IC_expense" => $acc_expense,
- "IC_cogs" => $acc_expense,
- );
+ IC => $acc_inventory,
+ IC_income => $acc_income,
+ IC_sale => $acc_income,
+ IC_expense => $acc_expense,
+ IC_cogs => $acc_expense,
+ );
- foreach my $key (keys(%acc_type_map)) {
- foreach my $ref (@{ $form->{IC_links}{$key} }) {
- $acc_type_map{$key}->{$ref->{"id"}} = $ref;
+ for my $key (keys %acc_type_map) {
+ for my $ref (@{ $::form->{IC_links}{$key} }) {
+ $acc_type_map{$key}{$ref->{id}} = $ref;
}
}
- foreach my $type (qw(IC IC_income IC_expense)) {
- $form->{"select$type"} =
- join("",
- map({ "" }
- sort({ $a->{"accno"} cmp $b->{"accno"} }
- values(%{$acc_type_map{$type}}))));
- }
-
- if ($form->{id}) {
- $form->{selectIC} =~ s/selected//g;
- $form->{selectIC} =~ s/ value=\Q$form->{inventory_accno_id}\E/ value=$form->{inventory_accno_id} selected/;
- $form->{selectIC_income} =~ s/selected//g;
- $form->{selectIC_income} =~ s/ value=\Q$form->{income_accno_id_0}\E/ value=$form->{income_accno_id_0} selected/;
- $form->{selectIC_expense} =~ s/selected//g;
- $form->{selectIC_expense} =~ s/ value=\Q$form->{expense_accno_id_0}\E/ value=$form->{expense_accno_id_0} selected/;
- }
-
- my $linkaccounts;
- if ( $::instance_conf->get_inventory_system eq 'perpetual' ) { # was !$::lx_office_conf{system}->{eur}) { }
- $linkaccounts = qq|
-
- | . $locale->text('Inventory') . qq| |
- |
-
-
|;
- } elsif ( $::instance_conf->get_inventory_system eq 'periodic' ) {
- # don't allow choice of inventory accno and don't show that line
- $linkaccounts = qq|
- {inventory_accno_id}>|;
- };
-
-
- $linkaccounts .= qq|
-
- | . $locale->text('National Revenues') . qq| |
- |
-
-
- | . $locale->text('National Expenses') . qq| |
- |
-
|;
- if ($form->{id}) {
- $form->{selectIC_income} =~ s/selected//g;
- $form->{selectIC_income} =~ s/ value=\Q$form->{income_accno_id_1}\E/ value=$form->{income_accno_id_1} selected/;
- $form->{selectIC_expense} =~ s/selected//g;
- $form->{selectIC_expense} =~ s/ value=\Q$form->{expense_accno_id_1}\E/ value=$form->{expense_accno_id_1} selected/;
- }
- $linkaccounts .= qq|
- | . $locale->text('Revenues EU with UStId') . qq| |
- |
-
-
- | . $locale->text('Expenses EU with UStId') . qq| |
- |
-
|;
-
- if ($form->{id}) {
- $form->{selectIC_income} =~ s/selected//g;
- $form->{selectIC_income} =~ s/ value=\Q$form->{income_accno_id_2}\E/ value=$form->{income_accno_id_2} selected/;
- $form->{selectIC_expense} =~ s/selected//g;
- $form->{selectIC_expense} =~ s/ value=\Q$form->{expense_accno_id_2}\E/ value=$form->{expense_accno_id_2} selected/;
- }
-
- $linkaccounts .= qq|
- | . $locale->text('Revenues EU without UStId') . qq| |
- |
-
-
- | . $locale->text('Expenses EU without UStId') . qq| |
- |
-
|;
-
- if ($form->{id}) {
- $form->{selectIC_income} =~ s/selected//g;
- $form->{selectIC_income} =~ s/ value=\Q$form->{income_accno_id_3}\E/ value=$form->{income_accno_id_3} selected/;
- $form->{selectIC_expense} =~ s/selected//g;
- $form->{selectIC_expense} =~ s/ value=\Q$form->{expense_accno_id_3}\E/ value=$form->{expense_accno_id_3} selected/;
- }
-
- $linkaccounts .= qq|
- | . $locale->text('Foreign Revenues') . qq| |
- |
-
-
- | . $locale->text('Foreign Expenses') . qq| |
- |
-
-|;
-
-
- $form->header;
+ my %sorted_accounts = map {
+ $_ => [ sort { $a->{accno} cmp $b->{accno} } values %{ $acc_type_map{$_} } ],
+ } keys %acc_type_map;
- print qq|
-
-
-
+ AM->closedto(\%::myconfig, $::form);
-
-
-|;
+ $::form->header;
+ print $::form->parse_html_template('am/audit_control');
- $main::lxdebug->leave_sub();
+ $::lxdebug->leave_sub;
}
sub doclose {
@@ -1797,10 +1409,18 @@ sub add_tax {
_get_taxaccount_selection();
+ $form->{asset} = 1;
+ $form->{liability} = 1;
+ $form->{equity} = 1;
+ $form->{revenue} = 1;
+ $form->{expense} = 1;
+ $form->{costs} = 1;
+
$form->header();
my $parameters_ref = {
# ChartTypeIsAccount => $ChartTypeIsAccount,
+ LANGUAGES => SL::DB::Manager::Language->get_all_sorted,
};
# Ausgabe des Templates
@@ -1821,13 +1441,23 @@ sub edit_tax {
$form->{title} = $locale->text('Edit');
AM->get_tax(\%myconfig, \%$form);
+
_get_taxaccount_selection();
+ $form->{asset} = $form->{chart_categories} =~ 'A' ? 1 : 0;
+ $form->{liability} = $form->{chart_categories} =~ 'L' ? 1 : 0;
+ $form->{equity} = $form->{chart_categories} =~ 'Q' ? 1 : 0;
+ $form->{revenue} = $form->{chart_categories} =~ 'I' ? 1 : 0;
+ $form->{expense} = $form->{chart_categories} =~ 'E' ? 1 : 0;
+ $form->{costs} = $form->{chart_categories} =~ 'C' ? 1 : 0;
+
$form->{rate} = $form->format_amount(\%myconfig, $form->{rate}, 2);
$form->header();
my $parameters_ref = {
+ LANGUAGES => SL::DB::Manager::Language->get_all_sorted,
+ TAX => SL::DB::Manager::Tax->find_by(id => $form->{id}),
};
# Ausgabe des Templates
@@ -1888,12 +1518,16 @@ sub save_tax {
$main::auth->assert('config');
- $form->isblank("rate", $locale->text('Taxrate missing!'));
- $form->isblank("taxdescription", $locale->text('Taxdescription missing!'));
- $form->isblank("taxkey", $locale->text('Taxkey missing!'));
+ $form->error($locale->text('Taxkey missing!')) unless length($form->{taxkey}) != 0;
+ $form->error($locale->text('Taxdescription missing!')) unless length($form->{taxdescription}) != 0;
+ $form->error($locale->text('Taxrate missing!')) unless length($form->{rate}) != 0;
$form->{rate} = $form->parse_amount(\%myconfig, $form->{rate});
+ if ($form->{taxkey} == 0 and $form->{rate} > 0) {
+ $form->error($locale->text('Taxkey 0 is reserved for rate 0'));
+ }
+
if ( $form->{rate} < 0 || $form->{rate} >= 100 ) {
$form->error($locale->text('Tax Percent is a number between 0 and 100'));
}
@@ -1902,6 +1536,9 @@ sub save_tax {
$form->error($locale->text('Tax Percent is a number between 0 and 100'));
}
+ my @translation_keys = grep { $_ =~ '^translation_\d+' } keys %$form;
+ $form->{translations} = { map { $_ =~ '^translation_(\d+)'; $1 => $form->{$_} } @translation_keys };
+
AM->save_tax(\%myconfig, \%$form);
$form->redirect($locale->text('Tax saved!'));
@@ -1933,7 +1570,6 @@ sub add_price_factor {
$form->{title} = $locale->text('Add Price Factor');
$form->{callback} ||= build_std_url('action=add_price_factor');
- $form->{fokus} = 'description';
$form->header();
print $form->parse_html_template('am/edit_price_factor');
@@ -1952,7 +1588,6 @@ sub edit_price_factor {
$form->{title} = $locale->text('Edit Price Factor');
$form->{callback} ||= build_std_url('action=add_price_factor');
- $form->{fokus} = 'description';
AM->get_price_factor(\%myconfig, $form);
@@ -2040,7 +1675,6 @@ sub add_warehouse {
$form->{title} = $locale->text('Add Warehouse');
$form->{callback} ||= build_std_url('action=add_warehouse');
- $form->{fokus} = 'description';
$form->header();
print $form->parse_html_template('am/edit_warehouse');
@@ -2063,7 +1697,6 @@ sub edit_warehouse {
$form->{title} = $locale->text('Edit Warehouse');
$form->{callback} ||= build_std_url('action=list_warehouses');
- $form->{fokus} = 'description';
$form->header();
print $form->parse_html_template('am/edit_warehouse');