X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Finvoice_io.pl;h=229927220fb4ca803cf991c31da7ef7a9854b7bd;hb=919007c2bfb65ec08728d3f647446465860bb7f9;hp=90e2d4e6fbe64468f2446ebc0db0577fdaa8f6c5;hpb=3404c3bd646493a16ffd843c9b33286c328184f7;p=kivitendo-erp.git diff --git a/bin/mozilla/invoice_io.pl b/bin/mozilla/invoice_io.pl index 90e2d4e6f..229927220 100644 --- a/bin/mozilla/invoice_io.pl +++ b/bin/mozilla/invoice_io.pl @@ -90,464 +90,464 @@ 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 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(); @@ -596,7 +596,11 @@ sub set_pricegroup { sub display_form { $lxdebug->enter_sub(); + $auth->assert('part_service_assembly_edit | vendor_invoice_edit | sales_order_edit | invoice_edit |' . + 'request_quotation_edit | sales_quotation_edit | purchase_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"}; @@ -657,8 +661,7 @@ sub display_form { &{$subroutine}($numrows); - $numrows = ++$form->{makemodel_rows}; - $subroutine = "makemodel_row"; + $numrows = 0; } if ($form->{item} eq 'assembly') { $numrows = $form->{price_rows};