X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/65d2537d658b99b005a18c6663bc1293b41a1d83..a99fc9f6b84fbf0effae46eb41fe056c960a1602:/SL/IS.pm diff --git a/SL/IS.pm b/SL/IS.pm index bbb18951c..6d1e843cd 100644 --- a/SL/IS.pm +++ b/SL/IS.pm @@ -153,6 +153,7 @@ sub invoice_details { # so that they can be sorted in later my %prepared_template_arrays = IC->prepare_parts_for_printing(myconfig => $myconfig, form => $form); my @prepared_arrays = keys %prepared_template_arrays; + my @separate_totals = qw(non_separate_subtotal); my $ic_cvar_configs = CVar->get_configs(module => 'IC'); my $project_cvar_configs = CVar->get_configs(module => 'Projects'); @@ -336,6 +337,17 @@ sub invoice_details { push @{ $form->{TEMPLATE_ARRAYS}->{discount_nofmt} }, ($discount != 0) ? $discount * -1 : ''; push @{ $form->{TEMPLATE_ARRAYS}->{p_discount} }, $form->{"discount_$i"}; + if ( $prepared_template_arrays{separate}[$i - 1] ) { + my $pabbr = $prepared_template_arrays{separate}[$i - 1]; + if ( ! $form->{"separate_${pabbr}_subtotal"} ) { + push @separate_totals , "separate_${pabbr}_subtotal"; + $form->{"separate_${pabbr}_subtotal"} = 0; + } + $form->{"separate_${pabbr}_subtotal"} += $linetotal; + } else { + $form->{non_separate_subtotal} += $linetotal; + } + $form->{total} += $linetotal; $form->{nodiscount_total} += $nodiscount_linetotal; $form->{discount_total} += $discount; @@ -543,6 +555,7 @@ sub invoice_details { $form->{delivery_term}->description_long($form->{delivery_term}->translated_attribute('description_long', $form->{language_id})) if $form->{delivery_term} && $form->{language_id}; $form->{username} = $myconfig->{name}; + $form->{$_} = $form->format_amount($myconfig, $form->{$_}, 2) for @separate_totals; $main::lxdebug->leave_sub(); } @@ -2190,46 +2203,6 @@ sub get_customer { } $sth->finish; - # setup last accounts used for this customer - if (!$form->{id} && $form->{type} !~ /_(order|quotation)/) { - $query = - qq|SELECT c.id, c.accno, c.description, c.link, c.category - FROM chart c - JOIN acc_trans ac ON (ac.chart_id = c.id) - JOIN ar a ON (a.id = ac.trans_id) - WHERE a.customer_id = ? - AND NOT (c.link LIKE '%_tax%' OR c.link LIKE '%_paid%') - AND a.id IN (SELECT max(a2.id) FROM ar a2 WHERE a2.customer_id = ?)|; - $sth = prepare_execute_query($form, $dbh, $query, $cid, $cid); - - my $i = 0; - while ($ref = $sth->fetchrow_hashref('NAME_lc')) { - if ($ref->{category} eq 'I') { - $i++; - $form->{"AR_amount_$i"} = "$ref->{accno}--$ref->{description}"; - - if ($form->{initial_transdate}) { - my $tax_query = - qq|SELECT tk.tax_id, t.rate - FROM taxkeys tk - LEFT JOIN tax t ON tk.tax_id = t.id - WHERE (tk.chart_id = ?) AND (startdate <= date(?)) - ORDER BY tk.startdate DESC - LIMIT 1|; - my ($tax_id, $rate) = - selectrow_query($form, $dbh, $tax_query, $ref->{id}, - $form->{initial_transdate}); - $form->{"taxchart_$i"} = "${tax_id}--${rate}"; - } - } - if ($ref->{category} eq 'A') { - $form->{ARselected} = $form->{AR_1} = $ref->{accno}; - } - } - $sth->finish; - $form->{rowcount} = $i if ($i && !$form->{type}); - } - $main::lxdebug->leave_sub(); }