Historien Suchmaschine: Stacküberlauf vermeiden
[kivitendo-erp.git] / bin / mozilla / am.pl
index 99c097b..af30987 100644 (file)
@@ -24,7 +24,8 @@
 # GNU General Public License for more details.
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1335, USA.
 #======================================================================
 #
 # administration
@@ -45,6 +46,8 @@ use SL::TODO;
 use SL::DB::Printer;
 use SL::DB::Tax;
 use SL::DB::Language;
+use SL::DB::Default;
+use SL::DBUtils qw(selectall_array_query conv_dateq);
 use CGI;
 
 require "bin/mozilla/common.pl";
@@ -87,10 +90,17 @@ sub edit_account {
 
   my $form     = $main::form;
   my %myconfig = %main::myconfig;
+  my $defaults = SL::DB::Default->get;
 
   $main::auth->assert('config');
 
   $form->{title} = "Edit";
+  $form->{feature_balance} = $defaults->feature_balance;
+  $form->{feature_datev} = $defaults->feature_datev;
+  $form->{feature_erfolgsrechnung} = $defaults->feature_erfolgsrechnung;
+  $form->{feature_eurechnung} = $defaults->feature_eurechnung;
+  $form->{feature_ustva} = $defaults->feature_ustva;
+
   AM->get_account(\%myconfig, \%$form);
 
   foreach my $item (split(/:/, $form->{link})) {
@@ -256,6 +266,20 @@ sub account_header {
 
   }
 
+  my $select_er = q|<option value=""> |. $locale->text('None') .q|</option>\n|;
+  my %er = (
+       1  => "Ertrag",
+       6  => "Aufwand");
+  foreach my $item (sort({ $a <=> $b } keys(%er))) {
+    my $text = H($::locale->{iconv_utf8}->convert($er{$item}));
+    if ($item == $form->{pos_er}) {
+      $select_er .= qq|<option value=$item selected>|. sprintf("%.2d", $item) .qq|. $text</option>\n|;
+    } else {
+      $select_er .= qq|<option value=$item>|. sprintf("%.2d", $item) .qq|. $text</option>\n|;
+    }
+
+  }
+
   my $select_bwa = q|<option value=""> |. $locale->text('None') .q|</option>\n|;
 
   my %bwapos = (
@@ -358,6 +382,7 @@ sub account_header {
     select_bwa                 => $select_bwa,
     select_bilanz              => $select_bilanz,
     select_eur                 => $select_eur,
+    select_er                  => $select_er,
   };
 
   # Ausgabe des Templates
@@ -575,7 +600,7 @@ sub delete_account {
   $form->{title} = $locale->text('Delete Account');
 
   foreach my $id (
-    qw(inventory_accno_id income_accno_id expense_accno_id fxgain_accno_id fxloss_accno_id)
+    qw(inventory_accno_id income_accno_id expense_accno_id fxgain_accno_id fxloss_accno_id rndgain_accno_id rndloss_accno_id)
     ) {
     if ($form->{id} == $form->{$id}) {
       $form->error($locale->text('Cannot delete default account!'));
@@ -750,7 +775,7 @@ sub language_header {
   $::form->header;
 
   print $::form->parse_html_template('am/language_header', {
-    numberformats => [ '1,000.00', '1000.00', '1.000,00', '1000,00' ],
+    numberformats => [ '1,000.00', '1000.00', '1.000,00', '1000,00', "1'000.00" ],
     dateformats => [ qw(mm/dd/yy dd/mm/yy dd.mm.yy yyyy-mm-dd) ],
   });
 
@@ -816,7 +841,7 @@ sub config {
 
   _build_cfg_options('dateformat', qw(mm/dd/yy dd/mm/yy dd.mm.yy yyyy-mm-dd));
   _build_cfg_options('timeformat', qw(hh:mm hh:mm:ss));
-  _build_cfg_options('numberformat', ('1,000.00', '1000.00', '1.000,00', '1000,00'));
+  _build_cfg_options('numberformat', ('1,000.00', '1000.00', '1.000,00', '1000,00', "1'000.00"));
 
   my @formats = ();
   if ($::lx_office_conf{print_templates}->{opendocument}
@@ -885,9 +910,9 @@ sub config {
 
   $myconfig{show_form_details} = 1 unless (defined($myconfig{show_form_details}));
   $form->{CAN_CHANGE_PASSWORD} = $main::auth->can_change_password();
-  $form->{todo_cfg}            = { TODO->get_user_config('login' => $form->{login}) };
+  $form->{todo_cfg}            = { TODO->get_user_config('login' => $::myconfig{login}) };
 
-  $form->{title}               = $locale->text('Edit Preferences for #1', $form->{login});
+  $form->{title}               = $locale->text('Edit Preferences for #1', $::myconfig{login});
 
   $form->header();
 
@@ -907,7 +932,7 @@ sub save_preferences {
 
   $form->{stylesheet} = $form->{usestylesheet};
 
-  TODO->save_user_config('login' => $form->{login}, %{ $form->{todo_cfg} || { } });
+  TODO->save_user_config('login' => $::myconfig{login}, %{ $form->{todo_cfg} || { } });
 
   if (AM->save_preferences($form)) {
     if ($::auth->can_change_password()
@@ -920,7 +945,7 @@ sub save_preferences {
         $form->error($::locale->text('The settings were saved, but the password was not changed.') . ' ' . join(' ', $verifier->errors($result)));
       }
 
-      $::auth->change_password($form->{login}, $form->{new_password});
+      $::auth->change_password($::myconfig{login}, $form->{new_password});
     }
 
     $form->redirect($locale->text('Preferences saved!'));
@@ -1190,23 +1215,28 @@ sub show_am_history {
   my $callback     = build_std_url(qw(action einschraenkungen fromdate todate mitarbeiter searchid what2search));
   $form->{order} ||= 'h.itime--1';
 
-  my %search = ( "Artikelnummer"          => "parts",
-                 "Kundennummer"           => "customer",
-                 "Lieferantennummer"      => "vendor",
-                 "Projektnummer"          => "project",
-                 "Buchungsnummer"         => "oe",
-                 "Eingangsrechnungnummer" => "ap",
-                 "Ausgangsrechnungnummer" => "ar",
-                 "Mahnungsnummer"         => "dunning"
-    );
+  # my %search = ( "Artikelnummer"          => "parts",
+  #                "Kundennummer"           => "customer",
+  #                "Lieferantennummer"      => "vendor",
+  #                "Projektnummer"          => "project",
+  #                "Auftragsnummer"         => "oe",
+  #                "Angebotsnummer"         => "oe",
+  #                "Eingangsrechnungnummer" => "ap",
+  #                "Ausgangsrechnungnummer" => "ar",
+  #                "Mahnungsnummer"         => "dunning",
+  #                "Buchungsnummer"         => "gl",
+  # );
+
   my %searchNo = ( "Artikelnummer"          => "partnumber",
                    "Kundennummer"           => "customernumber",
                    "Lieferantennummer"      => "vendornumber",
                    "Projektnummer"          => "projectnumber",
-                   "Buchungsnummer"         => "ordnumber",
+                   "Auftragsnummer"         => "ordnumber",
+                   "Angebotsnummer"         => "quonumber",
                    "Eingangsrechnungnummer" => "invnumber",
                    "Ausgangsrechnungnummer" => "invnumber",
-                   "Mahnungsnummer"         => "dunning_id"
+                   "Mahnungsnummer"         => "dunning_id",
+                   "Buchungsnummer"         => "gltransaction"
     );
 
   my $dbh = $form->dbconnect(\%myconfig);
@@ -1227,8 +1257,9 @@ sub show_am_history {
 
   my @ids    = grep { $_ * 1 } selectall_array_query($form, $dbh, $query);
   my $daten .= shift @ids;
-  $daten    .= join '', map { " OR trans_id = $_" } @ids;
-
+  if (scalar(@ids) > 0 ) {
+    $daten  .= ' OR trans_id IN (' . join(',', @ids) . ')';
+  }
   my ($sort, $sortby) = split(/\-\-/, $form->{order});
   $sort =~ s/.*\.(.*)$/$1/;
 
@@ -1614,7 +1645,7 @@ sub delete_warehouse {
 
     $form->header();
     print $form->parse_html_template('am/confirm_delete_warehouse');
-    ::end_of_request();
+    $::dispatcher->end_request;
   }
 
   if (AM->delete_warehouse(\%myconfig, $form)) {