X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fis.pl;h=9bc225e884bb596231ed4b64ad7441710820be02;hb=98e3e57726bb6dbf55141ca6abc5cb74879d5c46;hp=3fc4b2caaa5f65783d18d595ec53fa25d48266fc;hpb=ac517355778ec8b682f7cdd1ef203be99e545a53;p=kivitendo-erp.git diff --git a/bin/mozilla/is.pl b/bin/mozilla/is.pl index 3fc4b2caa..9bc225e88 100644 --- a/bin/mozilla/is.pl +++ b/bin/mozilla/is.pl @@ -31,12 +31,14 @@ # #====================================================================== +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"; require "bin/mozilla/arap.pl"; require "bin/mozilla/drafts.pl"; @@ -47,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") { @@ -61,16 +65,10 @@ 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"; - if ($myconfig{acs} =~ "AR--Add Sales Invoice" || $myconfig{acs} =~ "AR--AR") - { - $form->error("Access Denied"); - } &invoice_links; &prepare_invoice; &display_form; @@ -81,14 +79,12 @@ sub add { sub edit { $lxdebug->enter_sub(); + $auth->assert('invoice_edit'); + # show history button $form->{javascript} = qq||; #/show hhistory button - if ($myconfig{acs} =~ "AR--Add Sales Invoice" || $myconfig{acs} =~ "AR--AR") - { - $form->error("Access Denied"); - } $edit = 1; if ($form->{print_and_post}) { $form->{action} = "print"; @@ -111,6 +107,8 @@ sub edit { sub invoice_links { $lxdebug->enter_sub(); + $auth->assert('invoice_edit'); + $form->{vc} = 'customer'; # create links @@ -230,6 +228,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"; @@ -240,8 +240,6 @@ sub prepare_invoice { if ($form->{id}) { - map { $form->{$_} =~ s/\"/"/g } - qw(invnumber ordnumber quonumber shippingpoint shipvia notes intnotes); # # get pricegroups for parts # IS->get_pricegroups_for_parts(\%myconfig, \%$form); @@ -268,8 +266,6 @@ sub prepare_invoice { $form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}, $dec_qty); - map { $form->{"${_}_$i"} =~ s/\"/"/g } - qw(partnumber description unit partnotes); $form->{rowcount} = $i; } @@ -280,6 +276,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}; @@ -304,7 +302,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); @@ -327,7 +325,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) { @@ -373,7 +371,7 @@ sub form_header { : (NTI($cgi->popup_menu('-name' => 'customer', '-default' => $form->{oldcustomer}, '-onChange' => 'document.getElementById(\'update_button\').click();', '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px')))) . qq| - + |; %labels = (); @@ -530,8 +528,8 @@ sub form_header { $jsscript = ""; if ($form->{type} eq "credit_note") { $button1 = qq| - - + |; #write Trigger @@ -541,19 +539,19 @@ sub form_header { "trigger1"); } else { $button1 = qq| - - + |; $button2 = qq| - + |; $button3 = qq| - + |; #write Trigger @@ -565,6 +563,11 @@ sub form_header { } $credittext = $locale->text('Credit Limit exceeded!!!'); + + my $follow_up_vc = $form->{customer}; + $follow_up_vc =~ s/--\d*\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')| @@ -590,6 +593,7 @@ sub form_header { +
| ; @@ -598,13 +602,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}
@@ -615,10 +625,10 @@ sub form_header { $customers - - - - + + + + $contact $shipto @@ -645,10 +655,13 @@ sub form_header { + qq| + - + @@ -681,10 +694,14 @@ print qq|
| . $locale->text('Shipping Point') . qq| | . $cgi->textfield("-name" => "shippingpoint", "-size" => 35, "-value" => $form->{shippingpoint}) . - qq|
| . $locale->text('Ship via') . qq| | . + $cgi->textfield("-name" => "shipvia", "-size" => 35, "-value" => $form->{shipvia}) . + qq|
| . $locale->text('Transaction description') . qq|
$employees $salesman |; + +#ergänzung in der maske um das feld Lieferscheinnummer (Delivery Order Number), meiner meinung nach sinnvoll ueber dem feld lieferscheindatum 12.02.2009 jb if ($form->{type} eq "credit_note") { print qq| | . $locale->text('Credit Note Number') . qq| - + |. + $cgi->textfield("-name" => "invnumber", "-size" => 11, "-value" => $form->{invnumber}) . + qq| | . $locale->text('Credit Note Date') . qq| @@ -693,7 +710,9 @@ print qq| } else { print qq| | . $locale->text('Invoice Number') . qq| - + |. + $cgi->textfield("-name" => "invnumber", "-size" => 11, "-value" => $form->{invnumber}) . + qq| | . $locale->text('Invoice Date') . qq| @@ -703,6 +722,12 @@ print qq| | . $locale->text('Due Date') . qq| $button2 + + | . $locale->text('Delivery Order Number') . qq| + |. + $cgi->textfield("-name" => "donumber", "-size" => 11, "-value" => $form->{donumber}) . + qq| + | . $locale->text('Delivery Date') . qq| $button3 @@ -710,7 +735,9 @@ print qq| } print qq| | . $locale->text('Order Number') . qq| - + |. + $cgi->textfield("-name" => "ordnumber", "-size" => 11, "-value" => $form->{ordnumber}) . + qq| | . $locale->text('Order Date') . qq| @@ -719,7 +746,9 @@ print qq| | . $locale->text('Quotation Number') . qq| - + |. + $cgi->textfield("-name" => "quonumber", "-size" => 11, "-value" => $form->{quonumber}) . + qq| | . $locale->text('Quotation Date') . qq| @@ -728,7 +757,9 @@ print qq| | . $locale->text('Customer Order Number') . qq| - + |. + $cgi->textfield("-name" => "cusordnumber", "-size" => 11, "-value" => $form->{cusordnumber}) . + qq| | . $locale->text('Project Number') . qq| @@ -754,6 +785,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) { @@ -849,6 +882,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| @@ -864,9 +911,10 @@ sub form_footer { $notes $intnotes - $payment + $follow_ups_block @@ -1065,7 +1113,7 @@ if ($form->{type} eq "credit_note") { $closedto = $form->datetonum($form->{closedto}, \%myconfig); if ($form->{id}) { - my $show_storno = !$form->{storno} && !IS->has_storno(\%myconfig, $form, "ar"); + my $show_storno = !$form->{storno} && !IS->has_storno(\%myconfig, $form, "ar") && (($totalpaid == 0) || ($totalpaid eq "")); 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) { @@ -1105,6 +1153,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}]) +. $cgi->hidden('-name' => 'customer_discount', '-value' => [$form->{customer_discount}]) +. qq|
@@ -1163,13 +1216,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; @@ -1182,14 +1241,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}; @@ -1209,7 +1268,7 @@ sub update { $rows = scalar @{ $form->{item_list} }; - $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{discount} * 100); + $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{customer_discount} * 100); if ($rows) { $form->{"qty_$i"} = ($form->{"qty_$i"} * 1) ? $form->{"qty_$i"} : 1; @@ -1298,6 +1357,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"}) { @@ -1306,7 +1367,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} @@ -1331,9 +1392,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; @@ -1365,7 +1430,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} @@ -1415,6 +1480,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; @@ -1428,6 +1495,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}--; @@ -1440,6 +1509,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!')); } @@ -1448,9 +1519,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(); @@ -1473,6 +1542,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->{$_} } @@ -1484,6 +1555,9 @@ sub preview { sub delete { $lxdebug->enter_sub(); + + $auth->assert('invoice_edit'); + if ($form->{second_run}) { $form->{print_and_post} = 0; } @@ -1499,6 +1573,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|; } @@ -1523,6 +1598,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); @@ -1554,15 +1631,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}); @@ -1576,6 +1646,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}) { @@ -1594,6 +1667,8 @@ sub yes { sub e_mail { $lxdebug->enter_sub(); + $auth->assert('invoice_edit'); + if (!$form->{id}) { $print_post = 1; @@ -1601,10 +1676,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();