Term::ReadLine::Perl::Bind in Console nicht nutzen
[kivitendo-erp.git] / SL / DB / Part.pm
index a0f9c10..f5a0cd2 100644 (file)
@@ -146,17 +146,17 @@ sub get_taxkey {
   my $taxzone  = $params{ defined($params{taxzone}) ? 'taxzone' : 'taxzone_id' } * 1;
   my $tk_info  = $::request->cache('get_taxkey');
 
-  $tk_info->{$taxzone}              ||= { };
-  $tk_info->{$taxzone}->{$is_sales} ||= { };
+  $tk_info->{$self->id}                                      //= {};
+  $tk_info->{$self->id}->{$taxzone}                          //= { };
+  my $cache = $tk_info->{$self->id}->{$taxzone}->{$is_sales} //= { };
 
-  if (!exists $tk_info->{$taxzone}->{$is_sales}->{$date}) {
-    $tk_info->{$taxzone}->{$is_sales}->{$date} =
+  if (!exists $cache->{$date}) {
+    $cache->{$date} =
       $self->get_chart(type => $is_sales ? 'income' : 'expense', taxzone => $taxzone)
-      ->load
       ->get_active_taxkey($date);
   }
 
-  return $tk_info->{$taxzone}->{$is_sales}->{$date};
+  return $cache->{$date};
 }
 
 sub get_chart {
@@ -165,18 +165,19 @@ sub get_chart {
   my $type    = (any { $_ eq $params{type} } qw(income expense inventory)) ? $params{type} : croak("Invalid 'type' parameter '$params{type}'");
   my $taxzone = $params{ defined($params{taxzone}) ? 'taxzone' : 'taxzone_id' } * 1;
 
-  my $charts     = $::request->cache('get_chart_id/by_taxzones');
+  my $charts     = $::request->cache('get_chart_id/by_part_id_and_taxzone')->{$self->id} //= {};
   my $all_charts = $::request->cache('get_chart_id/by_id');
 
   $charts->{$taxzone} ||= { };
 
   if (!exists $charts->{$taxzone}->{$type}) {
-    my $bugru    = $self->buchungsgruppe;
+    require SL::DB::Buchungsgruppe;
+    my $bugru    = SL::DB::Buchungsgruppe->load_cached($self->buchungsgruppen_id);
     my $chart_id = ($type eq 'inventory') ? ($self->inventory_accno_id ? $bugru->inventory_accno_id : undef)
                  :                          $bugru->call_sub("${type}_accno_id_${taxzone}");
 
     if ($chart_id) {
-      my $chart                    = $all_charts->{$chart_id} // SL::DB::Chart->new(id => $chart_id)->load;
+      my $chart                    = $all_charts->{$chart_id} // SL::DB::Chart->load_cached($chart_id)->load;
       $all_charts->{$chart_id}     = $chart;
       $charts->{$taxzone}->{$type} = $chart;
     }