X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fis.pl;h=933602fa158f2780b4be0c8d370967f6f4b10f24;hb=2dc09cf507b099b014a405001a6d67aa58cd124d;hp=65cc0609d4788d7683d6494f260f99f4f0e6cd11;hpb=b6dc5623d93c1be1c54248d4512e80f495af2899;p=kivitendo-erp.git diff --git a/bin/mozilla/is.pl b/bin/mozilla/is.pl index 65cc0609d..933602fa1 100644 --- a/bin/mozilla/is.pl +++ b/bin/mozilla/is.pl @@ -31,10 +31,11 @@ # #====================================================================== +use SL::FU; use SL::IS; use SL::PE; use Data::Dumper; -use List::Util qw(max); +use List::Util qw(max sum); require "bin/mozilla/io.pl"; require "bin/mozilla/invoice_io.pl"; @@ -48,6 +49,8 @@ require "bin/mozilla/drafts.pl"; sub add { $lxdebug->enter_sub(); + $auth->assert('invoice_edit'); + return $lxdebug->leave_sub() if (load_draft_maybe()); if ($form->{type} eq "credit_note") { @@ -62,9 +65,7 @@ sub add { } - $form->{callback} = - "$form->{script}?action=add&type=$form->{type}&login=$form->{login}&password=$form->{password}" - unless $form->{callback}; + $form->{callback} = "$form->{script}?action=add&type=$form->{type}" unless $form->{callback}; $form{jsscript} = "date"; @@ -82,6 +83,8 @@ sub add { sub edit { $lxdebug->enter_sub(); + $auth->assert('invoice_edit'); + # show history button $form->{javascript} = qq||; #/show hhistory button @@ -112,6 +115,8 @@ sub edit { sub invoice_links { $lxdebug->enter_sub(); + $auth->assert('invoice_edit'); + $form->{vc} = 'customer'; # create links @@ -231,6 +236,8 @@ sub invoice_links { sub prepare_invoice { $lxdebug->enter_sub(); + $auth->assert('invoice_edit'); + if ($form->{type} eq "credit_note") { $form->{type} = "credit_note"; $form->{formname} = "credit_note"; @@ -281,6 +288,8 @@ sub prepare_invoice { sub form_header { $lxdebug->enter_sub(); + $auth->assert('invoice_edit'); + $form->{employee_id} = $form->{old_employee_id} if $form->{old_employee_id}; $form->{salesman_id} = $form->{old_salesman_id} if $form->{old_salesman_id}; @@ -305,7 +314,7 @@ sub form_header { } } - my $set_duedate_url = "$form->{script}?login=$form->{login}&password=$form->{password}&action=set_duedate"; + my $set_duedate_url = "$form->{script}?action=set_duedate"; my $pjx = new CGI::Ajax( 'set_duedate' => $set_duedate_url ); push(@ { $form->{AJAX} }, $pjx); @@ -328,7 +337,7 @@ sub form_header { my @values = (undef); foreach my $item (@{ $form->{"ALL_CONTACTS"} }) { push(@values, $item->{"cp_id"}); - $labels{$item->{"cp_id"}} = $item->{"cp_name"} . ($item->{"cp_abteilung"} ? " ($item->{cp_abteilung})" : ""); + $labels{$item->{"cp_id"}} = join(',', $item->{"cp_name"}, $item->{"cp_givenname"}) . ($item->{"cp_abteilung"} ? " ($item->{cp_abteilung})" : ""); } my $contact; if (scalar @values > 1) { @@ -549,12 +558,12 @@ sub form_header { $button2 = qq| + . $locale->text('button') . qq|"> |; $button3 = qq| + . $locale->text('button') . qq|"> |; #write Trigger @@ -566,6 +575,11 @@ sub form_header { } $credittext = $locale->text('Credit Limit exceeded!!!'); + + my $follow_up_vc = $form->{customer}; + $follow_up_vc =~ s/--.*?//; + my $follow_up_trans_info = "$form->{invnumber} ($follow_up_vc)"; + $onload = ($form->{resubmit} && ($form->{format} eq "html")) ? qq|window.open('about:blank','Beleg'); document.invoice.target = 'Beleg';document.invoice.submit()| : ($form->{resubmit}) ? qq|document.invoice.submit()| : ($creditwarning) ? qq|alert('$credittext')| @@ -591,6 +605,7 @@ sub form_header { +
| ; @@ -599,13 +614,19 @@ sub form_header { creditlimit creditremaining tradediscount business closedto locked shipped storno storno_id max_dunning_level dunning_amount shiptoname shiptostreet shiptozipcode shiptocity shiptocountry shiptocontact shiptophone shiptofax - shiptoemail shiptodepartment_1 shiptodepartment_2 message email subject cc bcc taxaccounts), + shiptoemail shiptodepartment_1 shiptodepartment_2 message email subject cc bcc taxaccounts cursor_fokus + convert_from_do_ids convert_from_oe_ids), map { $_.'_rate', $_.'_description', $_.'_taxnumber' } split / /, $form->{taxaccounts} ); print qq|

$form->{saved_message}

| if $form->{saved_message}; print qq| + + + + +
$form->{title}
@@ -755,6 +776,8 @@ print qq| sub form_footer { $lxdebug->enter_sub(); + $auth->assert('invoice_edit'); + $form->{invtotal} = $form->{invsubtotal}; if (($rows = $form->numtextrows($form->{notes}, 26, 8)) < 2) { @@ -850,6 +873,20 @@ sub form_footer { $form->{invtotal} = $form->format_amount(\%myconfig, $form->{invtotal}, 2, 0); + my $follow_ups_block; + if ($form->{id}) { + my $follow_ups = FU->follow_ups('trans_id' => $form->{id}); + + if (@{ $follow_ups} ) { + my $num_due = sum map { $_->{due} * 1 } @{ $follow_ups }; + $follow_ups_block = qq| + + | . $locale->text("There are #1 unfinished follow-ups of which #2 are due.", scalar @{ $follow_ups }, $num_due) . qq| + +|; + } + } + print qq| @@ -868,6 +905,7 @@ sub form_footer { + $follow_ups_block @@ -1085,18 +1123,18 @@ if ($form->{type} eq "credit_note") { print qq| |; - if ($form->{id} && !($form->{type} eq "credit_note")) { - print qq| + if ($form->{id} && !($form->{type} eq "credit_note")) { + print qq| |; - } + } if ($form->{radier}) { print qq| |; - } + } if ($invdate > $closedto) { @@ -1106,6 +1144,11 @@ if ($form->{type} eq "credit_note") { |; } + print qq| + |; + } else { if ($invdate > $closedto) { print qq|hidden("-name" => "callback", "-value" => $form->{callback}) . $cgi->hidden('-name' => 'draft_id', '-default' => [$form->{draft_id}]) -. $cgi->hidden('-name' => 'draft_description', '-default' => [$form->{draft_description}]); -map({ print $cgi->hidden("-name" => $_ , "-value" => $form->{$_});} qw(login password)); -print qq| +. $cgi->hidden('-name' => 'draft_description', '-default' => [$form->{draft_description}]) +. qq|
@@ -1164,13 +1206,19 @@ print qq| sub mark_as_paid { $lxdebug->enter_sub(); + + $auth->assert('invoice_edit'); + &mark_as_paid_common(\%myconfig,"ar"); + $lxdebug->leave_sub(); } sub update { $lxdebug->enter_sub(); + $auth->assert('invoice_edit'); + my ($recursive_call) = shift; map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } qw(exchangerate creditlimit creditremaining) unless $recursive_call; @@ -1183,14 +1231,14 @@ sub update { $form->{taxincluded} ||= $taxincluded; - $form->{exchangerate} = $exchangerate if - $form->{forex} = $exchangerate = $form->check_exchangerate(\%myconfig, $form->{currency}, $form->{invdate}, 'buy'); + $form->{forex} = $form->check_exchangerate(\%myconfig, $form->{currency}, $form->{invdate}, 'buy'); + $form->{exchangerate} = $form->{forex} if $form->{forex}; for $i (1 .. $form->{paidaccounts}) { next unless $form->{"paid_$i"}; map { $form->{"${_}_$i"} = $form->parse_amount(\%myconfig, $form->{"${_}_$i"}) } qw(paid exchangerate); - $form->{"exchangerate_$i"} = $exchangerate if - $form->{"forex_$i"} = $exchangerate = $form->check_exchangerate(\%myconfig, $form->{currency}, $form->{"datepaid_$i"}, 'buy'); + $form->{"forex_$i"} = $form->check_exchangerate(\%myconfig, $form->{currency}, $form->{"datepaid_$i"}, 'buy'); + $form->{"exchangerate_$i"} = $form->{"forex_$i"} if $form->{"forex_$i"}; } $i = $form->{rowcount}; @@ -1299,6 +1347,8 @@ sub update { sub post_payment { $lxdebug->enter_sub(); + $auth->assert('invoice_edit'); + $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); for $i (1 .. $form->{paidaccounts}) { if ($form->{"paid_$i"}) { @@ -1307,7 +1357,7 @@ sub post_payment { $form->isblank("datepaid_$i", $locale->text('Payment date missing!')); $form->error($locale->text('Cannot post payment for a closed period!')) - if ($datepaid <= $closedto); + if ($form->date_closed($form->{"datepaid_$i"}, \%myconfig)); if ($form->{currency} ne $form->{defaultcurrency}) { $form->{"exchangerate_$i"} = $form->{exchangerate} @@ -1332,9 +1382,13 @@ sub post_payment { sub post { $lxdebug->enter_sub(); + $auth->assert('invoice_edit'); + $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); $form->isblank("invdate", $locale->text('Invoice Date missing!')); $form->isblank("customer", $locale->text('Customer missing!')); + $form->error($locale->text('Cannot post invoice for a closed period!')) + if ($form->date_closed($form->{"invdate"}, \%myconfig)); $form->{invnumber} =~ s/^\s*//g; $form->{invnumber} =~ s/\s*$//g; @@ -1366,7 +1420,7 @@ sub post { $form->isblank("datepaid_$i", $locale->text('Payment date missing!')); $form->error($locale->text('Cannot post payment for a closed period!')) - if ($datepaid <= $closedto); + if ($form->date_closed($form->{"datepaid_$i"}, \%myconfig)); if ($form->{currency} ne $form->{defaultcurrency}) { $form->{"exchangerate_$i"} = $form->{exchangerate} @@ -1416,6 +1470,8 @@ sub post { sub print_and_post { $lxdebug->enter_sub(); + $auth->assert('invoice_edit'); + $old_form = new Form; $print_post = 1; $form->{print_and_post} = 1; @@ -1429,6 +1485,8 @@ sub print_and_post { sub use_as_template { $lxdebug->enter_sub(); + $auth->assert('invoice_edit'); + map { delete $form->{$_} } qw(printed emailed queued invnumber invdate deliverydate id datepaid_1 source_1 memo_1 paid_1 exchangerate_1 AP_paid_1 storno); $form->{paidaccounts} = 1; $form->{rowcount}--; @@ -1441,6 +1499,8 @@ sub use_as_template { sub storno { $lxdebug->enter_sub(); + $auth->assert('invoice_edit'); + if ($form->{storno}) { $form->error($locale->text('Cannot storno storno invoice!')); } @@ -1449,9 +1509,7 @@ sub storno { $form->error($locale->text("Invoice has already been storno'd!")); } - map({ my $key = $_; delete($form->{$key}) - unless (grep({ $key eq $_ } qw(login password id stylesheet type))); } - keys(%{ $form })); + map({ my $key = $_; delete($form->{$key}) unless (grep({ $key eq $_ } qw(id login password stylesheet type))); } keys(%{ $form })); invoice_links(); prepare_invoice(); @@ -1474,6 +1532,8 @@ sub storno { sub preview { $lxdebug->enter_sub(); + $auth->assert('invoice_edit'); + $form->{preview} = 1; $old_form = new Form; for (keys %$form) { $old_form->{$_} = $form->{$_} } @@ -1485,6 +1545,9 @@ sub preview { sub delete { $lxdebug->enter_sub(); + + $auth->assert('invoice_edit'); + if ($form->{second_run}) { $form->{print_and_post} = 0; } @@ -1500,6 +1563,7 @@ sub delete { map { delete $form->{$_} } qw(action header); foreach $key (keys %$form) { + next if (($key eq 'login') || ($key eq 'password') || ('' ne ref $form->{$key})); $form->{$key} =~ s/\"/"/g; print qq|\n|; } @@ -1524,6 +1588,8 @@ sub delete { sub credit_note { $lxdebug->enter_sub(); + $auth->assert('invoice_edit'); + $form->{transdate} = $form->{invdate} = $form->current_date(\%myconfig); $form->{duedate} = $form->current_date(\%myconfig, $form->{invdate}, $form->{terms} * 1); @@ -1555,15 +1621,8 @@ sub credit_note { &invoice_links; $form->{currency} = $currency; - $form->{exchangerate} = ""; - $form->{forex} = ""; - $form->{exchangerate} = $exchangerate - if ( - $form->{forex} = ( - $exchangerate = - $form->check_exchangerate( - \%myconfig, $form->{currency}, $form->{invdate}, $buysell - ))); + $form->{forex} = $form->check_exchangerate( \%myconfig, $form->{currency}, $form->{invdate}, $buysell); + $form->{exchangerate} = $form->{forex} || ''; $form->{creditremaining} -= ($form->{oldinvtotal} - $form->{ordtotal}); @@ -1577,6 +1636,9 @@ sub credit_note { sub yes { $lxdebug->enter_sub(); + + $auth->assert('invoice_edit'); + if (IS->delete_invoice(\%myconfig, \%$form, $spool)) { # saving the history if(!exists $form->{addition}) { @@ -1595,6 +1657,8 @@ sub yes { sub e_mail { $lxdebug->enter_sub(); + $auth->assert('invoice_edit'); + if (!$form->{id}) { $print_post = 1; @@ -1602,10 +1666,7 @@ sub e_mail { post(); - my %saved_vars; - map({ $saved_vars{$_} = $form->{$_}; } qw(id invnumber)); - restore_form($saved_form); - map({ $form->{$_} = $saved_vars{$_}; } qw(id invnumber)); + restore_form($saved_form, 0, qw(id invnumber)); } edit_e_mail();