Finanzcontrollingbericht: Spalte Ā»VorgangsbezeichnungĀ« anzeigen
[kivitendo-erp.git] / SL / IC.pm
index 649ad2f..f6ceace 100644 (file)
--- a/SL/IC.pm
+++ b/SL/IC.pm
@@ -40,6 +40,7 @@ use YAML;
 
 use SL::CVar;
 use SL::DBUtils;
+use SL::HTML::Restrict;
 use SL::TransNumber;
 
 use strict;
@@ -227,6 +228,7 @@ sub save {
   my @values;
   # connect to database, turn off AutoCommit
   my $dbh = $form->get_standard_dbh;
+  my $restricter = SL::HTML::Restrict->create;
 
   # save the part
   # make up a unique handle and store in partnumber field
@@ -241,7 +243,7 @@ sub save {
   map { $form->{$_} = $form->parse_amount($myconfig, $form->{$_}) }
     qw(rop weight listprice sellprice gv lastcost);
 
-  my $makemodel = (($form->{make_1}) || ($form->{model_1})) ? 1 : 0;
+  my $makemodel = ($form->{make_1} || $form->{model_1} || ($form->{makemodel_rows} > 1)) ? 1 : 0;
 
   $form->{assembly} = ($form->{item} eq 'assembly') ? 1 : 0;
 
@@ -317,9 +319,9 @@ sub save {
 
   if ($form->{"item"} ne "assembly") {
     $subq_expense =
-      qq|(SELECT bg.expense_accno_id_0
-          FROM buchungsgruppen bg
-          WHERE bg.id = | . conv_i($form->{"buchungsgruppen_id"}, 'NULL') . qq|)|;
+      qq|(SELECT tc.expense_accno_id
+          FROM taxzone_charts tc
+          WHERE tc.buchungsgruppen_id = | . conv_i($form->{"buchungsgruppen_id"}, 'NULL') . qq| and tc.taxzone_id = 0)|;
   } else {
     $subq_expense = "NULL";
   }
@@ -346,7 +348,7 @@ sub save {
          buchungsgruppen_id = ?,
          payment_id = ?,
          inventory_accno_id = $subq_inventory,
-         income_accno_id = (SELECT bg.income_accno_id_0 FROM buchungsgruppen bg WHERE bg.id = ?),
+         income_accno_id = (SELECT tc.income_accno_id FROM taxzone_charts tc WHERE tc.taxzone_id = 0 and tc.buchungsgruppen_id = ?),
          expense_accno_id = $subq_expense,
          obsolete = ?,
          image = ?,
@@ -371,7 +373,7 @@ sub save {
              $form->{lastcost},
              $form->{weight},
              $form->{unit},
-             $form->{notes},
+             $restricter->process($form->{notes}),
              $form->{formel},
              $form->{rop},
              conv_i($form->{warehouse_id}),
@@ -405,7 +407,7 @@ sub save {
     $sth   = $dbh->prepare($query);
 
     foreach my $translation (@translations) {
-      do_statement($form, $sth, $query, conv_i($form->{id}), conv_i($translation->{language_id}), $translation->{translation}, $translation->{longdescription});
+      do_statement($form, $sth, $query, conv_i($form->{id}), conv_i($translation->{language_id}), $translation->{translation}, $restricter->process($translation->{longdescription}));
     }
 
     $sth->finish();
@@ -1539,17 +1541,21 @@ sub retrieve_accounts {
     SELECT
       p.id, p.inventory_accno_id AS is_part,
       bg.inventory_accno_id,
-      bg.income_accno_id_$form->{taxzone_id} AS income_accno_id,
-      bg.expense_accno_id_$form->{taxzone_id} AS expense_accno_id,
+      tc.income_accno_id AS income_accno_id,
+      tc.expense_accno_id AS expense_accno_id,
       c1.accno AS inventory_accno,
       c2.accno AS income_accno,
       c3.accno AS expense_accno
     FROM parts p
     LEFT JOIN buchungsgruppen bg ON p.buchungsgruppen_id = bg.id
+    LEFT JOIN taxzone_charts tc on bg.id = tc.buchungsgruppen_id
     LEFT JOIN chart c1 ON bg.inventory_accno_id = c1.id
-    LEFT JOIN chart c2 ON bg.income_accno_id_$form->{taxzone_id} = c2.id
-    LEFT JOIN chart c3 ON bg.expense_accno_id_$form->{taxzone_id} = c3.id
-    WHERE p.id IN ($in)
+    LEFT JOIN chart c2 ON tc.income_accno_id = c2.id
+    LEFT JOIN chart c3 ON tc.expense_accno_id = c3.id
+    WHERE
+    tc.taxzone_id = '$form->{taxzone_id}'
+    and
+    p.id IN ($in)
 SQL
 
   my $sth_tax = prepare_query($::form, $dbh, <<SQL);
@@ -1696,6 +1702,16 @@ sub prepare_parts_for_printing {
     }
   }
 
+  my $parts = SL::DB::Manager::Part->get_all(query => [ id => \@part_ids ]);
+  my %parts_by_id = map { $_->id => $_ } @$parts;
+
+  for my $i (1..$rowcount) {
+    my $id = $form->{"${prefix}${i}"};
+    next unless $id;
+
+    push @{ $form->{TEMPLATE_ARRAYS}{part_type} },  $parts_by_id{$id}->type;
+  }
+
   $main::lxdebug->leave_sub();
 }