ActionBar: Angebote/Aufträge: E-Mail-Versand über Dialog implementiert
[kivitendo-erp.git] / bin / mozilla / am.pl
index 392aedc..8ef1206 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})) {
@@ -214,47 +224,38 @@ sub account_header {
   }
 
   my $select_eur = q|<option value=""> |. $locale->text('None') .q|</option>\n|;
-  my %eur;
-  if (($form->{country_mode} = SL::DB::Default->get->country_mode) eq 'CH') {
-    %eur = (
-         1  => "Ertrag",
-         6  => "Aufwand",
-    );
-  } else {
-    %eur = (
-         1  => "Umsatzerlöse",
-         2  => "sonstige Erlöse",
-         3  => "Privatanteile",
-         4  => "Zinserträge",
-         5  => "Ausserordentliche Erträge",
-         6  => "Vereinnahmte Umsatzst.",
-         7  => "Umsatzsteuererstattungen",
-         8  => "Wareneingänge",
-         9  => "Löhne und Gehälter",
-         10 => "Gesetzl. sozialer Aufw.",
-         11 => "Mieten",
-         12 => "Gas, Strom, Wasser",
-         13 => "Instandhaltung",
-         14 => "Steuern, Versich., Beiträge",
-         15 => "Kfz-Steuern",
-         16 => "Kfz-Versicherungen",
-         17 => "Sonst. Fahrzeugkosten",
-         18 => "Werbe- und Reisekosten",
-         19 => "Instandhaltung u. Werkzeuge",
-         20 => "Fachzeitschriften, Bücher",
-         21 => "Miete für Einrichtungen",
-         22 => "Rechts- und Beratungskosten",
-         23 => "Bürobedarf, Porto, Telefon",
-         24 => "Sonstige Aufwendungen",
-         25 => "Abschreibungen auf Anlagever.",
-         26 => "Abschreibungen auf GWG",
-         27 => "Vorsteuer",
-         28 => "Umsatzsteuerzahlungen",
-         29 => "Zinsaufwand",
-         30 => "Ausserordentlicher Aufwand",
-         31 => "Betriebliche Steuern",
-    );
-  }
+  my %eur = (
+          1  => "Umsatzerlöse",
+          2  => "sonstige Erlöse",
+          3  => "Privatanteile",
+          4  => "Zinserträge",
+          5  => "Ausserordentliche Erträge",
+          6  => "Vereinnahmte Umsatzst.",
+          7  => "Umsatzsteuererstattungen",
+          8  => "Wareneingänge",
+          9  => "Löhne und Gehälter",
+          10 => "Gesetzl. sozialer Aufw.",
+          11 => "Mieten",
+          12 => "Gas, Strom, Wasser",
+          13 => "Instandhaltung",
+          14 => "Steuern, Versich., Beiträge",
+          15 => "Kfz-Steuern",
+          16 => "Kfz-Versicherungen",
+          17 => "Sonst. Fahrzeugkosten",
+          18 => "Werbe- und Reisekosten",
+          19 => "Instandhaltung u. Werkzeuge",
+          20 => "Fachzeitschriften, Bücher",
+          21 => "Miete für Einrichtungen",
+          22 => "Rechts- und Beratungskosten",
+          23 => "Bürobedarf, Porto, Telefon",
+          24 => "Sonstige Aufwendungen",
+          25 => "Abschreibungen auf Anlagever.",
+          26 => "Abschreibungen auf GWG",
+          27 => "Vorsteuer",
+          28 => "Umsatzsteuerzahlungen",
+          29 => "Zinsaufwand",
+          30 => "Ausserordentlicher Aufwand",
+          31 => "Betriebliche Steuern");
   foreach my $item (sort({ $a <=> $b } keys(%eur))) {
     my $text = H($::locale->{iconv_utf8}->convert($eur{$item}));
     if ($item == $form->{pos_eur}) {
@@ -265,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 = (
@@ -367,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
@@ -598,207 +614,6 @@ sub delete_account {
   $main::lxdebug->leave_sub();
 }
 
-sub add_lead {
-  $main::lxdebug->enter_sub();
-
-  my $form     = $main::form;
-
-  $main::auth->assert('config');
-
-  $form->{title} = "Add";
-
-  $form->{callback} = "am.pl?action=add_lead" unless $form->{callback};
-
-  &lead_header;
-  &form_footer;
-
-  $main::lxdebug->leave_sub();
-}
-
-sub edit_lead {
-  $main::lxdebug->enter_sub();
-
-  my $form     = $main::form;
-  my %myconfig = %main::myconfig;
-
-  $main::auth->assert('config');
-
-  $form->{title} = "Edit";
-
-  AM->get_lead(\%myconfig, \%$form);
-
-  &lead_header;
-
-  $form->{orphaned} = 1;
-  &form_footer;
-
-  $main::lxdebug->leave_sub();
-}
-
-sub list_lead {
-  $::lxdebug->enter_sub;
-  $::auth->assert('config');
-
-  AM->lead(\%::myconfig, $::form);
-
-  $::form->{callback} = "am.pl?action=list_lead";
-  $::form->{title}    = $::locale->text('Lead');
-
-  $::form->header;
-  print $::form->parse_html_template('am/lead_list');
-
-  $::lxdebug->leave_sub;
-}
-
-sub lead_header {
-  $::lxdebug->enter_sub;
-  $::auth->assert('config');
-
-  # $locale->text('Add Lead')
-  # $locale->text('Edit Lead')
-  $::form->{title} = $::locale->text("$::form->{title} Lead");
-
-  $::form->header;
-  print $::form->parse_html_template('am/lead_header');
-
-  $::lxdebug->leave_sub;
-}
-
-sub save_lead {
-  $main::lxdebug->enter_sub();
-
-  my $form     = $main::form;
-  my %myconfig = %main::myconfig;
-  my $locale   = $main::locale;
-
-  $main::auth->assert('config');
-
-  $form->isblank("description", $locale->text('Description missing!'));
-  AM->save_lead(\%myconfig, \%$form);
-  $form->redirect($locale->text('lead saved!'));
-
-  $main::lxdebug->leave_sub();
-}
-
-sub delete_lead {
-  $main::lxdebug->enter_sub();
-
-  my $form     = $main::form;
-  my %myconfig = %main::myconfig;
-  my $locale   = $main::locale;
-
-  $main::auth->assert('config');
-
-  AM->delete_lead(\%myconfig, \%$form);
-  $form->redirect($locale->text('lead deleted!'));
-
-  $main::lxdebug->leave_sub();
-}
-
-sub add_language {
-  $main::lxdebug->enter_sub();
-
-  my $form     = $main::form;
-
-  $main::auth->assert('config');
-
-  $form->{title} = "Add";
-
-  $form->{callback} = "am.pl?action=add_language" unless $form->{callback};
-
-  &language_header;
-  &form_footer;
-
-  $main::lxdebug->leave_sub();
-}
-
-sub edit_language {
-  $main::lxdebug->enter_sub();
-
-  my $form     = $main::form;
-  my %myconfig = %main::myconfig;
-
-  $main::auth->assert('config');
-
-  $form->{title} = "Edit";
-
-  AM->get_language(\%myconfig, \%$form);
-
-  &language_header;
-
-  $form->{orphaned} = 1;
-  &form_footer;
-
-  $main::lxdebug->leave_sub();
-}
-
-sub list_language {
-  $::lxdebug->enter_sub;
-  $::auth->assert('config');
-
-  AM->language(\%::myconfig, $::form);
-
-  $::form->{callback} = "am.pl?action=list_language";
-  $::form->{title}   = $::locale->text('Languages');
-
-  $::form->header;
-
-  print $::form->parse_html_template('am/language_list');
-
-  $::lxdebug->leave_sub;
-}
-
-sub language_header {
-  $::lxdebug->enter_sub;
-  $::auth->assert('config');
-
-  # $locale->text('Add Language')
-  # $locale->text('Edit Language')
-  $::form->{title} = $::locale->text("$::form->{title} Language");
-
-  $::form->header;
-
-  print $::form->parse_html_template('am/language_header', {
-    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) ],
-  });
-
-  $::lxdebug->leave_sub;
-}
-
-sub save_language {
-  $main::lxdebug->enter_sub();
-
-  my $form     = $main::form;
-  my %myconfig = %main::myconfig;
-  my $locale   = $main::locale;
-
-  $main::auth->assert('config');
-
-  $form->isblank("description", $locale->text('Language missing!'));
-  $form->isblank("template_code", $locale->text('Template Code missing!'));
-  $form->isblank("article_code", $locale->text('Article Code missing!'));
-  AM->save_language(\%myconfig, \%$form);
-  $form->redirect($locale->text('Language saved!'));
-
-  $main::lxdebug->leave_sub();
-}
-
-sub delete_language {
-  $main::lxdebug->enter_sub();
-
-  my $form     = $main::form;
-  my %myconfig = %main::myconfig;
-  my $locale   = $main::locale;
-
-  $main::auth->assert('config');
-
-  AM->delete_language(\%myconfig, \%$form);
-  $form->redirect($locale->text('Language deleted!'));
-
-  $main::lxdebug->leave_sub();
-}
-
 sub _build_cfg_options {
   my $form     = $main::form;
   my %myconfig = %main::myconfig;
@@ -1235,14 +1050,22 @@ sub show_am_history {
     $restriction  .= qq| AND employee_id = (SELECT id FROM employee WHERE name ILIKE | . $dbh->quote('%' . $form->{mitarbeiter} . '%') . qq|)|;
   }
 
-  my $query = qq|SELECT trans_id AS id FROM history_erp | .
-    (  $form->{'searchid'} ? qq| WHERE snumbers = '|  . $searchNo{$form->{'what2search'}} . qq|_| . $form->{'searchid'} . qq|'|
-     :                       qq| WHERE snumbers ~ '^| . $searchNo{$form->{'what2search'}} . qq|'|);
+  my $snumbers_where = '';
+  my $snumbers_value;
+  if ($form->{'searchid'}) {
+    $snumbers_where = ' WHERE snumbers = ?';
+    $snumbers_value = $searchNo{$form->{'what2search'}} . '_' . $form->{'searchid'};
+  } else {
+    $snumbers_where = ' WHERE snumbers ~ ?';
+    $snumbers_value = '^' . $searchNo{$form->{'what2search'}};
+  }
+  my $query = qq|SELECT trans_id AS id FROM history_erp $snumbers_where|;
 
-  my @ids    = grep { $_ * 1 } selectall_array_query($form, $dbh, $query);
+  my @ids    = grep { $_ * 1 } selectall_array_query($form, $dbh, $query, $snumbers_value);
   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/;
 
@@ -1427,111 +1250,6 @@ sub delete_tax {
   $main::lxdebug->leave_sub();
 }
 
-sub add_price_factor {
-  $main::lxdebug->enter_sub();
-
-  my $form     = $main::form;
-  my $locale   = $main::locale;
-
-  $main::auth->assert('config');
-
-  $form->{title}      = $locale->text('Add Price Factor');
-  $form->{callback} ||= build_std_url('action=add_price_factor');
-
-  $form->header();
-  print $form->parse_html_template('am/edit_price_factor');
-
-  $main::lxdebug->leave_sub();
-}
-
-sub edit_price_factor {
-  $main::lxdebug->enter_sub();
-
-  my $form     = $main::form;
-  my %myconfig = %main::myconfig;
-  my $locale   = $main::locale;
-
-  $main::auth->assert('config');
-
-  $form->{title}      = $locale->text('Edit Price Factor');
-  $form->{callback} ||= build_std_url('action=add_price_factor');
-
-  AM->get_price_factor(\%myconfig, $form);
-
-  $form->{factor} = $form->format_amount(\%myconfig, $form->{factor} * 1);
-
-  $form->header();
-  print $form->parse_html_template('am/edit_price_factor');
-
-  $main::lxdebug->leave_sub();
-}
-
-sub list_price_factors {
-  $main::lxdebug->enter_sub();
-
-  my $form     = $main::form;
-  my %myconfig = %main::myconfig;
-  my $locale   = $main::locale;
-
-  $main::auth->assert('config');
-
-  AM->get_all_price_factors(\%myconfig, \%$form);
-
-  foreach my $current (@{ $form->{PRICE_FACTORS} }) {
-    $current->{factor} = $form->format_amount(\%myconfig, $current->{factor} * 1);
-  }
-
-  $form->{callback} = build_std_url('action=list_price_factors');
-  $form->{title}    = $locale->text('Price Factors');
-  $form->{url_base} = build_std_url('callback');
-
-  $form->header();
-  print $form->parse_html_template('am/list_price_factors');
-
-  $main::lxdebug->leave_sub();
-}
-
-sub save_price_factor {
-  $main::lxdebug->enter_sub();
-
-  my $form     = $main::form;
-  my %myconfig = %main::myconfig;
-  my $locale   = $main::locale;
-
-  $main::auth->assert('config');
-
-  $form->isblank("description", $locale->text('Description missing!'));
-  $form->isblank("factor", $locale->text('Factor missing!'));
-
-  $form->{factor} = $form->parse_amount(\%myconfig, $form->{factor});
-
-  AM->save_price_factor(\%myconfig, $form);
-
-  $form->{callback} .= '&MESSAGE=' . $form->escape($locale->text('Price factor saved!')) if ($form->{callback});
-
-  $form->redirect($locale->text('Price factor saved!'));
-
-  $main::lxdebug->leave_sub();
-}
-
-sub delete_price_factor {
-  $main::lxdebug->enter_sub();
-
-  my $form     = $main::form;
-  my %myconfig = %main::myconfig;
-  my $locale   = $main::locale;
-
-  $main::auth->assert('config');
-
-  AM->delete_price_factor(\%myconfig, \%$form);
-
-  $form->{callback} .= '&MESSAGE=' . $form->escape($locale->text('Price factor deleted!')) if ($form->{callback});
-
-  $form->redirect($locale->text('Price factor deleted!'));
-
-  $main::lxdebug->leave_sub();
-}
-
 sub add_warehouse {
   $main::lxdebug->enter_sub();
 
@@ -1628,7 +1346,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)) {