X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fir.pl;h=5b47194869a060c228a721d344d5a445d68534fd;hb=4923839ef41fc8c2fec0d27b300d1fa2ea655777;hp=386fb463ed260e4fc4cd2ffde4aec738eb39818d;hpb=79b00e8532108412d84fbcbafbfae3b6138649d2;p=kivitendo-erp.git diff --git a/bin/mozilla/ir.pl b/bin/mozilla/ir.pl index 386fb463e..5b4719486 100644 --- a/bin/mozilla/ir.pl +++ b/bin/mozilla/ir.pl @@ -34,8 +34,10 @@ use SL::IR; use SL::IS; use SL::PE; +use List::Util qw(max); require "bin/mozilla/io.pl"; +require "bin/mozilla/invoice_io.pl"; require "bin/mozilla/arap.pl"; require "bin/mozilla/common.pl"; require "bin/mozilla/drafts.pl"; @@ -47,6 +49,8 @@ require "bin/mozilla/drafts.pl"; sub add { $lxdebug->enter_sub(); + $auth->assert('vendor_invoice_edit'); + return $lxdebug->leave_sub() if (load_draft_maybe()); $form->{title} = $locale->text('Add Vendor Invoice'); @@ -60,7 +64,9 @@ sub add { sub edit { $lxdebug->enter_sub(); - + + $auth->assert('vendor_invoice_edit'); + # show history button $form->{javascript} = qq||; #/show hhistory button @@ -77,6 +83,8 @@ sub edit { sub invoice_links { $lxdebug->enter_sub(); + $auth->assert('vendor_invoice_edit'); + # create links $form->{webdav} = $webdav; $form->{jsscript} = 1; @@ -180,6 +188,8 @@ sub invoice_links { sub prepare_invoice { $lxdebug->enter_sub(); + $auth->assert('vendor_invoice_edit'); + if ($form->{id}) { map { $form->{$_} =~ s/\"/"/g } qw(invnumber ordnumber quonumber); @@ -213,70 +223,52 @@ sub prepare_invoice { sub form_header { $lxdebug->enter_sub(); + $auth->assert('vendor_invoice_edit'); + # set option selected foreach $item (qw(AP vendor currency department)) { $form->{"select$item"} =~ s/ selected//; - $form->{"select$item"} =~ - s/option>\Q$form->{$item}\E/option selected>$form->{$item}/; + $form->{"select$item"} =~ s/option>\Q$form->{$item}\E/option selected>$form->{$item}/; } - if ($form->{old_employee_id}) { - $form->{employee_id} = $form->{old_employee_id}; - } - if ($form->{old_salesman_id}) { - $form->{salesman_id} = $form->{old_salesman_id}; - } - - $form->{radier} = - ($form->current_date(\%myconfig) eq $form->{gldate}) ? 1 : 0; - - $form->{exchangerate} = - $form->format_amount(\%myconfig, $form->{exchangerate}); - - $form->{creditlimit} = - $form->format_amount(\%myconfig, $form->{creditlimit}, 0, "0"); - $form->{creditremaining} = - $form->format_amount(\%myconfig, $form->{creditremaining}, 0, "0"); + $form->{employee_id} = $form->{old_employee_id} if $form->{old_employee_id}; + $form->{salesman_id} = $form->{old_salesman_id} if $form->{old_salesman_id}; + $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); + $form->{radier} = ($form->current_date(\%myconfig) eq $form->{gldate}) ? 1 : 0; + $form->{exchangerate} = $form->format_amount(\%myconfig, $form->{exchangerate}); + $form->{creditlimit} = $form->format_amount(\%myconfig, $form->{creditlimit}, 0, "0"); + $form->{creditremaining} = $form->format_amount(\%myconfig, $form->{creditremaining}, 0, "0"); $exchangerate = ""; if ($form->{currency} ne $form->{defaultcurrency}) { if ($form->{forex}) { - $exchangerate .= qq| - | - . $locale->text('Exchangerate') . qq| - $form->{exchangerate}{exchangerate}> -|; + $exchangerate .= qq| | . $locale->text('Exchangerate') . qq| + $form->{exchangerate}{exchangerate}>\n|; } else { - $exchangerate .= qq| - | - . $locale->text('Exchangerate') . qq| - {exchangerate}> -|; + $exchangerate .= qq| | . $locale->text('Exchangerate') . qq| + {exchangerate}>\n|; } } - $exchangerate .= qq| -{forex}> -|; + $exchangerate .= qq| {forex}>\n|; my @old_project_ids = ($form->{"globalproject_id"}); - map({ push(@old_project_ids, $form->{"project_id_$_"}) - if ($form->{"project_id_$_"}); } (1..$form->{"rowcount"})); - - $form->get_lists("contacts" => "ALL_CONTACTS", - "projects" => { "key" => "ALL_PROJECTS", - "all" => 0, - "old_id" => \@old_project_ids }, - "taxzones" => "ALL_TAXZONES", - "employees" => "ALL_SALESMEN", - "currencies" => "ALL_CURRENCIES", - "vendors" => "ALL_VENDORS"); + map { push @old_project_ids, $form->{"project_id_$_"} if $form->{"project_id_$_"}; } 1..$form->{"rowcount"}; + + $form->get_lists("contacts" => "ALL_CONTACTS", + "projects" => { "key" => "ALL_PROJECTS", + "all" => 0, + "old_id" => \@old_project_ids }, + "taxzones" => "ALL_TAXZONES", + "employees" => "ALL_SALESMEN", + "currencies" => "ALL_CURRENCIES", + "vendors" => "ALL_VENDORS", + "price_factors" => "ALL_PRICE_FACTORS"); my %labels; 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"}} = $item->{"cp_name"} . ($item->{"cp_abteilung"} ? " ($item->{cp_abteilung})" : ""); } my $contact; @@ -284,10 +276,8 @@ sub form_header { $contact = qq| | . $locale->text('Contact Person') . qq| - | . - NTI($cgi->popup_menu('-name' => 'cp_id', '-values' => \@values, '-style' => 'width: 250px', - '-labels' => \%labels, '-default' => $form->{"cp_id"})) - . qq| + | . NTI($cgi->popup_menu('-name' => 'cp_id', '-values' => \@values, '-style' => 'width: 250px', + '-labels' => \%labels, '-default' => $form->{"cp_id"})) . qq| |; } @@ -298,10 +288,8 @@ sub form_header { push(@values, $item->{"id"}); $labels{$item->{"id"}} = $item->{"projectnumber"}; } - my $globalprojectnumber = - NTI($cgi->popup_menu('-name' => 'globalproject_id', '-values' => \@values, - '-labels' => \%labels, - '-default' => $form->{"globalproject_id"})); + my $globalprojectnumber = NTI($cgi->popup_menu('-name' => 'globalproject_id', '-values' => \@values, '-labels' => \%labels, + '-default' => $form->{"globalproject_id"})); %labels = (); @values = (); @@ -317,9 +305,8 @@ sub form_header { $currencies = qq| | . $locale->text('Currency') . qq| - | . - NTI($cgi->popup_menu('-name' => 'currency', '-default' => $form->{"currency"}, - '-values' => \@values, '-labels' => \%labels)) . qq| + | . NTI($cgi->popup_menu('-name' => 'currency', '-default' => $form->{"currency"}, + '-values' => \@values, '-labels' => \%labels)) . qq| |; } @@ -332,13 +319,12 @@ sub form_header { $labels{$item->{"id"}} = $item->{"name"}; } my $employees = qq| - + | . $locale->text('Employee') . qq| - | . - NTI($cgi->popup_menu('-name' => 'employee_id', '-default' => $form->{"employee_id"}, - '-values' => \@values, '-labels' => \%labels)) . qq| + | . NTI($cgi->popup_menu('-name' => 'employee_id', '-default' => $form->{"employee_id"}, + '-values' => \@values, '-labels' => \%labels)) . qq| - |; + |; %labels = (); @values = (); @@ -356,8 +342,8 @@ sub form_header { (($myconfig{vclimit} <= scalar(@values)) ? qq|| : (NTI($cgi->popup_menu('-name' => 'vendor', '-default' => $form->{oldvendor}, - '-onChange' => 'document.getElementById(\'update_button\').click();', - '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px')))) . qq| + '-onChange' => 'document.getElementById(\'update_button\').click();', + '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px')))) . qq| |; @@ -372,12 +358,10 @@ sub form_header { $taxzone = qq| | . $locale->text('Steuersatz') . qq| - | . - NTI($cgi->popup_menu('-name' => 'taxzone_id', '-default' => $form->{"taxzone_id"}, - '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px')) . qq| + | . NTI($cgi->popup_menu('-name' => 'taxzone_id', '-default' => $form->{"taxzone_id"}, + '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px')) . qq| |; - } else { $taxzone = qq| @@ -390,13 +374,12 @@ sub form_header { } $department = qq| - + | . $locale->text('Department') . qq| - -| if $form->{selectdepartment}; + \n| if $form->{selectdepartment}; $n = ($form->{creditremaining} =~ /-/) ? "0" : "1"; @@ -406,31 +389,25 @@ sub form_header { $button1 = qq| - text('button') . qq|> - |; + text('button') . qq|>\n|; $button2 = qq| - text('button') . qq|> - |; + text('button') . qq|>\n|; #write Trigger $jsscript = - Form->write_trigger(\%myconfig, "2", "invdate", "BL", "trigger1", + Form->write_trigger(\%myconfig, "2", + "invdate", "BL", "trigger1", "duedate", "BL", "trigger2"); - $form->{"javascript"} .= qq||; - $form->{"javascript"} .= qq||; - $form->{javascript} .= qq||; + $form->{javascript} .= qq||; + $form->{javascript} .= qq||; + $form->{javascript} .= qq||; - $jsscript .= - $form->write_trigger(\%myconfig, 2, - "orddate", "BL", "trigger_orddate", - "quodate", "BL", "trigger_quodate"); + $jsscript .= $form->write_trigger(\%myconfig, 2, "orddate", "BL", "trigger_orddate", "quodate", "BL", "trigger_quodate"); $form->header; - $onload = qq|focus()|; + $onload = qq|focus()|; $onload .= qq|;setupDateFormat('|. $myconfig{dateformat} .qq|', '|. $locale->text("Falsches Datumsformat!") .qq|')|; $onload .= qq|;setupPoints('|. $myconfig{numberformat} .qq|', '|. $locale->text("wrongformat") .qq|')|; print qq| @@ -439,9 +416,10 @@ sub form_header {
{script}> |; - $form->hide_form(qw(id title vc type level creditlimit creditremaining - closedto locked shippted storno storno_id - max_dunning_level dunning_amount)); + $form->hide_form(qw(id title vc type level creditlimit creditremaining closedto locked shippted storno storno_id + max_dunning_level dunning_amount vendor_id oldvendor selectvendor taxaccounts + fxgain_accno fxloss_accno taxpart taxservice), + map { $_.'_rate', $_.'_description' } split / /, $form->{taxaccounts} ); print qq|

$form->{saved_message}

| if $form->{saved_message}; @@ -454,9 +432,6 @@ sub form_header { $vendors - - - $contact @@ -518,14 +493,7 @@ sub form_header { $jsscript -{fxgain_accno}> -{fxloss_accno}> - - - - - |; foreach $item (split / /, $form->{taxaccounts}) { @@ -541,6 +509,8 @@ $jsscript sub form_footer { $lxdebug->enter_sub(); + $auth->assert('vendor_invoice_edit'); + $form->{invtotal} = $form->{invsubtotal}; if (($rows = $form->numtextrows($form->{notes}, 25, 8)) < 2) { @@ -684,11 +654,11 @@ sub form_footer { |; - foreach $file (keys %{ $form->{WEBDAV} }) { + foreach $file (@{ $form->{WEBDAV} }) { $webdav_list .= qq| - - + + |; } @@ -853,7 +823,7 @@ sub form_footer { } print $form->write_trigger(\%myconfig, scalar(@triggers) / 3, @triggers); - $form->hide_form(qw(rowcount callback draft_id draft_description login password)); + $form->hide_form(qw(rowcount callback draft_id draft_description)); # button for saving history if($form->{id} ne "") { @@ -865,7 +835,12 @@ sub form_footer { . qq|">|; } # /button for saving history - + # mark_as_paid button + if($form->{id} ne "") { + print qq| |; + } + # /mark_as_paid button print qq| @@ -875,41 +850,37 @@ print qq| $lxdebug->leave_sub(); } +sub mark_as_paid { + $lxdebug->enter_sub(); + + $auth->assert('vendor_invoice_edit'); + + &mark_as_paid_common(\%myconfig,"ap"); + + $lxdebug->leave_sub(); +} + sub update { $lxdebug->enter_sub(); - map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } - qw(exchangerate creditlimit creditremaining); + $auth->assert('vendor_invoice_edit'); + + map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } qw(exchangerate creditlimit creditremaining); &check_name(vendor); - $form->{exchangerate} = $exchangerate - if ( - $form->{forex} = ( - $exchangerate = - $form->check_exchangerate( - \%myconfig, $form->{currency}, $form->{invdate}, 'sell' - ))); + $form->{exchangerate} = $exchangerate if + $form->{forex} = $exchangerate = $form->check_exchangerate(\%myconfig, $form->{currency}, $form->{invdate}, 'sell'); for $i (1 .. $form->{paidaccounts}) { - if ($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"}, 'sell' - ))); - } + 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"}, 'sell'); } $i = $form->{rowcount}; - $exchangerate = ($form->{exchangerate} * 1) ? $form->{exchangerate} * 1 : 1; + $exchangerate = ($form->{exchangerate} * 1) || 1; if ( ($form->{"partnumber_$i"} eq "") && ($form->{"description_$i"} eq "") @@ -936,35 +907,25 @@ sub update { # override sellprice if there is one entered $sellprice = $form->parse_amount(\%myconfig, $form->{"sellprice_$i"}); - map { $form->{item_list}[$i]{$_} =~ s/\"/"/g } - qw(partnumber description unit); - - map { $form->{"${_}_$i"} = $form->{item_list}[0]{$_} } - keys %{ $form->{item_list}[0] }; + map { $form->{item_list}[$i]{$_} =~ s/\"/"/g } qw(partnumber description unit); + map { $form->{"${_}_$i"} = $form->{item_list}[0]{$_} } keys %{ $form->{item_list}[0] }; - $s = ($sellprice) ? $sellprice : $form->{"sellprice_$i"}; + $form->{"marge_price_factor_$i"} = $form->{item_list}->[0]->{price_factor}; - ($dec) = ($s =~ /\.(\d+)/); - $dec = length $dec; - $decimalplaces = ($dec > 2) ? $dec : 2; + ($sellprice || $form->{"sellprice_$i"}) =~ /\.(\d+)/; + $decimalplaces = max 2, length $1; if ($sellprice) { $form->{"sellprice_$i"} = $sellprice; } else { - # if there is an exchange rate adjust sellprice $form->{"sellprice_$i"} /= $exchangerate; } - $amount = - $form->{"sellprice_$i"} * $form->{"qty_$i"} * - (1 - $form->{"discount_$i"} / 100); + $amount = $form->{"sellprice_$i"} * $form->{"qty_$i"} * (1 - $form->{"discount_$i"} / 100); $form->{creditremaining} -= $amount; - $form->{"sellprice_$i"} = - $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, - $decimalplaces); - $form->{"qty_$i"} = - $form->format_amount(\%myconfig, $form->{"qty_$i"}, $dec_qty); + $form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces); + $form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}, $dec_qty); } &display_form; @@ -979,14 +940,11 @@ sub update { && ($form->{"description_$i"} eq "")) { $form->{rowcount}--; $form->{"discount_$i"} = ""; - &display_form; - } else { + display_form(); + } else { $form->{"id_$i"} = 0; - $form->{"unit_$i"} = $locale->text('ea'); - - &new_item; - + new_item(); } } } @@ -996,6 +954,8 @@ sub update { sub storno { $lxdebug->enter_sub(); + $auth->assert('vendor_invoice_edit'); + if ($form->{storno}) { $form->error($locale->text('Cannot storno storno invoice!')); } @@ -1035,6 +995,8 @@ sub storno { sub use_as_template { $lxdebug->enter_sub(); + $auth->assert('vendor_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}--; @@ -1046,6 +1008,10 @@ sub use_as_template { sub post_payment { $lxdebug->enter_sub(); + + $auth->assert('vendor_invoice_edit'); + + $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); for $i (1 .. $form->{paidaccounts}) { if ($form->{"paid_$i"}) { $datepaid = $form->datetonum($form->{"datepaid_$i"}, \%myconfig); @@ -1087,6 +1053,10 @@ sub post_payment { sub post { $lxdebug->enter_sub(); + $auth->assert('vendor_invoice_edit'); + + $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); + $form->isblank("invdate", $locale->text('Invoice Date missing!')); $form->isblank("vendor", $locale->text('Vendor missing!')); @@ -1130,6 +1100,7 @@ sub post { ($form->{AP}) = split /--/, $form->{AP}; ($form->{AP_paid}) = split /--/, $form->{AP_paid}; + $form->{storno} = 0; $form->{id} = 0 if $form->{postasnew}; @@ -1157,6 +1128,8 @@ sub post { sub delete { $lxdebug->enter_sub(); + $auth->assert('vendor_invoice_edit'); + $form->header; print qq| @@ -1168,6 +1141,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|; } @@ -1189,6 +1163,9 @@ sub delete { sub yes { $lxdebug->enter_sub(); + + $auth->assert('vendor_invoice_edit'); + if (IR->delete_invoice(\%myconfig, \%$form)) { # saving the history if(!exists $form->{addition}) {
| . $locale->text('Credit Limit') . qq|Dateiname Webdavlink
$file$form->{WEBDAV}{$file}$file->{name}$file->{type}