X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Finvoice_io.pl;h=7203f928e9c6abd981f51da488343a0b75bd9c54;hb=b2945bf61775161f9ce9be9bdbd106ad44247a14;hp=12864290f836f5710862143e40b5e75510126f79;hpb=91ab1ef646193de9359076a876a33a74d7691145;p=kivitendo-erp.git diff --git a/bin/mozilla/invoice_io.pl b/bin/mozilla/invoice_io.pl index 12864290f..7203f928e 100644 --- a/bin/mozilla/invoice_io.pl +++ b/bin/mozilla/invoice_io.pl @@ -43,12 +43,14 @@ use SL::IC; require "bin/mozilla/common.pl"; +use strict; + # any custom scripts for this one if (-f "bin/mozilla/custom_invoice_io.pl") { eval { require "bin/mozilla/custom_ivvoice_io.pl"; }; } -if (-f "bin/mozilla/$form->{login}_invoice_io.pl") { - eval { require "bin/mozilla/$form->{login}_invoice_io.pl"; }; +if (-f "bin/mozilla/$main::form->{login}_invoice_io.pl") { + eval { require "bin/mozilla/$main::form->{login}_invoice_io.pl"; }; } 1; @@ -86,485 +88,28 @@ use SL::IS; use SL::PE; use SL::AM; use Data::Dumper; -######################################## -# Eintrag fuer Version 2.2.0 geaendert # -# neue Optik im Rechnungsformular # -######################################## -#sub display_row { -# $lxdebug->enter_sub(); -# my $numrows = shift; -# -# my $is_sales = -# (substr($form->{type}, 0, 6) eq "sales_") -# || (($form->{type} eq "invoice") && ($form->{script} eq "is.pl")) -# || ($form->{type} eq 'credit_note'); -# -# if ($lizenzen && $form->{vc} eq "customer") { -# if ($form->{type} =~ /sales_order/) { -# @column_index = (runningnumber, partnumber, description, ship, qty); -# } elsif ($form->{type} =~ /sales_quotation/) { -# @column_index = (runningnumber, partnumber, description, qty); -# } else { -# @column_index = (runningnumber, partnumber, description, qty); -# } -# } else { -# if ( ($form->{type} =~ /purchase_order/) -# || ($form->{type} =~ /sales_order/)) { -# @column_index = (runningnumber, partnumber, description, ship, qty); -# } else { -# @column_index = (runningnumber, partnumber, description, qty); -# } -# } -############### ENDE Neueintrag ################## -# -# my $dimension_units = AM->retrieve_units(\%myconfig, $form, "dimension"); -# my $service_units = AM->retrieve_units(\%myconfig, $form, "service"); -# my $all_units = AM->retrieve_units(\%myconfig, $form); -# -# my %price_factors = map { $_->{id} => $_->{factor} } @{ $form->{ALL_PRICE_FACTORS} }; -# -# push @column_index, qw(unit); -# -# #for pricegroups column -# if ( $form->{type} =~ (/sales_quotation/) -# or (($form->{level} =~ /Sales/) and ($form->{type} =~ /invoice/)) -# or (($form->{level} eq undef) and ($form->{type} =~ /invoice/)) -# or ($form->{type} =~ /sales_order/)) { -# push @column_index, qw(sellprice_pg); -# } -# -# push @column_index, qw(sellprice); -# -# if ($form->{vc} eq 'customer') { -# push @column_index, qw(discount); -# } -# -# push @column_index, "linetotal"; -# -# my $colspan = $#column_index + 1; -# -# $form->{invsubtotal} = 0; -# map { $form->{"${_}_base"} = 0 } (split(/ /, $form->{taxaccounts})); -# -######################################### -# # Eintrag fuer Version 2.2.0 geaendert # -# # neue Optik im Rechnungsformular # -######################################### -# $column_data{runningnumber} = qq|| . $locale->text('No.') . qq||; -# $column_data{partnumber} = qq|| . $locale->text('Number') . qq||; -# $column_data{description} = qq|| . $locale->text('Part Description') . qq||; -# if ($form->{"type"} eq "purchase_order") { -# $column_data{ship} = qq|| . $locale->text('Ship rcvd') . qq||; -# } else { -# $column_data{ship} = qq|| . $locale->text('Ship') . qq||; -# } -# $column_data{qty} = qq|| . $locale->text('Qty') . qq||; -# $column_data{unit} = qq|| . $locale->text('Unit') . qq||; -# $column_data{license} = qq|| . $locale->text('License') . qq||; -# $column_data{serialnr} = qq|| . $locale->text('Serial No.') . qq||; -# $column_data{projectnr} = qq|| . $locale->text('Project') . qq||; -# $column_data{sellprice} = qq|| . $locale->text('Price') . qq||; -# $column_data{sellprice_pg} = qq|| . $locale->text('Pricegroup') . qq||; -# $column_data{discount} = qq|| . $locale->text('Discount') . qq||; -# $column_data{linetotal} = qq|| . $locale->text('Extended') . qq||; -# $column_data{bin} = qq|| . $locale->text('Bin') . qq||; -############### ENDE Neueintrag ################## -# -# $myconfig{"show_form_details"} = 1 -# unless (defined($myconfig{"show_form_details"})); -# $form->{"show_details"} = $myconfig{"show_form_details"} -# unless (defined($form->{"show_details"})); -# $form->{"show_details"} = $form->{"show_details"} ? 1 : 0; -# my $show_details_new = 1 - $form->{"show_details"}; -# my $show_details_checked = $form->{"show_details"} ? "checked" : ""; -# -# print qq| -# -# | . $cgi->hidden("-name" => "show_details", "-value" => $form->{show_details}) . qq| -# -#
-# -# |; -# -# map { print "\n$column_data{$_}" } @column_index; -# -# print qq| -# -#|; -# -# $runningnumber = $locale->text('No.'); -# $deliverydate = $locale->text('Delivery Date'); -# $serialnumber = $locale->text('Serial No.'); -# $projectnumber = $locale->text('Project'); -# $partsgroup = $locale->text('Group'); -# $reqdate = $locale->text('Reqdate'); -# -# $delvar = 'deliverydate'; -# -# if ($form->{type} =~ /_order$/ || $form->{type} =~ /_quotation$/) { -# $deliverydate = $locale->text('Required by'); -# $delvar = 'reqdate'; -# } -# -# $form->{marge_total} = 0; -# $form->{sellprice_total} = 0; -# $form->{lastcost_total} = 0; -# my %projectnumber_labels = (); -# my @projectnumber_values = (""); -# foreach my $item (@{ $form->{"ALL_PROJECTS"} }) { -# push(@projectnumber_values, $item->{"id"}); -# $projectnumber_labels{$item->{"id"}} = $item->{"projectnumber"}; -# } -# -# for $i (1 .. $numrows) { -# -# # undo formatting -# map { -# $form->{"${_}_$i"} = -# $form->parse_amount(\%myconfig, $form->{"${_}_$i"}) -# } qw(qty ship discount sellprice price_new price_old) unless ($form->{simple_save}); -# -# if (!$form->{"unit_old_$i"}) { -# # Neue Ware aus der Datenbank. In diesem Fall ist unit_$i die -# # Einheit, wie sie in den Stammdaten hinterlegt wurde. -# # Es sollte also angenommen werden, dass diese ausgewaehlt war. -# $form->{"unit_old_$i"} = $form->{"unit_$i"}; -# } -# -# # Die zuletzt ausgewaehlte mit der aktuell ausgewaehlten Einheit -# # vergleichen und bei Unterschied den Preis entsprechend umrechnen. -# $form->{"selected_unit_$i"} = $form->{"unit_$i"} unless ($form->{"selected_unit_$i"}); -# -# my $check_units = $form->{"inventory_accno_$i"} ? $dimension_units : $service_units; -# if (!$check_units->{$form->{"selected_unit_$i"}} || -# ($check_units->{$form->{"selected_unit_$i"}}->{"base_unit"} ne -# $all_units->{$form->{"unit_old_$i"}}->{"base_unit"})) { -# # Die ausgewaehlte Einheit ist fuer diesen Artikel nicht gueltig -# # (z.B. Dimensionseinheit war ausgewaehlt, es handelt sich aber -# # um eine Dienstleistung). Dann keinerlei Umrechnung vornehmen. -# $form->{"unit_old_$i"} = $form->{"selected_unit_$i"} = $form->{"unit_$i"}; -# } -# if ((!$form->{"prices_$i"}) || ($form->{"new_pricegroup_$i"} == $form->{"old_pricegroup_$i"})) { -# if ($form->{"unit_old_$i"} ne $form->{"selected_unit_$i"}) { -# my $basefactor = 1; -# if (defined($all_units->{$form->{"unit_old_$i"}}->{"factor"}) && -# $all_units->{$form->{"unit_old_$i"}}->{"factor"}) { -# $basefactor = $all_units->{$form->{"selected_unit_$i"}}->{"factor"} / -# $all_units->{$form->{"unit_old_$i"}}->{"factor"}; -# } -# $form->{"sellprice_$i"} *= $basefactor; -# $form->{"unit_old_$i"} = $form->{"selected_unit_$i"}; -# } -# } -# -# ($dec) = ($form->{"sellprice_$i"} =~ /\.(\d+)/); -# $decimalplaces = max length($dec), 2; -# -# $price_factor = $price_factors{$form->{"price_factor_id_$i"}} || 1; -# $discount = (100 - $form->{"discount_$i"} * 1) / 100; -# -# $linetotal = $form->round_amount($form->{"sellprice_$i"} * $form->{"qty_$i"} * $discount / $price_factor, $decimalplaces); -# -# my $real_sellprice = $form->{"sellprice_$i"} * $discount / $price_factor; -# -# # marge calculations -# my ($marge_font_start, $marge_font_end); -# -# $form->{"lastcost_$i"} *= 1; -# -# $marge_price_factor = $form->{"marge_price_factor_$i"} * 1 || 1; -# -# if ($real_sellprice && ($form->{"qty_$i"} * 1)) { -# $form->{"marge_percent_$i"} = ($real_sellprice - $form->{"lastcost_$i"} / $marge_price_factor) * 100 / $real_sellprice; -# $myconfig{"marge_percent_warn"} = 15 unless (defined($myconfig{"marge_percent_warn"})); -# -# if ($form->{"id_$i"} && -# ($form->{"marge_percent_$i"} < (1 * $myconfig{"marge_percent_warn"}))) { -# $marge_font_start = ""; -# $marge_font_end = ""; -# } -# -# } else { -# $form->{"marge_percent_$i"} = 0; -# } -# -# my $marge_adjust_credit_note = $form->{type} eq 'credit_note' ? -1 : 1; -# $form->{"marge_total_$i"} = ($real_sellprice - $form->{"lastcost_$i"} / $marge_price_factor) * $form->{"qty_$i"} * $marge_adjust_credit_note; -# $form->{"marge_total"} += $form->{"marge_total_$i"}; -# $form->{"lastcost_total"} += $form->{"lastcost_$i"} * $form->{"qty_$i"} / $marge_price_factor; -# $form->{"sellprice_total"} += $real_sellprice * $form->{"qty_$i"}; -# -# map { $form->{"${_}_$i"} = $form->format_amount(\%myconfig, $form->{"${_}_$i"}, 2) } qw(marge_total marge_percent); -# -# # convert " to " -# map { $form->{"${_}_$i"} =~ s/\"/"/g } -# qw(partnumber description unit unit_old); -# -######################################### -# # Eintrag fuer Version 2.2.0 geaendert # -# # neue Optik im Rechnungsformular # -######################################### -# $column_data{runningnumber} = -# qq||; # HuT -############### ENDE Neueintrag ################## -# -# $column_data{partnumber} = -# qq||; -# -# if (($rows = $form->numtextrows($form->{"description_$i"}, 30, 6)) > 1) { -# $column_data{description} = -# qq||; -# } else { -# $column_data{description} = -# qq||; -# } -# -# (my $qty_dec) = ($form->{"qty_$i"} =~ /\.(\d+)/); -# $qty_dec = length $qty_dec; -# -# $column_data{qty} = -# qq||; -# $column_data{ship} = -# qq||; -# -# my $is_part = $form->{"inventory_accno_$i"}; -# my $is_assembly = $form->{"assembly_$i"}; -# my $is_assigned = $form->{"id_$i"}; -# my $this_unit = $form->{"unit_$i"}; -# if ($form->{"selected_unit_$i"} && $this_unit && -# $all_units->{$form->{"selected_unit_$i"}} && $all_units->{$this_unit} && -# ($all_units->{$form->{"selected_unit_$i"}}->{"base_unit"} eq $all_units->{$this_unit}->{"base_unit"})) { -# $this_unit = $form->{"selected_unit_$i"}; -# } elsif (!$is_assigned || -# ($is_part && !$this_unit && ($all_units->{$this_unit} && ($all_units->{$this_unit}->{"base_unit"} eq $all_units->{"kg"}->{"base_unit"})))) { -# $this_unit = "kg"; -# } -# -# my $price_factor_select; -# if (0 < scalar @{ $form->{ALL_PRICE_FACTORS} }) { -# my @values = ('', map { $_->{id} } @{ $form->{ALL_PRICE_FACTORS} }); -# my %labels = map { $_->{id} => $_->{description} } @{ $form->{ALL_PRICE_FACTORS} }; -# -# $price_factor_select = -# NTI($cgi->popup_menu('-name' => "price_factor_id_$i", -# '-default' => $form->{"price_factor_id_$i"}, -# '-values' => \@values, -# '-labels' => \%labels, -# '-style' => 'width:90px')) -# . ' '; -# } -# -# $column_data{"unit"} = ""; -# -# # build in drop down list for pricesgroups -# if ($form->{"prices_$i"}) { -# if ($form->{"new_pricegroup_$i"} != $form->{"old_pricegroup_$i"}) { -# $price_tmp = $form->format_amount(\%myconfig, $form->{"price_new_$i"}, $decimalplaces); -# } else { -# $price_tmp = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces); -# } -# -# $column_data{sellprice_pg} = -# qq||; -# $column_data{sellprice} = -# qq||; -# } else { -# -# # for last row and report -# # set pricegroup drop down list from report menu -# if ($form->{"sellprice_$i"} != 0) { -# $prices = -# qq|\n|; -# -# $form->{"pricegroup_old_$i"} = $form->{"pricegroup_id_$i"}; -# -# $column_data{sellprice_pg} = -# qq||; -# -# } else { -# -# # for last row -# $column_data{sellprice_pg} = qq||; -# } -# -# $column_data{sellprice} = -# qq||; -# } -# $column_data{discount} = -# qq||; -# $column_data{linetotal} = -# qq||; -# $column_data{bin} = qq||; -# -######################################### -# # Eintrag fuer Version 2.2.0 geaendert # -# # neue Optik im Rechnungsformular # -######################################### -# # if ($lizenzen && $form->{type} eq "invoice" && $form->{vc} eq "customer") { -# # $column_data{license} = qq||; -# # } -# # -# # if ($form->{type} !~ /_quotation/) { -# # $column_data{serialnr} = qq||; -# # } -# # -# # $column_data{projectnr} = qq||; -############### ENDE Neueintrag ################## -# my $j = $i % 2; -# print qq| -# -# |; -# -# map { print "\n$column_data{$_}" } @column_index; -# -# print("\n" . -# $cgi->hidden("-name" => "unit_old_$i", -# "-value" => $form->{"selected_unit_$i"}) -# . "\n" . -# $cgi->hidden("-name" => "price_new_$i", -# "-value" => $form->format_amount(\%myconfig, $form->{"price_new_$i"})) -# . "\n"); -# map({ print($cgi->hidden("-name" => $_, "-value" => $form->{$_}) . "\n"); } -# ("orderitems_id_$i", "bo_$i", "pricegroup_old_$i", "price_old_$i", -# "id_$i", "inventory_accno_$i", "bin_$i", "partsgroup_$i", "partnotes_$i", -# "income_accno_$i", "expense_accno_$i", "listprice_$i", "assembly_$i", -# "taxaccounts_$i", "ordnumber_$i", "transdate_$i", "cusordnumber_$i", -# "longdescription_$i", "basefactor_$i", "marge_total_$i", "marge_percent_$i", "lastcost_$i", -# "marge_price_factor_$i")); -# -######################################### -# # Eintrag fuer Version 2.2.0 geaendert # -# # neue Optik im Rechnungsformular # -######################################### -# -# my $row_style_attr = -# 'style="display:none;"' if (!$form->{"show_details"}); -# -# # print second row -# print qq| -# -# -# -#|; -# -############### ENDE Neueintrag ################## -# -# map { $form->{"${_}_base"} += $linetotal } -# (split(/ /, $form->{"taxaccounts_$i"})); -# -# $form->{invsubtotal} += $linetotal; -# } -# -# print qq| -#
|; -# if ($form->{"formel_$i"}) { -# $column_data{qty} .= qq|| -# . $cgi->hidden("-name" => "formel_$i", "-value" => $form->{"formel_$i"}) . $cgi->hidden("-name" => "alu_$i", "-value" => $form->{"alu_$i"}); -# } -# $column_data{qty} .= qq|" . -# $price_factor_select . -# AM->unit_select_html($is_part || $is_assembly ? $dimension_units : -# $is_assigned ? $service_units : $all_units, -# "unit_$i", $this_unit, -# $is_assigned ? $form->{"unit_$i"} : undef) -# . " | -# . $form->format_amount(\%myconfig, $linetotal, 2) -# . qq|$form->{"bin_$i"}
-#|; -# if ($lizenzen && $form->{type} eq "invoice" && $form->{vc} eq "customer") { -# my $selected = $form->{"licensenumber_$i"}; -# my $lizenzen_quoted; -# $form->{"lizenzen_$i"} =~ s/ selected//g; -# $form->{"lizenzen_$i"} =~ -# s/value="${selected}"\>/value="${selected}" selected\>/; -# $lizenzen_quoted = $form->{"lizenzen_$i"}; -# $lizenzen_quoted =~ s/\"/"/g; -# print qq| -# Lizenz\#  -# -#|; -# } -# if ($form->{type} !~ /_quotation/) { -# print qq| -# $serialnumber |; -# } -# -# print qq|$projectnumber | . -# NTI($cgi->popup_menu('-name' => "project_id_$i", -# '-values' => \@projectnumber_values, -# '-labels' => \%projectnumber_labels, -# '-default' => $form->{"project_id_$i"})); -# -# if ($form->{type} eq 'invoice' or $form->{type} =~ /order/) { -# my $reqdate_term = -# ($form->{type} eq 'invoice') -# ? 'deliverydate' -# : 'reqdate'; # invoice uses a different term for the same thing. -# print qq| -# ${$reqdate_term}  -#|; -# } -# my $subtotalchecked = ($form->{"subtotal_$i"}) ? "checked" : ""; -# print qq| -# |.$locale->text('Subtotal').qq|  -#|; -# -# if ($form->{"id_$i"} && $is_sales) { -# my $marge_price_factor; -# -# $form->{"marge_price_factor_$i"} *= 1; -# -# if ($form->{"marge_price_factor_$i"} && (1 != $form->{"marge_price_factor_$i"})) { -# $marge_price_factor = '/' . $form->format_amount(\%myconfig, $form->{"marge_price_factor_$i"}); -# } -# -# print qq| -# ${marge_font_start}| . $locale->text('Ertrag') . qq| $form->{"marge_total_$i"} $form->{"marge_percent_$i"} % ${marge_font_end}|; -# } -# print qq| -#  | . $locale->text('LP') . qq| | . $form->format_amount(\%myconfig, $form->{"listprice_$i"}, 2) . qq| -#  | . $locale->text('EK') . qq| | . $form->format_amount(\%myconfig, $form->{"lastcost_$i"}, 2) . $marge_price_factor; -# -# -# print qq| -#
-# -# -#|; -# -# if (0 != ($form->{sellprice_total} * 1)) { -# $form->{marge_percent} = ($form->{sellprice_total} - $form->{lastcost_total}) / $form->{sellprice_total} * 100; -# } -# -# $lxdebug->leave_sub(); -#} sub set_pricegroup { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my %myconfig = %main::myconfig; + my $locale = $main::locale; + my $rowcount = shift; - for $j (1 .. $rowcount) { - my $pricegroup_old = $form->{"pricegroup_old_$i"}; + for my $j (1 .. $rowcount) { + my $pricegroup_old = $form->{"pricegroup_old_$j"}; if ($form->{PRICES}{$j}) { - $len = 0; - $prices = ''; - $price = 0; - foreach $item (@{ $form->{PRICES}{$j} }) { + my $len = 0; + my $prices = ''; + my $price = 0; + foreach my $item (@{ $form->{PRICES}{$j} }) { #$price = $form->round_amount($myconfig, $item->{price}, 5); #$price = $form->format_amount($myconfig, $item->{price}, 2); - $price = $item->{price}; - $pricegroup_id = $item->{pricegroup_id}; - $pricegroup = $item->{pricegroup}; + my $price = $item->{price}; + my $pricegroup_id = $item->{pricegroup_id}; + my $pricegroup = $item->{pricegroup}; # build drop down list for pricegroups $prices .= @@ -590,13 +135,21 @@ sub set_pricegroup { $form->{"prices_$j"} = $prices; } } - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub display_form { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my %myconfig = %main::myconfig; + + $main::auth->assert('part_service_assembly_edit | vendor_invoice_edit | sales_order_edit | invoice_edit |' . + 'request_quotation_edit | sales_quotation_edit | purchase_order_edit | '. + 'purchase_delivery_order_edit | sales_delivery_order_edit'); relink_accounts(); + retrieve_partunits() if ($form->{type} =~ /_delivery_order$/); my $new_rowcount = $form->{"rowcount"} * 1 + 1; $form->{"project_id_${new_rowcount}"} = $form->{"globalproject_id"}; @@ -606,10 +159,10 @@ sub display_form { # if we have a display_form if ($form->{display_form}) { call_sub($form->{"display_form"}); - exit; + ::end_of_request(); } - Common::webdav_folder($form) if ($webdav); + Common::webdav_folder($form) if ($main::webdav); # if ( $form->{print_and_post} # && $form->{second_run} @@ -623,7 +176,7 @@ sub display_form { # $form->{print_and_post} = 0; # # &print_form($old_form); - # exit; + # ::end_of_request(); # } # # $form->{action} = ""; @@ -646,48 +199,52 @@ sub display_form { # } &form_header; - $numrows = ++$form->{rowcount}; - $subroutine = "display_row"; + { + no strict 'refs'; - if ($form->{item} eq 'part') { + my $numrows = ++$form->{rowcount}; + my $subroutine = "display_row"; - #set preisgruppenanzahl - $numrows = $form->{price_rows}; - $subroutine = "price_row"; + if ($form->{item} eq 'part') { - &{$subroutine}($numrows); + #set preisgruppenanzahl + $numrows = $form->{price_rows}; + $subroutine = "price_row"; - $numrows = ++$form->{makemodel_rows}; - $subroutine = "makemodel_row"; - } - if ($form->{item} eq 'assembly') { - $numrows = $form->{price_rows}; - $subroutine = "price_row"; + &{$subroutine}($numrows); - &{$subroutine}($numrows); + $numrows = ++$form->{makemodel_rows}; + $subroutine = "makemodel_row"; + } + if ($form->{item} eq 'assembly') { + $numrows = $form->{price_rows}; + $subroutine = "price_row"; - $numrows = ++$form->{makemodel_rows}; - $subroutine = "makemodel_row"; + &{$subroutine}($numrows); - # create makemodel rows - &{$subroutine}($numrows); + $numrows = ++$form->{makemodel_rows}; + $subroutine = "makemodel_row"; - $numrows = ++$form->{assembly_rows}; - $subroutine = "assembly_row"; - } - if ($form->{item} eq 'service') { - $numrows = $form->{price_rows}; - $subroutine = "price_row"; + # create makemodel rows + &{$subroutine}($numrows); - &{$subroutine}($numrows); + $numrows = ++$form->{assembly_rows}; + $subroutine = "assembly_row"; + } + if ($form->{item} eq 'service') { + $numrows = $form->{price_rows}; + $subroutine = "price_row"; - $numrows = 0; - } + &{$subroutine}($numrows); - # create rows - &{$subroutine}($numrows) if $numrows; + $numrows = 0; + } + + # create rows + &{$subroutine}($numrows) if $numrows; + } &form_footer; - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); }