X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=bin%2Fmozilla%2Fio.pl;h=0395092691d80b264455a2a150381c055496c56f;hb=52352135ee322387c8eba0fcbbb09dd50abbdf09;hp=314368d2c6080c93a97c48c17aafcd372aecadcb;hpb=e7127ad02437a6311dc646db8027c44ba19bd62c;p=kivitendo-erp.git diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl index 314368d2c..039509269 100644 --- a/bin/mozilla/io.pl +++ b/bin/mozilla/io.pl @@ -33,10 +33,13 @@ # ####################################################################### +use CGI; +use CGI::Ajax; +use List::Util qw(max); + +use SL::Common; use SL::CT; use SL::IC; -use CGI::Ajax; -use CGI; require "bin/mozilla/common.pl"; @@ -118,6 +121,8 @@ sub display_row { 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 @@ -296,27 +301,26 @@ sub display_row { $form->{"unit_old_$i"} = $form->{"selected_unit_$i"}; } } + ($dec) = ($form->{"sellprice_$i"} =~ /\.(\d+)/); - $dec = length $dec; - $decimalplaces = ($dec > 2) ? $dec : 2; + $decimalplaces = max length($dec), 2; - $discount = - $form->round_amount( - $form->{"sellprice_$i"} * $form->{"discount_$i"} / 100, - $decimalplaces); + $price_factor = $price_factors{$form->{"price_factor_id_$i"}} || 1; + $discount = (100 - $form->{"discount_$i"} * 1) / 100; - $linetotal = - $form->round_amount($form->{"sellprice_$i"} - $discount, $decimalplaces); - $linetotal = $form->round_amount($linetotal * $form->{"qty_$i"}, 2); - my $real_sellprice = $form->{"sellprice_$i"} - $discount; + $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"}) * 100 / $real_sellprice; + $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"} && @@ -330,12 +334,12 @@ sub display_row { } my $marge_adjust_credit_note = $form->{type} eq 'credit_note' ? -1 : 1; - $form->{"marge_absolut_$i"} = ($real_sellprice - $form->{"lastcost_$i"}) * $form->{"qty_$i"} * $marge_adjust_credit_note; - $form->{"marge_total"} += $form->{"marge_absolut_$i"}; - $form->{"lastcost_total"} += $form->{"lastcost_$i"} * $form->{"qty_$i"}; + $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_absolut marge_percent); + map { $form->{"${_}_$i"} = $form->format_amount(\%myconfig, $form->{"${_}_$i"}, 2) } qw(marge_total marge_percent); # convert " to " map { $form->{"${_}_$i"} =~ s/\"/"/g } @@ -367,9 +371,10 @@ sub display_row { 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"}). qq||; + $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||; $column_data{ship} = qq|{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"} = "" . + $price_factor_select . AM->unit_select_html($is_part || $is_assembly ? $dimension_units : $is_assigned ? $service_units : $all_units, "unit_$i", $this_unit, @@ -475,7 +495,8 @@ sub display_row { "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_absolut_$i", "marge_percent_$i", "lastcost_$i")); + "longdescription_$i", "basefactor_$i", "marge_total_$i", "marge_percent_$i", "lastcost_$i", + "marge_price_factor_$i")); ######################################## # Eintrag fuer Version 2.2.0 geaendert # @@ -527,14 +548,22 @@ sub display_row { } my $subtotalchecked = ($form->{"subtotal_$i"}) ? "checked" : ""; print qq| - |.$locale->text('Subtotal').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_absolut_$i"}  $form->{"marge_percent_$i"} % ${marge_font_end} + ${marge_font_start}| . $locale->text('Ertrag') . qq| $form->{"marge_total_$i"} $form->{"marge_percent_$i"} % ${marge_font_end}  | . $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); +  | . $locale->text('EK') . qq| | . $form->format_amount(\%myconfig, $form->{"lastcost_$i"}, 2) . $marge_price_factor; } print qq| @@ -665,9 +694,10 @@ sub select_item { map { $ref->{$_} =~ s/\"/"/g } qw(partnumber description unit); - #sk tradediscount - $ref->{sellprice} = - $form->round_amount($ref->{sellprice} * (1 - $form->{tradediscount}), 2); + my $display_sellprice = $ref->{sellprice} * (1 - $form->{tradediscount}); + $display_sellprice /= $ref->{price_factor} if ($ref->{price_factor}); + $display_sellprice = $form->format_amount(\%myconfig, $display_sellprice, 2); + $column_data{ndx} = qq||; $column_data{partnumber} = @@ -676,7 +706,7 @@ sub select_item { qq|$ref->{description}|; $column_data{sellprice} = qq|| - . $form->format_amount(\%myconfig, $ref->{sellprice}, 2, " ") + . $display_sellprice . qq||; $column_data{onhand} = qq|| @@ -696,7 +726,7 @@ sub select_item { my @new_fields = qw(bin listprice inventory_accno income_accno expense_accno unit weight assembly taxaccounts partsgroup formel longdescription not_discountable - part_payment_id partnotes id lastcost); + part_payment_id partnotes id lastcost price_factor_id price_factor); push(@new_fields, "lizenzen") if ($lizenzen); print join "\n", map { $cgi->hidden("-name" => "new_${_}_$i", "-value" => $ref->{$_}) } @new_fields; @@ -752,10 +782,16 @@ sub item_selected { # if there was a price entered, override it $sellprice = $form->parse_amount(\%myconfig, $form->{"sellprice_$i"}); - map { $form->{"${_}_$i"} = $form->{"new_${_}_$j"} } + my @new_fields = qw(id partnumber description sellprice listprice inventory_accno income_accno expense_accno bin unit weight assembly taxaccounts - partsgroup formel longdescription not_discountable partnotes lastcost); + partsgroup formel longdescription not_discountable partnotes lastcost + price_factor_id price_factor); + + map { $form->{"${_}_$i"} = $form->{"new_${_}_$j"} } @new_fields; + + $form->{"marge_price_factor_$i"} = $form->{"new_price_factor_$j"}; + if ($form->{"part_payment_id_$i"} ne "") { $form->{payment_id} = $form->{"part_payment_id_$i"}; } @@ -805,8 +841,7 @@ sub item_selected { # delete all the new_ variables for $i (1 .. $form->{lastndx}) { - map { delete $form->{"new_${_}_$i"} } - qw(partnumber description sellprice bin listprice inventory_accno income_accno expense_accno unit assembly taxaccounts id); + map { delete $form->{"new_${_}_$i"} } @new_fields; } map { delete $form->{$_} } qw(ndx lastndx nextsub); @@ -869,12 +904,11 @@ sub new_item { . $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"})); } - ("partnumber", "description")); -print $cgi->hidden("-name" => "taxaccount2", "-value" => $form->{taxaccounts}); + + 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| @@ -994,10 +1028,7 @@ sub check_form { $lxdebug->enter_sub(); my @a = (); my $count = 0; - my @flds = ( - qw(id partnumber description qty ship sellprice unit discount inventory_accno income_accno expense_accno listprice taxaccounts bin assembly weight projectnumber project_id oldprojectnumber runningnumber serialnumber partsgroup payment_id not_discountable shop ve gv buchungsgruppen_id language_values sellprice_pg pricegroup_old price_old price_new unit_old ordnumber transdate longdescription basefactor marge_absolut marge_percent lastcost ) - ); - + my @flds = (qw(id partnumber description qty ship sellprice unit discount inventory_accno income_accno expense_accno listprice taxaccounts bin assembly weight projectnumber project_id oldprojectnumber runningnumber serialnumber partsgroup payment_id not_discountable shop ve gv buchungsgruppen_id language_values sellprice_pg pricegroup_old price_old price_new unit_old ordnumber transdate longdescription basefactor marge_total marge_percent marge_price_factor lastcost price_factor_id)); # remove any makes or model rows if ($form->{item} eq 'part') { @@ -1319,8 +1350,7 @@ sub edit_e_mail { $form->{"email"} = $form->{"cp_email"}; } - $form->{ $form->{vc} } =~ /--/; - $title = $locale->text('E-mail') . " $`"; + $title = $locale->text('E-mail') . " " . $form->get_formname_translation(); $form->{oldmedia} = $form->{media}; $form->{media} = "email"; @@ -1354,6 +1384,8 @@ sub send_email { print_form("return"); + Common->save_email_status(\%myconfig, $form); + $form->{callback} = $callback; $form->redirect(); @@ -1372,9 +1404,7 @@ sub send_email { sub print_options { $lxdebug->enter_sub(); - my ($options) = @_; - - $options ||= { }; + my %options = @_; # names 3 parameters and returns a hashref, for use in templates sub opthash { +{ value => shift, selected => shift, oname => shift } } @@ -1429,32 +1459,32 @@ sub print_options { 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}) ? + ($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}) ? + && !$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}) ? + ($latex_templates && !$options{no_postscript}) ? opthash("postscript", $form->{DF}{postscript}, $locale->text('Postscript')) : undef, - (!$options->{no_html}) ? + (!$options{no_html}) ? opthash("html", $form->{DF}{html}, "HTML") : undef, - ($opendocument_templates && !$options->{no_opendocument}) ? + ($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} ? 'selected' : ''), $_->{description}) } +{}, @{ $form->{languages} } + map { opthash($_->{id}, ($_->{id} eq $form->{language_id} ? 'selected' : ''), $_->{description}) } +{}, @{ $form->{languages} } if (ref $form->{languages} eq 'ARRAY'); push @PRINTER_ID, map { opthash($_->{id}, ($_->{id} eq $form->{printer_id} ? 'selected' : ''), $_->{printer_description}) } +{}, @{ $form->{printers} } if ((ref $form->{printers} eq 'ARRAY') && scalar @{ $form->{printers } }); - @SELECTS = map { sname => lc $_, DATA => \@$_, show => scalar @$_ }, qw(FORMNAME LANGUAGE_ID FORMAT SENDMODE MEDIA PRINTER_ID); + @SELECTS = map { sname => lc $_, DATA => \@$_, show => !$options{"hide_" . lc($_)} && scalar @$_ }, qw(FORMNAME LANGUAGE_ID FORMAT SENDMODE MEDIA PRINTER_ID); my %dont_display_groupitems = ( 'dunning' => 1, @@ -1470,7 +1500,7 @@ sub print_options { my $print_options = $form->parse_html_template("generic/print_options", { SELECTS => \@SELECTS, %template_vars } ); - if ($options->{inline}) { + if ($options{inline}) { $lxdebug->leave_sub() and return $print_options; } else { print $print_options; $lxdebug->leave_sub(); @@ -1538,7 +1568,7 @@ sub print_form { $inv = "ord"; $due = "req"; $form->{"${inv}date"} = $form->{transdate}; - $form->{label} = $locale->text('Sales Order'); + $form->{label} = $locale->text('Confirmation'); $numberfld = "sonumber"; $order = 1; } @@ -1620,7 +1650,7 @@ sub print_form { $inv = "quo"; $due = "req"; $form->{"${inv}date"} = $form->{transdate}; - $form->{label} = $locale->text('Quotation'); + $form->{label} = $locale->text('RFQ'); $numberfld = "rfqnumber"; $order = 1; } @@ -1797,7 +1827,7 @@ sub print_form { } keys(%{$form}))); reformat_numbers($output_numberformat, undef, - qw(qty), + qw(qty price_factor), grep({ /^qty_\d+$/ } keys(%{$form})));