X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fio.pl;h=a24c0e232f60c574562639f8b6588b7d94e618cf;hb=3404c3bd646493a16ffd843c9b33286c328184f7;hp=9820f8b300fcd08fea6734868265e847ab00e6c6;hpb=7a611f95fbbb0e2264085b0ebeaad6253674ca6f;p=kivitendo-erp.git diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl index 9820f8b30..a24c0e232 100644 --- a/bin/mozilla/io.pl +++ b/bin/mozilla/io.pl @@ -90,509 +90,6 @@ 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(); -} ################################################## # build html-code for pricegroups in variable $form->{prices_$j} @@ -601,41 +98,17 @@ sub set_pricegroup { $lxdebug->enter_sub(); my $rowcount = shift; for $j (1 .. $rowcount) { - my $pricegroup_old = $form->{"pricegroup_old_$i"}; - if ($form->{PRICES}{$j}) { - $len = 0; - $prices = ''; - $price = 0; - foreach $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}; - - # build drop down list for pricegroups - $prices .= - qq|\n|; - - $len += 1; - - # map { - # $form->{"${_}_$j"} = - # $form->format_amount(\%myconfig, $form->{"${_}_$j"}) - # } qw(sellprice price_new price_old); - - # set new selectedpricegroup_id and prices for "Preis" - if ($item->{selected} && ($pricegroup_id != 0)) { - $form->{"pricegroup_old_$j"} = $pricegroup_id; - $form->{"price_new_$j"} = $price; - $form->{"sellprice_$j"} = $price; - } - if ($pricegroup_id == 0) { - $form->{"price_new_$j"} = $form->{"sellprice_$j"}; - } - } - $form->{"prices_$j"} = $prices; + next unless $form->{PRICES}{$j}; + # build drop down list for pricegroups + my $option_tmpl = qq||; + $form->{"prices_$j"} = join '', map { sprintf $option_tmpl, @$_{qw(price pricegroup_id selected pricegroup)} } + (+{ pricegroup => $locale->text("none (pricegroup)") }, @{ $form->{PRICES}{$j} }); + + foreach $item (@{ $form->{PRICES}{$j} }) { + # set new selectedpricegroup_id and prices for "Preis" + $form->{"pricegroup_old_$j"} = $item->{pricegroup_id} if $item->{selected} && $item->{pricegroup_id}; + $form->{"sellprice_$j"} = $item->{price} if $item->{selected} && $item->{pricegroup_id}; + $form->{"price_new_$j"} = $form->{"sellprice_$j"} if $item->{selected} || !$item->{pricegroup_id}; } } $lxdebug->leave_sub(); @@ -870,158 +343,21 @@ sub new_item { # change callback $form->{old_callback} = $form->escape($form->{callback}, 1); - $form->{callback} = $form->escape("$form->{script}?action=display_form", 1); - - # delete action - delete $form->{action}; - - # save all other form variables in a previousform variable - foreach $key (keys %$form) { + $form->{callback} = $form->escape("$form->{script}?action=display_form", 1); - # escape ampersands - $form->{$key} =~ s/&/%26/g; - $previousform .= qq|$key=$form->{$key}&|; - } - chop $previousform; - $previousform = $form->escape($previousform, 1); + # save all form variables except action in a previousform variable + my $previousform = join '&', map { $form->{$_} =~ s/&/%26/; "$_=$form->{$_}" } grep { !/action/ } keys %$form; - $i = $form->{rowcount}; - map { $form->{"${_}_$i"} =~ s/\"/"/g } qw(partnumber description); + map { $form->{"${_}_$form->{rowcount}"} =~ s/\"/"/g } qw(partnumber description); $form->header; - print qq| - - -

| . $locale->text('Item not on file!') . qq| - -

-| . $locale->text('What type of item is this?') . qq|

- -
- -

- -  | - . $locale->text('Part') . qq|
-  | - . $locale->text('Service'); - - print $cgi->hidden("-name" => "previousform", "-value" => $previousform); - map { print $cgi->hidden("-name" => $_, "-value" => $form->{$_}); } qw(rowcount vc login password); - map { print $cgi->hidden("-name" => $_, "-value" => $form->{"${_}_$i"}); } qw(partnumber description unit sellprice price_factor_id); - print $cgi->hidden("-name" => "taxaccount2", "-value" => $form->{taxaccounts}); - -print qq| - - -

- -

- - - -|; - - $lxdebug->leave_sub(); -} - -sub display_form { - $lxdebug->enter_sub(); - - relink_accounts(); - - my $new_rowcount = $form->{"rowcount"} * 1 + 1; - $form->{"project_id_${new_rowcount}"} = $form->{"globalproject_id"}; - - $form->language_payment(\%myconfig); - - # if we have a display_form - if ($form->{display_form}) { - call_sub($form->{"display_form"}); - exit; - } - - Common::webdav_folder($form) if ($webdav); - - # if ( $form->{print_and_post} - # && $form->{second_run} - # && ($form->{action} eq "display_form")) { - # for (keys %$form) { $old_form->{$_} = $form->{$_} } - # $old_form->{rowcount}++; - # - # #$form->{rowcount}--; - # #$form->{rowcount}--; - # - # $form->{print_and_post} = 0; - # - # &print_form($old_form); - # exit; - # } - # - # $form->{action} = ""; - # $form->{resubmit} = 0; - # - # if ($form->{print_and_post} && !$form->{second_run}) { - # $form->{second_run} = 1; - # $form->{action} = "display_form"; - # $form->{rowcount}--; - # my $rowcount = $form->{rowcount}; - # - # # get pricegroups for parts - # IS->get_pricegroups_for_parts(\%myconfig, \%$form); - # - # # build up html code for prices_$i - # set_pricegroup($rowcount); - # - # $form->{resubmit} = 1; - # - # } - &form_header; - - $numrows = ++$form->{rowcount}; - $subroutine = "display_row"; - - if ($form->{item} eq 'part') { - - #set preisgruppenanzahl - $numrows = $form->{price_rows}; - $subroutine = "price_row"; - - &{$subroutine}($numrows); - - $numrows = ++$form->{makemodel_rows}; - $subroutine = "makemodel_row"; - } - if ($form->{item} eq 'assembly') { - $numrows = $form->{price_rows}; - $subroutine = "price_row"; - - &{$subroutine}($numrows); - - $numrows = ++$form->{makemodel_rows}; - $subroutine = "makemodel_row"; - - # create makemodel rows - &{$subroutine}($numrows); - - $numrows = ++$form->{assembly_rows}; - $subroutine = "assembly_row"; - } - if ($form->{item} eq 'service') { - $numrows = $form->{price_rows}; - $subroutine = "price_row"; - - &{$subroutine}($numrows); - - $numrows = 0; - } - - # create rows - &{$subroutine}($numrows) if $numrows; + push @HIDDENS, { value => $cgi->hidden("-name" => "previousform", "-value" => $form->escape($previousform, 1)) }; + push @HIDDENS, map +{ value => $cgi->hidden("-name" => $_, "-value" => $form->{$_}) }, qw(rowcount vc login password); + push @HIDDENS, map +{ value => $cgi->hidden("-name" => $_, "-value" => $form->{"${_}_$form->{rowcount}"}) }, qw(partnumber description unit sellprice); + push @HIDDENS, { value => $cgi->hidden("-name" => "taxaccount2", "-value" => $form->{taxaccounts}) }; - &form_footer; + print $form->parse_html_template("generic/new_item", { HIDDENS => \@HIDDENS} ); $lxdebug->leave_sub(); } @@ -1415,8 +751,8 @@ sub print_options { # note: "||"-selection is only correct for values where "0" is _not_ a correct entry $form->{sendmode} = "attachment"; $form->{format} = $form->{format} || $myconfig{template_format} || "pdf"; - $form->{copies} = $form->{copies} || $myconfig{copies} || 3; - $form->{media} = $form->{media} || $myconfig{default_media} || "screen"; + $form->{copies} = $form->{copies} || $myconfig{copies} || 3; + $form->{media} = $form->{media} || $myconfig{default_media} || "screen"; $form->{printer_id} = defined $form->{printer_id} ? $form->{printer_id} : defined $myconfig{default_printer_id} ? $myconfig{default_printer_id} : ""; @@ -1427,56 +763,56 @@ sub print_options { push @FORMNAME, grep $_, ($form->{type} eq 'purchase_order') ? ( - opthash("purchase_order", $form->{PD}{purchase_order}, $locale->text('Purchase Order')), - opthash("bin_list", $form->{PD}{bin_list}, $locale->text('Bin List')) + opthash("purchase_order", $form->{PD}{purchase_order}, $locale->text('Purchase Order')), + opthash("bin_list", $form->{PD}{bin_list}, $locale->text('Bin List')) ) : undef, ($form->{type} eq 'credit_note') ? - opthash("credit_note", $form->{PD}{credit_note}, $locale->text('Credit Note')) : undef, + opthash("credit_note", $form->{PD}{credit_note}, $locale->text('Credit Note')) : undef, ($form->{type} eq 'sales_order') ? ( - opthash("sales_order", $form->{PD}{sales_order}, $locale->text('Confirmation')), - opthash("proforma", $form->{PD}{proforma}, $locale->text('Proforma Invoice')), - opthash("pick_list", $form->{PD}{pick_list}, $locale->text('Pick List')), - opthash("packing_list", $form->{PD}{packing_list}, $locale->text('Packing List')) + opthash("sales_order", $form->{PD}{sales_order}, $locale->text('Confirmation')), + opthash("proforma", $form->{PD}{proforma}, $locale->text('Proforma Invoice')), + opthash("pick_list", $form->{PD}{pick_list}, $locale->text('Pick List')), + opthash("packing_list", $form->{PD}{packing_list}, $locale->text('Packing List')) ) : undef, ($form->{type} =~ /_quotation$/) ? - opthash("$`_quotation", $form->{PD}{"$`_quotation"}, $locale->text('Quotation')) : undef, + opthash("$`_quotation", $form->{PD}{"$`_quotation"}, $locale->text('Quotation')) : undef, ($form->{type} eq 'invoice') ? ( - opthash("invoice", $form->{PD}{invoice}, $locale->text('Invoice')), - opthash("proforma", $form->{PD}{proforma}, $locale->text('Proforma Invoice')), - opthash("packing_list", $form->{PD}{packing_list}, $locale->text('Packing List')) + opthash("invoice", $form->{PD}{invoice}, $locale->text('Invoice')), + opthash("proforma", $form->{PD}{proforma}, $locale->text('Proforma Invoice')), + opthash("packing_list", $form->{PD}{packing_list}, $locale->text('Packing List')) ) : undef, ($form->{type} eq 'invoice' && $form->{storno}) ? ( - opthash("storno_invoice", $form->{PD}{storno_invoice}, $locale->text('Storno Invoice')), + opthash("storno_invoice", $form->{PD}{storno_invoice}, $locale->text('Storno Invoice')), opthash("storno_packing_list", $form->{PD}{storno_packing_list}, $locale->text('Storno Packing List')) ) : undef, ($form->{type} eq 'credit_note') ? - opthash("credit_note", $form->{PD}{credit_note}, $locale->text('Credit Note')) : undef; + opthash("credit_note", $form->{PD}{credit_note}, $locale->text('Credit Note')) : undef; push @SENDMODE, - opthash("attachment", $form->{SM}{attachment}, $locale->text('Attachment')), - opthash("inline", $form->{SM}{inline}, $locale->text('In-line')) + opthash("attachment", $form->{SM}{attachment}, $locale->text('Attachment')), + opthash("inline", $form->{SM}{inline}, $locale->text('In-line')) if ($form->{media} eq 'email'); push @MEDIA, grep $_, - opthash("screen", $form->{OP}{screen}, $locale->text('Screen')), + opthash("screen", $form->{OP}{screen}, $locale->text('Screen')), (scalar @{ $form->{printers} } && $latex_templates) ? - opthash("printer", $form->{OP}{printer}, $locale->text('Printer')) : undef, - ($latex_templates && !$options{no_queue}) ? - opthash("queue", $form->{OP}{queue}, $locale->text('Queue')) : undef + opthash("printer", $form->{OP}{printer}, $locale->text('Printer')) : undef, + ($latex_templates && !$options->{no_queue}) ? + opthash("queue", $form->{OP}{queue}, $locale->text('Queue')) : undef if ($form->{media} ne 'email'); push @FORMAT, grep $_, ($opendocument_templates && $openofficeorg_writer_bin && $xvfb_bin && (-x $openofficeorg_writer_bin) && (-x $xvfb_bin) - && !$options{no_opendocument_pdf}) ? - opthash("opendocument_pdf", $form->{DF}{"opendocument_pdf"}, $locale->text("PDF (OpenDocument/OASIS)")) : undef, + && !$options->{no_opendocument_pdf}) ? + opthash("opendocument_pdf", $form->{DF}{"opendocument_pdf"}, $locale->text("PDF (OpenDocument/OASIS)")) : undef, ($latex_templates) ? - opthash("pdf", $form->{DF}{pdf}, $locale->text('PDF')) : undef, - ($latex_templates && !$options{no_postscript}) ? - opthash("postscript", $form->{DF}{postscript}, $locale->text('Postscript')) : undef, - (!$options{no_html}) ? + opthash("pdf", $form->{DF}{pdf}, $locale->text('PDF')) : undef, + ($latex_templates && !$options->{no_postscript}) ? + opthash("postscript", $form->{DF}{postscript}, $locale->text('Postscript')) : undef, + (!$options->{no_html}) ? opthash("html", $form->{DF}{html}, "HTML") : undef, - ($opendocument_templates && !$options{no_opendocument}) ? - opthash("opendocument", $form->{DF}{opendocument}, $locale->text("OpenDocument/OASIS")) : undef; + ($opendocument_templates && !$options->{no_opendocument}) ? + opthash("opendocument", $form->{DF}{opendocument}, $locale->text("OpenDocument/OASIS")) : undef; push @LANGUAGE_ID, map { opthash($_->{id}, ($_->{id} eq $form->{language_id} ? 'selected' : ''), $_->{description}) } +{}, @{ $form->{languages} }