X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/2a48b1f8cbe598a1aba1bfbb8cb4bdd4620e08c7..af131a46:/bin/mozilla/gl.pl diff --git a/bin/mozilla/gl.pl b/bin/mozilla/gl.pl index de007c5b6..c2a2f02d5 100644 --- a/bin/mozilla/gl.pl +++ b/bin/mozilla/gl.pl @@ -48,6 +48,7 @@ use SL::ReportGenerator; use SL::DBUtils qw(selectrow_query selectall_hashref_query); use SL::Webdav; use SL::Locale::String qw(t8); +use SL::Helper::GlAttachments qw(count_gl_attachments); require "bin/mozilla/common.pl"; require "bin/mozilla/reportgenerator.pl"; @@ -105,7 +106,7 @@ sub load_record_template { $::form->{title} = "Add"; $::form->{transdate} = $today->to_kivitendo; $::form->{duedate} = $today->to_kivitendo; - $::form->{rowcount} = @{ $template->items } + 1; + $::form->{rowcount} = @{ $template->items }; $::form->{paidaccounts} = 1; $::form->{$_} = $template->$_ for qw(department_id taxincluded ob_transaction cb_transaction reference description); $::form->{$_} = $dummy_form->{$_} for qw(closedto revtrans previous_id previous_gldate); @@ -139,7 +140,10 @@ sub load_record_template { flash('info', $::locale->text("The record template '#1' has been loaded.", $template->template_name)); - update(); + update( + keep_rows_without_amount => 1, + dont_add_new_row => 1, + ); } sub save_record_template { @@ -152,7 +156,7 @@ sub save_record_template { $js->dialog->close('#record_template_dialog'); my @items = grep { - $_->{chart_id} && (($_->{tax_id} // '') ne '') && (($_->{amount1} != 0) || ($_->{amount2} != 0)) + $_->{chart_id} && (($_->{tax_id} // '') ne '') } map { +{ chart_id => $::form->{"accno_id_${_}"}, amount1 => $::form->parse_amount(\%::myconfig, $::form->{"debit_${_}"}), @@ -408,7 +412,7 @@ sub generate_report { my @columns = qw( gldate transdate id reference description - notes source debit debit_accno + notes source doccnt debit debit_accno credit credit_accno debit_tax debit_tax_accno credit_tax credit_tax_accno projectnumbers balance employee ); @@ -448,6 +452,7 @@ sub generate_report { $form->{l_datesort} = 'Y'; $form->{l_debit_tax_accno} = 'Y'; $form->{l_balance} = $form->{accno} ? 'Y' : ''; + $form->{l_doccnt} = $form->{l_source} ? 'Y' : ''; my %column_defs = ( 'id' => { 'text' => $locale->text('ID'), }, @@ -455,6 +460,7 @@ sub generate_report { 'gldate' => { 'text' => $locale->text('Booking Date'), }, 'reference' => { 'text' => $locale->text('Reference'), }, 'source' => { 'text' => $locale->text('Source'), }, + 'doccnt' => { 'text' => $locale->text('Document Count'), }, 'description' => { 'text' => $locale->text('Description'), }, 'notes' => { 'text' => $locale->text('Notes'), }, 'debit' => { 'text' => $locale->text('Debit'), }, @@ -490,7 +496,8 @@ sub generate_report { $report->set_columns(%column_defs); $report->set_column_order(@columns); - $report->set_export_options('generate_report', @hidden_variables, qw(sort sortdir)); + $form->{l_attachments} = 'Y'; + $report->set_export_options('generate_report', @hidden_variables, qw(sort sortdir l_attachments)); $report->set_sort_indicator($form->{sort} eq 'accno' ? 'debit_accno' : $form->{sort}, $form->{sortdir}); @@ -539,6 +546,10 @@ sub generate_report { my $row = { }; map { $row->{$_} = { 'data' => '', 'align' => $column_alignment{$_} } } @columns; + if ( $form->{l_doccnt} ) { + $row->{doccnt}->{data} = SL::Helper::GlAttachments->count_gl_pdf_attachments($ref->{id},$ref->{type}); + } + my $sh = ""; if ($form->{balance} < 0) { $sh = " S"; @@ -628,6 +639,8 @@ sub show_draft { } sub update { + my %params = @_; + $main::lxdebug->enter_sub(); $main::auth->assert('gl_transactions'); @@ -653,69 +666,65 @@ sub update { qw(accno debit credit projectnumber fx_transaction source memo tax taxchart); for my $i (1 .. $form->{rowcount}) { + $form->{"${_}_$i"} = $form->parse_amount(\%myconfig, $form->{"${_}_$i"}) for qw(debit credit tax); - unless (($form->{"debit_$i"} eq "") && ($form->{"credit_$i"} eq "")) { - for (qw(debit credit tax)) { - $form->{"${_}_$i"} = - $form->parse_amount(\%myconfig, $form->{"${_}_$i"}); - } + next if !$form->{"debit_$i"} && !$form->{"credit_$i"} && !$params{keep_rows_without_amount}; - push @a, {}; - $debitcredit = ($form->{"debit_$i"} == 0) ? "0" : "1"; + push @a, {}; + $debitcredit = ($form->{"debit_$i"} == 0) ? "0" : "1"; + if ($debitcredit) { + $debitcount++; + } else { + $creditcount++; + } + + if (($debitcount >= 2) && ($creditcount == 2)) { + $form->{"credit_$i"} = 0; + $form->{"tax_$i"} = 0; + $creditcount--; + $form->{creditlock} = 1; + } + if (($creditcount >= 2) && ($debitcount == 2)) { + $form->{"debit_$i"} = 0; + $form->{"tax_$i"} = 0; + $debitcount--; + $form->{debitlock} = 1; + } + if (($creditcount == 1) && ($debitcount == 2)) { + $form->{creditlock} = 1; + } + if (($creditcount == 2) && ($debitcount == 1)) { + $form->{debitlock} = 1; + } + if ($debitcredit && $credittax) { + $form->{"taxchart_$i"} = "$notax_id--0.00"; + } + if (!$debitcredit && $debittax) { + $form->{"taxchart_$i"} = "$notax_id--0.00"; + } + $amount = + ($form->{"debit_$i"} == 0) + ? $form->{"credit_$i"} + : $form->{"debit_$i"}; + my $j = $#a; + if (($debitcredit && $credittax) || (!$debitcredit && $debittax)) { + $form->{"taxchart_$i"} = "$notax_id--0.00"; + $form->{"tax_$i"} = 0; + } + my ($taxkey, $rate) = split(/--/, $form->{"taxchart_$i"}); + my $iswithouttax = grep { $_->{id} == $taxkey } @{ $zerotaxes }; + if (!$iswithouttax) { if ($debitcredit) { - $debitcount++; + $debittax = 1; } else { - $creditcount++; - } - - if (($debitcount >= 2) && ($creditcount == 2)) { - $form->{"credit_$i"} = 0; - $form->{"tax_$i"} = 0; - $creditcount--; - $form->{creditlock} = 1; - } - if (($creditcount >= 2) && ($debitcount == 2)) { - $form->{"debit_$i"} = 0; - $form->{"tax_$i"} = 0; - $debitcount--; - $form->{debitlock} = 1; - } - if (($creditcount == 1) && ($debitcount == 2)) { - $form->{creditlock} = 1; - } - if (($creditcount == 2) && ($debitcount == 1)) { - $form->{debitlock} = 1; - } - if ($debitcredit && $credittax) { - $form->{"taxchart_$i"} = "$notax_id--0.00"; - } - if (!$debitcredit && $debittax) { - $form->{"taxchart_$i"} = "$notax_id--0.00"; - } - $amount = - ($form->{"debit_$i"} == 0) - ? $form->{"credit_$i"} - : $form->{"debit_$i"}; - my $j = $#a; - if (($debitcredit && $credittax) || (!$debitcredit && $debittax)) { - $form->{"taxchart_$i"} = "$notax_id--0.00"; - $form->{"tax_$i"} = 0; + $credittax = 1; } - my ($taxkey, $rate) = split(/--/, $form->{"taxchart_$i"}); - my $iswithouttax = grep { $_->{id} == $taxkey } @{ $zerotaxes }; - if (!$iswithouttax) { - if ($debitcredit) { - $debittax = 1; - } else { - $credittax = 1; - } - }; - my ($tmpnetamount,$tmpdiff); - ($tmpnetamount,$form->{"tax_$i"},$tmpdiff) = $form->calculate_tax($amount,$rate,$form->{taxincluded} *= 1,2); + }; + my ($tmpnetamount,$tmpdiff); + ($tmpnetamount,$form->{"tax_$i"},$tmpdiff) = $form->calculate_tax($amount,$rate,$form->{taxincluded} *= 1,2); - for (@flds) { $a[$j]->{$_} = $form->{"${_}_$i"} } - $count++; - } + for (@flds) { $a[$j]->{$_} = $form->{"${_}_$i"} } + $count++; } for my $i (1 .. $count) { @@ -727,9 +736,9 @@ sub update { for (@flds) { delete $form->{"${_}_$i"} } } - $form->{rowcount} = $count + 1; + $form->{rowcount} = $count + ($params{dont_add_new_row} ? 0 : 1); - &display_form; + display_form(); $main::lxdebug->leave_sub(); }